课程设计报告课程名称面向对象程序设计课题名称高校学籍管理系统专业通信工程班级通信工程1301学号9姓名念洋指导教师乔汇东2015年12 月30 日工程学院课程设计任务书课程名称面向对象程序设计课题高校学籍管理系统专业班级通信工程1301学生姓名念洋学号 6指导老师乔汇东、瑛、黄哲审批任务书下达日期2015年12 月26 日任务完成日期2015年12 月30 日一、设计容与设计要求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目⑴公司考勤管理系统⑵高校学籍管理系统⑶高校工资管理系统⑷高校人事管理系统⑸文件加密管理系统3.设计要求:⑴设计课题题目:第5个课题是扩展课题,有能力完成的同学可以选择。
其余每位同学根据自己学号除以4所得的余数加一选择相应题号的课题。
换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:包括数据库需求分析;类层次图;界面设计与各功能模块实现。
④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:说明如使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排第星期时:分——时:分星期时:分——时:分星期时:分——时:分星期时:分——时:分课题2:高校学籍管理系统(一)、课程设计题目:高校学籍管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:(1)要求利用面向对象的法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书(三)、设计法和基本原理:1、问题描述(功能要求):(1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
(2)能够将指定的信息从文件中删除。
(3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
(4)可以统计全部学生的总成绩,及其在班上的排名。
(5)能够统计各科的平均成绩及及格率。
(6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
(7)如果检索不到相应的信息应提示用户。
(8)扩展要求:能先行设置本学期的科目每个学生信息应该包括:姓名、学号、成绩成绩信息应该包括:科目数量、各科目名称、各科目成绩2、问题的解决案:根据系统功能要求,可以将问题解决分为以下步骤:(1)写出需求分析(做什么);(2)分析系统中的各个实体之间的关系及其属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和法);(5)完成类中各个成员函数的定义;(6)用户界面的设计;(7)分析系统功能模块(系统流程图);(8)代码编写,功能调试;(9)完成系统总结报告以及系统使用说明书。
目录一、需求分析 (9)1.系统设计目的与意义 (9)2.系统功能需求(系统流程图) (9)2.系统功能流程图 (10)3.输入输出的要求 (10)二、总体分析 (11)1. 系统功能分析 (11)2.系统功能结构图 (12)三、详细设计 (13)1.类设计: (13)三、界面设计与各功能模块的实现 (14)1. 界面设计 (14)四、系统调试 (14)1.首页进入学籍管理系统主菜单 (14)2录入学生信息界面: (15)3.显示学生信息界面 (15)4.查找学生信息界面 (16)5.删除学生信息界面 (16)6.统计学生信息: (18)五、使用说明及心得体会 (18)六、附件 (19)一、需求分析1.系统设计目的与意义要求用C++面向程序设计语言编写一高校学籍管理系统,1、目的:1)要求学生达到熟练掌握C++语言的基本知识和技能;2)基本掌握面向对象程序设计的基本思路和法;3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2. 系统设计的意义:系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,性别,成绩;程序中查找运用了两种查找式即学号查找和姓名查找。
2.系统功能需求(系统流程图)1.要求完成以下功能:1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
2)能够将指定的信息从文件中删除。
3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
4)可以统计全部学生的总成绩,及其在班上的排名。
5)能够统计各科的平均成绩及及格率。
6)要求有错误提示功能,例如性别只能输入nan,nv,输入错误提示重新输入。
7)如果检索不到相应的信息应提示用户。
2.系统功能流程图3.输入输出的要求1.输入的要求:通过主函数体调用其他函数应用系统主控界面包括学生信息录入,查找等功能模块。
学生信息录入功能完成学生信息和成绩的输入。
记录查询功能可以对数据各分类的记录进行查询。
2.输出的要求:1)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
2)可以统计全部学生的总成绩,及其在班上的排名。
3)能够统计各科的平均成绩及及格率。
4)如果检索不到相应的信息应提示用户二、总体分析1.系统功能分析能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
能够将指定的信息从文件中删除。
能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
可以统计全部学生的总成绩,及其在班上的排名。
能够统计各科的平均成绩及及格率。
要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
如果检索不到相应的信息应提示用户。
2.系统功能结构图三、详细设计1.类设计:类:student数据成员编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩class xinxi{protected:int number; //学号char name[20]; //姓名char sex[6]; //性别char p[100][10];float fenshu[10];float shuliang;float average;float sum;float aver;float jigelv;三、界面设计与各功能模块的实现1.界面设计1.界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。
2.功能模块实现设计通过主窗体调用其他窗体。
应用系统主控界面包括学生信息录入,查找等功能模块。
学生信息录入功能完成学生信息和成绩的输入。
记录查询功能可以对数据各分类的记录进行查询。
四、系统调试1.首页进入学籍管理系统主菜单2录入学生信息界面:3.显示学生信息界面:4.查找学生信息界面:5.删除学生信息界面:6.统计学生信息:五、使用说明及心得体会此次c++课程设计,在指导教师的精心教导下,我们学会了如用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。
理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。
好好打牢基础,因为之前学的时候自己动手实践的比较少,到后面就比较吃力,所以还是要多练习。
六、附件源文件代码:#include<iostream>#include <fstream>using namespace std;int di=0;int num=0;class xinxi{public:int number;char name[20];char sex[6];char p[100][10];float fenshu[10];float shuliang;float average;float sum;float aver;float jigelv;int i;virtual void Show() //显示{cout<<"学生学号:"<<number<<"\n"<<"学生姓名:"<<name<<"\n"<<"学生性别:"<<sex<<"\n"<<"学生科目数量:"<<shuliang<<endl;for(int i=0;i<shuliang;i++){cout<<p[i]<<"的成绩为:"<<fenshu[i]<<endl;}cout<<"总成绩为:"<<sum<<endl;cout<<"平均成绩为:"<<average<<endl;}void Book(int n){cout<<"学生学号:"; cin>>number;cout<<"学生姓名:"; cin>>name;cout<<"学生性别:"; cin>>sex;while(1){if(strcmp(sex,"nan")==0||strcmp(sex,"nv")==0){break;}else{cout<<"输入有误,请重新输入:"<<endl;cin>>sex;}}/*cout<<"请输入本学期科目数量:"; //通过数量确定课程cin>>shuliang;for(i=0;i<shuliang;i++){cout<<"请输入科目"<<i+1<<"的名称"<<endl;cin>>p[i];cout<<"请输入科目"<<i+1<<"的成绩"<<endl;cin>>fenshu[i];}*/while(1) //通过课程确定数量{char a;int b;for(i=0,b=0;;i++){cout<<"请输入科目"<<i+1<<"的名称"<<endl;cin>>p[i];cout<<"请输入科目"<<i+1<<"的成绩"<<endl;cin>>fenshu[i];b++;cout<<"是否继续输入?(Y/N)"<<endl;cin>>a;if(a=='Y'||a=='y')continue;else{shuliang=b;break;}}break;}}/* virtual void Save(fstream &f) //保存到文件f中{f<<number<<" "<<name<<" "<<sex<<" "<<fenshu<<" "<<shuliang<<" "<<average<<" "<<sum<<endl;}virtual void Load(fstream &f) //从文件f中导出数据{f>>number>>name>>sex>>fenshu>>shuliang>>average>>sum;}*/};xinxi d[100];xinxi v[100];//输入学生信息void BookIn(){while(1){cout<<"*************************"<<endl;cout<<"*************************"<<endl;cout<<"请输入学生信息:"<<endl;d[di].Book(num++);di++;for(int j=0;j<di;j++) //计算总成绩和平均成绩{float s=0;for(int i=0;i<d[j].shuliang;i++){s=s+d[j].fenshu[i];}d[j].sum=s;d[j].average=d[j].sum/d[j].shuliang;}cout<<"是否继续输入:Y继续、其他退出"<<endl;char x;cin>>x;if(x!='y' && x!='Y')break;}}//删除学生信息void BookOut(){int i;while(1){int c;cout<<"*************************"<<endl;cout<<"*************************"<<endl;cout<<"请输入您要删除的学生学号:"<<endl;cin>>c;for(i=0;i<di;i++)if(c==d[i].number){d[i]=d[--di];cout<<"删除成功!"<<endl;}else{cout<<"输入错误!"<<endl;system("PAUSE");}cout<<"是否继续删除:Y继续、其他退出"<<endl;char x;cin>>x;if(x!='y' && x!='Y')break;}}//学生信息查询void Inquiry(){while(1){cout<<"*************************"<<endl;cout<<"*************************"<<endl;cout<<"1、按学号查询"<<endl;cout<<"2、按姓名查询"<<endl;cout<<"请输入您的选择: ?"<<endl;int c;int test;cin>>c;if(c==1){cout<<"请选择要查询学号:";int a;cin>>a;for(int i=0;i<di;i++){if(a==d[i].number){test=1;break;}elsetest=0;}if(test==0){cout<<"没有这个学生!"<<endl;system("PAUSE");}else if(test==1){d[i].Show();}}else if(c==2){char c[10];cout<<"请选择要查询的姓名:";cin>>c;for(int i=0;i<di;i++){if(strcmp(c,d[i].name)==0){test=1;break;}elsetest=0;}if(test==0){cout<<"没有这个学生!"<<endl;system("PAUSE");}else if(test==1){d[i].Show();}}else{cout<<"输入错误!"<<endl;system("PAUSE");}cout<<"是否继续查询:Y继续、其他退出"<<endl;char x;cin>>x;if(x!='y' && x!='Y')break;}}//显示学籍信息void Display(){for(int i=0;i<di;i++){d[i].Show();cout<<"\n"<<endl;}}void Paixu(){int i,k;int tempsum;char tempname[10];for(i=0;i<di;i++){strcpy(v[i].name,d[i].name);v[i].sum=d[i].sum;}for(i=0;i<di-1;i++){for(k=i+1;k<di;k++){if(v[i].sum<v[k].sum){strcpy(tempname,v[i].name);strcpy(v[i].name,v[k].name);strcpy(v[k].name,tempname);tempsum=v[i].sum;v[i].sum=v[k].sum;v[k].sum=tempsum;}}}for(i=0;i<di;i++){cout<<"第"<<i+1<<"名:"<<v[i].name<<" "<<"总成绩:"<<v[i].sum<<"分"<<endl;}system("PAUSE");}void Danke(){for(int j=0;j<d[j].shuliang;j++){float sum=0;for(int i=0;i<di;i++){sum=sum+d[i].fenshu[j];}v[j].aver=sum/di;cout<<d[j].p[j]<<"的平均分为:"<<v[j].aver<<endl;}system("PAUSE");for(int m=0;m<d[m].shuliang;m++){float k=0;for(int i=0;i<di;i++){if(d[i].fenshu[m]>=60)k++;}v[m].jigelv=k/di;cout<<d[m].p[m]<<"的及格率为:"<<v[m].jigelv<<endl;}system("PAUSE");}/*void FileLoad() //信息读取函数{int i;fstream file;file.open("mydata.dat", ios::in); //打开保存数据的文件if(!file)return; //文件不存在则直接返回file>>di; //读入for(i=0;i<di;i++)d[i].Load(file);file.close(); //文件关闭}void FileSave() //信息保存函数{int i;fstream file;file.open("mydata.dat", ios::out); //打开保存数据的文件file<<di<<endl; //记录for(i=0;i<di;i++) //保存d[i].Save(file);file.close(); //文件关闭cout<<"保存成功!"<<endl;}*///主函数void main(){while(1){cout<<"*******************高校学籍管理系统*********************"<<endl;cout<<"\t\t 1、输入学生信息"<<endl;cout<<"\t\t 2、删除学生信息"<<endl;cout<<"\t\t 3、学生信息查询"<<endl;cout<<"\t\t 4、学生信息保存"<<endl;cout<<"\t\t 5、查看学籍系统"<<endl;cout<<"\t\t 6、学生成绩排名"<<endl;cout<<"\t\t 7、单科平均成绩及及格率"<<endl;cout<<"\t\t 8、退出管理系统"<<endl;cout<<"请选择功能: ?"<<endl;int c;cin>>c;if(c==1){BookIn();}else if(c==2){BookOut();}else if(c==3){Inquiry();}else if(c==4){// FileSave();}else if(c==5){Display();}else if(c==6){Paixu();}else if(c==7){Danke();}else if(c==8){break;}else{cout<<"输入错误!"<<endl;system("PAUSE");}}}计算机与通信学院课程设计评分表课题名称:教师签名:日期:(注:1.此页附在课程设计报告最后一页;2.综合成绩按优、良、中、及格和不及格五级评定。