




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计课程设计面向对象程序设计课程设计学生成绩管理系统 院 系: 计算机科学技术学院 班 级: * 姓 名: * 合 作 者: * 指导教师: * 2010 年 6 月 25 日32面向对象程序设计课程设计任务书一、题目: 学生成绩管理系统二、设计要求(1)张阳(组长)、杨玉瑛和钟晓亮组成设计小组。(2)小组成员分工协作完成,要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。(3)查阅相关资料,自学具体课题中涉及到的新知识。(4)根据实现的功能,划分出合理的对象类,明确对象类间的关系。为每个对象类设计正确的属性和方法,为每个方法设计合理的方法体。(5)编程简练,程序功能齐全,能正确运行。(6)课题完成后提交课程设计报告,格式规范,内容详实。其主要内容包括:1-封皮、2-课程设计任务书,3-指导教师评语与成绩、4-目录、5-需求分析、6-概要设计、7-详细设计(含主要代码)、8-调试分析与测试结果、9-用户使用说明、10-附录或参考资料。报告用A4纸打印,中文字体为宋体,西文字体用Time New Roma,小四号字,行距采用“固定值”18磅,首行缩进2字符。(7)课程设计报告内容的说明:需求分析-分析课题需要实现的功能以及要用到的知识点,分析课题涉及的对象间的关系;概要设计-根据实现的功能,划分出合理的对象类,明确对象类间的关系;为每个对象类设计正确的属性和方法,为每个方法设计合理的方法体;详细设计-具体的类、对象和功能的实现以及主要程序代码;调试分析与测试结果-用多组测试用例调试分析系统的正确性、完备性等各项性能指标,写出测试结果;用户使用说明-编写该系统的使用说明书;附录或参考资料-完整的程序代码以及查阅资料的参考文献。三、课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。四、课程设计工作计划2010年6月12日,指导教师讲课,学生根据题目准备资料;2010年6月13日、17日、18日,设计小组进行总体方案设计和任务分工;每人完成自己承担的程序模块并通过独立编译;2010年6月21日2010年6月24日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;同时撰写报告。2010年6月25日,验收;提交课程设计报告。指导教师签章: 教研室主任签章 面向对象程学设计课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 2010年 6 月 28 日目 录第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章用户使用说明12参考文献13附 录14第1章 需求分析1.1 性能需求在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。显然,靠手工进行管理这种管理方式已不能适应时代的发展,学校的需求。今天这种传统的管理方法必然会被计算机为基础的信息管理系统所代替。同时这种传统的管理方式反映出很多问题:第一,当要查询某个同学或某个班级的成绩情况极不方便;第二,每次考试省校把成绩发到学校,老师都花大量时间才能把成绩转发到各个班级,同时在登记成绩时,考试分数登记的正确率也较难保证;第三,一年又一年的成绩单不断累加,需要有一定的空间来存储,这样管理起来需要投入大量的人力、物力和财力;第四,成绩的可靠性、保密性很低;第五、现在学校虽已用计算机进行部分成绩的管理,但管理工作并不完善,未形成系统的管理,有很大的局限性。基于以上情况,开发一个学生成绩管理系统是十分必要的。开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高了学校的办学效益和现代化水平。为教务处的教师在最短的时间把学生的成绩核算出来,提高教务处的工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。学生成绩管理是学校管理中异常重要的一个环节,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,鉴于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。运用学生成绩管理系统可以减轻学校教务管理人员的工作量,减少开支,提高工作效率与准确率,能够合理安排时间,并尽快发布学生的考试成绩。1.2 功能需求我们设计的一个方便学校使用的学生成绩管理系统,这个系统的功能比较完善。使用类内函数和主函数中的switch语句实现多分支选择结构,进而实现该系统的各项功能。该系统能实现七项功能:1.录入成绩、2.删除记录、3.修改记录、4.记录排序(1按学号排序、2按总分排序、3按平均分排序)、5.查看所有记录、6.查找信息(按学号查找、按姓名查找)、7.删除全部记录。设计本次实验所用到的知识点有:类和对象文件、指针、数组、友元函数,构造函数,动态内存分配,FOR循环、switch语句、if语句、do while()语句等。第2章 概要设计2.1 功能模块设计学生成绩管理系统主控模块系统维护修改记录删除记录查询模块按总成绩查询按姓名查询 排序模块按学号查排名按总分查排名按平均分查排名查看所有数据录入成绩删除所有数据 学生成绩管理通过主控模块进入系统并提示相应功能供用户选择。用户选择后进入到各个功能模块,实现成绩录入、修改、删除、查询等功能,在排序时也提供用户学号、总分、平均分等选项分别按逆序、升序排列,也可查看、删除全部数据。基于此,提供用户以上功能。2.2 类的分析与设计本系统中定义了一个stu类,在stu类中的构造函数是来实现当类生成对象时用于对数据的初始化,其他成员函数分别实现录入、删除、排序、查找、排序等功能。本系统的特点在于定义了几个类的指针,实现内存的动态分配,这点非常关键,同时通过它进行动态创建列表,进一步实现排序,查询的功能。stu类中的数学,英语,计算机成绩为类的私有成员。程序运行时,进入学生成绩管理系统的选择操作界面,应先选择输入数据操作,向文件中输入学生数据和成绩,再根据提示进行其它的操作。在输入过程中输入的数据分别为姓名,数学成绩,语文成绩和英语成绩这样有助于其它操作的进行,对于菜单大部分我选择使用swich语句来完成,还有用到一些if语句的嵌套。当继续执行以下操作时选择任意键,否则0。最后执行0退出界面。第3章 详细设计3.1 数据录入功能模块设计设计思想:我设计的数据录入模块,是根据学生类来动态创建对象,并通过键盘输入来实现对学生成绩的初始化。在输入完一个学生的成绩信息之后,系统会提示使用者是否继续录入,以此来达到数据录入的功能。详细功能:数据录入模块的主要功能就是通过键盘输入学生的学号,姓名,数学,英语,计算机成绩。数据录入模块是实现其他模块的基础,因此在这个模块里,我加入了对各种信息的判断识别,以求录入的数据合理,正确。这个模块的功能其实非常简单,模块中要考虑到多种信息的判断,因此,设计功能上要求我要尽可能的考虑周全,另外为了系统更加容易理解,在出错之后,模块会自动返回上一层,并带有相应的文字提示,可以说,录入模块为之后各项功能的正常运行提供了可靠的保证。以下是数据录入模块的主要代码:void student:cin_app()student *p=curnode;bool b=0;string Number;string Name;double Computer;double ENglish;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;elsescore_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;coutendl;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;/当i=1是代表没有找到数据if(i)coutendl;cout 没有匹配的数据 endl;coutendl;elsecoutendl;curnode=p;cout以上是本次查找的结果!endl;cout ;system(pause);以下是查找模块的流程图:查询输入要查的学生姓名判断是否有此学生存在显示学生输出学生相关信息不存在您查询的学生不存在想继续录入吗 y/n输入数据是否匹配指令错误,请重输输入c开始返回第4章 调试分析与测试结果4.1 调试分析 图4.1.1 错误提示如图4.1.1,这是我们在测试时发生了指针的一些相关错误,起初定义了一个派生类来实现计算成绩和平均值的功能,但在调用指针时,便无法访问基类对象的相关数据。由于学生成绩是类的私有成员。因此,我们在基类中定义了定义了类的指针,解决了这个问题。运行测试时,头文件也曾出现问题,工程中没有包含“stdfx.h”的头文件的问题,之后我在工程中重新加入了相关头文件,程序最后运行成功。4.2 测试结果图4.2.1 系统主菜单如图4.2.1,这是程序运行成功之后的系统界面的主菜单。图4.2.2 数据录入如图4.2.2,这是数据成功录入的界面。如图4.2.3 排序列表如图4.2.3,这是系统自动排序生成的列表,能够一目了然的观察到排名结果。第5章 用户使用说明此系统是学生成绩管理系统,程序运行时,进入学生成绩管理系统的选择操作界面,应先选择输入数据操作,向文件中输入足够的学生数据,再进行其它的操作 。首先应选1选项,是数据录入,只有先选1才能进行以下操作,之后你就可以按照后面的功能进行选择了。每完成一项功能之后,系统便提示任意键继,您便会返回主界面进行相信的功能选择。按0键可退出学生成绩管理系统。使用学生成绩管理系统能够大大减少运算量,最后谢谢您的使用。参考文献1 郑莉,董渊,张润丰,C+语言程序设计题解与上机指导(第二版),北京,清华大学出版社,2003年12月。2中南论坛网。附 录源程序代码:#include#include#include#includeusing namespace std;class studentprivate: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 grade_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();/成绩范围检测函数,当输入成绩不在0到100之间时提示重新输入student: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+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,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 !表中内容全部清空,现已是一个空表! 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();coutleftsetw(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 ENglish;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;elsescore_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;coutendl;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;/当i=1是代表没有找到数据if(i)coutendl;cout 没有匹配的数据 endl;coutendl;elsecoutendl;curnode=p;cout以上是本次查找的结果!endl;coutnext)coutendl;cout!这是一个空表!endl;coutendl;curnode=p;coutnumber=str;break;case 2: b=curnode-name=str;break;default: return;if(b)i=0;pw-next=curnode-next;delete curnode;curnode=pw-next;elsepw=curnode;curnode=curnode-next;/当i=1是代表没有找到数据if(i)coutendl;cout没有匹配的数据endl;coutendl;elsecoutendl;cout 数据删除成功 endl;coutnext)curnode=curnode-next;coutnext=NULL)coutendl;cout!这是一个空表不能排序!endl;coutendl;coutnext-next=NULL)coutendl;cout!只有一条记录不用排序!endl;coutendl;coutnext; q=s; p=q-next; while(s!=NULL) while(p!=NULL) switch(n)case 1:if(m=1)while(s-numbernumber) q-next=p-next; r-next=p; p-next=s; s=p; p=q-next; if(p=NULL)break; elsewhile(s-numberp-number) q-next=p-next; r-next=p; p-next=s; s=p; p=q-next; if(p=NULL)break; break;case 2:if(m=1)while(s-sumsum) q-next=p-next; r-next=p; p-next=s; s=p; p=q-next; if(p=NULL)break; elsewhile(s-sump
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版四年级数学上册第五单元平行四边形和梯形学业质量测评卷(含答案)
- 第六单元提优测试卷(含答案) 五年级数学上册(人教版)
- 农业市场风险预测-洞察及研究
- 2025年高校教师资格证之高等教育心理学考试题库附答案ab卷
- 社区党务笔试题及答案
- 中心厨房安全管理办法
- 警械培训机构管理办法
- 产品品牌评估管理办法
- 专项小组工作管理办法
- 中央外事接待管理办法
- (2025秋新修订)人教版三年级数学上册全册教案(教学设计)
- 一例股骨颈骨折个案护理
- 【经典】高一英语完形填空专题练习及答案共20篇
- MySQL数据库PPT完整全套教学课件
- 顶管施工方案(泥水平衡法)
- 机器视觉课件
- 客舱广播词的基本知识
- 砌筑砂浆试块强度统计、评定记录表
- 重症监护室环境清洁消毒PPT
- 检伤分类-课件
- 金坛区苏科版五年级上册劳动《10木笔筒》课件
评论
0/150
提交评论