学生成绩管理系统c++程序设计报告_第1页
学生成绩管理系统c++程序设计报告_第2页
学生成绩管理系统c++程序设计报告_第3页
学生成绩管理系统c++程序设计报告_第4页
学生成绩管理系统c++程序设计报告_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内蒙古科技大学课程设计任务书内蒙古科技大学本科生课程设计说明书题 目:面向对象课程设计 学生成绩管理系统学生姓名:*学 号:*专 业:计算机科学与技术班 级:11级-3班指导教师:*2013年1月6日内蒙古科技大学课程设计任务书课程名称面向对象课程设计设计题目学生成绩管理系统指导教师*时间2012.12.312013.1.4一、教学要求1. 巩固和加深学生对C+面向对象课程的基本知识的理解和掌握2. 掌握C+面向对象课程和程序调试的基本技能3. 利用C+进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C+解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中

2、任意选择一题,独立完成,题目选定后不可更换。某班学生成绩管理,包括以下功能:v 从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里v 打开文件后,计算每个人的总分和平均分,排序并保存v 具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)v 具有插入、删除和修改功能v 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要

3、的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C+面向对象程序设计,吴敏 杨国林,内蒙古大学出版社2C+面向对象程序设计习题解答与实

4、验指导,吴敏,内蒙古大学出版社目 录内蒙古科技大学课程设计任务书II目 录III第一章需求分析41.1引言41.2任务概述41.3数据描述41.4功能需求41.5性能需求41.6运行需求41.7任务计划4第二章概要设计42.1总体设计42.2数据类型设计(或数据结构设计)42.3接口设计42.3运行界面设计4第三章详细设计43.1输入模块设计43.2输出模块设计113.3查找模块设计133.4排序模块设计143.5添加模块设计153.6删除模块设计173.7退出模块设计18第四章测试分析194.1测试程序执行情况194.2出现的问题和解决的方法24第五章课程设计总结25附录:程序代码27参考文

5、献43致谢44III第一章 需求分析1.1 引言建立学生成绩管理系统,通过使用计算机对学生成绩进行管理,进一步提高办学效率。此设计说明书是对学生成绩管理系统开发的一个初步的分析说明性文档,旨在通过该文档清晰的阐述系统的实际功能,方便系统开发人员对系统的理解以及与用户的沟通。文档相关说明部分在目录部分已全部涵盖,阅读此文档的相关人员可以通过目录索引找到相应部分予以阅读。1.2 任务概述某班学生成绩管理,包括以下功能:v 从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里v 打开文件后,计算每个人的总分和平均分,排序并保存v 具有单项查询或多项查询的功能(即按照给定的关键

6、字,如姓名找出满足条件的纪录)v 具有插入、删除和修改功能v 具有输出文件数据信息的功能1.3 数据描述该管理系统程序中数据主要有:学生的学号、姓名、各门课程成绩、每个人的总分和平均分、查询、输出、插入、删除和修改等功能。1.4 功能需求(1) 输入模块:有关学生的信息,各门课程成绩的输入;(2) 输出模块:学生成绩的总分和平均分;(3) 查找模块:根据学生的姓名查询该学生的名次、成绩;(4) 排序模块:对学生成绩的排序;1.5 性能需求(1) 要求该管理系统具有一定的可扩展性以便适应发展,且便于维护;(2) 要求该管理系统便于使用,使用步骤简易明了。1.6 运行需求基于windows平台下的

7、窗口图形界面软件,运行主界面为windows的经典运行界面,采用多文档界面,从而使程序更加美观,整齐有序,简易操作。软件运行基于windows平台上的xp,Vista,win7等1.7 任务计划第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)第二章 概要设计2.1 总体设计设计目的:1. 巩固和加深学生对面向对象课程的基本知识的理解和掌握2. 掌握面向对象设计语言编程和程序调试的基本技能3. 利用面向对象设计语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用面向对象设计语言解决实际问题的

8、能力主菜单退出系统插入学生信息查询学生信息输出学生信息输入学生信息图2.1:程序总体设计图2.2 数据类型设计(或数据结构设计)表2.1:数据类型设计数据数据类型学生各门课程成绩int型学号姓名字符型变量平均分浮点型数据姓名字符型变量2.3接口设计表2.2:函数列表函数名函数格式 /即函数首部函数功能getdatavoid输入学生信息sortvoid按照成绩总分排序dispvoid显示结果initdispvoid初始化界面adddatavoid添加学生记录namefindvoid按照姓名查找记录disponevoid显示一个学生的记录usechoiceint根据用户选择获取不同的操作input

