版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上C高级程序设计设计说明书班级成绩管理系统班 级12计科组 别第X组组 长 静待花开组 员 静待花开指导教师李伙友、魏龙华计算机科学与技术系2013年 6月摘 要 学生管理系统在日常教学中有着十分重要的作用,它可以帮助老师和学生快速的查找所需的学生信息,该系统具有准确、高效、全面等特点。录入和输出是该系统数据资源的基础;对于学生成绩的相关运算在教学中显得必要;学生成绩等等的排名能够帮助使用系统的人快速获得所需的信息,对于成绩的排名,排序法中的冒泡排序是数据处理中经常使用的一种重要运算。冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最 后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较.关键词:冒泡排序 目 录1 课题综述····························
3、83;·····························4 1.1课题内容···················
4、·········································4 1.2意义········
5、;··················································
6、;········4 1.3预期目标········································
7、183;·····················42 系统分析···························&
8、#183;······························5 2.1相关基础知识·················
9、183;·········································5 2.2 总体方案······
10、3;·················································
11、3;······53 系统设计··········································
12、83;···············6 3.1 输入模块·································
13、;·····························6 3.2 输出模块···················&
14、#183;··········································7 3.3 平均分模块·····
15、183;·················································
16、183;······8 3.4 统计、排名模块·········································&
17、#183;····················9 3.5 查找模块···························
18、83;·································10 3.6 删除模块··············
19、3;··············································104 代码编写及运行··
20、;·················································12 4.
21、1 总程序·················································&
22、#183;··············12总 结··································
23、183;························30致 谢························
24、83;··································31参考文献··············
25、83;···········································31 专心-专注-专业1 课题综述 1.1课题内容 每个学生的信息为:姓名、学
26、号、性别、C语言成绩、高数成绩、近代史成绩;平均成绩。1学生信息处理(1) 输入学生信息、姓名、学号、性别,按学号以小到大的顺序存入文件中。(2) 插入(修改)同学信息:(3) 删除同学信息:(4) 浏览学生信息:2学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩(业务成绩总和)/(业务课程门数) 计算考试成绩,并计算考试名次。(2) 学生测评数据输入并计算综合测评总分及名次。综合测评总分(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。(3) 学生数据管理输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件(4) 学生数据查询:输
27、入学号或其他信息,即读出所有数据信息,并显示出来。3、全体学生信息输出1.2 意义 通过该课程设计的操作与实践,能够根据数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能,全面提高学生的程序设计、开发能力。1.3 预期成果 1、掌握函数的定义方法和调用方法。 2、能够采用模块化思想调试程序。 2、系统分析 2.1 相关基础知识 1、学校考核一个学生的主要依据就是学生的综合成绩,综合素质。这就让一个学生的综合成绩评定系统的建立显得尤为重要。 2、一个学生综合测评系统包括学生的方方面面信息,这有利于学校的管理。 3、大家都知道学生是流动
28、的,而且综合测评是每年评比一次,所以这学生综合测评系统的更改录入功能重要性不明而喻。4、开发本系统在一定的程度上可以减轻教辅老师的期末工作。 2.2 总体方案 学生数据处理模块学生信息输出模块帮助退出修改学生信息删除学生信息浏览学生信息返回录入成绩修改学生数据学生数据查询返回输出学生信息无退出本系统学生信息处理模块输入学生信息12计科班级成绩管理系统系统设计 3.1 输入模块 学生的输入模块主要是采用从键盘输入学生的基本信息,利用printf和scanf函数来输入学生的信息,在输完一个学生的基本信息后,会返回上级菜单,可以继续输入学生信息或退出。或直接从已有文件读取。 3.2输出模块(1)、通
29、过学号或姓名查找,输出单个学生信息。(2)、输出有效的学生信息。3.3 平均分模块。求各个学生的成绩平均分。3.4排名模块。按单科排名、学号排名、平均分排名。3.5 查找模块按照学号或姓名查找。3.6 删除模块通过学号或姓名查找学生,选择删除或恢复误删。(1)、删除(2)、恢复4 附件:程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 80struct Studentlong num; /*学号*/char name20; /*姓名*/char sex10; /*性别*/in
30、t C; /*C语言*/int Math; /*高数*/int Chinese; /*语文*/int History; /*近代史*/int Moral; /*德育分*/double aver; /*平均分*/aN;int FN=0; /*判定是否输出0为假1为真*/int t=0,t2=0,M=0; /*t-所有信息数目,tt-有效信息数目,M-统计输入到第几个学生*/void found(); void input(); void read(); void average();void sort();void output1();void seek();void output2(int i
31、);void cut(int i);void regain(int i);void alter(int i);void statistics();void save();void end();int main()int z; while(1)printf(" *n"); printf(" *欢迎使用学生成绩管理系统*n"); printf(" *nnnn"); printf(" *n"); printf(" *1.创建学生信息 * 2.查找学生信息(修改、删除。) *n"); printf(&q
32、uot; *3.各科平均成绩 * 4.按单科成绩进行排序 *n"); printf(" *5.输出所有学生信息 * 6.统计 *n");printf(" *7.保存 * 0.退出系统 *n"); printf(" *nn"); printf("请输入指令:");scanf("%d",&z); switch(z) case 1:found();break; case 2:seek();break; case 3:average();break; case 4:sort();bre
33、ak; case 5:output1();break; case 6:statistics();break; case 7:save();break; case 0:end();break; default:printf("输入错误,请重新输入n");break;return 0;void found() /*创建数据*/int z,n=1; /*z-指令,n-判断是否执行循环*/while(n)printf("*n");printf("1.手动输入学生信息n");printf("2.从文件读取学生信息n"); p
34、rintf("0.返回上一级n");printf("*nn");printf("请输入指令:");scanf("%d",&z);switch(z) case 1:input();break; case 2:read();break;case 0:n=0;break; default:printf("输入错误,请重新输入n");break;system("cls");void input() /*手动输入数据*/int n=1,n2=1,i; /*z-指令,n,n2-判
35、断是否执行循环*/ while(n)printf("请输入学生信息:n");while(n2)printf("学号:");scanf("%ld",&aM.num);for(i=0;i<t;i+)if(aM.num=ai.num) printf("学号重复请重新输入n");break; if(i=t) n2=0;printf("姓名:");scanf("%s",&aM.name);printf("性别:");scanf("%s
36、",&aM.sex);printf("C语言成绩:");scanf("%d",&aM.C);printf("高数成绩:");scanf("%d",&aM.Math);printf("语文成绩:");scanf("%d",&aM.Chinese);printf("近代史成绩:");scanf("%d",&aM.History);printf("德育分:");scanf(
37、"%d",&aM.Moral);aM.aver=(aM.C+aM.Math+aM.Chinese+aM.History+aM.Moral)/5.0;n=0; FM=1;M+;t+;t2+; void read() /*文件导入*/FILE *fp;int i;t=0;M=0;if(fp=fopen("save","rb")=NULL)printf("无法打开此文件n");return;printf("该生信息为:n");printf("n");printf("
38、; 学号 姓名 性别C语言高数语文近代史德育分平均分n");printf(" n"); for(i=0;fread(&ai,sizeof(struct Student),1,fp)!=0;i+,t+,M+)printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf("n");Fi=1;fclose(fp);t2=
39、t;system("pause");system("cls");void output1() /*全体学生信息输出*/int i;printf("该生信息为:n");printf("n");printf(" 学号 姓名 性别C语言高数语文近代史德育分平均分n");printf(" n");for(i=0;i<t;i+) if(Fi=1)printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,
40、,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf("n");system("pause");system("cls");void seek() /*查询*/ int z,s,n=1,n2=1,i,k; /*z-指令,n,n2-判断是否执行循环,k-数组下标*/long m;char b20;while(n2)printf("请输入查询方式:n");printf("1.按学号查询.n");prin
41、tf("2.按姓名查询.n");printf("0.返回主菜单.n");scanf("%d",&s);if(s=1) printf("请输入学号:n");scanf("%ld",&m);for(i=0;i<t;i+)if(ai.num=m) k=i;n2=0;break;else if(s=2) printf("请输入姓名:n");scanf("%s",b);for(i=0;i<t;i+)if(strcmp(,b)
42、=0) k=i;n2=0;break;else if(s=0) system("cls"); return;else printf("输入错误,请重新输入n");if(i=t) printf("查无此人,请重新查询n");while(n)printf("*n");printf("1.输出学生信息n");printf("2.修改学生信息n");printf("3.删除学生信息n");printf("4.恢复误删的学生信息n");print
43、f("0.返回主菜单n");printf("*nn");printf("请输入指令:");scanf("%d",&z);switch(z) case 1:output2(k);break; case 2:alter(k);break; case 3:cut(k);break;case 4:regain(k);break;case 0:n=0;break; default:printf("输入错误,请重新输入n");break;system("cls");void ou
44、tput2(int i) /*单个学生信息输出*/int k=0; /*k统计不及格科目数*/printf("该生信息为:n");printf("n");printf(" 学号 姓名 性别C语言高数语文近代史德育分平均分n");printf(" n");printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.ave
45、r); printf("n");if(ai.C<60) k+;if(ai.Math<60) k+;if(ai.Chinese<60) k+;if(ai.History<60) k+;if(ai.Moral<60) k+;printf("该生共有%d门科目不及格.n",k);system("pause");system("cls");void alter(int i) /*修改学生信息*/printf("请重新输入学生信息:n");printf("学号:&q
46、uot;);scanf("%ld",&ai.num);printf("姓名:");scanf("%s",&);printf("性别:");scanf("%s",&ai.sex);printf("C语言成绩:");scanf("%d",&ai.C);printf("高数成绩:");scanf("%d",&ai.Math);printf("语文成绩:&quo
47、t;);scanf("%d",&ai.Chinese);printf("近代史成绩:");scanf("%d",&ai.History);printf("德育分:");scanf("%d",&ai.Moral);ai.aver=(ai.C+ai.Math+ai.Chinese+ai.History+ai.Moral)/5.0;printf("修改完成n");system("pause");system("cls"
48、); void cut(int i) /*删除学生信息*/char s;printf("是否删除y/n?n");getchar();scanf("%c",&s);if(s='Y' | s='y')Fi=0;t2-; printf("已删除");system("pause");else if(s='N' | s='n') return; else printf("输入错误,请重新输入nn");system("paus
49、e");return; system("cls");void regain(int i)Fi=1;t2+;printf("信息已恢复");system("pause");system("cls"); void average() /*班级单科平均分*/int n=1,i; /*n-判断是否执行循环*/char z20; /*z-查询科目指令*/long sum=0; /*sum-单科总分*/double aver=0.0; /*aver-单科平均分*/while(n)printf("请输入需要求
50、班级平均分的科目:(C / Math / Chinese / History / Moral)n");printf("-");scanf("%s",&z);if(strcmp(z,"C")=0) for(i=0;i<t;i+)if(Fi=1)sum=sum+ai.C;aver=sum*1.0/t2;n=0;else if(strcmp(z,"Math")=0)for(i=0;i<t;i+)if(Fi=1) sum=sum+ai.Math;aver=sum*1.0/t2;n=0;else
51、 if(strcmp(z,"Chinese")=0)for(i=0;i<t;i+)if(Fi=1)sum=sum+ai.Chinese;aver=sum*1.0/t2;n=0;else if(strcmp(z,"History")=0)for(i=0;i<t;i+)if(Fi=1)sum=sum+ai.History;aver=sum*1.0/t2;n=0;else if(strcmp(z,"Moral")=0)for(i=0;i<t;i+)if(Fi=1)sum=sum*1.0+ai.Moral;aver=sum*
52、1.0/t2;n=0;else printf("输入错误,请重新输入n");printf("%s科目班级平均分为:%7.2fn",z,aver);system("pause");system("cls"); void sort() /*排序*/ int n=1,i,j,k2; /*k2-交换有效数据判定的中间变量*/char z20;struct Student k;while(n) printf("请输入排序方式(/学号 /平均分 /C /Math /Chinese /History /Moral /0
53、(返回主菜单)n"); printf("-:");scanf("%s",&z);if(strcmp(z,"学号")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.num>aj.num)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"C")=0) for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.C<aj.C)k=ai;ai=aj;aj=k;
54、k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"Math")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.Math<aj.Math)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"Chinese")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.Chinese<aj.Chinese)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0
55、;else if(strcmp(z,"History")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.History<aj.History)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"Moral")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.Moral<aj.Moral)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,
56、"平均分")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.aver<aj.aver)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"0")=0) return;else printf("输入错误,请重新输入n"); printf("该生信息为:n");printf("n");printf(" 学号 姓名 性别C语言高数语文近代史德育分平均分n");printf
57、(" n");for(i=0;i<t;i+) if(Fi=1) printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf("n");system("pause");system("cls"); void statistics() char z20;int FFN=0; /*FFN-判
58、定分数是否在所寻范围,1为真,0为假*/int n=1,score1,score2,i,k=0; /*k-统计某分数段学生数,score1,score2-统计分数的上、下限*/while(n)printf("请输入需要统计的科目:/C /Math /Chinese /History /Moral /0(返回主菜单)n");scanf("%s",z);if(strcmp(z,"0")!=0)printf("请输入需要统计的分数上、下限(逗号分隔)n");scanf("%d,%d",&sco
59、re1,&score2);if(strcmp(z,"C")=0) for(i=0;i<t;i+)if(Fi=1)if(ai.C>=score1 && ai.C<=score2)k+;FFi=1;n=0;else if(strcmp(z,"Math")=0)for(i=0;i<t;i+)if(Fi=1)if(ai.Math>=score1 && ai.Math<=score2)k+;FFi=1;n=0;else if(strcmp(z,"Chinese")=0)
60、for(i=0;i<t;i+)if(Fi=1)if(ai.Chinese>=score1 && ai.Chinese<=score2)k+;FFi=1;n=0;else if(strcmp(z,"History")=0)for(i=0;i<t;i+)if(Fi=1)if(ai.History>=score1 && ai.History<=score2)k+;FFi=1;n=0;else if(strcmp(z,"Moral")=0)for(i=0;i<t;i+) if(Fi=1)if(ai.Moral>=score1 && ai.Moral<=score2)k+;FFi=1;n=0;else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东营市地理试题及答案
- 医疗器械包装用纸塑袋来料检验标准操作规程
- 造船厂船体焊接准则
- 某油漆厂员工管理准则
- HJ 793-2016 城市轨道交通(地下段)结构噪声监测方法-建筑规范、标准、图集
- 某制药公司生产过程监控细则
- 阁楼使用许可协议住宅阁楼使用许可合同三篇
- 2026年天津市中考历史真题(教师卷)
- 贵州省黔东南州从江县往洞中学2024-2025学年九年级上学期语文期中质量监测试卷(含答案)
- 2026年器官捐献伦理规范试题及答案
- 修脚店公共卫生管理制度
- 2025年常州政府雇员笔试真题及答案
- 2024年鸡西辅警招聘考试真题含答案详解(精练)
- 体育教师师德师风心得总结
- 2025高三英语高考高频短语搭配1000组
- 踝泵运动课件参考文献
- 房颤护理课件
- 异常报警分级管理制度
- 船员四小证Z01基本安全理论考试题库(浓缩500题)
- 木业公司管理制度
- 外立面墙改造工程施工方案
评论
0/150
提交评论