C语言课程设计学生成绩管理系统完整_第1页
C语言课程设计学生成绩管理系统完整_第2页
C语言课程设计学生成绩管理系统完整_第3页
免费预览已结束,剩余42页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/* strcmp 函数原型包含 */#define N 100 /* 定义最大学生人数为 100*/struct student /*学生结构体定义 */char no11; /*学号 ,10 位*/char name10;/*姓名,3 个汉字*/char grade10;/*班级*/char pro20;/*专业*/float score5;/*储存 5 门功课的成绩 */float ave;/*储存平均分 */int year;/*入学年 */stuN;int num;void panduani(int); /* 通过 i 的值,判断信息要查找的信息是否存在 */void init();

2、/*系统初始化函数 */void newfile(); /*void read1(); /*void weihu(); /*void new1(); /*void xiugai(); /*void xgcj(int); /*void delete1(); /*建立新的数据文件 */ 从数据文件中读取数据 */ 维护界面函数 */ 新增一个学生成绩函数 */ 修改学生成绩 */ 修改成绩 */删除学生信息函数 */void tongji(); /*void tongji1(); /*void tongji2(); /*void paixu1(); /*void paino(); /*void p

3、aiave(); /*void paidkcj(); /*统计界面函数 */ 计算每个学生平均分 */ 计算每门课程的平均分 */ 排序函数 */ 按学号排序 */按平均分排序 */ 按单科成绩排序 */ 交换结构体数组中的两个记录 */void outputx(int);/*选择输出单科成绩 */void find1();/*查找界面函数 */int find(char sno);/*按学号查找 */int findname(char cname);/*按姓名查找 */void findyear(int cyear); /*按入学年查找 */void save();/*保存文件 */void

4、 stop();/*停顿函数 */void stop() /*停顿函数(公共函数) */printf("Press Any Key To Continue.n");getchar();void output() /* 输出学生成绩函数(公共函数) */ int i,j;n"printf(" );printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物 电路 模电 n");printf("=n" );for(i=0;i<num;i+)printf("%s %s %s %s %d"

