免费预览已结束,剩余42页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北华航天工业学院课程设计报告北 华 航 天 工 业 学 院基于c+的面向对象程序设计实例课程设计报告报告题目: 高校人员信息管理系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术专业 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 北华航天工业学院教务处制摘 要当今教育事业备受关注,如何高效方便的对高校人员进行管理是一个问题。本文利用c+面向对象的程序设计实现了这一功能。本系统主要有七个功能模块:新增、更改、删除、查找、显示、全删、统计,实现了对领导、教师、学生信息的管理。本程序已经过全面的系统测试,能够很好的运行,达到预期的效果。关键词:信息管理 系统设计 面向对象摘 要2第一章 绪论211 课程设计的目的212 课程设计的背景和意义2121 课程设计的背景21. 理论研究基础22. 技术层面的支持2122 课程设计的意义213 课程设计环境3第二章 需求分析321 问题描述322 功能要求323 问题的解决方案3第三章 系统设计431 数据设计4311 类设计4312 类之间的关系4313 函数设计532 结构设计5321 系统流程图5322 界面设计6第四章 系统实现741 类实现742 函数实现943 主函数实现15第五章 系统测试1651 模块测试1652 课程设计过程中遇到的问题19总 结19致 谢20参考文献20附 录21第一章 绪论11 课程设计的目的 课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解了c+功能之强大,进一步让学生对面向对象的方法以及c+的编程思想有了较好了解和认识。12 课程设计的背景和意义121 课程设计的背景本次课程设计,主要研究类的继承、抽象类、多态、虚基类以及对文件进行各项操作(如添加、修改、删除、查询、显示等)。通过这次课程设计掌握面向对象的程序设计思路,着重掌握在c+中对文件进行查找、删除、修改等操作。1. 理论研究基础(1)c+面向对象程序设计中类与对象的使用(2)类的封装性和继承性。(3)c+ i/o流库的处理,二进制文件的创建与保存。2. 技术层面的支持(1)定义基类与派生类,将数据成员与成员函数封装在类中。(2)定义指向对象的指针,设计删除、查询、更改的算法。(3)c+异常处理的功能与输入输出流。122 课程设计的意义(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。帮助了同学系统的掌握c+课程的主要内容。(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。13 课程设计环境在microsoft visual c+ 6.0开发平台上编写程序源代码,修改,增加功能,通过编译、连接,直到完全无误,最终执行程序,反复输入新的数据进行验证并进一步完善。第二章 需求分析21 问题描述某高校,主要人员有:领导、教师和学生,共有的信息包括:编号、姓名、性别、年龄。其中领导还应包含的信息有:任职部门(学院、各系部)、职称;教师还应包含的信息有:职称、任职时间、专业;学生还应包含的信息有:所在班级、所在宿舍等。22 功能要求对各类人员信息完成的基本功能有:1) 添加功能:程序能够添加相应的记录;2) 查询功能:能根据编号和姓名进行查询,并显示相应的记录信息;3) 编辑功能:根据查询结果对相应的记录进行修改;4) 统计功能:能根据多种参数进行人员的统计;5)删除功能:根据查找结果,完成具体记录的删除;6)保存功能:将对高校人员信息进行的添加、删除、修改结果保存到文本文件中。23 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: 1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试; 8)完成系统总结报告。第三章 系统设计31 数据设计311 类设计人员有共同的信息编号number、姓名neme、性别sex、年龄age,所以设计一个基类people,在此基础上派生出leader类(添加数据成员任职部门bumen,职称zhicheng),teacher类(添加数据成员职称zhicheng,任职时间time,专业project),student类(添加数据成员班级banji,宿舍sushe)。基类people中包含设置成员值的set函数,添加成员的add函数。在派生类leader,teacher,student中对set和add进行重新定义。为了对信息进行添加、删除、查找等功能,定义leaderbase,teacher,student类,分别定义对象数组,定义指向对象的指针,以leaderbase类为例,int top; 人数leader readmaxr;领导类数组;leaderbase()将领导信息从leader.txt读取到read中,void delnu(int u)编号删除,void delname(char*na)姓名删除,void clear()删除所有,void disp() 领导信息显示,void data()领导维护,leaderbase() 将read中的信息读入到leader.txt中。312 类之间的关系由people类派生出leader,teacher,student类,leaderbase类调用leader类,teacherbase类调用了teacher类,studentbase类调用了student类.。派生类对基类的成员进行继承。继承是面向对象程序设计中软件重用的关键技术。继承机制使用已经定义的类作为基础建立新的类定义,新的类是原有类的数据、操作和新类所添加的数据、操作的组合。新的类把原有类作为基类引用,而不需要修改原有类的定义。313 函数设计leaderbase()将领导信息从leader.txt读取到read中,void delnu (int n)编号删除,void delname(char*na)姓名删除,void clear()删除所有,void disp() 领导信息显示,void data()领导数据维护,实现领导信息的添加、删除、查询、显示、统计、更改功能。leaderbase() 将read中的信息读如到leader.txt中。当删除和查找时调用两个函数leader *query(int n),leader *query1(char *na),看删除或查找的领导是否存在,若存在,返回指向leader类的指针,若不存在,返回空指针。 32 结构设计321 系统流程图main 函数领导数据操作教师数据操作学生数据操作void leaderbase:date()void teacherbase:date()void studentbase:base()322 界面设计登入高校管理系统界面如图3-2所示图3-2界面菜单设计程序开始运行,通过主函数进入系统主界面(如上图所示),操作员可键入数字信息选择系统的各个功能或退出系统。每种功能的界面都有相应的提示(以输入领导为例):在添加信息功能中系统提示“请输入领导的性别为男或女,如果输入错误,会输出“输入性别错误,请重新输入”在新增时系统会同时计算输入男女领导的人数;在更改中系统提供了按姓名或编号修改,在修改前系统会输出该领导的全部信息,修改时系统会输出是否更改;删除中系统提供了按编号或姓名删除,删除前系统会再次提醒使用者是否确定删除;在查找中亦提供了按编号或姓名查找;在输入完毕后按0返回主菜单。,以便操作员更方便地使用该系统注:各子菜单项均有重新显示,并顺利返回到主菜单。如果要保存信息的数据,必须退出到主菜单,系统会自动保存;system(“cls”)清除以前的内容,界面重新显示。system(“color 23”)设置当前的窗口和输出字体的颜色第四章 系统实现41 类实现class people/人员基类protected:int number;/编号char name20;/姓名char sex4;/性别int age;/年龄public:void show()cout编号setw(10)姓名setw(10)性别setw(10)年龄endl;coutnumbersetw(10)namesetw(10)sexsetw(10)ageendl;void set() cout请输入编号:number; cout请输入姓名:name; cout请输入性别:sex; cout请输入年龄:age;char *getname() return name; /获取名字 int getno() return number;/获取编号 int getage() return age; /获取年龄 char* getsex()return sex; /获取性别void ren(int n) coutnendl; void add(int n,char *na,int ag,char *se)number=n;age=ag;strcpy(name,na);strcpy(sex,se);class leader: public people/领导类private:char bumen20;char zhicheng20;public:void set1()set();cout请输入任职部门:bumen; cout请输入职称:zhicheng;void setbu(char bu)strcpy(bumen,bu);void setzhi(char zhi)strcpy(zhicheng,zhi);void show1() show();cout部门setw(10)职称endl;coutbumensetw(10)zhichengendl;void add1(int n,char *na,int ag,char *se,char *bu,char *zhi)add( n, na, ag, se);strcpy(bumen,bu);strcpy(zhicheng,zhi);char *getbu()return bumen;/获取部门char *getzhi()return zhicheng;/获取职称;类似的,在people类的基础上派生出student类,teacher类。42 函数实现 void leaderbase:data()/定义领导维护 int choice=1; int b=1;/标记变量 char x; int nan=0;/男领导 int nv=0; /女领导 char name20; /姓名 int number;/编号 int age;/年龄 char zhi20; /职称 char sex4;/性别 char bu20;/系部 leader *r; while (choice!=0) cout; cinchoice; switch (choice) case 1: /新增 system(color 17); /颜色 system(cls);/清屏 coutnumber; coutname; coutage; coutsex; if(strcmp(male,sex)!=0&strcmp(f,sex)!=0) while(b) cout输入性别有误,请重新输入:sex; if(strcmp(male,sex)=0|strcmp(f,sex)=0) b=0; if(strcmp(male,sex)=0) nan+;/统计男女领导的人数 else nv+; coutbu; coutzhi; add(number,name,age,sex,bu,zhi); break; case 2: /根据查询结果更改 system(color f4); /颜色 system(cls); cout 按编号更改1endl; cout 按姓名更改2endl; cout 返回 0b; while(b) switch(b) case 1: coutnumber; r=query(number); if (r=null) cout该领导不存在show1(); cout是否确认更改任职部门?(y/n)x; if(x=y|x=y) cout输入新的任职部门:bu; r-setbu(bu); add(number,name,age,sex,bu,zhi); cout是否确认更改职称?(y/n)x; if(x=y|x=y) cout请输入新的职称zhi; r-setzhi(zhi); add(number,name,age,sex,bu,zhi); r-show1(); break; case 2: coutname; r=query1(name); if (r=null) cout该领导不存在show1(); cout是否确认更改任职部门?(y/n)x; if(x=y|x=y) cout输入新的任职部门:bu; r-setbu(bu); add(number,name,age,sex,bu,zhi); cout是否确认更改职称?(y/n)x; if(x=y|x=y) cout请输入新的职称zhi; r-setzhi(zhi); add(number,name,age,sex,bu,zhi); r-show1(); break; case 3:break; break; break; case 3:/删除 system(color f1); /颜色 同样是调用doc system(cls); cout 按编号删除 1endl; cout 按姓名删除 2endl; cout 返回 0b; while(b!=0)switch(b) case 1: coutnumber; r=query(number); if (r=null) cout该领导不存在endl; break; delnu(number); b=0; break; case 2: cout输入领导姓名:name; r=query1(name); if (r=null) cout该领导不存在endl; break; delname(name);b=0; break; case 3:break; break; break; case 4: /查找 system(color 07); /颜色 system(cls); cout 按编号查找 1endl; cout 按姓名查找 2endl; cout 返回 0b; while(b!=0) switch(b) case 1: coutnumber; r=query(number); if (r=null) cout该领导不存在show1(); break; case 2: coutname; r=query1(name); if (r=null) cout该领导不存在show1(); break; case 3: break; break; break; case 5:/显示信息 system(color fa); /颜色 system(cls); disp(); break; case 6: system(color fd); /颜色 system(cls); clear(); break; case 7: system(color 48); /颜色 system(cls); cout 统计男领导人数 1endl; cout 统计女领导人数2endl; cout 返回 0b; while(b!=0) switch(b) case 1: cout该高校男领导人数ren(nan); b=0; break; case 2: cout该高校女领导人数ren(nv); b=0; break; case 3:break; break; 类似的,定义teacherbase类与studentbase类的数据维护data函数,实现对人员信息的新增、更改、删除 、查找 、显示、全删 、统计功能。43 主函数实现int main() a: int choice=1; leaderbase l; teacherbase t; studentbase s;while(choice!=0) cout*endl; coutendl; coutendl; coutsetw(20)*欢迎使用高校人员管理系统*endl; coutendl; coutendl; coutsetw(50) -n; coutsetw(50) 请选择您所需的操作 n; coutsetw(50) n; coutsetw(50) 操作 1,领导信息管理n; coutsetw(50) n; coutsetw(50) 操作 2,教师信息管理 n; coutsetw(50) n; coutsetw(50) 操作 3,学生信息管理 n; coutsetw(50) n; coutsetw(50) 操作 0,退出信息管理系统 n; coutsetw(50)choice; switch(choice) case 1: while(1) coutsetw(20); l.data(); goto a; case 2: while(1) coutsetw(20); t.data(); goto a; case 3: while(1) coutsetw(20); s.data(); goto a; break; return 0;第五章 系统测试51 模块测试以管理领导信息为例进行说明。(1)选择对领导信息进行添加 ,见图51 图51(2)添加界面如图52 图52(3)可以按编号和姓名进行更改,见图53 图53(4)按编号更改如图54 图54(5)按姓名删除如图55 图55(6)可以按姓名、编号进行查找,如图56 图56(7)按姓名进行查找,如图57 图57(8)对领导信息进行显示,如图58 图58(9)可以对人员信息进行统计,如图59 图59 (10)对男领导人数进行统计,如图510 图51052 课程设计过程中遇到的问题(1)程序实现七个功能,怎样选择何种功能。解决方法:应用switch语句,分多种情况进行选择。(2)系统在输入过程中不能自动保存,必须退出时才能自动保存。用的是析构函数保存。(3)窗口中内容太多,显得杂乱,颜色只有黑色。从网上搜索到了清屏函数system(”cls”),使屏幕干净、整洁。并有system(”color 2f”)颜色设置,告别了单一的画面总 结通过本程序设计掌握了类对象、类数组、继承、派生、重载、输入输出流的定义和使用,对使用c+语言编码有了更深层次的理解,也认识到了自己还有许多不足之处,达到了实验目的。本系统基本完成了题目的功能要求,并且还在一定程度上进行了优化,具体如下:优点:删除时可以重新选择;对无效数据的输入进行了有效的判断;在删除和查询时既可以按编号也可以按姓名;每次删除后自动将人员信息显示出来。缺点:对于重名的人员系统照旧可以添加,没有提醒;人员的编号可以重复。可以改进的地方:在添加成员时进行验证,看所输姓名和编号是否重复,若重复进行重新输入;在实现七个功能的地方添加exit函数,一旦操作失误,不想继续进行,则系统跳转会主界面进行新的操作选择。致 谢在课程设计过程中遇到了很多问题,不过在老师和和同学们的帮助下大部分都得以解决,首先要对他们表示感谢。同时,我们也要感谢学校为我们提供了大量的图书,通过看书我们也学到了很多课堂上学不到的东西。通过此次课程设计我最大的收获是学会了自主学习,也增加了与老师和同学们的交往、增进了相互之间的感情。由于自己水平和能力有限,其中有不足和疏漏之处,恳求老师批评指正。参考文献1张军安.c+设计教程.西安:西北工业大学出版社 20062 周霭如 .林伟健. c+程序设计基础 .北京:电子工业出版社 20023 李岩 visual c+实用教程 北京:科学教育出版社 20034 徐晓梅 高丽 visual c+程序设计 北京:电子工业出版社 20045 陈伟柱 c+代码设计与重用 北京:人民邮电出版社 2002附 录44#include#include#include#include #includeconst int maxr=100; class people/人员基类protected:int number;/编号char name20;/姓名char sex4;/性别int age;/年龄public:void show()cout编号setw(10)姓名setw(10)性别setw(10)年龄endl;coutnumbersetw(10)namesetw(10)sexsetw(10)ageendl;void set() cout请输入编号:number; cout请输入姓名:name; cout请输入性别:sex; cout请输入年龄:age;char *getname() return name; /获取名字 int getno() return number;/获取编号 int getage() return age; /获取年龄 char* getsex()return sex; /获取性别void ren(int n) coutnendl; void add(int n,char *na,int ag,char *se)number=n;age=ag;strcpy(name,na);strcpy(sex,se);class leader: public people/领导类private:char bumen20;char zhicheng20;public:void set1()set();cout请输入任职部门:bumen; cout请输入职称:zhicheng;void setbu(char bu)strcpy(bumen,bu);void setzhi(char zhi)strcpy(zhicheng,zhi);void show1() show();cout部门setw(10)职称endl;coutbumensetw(10)zhichengendl;void add1(int n,char *na,int ag,char *se,char *bu,char *zhi)add( n, na, ag, se);strcpy(bumen,bu);strcpy(zhicheng,zhi);char *getbu()return bumen;/获取部门char *getzhi()return zhicheng;/获取职称;class leaderbaseprivate:int top;leader readmaxr;public:leaderbase()/将领导信息从leader.txt读取到read中leader l;top=-1;fstream file(d:leader.txt,ios:in);while(1)file.read(char*)&l,sizeof(l);if(!file)break;top+;readtop=l;file.close(); void delnu(int n)/按编号删除 int i,y=0; char x; for ( i=0;i=top;i+) if (readi.getno()=n) cout该领导情况:endl; coutsetw(10)编号setw(10)姓名setw(10)年龄setw(10)性别setw(10)系部setw(10)职称endl; coutsetw(10)readi.getno()setw(10)readi.getname()setw(10)readi.getage()setw(10)readi.getsex()setw(10)readi.getbu()setw(10)readi.getzhi()endl; cout是否确认删除?(y/n)x; if(x=y|x=y) y+; for(;i=top-1;i+) readi=readi+1; top-;/每删除一个对总是减少一个 if(y=0) cout未删除该领导!endl; else cout删除后的信息为:endl; for (int i=0;i=top;i+) readi.show1(); void delname(char*na)/按姓名删除 int i,y=0; char x; for ( i=0;i=top;i+) if(strcmp(readi.getname(),na)=0) coutsetw(10)编号setw(10)姓名setw(10)年龄setw(10)性别setw(10)系部setw(10)职称endl; coutsetw(10)readi.getno()setw(10)readi.getname()setw(10)readi.getage()setw(10)readi.getse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《可口可乐收购汇源》课件
- 销售人员上半年工作总结(18篇)
- 2024抵押贷款委托担保合同书
- 苏州科技大学天平学院《机械制图二》2021-2022学年第一学期期末试卷
- 农药制造中的质量控制策略考核试卷
- 《招投标培训》课件
- 2024年政教副主任工作总结(3篇)
- 制造业数字化设计与制造提升产品开发效率考核试卷
- 信息系统的数据管理与数据挖掘技术考核试卷
- 安全生产风险管理基础培训课件考核试卷
- 2024年发展对象考试试题库及答案(完整版)
- 跨境电商数据分析与应用-课程标准
- (高清版)JTG 5210-2018 公路技术状况评定标准
- DZ∕T 0033-2020 固体矿产地质勘查报告编写规范(正式版)
- 2024年辅警招聘考试试题库附参考答案(完整版)
- 《电力建设施工企业安全生产标准化实施规范》
- 如何开展指向学科核心素养的大单元设计
- 三叉神经微血管减压术的手术配合专家讲座
- 国旗国徽国歌知识讲座
- 露营基地合同协议书
- 2024雨量雷达监测系统技术导则
评论
0/150
提交评论