《C++课程设计报告学生信息管理系统 .doc》由会员分享,可在线阅读,更多相关《C++课程设计报告学生信息管理系统 .doc(37页珍藏版)》请在三一办公上搜索。
1、 北 华 航 天 工 业 学 院基于C+的面向对象程序设计实例课程设计报告报告题目: 学生信息管理系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2009年6月25日星期四 北华航天工业学院教务处制摘 要在当前的各个大学,中学,小学都需要拥有一套完善的,并且适合自身特点的学生信息管理系统,用它来管理学生信息。如1)添加学生信息。2)删除学生信息。3)修改学生信息。4)查询学生信息。5)显示学生信息。6)综合统计(各课程平均成绩和合格率)。7)总分排序。8)保存功能:将添加、删除、修改结果保存到文
2、本文件中。9)退出系统。以实现对学生信息的统一管理。本文利用Microsoft Visual C+6.0编写程序实现了用户对学生信息的管理操作。该程序中定义了student类和brick类,在brick类中定义了创建函数,显示函数,查找函数,修改编辑函数,添加函数,删除函数,排序函数,平均分函数,求合格率函数。再用这些函数调用student类对象student s100 实现题中要求实现的功能。本系统主要有 十个功能模块:-录入学生信息 查询学生信息 -修改学生的信息- 增加学生的信息 -删除学生的信息 -总分排序-浏览学生信息-求各课程平均成绩-求合格率-浏览关机后学生信已经过全面的系统测试
3、,能够很好的运行,达到了预期的效果。关键词:系统设计 数据库 信息 功能模块 -录入 查询 修改 增加 删除 总分排序 浏览 平均成绩 合格率 关机后目 录摘要第1章 绪 论11.1 课题研究的目的11.2 选题的目的及意义5 1.3 课程设计环境.第2章 系统需求分析12 21 问题描述. 22 功能要求. 23 问题的解决方案.第3章 系统开发的技术背景17 31 数据设计. 311 类设计。. 312 类之间的关系. 313 函数设计. 32 结构设计.第4章 系统实现.41 类实现.42 函数实现. 4.3主函数实现.第5章 系统测试255.1模块测试25 5.2 课程设计过程中遇到的
4、问题.总结37致谢38参考文献39附录40第一章 绪论11 课程设计的目的1)要求学生能够熟练掌握C+语言的基本知识和技能。2)基本掌握面向对象程序设计的基本思路和方法。3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。12 课程设计的背景和意义121 课程设计的背景 当前的各个大学,中学,小学都需要拥有一套完善的,并且适合自身特点的学生信息管理系统,用它来管理学生信息。2. 技术层面的支持122 课程设计的意义实现对学生信息的统一管理。从而提高管理人员的工作效率。13 课程设计环境Microsoft Visual C+6.0笔记本电脑(显示器,鼠标等)第二章 需求分析第二章
5、需求分析21 问题描述某校学生信息包括学号、姓名、性别、班级、三门课成绩和总成绩。设计一程序实现对学生信息的管理,22 功能要求(1)本程序完成的功能主要有:1)添加学生信息。 2)删除学生信息。3)修改学生信息。4)查询学生信息。5)显示学生信息。6)综合统计(各课程平均成绩和合格率)。7)总分排序。8)保存功能:将添加、删除、修改结果保存到文本文件中。9)退出系统。(2)学生在完成本次课程设计的基本要求后,从便于用户使用和功能完整性的角度考虑进一步完善程序,请参照题目1和2的要求。23 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:1)应用系统分析,建立该系统的功能模块框图以
6、及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试; 8)完成系统总结报告。 第三章 系统设计31 数据设计311 类设计。Brick类Student类char name5; 姓名 char sex; 性别int schoolnumber; 学号char grade7; 班级int math; 数学int english; 英语int c; c+int ssum 总分brick;static int n;统计文本中对象个数student s
7、100;存放输入的数据student t;比较后交换si与si+1的值int sum();求和函数void input()输入数据函数void output()输出数据函数brick()构造函数void create();创建函数void display();显示函数void search();查找函数void modify();修改编辑函数void add();添加函数void deleted();删除函数void average();平均分函数void sort();排序函数void hegelv();求合格率函数student s100;312 类之间的关系友元类class studen
8、tfriend class brick;/模块类中定义模块函数brick void create();void display();void search();void modify();void add();void deleted();void average();void sort();void hegelv(); 通过student s100;调用student 类中的数据成员char name5; char sex;int schoolnumber;char grade7;int math;int english;int c;int ssum ;313 函数设计主函数算法输入的字符存
9、入choose变量中在主函数中需要输出主菜单选择界面,cout-s-浏览关机后学生信息-n; cout-1-录入学生信息-n; cout-2-查询学生信息-n; cout-3-修改学生的信息-n; cout-4-增加学生的信息-n; cout-5-删除学生的信息-n; cout-6-总分排序-n;cout-7-浏览学生信息-n;cout-8-求各课程平均成绩-n;cout-9-求合格率-n; cout-t-退出n=60)count1变量自加1,再输出count1除于记录数n的结果;当输入e或E时,if(si.english=60)count2变量自加1,再输出count2除于记录数n的结果;当
10、输入c或C时,if(si.c=60)count3变量自加1,再输出count3除于记录数n的结果;/排序函数算法,打开学生信息管理系统文本文件,从文件中通过循环读取数据并将它们存放student s100中,if(si.sumsi+1.sum)使si与si+1互换,最后用循环将所有数据存入学生信息管理系统文本文件中。/删除函数算法,打开学生信息管理系统文本文件,从文件中通过循环读取数据并将它们存放student s100中,输入新删除学生的学号和相应的信息,每删除一条数据,记录数n减1.32 结构设计321 系统流程图StudentOutputSumInputBrick类创建函数Create查
11、找函数Search修改函数Modify添加函数Add删除函数Deleted显示函数Display总分排序Sort求合格率Hegelv求平均分Average显示关机Look322 界面设计主菜单合格率子菜单平均分子菜单第四章 系统实现41 类实现class studentpublic:student()int sum();void input()coutschoolnumber;coutname;coutsex;coutgrade;coutmath;coutenglish;coutc;void output()coutschoolnumbertnametsextgradetmathtenglis
12、htctmath+english+ctendl;friend class brick;/模块类中定义模块函数private:char name5; char sex;int schoolnumber;char grade7;int math;int english;int c;int ssum ;class brickpublic:brick()void create();void display();void search();void modify();void add();void deleted();void average();void sort();void hegelv();pr
13、ivate:static int n;student s100;student t;42 函数实现void input()coutschoolnumber;coutname;coutsex;coutgrade;coutmath;coutenglish;coutc;void output()coutschoolnumbertnametsextgradetmathtenglishtctmath+english+ctendl; /求和函数int student:sum() int s;s=math+english+c;return s; /创建函数void brick:create() ofstre
14、am outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;int m; cout录入学生信息人数m; /outfile学号,姓名,性别,班级,数学,英语,c+,总分endl;cout学号,姓名,性别,班级,数学,英语,c+,endl;cout请输入相关信息endl;for(int i=0;im;i+)si.input(); for(i=0;im;i+) outfilesi.schoolnumbertsi.nametsi.sextsi.gradetsi.mathtsi.englishtsi.ctsi.math+si.e
15、nglish+si.ctendl; n+;outfile.close();/显示函数void brick:display()cout学号t姓名t性别t班级t数学t英语tc+t总分endl;for(int i=0;in;i+) si.output();/查找函数void brick:search()int num,i;coutnum;cout学号t姓名t性别t班级t数学t英语tc+t总分endl;for( i=0;in;i+) if(num=si.schoolnumber)si.output();/修改编辑函数void brick:modify()int num,i,j;char nam5; c
16、har se;int number;char gra7;int m;int e;int c;coutnum;ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;for(i=0;in;i+)if(num=si.schoolnumber)for(j=i;jn-1;j+)sj=sj+1;cout学号,姓名,性别,班级,数学,英语,c+endl;cout请输入相关信息endl;coutnumber;coutnam;coutse;coutgra;coutm;coute;coutc;sn-1.schoolnum
17、ber=number;strcpy(sn-1.name,nam);sn-1.sex=se;strcpy(sn-1.grade,gra);sn-1.math=m;sn-1.english=e;sn-1.c=c;outfilesn-1.schoolnumbertsn-1.nametsn-1.sextsn-1.gradetsn-1.mathtsn-1.englishtsn-1.ctsn-1.math+sn-1.english+sn-1.ctendl;outfile.close();coutsn-1.schoolnumbertsn-1.nametsn-1.sextsn-1.gradetsn-1.mat
18、htsn-1.englishtsn-1.ctsn-1.math+sn-1.english+sn-1.ctendl; /添加函数void brick:add()ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;char c;docout学号,姓名,性别,班级,数学,英语,c+endl;cout录入增加学生的信息endl; sn.input();outfilesn.schoolnumbertsn.nametsn.sextsn.gradetsn.mathtsn.englishtsn.ctsn.math+
19、sn.english+sn.ctendl;coutd:f1.txt中已经了增加sn.schoolnumbertsn.nametsn.sextsn.gradetsn.mathtsn.englishtsn.ctsn.math+sn.english+sn.ctendl;n+;cout还要增加吗(y /n) ?c;while(n100&(c=y|c=Y);outfile.close();/删除函数void brick:deleted() int i,j;int num;cout请输入删除学生的学生号num;for( i=0;in;i+)if(si.schoolnumber=num)n-;for( j=
20、i;jn;j+)sj=sj+1; ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;outfile学号t姓名t性别t班级t数学t英语tc+t总分endl;for( i=0;in;i+)outfilesi.schoolnumbertsi.nametsi.sextsi.gradetsi.mathtsi.englishtsi.ctsi.math+si.english+si.ctendl;outfile.close();cout删除成功endl;void look(char *filename)ifstr
21、eam ifs(filename,ios:in );if(!ifs)cerropen error!endl;return;char ch;while(ifs.get(ch)cout.put(ch);coutendl;ifs.close(); /排序函数void brick:sort()int i;int j;for( i=0;in;i+)si.sum();for( j=0;jn-1;j+)for( i=0;isi+1.sum()t=si; si=si+1; si+1=t;coutsi.sum()endl;cout学号t姓名t性别t班级t数学t英语tc+t总分endl;for( i=0;in;i
22、+)si.output();/平均分函数void brick:average()float s1=0; float s2=0; float s3=0; char ch;cout你要查的各平均课程(math-m,english-e,c)ch;switch(ch) caseM:casem:for(int i=0;in;i+)s1=s1+si.math;cout数学平均分s1/nendl;break;caseE:casee:for(int i=0;in;i+)s2=s2+si.english;cout英语平均分s2/nendl;break; caseC:casec:for(int i=0;in;i+
23、)s3=s3+si.c;coutc平均分s3/nendl;break; default:cout非法选项endl; /求合格率函数void brick: hegelv()int count1=0,count2=0,count3=0;char ch;cout你要查的合格率课程(math-m,english-e,c)ch;switch(ch)caseM:casem:for(int i=0;i=60)count1+; cout(float)count1/n;break;caseE:casee:for(int i=0;i=60)count2+; cout(float)count2/n;break; c
24、aseC:casec:for(int i=0;i=60)count3+; cout(float)count3/n;break; default:cout非法选项endl;43 主函数实现int main()brick b; cout学生信息管理系统endl; coutendl; char choose; /显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数 do coutn- 学生信息管理系统-n;cout-s-浏览关机后学生信息-n; cout-1-录入学生信息-n; cout-2-查询学生信息-n; cout-3-修改学生的信息-n; cout-4-增加学生的信息-n; cout-
25、5-删除学生的信息-n; cout-6-总分排序-n;cout-7-浏览学生信息-n;cout-8-求各课程平均成绩-n;cout-9-求合格率-n; cout-t-退出n请选择:-n;coutchoose; switch(choose) case1:b.create();break; case2:b.search();break; case3:b.modify();break; case4:b.add();break; case5:b.deleted();break; case6:b.sort();break; case7:b.display();break; case8:b.average
26、();break; case9:b.hegelv();break; cases:look(d:f1.txt);break; while(choose!=t); return 0;第五章 系统测试51模块测试输入函数抓图查询函数抓图添加函数抓图浏览函数抓图总分排序函数抓图平均分函数抓图合格率函数抓图平均分函数抓图退出函数抓图52 课程设计过程中遇到的问题遇到的问题1:开始设计时main函数实现代码太长,不便于阅读程序解决方法:再设计一个brick类,将其 定义成student类的友元类,在brick类中定义/创建函数void brick:create()/显示函数void brick:displ
27、ay()/修改编辑函数void brick:modify()/查找函数void brick:search()/添加函数void brick:add()/删除函数void brick:deleted()/求合格率函数void brick: hegelv()/排序函数void brick:sort()/平均分函数void brick:average(),再用这些函数调用student类的对象student s100实现相应功能,这样可以降低main函数的复杂度,增加程序的可读性。遇到的问题2:定义成student类的友元类后,不能使用命名空间解决方法:将#include#include#includeusing namespace std;改成#include#include#include遇到的问题3:类外调用数据成员不方便。解决方法:在student类中定义成员函数int sum();void input()void output()遇到的问题4:输出结果不对齐。解决方法:语句中加t如:coutschoolnumbertnametsextgradetmathtenglishtctmath+english+ctendl;cout学号
链接地址:https://www.31ppt.com/p-2384432.html