5、;,stui.no,,stui.grade,,stui.year);for(j=0;j<5;j+)printf(" %.1f",stui.scorej);printf("n");stop();if(access("stu.dat",0) /* 判断文件是否存在 */newfile();/*若不存在,新建数据文件 */elseread1(); /* 若存在,读取数据 */void newfile() /*int i;FILE *fp;建立新的数据文件 */if(fp=fopen("stu

6、.dat","wb")=NULL) /* 创建二进制文件 */请重新运行printf(" 创建文件失败, 请重新运行程序 .n"); /*显示 "创建文件失败,程序"*/exit(0); /*终止程序 */printf(" 初次运行,进行数据初始化 .n");/*显示" 初次运行,进行数据初始化 ."*/ stop();printf(" 请输入学生人数: ");/* 显示 "请输入学生人数: "*/scanf("%d",&am

7、p;num);for(i=0;i<num;i+)printf("请输入第%d个学生的学号:",i+1); /* 显示"请输入第i+1个学生的学号:"*/getchar(); /* 吃回车 */gets(stui.no);printf(" 姓名:"); /* 显示"姓名:"*/gets();printf(" 班级:"); /* 显示"班级:"*/gets(stui.grade);printf(" 专业:"); /* 显示"专

8、业:"*/gets();printf(" 入学年 n:");/* 显示"入学年"*/scanf("%d",&stui.year);语言成绩:");/* 显示"C语言成绩"*/prin tf("Cscanf("%f",&stui.score0);printf("高数成绩 :");/*显示"高数成绩scanf("%f",&stui.score1);printf("大物成绩

9、 :");/*显示"大物成绩scanf("%f",&stui.score2);printf("电路成绩 :");/*显示"电路成绩scanf("%f",&stui.score3);printf("模电成绩 :");/*显示"模电成绩scanf("%f",&stui.score4);fwrite(&stui,1,sizeof(struct student),fp); /*fclose(fp);printf("=n&q

10、uot;);*/*/*/*/把第 i+1 名学生成绩写入文件 */printf(" 刚才输入的 %d 个数据为: n",num); /* 显示"刚才输入的 num 个数据为:printf("=nn");output();void read1() /* 从数据文件中读取数据 */FILE *fp;num=0; /*num 为数据文件中实际存储的学生人数 */fp=fopen("stu.dat","r");if(fp=NULL) /* 数据文件不存在 */printf(" 文件打开失败!重新运行程序

11、 n"); /* 显示 " 文件打开失败!重新运行程序 "*/ exit(0);while(!feof(fp) /* 文件结束检测 "*/fread(&stunum,1,sizeof(struct student),fp);num+;num-;fclose(fp);printf("ttt=n");printf(” ttt现有d个学生的成绩:n", nu m); /*显示"现有NUM个学生的成绩:printf("ttt=nn");output();void weihu() /* 维护界面函

12、数 */char c1;while(1)printf("nnnttt*n");printf("ttt*维护printf("ttt*1.新增printf("ttt*2.删除printf("ttt*3.修改printf("ttt*9.返回printf("ttt*n");printf("ttt请选择: n");/*n");*n"); /*新增 */*n"); /*删除(按学号) */*n"); /*修改 */*n"); /*返回 */请选择:

13、 */c1=getchar();getchar();if(c1='9')break;switch(c1)case '1':new1();break;case '2':delete1();case '3':xiugai();break;default:"*/printf(" 选择有误,请重选! n");/*" 选择有误,请重选!void new1() /* 新增一个学生成绩函数 */printf(" 请输入学号 :"); /* 显示 "请输入学号 :"*

14、/gets(stunum.no);gets();printf(" 班级:"); /*显示 "班级 :"*/gets(stunum.grade);printf("专业:"); /*显示"专业:"*/gets();printf(" 入学年:");/* 显示"入学年 "*/ scanf("%d",&stunum.year);printf("C语言成绩:");/* 显示"C语言成绩&q

15、uot;*/scanf("%f",&stunum.score0);printf(" 高数成绩 :");/* 显示"高数成绩 "*/scanf("%f",&stunum.score1);printf("大物成绩 :");/*显示"大物成绩 "*/scanf("%f",&stunum.score2);printf("电路成绩:");/*显示"电路成绩"*/scanf("%f",

16、&stunum.score3);scanf("%f",&stunum.score4);num+;printf("n=n");printf(”现有d个学生的成绩:n",num); I*显示"现有NUM个学生的成绩:"*/printf("=nn");output();void xiugai() I*修改学生成绩 *Ichar xg11;int i;printf("n 请输入要修改学生的学号 :nn");gets(xg);for(i=0;i<num;i+)if(strc

17、mp(stui.no,xg)=0)break;if(i=num)printf("n 数据文件无该生信息 !nn 请重新输入学号 .nn");stop();return;xgcj(i);void xgcj(int x) /* 修改成绩 */char xueke510="C语言 "," 高数 "," 物理"," 电路"," 模电"char (*p)10,c;int j,k;p=xueke;for(;)printf("ttt*nn");printf("

18、ttt成绩n");printf("ttt1.C语言n"); /*C语言*/printf("ttt2.高数n"); /*高数*/printf("ttt3.物理n"); /*大学物理 */printf("ttt4.电路n"); /*电路*/printf("ttt5.模电n"); /*模电*/printf("ttt9.返回nn"); /*返回上级 */*printf("tttnn");printf("t 请选择要修改的成绩 ( 按 1.2.3

19、.4.5.9):n");c=getchar();getchar();if(c='9')break;else if (c>='1'&&c<='5')k=c-49;printf("n请输入 %s 成绩 :n",p+k);scanf("%f",&stux.scorek);printf("n 修 息为 :n");printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物 电 路 模电 n");printf("

20、);=n" printf("%s %s %s %s %d",stux.no,,stux.grade,stux. pro,stux.year);for(j=0;j<5;j+)printf(" %.1f",stux.scorej);printf("n");else printf("n 选择有误,请重选 !nn");stop();int find(char sno) /* 按学号查找 */int i;for(i=0;i<num;i+)if(strcmp(stui.no,sno)=0

21、) /* 判断两个字符串相等 */return i;/*查找成功 */return -1;/*查找失败 */void delete1() /* 删除学生信息函数 */char cno11;int i,j;printf(" 请输入要删除的学生学号 :"); /*" 请输入要删除的学生学号 "*/gets(cno);i=find(cno);if(i!=-1)for(j=i;j<num;j+)stuj=stuj+1;num-;"*/printf(”现有d个学生的成绩:n",num); /* 显示"现有NUM个学生的成绩:ou

22、tput();else printf(" 请输入正确的学号 . n");stop();void tongji() /* 统计界面函数 */int i;char c2;while(1)printf("nnnttt*n");printf("ttt统计*n");printf("ttt*1.学生平均分*n"); /*printf("ttt*2.课程平均分*n"); /*printf("ttt*9.返回*n"); /*printf("ttt*n");printf(&

23、quot;ttt请选择 :n");/* 请选择:*/计算学生平均分 */计算每门课程平均分 */返回*/c2=getchar();getchar();if(c2='9') break;switch(c2)case '1':tongji1();printf("nn 学生平均分为 :n");n");printf("=n");printf("for(i=0;i<num;i+)printf("%s %s %d %.2fn",stui.no,,stui.yea

24、r,stui.ave)Jstop();break;case '2':tongji2();break;default:printf(" 选择有误,请重选 n");/*" 选择有误,请重选! "*/void tongji1() /*计算每个学生平均分 */int i,j;for(i=0;i<num;i+)stui.ave=0;for(j=0;j<5;j+)stui.ave+=stui.scorej;stui.ave=stui.ave/5;void tongji2() /* 计算每门课程的平均分 */int i,j;float su

25、m;float avec5; /*储存每门课的平均分 */for(j=0;j<5;j+)sum=0;for(i=0;i<num;i+)sum+=stui.scorej;avecj=sum/num;printf("nn 各科平均分: n");/*" 各科平均分: "*/ printf("=n"); printf("C 语言 高数 大物 电路 模电 n"); printf("=n"); for(i=0;i<5;i+)printf("%-7.1f",aveci);

26、printf("n");stop();void paixu1() /* 排序界面 */char c3;for(;)printf("nnn");printf("ttt*n");printf("ttt*排序* n");printf("ttt*1.按学号排序* n"); /*按学号排序 */printf("ttt*2.按平均分排序* n"); /*按平均分排序 */printf("ttt*3.按单科成绩排序* n"); /*按单科成绩排序 */printf(&q

27、uot;ttt*9.返回 *n"); /*返回 */*printf("ttt*nn");printf("t请选择: (按 ):n");/*请选择: */c3=getchar();getchar();if(c3='9') break;switch(c3)case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break;default:printf("n选择有误,请重选 !nn&quo

28、t;);/* 选择有误,请重选 !*/stop();void paino() /*按学号排序 */*按学号从低到高冒泡法排序 */int i,j;for(i=0;i<num;i+)for(j=0;j<num-1-i;j+)if(strcmp(stuj.no,stuj+1.no)>0)change(j,j+1);printf("n排序后为 :n"); /*" 排序后为: "*/output();void paiave() /* 按平均分排序 */ /* 按平均分从高到低冒泡法排序 */int i,j;tongji1(); /* 计算平均成

29、绩 */for(i=0;i<num;i+)for(j=0;j<num-i-1;j+)if(stuj.ave<stuj+1.ave)change(j,j+1);printf("nt 排序后为 :n"); /*" 排序后为: "*/printf("t=n");printf("t 学号 姓名 入学年 平均分 排名 n");n");printf("tfor(i=0;i<num;i+)printf("t%s %s %d %.2f %4dn",stui.no, s

30、,stui.year,stui.ave,i+1);stop();void paidkcj() /* 按单科成绩排序 */char c;int i,j,k;while(1)printf("n");printf("ttt*nn");printf("ttt 单科成绩 n");printf("ttt 1.C语言 n"); /*C 语言 */printf("ttt 2.高数n"); /*高数*/printf("ttt3.物理n"); /*大学物理 */printf(&q

31、uot;ttt4.电路n"); /*电路 */printf("ttt5.模电n"); /*模电*/printf("ttt9.返回nn"); /*返回上级 */*printf("tttnn");printf("t请选择: (按 .5.9):n");c=getchar();getchar();if(c='9')break;else if (c>='1'&&c<='5')k=c-49;for(i=0;i<num;i+

32、)for(j=0;j<num-1-i;j+)if(stuj.scorek<stuj+1.scorek)change(j,j+1);outputx(k);else printf("n 选择有误,请重选 !nn");stop();void change(int i,int j) /* 交换结构体数组中的两个记录 */struct student temp;temp=stui;stui=stuj;stuj=temp;void outputx(int k) /* 选择输出单科成绩 */char xueke510="C语言 "," 高数 &q

33、uot;," 物理"," 电路"," 模电"char (*p)10; /*定义一个指向包含 10 个字符型元素的一维数组的指针变量 */int i;p=xueke;printf("nt 排序后为 :n");printf("t=n");printf("t 学号 姓名 入学年 %s 排名 n",p+k);printf("t=n");for(i=0;i<num;i+)printf("t%-11s% -10s%-11d%-6.1f%5dn"

34、;,stui.no,,stui.year,stui.scorek,i+1);void find1() /* 查找界面函数 */char c4;char cno11,cname10;int i,cyear;while(1)printf("ttt*n");*n");printf("tttprintf("ttt*查找*n");printf("ttt*1.按学号查找*n"); /*按学号查找 */printf("ttt*2.按姓名查找*n"); /*按姓名查找 */printf(&qu

35、ot;ttt*3.按入学年查找*n"); /*按入学年查找 */printf("ttt*9.返回*n"); /*返回*/*printf("ttt请选择 :n");/* 请选择: */ c4=getchar();getchar();if(c4=57) break;switch(c4) case '1':printf(" 输入学号 :n");/*" 输入学号: "*/ gets(cno);i=find(cno);panduani(i);break;case '2':printf

36、(" 输入姓名 :n");/*" 输入姓名: "*/gets(cname);i=findname(cname);panduani(i);break;case '3':printf(" 输入入学年 :n");/*" 输入入学年 "*/scanf("%d",&cyear);findyear(cyear);stop();break;default:printf(" 选择有误,请重选 !n");/*" 选择有误,请重选! "*/int fi

37、ndname(char cname) /* 按姓名查找 */int i;for(i=0;i<num;i+)if(strcmp(,cname)=0) /* 判断两个字符串相等 */return i; /* 查找成功 */return -1; /*查找失败 */void findyear(int cyear)int i,j,flag=0;for(i=0;i<num;i+)if(stui.year=cyear) flag=1;break;if(flag=0)printf(" 要查找的学生不存在 n");stop(); elseprintf("

38、; 查找到的学生信息为 :n");/*" 查找到的学生信息为: "*/printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物 电路 模电 n");printf("=n" );for(i=0;i<num;i+)printf("%s %s %s %s %d",stui.no,,stui.grade,stui.pr o,stui.year);for(j=0;j<5;j+)printf(" %.1f",stui.scorej);printf("n");void panduani(int i) /* 通过 i 的值,判断信息要查找的信息是否存在 */int j;if(i=-1)printf(" 要查找的学生不存在 n");/* 要查找的学生不存在 */st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论