c语言大作业学生管理系统.docx

上传人:b****3 文档编号:3813502 上传时间:2023-05-06 格式:DOCX 页数:34 大小:21.94KB
下载 相关 举报
c语言大作业学生管理系统.docx_第1页
第1页 / 共34页
c语言大作业学生管理系统.docx_第2页
第2页 / 共34页
c语言大作业学生管理系统.docx_第3页
第3页 / 共34页
c语言大作业学生管理系统.docx_第4页
第4页 / 共34页
c语言大作业学生管理系统.docx_第5页
第5页 / 共34页
c语言大作业学生管理系统.docx_第6页
第6页 / 共34页
c语言大作业学生管理系统.docx_第7页
第7页 / 共34页
c语言大作业学生管理系统.docx_第8页
第8页 / 共34页
c语言大作业学生管理系统.docx_第9页
第9页 / 共34页
c语言大作业学生管理系统.docx_第10页
第10页 / 共34页
c语言大作业学生管理系统.docx_第11页
第11页 / 共34页
c语言大作业学生管理系统.docx_第12页
第12页 / 共34页
c语言大作业学生管理系统.docx_第13页
第13页 / 共34页
c语言大作业学生管理系统.docx_第14页
第14页 / 共34页
c语言大作业学生管理系统.docx_第15页
第15页 / 共34页
c语言大作业学生管理系统.docx_第16页
第16页 / 共34页
c语言大作业学生管理系统.docx_第17页
第17页 / 共34页
c语言大作业学生管理系统.docx_第18页
第18页 / 共34页
c语言大作业学生管理系统.docx_第19页
第19页 / 共34页
c语言大作业学生管理系统.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言大作业学生管理系统.docx

《c语言大作业学生管理系统.docx》由会员分享,可在线阅读,更多相关《c语言大作业学生管理系统.docx(34页珍藏版)》请在冰点文库上搜索。

c语言大作业学生管理系统.docx

c语言大作业学生管理系统

#include"stdafx.h"

#include

#include

#include

#include

#defineN100

structstudent

{

charname[10];

intnum;

charsex[10];

floatmath;

floatyingyu;

floatzhengzhi;

floatywen;

floataver;

floatsum;

}stu;

voidmenu()