9、onenameint输入一个学生的姓名delevoid删除学生记录showavervoid显示学生平均分quitvoid退出系统2.3 运行界面设计图2.2:运行界面设计43第三章 详细设计3.1 输入模块设计输入学生信息:void compute:getdata()int i,sno;float En,Ch,Ma,Ph,Ge,Tol;char tname10;cout<<"Please input the amounts of students!"cin>>ns;for(i=0;i<ns;i+)cout<<"Input

10、the student's NO:"cin>>sno;nai.setNo(sno);cout<<"Input the student's name:"cin>>tname;nai.setname(tname);cout<<"Input the student's English score:"cin>>En;sumEng=sumEng+En;nai.setEng(En);cout<<"Input the student's Chin

11、ese score:"cin>>Ch;sumChi=sumChi+Ch;nai.setChi(Ch);cout<<"Input the student's Maths score:"cin>>Ma;sumMat=sumMat+Ma;nai.setMat(Ma);cout<<"Input the student's Physics score:"cin>>Ph;sumPhy=sumPhy+Ph;nai.setPhy(Ph);cout<<"Input

12、the student's Geography score:"cin>>Ge;sumGeo=sumGeo+Ge;nai.setGeo(Ge);Tol=En+Ch+Ma+Ph+Ge;nai.settotal(Tol);3.2 输出模块设计显示输出结果:void compute:disp()cout<<"List"<<" NO"<<" Name"<<" English"<<" Chinese"<<&

13、quot; Maths"<<" Physics"<<" Geography"<<" Total "<<endl;for(int i=0;i<ns;i+)cout<<i+1<<" "<<nai.getNo()<<" "<<nai.getname()<<" "<<nai.getEng()<<" "<

14、;<nai.getChi()<<" "<<nai.getMat()<<" "<<nai.getPhy()<<" "<<nai.getGeo()<<" "<<nai.gettotal()<<endl;显示一个学生的记录:void compute:dispone(int i)cout<<"List"<<" NO"<<" N

15、ame"<<" English"<<" Chinese"<<" Maths"<<" Total "<<endl;cout<<1<<" "<<nai.getNo()<<" "<<nai.getname()<<" "<<nai.getEng()<<" "<<nai.

16、getChi()<<" "<<nai.getMat()<<" "<<nai.getPhy()<<" "<<nai.getGeo()<<" "<<nai.gettotal()<<endl;显示学生平均分:void compute:showaver(int num)int i;for(i=0;i<ns;i+)if(nai.getNo()=num)cout<<"学号:"<

17、<nai.getNo()<<endl;cout<<"姓名:"<<nai.getname()<<endl;3.3 查找模块设计按照姓名查找学生:void compute:namefind(int num)int i; for(i=0;i<ns;i+)if(nai.getNo()=num)dispone(i);if(i>=ns)cout<<"没有您要查的记录"<<endl;按照学号查找学生:int compute:inputonename()int num;cout&l

