版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩管理系统设计书1、系统总体框架输入学、 生资料 模块< ->输出学" 生资料 模块按学生 姓名进 行排列 模块LJ按姓从文件储存学 生资料名查中读入并退出找,修数据模系统模 块改学生块资料模块图1“学生成绩管理系统”包括九个模块:输入学生资料,输出学生资料,学生按顺序排列,添加学生资料,按查找,删除该学生资料,查找并显示学生资料,按查找, 修改该学生资料,从文件中读入数据,储存学生资料并退出系统。这九个模块既相互联 系又相互独立。本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成 绩的各项管理操作。本系统能对成绩进行输入和输出;能按对学生进行
2、排序,并显示学 生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能 根据学生的来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取 学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中 的数据。3、模块设计与分析(1) 输入学生资料模块:主要功能用来对学生的成绩进行收集和输入。在学生信息保存在系统中的前提下, 成绩录入需要输入学生资料,比如班级,学号,。在准确输入学生资料后,就可以对该 学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提示是否继续进行操作, 如果想继续输入学生成绩就输入 y,不想再输入学生成绩的话就输入 n
3、再输入n之后, 系统返回到主菜单。(2) 输出学生资料模块:主要功能用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下, 使用该功能可以显示所有学生的信息,资料等等。具体包括学生的班级,学号,和各科 成绩。在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。(3)按学生进行排列模块主要功能是用来对学生的资料按进行排序。在系统保存学生资料,成绩的前提下,使 用此功能可以对学生的资料按进行排序,这样就方便查找姓氏相同或是相近的同学的资 料。(4)添加学生资料模块主要功能是用来添加学生资料,成绩。如果系统有保存学生资料的情况下,想录 入学生成绩的话,就不用添加学生资料这模块
4、。如果系统没有保存该学生信息的话,就 要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。(5)按查找,删除该学生资料模块主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料, 可以输入学生,系统查找该学生资料后,就可以删除了。由于学生辍学,毕业等原因, 及时对系统进行更新,删除一些没用的信息,可以使系统更加优化(6)查找并显示学生资料模块主要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生 资料,可以输入该学生,这样系统就会显示该学生资料和各科成绩等信息(7)按查找,修改学生资料模块主要功能是用来修改学生资料。在系统保存了某学生资料的
5、前提下,想要查找该学生 资料,可以输入该学生,系统就会显示该学生资料和各科成绩等信息,这样就可以修改 该学生的资料,成绩等信息。8)从文件中读入数据模块主要功能是用来从文件中读入学生数据。由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。这样就方便很多,不用把学生资料一个 一个添加,节省了很多时间精力。(9)储存学生资料并退出系统模块主要功能是用来储存学生资料。在对系统进行一系列操作,比如添加、删除、修改 学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。4、类的设计与分析Student类类图typedef classpublic: ch
6、ar num10; char cla10; char n ame20; char byyl1O; char jsjzc20; char sjk1O; char jsjyy20; char jsdl20; Stude nt;表1 Stude nt 类说明表名称属性说明num数据成员说明学生学号cla数据成员说明学生班级n ame数据成员说明学生名字byyl数据成员说明学生数据结构成绩jsjzc数据成员说明学生离散数学成绩sjk数据成员说明学生大学物理成绩jsjyy数据成员说明学生大学英语成绩Jssl数据成员说明学生模拟电路成绩5、特色算法分析功能:定义菜单函数,通过输出函数显示系统功能。利用sw
7、itch语句实现多分支选择结构。算法思路:switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个 case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就 退出switch语句。代码:void mai n()/主函数调用。int n=0;for(;)switch(me nu()case 1:cout<<setw(15)<<" "<<" 输入学生资料"<<endl;n=1 nput(stu
8、, n);break;case 2:cout<<setw(15)<<" "<<"输出所有学生资料"<<endl;Display(stu, n);break;case 3:cout<<setw(15)<<" "<<" 按排序"<<e ndl;Sort(stu,n); cout<<setw(15)<<" " system("pause"); break; cas
9、e 4: cout<<setw(15)<<" "<<" n=Insert(stu,n); cout<<setw(15)<<" " system("pause");break; case 5: cout<<setw(15)<<" "<<" cout<<setw(15)<<" "<<" n=Delete(stu,n); cout<&l
10、t;setw(15)<<" " system("pause"); break; case 6: cout<<setw(15)<<" "<<" Query(stu,n); cout<<setw(15)<<" " system("pause"); break; case 7: cout<<setw(15)<<" "<<" cout<<setw
11、(15)<<" "<<" n=Xiugai(stu,n); system("pause"); break; case 8: cout<<setw(15)<<" "<<" n=AddfromText(stu,n); break; case 0: cout<<setw(15)<<" "<<" WritetoText(stu,n); cout<<setw(15)<<&quo
12、t; " system("pause"); break;插入学生资料 "<<endl;删除学生资料 "<<endl; 输入他(她)的 :"查找学生 "<<endl;修改学生资料 "<<endl; 输入你要修改的学生的:从文件中读入数据 "<<endl;将所有资料写入文件 "<<endl;欢迎使用学生成绩管理系统6、功能测试刘迪兆專改韻 料,学,矗 生養生查是齊皐 入卓加姓存列-Ms行1234rot780请选 S<0-8
13、>:图1学生成绩管理系统主菜单页面编程人员刘;WSitf牛 罚舞皆壬甲羊坏W;X” WKX 址3JW;X” WKX 址KW;X” WKX 址3JW;琉主生绘生查s-查 入岀字加姓聲文存 範黑溢善一按从储12 2 4 5 6 7 8 0ku 0 0 0 0 0-8资価生葦学勢级号名盂卫 请拇学姓聲大盂4 J 9 9 ? 9 9 -F- 即迪匕:>.-L.B有 还出图二为输入学生资料模块学生成绩管理系统2 .3 .7_ S .0.麟署鏗料班级学号姓名数据结构离散数学丈学物理大学英语模拟电路学学系 列畀该出 排曙改韻 行型專幵一一 fisw,学 “ gn- H 生 生杳一S-查 一一 入
14、单加姓薯文存H按从储_程人员;刘X:90屮.=4= *0399494 30940402 刘迪兆90请按任意键继续.图三为输出学生资料模块图四按学生进行排列模块一 列出 排H- 行聖鶯昇 起烙进料,学,人朴 戸羣華習3査塁 -人S加rflx#1Z3 4 56T8WI:H3S?404a? 半昌 1B3 07460311 姓名:张乐图五为添加学生资料模块斗 斗-5*e- 资资列第该岀 排曙改噸 有>W載幵 霆e,¥JJAM- 资資令聶示找读資 生生姓生査显直星 13-9456780>:料覆 -S驀已蝕 <»生d总 犀学嚥餘入嬰图六为按查找,删除该学生资料模块b7
15、23统 系 ±宀1r幵学 资资密£曲料生生堆生>_nA±自程人员刘迪兆0图七为查找并显示学生资料模块生生统 影学系 列畀该出 排陽資搀幕 行S+H曩幵 进料,学,金 名囊示找薯 姓生查显查星 学加姓存 按按从储 3 4 5 6 7 8 0PL迪文料的辛资 生功生 学事KU409油so>:料已修 <0生要息要 3H 选艮更1 1 1 1 1 -9999结脣央區元_ 数罔大大潺修-甫按任意键継续-IE.图八为按查找,修改学生资料模块图九 为从文件中读入数据模块图十为储存学生资料并退出系统模块学生贰绩管理系统科514资资生生撓 学学系 列 该
16、7;排料孥生生姓生查显查学1225670件nt文de 郎人件tu >:写攻:s-8弟予專 弹畐文®疋出回7、存在的不足与对策本学生成绩管理系统由九个模块组成,每个模块相互联系又相互独立。这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力的问 题,这个系统可以实现的功能非常有限。只能实现学生管理系统最基本的功 能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从 文件中读入数据,能对系统所作的修改、操作进行保存等。而且在每个模块 也有不足的地方,比如在输入学生资料时,对每个信息项没有严格的规定, 可以输入任何的字符。同时有些模块还不能实现本应该有的功能,这
17、有待以 后努力,争能够实现该有的功能。在21世纪的科技时代,科学技术突飞猛进,计算机已经不仅是在科技上应用,而且在生活中也是同样得到了广泛在应用。如今,不管是小学、初 中、高中、甚至是很多大学生的学生成绩管理基本上是靠人工进行管理,但 随着时间的变化,学校规模的扩大,有关学生成绩管理工作和所涉及到的数 据量越来越大越来越多,大多数学校不得不靠增加人力、物力、财力来进行 学生成绩管理。 但是人工管理成绩档案具有效率低、 查找麻烦、 可靠性不高、 性低等因素。 因此开发出一个不仅仅是适用于大中专院校以及其它高校通用 的学生成绩管理系统是必要的。开发一个学生成绩管理系统,采用计算机对学生成绩进行管理
18、,进一步 提高了办学效益和现代化水平。为广大教师和学生提高工作效率,实现学生 成绩信息管理工作流程的系统化、规化和自动化。现在我国的大中专院校的 学生成绩档案管理水平普遍都不是很高,有的还停留在全用纸介质基础上, 这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人 力物力,也存在着许多不足的因素。在今天信息时代这种传统的管理方法必 然会被计算机为基础的信息管理系统所代替。 一个高效的学生成绩管理系统 可以存储历届的学生成绩档案,不需要大量的人力,只需要几名专门录入员 即可操作系统,节省大量人力,可以迅速查到所需信息、高效、安全,学生 在能方便的查看自己的成绩。8、程序源代码#i
19、nclude<iostream> #include<stdio.h> #include<ctype.h> #include<stdlib.h> #include<string.h>#include<iostream> #include<iomanip> using namespace std; typedef classpublic:char num10; char cla10;char name20; char byyl10;char jsjzc20; char sjk10;char jsjyy20;char
20、 jsdl20; Student;Student stu80; int menu()char c;for(;c<'0'|c>'8')system("cls");cout<<""<<endl;cout<<" 编程人员:迪兆 "cout<<endl;欢迎使用本学生成绩管理系统!学生成绩管理系*"<<endl;cout<<setw(32)<<" "<<"1. co
21、ut<<setw(32)<<" "<<"2. cout<<setw(32)<<" "<<"3. cout<<setw(32)<<" "<<"4.输入学生资料 "<<endl; 输出学生资料 "<<endl; 按学生进行排列 "<<endl; 添加学生资料 "<<endl;cout<<setw(32)&
22、lt;<" "<<"5cout<<setw(32)<<" "<<"6cout<<setw(32)<<" "<<"7cout<<setw(32)<<" "<<"8 cout<<setw(32)<<" "<<"0按查找,删除该学生资料 "<<endl; 查找并显示学生资
23、料 "<<endl;按查找,修改该学生资料 "<<endl; 从文件中读入数据 "<<endl;储存学生资料并退出系统 "<<endl;cout<<setfill('=')<<setw(48)<<"="<<endl;cout<<setw(15)<<" " cout<<" 请选择 (0-8):" c=getchar();return(c-'0&
24、#39;);输入数据int Input(Student stud,int n)/int i=0;char sign,x10;for(;sign != 'n' && sign != 'N')1cout<<setw(15)<<" "<<"cin>>studn+i.cla;班级:"cout<<setw(15)<<" "<<"cin>>studn+i.num;学号:"cout<
25、;<setw(15)<<" "<<":cin>>studn+;I.Jcout<<setw(15)<<" "<<"cin>>studn+i.byyl;数据结构 :"cout<<setw(15)<<" "<<"cin>>studn+i.jsjzc;离散数学 :"cout<<setw(15)<<" "
26、<<"cin>>studn+i.sjk;大学物理 :"cout<<setw(15)<<" "<<"cin>>studn+i.jsjyy;大学英语 :"cout<<setw(15)<<" "<<"cin>>studn+i.jsdl;模拟电路gets(x);cout<<setw(10)<<" "cout<<" 还有要输入的信息
27、吗 ?(y/n)"cin>>&sign;i+; return(n+i);void Display(Student stud, int n) / 输出数据。int i; cout<<setw(15)<<" "<<setfill('-')<<setw(65)<<"-"<<endl;cout<<setw(15)<<" "<<" 班级 学号 数据结构 离散数学 大学物理 大学英语
28、模拟电 路"<<e ndl;cout<<setw(15)<<" " cout<<setfill('-')<<setw(65)<<"-"<<endl;for(i=1;i<n+1;i+)printf("tt%-9s%-9s%-9s%-9s%-9s%-9s%-9sn",studi-1.cla,studi-1.num,stud ,studi-1.byyl,studi-1.jsjzc,studi-1.sjk,stu
29、di-1.jsjyy);if(i>1 && i%10=0)cout<<setw(15)<<" "<<setfill('-')<<setw(35)<<"-"<<endl;cout<<setw(15)<<" "system("pause");cout<<setw(15)<<" "<<setfill('-')<&
30、lt;setw(35)<<"-"<<endl;cout<<setw(15)<<" "system("pause");按名字排序。void Sort(Student stud,int n) /int i,j;char t20;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+) if(strcmp(studj.num,studj+1.num)>0) strcpy(t,studj+1.cla); strcpy(studj+1.cla,studj.cla)
31、; strcpy(studj.cla,t);strcpy(t,studj+1.num); strcpy(studj+1.num,studj.num); strcpy(studj.num,t);strcpy(t,studj+1.name); strcpy(studj+1.name,); strcpy(,t);strcpy(t,studj+1.byyl); strcpy(studj+1.name,studj.byyl);strcpy(studj.byyl,t);strcpy(t,studj+1.jsjzc);strcpy(studj+1.name,studj
32、.jsjzc);strcpy(studj.jsjzc,t);strcpy(t,studj+1.sjk);strcpy(studj+1.name,studj.sjk);strcpy(studj.sjk,t);strcpy(t,studj+1.jsjyy);strcpy(studj+1.name,studj.jsjyy);strcpy(studj.jsjyy,t);strcpy(t,studj+1.jsdl);strcpy(studj+1.name,studj.jsdl);strcpy(studj.jsdl,t);cout<<setw(15)<<" "&
33、lt;<" 排序成功 !"<<endl;插入一条学生信息int Insert(Student stud,int n) / char x10; cout<<setw(15)<<" "<<" cin>>studn.cla;班级:"cout<<setw(15)<<" "<<"cin>>studn.num;学号:"cout<<setw(15)<<" &quo
34、t;<<":"cin>>;cout<<setw(15)<<" "<<"cin>>studn.byyl;数据结构 :"cout<<setw(15)<<" "<<"cin>>studn.jsjzc;离散数学 :"cout<<setw(15)<<" "<<"cin>>studn.sjk;
35、大学物理 :"cout<<setw(15)<<" "<<" 大学英语 :"cin>>studn.jsjyy;cout<<setw(15)<<" "<<" 模拟电路 :"cin>>studn.jsdl;gets(x);n+;cout<<setw(15)<<" "<<" 插入成功 !"<<endl; return(n);按名字查
36、找信息,删除信息int Delete(Student stud,int n) /char s20;int i=0,j;cin>>s;while(strcmp(,s)!=0&&i<n) i+; /* if(i=n)printf("ttt 没有发现该学生资料 !n"); /* 返回失败信息 */ return(n);for(j=i;j<n-1;j+) /*删除操作 */strcpy(studj.num,studj+1.num); strcpy(,studj+1.name); strcpy(studj
37、.cla,studj+1.cla); strcpy(studj.byyl,studj+1.byyl); strcpy(studj.jsjzc,studj+1.jsjzc); strcpy(studj.sjk,studj+1.sjk); strcpy(studj.jsjyy,studj+1.jsjyy); strcpy(studj.jsdl,studj+1.jsdl);cout<<setw(15)<<" "<<" 当前信息已删除成功 !"<<endl; /* 返回成功信息 */ return(n-1);按名字
38、查找信息void Query(Student stud,int n) / char s20;int i=0;cout<<setw(15)<<" "<<" 输入他(她)的 :" cin>>s;while(strcmp(,s)!=0&&i<n)i+; /* 查找判断 */if(i=n)printf("ttt 没有发现该学生资料 !n"); /* 输入失败信息 */ return;cout<<setw(15)<<" &
39、quot;<<" 学号 :"<<studi.num<<endl; cout<<setw(15)<<" "<<" 数据结构 :"<<studi.byyl<<endl; cout<<setw(15)<<" "<<" 离散数学 :"<<studi.jsjzc<<endl; cout<<setw(15)<<" &qu
40、ot;<<" 大学物理 :"<<studi.sjk<<endl;cout<<setw(15)<<" "<<" 大学英语 :"<<studi.jsjyy<<endl; cout<<setw(15)<<" "<<" 模拟电路 :"<<studi.jsdl<<endl;int Xiugai(Student stud,int n)/ 修改信息。n=D
41、elete(stud,n);cout<<setw(15)<<" "<<" 输入你要修改的学生资料 "<<endl; n=Insert(stud,n);cout<<setw(15)<<" "<<" 修改完成 "<<endl; return(n);int AddfromText(Student stud, int n) / 从文件中读入数据。 int i=0,num;FILE *fp;char filename20; cou
42、t<<setw(15)<<" "<<" 输入文件名 :" cin>>filename;if(fp=fopen(filename,"rb")=NULL)cout<<setw(15)<<" "<<" 无法打开文件 "<<endl; cout<<setw(15)<<" "system("pause");return(n); fscanf(fp,
43、"%d",&num); for(;i<num;)fscanf(fp,"%s%s%s%s%s%s%s",studn+i.cla,studn+i.num,studn+,studn +i.byyl,studn+i.jsjzc,studn+i.sjk,studn+i.jsjyy,studn+i.jsdl);i+;n+=num;fclose(fp); cout<<setw(15)<<" "<<" 读入成功 !"<<endl; cout<<s
44、etw(15)<<" "system("pause"); return(n);void WritetoText(Student stud,int n) / 将所有记录写入文件。 int i=0;FILE *fp;char filename20;cout<<setw(15)<<" "<<" 将资料输入文件 "<<endl; cout<<setw(15)<<" "<<" 输入文件名 :"
45、;cin>>filename; if(fp=fopen(filename,"w")=NULL)cout<<setw(15)<<" "<<" 无法打开文件 "<<endl; system("pause");return;fprintf(fp,"%dn",n);for(;i<n;)fprintf(fp,"%-6s%-5s%-5s%-5s%-5s%-5s%-5sn",studi.cla,studi.num,studi
46、. name,studi.byyl,studi.jsjzc,studi.sjk,studi.jsjyy);i+;fclose(fp);cout<<setw(15)<<" "<<" 输入成功 !"<<endl;int b;cout<<setw(15)<<" "<<" cout<<setw(15)<<" "<<"0. cout<<setw(15)<<&quo
47、t; "<<"1. cin>>b;if(b=0)cout<<setw(15)<<" "<<" cout<<setw(15)<<" " system("pause");exit(0);请确定是否退出系统 :"<<endl; 退出系统 "<<endl;返回"<<e ndl;使用! "<<endl;void main() /int n=0;for(;)switch(menu()case 1:cout<<setw(15)<<" "<<" n=Input(stu,n);break;case 2:cout<<setw(15)<&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级上册20以内的所有加减法计算题
- 广东省中山市2024年中考一模数学试卷含答案
- 荆州学院《非线性系统理论与设计》2023-2024学年第一学期期末试卷
- 辽宁城市建设职业技术学院《互换性与技术测量D》2023-2024学年第一学期期末试卷
- 黄冈职业技术学院《材料科学基础B(二)》2023-2024学年第一学期期末试卷
- 【物理】第九章压强 固体压强 练习 2024-2025学年人教版物理八年级下学期
- 黑龙江冰雪体育职业学院《兽医寄生虫病学》2023-2024学年第一学期期末试卷
- 重庆三峡职业学院《标志与符号设计》2023-2024学年第一学期期末试卷
- 重庆城市管理职业学院《粉体科学与工程实验》2023-2024学年第一学期期末试卷
- 浙江育英职业技术学院《卫生微生物学》2023-2024学年第一学期期末试卷
- 辐射安全知识培训课件
- 2023-2024学年八年级(上)期末数学试卷
- 2025年烟花爆竹储存证考试题库
- 2025年北京机场地服岗位招聘历年高频重点提升(共500题)附带答案详解
- ICH《M10:生物分析方法验证及样品分析》
- 2024-2030年全球及中国医用除尘器行业销售模式及盈利前景预测报告
- 2025学年人教新版英语七下Unit1随堂小测
- 2024年度光伏发电项目施工合同工程量追加补充协议3篇
- 建筑废弃混凝土处置和再生建材利用措施计划
- 2024年药品质量信息管理制度(2篇)
- 2024-2025学年人教版八年级物理第七章力单元测试题
评论
0/150
提交评论