课程设计学生成绩管理系统

上传人:hao****an 文档编号:137039659 上传时间:2022-08-17 格式:DOCX 页数:23 大小:86.90KB
收藏 版权申诉 举报 下载
课程设计学生成绩管理系统_第1页
第1页 / 共23页
课程设计学生成绩管理系统_第2页
第2页 / 共23页
课程设计学生成绩管理系统_第3页
第3页 / 共23页
资源描述:

《课程设计学生成绩管理系统》由会员分享,可在线阅读,更多相关《课程设计学生成绩管理系统(23页珍藏版)》请在装配图网上搜索。

1、课程设计报告 课程名称:面向对象程序设计C+ 设计题目:学生成绩管理系统 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李晓虹2016 年 1 月 8目 录1.系统需求分析12.总体设计23.详细设计34.系统调试65.结果分析86.总结97.程序代码101系统需求分析 1.1系统设计的目的与意义:现在的学校学生数量较多,各样的考试也比较频繁,因此需要一个学生成绩管理系统来对学生的成绩进行管理。1.2 系统功能需求:本系统有四个类,Score类、Subject类、Student类、Class类,存储学生的个人信息、考试科目及成绩信息。有学生成绩信息录入、学生成绩信息修改、学生成绩信息

2、显示、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。总体设计2.1 系统功能分析:系统通过调用函数来实现学生成绩信息录入、学生成绩信息修改、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。Insert()函数用于录入学生成绩及信息;Update1()函数用来修改学生成绩及信息;Show()函数用于显示所有已有的记录;Delete()函数用来删除学生成绩及信息;Search1()及Search2()函数用来查询及信息;Save()函数用于将输入的信息存入文件内;主函数main()用于调用这些函数。 2.2系统功能模块划分与设计:本系统定义了Score类、Subject类、S

3、tudent类以及Class类这四个类,定义了Insert()、Update1()、Show()、Save()、Delete()、Search1()及Search2()等函数来实现系统所需功能。2.3 系统功能模块图:详细设计3.1 分数类的设计:该类定义了一个整型变量用来存放分数,定义了设置份总数和显示分数的函数。Score-score:int+Score(s:int=0)+set1():void+show1()图 3.13.2 科目类的设计:该类定义了一个Score类类型的变量,定义了一个字符数组用来存放科目名称,定义了设置和显示私有成员的函数。Subject-subject20:char

4、-sc:Score+Subject()+set2():void+show2():void图 3.23.3 学生类的设计:该类定义了一个Subject类类型的数组,一个字符型数组和一个字符变量,两个整型变量以及设置和显示私有成员的函数。Student-name20:char-num:int-S:char-n:int-p18:Subject+Student()+set3():void+show3():void+getNU1():int+getNA1():char *图 3.33.4 班级类的设计:该类定义了一个Student类类型的变量、字符型数组、整型及设置和显示私有成员的函数等。Class-n

5、ame20:char-num2:int+Class()+getNU():int+set4():void+show4():void图 3.43.5 各个类的关系描述:Subject-subject20:char+Subject()+set2():void+show2():void 1.*Score-score:int+Score(s:int=0)+set1():void+show1()-sc 1图Student-name20:char-num:int-S:char-n:int+Student()+set3():void+show3():void+getNU1():int+getNA1():cha

6、r *Subject-subject20:char+Subject()+set2():void+show2():void 1.* -p18 1图Class-name20:char-num2:int+Class()+getNU():int+set4():void+show4():voidStudent-name20:char-num:int-S:char-n:int+Student()+set3():void+show3():void+getNU1():int+getNA1():char * 1.* -stu 1图4系统调试5结果分析程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建

7、立了较为清晰的类层次,也利用了面向对象的方法以及C+的编程思想来完成系统的设计,做到了用文件存储学生成绩信息、从文件中读取学生成绩信息、修改信息、查询信息、删除信息显示文件中存储的信息等要求。而且界面简洁,容易操作。但是程序太长,不够简练,导致出现错误很难发现和修改。6总结首先,接到设计题目之后,在对本题目进行分析的时候,我懂得了一个很重要的道理,那就是说一个程序的产生需要一个对题目要求有一个正确全面的分析。其次,就该考虑程序算法的问题了,一个好的算法是一个好程序的灵魂,也决定了一个程序的质量。两个星期的课设虽然有些疲劳和困倦,但带给我很多的收获。C+已经学了一个学期了,有许多知识都存在似懂非

8、懂的现象,这种现象通过实际的上机操作,已经减少了许多。对这些知识也有了更深的理解和很好的掌握。也有很多理论上说得过去的代码,但到了实际操作,却是行不通的。这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。只能避过这些方法,换方法实现。在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。于是在课程设计的时候,我花了四天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。我觉得写程序,应该先找到该程序中的核心地方,用多种方

9、法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。这次的课程设计,真是让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c+是多么的重要。在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。以后还会有很多的课程设计,一

10、定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。7.程序代码#include#include#includeusing namespace std;int M=100;static int M2=0;class Score /分数类private:int score;public:Score(int s=0)score=s;void set1()cout请输入分数:score;void show1()cout: scoreendl;class Subject /科目类private:Score sc;char subject20;public:Subj

