




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北 华 航 天 工 业 学 院基于c+的面向对象程序设计实例课程设计报告报告题目: 学生信息管理系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2009年6月25日星期四 北华航天工业学院教务处制摘 要在当前的各个大学,中学,小学都需要拥有一套完善的,并且适合自身特点的学生信息管理系统,用它来管理学生信息。如1)添加学生信息。2)删除学生信息。3)修改学生信息。4)查询学生信息。5)显示学生信息。6)综合统计(各课程平均成绩和合格率)。7)总分排序。8)保存功能:将添加、删除、修改结果保存到文本文件中。9)退出系统。以实现对学生信息的统一管理。本文利用microsoft visual c+6.0编写程序实现了用户对学生信息的管理操作。该程序中定义了student类和brick类,在brick类中定义了创建函数,显示函数,查找函数,修改编辑函数,添加函数,删除函数,排序函数,平均分函数,求合格率函数。再用这些函数调用student类对象student s100 实现题中要求实现的功能。本系统主要有 十个功能模块:-录入学生信息 查询学生信息 -修改学生的信息- 增加学生的信息 -删除学生的信息 -总分排序-浏览学生信息-求各课程平均成绩-求合格率-浏览关机后学生信已经过全面的系统测试,能够很好的运行,达到了预期的效果。关键词:系统设计 数据库 信息 功能模块 -录入 查询 修改 增加 删除 总分排序 浏览 平均成绩 合格率 关机后目 录摘要第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 课程设计过程中遇到的问题.总结37致谢38参考文献39附录40第一章 绪论11 课程设计的目的1)要求学生能够熟练掌握c+语言的基本知识和技能。2)基本掌握面向对象程序设计的基本思路和方法。3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。12 课程设计的背景和意义121 课程设计的背景 当前的各个大学,中学,小学都需要拥有一套完善的,并且适合自身特点的学生信息管理系统,用它来管理学生信息。2. 技术层面的支持122 课程设计的意义实现对学生信息的统一管理。从而提高管理人员的工作效率。13 课程设计环境microsoft visual c+6.0笔记本电脑(显示器,鼠标等)第二章 需求分析第二章 需求分析21 问题描述某校学生信息包括学号、姓名、性别、班级、三门课成绩和总成绩。设计一程序实现对学生信息的管理,22 功能要求(1)本程序完成的功能主要有:1)添加学生信息。 2)删除学生信息。3)修改学生信息。4)查询学生信息。5)显示学生信息。6)综合统计(各课程平均成绩和合格率)。7)总分排序。8)保存功能:将添加、删除、修改结果保存到文本文件中。9)退出系统。(2)学生在完成本次课程设计的基本要求后,从便于用户使用和功能完整性的角度考虑进一步完善程序,请参照题目1和2的要求。23 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试; 8)完成系统总结报告。 第3章 系统设计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 s100;存放输入的数据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 studentfriend 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 函数设计主函数算法输入的字符存入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的结果;当输入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查找函数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()coutschoolnumbertnametsextgradetmathtenglishtctmath+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();private: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() ofstream 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+) tsi.sextsi.gradetsi.mathtsi.englishtsi.ctsi.math+si.english+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; char 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.schoolnumber=number;strcpy(,nam);sn-1.sex=se;strcpy(sn-1.grade,gra);sn-1.math=m;sn-1.english=e;sn-1.c=c;tsn-1.sextsn-1.gradetsn-1.mathtsn-1.englishtsn-1.ctsn-1.math+sn-1.english+sn-1.ctendl;outfile.close();tsn-1.sextsn-1.gradetsn-1.mathtsn-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();tsn.sextsn.gradetsn.mathtsn.englishtsn.ctsn.math+sn.english+sn.ctendl;coutd:f1.txt中已经了增加tsn.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=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+)tsi.sextsi.gradetsi.mathtsi.englishtsi.ctsi.math+si.english+si.ctendl;outfile.close();cout删除成功endl;void look(char *filename)ifstream 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+)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+)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; casec: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-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();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:display()/修改编辑函数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学号t姓名t性别t班级t数学t英语tc+t总分endl;遇到的问题5:不能读取关机后的数据。解决方法:添加函数读取关机后数据函数void look(char *filename)ifstream ifs(filename,ios:in );if(!ifs)cerropen error!endl;return;char ch;while(ifs.get(ch)cout.put(ch);coutendl;ifs.close();遇到的问题6:不能统计已有对象的个数。解决方法:定义静态变量n,static int n=0;遇到的问题7:不能向文本文件中输出数据。解决方法:添加语句ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;遇到的问题8:比较后对象不能交换。解决方法:定义student t;再for( j=0;jn-1;j+)for( i=0;isi+1.sum()t=si; si=si+1; si+1=t;遇到的问题9:在average函数中定义float s=0; s=s+si.math;s=s+si.english;s=s+si.c;三条语句出错解决方法:float s1=0; float s2=0; float s3=0; s1=s1+si.math;s2=s2+si.english;s3=s3+si.c;遇到的问题10:不能退出系统。解决方法:用 do cinchoose; switch(choose) . while(choose!=t);遇到的问题11:界面不友好。解决方法:main函数改成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-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();break; case9:b.hegelv();break; cases:look(d:f1.txt);break; while(choose!=t); return 0;总 结该程序代码清晰,一目了然,程序中的变量见名知义,具有很好的可读性,该程序功能齐全,严格按题目要求完成所规定的任务。程序中的求和函数,创建函数,显示函数,修改编辑函数,查找函数,添加函数,删除函数,求合格率函数,排序函数,平均分函数,实现功能都很强。致 谢经过了本次课程设计,使笔者能够熟练掌握c+语言的基本知识和技能。能基本掌握面向对象程序设计的基本思路和方法。能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。基本了解编写大程序的思想和方法。参考文献1谭浩强,c+面向对象程序设计,北京, 清华大学出版社,20062谭浩强,c程序设计,北京,清华大学出版社,2006附 录将源程序代码附到附录中。#include#include#includeclass brick;class studentpublic:student()int sum();void input()coutschoolnumber;coutname;coutsex;coutgrade;coutmath;coutenglish;coutc;void output()coutschoolnumbertnametsextgradetmathtenglishtctmath+english+ctendl;friend class brick;/模块类中定义模块函数private:char name5; char sex;int schoolnumber;char grade7;int math;in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基因组信息学应用-洞察及研究
- 建材采购合同协议2025年
- 医疗AI辅助诊断产品注册审批流程中的监管政策解读与合规性分析报告
- 二零二五年度数据中心第三方施工合作协议
- 2025版礼品定制采购与市场调研分析服务合同范本
- 二零二五年度企业技术顾问录用合同范本
- 2025年电池管理系统(BMS)研发与销售合同模板
- 2025版劳动人事争议仲裁院仲裁服务收费标准合同
- 二零二五年度饲料加工厂产品定制合同
- 2025房屋装修配套隔音材料供应合同范本
- 监理员考试题库(附答案)
- 2025年红十字初级急救员证考试题及答案
- uom理论考试题库答案及考试技巧
- 农资销售员岗位面试问题及答案
- 健康食堂创建方案
- 2025年叉车证书考试试题及答案
- 新型电力系统配电网网格化规划及应用
- 大学物理b2考试题及答案
- 儿童膝过伸课件
- 检验科信息管理制度
- (甘肃高考卷)2024年甘肃省普通高中学业水平等级性考试高考物化生+政史地真题试卷及答案
评论
0/150
提交评论