《[电脑基础知识]C学生管理系统111.doc》由会员分享,可在线阅读,更多相关《[电脑基础知识]C学生管理系统111.doc(35页珍藏版)》请在三一办公上搜索。
1、 面向对象程序设计课程设计 题目名称: 学生成绩管理系 专业年级: 网络工程11级 小组成员: 张译丹 汪娟 邹尚红 指导教师: 张淑英 二一二 年 七 月 六 日30面向对象程序设计课程设计任务书一、题目: 学生成绩管理系统二、设计要求(1)汪娟,张译丹,邹尚红组成设计小组。(2)小组成员分工协作完成,要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。(3)查阅相关资料,自学具体课题中涉及到的新知识。(4)根据实现的功能,划分出合理的对象类,明确对象类间的关系。为每个对象类设计正确的属性和方法,为每个方法设计合理的方法体。(5)编程简练,程序功能齐全,能正确运行。(6)课题完成
2、后提交课程设计报告,格式规范,内容详实。其主要内容包括:1-封皮、2-课程设计任务书,3-指导教师评语与成绩、4-目录、5-需求分析、6-概要设计、7-详细设计(含主要代码)、8-调试分析与测试结果、9-用户使用说明、10-附录或参考资料。报告用A4纸打印,中文字体为宋体,西文字体用Time New Roma,小四号字,行距采用“固定值”18磅,首行缩进2字符。(7)课程设计报告内容的说明:需求分析-分析课题需要实现的功能以及要用到的知识点,分析课题涉及的对象间的关系;概要设计-根据实现的功能,划分出合理的对象类,明确对象类间的关系;为每个对象类设计正确的属性和方法,为每个方法设计合理的方法体
3、;详细设计-具体的类、对象和功能的实现以及主要程序代码;调试分析与测试结果-用多组测试用例调试分析系统的正确性、完备性等各项性能指标,写出测试结果;用户使用说明-编写该系统的使用说明书;附录或参考资料-完整的程序代码以及查阅资料的参考文献。三、课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。四、课程设计工作计划2012年6月23日,指导教师讲课,学生根据题目准备资料;2012年6月24日、25日、26日,设计小组进行总体方案设计和任务分工;每人完成自己承担的程序模块并通过独立编译;2012年6月26日2012年7月4日,将各模块集成为一个完
4、整的系统,并录入足够的数据进行调试运行;同时撰写报告。2011年7月6日,验收;提交课程设计报告。指导教师签章: 教研室主任签章 面向对象程学设计课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 2012年 7 月 6 日目 录第1章需求分析11.1 性能需求11.2 功能需求1第2章概要设计22.1 功能模块设计22.2 类的分析与设计2第3章详细设计33.1 数据录入功能模块设计3以下是数据录入模块的主要代码:33.2查找功能模块设计6第4章调试分析与测试结果94.1 调试分析94.2测试结果10第5章用户
5、使用说明12参考文献13附 录14第1章 需求分析1.1 性能需求在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。显然,靠手工进行管理这种管理方式已不能适应时代的发展,学校的需求。今天这种传统的管理方法必然会被计算机为基础的信息管理系统所代替。同时这种传统的管理方式反映出很多问题:第一,当要查询某个同学或某个班级的成绩情况极不方便;第二,每次考试省校把成绩发到学
6、校,老师都花大量时间才能把成绩转发到各个班级,同时在登记成绩时,考试分数登记的正确率也较难保证;第三,一年又一年的成绩单不断累加,需要有一定的空间来存储,这样管理起来需要投入大量的人力、物力和财力;第四,成绩的可靠性、保密性很低;第五、现在学校虽已用计算机进行部分成绩的管理,但管理工作并不完善,未形成系统的管理,有很大的局限性。基于以上情况,开发一个学生成绩管理系统是十分必要的。开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高了学校的办学效益和现代化水平。为教务处的教师在最短的时间把学生的成绩核算出来,提高教务处的工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化
7、。学生成绩管理是学校管理中异常重要的一个环节,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,鉴于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。运用学生成绩管理系统可以减轻学校教务管理人员的工作量,减少开支,提高工作效率与准确率,能够合理安排时间,并尽快发布学生的考试成绩。1.2 功能需求我们设计的一个方便学校使用的学生成绩管理系统,这个系统的功能比较完善。使用类内函数和主函数中的switch语句实现多分支选择结构,进而实现该系统的各项功能。该系统能实现七项功能:1.录入成绩、2.删除记录、3.修改记录、4.
8、记录排序(1按学号排序、2按总分排序、3按平均分排序)、5.查看所有记录、6.查找信息(按学号查找、按姓名查找)、7.删除全部记录。设计本次实验所用到的知识点有:类和对象文件、指针、数组、友元函数,构造函数,动态内存分配,FOR循环、switch语句、if语句、do while()语句等。第2章 概要设计2.1 功能模块设计学生成绩管理系统主控模块系统维护修改记录删除记录查询模块按总成绩查询按姓名查询 排序模块按学号查排名按总分查排名按平均分查排名查看所有数据录入成绩删除所有数据 学生成绩管理通过主控模块进入系统并提示相应功能供用户选择。用户选择后进入到各个功能模块,实现成绩录入、修改、删除、
9、查询等功能,在排序时也提供用户学号、总分、平均分等选项分别按逆序、升序排列,也可查看、删除全部数据。基于此,提供用户以上功能。2.2 类的分析与设计本系统中定义了一个stu类,在stu类中的构造函数是来实现当类生成对象时用于对数据的初始化,其他成员函数分别实现录入、删除、排序、查找、排序等功能。本系统的特点在于定义了几个类的指针,实现内存的动态分配,这点非常关键,同时通过它进行动态创建列表,进一步实现排序,查询的功能。stu类中的数学,英语,计算机成绩为类的私有成员。程序运行时,进入学生成绩管理系统的选择操作界面,应先选择输入数据操作,向文件中输入学生数据和成绩,再根据提示进行其它的操作。在输
10、入过程中输入的数据分别为姓名,数学成绩,语文成绩和英语成绩这样有助于其它操作的进行,对于菜单大部分我选择使用swich语句来完成,还有用到一些if语句的嵌套。当继续执行以下操作时选择任意键,否则0。最后执行0退出界面。第3章 详细设计3.1 数据录入功能模块设计设计思想:我们设计的数据录入模块,是根据学生类来动态创建对象,并通过键盘输入来实现对学生成绩的初始化。在输入完一个学生的成绩信息之后,系统会提示使用者是否继续录入,以此来达到数据录入的功能。详细功能:数据录入模块的主要功能就是通过键盘输入学生的学号,姓名,数学,英语,计算机成绩。数据录入模块是实现其他模块的基础,因此在这个模块里,我加入
11、了对各种信息的判断识别,以求录入的数据合理,正确。这个模块的功能其实非常简单,模块中要考虑到多种信息的判断,因此,设计功能上要求我要尽可能的考虑周全,另外为了系统更加容易理解,在出错之后,模块会自动返回上一层,并带有相应的文字提示,可以说,录入模块为之后各项功能的正常运行提供了可靠的保证。以下是数据录入模块的主要代码:void student:cin_app()student *p=curnode;bool b=0;string Number;string Name;double Computer;double ENglish;double Math;while(1)coutNumber;cu
12、rnode=head-next;while(curnode!=NULL)b=(Number=curnode-number);curnode=curnode-next;if(!b)break;elsecoutendl;cout出现了相同的学号,请重新输入endl;coutendl;curnode=p;coutName;while(1)coutComputer;while(cin.fail()err_char();coutComputer;if(Computer=0&Computer=100)break;elsescore_err();while(1)coutENglish;while(cin.f
13、ail()err_char();coutENglish;if(ENglish=0&ENglish=100)break;elsescore_err();while(1)coutMath;while(cin.fail()err_char();coutMath;if(Math=0&Mathapp_score(Number,Name,Computer,ENglish,Math);coutendl;cout!已添加一条记录!endl;coutendl;coutnext)coutendl;cout!这是一个空表!endl;coutendl;curnode=p;cout ;system(pause);ret
14、urn;coutendl;cout 学号 姓名 计算机 英语 数学 总分 平均分 等级endl;coutnumber=str;break;case 2: b=curnode-name=str;break;default: return;if(b)i=0;coutleftsetw(10)number;coutleftsetw(10)name;coutleftsetw(6)computer;coutleftsetw(6)English;coutleftsetw(6)math;curnode-sum_score();coutleftsetw(8)sum;curnode-ave_score();cou
15、tleftsetw(8)ave;curnode-grade_score();coutleftsetw(4)gradeendl;coutnext;/当i=1是代表没有找到数据if(i)coutendl;cout 没有匹配的数据 endl;coutendl;elsecoutendl;curnode=p;cout以上是本次查找的结果!endl;cout ;system(pause);以下是查找模块的流程图:查询输入要查的学生姓名判断是否有此学生存在显示学生输出学生相关信息不存在您查询的学生不存在想继续录入吗 y/n输入数据是否匹配指令错误,请重输输入c开始返回第4章 调试分析与测试结果4.1 调试分
16、析 图4.1.1 错误提示如图4.1.1,这是我们在测试时发生了指针的一些相关错误,起初定义了一个派生类来实现计算成绩和平均值的功能,但在调用指针时,便无法访问基类对象的相关数据。由于学生成绩是类的私有成员。因此,我们在基类中定义了定义了类的指针,解决了这个问题。运行测试时,头文件也曾出现问题,工程中没有包含“stdfx.h”的头文件的问题,之后我在工程中重新加入了相关头文件,程序最后运行成功。4.2 测试结果这是我们的动画界面,亮点是使用了goto语句,进行循环,输入继续动画界面会继续闪动,输入登录会进去管理系统主界面,输入其他字符,会输出指令错误,直至输入指令正确,如图所示图4.2.1 是
17、我们的学生成绩管理系统主菜单的界面图4.2.1 系统主菜单如图4.2.1,这是程序运行成功之后的系统界面的主菜单。图4.2.2 数据录入如图4.2.2,这是数据成功录入的界面。如图4.2.3 排序列表如图4.2.3,这是系统自动排序生成的列表,能够一目了然的观察到排名结果。第5章 用户使用说明此系统是学生成绩管理系统,程序运行时,进入学生成绩管理系统的选择操作界面,应先选择输入数据操作,向文件中输入足够的学生数据,再进行其它的操作 。首先应选1选项,是数据录入,只有先选1才能进行以下操作,之后你就可以按照后面的功能进行选择了。每完成一项功能之后,系统便提示任意键继,您便会返回主界面进行相信的功
18、能选择。按0键可退出学生成绩管理系统。使用学生成绩管理系统能够大大减少运算量,最后谢谢您的使用。参考文献1 谭浩强C+面向对象程序设计. 北京:清华大学出版社, 2006.12 谭浩强C+面向对象程序设计题解与上机指导. 北京:清华大学出版社, 2006.5 3 曹静C+面向对象程序设计. 北京:中国水利水电出版社, 2006.8 4 郑莉,董渊,张瑞丰C+语言程序设计(原书第3版). 北京:清华大学出版社, 2006.1 5 王萍,冯建华C+面向对象程序设计. 北京:清华大学出版社, 2006.3 6 朱战立,张玉祥C+面向对象程序设计. 北京:人民邮电出版社, 2006.4 7 刘斌. 面
19、向对象程序设计visual C+. 北京:清华大学出版社, 2006.88 王燕. 面向对象的理论与C+实践. 清华大学出版社, 2007.49 郑莉,傅仕星,张瑞丰. C+语言程序设计学生用书(原书第3版). 北京:清华大学出版社, 2004.610 普悠玛. VB.NET程序设计示例导学M. 北京:科海电子出版社, 2004.4 附 录源程序代码:#include#include #include #include #include #include#include #include #include using namespace std;int amain();class studen
20、tprivate:string number;string name;double computer;double English;double math;double sum;double ave;char grade;student *head;student *curnode;student *next;public:student();student(string ,string ,double ,double ,double ,double =0.0,double =0.0,char =NULL);void sum_score();void ave_score();void grad
21、e_score();void cin_app();void app_score(string ,string ,double ,double ,double);/动态的建立节点void del_score();/删除全部节点void displist();/输出节点中的全部数据void lookup(int ,string );void del_score(int ,string );void compositor(int ,int );void rework(int ,string );/student类的实现void err_char();void score_err();student:
22、student():next(NULL)head=curnode=this;student:student(string Number,string Name,double Computer,double ENglish,double Math,double Sum,double Ave,char Grade):next(NULL)number=Number;name=Name;computer=Computer;English=ENglish;math=Math;sum=Sum;ave=Ave;grade=Grade;void student:sum_score()sum=computer+
23、English+math;void student:ave_score()ave=(computer+English+math)/3.0;void student:grade_score()int i;i=ave;switch(i/10)case 10: grade=A; break;case 9: grade=A; break;case 8: grade=B; break;case 7: grade=C; break;case 6: grade=D; break;default: grade=E;void student:app_score(string Number,string Name
24、,double Computer,double ENglish,double Math)/动态建立节点curnode-next=new student(Number,Name,Computer,ENglish,Math);curnode=curnode-next;void student:del_score()/删除表中的全部数据student *p;curnode=head-next;while(curnode!=NULL)p=curnode-next;delete curnode;curnode=p;head-next=NULL;curnode=head;coutendl;cout !表中
25、内容全部清空,现已是一个空表! endl;coutendl;coutnext=NULL)coutendl;cout !这是一个空表! endl;coutendl;coutnext;coutendl;cout 学号 姓名 计算机 英语 数学 总分 平均分 等级endl;coutendl;while(curnode!=NULL)coutleftsetw(10)number;coutleftsetw(10)name;coutleftsetw(6)computer;coutleftsetw(6)English;coutleftsetw(6)math;curnode-sum_score();coutle
26、ftsetw(8)sum;curnode-ave_score();coutleftsetw(8)ave;curnode-grade_score();coutleftsetw(4)gradenext!=NULL)coutendl;elsecoutnext;curnode=pw;coutendl;cout!表中内容输出完毕!endl;coutendl;cout ;system(pause);/输入数据void student:cin_app()student *p=curnode;bool b=0;string Number;string Name;double Computer;double E
27、Nglish;double Math;while(1)coutNumber;curnode=head-next;while(curnode!=NULL)b=(Number=curnode-number);curnode=curnode-next;if(!b)break;elsecoutendl;cout出现了相同的学号,请重新输入endl;coutendl;curnode=p;coutName;while(1)coutComputer;while(cin.fail()err_char();coutComputer;if(Computer=0&Computer=100)break;elsesco
28、re_err();while(1)coutENglish;while(cin.fail()err_char();coutENglish;if(ENglish=0&ENglish=100)break;elsescore_err();while(1)coutMath;while(cin.fail()err_char();coutMath;if(Math=0&Mathapp_score(Number,Name,Computer,ENglish,Math);coutendl;cout!已添加一条记录!endl;coutendl;coutnext)coutendl;cout!这是一个空表!endl;co
29、utendl;curnode=p;cout ;system(pause);return;coutendl;cout 学号 姓名 计算机 英语 数学 总分 平均分 等级endl;coutnumber=str;break;case 2: b=curnode-name=str;break;default: return;if(b)i=0;coutleftsetw(10)number;coutleftsetw(10)name;coutleftsetw(6)computer;coutleftsetw(6)English;coutleftsetw(6)math;curnode-sum_score();coutleftsetw(8)sum;curnode-ave_score();coutleftsetw(8)ave;curnode-grade_score();coutleftsetw(4)gradeendl;coutnext;if(i)coutendl;cout 没有匹配的数据 endl;coutendl;elsecoutendl;curnode=p;cout以上
链接地址:https://www.31ppt.com/p-4558855.html