11、ect()for(int i=0;i20;i+)subjecti=0;void set2()cout请输入科目名称:subject;sc.set1();void show2()coutsubject;sc.show1();class Student /学生类private:Subject p18; char name20;int num;char S;int n;public:Student()for(int i=0;i20;i+)namei=0;num=0;S=0;void set3();void show3();int getNU1()return num;char *getNA1()re

12、turn name;void Student:show3() /学生类显示函数int i;cout姓名:namet性别:St学号:numendl;for(i=0;i8;i+)p1i.show2();void Student:set3() /学生类修改函数int i;coutname;coutnum;coutS;cout请输入每门课程的名字及分数.endl;for(i=0;i8;i+)p1i.set2();class Class /班级类private:Student stu;char name220;int num2;public:Class()for(int i=0;i20;i+)name2

13、i=0;num2=0;int getNU()return stu.getNU1();string getNA()return stu.getNA1();void set4()coutname2;coutnum2;stu.set3();void show4()cout班级:name2t班号:tnum2;stu.show3();friend void Search1(Class c1,int count1); friend void Search2(Class c2,int count2);friend void Update1(Class c3,int count_d);friend void

14、Delete(Class c4,int *count_c);friend void Insert(Class c5,int &count_a);b100;void Save(Class c6,int count) /记录存入文件函数fstream file(class.dat,ios:out|ios:binary);if(!file)coutfile count open.endl;abort();for(int i=0;icount;i+)file.write(reinterpret_cast(&c6i),sizeof(c6i);file.close();void Show(Class c7

15、) /显示记录函数int i=0;for(i=0;c7i.getNU()!=0;i+)c7i.show4();void Insert(Class c5,int &count_a) /信息录入函数int i,in_number,n=0;if(count_a=M)cout空间已满!;return;cout请输入学生的学号:in_number;for(i=0;icount_a;i+)if(c5i.getNU()=in_number)cout已有相同的学号,请重新输入!endl;break;while(c5i.getNU()=in_number);if(in_number1)cout输入错误,请重新输

16、入大于零的整数!endl;while(in_number=0);i=count_a;c5i.set4();count_a+;coutendlendl;n=n+1;if(n!=0)cout学生成绩录入成功!endl;void Search1(Class c1,int count1) /按学号查询信息函数int i,number,flag=1,n=0;cout请输入所要查询的学生的学号:number;if(number=0)cout输入错误,请重新输入大于零的整数!endl;while(number=0);for(i=0;icount1&flag;i+)if(c1i.getNU()=number)

17、c1i.show4();flag=0;n=n+1;if(n=0)cout没有查询到该学生的资料!endl;void Search2(Class c2,int count2) /按姓名查询信息函数int i,n=0;char nam20;cout请输入所要查询的学生的姓名:nam;for(i=0;icount2;i+)if(c2i.getNA()=nam)c2i.show4();n=n+1;if(n=0)cout没有查询到该学生的资料!endl;void Update1(Class c3,int count_d) /信息修改函数int i,n=0,flag=1,m;char nam20;cout

18、请输入所要修改的学生的姓名:nam;for(i=0;icount_d&flag;i+)if(c3i.getNA()=nam)cout请输入所要修改的学生的学号:m;for(i=0;icount_d&flag;i+)if(c3i.getNU()=m)c3i.set4();flag=0;n=n+1;break;if(n!=0)cout修改成功!endl;if(n=0)cout没有查询到该学生的资料!endl;void Delete(Class c4) /信息删除函数fstream file(class.dat,ios_base:in|ios_base:out|ios_base:binary);in

19、t i=0;for(i=0;i100;i+)file.read(reinterpret_cast(&bi),sizeof(bi);for(i=0;bi.getNU()!=0;i+);M2=i;Class c9;int n=0,number,flag=1; cout请输入要要进行操作的学生的学号:number; for(i=0;iM2&flag;i+) if(c4i.getNU()=number)for(i;iM2&flag;i+)c4i=c4i+1;flag=0;(M2)-;n=1;Save(b,M2);break;if(n=0)cout没有查询到可以删除的资料!endl;if(n!=0)co

20、ut资料删除成功!endl;int main()char a1;fstream file(class.dat,ios_base:in|ios_base:out|ios_base:binary);couttt*欢迎进入学生成绩管理系统*endlendl;docout请选择功能:endl;coutttta.学生成绩查询endl;couttttb.学生成绩录入endl;couttttc.学生成绩删除endl;couttttd.学生成绩修改endl;coutttte.显示全部记录endl;couttttf.记录存入文件endl;couttttg.退出系统endl;int i=0;for(i=0;i10

21、0;i+)file.read(reinterpret_cast(&bi),sizeof(bi);for(i=0;bi.getNU()!=0;i+);M2=i;cina1;switch(a1)case a:coutttt请继续选择:endl;couttttt1.按学号查询信息endl;couttttt2.按姓名查询信息x;switch(x)case 1:Search1(b,M2);break;case 2:Search2(b,M2);break;default:cout选择错误,请重新选择!endl;break;case b:Insert(b,M2);break;case c:file.close();Delete(b);break;case d:Update1(b,M2);break;case e:Show(b);break;case f:file.close();Save(b,M2);cout保存文件成功!endl;fstream file(class.dat,ios_base:in|ios_base:out|ios_base:binary);break;case g:file.close();break;default:cout选择错误,请重新选择!endl;while(a1!=g);return 0;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!