




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计课程设计面向对象程序设计课程设计学生成绩管理系统 院 系: 班 级: 姓 名: 合 作 者: 指导教师: 2010 年 6 月 25 日36面向对象程序设计课程设计任务书一、题目: 学生成绩管理系统二、设计要求(1)XXX(组长)、XXX(组员)和XXX(组员)组成设计小组。(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类的分析与设计3第3章详细设计43.1查找数据功能模块设计43.1.1详细功能描述43.1.2设计思想:43.1.3主要代码:43.1.4程序流程图:63.2修改数据功能模块设计73.2.1详细功能描述:73.2.2设计思想:73.2.3主要代码:73.2.4程序流程图:9第4章调试分析与测试结果114.1 调试分析114.2 测试结果114.2.1程序开始界面114.2.2查找信息界面124.2.3根据学号查找信息界面124.2.4根据姓名查找信息界面134.2.5修改记录界面134.2.6根据学号修改记录界面144.2.7根据姓名修改记录界面14第5章用户使用说明15参考文献16附 录17第1章 需求分析1.1 性能需求程序开发环境:Microsoft Visual C+ 6.01.2 功能需求我们组研究的是适用于高校的学生成绩管理系统。该系统实现的功能:1. 录入成绩2. 删除记录3. 修改记录4. 记录排序5. 查看记录6. 查找信息7. 删除全部8. 退出系统创建类: student 学生类成员函数:sum_score( ) 总分函数 ave_score( ) 平均分函数 grade_score( ) 成绩等级函数 app_score( ) 动态建立节点函数del_score( ) 删除表中的全部数据函数del_score(int,string ) 删除表中指定数据函数 displist( ) 输出表中的全部数据函数 cin_app( ) 输入数据函数 lookup(int,string ) 查找函数compositor(int,int ) 排序函数rework( int,string) 修改函数程序涉及到的知道点:类 构造函数 指针 switch语句 while语句 动态内存分配 if语句 第2章 概要设计2.1功能模块设计学生成绩管理系统录入成绩查找信息删除记录修改记录查看记录记录排序删除全部退出系统按学号排序按总分排序按平均分排序学号姓名学号姓名按降序排序按升序排序一个方便学校使用的学生成绩管理系统,这个系统的功能比较完善。使用类内函数和主函数中的switch语句实现多分支选择结构,进而实现该系统的各项功能。该系统能实现8项功能。设计本次实验所用到的知识点有:类、指针、数组,构造函数,动态内存分配,switch语句、if语句、while()语句等。2.2类的分析与设计对于student类中的成员函数是实现求学生的总成绩和学生的平均成绩,还有计算出每个学生的成绩等级的。student类中的构造函数是来实现当类生成对象时用于对数据的初始化。类中有很多成员函数,各自都实行着自己的作用,比如:sum_score()这个成员函数是实现计算学生的总成绩这个作用的;ave_score()这个函数是实现计算学生平均成绩这个作用的;grade_score()这个函数是实现求出学生由成绩排出来的等级这个作用的等等。还有类中string number;string name;double computer;double English;double math;double sum;double ave;char grade;为私有成员,这些都是通过成员函数实现对私有数据进行访问的。第3章 详细设计3.1 查找数据功能模块设计3.1.1详细功能描述该部分是用来查找已经输入过的学生的成绩以及成绩等级信息。3.1.2设计思想:查找的方法分为两种:通过学号查找 通过姓名查找。如果输入的不是以上的关键字的话,屏幕上就会出现“没有匹配的数据”这几个字,提醒用户输入出现了错误,可重新输入或如果在还没有录入数据之前进行查找数据的话,就会出现“这是一个空表”这几个字。该部分通过if语句和switch语句实现其功能。3.1.3主要代码:void student:lookup(int n,string str) /查找函数的实现student *p=curnode;bool b;int i=1;if(!(curnode=head-next)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)Y输出 !这是一个空表!画出表格首行学号、姓名、计算机、英语、数学、总分、平均分、等级Ncurnode!=NULLY输出学号、姓名、计算机、英语、数学、总分、平均分、等级输出 “没有匹配的数据”3.2修改数据功能模块设计3.2.1详细功能描述:该部分是用来修改已录入的学生的数据信息。3.2.2设计思想:修改的方法分为两种:通过学号修改 通过姓名修改。如果输入的不是以上的关键字的话,屏幕上就会出现“!找不到需要修改的数据!”这几个字或如果在还没有录入数据之前进行查找数据的话,就会出现“!这是一个空表没有需要修改的数据!”这几个字。该部分通过if语句、switch语句和while语句实现其功能。3.2.3主要代码:void student:rework(int n,string str)student *p=curnode;bool b;int i=1;if(!(curnode=head-next)coutendl;cout!这是一个空表没有需要修改的数据!endl;coutendl;curnode=p;coutnumber=str;break;case 2: b=curnode-name=str;break;default: return;if(b)i=0;string Number;string Name;double Computer;double ENglish;double Math;coutendl;cout!请在原数据后面输入要修改的数据!endl;coutendl;cout 学 号:numberNumber;curnode-number=Number;cout 姓 名:nameName;curnode-name=Name;while(1)cout 计算机:computerComputer;while(cin.fail()err_char();cout 计算机:computerComputer;if(Computer=0&Computercomputer=Computer;while(1)cout 英 语:EnglishENglish;while(cin.fail()err_char();cout 英 语:EnglishENglish;if(ENglish=0&ENglishEnglish=ENglish;while(1)cout 数 学:mathMath;while(cin.fail()err_char();cout 数 学:mathMath;if(Math=0&Mathmath=Math;curnode=curnode-next;if(i)coutendl;cout!找不到需要修改的数据!endl;coutendl;elsecoutendl;cout!数据修改全部完成!endl;coutendl;coutnext)Y输出 !这是一个空表没有需要修改的数据!Ncurnode!=NULLY输入修改的数据:学号、姓名、计算机、英语、数学输出!数据修改全部完成!输出!找不到需要修改的数据!第4章 调试分析与测试结果4.1 调试分析这是我在写查找函数的代码时,本来想使用setw操作符指定宽度,但是忘了加头文件#include, 最后在查阅了C+语言程序设计(第3版)后,终于解决了问题。4.2 测试结果4.2.1程序开始界面运行程序后,就会出现下图:(图 一)4.2.2查找信息界面录入成绩完成后,选择6,然后按Enter键,就会出现下图:(图二)4.2.3根据学号查找信息界面选择1,然后输入查找的关键字,按Enter键,就会出现下图:(图三)4.2.4根据姓名查找信息界面选择2,然后输入查找的关键字,按Enter键,就会出现下图:(图四)4.2.5修改记录界面录入成绩完成后,选择3,然后按Enter键,就会出现下图:(图五)4.2.6根据学号修改记录界面选择1,然后输入查找的关键字,按Enter键,然后输入新的学号、姓名、计算机、英语、数学,再按Enter键,就会出现下图:(图六)4.2.7根据姓名修改记录界面选择2,然后输入查找的关键字,按Enter键,然后输入新的学号、姓名、计算机、英语、数学,再按Enter键,就会出现下图:(图七)第5章 用户使用说明该系统是学生成绩管理系统。运行程序时,首先进入操作界面,选择1录入成绩,然后按照提示进行操作就行了:按2删除记录;按3修改记录;按4记录排序;按5查看记录;按6查找信息;按7删除记录;按0退出系统。参考文献【1】郑莉、董渊、张瑞丰 编著的C+语言程序设计(第3版) 清华大学出版社2004年【2】豆丁网附 录#include#include#include#includeusing namespace std;class studentpublic: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 ); /修改函数private:string number;string name;double computer;double English;double math;double sum;double ave;char grade;student *head;student *curnode;student *next;/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;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年乡镇红十字会招聘考试模拟试题及答案
- 2025年养老行业热点解读居家养老服务评估方向中级考试要点
- 2025年高纯铟及氧化铟项目合作计划书
- 2025年车载空气净化器项目合作计划书
- 2025年无碱玻璃基片项目发展计划
- 2025年绕线绞线设备项目建议书
- 第二章 实数 单元测试 培优卷 (含答案)2025-2026北师大版八上
- 新闻常识题目及答案高中
- 胰腺疾病诊断与治疗阅读札记
- 扑火队安全培训会议内容课件
- 职业技术学院运动健康指导专业人才培养方案
- 离婚后小孩学费协议书
- 初中学校学科竞赛策划工作计划
- 近代中国体育思想的嬗变轨迹与时代特征探寻
- DB31T 1373-2022 海三棱藨草种群生态修复技术规程
- 《农业科技创新政策》课件
- 高危儿规范化健康管理专家共识
- 消防专职招聘笔试题及答案
- 第一单元 第二课 传感之古今未来 教学设计2024-2025学年人教版(2024)初中信息科技八年级上册
- 电压的测量课件
- 医美知识培训课件
评论
0/150
提交评论