18、t;<"请输入要查找的学生学号:"cin>>num;return num;3.4 排序模块设计按照成绩进行排序:void compute:sort() /直接选择排序int i,j,pick;std temp;for(i=0;i<ns-1;i+)pick=i;for(j=i+1;j<ns;j+)if(naj.gettotal()>napick.gettotal()pick=j;temp=nai;nai=napick;napick=temp;3.5添加模块设计添加学生记录:void compute:adddata()int i,sno;fl

19、oat En,Ch,Ma,Ph,Ge,Tol;char tname10;if(ns=0)cout<<"请先选择1添加数据,然后在选择2增加记录"<<endl;return ;cout<<"请输入要添加的学生记录"cin>>addns;for(i=0;i<addns;i+)cout<<"Input the student's NO:"cin>>sno;nans+i.setNo(sno);cout<<"Input the stude

20、nt's name:"cin>>tname;nans+i.setname(tname);cout<<"Input the student's English score:"cin>>En;sumEng=sumEng+En;nans+i.setEng(En);cout<<"Input the student's Chinese score:"cin>>Ch;sumChi=sumChi+Ch;nans+i.setChi(Ch);cout<<"I

21、nput the student's Maths score:"cin>>Ma;sumMat=sumMat+Ma;nans+i.setMat(Ma);cout<<"Input the student's Physics score:"cin>>Ph;sumPhy=sumPhy+Ph;nans+i.setPhy(Ph);cout<<"Input the student's Geography score:"cin>>Ge;sumGeo=sumGeo+Ge;nans

22、+i.setGeo(Ge);Tol=En+Ch+Ma+Ph+Ge;nans+i.settotal(Tol);ns=ns+addns;3.6删除模块设计删除学生记录:void compute:dele(int num)int i,cunt,flag=0;/学号是否存在if(num<0)cout<<"超出学号范围"<<endl;return ;for(i=0;i<ns;i+)if(nai.getNo()=num)/记录该学号在数组中的位置cunt = i;flag=1;if(!flag)cout<<"学号不存在"

23、;<<endl;return ; for(i=cunt;i<ns-1;i+)nai.setname(nai+1.getname();nai.setNo(nai+1.getNo();nai.setEng(nai+1.getEng();nai.setChi(nai+1.getChi();nai.setMat(nai+1.getMat();nai.setPhy(nai+1.getPhy();nai.setGeo(nai+1.getGeo();nai.settotal(nai+1.gettotal();ns = ns - 1;3.7退出模块设计退出系统:void compute:qu

24、it()FLAG=0;cout<<"程序在3秒后关闭"<<endl;_sleep(1000);cout<<"还剩2秒"<<endl;_sleep(1000);cout<<"还剩1秒"<<endl;_sleep(1000);return ;第四章 测试分析4.1 测试程序执行情况图4.1:运行主界面图4.2:输入学生信息图4.3:添加学生记录图4.4:按照学号查找学生记录图4.5:按照总分排序图4.6:学生各科平均分图4.7:学生成绩信息记录图4.8:删除学生信息图

25、4.9:退出学生成绩管理系统4.2 出现的问题和解决的方法1、 多次出现未知标示符,导致程序无法正常运行:发现打代码时,没有把简写字母打上,加上简写字母后,程序运行正常。第五章 课程设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。我的课设题目是学生成绩管理系统,对于刚刚接触C语言的学生来说也是有一定难度的。如何将课堂所学和实践相结合是我们此次课设最为重要的一部分,将所学的知

26、识应用到实践中才是我们真正的将知识学到我们自己的脑子里。回顾此次课设,感受颇多,从开始课设到课设结束,确实学到了很多东西,不仅巩固了以前学到的知识,更是学到了很多以前未接触过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到的问题,可以说是困难重重,第一次做课设,无法避免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计后,把以前所学过的知识

27、都重新温故。在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。一时的失意不算什么,只要能坚持下去,就一定会成功的。感谢这次课设让我明白很多,了解很多,同时也改变很多。附录:程序代码#include<string.h>#include<iostream.h>#include <windows.h>#define N 10000int FLAG=1;class stdint No;char name10;float Eng;float Chi;fl

28、oat Mat;float Phy;float Geo;float total;public:void setname(char na)strcpy(name,na);void setNo(int n)No=n; void setEng(float e)Eng=e;void setChi(float c)Chi=c;void setMat(float m)Mat=m;void setPhy(float p)Phy=p;void setGeo(float g)Geo=g;void settotal(float t)total=t;char* getname()return name;int ge

29、tNo()return No;float getEng()return Eng;float getChi()return Chi;float getMat()return Mat;float getPhy()return Phy;float getGeo()return Geo;float gettotal()return total;class computeint ns;int addns;std naN;static float sumEng;static float sumChi;static float sumMat;static float sumPhy;static float

30、sumGeo;public:void getdata(); /输入数据void sort(); /按照成绩总分进行排序 void disp();/显示结果void initdisp();/初始化界面int usechoice();/根据用户选择获取不同的操作void adddata();/添加学生记录void namefind(int);/按照姓名查找记录void dispone(int i);/显示一个学生的记录int inputonename(); /输入一个学生的姓名 void dele(int num); /删除学生记录void showaver(int num);/显示学生平均分vo

31、id quit();/退出系统compute()ns=0; float aveEng()return sumEng/ns; float aveChi()return sumChi/ns; float aveMat()return sumMat/ns;float avePhy()return sumPhy/ns;float aveChem()return sumGeo/ns;int getns()return ns;float compute:sumEng=0.0;float compute:sumChi=0.0;float compute:sumMat=0.0;float compute:su

32、mPhy=0.0;float compute:sumGeo=0.0;void compute:getdata()int i,sno;float En,Ch,Ma,Ph,Ge,Tol;char tname10; cout<<"Please input the amounts of students!"cin>>ns;for(i=0;i<ns;i+)cout<<"Input the student's NO:"cin>>sno;nai.setNo(sno);cout<<"In

33、put the student's name:"cin>>tname;nai.setname(tname);cout<<"Input the student's English score:"cin>>En;sumEng=sumEng+En;nai.setEng(En);cout<<"Input the student's Chinese score:"cin>>Ch;sumChi=sumChi+Ch;nai.setChi(Ch);cout<<&qu

34、ot;Input the student's Maths score:"cin>>Ma;sumMat=sumMat+Ma;nai.setMat(Ma);cout<<"Input the student's Physics score:"cin>>Ph;sumPhy=sumPhy+Ph;nai.setPhy(Ph);cout<<"Input the student's Geography score:"cin>>Ge;sumGeo=sumGeo+Ge;nai.se

35、tGeo(Ge);Tol=En+Ch+Ma+Ph+Ge;nai.settotal(Tol);void compute:sort() /直接选择排序int i,j,pick;std temp;for(i=0;i<ns-1;i+)pick=i;for(j=i+1;j<ns;j+)if(naj.gettotal()>napick.gettotal()pick=j;temp=nai;nai=napick;napick=temp;void compute:disp()cout<<"List"<<" NO"<<&

36、quot; Name"<<" English"<<" Chinese"<<" Maths"<<" Physics"<<" Geography"<<" Total "<<endl;for(int i=0;i<ns;i+)cout<<i+1<<" "<<nai.getNo()<<" "<&

37、lt;nai.getname()<<" "<<nai.getEng()<<" "<<nai.getChi()<<" "<<nai.getMat()<<" "<<nai.getPhy()<<" "<<nai.getGeo()<<" "<<nai.gettotal()<<endl;void compute:initdisp()

38、cout<<"*"<<endl;cout<<" 学生成绩管理系统 "<<endl;cout<<"*"<<endl;cout<<endl;cout<<"请根据要求选择下面的操作:"<<endl;cout<<"1、输入学生成绩记录"<<endl;cout<<"2、添加学生记录"<<endl;cout<<"

39、3、按照学号查找学生记录"<<endl;cout<<"4、删除学生记录"<<endl;cout<<"5、按照总分排序"<<endl;cout<<"6、显示学生平均分"<<endl;cout<<"7、显示学生成绩记录信息"<<endl;cout<<"8、退出系统"<<endl;int compute:usechoice()int opt;cout<&l

40、t;endl;cout<<"请选择相应的操作,输入序号即可:"cin>>opt;return opt;void compute:adddata()int i,sno;float En,Ch,Ma,Ph,Ge,Tol;char tname10;if(ns=0)cout<<"请先选择1添加数据,然后在选择2增加记录"<<endl;return ;cout<<"请输入要添加的学生记录"cin>>addns;for(i=0;i<addns;i+)cout<&l

41、t;"Input the student's NO:"cin>>sno;nans+i.setNo(sno);cout<<"Input the student's name:"cin>>tname;nans+i.setname(tname);cout<<"Input the student's English score:"cin>>En;sumEng=sumEng+En;nans+i.setEng(En);cout<<"Input

42、 the student's Chinese score:"cin>>Ch;sumChi=sumChi+Ch;nans+i.setChi(Ch);cout<<"Input the student's Maths score:"cin>>Ma;sumMat=sumMat+Ma;nans+i.setMat(Ma);cout<<"Input the student's Physics score:"cin>>Ph;sumPhy=sumPhy+Ph;nans+i.set

43、Phy(Ph);cout<<"Input the student's Geography score:"cin>>Ge;sumGeo=sumGeo+Ge;nans+i.setGeo(Ge);Tol=En+Ch+Ma+Ph+Ge;nans+i.settotal(Tol);ns=ns+addns;void compute:dispone(int i)cout<<"List"<<" NO"<<" Name"<<" English&q

44、uot;<<" Chinese"<<" Maths"<<" Total "<<endl;cout<<1<<" "<<nai.getNo()<<" "<<nai.getname()<<" "<<nai.getEng()<<" "<<nai.getChi()<<" "<

45、<nai.getMat()<<" "<<nai.getPhy()<<" "<<nai.getGeo()<<" "<<nai.gettotal()<<endl;void compute:namefind(int num)int i; for(i=0;i<ns;i+)if(nai.getNo()=num)dispone(i);if(i>=ns)cout<<"没有您要查的记录"<<endl;int

46、 compute:inputonename()int num;cout<<"请输入要查找的学生学号:"cin>>num;return num;void compute:dele(int num)int i,cunt,flag=0;/学号是否存在if(num<0)cout<<"超出学号范围"<<endl;return ;for(i=0;i<ns;i+)if(nai.getNo()=num)/记录该学号在数组中的位置cunt = i;flag=1;if(!flag)cout<<"

47、;学号不存在"<<endl;return ; for(i=cunt;i<ns-1;i+)nai.setname(nai+1.getname();nai.setNo(nai+1.getNo();nai.setEng(nai+1.getEng();nai.setChi(nai+1.getChi();nai.setMat(nai+1.getMat();nai.setPhy(nai+1.getPhy();nai.setGeo(nai+1.getGeo();nai.settotal(nai+1.gettotal();ns = ns - 1;void compute:showa

48、ver(int num)int i;for(i=0;i<ns;i+)if(nai.getNo()=num)cout<<"学号:"<<nai.getNo()<<endl;cout<<"姓名:"<<nai.getname()<<endl;void compute:quit()FLAG=0;cout<<"程序在3秒后关闭"<<endl;_sleep(1000);cout<<"还剩2秒"<<endl;_sleep(1000);cout<<"还剩1秒"<<endl;_sleep(10

温馨提示

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

评论

0/150

提交评论