c语言写学生成绩管理系统.docx
- 文档编号:4346384
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:9
- 大小:16.39KB
c语言写学生成绩管理系统.docx
《c语言写学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《c语言写学生成绩管理系统.docx(9页珍藏版)》请在冰豆网上搜索。
c语言写学生成绩管理系统
01.//学生成绩管理系统
02.#include
03.#include
04.#include
05.#defineN100
06.
07.typedefstruct{
08.intnum;/*学生学号*/
09.charname[8];/*学生姓名*/
10.floatyw,sx,yy;/*语文、数学和英语成绩*/
11.}STU;
12.
13.intmenu()
14.{
15./*m中存储菜单显示数据*/
16.char*m[]={
17."1.浏览学生信息",
18."2.添加学生信息",
19."3.修改学生信息",
20."4.删除学生信息",
21."5.查找学生",
22."6.保存并退出",
23."7.不保存退出"
24.};
25.inti;
26.intkey;/*菜单选择按键*/
27.
28.for(i=0;i<7;i++)
29.printf("%s\n",m[i]);
30.printf("\n\n请选择:
");
31.scanf("%d",&key);
32.returnkey;
33.}
34.
35.voidshow(STUs,intmc)/*输出学生s的信息和名次mc*/
36.{
37.printf("%4d%-8s%5.1f%5.1f%5.1f%6.1f%4d\n",s.num,s.name,s.yw,s.sx,s.yy,s.yw+s.sx+s.yy,mc);
38.}
39.
40.intorder(intszid,STU*s,size_tNum)/*返回数组下标szid同学的名次*/
41.{
42.intmc=0;
43.size_ti;
44.floattotal;
45.total=s[szid].yw+s[szid].sx+s[szid].yy;
46.for(i=0;i 47.if(s[i].yw+s[i].sx+s[i].yy>total) 48.mc++; 49.returnmc+1; 50.} 51. 52.voidlist(STU*s,size_tNum)/*显示所有学生信息*/ 53.{ 54.size_ti; 55.printf("学号姓名语文数学英语总分名次\n"); 56.for(i=0;i 57.show(s[i],order(i,s,Num)); 58.printf("\n"); 59.} 60. 61.voidappend(STU*s,size_t*Num)/*添加一个学生*/ 62.{ 63.size_ti; 64.intflag=1; 65.intid; 66. 67.do{/*检查学号*/ 68.printf("InputID: ");scanf("%d",&id);fflush(stdin); 69.for(i=0;i<*Num;i++) 70.if(id==s[i].num) 71.break; 72.if(i==*Num) 73.{ 74.s[*Num].num=id; 75.flag=0; 76.} 77.}while(flag); 78. 79.printf("InputName: ");gets(s[*Num].name);fflush(stdin); 80.printf("InputYuWenScore: ");scanf("%f",&s[*Num].yw); 81.printf("InputShuXueScore: ");scanf("%f",&s[*Num].sx); 82.printf("InputYingYuScore: ");scanf("%f",&s[*Num].yy); 83.(*Num)++; 84.} 85. 86.voidmodify(STU*s,size_tNum,STUt)/*将t的内容修改对应的学生*/ 87.{ 88.size_ti; 89.for(i=0;i 90.if(s[i].num=t.num) 91.{ 92.s[i]=t; 93.break; 94.} 95.} 96. 97.voiderase(STU*s,size_t*Num)/*删除指定学号学生*/ 98.{ 99.intid; 100.size_ti; 101.printf("请输入要删除学生的学号: "); 102.scanf("%d",&id); 103.for(i=0;i<*Num;i++) 104.if(id==s[i].num)break; 105. 106.if(i<*Num) 107.{ 108.for(;i<*Num;i++) 109.s[i]=s[i+1]; 110.(*Num)--; 111.} 112.} 113. 114.voidstat() 115.{ 116.printf("StatOK! \n"); 117.} 118. 119.voidinit(STU*s,int*Num)/*初始化数据*/ 120.{ 121.FILE*fp; 122. 123.printf("\t学生成绩管理系统\n\n"); 124.if((fp=fopen("student.dat","rb"))==NULL) 125.{ 126.return; 127.} 128.while(! feof(fp)) 129.{ 130.fread(&s[*Num],sizeof(STU),1,fp);/*从文件中读取数据到内存*/ 131.(*Num)++; 132.} 133.(*Num)--; 134.fclose(fp); 135.} 136. 137.voidsave(STU*s,size_tNum) 138.{ 139.size_ti; 140.FILE*fp; 141.if((fp=fopen("student.dat","wb"))==NULL) 142.{ 143.printf("Openfileerror! \n"); 144.exit (1); 145.} 146. 147.for(i=0;i 148.{ 149.fwrite(&s[i],sizeof(STU),1,fp);/*把内存中的数据写到文件中*/ 150.} 151.fclose(fp); 152.} 153. 154.voidfind(intid,STU*s,size_tNum)/*查找学生*/ 155.{ 156.size_ti; 157.printf("学号姓名语文数学英语总分名次\n"); 158. 159.for(i=0;i 160.if(id==s[i].num) 161.{ 162.show(s[i],order(i,s,Num)); 163.break; 164.} 165.} 166. 167.intmain() 168.{ 169.STUs[N],t; 170.size_tNum=0; 171.intid; 172.size_ti; 173.chargetnum[20]; 174.charsure; 175.init(s,&Num); 176.while (1) 177.{ 178.switch(menu()) 179.{ 180.case1: list(s,Num);break; 181.case2: append(s,&Num);break; 182.case3: 183.printf("请输入要修改学生的学号: "); 184.scanf("%d",&id); 185.for(i=0;i 186.if(s[i].num==id) 187.{ 188.t.num=id;/*学号*/ 189. 190.printf("姓名(%s): ",s[i].name);/*姓名*/ 191.fflush(stdin);/*清除键盘缓冲区*/ 192.gets(t.name); 193.if(strcmp(t.name,"")==0) 194.strcpy(t.name,s[i].name); 195.fflush(stdin); 196. 197.printf("语文(%.1f): ",s[i].yw);/*语文*/ 198.gets(getnum); 199.if(strcmp(getnum,"")==0) 200.t.yw=s[i].yw; 201.else 202.t.yw=(float)atof(getnum); 203. 204. 205.printf("数学(%.1f): ",s[i].sx);/*数学*/ 206.gets(getnum); 207.if(strcmp(getnum,"")==0) 208.t.sx=s[i].sx; 209.else 210.t.sx=(float)atof(getnum); 211. 212. 213.printf("英语(%.1f): ",s[i].yy);/*英语*/ 214.gets(getnum); 215.if(strcmp(getnum,"")==0) 216.t.yy=s[i].yy; 217.else 218.t.yy=(float)atof(getnum); 219. 220.s[i]=t; 221.} 222.break; 223.case4: erase(s,&Num);break; 224.case5: 225.printf("请输入要查找学生的学号: "); 226.scanf("%d",&id); 227.find(id,s,Num); 228.break; 229.case6: save(s,Num);return0;break; 230.case7: 231.printf("确认不保存退出吗(Y/N)? "); 232.fflush(stdin); 233.scanf("%c",&sure); 234.if(sure=='y'||sure=='Y') 235.return0; 236.else 237.break; 238.} 239.printf("\n\n"); 240.} 241.return0; 242.}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩管理系统