版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程:C+课程设计课程设计题目:学生成绩管理系统班级学号:电信S2009-5-17姓名:宁思敏指导老师:刘曼春日期:2010年12月29号目 录一、系统总体框架二、功能分析三、模块设计与分析四、类的设计与分析五、特色算法分析六、特色算法七、存在的不足八、使用说明一、系统总体框架主菜单输入学生资料模块输出学生资料模块查找并显示学生资料模块按学生姓名查找删除学生资料模块添加学生资料模块按学生姓名排列模块从文件中读入数据模块储存学生资料并退出系统模块按学生姓名查找修改学生资料模块二、功能分析“学生成绩管理系统”包括九个模块:输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删
2、除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系统。这九个模块既相互联系又相互独立。本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。三、模块设计与分析(1)输入学生资料模块:主要功能用来对学生的成绩进行收
3、集和输入。在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。在准确输入学生资料后,就可以对该学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。(2)输出学生资料模块:主要功能用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。具体包括学生的班级,学号,姓名和各科成绩。在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。(3) 按学生姓名进行排列模块:主要功能是用来对学生的资
4、料按姓名进行排序。在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按姓名进行排序,这样就方便查找姓氏相同或是相近的同学的资料。(4) 添加学生资料模块:主要功能是用来添加学生资料,成绩。如果系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。(5)按姓名查找,删除该学生资料模块:主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了。由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没
5、用的信息,可以使系统更加优化。(6)查找并显示学生资料模块:主要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息。(7)按姓名查找,修改学生资料模块:主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。(8)从文件中读入数据模块:主要功能是用来从文件中读入学生数据。由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。这样就方便很多,不用把学生资料
6、一个一个添加,节省了很多时间精力。(9)储存学生资料并退出系统模块:主要功能是用来储存学生资料。在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。四、类的设计与分析Student类类图如下studentsmummummummummummummumtypedef classpublic:char num10;char cla10;char name20;char byyl10;char jsjzc20;char sjk10;char jsjyy20;char jsdl20;Student;student类说明表如下名称属性说明num
7、数据成员说明学生学号cla数据成员说明学生班级name数据成员说明学生名字byyl数据成员说明学生数据结构成绩jsjzc数据成员说明学生离散数学成绩sjk数据成员说明学生大学物理成绩jsjyy数据成员说明学生大学英语成绩Jssl数据成员说明学生模拟电路成绩五、特色算法分析功能:定义菜单函数,通过输出函数显示系统功能。利用switch语句实现多分支选择结构。算法思路:switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就
8、退出switch语句。代码:void main() /主函数调用。int n=0;for(;)switch(menu()case 1:coutsetw(15) 输入学生资料endl;n=Input(stu,n);break;case 2:coutsetw(15) 输出所有学生资料endl;Display(stu,n);break;case 3:coutsetw(15) 按姓名排序endl;Sort(stu,n);coutsetw(15) ;system(pause);break;case 4:coutsetw(15) 插入学生资料endl;n=Insert(stu,n);coutsetw(15
9、) ;system(pause);break;case 5:coutsetw(15) 删除学生资料endl;coutsetw(15) 输入他(她)的姓名:;n=Delete(stu,n);coutsetw(15) ;system(pause);break;case 6:coutsetw(15) 查找学生endl;Query(stu,n);coutsetw(15) ;system(pause);break;case 7:coutsetw(15) 修改学生资料endl;coutsetw(15) 输入你要修改的学生的姓名:;n=Xiugai(stu,n);system(pause);break;ca
10、se 8:coutsetw(15) 从文件中读入数据endl;n=AddfromText(stu,n);break;case 0:coutsetw(15) 将所有资料写入文件endl;WritetoText(stu,n);coutsetw(15) ;system(pause);break;六、功能测试学生成绩管理系统主菜单页面输入学生资料模块页面输出学生资料模块页面按学生姓名进行排列模块页面添加学生资料模块页面按姓名查找,删除该学生资料模块页面查找并显示学生资料模块情况页面按姓名查找,修改学生资料模块页面从文件中读入数据模块页面储存学生资料并退出系统模块页面七、源程序代码#include#in
11、clude#include#include#include#include#includeusing namespace std;typedef classpublic:char num10;char cla10;char name20;char byyl10;char jsjzc20;char sjk10;char jsjyy20;char jsdl20;Student;Student stu80;int menu()char c;for(;c8;)system(cls);cout 欢迎使用本学生成绩管理系统!endl;cout ;coutendl;cout* 学生成绩管理系统 * endl
12、;coutsetw(32) 1.输入学生资料endl;coutsetw(32) 2.输出学生资料endl;coutsetw(32) 3.按学生姓名进行排列endl;coutsetw(32) 4.添加学生资料endl;coutsetw(32) 5.按姓名查找,删除该学生资料endl;coutsetw(32) 6.查找并显示学生资料endl;coutsetw(32) 7.按姓名查找,修改该学生资料endl;coutsetw(32) 8.从文件中读入数据endl;coutsetw(32) 0.储存学生资料并退出系统endl;coutsetfill(=)setw(48)=endl;coutsetw(1
13、5) ;cout请选择(0-8):;c=getchar();return(c-0);int Input(Student stud,int n) /输入数据。int i=0;char sign,x10;for(;sign != n & sign != N;)coutsetw(15) studn+i.cla;coutsetw(15) studn+i.num;coutsetw(15) studn+;coutsetw(15) studn+i.byyl;coutsetw(15) studn+i.jsjzc;coutsetw(15) studn+i.sjk;coutsetw(15) studn
14、+i.jsjyy;coutsetw(15) studn+i.jsdl;gets(x);coutsetw(10) ;cout&sign;i+;return(n+i);void Display(Student stud, int n) /输出数据。int i;coutsetw(15) setfill(-)setw(65)-endl;coutsetw(15) 班级 学号 姓名 数据结构 离散数学 大学物理 大学英语 模拟电路endl;coutsetw(15) ;coutsetfill(-)setw(65)-endl;for(i=1;i1 & i%10=0)coutsetw(15) setfill(-
15、)setw(35)-endl;coutsetw(15) ;system(pause);coutsetw(15) setfill(-)setw(35)-endl;coutsetw(15) ;system(pause);void Sort(Student stud,int n) /按名字排序。int i,j;char t20;for(i=0;in-1;i+)for(j=0;j0)strcpy(t,studj+1.cla);strcpy(studj+1.cla,studj.cla);strcpy(studj.cla,t);strcpy(t,studj+1.num);strcpy(studj+1.nu
16、m,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.jsjzc);strcpy(studj.jsjzc,t);strcpy(t,studj+1.sjk);strcpy(studj+1
17、.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);coutsetw(15) 排序成功!endl;int Insert(Student stud,int n) /插入一条学生信息。char x10;coutsetw(15) studn.cla;coutsetw(15)
18、 studn.num;coutsetw(15) ;coutsetw(15) studn.byyl;coutsetw(15) studn.jsjzc;coutsetw(15) studn.sjk;coutsetw(15) studn.jsjyy;coutsetw(15) studn.jsdl;gets(x);n+;coutsetw(15) 插入成功!s;while(strcmp(,s)!=0&in) i+; /*查找判断*/if(i=n)printf(ttt没有发现该学生资料!n); /*返回失败信息*/return(n);for(j=i;jn-1;j+)
19、 /*删除操作*/strcpy(studj.num,studj+1.num);strcpy(,studj+1.name);strcpy(studj.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);coutsetw(15) 当前信息已删除成功!endl; /*返回成功信息
20、*/return(n-1);void Query(Student stud,int n) /按名字查找信息char s20;int i=0;coutsetw(15) s;while(strcmp(,s)!=0&in)i+; /*查找判断*/if(i=n)printf(ttt没有发现该学生资料!n); /*输入失败信息*/return;coutsetw(15) 学号:studi.numendl;coutsetw(15) 数据结构:studi.byylendl;coutsetw(15) 离散数学:studi.jsjzcendl;coutsetw(15) 大学物理:studi.s
21、jkendl;coutsetw(15) 大学英语:studi.jsjyyendl;coutsetw(15) 模拟电路:studi.jsdlendl;int Xiugai(Student stud,int n) /修改信息。n=Delete(stud,n);coutsetw(15) 输入你要修改的学生资料endl;n=Insert(stud,n);coutsetw(15) 修改完成endl;return(n);int AddfromText(Student stud, int n) /从文件中读入数据。int i=0,num;FILE *fp;char filename20;coutsetw(1
22、5) filename;if(fp=fopen(filename,rb)=NULL)coutsetw(15) 无法打开文件endl;coutsetw(15) ;system(pause);return(n);fscanf(fp,%d,&num);for(;inum;)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);coutsetw(15) 读入成
23、功!endl;coutsetw(15) ;system(pause);return(n);void WritetoText(Student stud,int n) /将所有记录写入文件。int i=0;FILE *fp;char filename20;coutsetw(15) 将资料输入文件endl;coutsetw(15) filename;if(fp=fopen(filename,w)=NULL)coutsetw(15) 无法打开文件endl;system(pause);return;fprintf(fp,%dn,n);for(;in;)fprintf(fp,%-6s%-5s%-5s%-5
24、s%-5s%-5s%-5sn,studi.cla,studi.num,,studi.byyl,studi.jsjzc,studi.sjk,studi.jsjyy);i+;fclose(fp);coutsetw(15) 输入成功!endl;int b;coutsetw(15) 请确定是否退出系统:endl;coutsetw(15) 0.退出系统endl;coutsetw(15) 1.返回b;if(b=0)coutsetw(15) 谢谢使用!endl;coutsetw(15) ;system(pause);exit(0);void main() /主函数调用。int n=0;for(;)switch(menu()case 1:coutsetw(15) 输入学生资料endl;n=Input(stu,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南通智能化货代合同范例
- 工程合同范例 2013
- 打捆机转让合同范例
- 大金额购销合同范例
- 投资资金分红合同模板
- 2024年银行法制宣传教育工作总结
- 合伙施工协议合同范例
- 2024年河南客运实操试题库及答案
- 2024年淮南驾驶员客运从业资格证模拟考试题
- 2024年山西客运资格证考多少道题
- 新概念英语第一册1144词汇表带音标
- 05S502阀门井图集
- 舒方特方格练习(共6页)
- 90、808系列铝合金门窗自动计算下料表
- 管道定额价目表
- 工期日历天计算器
- 相敏检波电路
- 私募股权投资基金基本知识(共45页).ppt
- 第一章特殊教育概述-特殊教育概论(共4页)
- 炼油厂化重整装置生产原理及工艺
- (完整版)装修主要材料一览表
评论
0/150
提交评论