当前位置:文档之家› c++程序设计报告

c++程序设计报告

内蒙古科技大学本科生课程设计说明书题目:面向对象课程设计——学生成绩管理系统学生姓名:李文静学号:1176807345专业:计算机科学与技术班级:11级-3班指导教师:赵艳峰2013年12月27日内蒙古科技大学课程设计任务书内蒙古科技大学课程设计任务书II内蒙古科技大学课程设计任务书目录内蒙古科技大学课程设计任务书 (II)目录....................................................................................................................................I II 第一章需求分析 (4)1.1引言 (4)1.2任务概述 (4)1.3数据描述 (4)1.4功能需求 (4)1.5性能需求 (5)1.6运行需求 (5)1.7任务计划 (5)第二章概要设计 (6)2.1总体设计 (6)2.2数据类型设计(或数据结构设计) (7)2.3接口设计 (7)2.3运行界面设计 (8)第三章详细设计 (9)3.1输入模块设计 (9)3.2输出模块设计 (11)3.3查找模块设计 (13)3.4排序模块设计 (14)3.5添加模块设计 (15)3.6删除模块设计 (17)3.7退出模块设计 (18)第四章测试分析 (19)4.1测试程序执行情况 (19)4.2出现的问题和解决的方法 (24)第五章课程设计总结 (25)附录:程序代码 (26)参考文献 (43)致谢 (44)III内蒙古科技大学课程设计任务书第一章需求分析1.1引言建立学生成绩管理系统,通过使用计算机对学生成绩进行管理,进一步提高办学效率。

此设计说明书是对学生成绩管理系统开发的一个初步的分析说明性文档,旨在通过该文档清晰的阐述系统的实际功能,方便系统开发人员对系统的理解以及与用户的沟通。

文档相关说明部分在目录部分已全部涵盖,阅读此文档的相关人员可以通过目录索引找到相应部分予以阅读。

1.2任务概述某班学生成绩管理,包括以下功能:从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里打开文件后,计算每个人的总分和平均分,排序并保存具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)具有插入、删除和修改功能具有输出文件数据信息的功能1.3数据描述该管理系统程序中数据主要有:学生的学号、姓名、各门课程成绩、每个人的总分和平均分、查询、输出、插入、删除和修改等功能。

1.4功能需求内蒙古科技大学课程设计任务书(1)输入模块:有关学生的信息,各门课程成绩的输入;(2)输出模块:学生成绩的总分和平均分;(3)查找模块:根据学生的姓名查询该学生的名次、成绩;(4)排序模块:对学生成绩的排序;1.5性能需求(1)要求该管理系统具有一定的可扩展性以便适应发展,且便于维护;(2)要求该管理系统便于使用,使用步骤简易明了。

1.6运行需求基于windows平台下的窗口图形界面软件,运行主界面为windows的经典运行界面,采用多文档界面,从而使程序更加美观,整齐有序,简易操作。