{

system("cls");

printf("*欢迎使用学生成绩管理系统*\n");

printf("*=======================*\n");

printf("*请选择相应的功能:

*\n");

printf("*1.成绩录入*\n");

printf("*2.查询成绩*\n");

printf("*3.修改成绩*\n");

printf("*4.插入成绩*\n");

printf("*5.报表输出*\n");

printf("*6.删除操作*\n");

printf("*0.退出系统*\n");

printf("*=======================*\n");

printf("\n\n\n\n\n\n\n\n\n****\n");

}

//成绩录入

voidinput()

{

system("cls");

FILE*fp;

studentxs;/*定义一个结构体变量来装从文件中读出来的数据*/

intc=1;

if((fp=fopen("student.dat","ab"))==NULL)

{

printf("can'topenfile!

\n");exit(0);}

printf("\n成绩录入");

printf("\n****************************************************");

while(c++)/*中间加油break,可使循环中断*/

{printf("\n请输入您的姓名(姓名为end结束):

");

scanf("%s",xs.name);

if(strcmp(xs.name,"end")==0)break;/*判断姓名是否为end,用字符串判断*/

printf("\n请输入学号:

");

scanf("%d",&xs.num);

printf("\n性别:

");

scanf("%s",&xs.sex);

printf("\n请输入数学的成绩:

");

scanf("%f",&xs.math);

printf("\n请输入英语的成绩:

");

scanf("%f",&xs.yingyu);

printf("\n请输入政治的成绩:

");

scanf("%f",&xs.zhengzhi);

printf("\n请输入语文的成绩:

");

scanf("%f",&xs.ywen);

xs.aver=0;/*给平均分变量赋初值*/

xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4;

xs.sum=0;

xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen;

fwrite(&xs,sizeof(stu),1,fp);//将成绩信息写入文件

system("cls");

}

fclose(fp);

}

voidxingming()

{

FILE*fp;

studentxs;

charname[10];

printf("\n输入要查学生的姓名:

");scanf("%s",name);

if((fp=fopen("student.dat","rb"))==NULL)

{printf("can'topenfile!

\n");exit(0);}

while(!

feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(strcmp(xs.name,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/

{

printf("\n学生的信息如下:

\n");

printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

break;

}

}

if(feof(fp))

printf("\n查找失败");/*学生不存在*/

fclose(fp);

}

voidxuehao()

{

FILE*fp;

studentxs;

intnum;

printf("\n输入要查学生的学号:

");scanf("%d",&num);

if((fp=fopen("student.dat","rb"))==NULL)

{printf("can'topenfile!

\n");exit(0);}

while(!

feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/

{

printf("\n学生的信息如下:

\n");

printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

break;

}

}

if(feof(fp))printf("\n查找失败");

fclose(fp);

}

//查询

voidsearch()

{

charch1;

system("cls");

printf("请输入按何种方式查询:

\n");

printf("\n1-姓名,2-学号:

");

ch1=getchar();/*用字符接收*/

switch(ch1)/*判断*/

{

case'1':

xingming();break;

case'2':

xuehao();break;

}

printf("\n按任意键返回主菜单");

getch();/*让屏幕停留同时按任意键返回*/

}

//修改:

输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;

voidmodi()

{

studentxs;

FILE*fp;

charname[10];

system("cls");

printf("\n输入要修改的学生的姓名:

");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf("can'topenfile!

\n");exit(0);}

while(!

feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(strcmp(xs.name,name)==0)/*判断输入要修改的姓名是否存在*/

{

printf("修改前学生的信息如下:

\n");

printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

printf("\n请输入该生的数学成绩:

");scanf("%f",&xs.math);

printf("\n英语成绩:

");scanf("%f",&xs.yingyu);

printf("\n政治成绩:

");scanf("%f",&xs.zhengzhi);

printf("\n语文成绩:

");scanf("%f",&xs.ywen);

xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4;

xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen;

break;

}

}

if(!

feof(fp))

{

printf("\n修改后的学生的信息如下:

\n");

printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/

fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/

}

else

printf("\n学生不存在,修改失败!

!

");

fclose(fp);

printf("\n按任意键返回主菜单");

getch();

}

//插入:

输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。

voidinsert()

{

inti=0,j,k,lenth;

FILE*fp;

students,xs[N];

system("cls");

printf("\n请输入插入的学生的姓名:

");scanf("%s",&s.name);

printf("\n学生的学号:

");scanf("%d",&s.num);

printf("\n学生的性别:

");scanf("%s",&s.sex);

printf("\n数学成绩:

");scanf("%f",&s.math);

printf("\n英语成绩:

");scanf("%f",&s.yingyu);

printf("\n政治成绩:

");scanf("%f",&s.zhengzhi);

printf("\n语文成绩:

");scanf("%f",&s.ywen);

s.aver=(s.math+s.yingyu+s.zhengzhi+s.ywen)/4;

s.sum=s.math+s.yingyu+s.zhengzhi+s.ywen;

printf("\n插入位置:

");scanf("%d",&k);

//i=0;

if((fp=fopen("student.dat","rb"))==NULL)

{

printf("can'topenfile!

\n");exit(0);

}

while(!

feof(fp))

{

fread(&xs[i],sizeof(stu),1,fp);/*把数据读入到结构体数组中*/

if(feof(fp))break;

i++;

}

fclose(fp);

lenth=i;

if(k=0)/*k的位置要位于数组范围之内*/

{//插入

for(j=lenth-1;j>=k;j--)

xs[j+1]=xs[j];/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/

/*循环是只循环这一句的*/

xs[k]=s;/*将输入的学生信息加入这个k位置*/

lenth++;/*长度+1*/

//写回

if((fp=fopen("student.dat","wb"))==NULL)

{

printf("不能建立文件!

!

\n");exit(0);

}

for(i=0;i

fwrite(&xs[i],sizeof(stu),1,fp);

}

else/*不再数组范围之内*/

{

if((fp=fopen("student.dat","ab"))==NULL)

{

printf("不能建立文件!

!

\n");exit(0);

}

fwrite(&s,sizeof(stu),1,fp);

}

printf("\n按任意键返回主菜单");

fclose(fp);

}

//显示

voidprint()

{

FILE*fp;

students;

system("cls");

if((fp=fopen("student.dat","rb"))==NULL)

{

printf("can'topenfile!

\n");exit(0);

}

printf("学生成绩表");

printf("\n*****************************************************");

printf("\n%10s%10s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

while(!

feof(fp))

{

fread(&s,sizeof(stu),1,fp);//从文件中读取成绩信息

if(feof(fp))break;//判断是否文件尾

printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\n",s.name,s.num,s.sex,s.math,s.yingyu,s.zhengzhi,s.ywen,s.aver,s.sum);

}

fclose(fp);

printf("\n按任意键返回主菜单");

getch();

}

//统计

voidtongji()

{

inti=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u;

FILE*fp;

students[N],*p1[N],*p2[N],*p3[N],*p4[N];/*用指针数组*/

system("cls");

if((fp=fopen("student.dat","rb"))==NULL){printf("cant'topenfile!

\n");exit(0);}

while(!

feof(fp))

{

fread(&s[i++],sizeof(stu),1,fp);/*读入数据*/

if(feof(fp))break;

}

t=i;i=0;

for(u=0;u

{

if(s[i].aver<60){p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/

if(s[i].aver>=60&&s[i].aver<80){p2[k++]=&s[i++];continue;}

if(s[i].aver>=80&&s[i].aver<90){p3[l++]=&s[i++];continue;}

if(s[i].aver>=90){p4[m++]=&s[i++];continue;}

}

printf("学生成绩单");

printf("\n90以上的人有:

姓名学号平均分\n");

for(r=0;r

{

printf("\n%10s%6d%6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver);

}

printf("\n80-89分的人有:

姓名学号平均分\n");

for(q=0;q

{

printf("\n%10s%6d%6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver);

}

printf("\n60-79分的人有:

姓名学号平均分\n");

for(p=0;p

{

printf("\n%10s%6d%6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver);

}

printf("\n不及格的人有:

姓名学号平均分\n");

for(n=0;n

{

printf("\n%10s%6d%6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver);

}

fclose(fp);

printf("\n按任意键返回主菜单");

getch();

}

//if(s[i].aver<60){p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/

if(s[i].aver>=60&&s[i].aver<80){p2[k++]=&s[i++];continue;}

if(s[i].aver>=80&&s[i].aver<90){p3[l++]=&s[i++];continue;}

if(s[i].aver>=90){p4[m++]=&s[i++];continue;}

}

printf("学生成绩单");

printf("\n90以上的人有:

姓名学号平均分\n");

for(r=0;r

{

printf("\n%10s%6d%6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver);

}

printf("\n80-89分的人有:

姓名学号平均分\n");

for(q=0;q

{

printf("\n%10s%6d%6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver);

}

printf("\n60-79分的人有:

姓名学号平均分\n");

for(p=0;p

{

printf("\n%10s%6d%6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver);

}

printf("\n不及格的人有:

姓名学号平均分\n");

for(n=0;n

{

printf("\n%10s%6d%6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver);

}

fclose(fp);

printf("\n按任意键返回主菜单");

getch();

}

//删除:

输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息

voiddele()

{

studentxs[N];

FILE*fp;

charname[10];

inti=0,len,k=-1/*k<0是为后面if判断用的*/;

system("cls");

printf("\n输入要删除的学生姓名:

");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf("can'topenfile!

\n");exit(0);}

while(!

feof(fp))

{

删除:

输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息

voiddele()

{

studentxs[N];

FILE*fp;

charname[10];

inti=0,len,k=-1/*k<0是为后面if判断用的*/;

system("cls");

printf("\n输入要删除的学生姓名:

");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf("can'topenfile!

\n");exit(0);}

while(!

feof(fp))

{

fread(&xs[i],sizeof(stu),1,fp);

if(feof(fp))break;

if(strcmp(xs[i].name,name)==0)k=i;

i++;

}

fclose(fp);

//以下是删除后重新写文件

len=i;/*结构体数组上限*/

if(k>=0)/*k>0说明找到删除学生位置*/

{

if((fp=fopen("student.dat","wb+"))==NULL)

{printf("can'topenfile!

\n");exit(0);}

for(i=0;i

{

if(i==k)continue;/*从这个位置开始写入*/

fwrite(&xs[i],sizeof(stu),1,fp);

}

fclose(fp);

}

else{printf("\n删除失败\n");getch();}/*失败后重新返回菜单*/

printf("\n按任意键返回主菜单");

print();

}

//菜单选择

voidmain()

{

charch;

system("color3f");

while

(1)

{

menu();//显示菜单

ch=getch();//选择菜单

if(ch=='0')break;

s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2