




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上#include <stdio.h>#define N 50#define M 200int stumax=0,scoremax=0;FILE *fp;struct student char num9; /学号 char name20; /姓名 int sex; /性别 int room; /宿舍号码 long int tel; /电话号码stuN;struct stuscore char num9; /学号 char coursenum10; /课程编号 char course15; /课程名称 float point; /学分 int nscore;
2、/平时成绩 int expscore; /实验成绩 int examscore; /卷面成绩 int comscore; /综合成绩 float getpoint;/实得学分scoreM,score1M;void enter_stu();void input_stu(int j);void enter_score();void input_score(int i);void com_score(int i);void browse_stu();void browse_score();void search();void search_stu();void search_num();void s
3、earch_name();void search_room();void search_score();void printf_onestu_score(char snum);void delete_one();void order();void order_course_num();void order_course();void order_printf(int k);/*菜单*/void menu() int w1; char n; /*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/ system("cls"); do puts("
4、;*nn"); puts("t * 总菜单 *nn"); puts("t* 1.输入学生的基本信息 *"); puts("t* 2.浏览学生的基本信息 *"); puts("t* 3.输入学生的成绩基本信息 *"); puts("t* 4.浏览学生的成绩基本信息 *"); puts("t* 5.查询信息功能 *"); puts("t* 6.删除信息功能 *"); puts("t* 7.排序:按综合成绩或实得学分 *"); pu
5、ts("t* 8.退出 *"); puts("nn*"); printf("n选择要进行的功能代号(1-8): bb"); scanf("%c",&n); if(n<'1'|n>'8') /*对选择的数字作判断*/ w1=1; printf("nn? 请输入数字 18!nn"); else w1=0; /*选择功能*/ switch(n) case '1':enter_stu();break; /*输入基本信息模块*/ case
6、 '2':browse_stu();break; /*浏览基本信息模块*/ case '3':enter_score();break; /*输入成绩基本信息模块*/ case '4':browse_score();break; /*浏览成绩基本信息模块*/ case '5':search();break; /*查找模块*/ case '6':delete_one();break; /*删除学籍模块*/ case '7':order();break; /*排序模块*/ case '8'
7、:exit(0); while(w1=1); getch();/*主函数*/void main() menu(); /*进入菜单*/*公用函数*/*保存所有分数*/void save_score() int i; if(fp=fopen("b.txt","w+")=NULL) /*以输出方式打开,在此前的记录被覆盖*/ printf("n 不能打开文件."); getch(); for(i=0;i<scoremax;i+) if(fwrite(&scorei,sizeof(struct stuscore),1,fp)!=
8、1) printf("n 文件输入错误."); fclose(fp); printf("n 输入数据结束.Press any key to continue . . .");getch();/*保存所有学生信息*/void save() int i; if(fp=fopen("a.txt","w+")=NULL) /*以输出方式打开,在此前的记录被覆盖*/ printf("n不能打开文件"); getch(); for(i=0;i<stumax;i+) if(fwrite(&stu
9、i,sizeof(struct student),1,fp)!=1) printf("n文件输入错误."); fclose(fp);/*显示一个分数,形参i表示显示第i个记录*/void printf_one_score(int i) printf("n学号:%s 课程编号:%s 课程名称:%s 学分:%fn 平时成绩:%d 实验成绩:%d 卷面成绩:%d 综合成绩:%d 实得学分:%f",scorei.num,scorei.coursenum,scorei.course,scorei.point,scorei.nscore,scorei.expscor
10、e,scorei.examscore,score,scorei.getpoint);/*显示一个学生信息,形参j表示显示第j个记录*/void printf_one_stu(int j) printf("n学号:%s 姓名:%s 性别:%d 宿舍号码:%d 电话号码:%ld",stuj.num,,stuj.sex,stuj.room,stuj.tel);/*删除一个分数,形参i表示删除第i个记录*/void delete_one_score(int i) printf_one_score(i); scorei=scorescoremax
11、; scoremax-; printf("n删除学生数据成功!Press any key to continue . . ."); getch(); save_score();/*录入模块*/*学生信息录入*/void enter_stu() int i,n,es1; printf("n要输入多少学生基本信息(1%d)? ",N-1); scanf("%d",&n); /*要输入的学生基本信息的个数*/ es1=n+stumax; /*输入n个后应有的记录个数*/ printf("n输入信息:"); for
12、(i=stumax;i<es1;i+) input_stu(i); /*调用输入学生基本信息函数*/ printf("n共输入 %d 项基本信息.Press any key to continue . . .",n);getch();menu(); /*提示输入任务结束,按任意键返回主菜单*/*录入一个学生信息*/void input_stu(int j) int i1,k=0,d; switch(j+1)%10) case 1:printf("n Input the %dst student's information:",j+1);br
13、eak; case 2:printf("n Input the %dnd student's information:",j+1);break; default:printf("n Input the %dth student's information:",j+1); printf("n学号 姓名 性别 宿舍号码 电话号码n"); scanf("%s%s%d%d%ld",stuj.num,,&stuj.sex,&stuj.room,&stuj.tel);
14、stumax+; /*输入一个信息,总数加1*/ for(i1=0;i1<stumax;i1+) if(i1!=j&&strcmp(stui1.num,stuj.num)=0) /*表示学号已存在*/ k=1; /*k为学号是否已存在标记,k=1表存在*/ printf_one_stu(i1); /*显示已存在的学号的信息*/ printf("n此学生存在!"); /*提示学号已存在*/ stumax-; /*总数减1,删除输入信息*/ printf("n删除信息成功!"); save(); /*调用保存函数*/ break; if
15、(k=0) /*表示学号不重复*/ printf("n输入信息成功!"); /*提示输入成功*/ save(); /*调用保存函数*/ /*学生成绩信息录入*/void enter_score() int i,n,es1; printf("n要输入的学生基本信息的个数(1%d)? ",M-1); scanf("%d",&n); /*要输入的学生基本信息的个数*/ es1=n+scoremax; /*输入n个后应有的记录个数*/ printf("n输入数据:n"); for(i=scoremax;i<e
16、s1;i+) input_score(i); /*调用输入学生成绩基本信息函数*/ save_score(); /*调用保存学生成绩基本信息函数*/ printf("n 共输入了 %d 项数据.Press any key to continue . . .",n);getch();menu(); /*提示输入任务结束,按任意键返回主菜单*/*录入一个成绩*/void input_score(int i) int j,j1,k,c; float a; switch(i+1)%10) case 1:printf("n Input the %dst student
17、9;s score:",i+1);break; case 2:printf("n Input the %dnd student's score:",i+1);break; default:printf("n Input the %dth student's score:",i+1); printf("n学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩n"); scanf("n%s%s%s%f%d%d%d",scorei.num,scorei.coursenum,scorei.c
18、ourse,&a,&scorei.nscore,&scorei.expscore,&scorei.examscore); scorei.point=a; com_score(i); /*调用计算综合成绩、实得学分函数*/ scoremax+; for(j1=0;j1<stumax;j1+) if(strcmp(scorei.num,stuj1.num)=0) break; if(j1=stumax) /*学生不存在*/ printf("n该学生不存在!"); delete_one_score(i);/*/ else /*学生存在*/ f
19、or(k=0;k<scoremax;k+) if(k!=i&&strcmp(scorek.num,scorei.num)=0&&strcmp(scorek.coursenum,scorei.coursenum)=0&&strcmp(scorek.course,scorei.course)=0) /*该学生该课程已存在*/ printf("n该学生的此项信息已经存在!"); delete_one_score(i);/*/ break; if(strcmp(scorek.coursenum,scorei.coursenum)
20、=0&&strcmp(scorek.course,scorei.course)!=0)|(strcmp(scorek.coursenum,scorei.coursenum)!=0&&strcmp(scorek.course,scorei.course)=0) /*该课程编号和课程名称与前面矛盾并提示删除哪一个*/ printf("n课程编号和课程名称不符:"); printf("n成绩信息%d:",i); printf_one_score(i); /*显示矛盾课程*/ printf("n成绩信息%d:"
21、,k); printf_one_score(k); /*显示矛盾课程*/ printf("n 1)删除成绩%d 2)删除成绩%d? bb",i,k); scanf("%d",&c); switch(c) case 1:delete_one_score(i);break; /*调用删除函数*/ default:delete_one_score(k); /*调用删除函数*/ break; if(k=scoremax) printf("n输入信息成功! Press any key to continue . . .");getch(
22、); /*计算综合成绩*/void com_score(int i) if(scorei.expscore=-1) /*判断是否有实验*/ score=scorei.nscore*0.3+scorei.examscore*0.7; else score=scorei.nscore*0.15+scorei.expscore*0.15+scorei.examscore*0.7; switch(score/10) case 10: case 9: scorei.getpoint=scorei.point*1.0;break; case 8:
23、 scorei.getpoint=scorei.point*0.8;break; case 7: scorei.getpoint=scorei.point*0.75;break; case 6: scorei.getpoint=scorei.point*0.6;break; default:scorei.getpoint=0; printf("n综合成绩计算结束. Press any key to continue . . .");getch();/*浏览模块*/*浏览学生信息*/void browse_stu() int i; for(i=0;i<stumax;i+
24、) /* stumax 为总的学生数*/ printf_one_stu(i); /*调用显示一个学生基本信息函数*/ printf("n浏览学生基本信息结束.Press any key to continue . . .");getch();menu();/*浏览学生成绩信息*/void browse_score() int j; for(j=0;j<scoremax;j+) /* stumax 为总的学生数*/ printf_one_score(j); /*调用显示一个学生成绩基本信息函数*/ printf("n浏览学生成绩信息结束.Press any k
25、ey to continue . . .");getch();menu();/*查找模块*/*查找*/void search() int c,c1; printf("n查找中 .n 选择要查询的信息:n1)学生基本信息 2)学生成绩 3)返回菜单 bb"); scanf("%d",&c); /*选择查找内容*/ if(c>=1&&c<=3) switch(c) case 1:search_stu();break; /*调用查找学生基本信息函数*/ case 2:search_score();break; /*
26、调用查找学生成绩基本信息函数*/ default:menu(); printf("n查询结束.n 是否继续查询? 1)是 2)否 bb"); /*询问是否继续查找*/ scanf("%d",&c1); switch(c1) case 1:search();break; /*继续查找*/ default:menu(); /*查找学生信息*/void search_stu() int i,c; printf("n 查找学生信息中.n 选择查询方式:n1)学号 2)姓名 3)宿舍编号 4)返回查询 ? bb"); scanf(&qu
27、ot;%d",&c); /*选择查找方式*/ switch(c) case 1:search_num();break; /*调用按学号查询函数*/ case 2:search_name();break; /*调用按姓名查询函数*/ case 3:search_room();break; /*调用按宿舍号查询函数*/ default:printf("n继续查询."); printf("n查询结束. Press any key to continue . . .");getch();/*按学号查找学生信息*/void search_num(
28、) int i,c; char n19; printf("n请输入要查询学生的学号: "); scanf("%s",&n1); /*输入要查询的学号*/ for(i=0;i<stumax;i+) if(strcmp(stui.num,n1)=0) printf_one_stu(i); /*显示查到的记录*/ break; if(i=stumax) printf("n此学号不存在!n查询下一个学号? 1)是 2)否 bb"); /*未查到相应记录,询问是否继续查找*/ scanf("%d",&c
29、); switch(c) case 1:search_num();break; /*继续按此方式查找*/ default:printf("n继续查找."); else printf("n学生信息查询结束. Press any key to continue . . .");getch(); /*按姓名查找学生信息*/void search_name() int i,c,sn1=0; char n220; printf("n输入要查询学生的名字: "); scanf("%s",&n2); for(i=0;i&
30、lt;stumax;i+) if(strcmp(,n2)=0) printf_one_stu(i); /*显示查到的记录*/ sn1+; if(sn1=0) printf("n此学生不存在!n查询下一个学生? 1)是 2)否 bb"); /*未查到相应记录,询问是否继续查找*/ scanf("%d",&c); switch(c) case 1:search_name();break; /*继续按此方式查找*/ default:printf("n继续查询."); else printf("n查询结束.
31、 Press any key to continue . . .");getch(); /*按宿舍查找学生信息*/void search_room() int i,c,r,sr1=0;printf("n输入要查询学生的宿舍号码: "); scanf("%d",&r); for(i=0;i<stumax;i+) if(stui.room=r) printf_one_stu(i); /*显示查到的记录*/ sr1+; if(sr1=0) printf("n这个宿舍号码不存在!n查询下一个宿舍号码? 1)是 2)否 bb&qu
32、ot;); /*未查到相应记录,询问是否继续查找*/ scanf("%d",&c); switch(c) case 1:search_room();break; /*继续按此方式查找*/ default:printf("n继续查询."); else printf("n查询结束. Press any key to continue . . .");getch(); /*按学号查找学生成绩*/void search_score() int i,a,s1; char n39; printf("n输入要查询成绩的学生的学号:
33、 "); scanf("%s",n3); printf_onestu_score(n3); /*显示查到的记录*/ printf("n查询结束. n 是否查询其他学生? 1)是 2)否 bb"); /*询问是否继续查找*/ scanf("%d",&s1); switch(s1) case 1:search_score();break; /*继续按此方式查找*/ default:printf("n查询结束. Press any key to continue . . .");getch(); /*显
34、示一个学生的所有分数*/void printf_onestu_score(char snum) int i,j,k=0,a1; float gp=0; for(j=0;j<stumax;j+) if(strcmp(snum,stuj.num)=0) printf("n学号: %s 姓名:%s",stuj.num,); printf("n"); break; if(j=stumax) printf("n此学生不存在!"); else for(i=0;i<scoremax;i+) if(strcmp(scor
35、ei.num,snum)=0) /*显示该学生的所有成绩*/ printf_one_score(i); k+; gp+=scorei.getpoint; printf("n"); printf("n共修: %d 科 实得总学分: %-5.1fn",k,gp); printf("n此学生成绩显示完毕. Press any key to continue . . .");getch(); /*删除*/void delete_one() int i,j,sd1=0,sd2,sd3; char c9; printf("n你要删除哪位
36、同学的信息记录? n请输入他的学号:"); scanf("%s",c); /*输入要删除的学号*/ for(i=0;i<stumax;i+) if(strcmp(stui.num,c)=0) break; if(i=stumax) /*未找到学生*/ printf("n未找到该学生!"); else /*找到学生*/ printf_one_stu(i); /*显示学生基本信息记录*/printf("n要删除这些信息么? 1)是 2)否并返回 bb"); scanf("%d",&sd2); /
37、*删除确认?*/ if(sd2=1) /*确认*/ stui=stustumax-1; /*删除该学生基本信息*/ stumax-; printf("n删除学生信息成功!n"); save(); /*调用保存学生基本信息函数*/ for(j=0;j<scoremax;j+) /*删除该学生的成绩信息*/ if(strcmp(scorej.num,c)=0) delete_one_score(j); /*调用删除成绩函数*/ sd1+; if(sd1=0) printf("n该学生无成绩记录."); /*该学生无成绩记录*/ printf("
38、;n删除信息成功."); printf("n删除其他学生的成绩? 1)是 2)否 bb"); /*是否继续删除*/ scanf("%d",&sd3); switch(sd3) case 1:delete_one();break; /*继续删除*/ default: printf("n查询学生的号码结束. Press any key to continue . . .");getch();menu(); /*排序*/void order() int c; printf("排序中.n按什么排序: 1)课程编号
39、2)课程 bb"); scanf("%d",&c); /*指定按什么排序*/ switch(c) case 1:order_course_num();printf("n排序结束. Press any key to continue . . .");break; /*选择按课程编号排序*/ case 2:order_course();printf("n排序结束. Press any key to continue . . .");break; /*选择按课程名称排序*/ default:printf("n输入
40、错误. 请重新输入 (12)!n");order(); getch();menu();/*按课程编号排序*/void order_course_num() int i,j,k=0; char cnum10; struct stuscore sco; printf("n输入要排序的课程编号:"); scanf("%s",cnum); /*输入要排序的课程编号*/ for(i=0;i<scoremax;i+) if(strcmp(scorei.coursenum,cnum)=0) /*查找对应信息并保存在score1M中*/ score1k=scorei; /* score1M为全局数组*/ k+; for(i=0;i<k-1;i+) for(j=i+1;j<k;j+) if(score>score) /*升序排序*/ sco=score1i;score1i=sco
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法院专项速递合同范本
- 旅馆宾馆转租合同范本
- 埃博拉出血热医院感染防控措施和转运工作流程
- 景观水池施工合同范本
- 音响舞台租赁合同范本
- 病句关联词搭配不当30题及答案
- 2025《上海市房屋租赁合同中介服务版》
- 2025标准办公室租赁合同的范本
- 市政碎石采购合同范本
- 预防医学(山东联盟)知到课后答案智慧树章节测试答案2025年春山东第二医科大学
- 有理数的加法说课课件2024-2025学年人教版数学七年级上册
- GB/T 18655-2025车辆、船和内燃机无线电骚扰特性用于保护车载接收机的限值和测量方法
- 2025年江苏南通苏北七市高三二模语文作文分析
- 吉林省吉林市2024-2025学年高三下学期3月三模试题 生物 含答案
- 辽宁省协作校2024-2025学年度下学期高三第一次模拟考试语文+答案
- 2025年03月中央社会工作部所属事业单位公开招聘11人笔试历年参考题库考点剖析附解题思路及答案详解
- 2025年中高端女装市场趋势与前景深度分析
- 2025年上半年宣城市广德县人民法院招考书记员兼任法警易考易错模拟试题(共500题)试卷后附参考答案
- 2025北京清华附中高三(下)统练一数学(教师版)
- 重庆市南开中学高2025届高三第七次质量检测化学试题及答案
- 华能霞浦核电限公司2025年上半年应届毕业生招聘易考易错模拟试题(共500题)试卷后附参考答案
评论
0/150
提交评论