软件运行基于windows平台上的xp,Vista,win7等1.7任务计划第一天选择课程设计题目,分析课题的要求第二天编程第三天编程及调试第四天写课程设计报告第五天提交课程设计报告(打印稿及电子稿)5内蒙古科技大学课程设计任务书第二章概要设计2.1总体设计设计目的:1. 巩固和加深学生对面向对象课程的基本知识的理解和掌握2. 掌握面向对象设计语言编程和程序调试的基本技能3. 利用面向对象设计语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用面向对象设计语言解决实际问题的能力图2.1:程序总体设计图6内蒙古科技大学课程设计任务书2.2数据类型设计(或数据结构设计)表2.1:数据类型设计2.3接口设计表2.2:函数列表7内蒙古科技大学课程设计任务书2.3运行界面设计图2.2:运行界面设计8内蒙古科技大学课程设计任务书第三章详细设计3.1输入模块设计输入学生信息:void compute::getdata(){int i,sno;float En,Ch,Ma,Ph,Ge,Tol;char tname[10];cout<<"Please input the amounts of students!";cin>>ns;for(i=0;i<ns;i++){cout<<"Input the student's NO:";cin>>sno;na[i].setNo(sno);cout<<"Input the student's name:";cin>>tname;9内蒙古科技大学课程设计任务书na[i].setname(tname);cout<<"Input the student's English score:";cin>>En;sumEng=sumEng+En;na[i].setEng(En);cout<<"Input the student's Chinese score:";cin>>Ch;sumChi=sumChi+Ch;na[i].setChi(Ch);cout<<"Input the student's Maths score:";cin>>Ma;sumMat=sumMat+Ma;na[i].setMat(Ma);cout<<"Input the student's Physics score:";10cin>>Ph;sumPhy=sumPhy+Ph;na[i].setPhy(Ph);cout<<"Input the student's Geography score:";cin>>Ge;sumGeo=sumGeo+Ge;na[i].setGeo(Ge);Tol=En+Ch+Ma+Ph+Ge;na[i].settotal(Tol);}}3.2输出模块设计显示输出结果:void compute::disp(){cout<<"List"<<" NO"<<" Name"<<" English"<<" Chinese"<<" Maths"<<" Physics"<<" Geography"<<" Total "<<endl;for(int i=0;i<ns;i++){cout<<i+1<<" "<<na[i].getNo()<<" "<<na[i].getname()<<" "<<na[i].getEng()<<" "<<na[i].getChi()<<" "<<na[i].getMat()<<" "<<na[i].getPhy()<<" "<<na[i].getGeo()<<" "<<na[i].gettotal()<<endl;}}显示一个学生的记录:void compute::dispone(int i){cout<<"List"<<" NO"<<" Name"<<" English"<<" Chinese"<<" Maths"<<" Total "<<endl;cout<<1<<" "<<na[i].getNo()<<" "<<na[i].getname()<<" "<<na[i].getEng()<<" "<<na[i].getChi()<<" "<<na[i].getMat()<<" "<<na[i].getPhy()<<" "<<na[i].getGeo()<<" "<<na[i].gettotal()<<endl;}显示学生平均分:void compute::showaver(int num){int i;for(i=0;i<ns;i++){if(na[i].getNo()==num){cout<<"学号:"<<na[i].getNo()<<endl;cout<<"姓名:"<<na[i].getname()<<endl;}}}3.3查找模块设计按照姓名查找学生:void compute::namefind(int num){int i;for(i=0;i<ns;i++){if(na[i].getNo()==num){dispone(i);}}if(i>=ns){cout<<"没有您要查的记录"<<endl;}}按照学号查找学生:int compute::inputonename(){int num;cout<<"请输入要查找的学生学号:";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(na[j].gettotal()>na[pick].gettotal())pick=j;}temp=na[i];na[i]=na[pick];na[pick]=temp;}}3.5添加模块设计添加学生记录:void compute::adddata(){int i,sno;float En,Ch,Ma,Ph,Ge,Tol;char tname[10];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;na[ns+i].setNo(sno);cout<<"Input the student's name:";cin>>tname;na[ns+i].setname(tname);cout<<"Input the student's English score:"; cin>>En;sumEng=sumEng+En;na[ns+i].setEng(En);cout<<"Input the student's Chinese score:"; cin>>Ch;sumChi=sumChi+Ch;na[ns+i].setChi(Ch);cout<<"Input the student's Maths score:"; cin>>Ma;sumMat=sumMat+Ma;na[ns+i].setMat(Ma);cout<<"Input the student's Physics score:"; cin>>Ph;sumPhy=sumPhy+Ph;na[ns+i].setPhy(Ph);cout<<"Input the student's Geography score:"; cin>>Ge;sumGeo=sumGeo+Ge;na[ns+i].setGeo(Ge);Tol=En+Ch+Ma+Ph+Ge;na[ns+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(na[i].getNo()==num){//记录该学号在数组中的位置cunt = i;flag=1;}}if(!flag){cout<<"学号不存在"<<endl;return ;}for(i=cunt;i<ns-1;i++){na[i].setname(na[i+1].getname());na[i].setNo(na[i+1].getNo());na[i].setEng(na[i+1].getEng());na[i].setChi(na[i+1].getChi());na[i].setMat(na[i+1].getMat());na[i].setPhy(na[i+1].getPhy());na[i].setGeo(na[i+1].getGeo());na[i].settotal(na[i+1].gettotal()) ;}ns = ns - 1;}3.7退出模块设计退出系统:void compute::quit(){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:删除学生信息图4.9:退出学生成绩管理系统4.2出现的问题和解决的方法1、多次出现未知标示符,导致程序无法正常运行:发现打代码时,没有把简写字母打上,加上简写字母后,程序运行正常。

相关主题