1、基于C+面向对象程序设计实例课程设计汇报汇报题目: 高校人员信息管理系统 作者所在系部: 计算机科学和工程系 作者所在专业: 计算机科学和技术 作者所在班级: 作 者 姓 名 : 指导老师姓名: 完 成 时 间 : 6月 基于C+面向对象程序设计实例任务书一目标和要求1、目标(1)要求学生能够熟练掌握C+语言基础知识和技能。(2)基础掌握面向对象程序设计基础思绪和方法。(3)能够利用所学基础知识和技能,处理简单面向对象程序设计问题。2、基础要求(1)要求利用面向对象方法和C+编程思想来完成系统设计。 (2)在系统设计中,要求利用面向对象机制(继承、派生及多态性)来实现系统功效,而且要建立清楚类
2、层次关系。 (3)在系统设计中要分析和定义各个类,每个类中要有各自数据组员和组员函数。 (4)主函数中提供菜单选项,并给出足够选择信息和提醒信息。(5) 程序含有一定健壮性,不会因为用户输入错误引发程序运行错误而中止实施。对输入值类型、大小范围、字符串长度等,进行正确性检验,对不正当输入值给出犯错信息,指犯错误类型,等候重新输入。3、创新要求在基础要求达成后,可依据实际情况进行创新设计,如依据查找结果进行修改功效及设计出比较友好界面等。二验收方法完成设计内容以后,即可开始验收。验收时,首先由学生简明说明所做题目标思绪、设计结构及实现过程,然后运行程序并进行测试,对输出结果作出解释,同时认真回复
3、老师提出问题。三课设汇报在完成验收以后,提交课设汇报。其中汇报中需包含系统设计要求,设计思绪,系统功效模块图,系统步骤图,类层次图(包含类组员列表),调试过程,关键程序代码,总结,参考书目等。另外,课设汇报要严格遵守模板文件格式要求,思绪清楚,内容详实丰富。四成绩评定课设总成绩=验收成绩(50%)+课程设计汇报成绩(30%)+程序源代码(10%)+课设态度、考勤和遵守教学制度情况 (10%)五说明1、每位同学在以下题目中任选一个来完成。2、学生应严格遵守课堂秩序,按时上机,认真完成各项任务。3、上机前做好充足准备,包含事先写好关键程序代码,以确保充足利用上机时间调试程序。4、每位同学各自独立完
4、成自己题目,严禁剽窃或拷贝。5、必需按要求时间上交课设汇报。六课设题目题目1 “高校职员信息管理系统”1、问题描述某高校有四类职员:老师、试验员、行政人员,老师兼行政人员;共有信息包含:编号、姓名、性别、年纪等。其中,老师还包含信息有:所在系部、专业、职称;试验员还包含信息由:所在试验室、职务;行政人员还包含信息有:政治面貌、职称等。2、功效要求(1)基础功效1) 添加功效:程序能够任意添加上述四类人员统计,可提供选择界面供用户选择所要添加人员类别,要求职员编号要唯一,假如添加了反复编号统计时,则提醒数据添加反复并取消添加。2) 查询功效:可依据编号、姓名等信息对已添加统计进行查询,假如未找到
5、,给出对应提醒信息,假如找到,则显示对应统计信息。3) 显示功效:可显示目前系统中全部统计,每条统计占据一行。4) 编辑功效:可依据查询结果对对应统计进行修改,修改时注意编号唯一性。5)删除功效:关键实现对已添加人员统计进行删除。假如目前系统中没有对应人员统计,则提醒“统计为空!”并返回操作;不然,输入要删除人员编号或姓名,依据所输入信息删除该人员统计,假如没有找到该人员信息,则提醒对应统计不存。6) 统计功效:能依据多个参数进行人员统计。比如,统计四类人员数量和总数,或统计男、女职员数量,或统计某年纪段人员数量等。7)保留功效:可将目前系统中各类人员统计存入文件中,存入方法任意。8)读取功效
6、:可将保留在文件中人员信息读入到目前系统中,供用户进行使用。(2)扩展功效在完成以上基础功效基础上,可自行进行扩展或完善,比如: 1) 添加人员统计时,考虑多种数据有效性。2)组合查询功效实现。3)可按人员一些信息进行排序。4)对文件读写使用二进制信息。3、问题处理方案 依据系统功效要求,能够将问题处理分为以下步骤: 1)应用系统分析,建立该系统功效模块框图和界面组织和设计;2)分析系统中各个实体及它们之间关系; 3)依据问题描述,设计系统类层次; 4)完成类层次中各个类描述; 5)完成类中各个组员函数定义; 6)完成系统应用模块; 7)功效调试; 8)完成系统总结汇报。摘 要在目前学校人员管
7、理体制下,高等学校不仅要有浓厚学风气息、雄厚师资力量、优异精良硬件设备,和此同时,作为优异科学技术和优异文化承载者和传输者,更需要有一个实施效率高而且便于操作现代信息化管理系统,以实现对高校各类人员进行添加、查找、修改、删除、统计、保留、读取等动态管理目标。本文利用Microsoft Visual C+6.0ADO编写程序,实现了高校对试验员、老师、行政人员、老师兼行政人员管理操作。本系统关键有四个管理模块试验员管理系统、老师管理系统、行政人员管理系统、老师兼行政人员管理系统。已经过全方面系统测试,能够很好运行,达成了预期效果。关键词:系统设计 类 信息 人员管理目 录摘要第1章 绪 论11.
8、1 课程设计目标11.2 课程设计背景和意义11.1.1 课程设计背景11.1.2 课程设计意义11.3 课程设计环境1第2章 需求分析22.1 问题描述22.2 功效需求22.3 问题处理方案3第3章 系统设计43.1 数据设计43.1.1 类设计43.1.2 类之间关系53.2结构设计63.2.1 系统步骤图63.2.2 界面设计6第4章 系统实现94.1 类实现94.2 函数实现114.3 主函数实现21第5章 系统测试235.1 模块测试235.2 课程设计过程中碰到问题32总结33致谢34参考文件35第1章 绪论1.1 课程设计目标(1)要求学生能够熟练掌握C+语言基础知识和技能。(
9、2)基础掌握面向对象程序设计基础思绪和方法。(3)能够利用所学基础知识和技能,处理简单面向对象程序设计问题。1.2 课程设计背景和意义1.2.1课程设计背景 1. 理论研究基础(1)综合C+编程知识,结合实际加以应用。(2)参考书本对书本熟悉,应用类、数组等内容。2. 技术层面支持安装Microsoft Visual C+ 6.0集成开发环境。1.2.2 课程设计意义综合复习C+面向对象程序设计全部知识点,深入熟练面向对象程序开发方法和步骤,提升学生独立分析问题和处理问题能力,培养学生中、小型实践项目开发能力。让我们提前感受到编写软件过程和处理问题方法。1.3 课程设计环境软件环境:Micro
10、soft Visual C+ 6.0集成开发环境。硬件环境:图书馆五楼机房,笔记本电脑。第2章 需求分析2.1 问题描述某高校有四类职员:老师、试验员、行政人员,老师兼行政人员;共有信息包含:编号、姓名、性别、年纪等。其中,老师还包含信息有:所在系部、专业、职称;试验员还包含信息由:所在试验室、职务;行政人员还包含信息有:政治面貌、职称等2.2 功效要求(1)基础功效1) 添加功效:程序能够任意添加上述四类人员统计,可提供选择界面供用户选择所要添加人员类别,要求职员编号要唯一,假如添加了反复编号统计时,则提醒数据添加反复并取消添加。2) 查询功效:可依据编号、姓名等信息对已添加统计进行查询,假
11、如未找到,给出对应提醒信息,假如找到,则显示对应统计信息。3) 显示功效:可显示目前系统中全部统计,每条统计占据一行。4) 编辑功效:可依据查询结果对对应统计进行修改,修改时注意编号唯一性。5)删除功效:关键实现对已添加人员统计进行删除。假如目前系统中没有对应人员统计,则提醒“统计为空!”并返回操作;不然,输入要删除人员编号或姓名,依据所输入信息删除该人员统计,假如没有找到该人员信息,则提醒对应统计不存。6) 统计功效:能依据多个参数进行人员统计。比如,统计四类人员数量和总数,或统计男、女职员数量,或统计某年纪段人员数量等。7)保留功效:可将目前系统中各类人员统计存入文件中,存入方法任意。8)
12、读取功效:可将保留在文件中人员信息读入到目前系统中,供用户进行使用。(2)扩展功效在完成以上基础功效基础上,可自行进行扩展或完善,比如: 1) 添加人员统计时,考虑多种数据有效性。2)组合查询功效实现。3)可按人员一些信息进行排序。4)对文件读写使用二进制信息。2.3 问题处理方案依据系统功效要求,能够将问题处理分为以下步骤: 1)应用系统分析,建立该系统功效模块框图和界面组织和设计;2)分析系统中各个实体及它们之间关系; 3)依据问题描述,设计系统类层次; 4)完成类层次中各个类描述; 5)完成类中各个组员函数定义; 6)完成系统应用模块; 7)功效调试; 8)完成系统总结汇报。第3章 系统
13、设计3.1 数据设计3.1.1 类设计此系统共设计了九个类:基类(class Person),试验员类(class Experimenter),老师类(class Teacher),行政人员类(class Staff),老师兼行政人员类(class Tea_Sta)基类中有int num; 公用数据组员用于统计类组员编号int age; 公用数据组员用于统计类组员年纪string name; 公用数据组员用于统计类组员姓名string sex; 公用数据组员用于统计类组员性别virtual void Input(); 公有数据组员函数用于输入组员信息virtual void Output();
14、 公有数据组员函数用于输出组员信息int GetNum(); 公有数据组员函数用于取得组员编号string GetName(); 公有数据组员函数用于取得组员姓名试验员类中添加了string library; 公有数据组员用于统计类组员试验室string zw; 公有数据组员用于统计类组员职务int choice2; 公有数据组员用于选择组员性别老师类中添加了string depart; 公有数据组员用于统计类组员部门string spec; 公有数据组员用于统计类组员专业string title; 公有数据组员用于统计类组员职称 int choice1; 公有数据组员用于选择组员部门int
15、choice2; 公有数据组员用于选择组员性别行政人员类中添加了string zzmm; 公有数据组员用于统计类组员政治面貌string zc; 公有数据组员用于统计类组员任职职称int choice2; 公有数据组员用于选择组员性别老师兼行政人员类添加了int choice1; 公有数据组员用于选择组员部门int choice2; 公有数据组员用于选择组员性别还有四个功效相同功效函数类,其中有Exp_Manage 类Tea_Manage 类 Staf_Manage 类Tea_Staf_Manage类。分别实现不一样对应功效。 Tea_Sta TeaTMAX; TMAX为常量,为数组中可存放老
16、师统计最大数;int top; top表示目前系统中存放统计个数;Tea_Staf_Manage()top=0;初始时统计个数为0,所以设置top=0;void Add(); 实现该类统计添加;void Show(); 实现该类全部统计显示; void Search(); 实现该类统计查询;void Edit(); 实现该类统计修改;void Delete(); 实现该类统计删除;void Total(); 实现该类统计统计;void Save(); 将该类统计保留到文件;void Read(); 可从文件中将统计读取到该类数组中;试验员、老师、行政人员管理类中函数全部相同,在此略。3.1.2
17、 类之间关系基类:(class Person)派生类有:(class Experimenter),(class Teacher),(class Staff)(class Tea_Sta)四个平行关系类,实现不一样类功效:(class Exp_Manage)(class Tea_Manage)(class Staf_Manage)(class Tea_Staf_Manage)3.1.3 函数设计在四个管理类中定义了以下相同函数,功效如其后所说void Add(); 实现该类统计添加;void Show(); 实现该类全部统计显示; void Search(); 实现该类统计查询;void Edi
18、t(); 实现该类统计修改;void Delete(); 实现该类统计删除;void Total(); 实现该类统计统计;void Save(); 将该类统计保留到文件;void Read(); 可从文件中将统计读取到该类数组中;3.2 结构设计3.2.1 系统步骤图人员类老师类试验员类行政人员类老师兼行政人员类 图313.2.2 界面设计主菜单界面 图32 主菜单界面图试验员类菜单界面 图33 试验员类菜单界面图老师类菜单界面 图34老师类菜单界面图政人员管理菜单界面 图35 政人员管理菜单界面图老师兼行政人员管理菜单界面 图36 老师兼行政人员管理菜单界面图第4章 系统实现4.1 类实现对
19、于基类定义class Personpublic:int num; 公用数据组员用于统计类组员编号int age; 公用数据组员用于统计类组员年纪string name; 公用数据组员用于统计类组员姓名string sex; 公用数据组员用于统计类组员性别public:Person(int n=0,string nm=,string s=,int a=0):num(n),name(nm),sex(s),age(a);virtual void Input();virtual void Output();int GetNum()return num; 公有数据组员函数用于取得组员编号string G
20、etName()return name; 公有数据组员函数用于取得组员姓名;对试验员派生类定义class Experimenter:public Personpublic:string library; 公有数据组员用于统计类组员试验室string zw; 公有数据组员用于统计类组员职务int choice2; 公有数据组员用于选择组员性别public:Experimenter(int n=0,string nm=,string s=男,int a=0,string l=,string z=):Person(num,name,sex,age),library(l),zw(z); void In
21、put() 组员函数用于输入组员信息 void Output() 组员函数用于输出组员信息;对于老师派生类定义class Teacher:virtual public Personpublic:string depart; 公有数据组员用于统计类组员部门string spec; 公有数据组员用于统计类组员专业string title; 公有数据组员用于统计类组员职称 int choice1; 公有数据组员用于选择组员部门int choice2; 公有数据组员用于选择组员性别public:Teacher(int n=0,string nm=,string s=男,int a=0,string d
22、=电子系,string sp=,string t=):Person(n,nm,s,a),depart(d),spec(sp),title(t);void Input() 组员函数用于输入组员信息 void Output() 组员函数用于输出组员信息对于行政人员派生类定义class Staff:virtual public Personpublic:string zzmm; 公有数据组员用于统计类组员政治面貌string zc; 公有数据组员用于统计类组员任职职称int choice2; 公有数据组员用于选择组员性别public:Staff(int n=0,string nm=,string s
23、=男,int a=0,string z=,string zc=):Person(n,nm,s,a),zzmm(z),zc(zc);void Input() 组员函数用于输入组员信息 void Output() 组员函数用于输出组员信息;对于老师兼行政人员类定义class Tea_Sta:public Teacher,public Staffpublic:int choice1; 公有数据组员用于选择组员部门int choice2; 公有数据组员用于选择组员性别Tea_Sta(int n=0,string nm=,string s=男,int a=0,string d=电子系,string sp
24、=,string t=,string z=,string zc=):Person(n,nm,s,a),Teacher(n,nm,s,a,sp,t),Staff(n,nm,s,a,z,zc);void Input() 组员函数用于输入组员信息 void Output() 组员函数用于输出组员信息;对于在四个管理类中函数功效全部相同,以老师类为例class Tea_Manage Teacher TeaTMAX; TMAX为常量,为数组中可存放老师统计最大数;int top; top表示目前系统中存放统计个数;public:Tea_Manage()top=0; 初始时统计个数为0,所以设置top=0
25、;void Add(); 实现该类统计添加;void Show(); 实现该类全部统计显示; void Search(); 实现该类统计查询;void Edit(); 实现该类统计修改;void Delete(); 实现该类统计删除;void Total(); 实现该类统计统计;void Save(); 将该类统计保留到文件;void Read(); 可从文件中将统计读取到该类数组中;;4.2 函数实现对于在四个管理类中定义了相同函数,以老师类为例添加功效:程序能够任意添加上述四类人员统计,可提供选择界面供用户选择所要添加人员类别,要求职员编号要唯一,假如添加了反复编号统计时,则提醒数据添加反
26、复并取消添加void Tea_Manage:Add()if(top=TMAX) cout用户已满endl;return; Teacher t;cout输入新添加人员信息endl;t.Input();for(int i=0;itop;i+)if (t.GetNum()=Teai.GetNum()cout该编号人员已存在endl;return; Teatop=t; top=top+1;cout添加成功!endl;显示功效:可显示目前系统中全部统计,每条统计占据一行。void Tea_Manage:Show()if(top=0)cout无数据!endl;return;coutsetw(10)编号se
27、tw(10)姓名setw(10)性别setw(10)年纪setw(10)系部setw(10)专业setw(10)职称endl;for(int i=0;itop;i+)Teai.Output();查询功效:可依据编号、姓名等信息对已添加统计进行查询,假如未找到,给出对应提醒信息,假如找到,则显示对应统计信息。void Tea_Manage:Search()if(top=0)cout目前系统中没有存放统计endl;return; int choice;cout请选择查找方法:1.按编号查找 2.按姓名查找.choice;switch(choice)case 1:cout请输入要查找编号:num;
28、for(int i=0;itop;i+)if(Teai.GetNum()=num) Teai.Output(); return;cout查无此人!endl; break;case 2:cout请输入要查找姓名name; for(int i=0;itop;i+) if(Teai.GetName()=name) Teai.Output();for( i=0;itop;i+)if(Teai.GetName()=name)return;cout查无此人!endl; break;default :cout无此选项!请重试!endl;break;void Tea_Manage:Edit()if(top=0
29、)cout目前系统中没有存放统计!endl;return;int num;cout请输入要查找教编号:num; for(int i=0;itop;i+)if(Teai.GetNum()=num)cout请对这位老师信息进行修改:endl;Teai.Input();cout修改成功endl;return; cout查无此人endl;删除功效:关键实现对已添加人员统计进行删除。假如目前系统中没有对应人员统计,则提醒“统计为空!”并返回操作;不然,输入要删除人员编号或姓名,依据所输入信息删除该人员统计,假如没有找到该人员信息,则提醒对应统计不存。void Tea_Manage:Delete()if(
30、top=0) cout目前系统中没有存放统计!endl;return;cout1、按编号查找删除 2、按姓名查找删除choice; switch(choice) case 1: coutnum; for(int i=0;itop;i+) if(num=Teai.num) cout是否确定删除? 1、是 2、否 choice; switch(choice) case 1: for(int j=i;jtop-1;j+) Teaj=Teaj+1; cout删除成功!endl; top-; ;break; case 2:return; default:cout无此项,失败!endl;break; re
31、turn; cout无此人!endl; ;break; case 2: coutname; for(int i=0;itop;i+) if(name=Teai.name) cout是否确定删除? 1、是 2、否 choice; switch(choice) case 1: for(int j=i;jtop-1;j+) Teaj=Teaj+1; cout删除成功!endl; top-; ;break; case 2:return; default:cout无此项,失败!endl;break; return; cout无此人!endl; break;default:cout没有此项,失败:endl
32、;break;统计功效:能依据多个参数进行人员统计。比如,统计类中人员数量和总数,或统计男、女职员数量,不一样部门职员数量等。void Tea_Manage:Total()cout1 按人数统计 2 按性别统计 3 按系别统计 endl;int choice;cout请输入你选择choice;switch(choice)case 1:cout老师类人数为:topendl;break;case 2:int a=0,b=0;for(int i=0;itop;i+)if(Teai.sex=男) a+;if(Teai.sex=女) b+;cout男老师人数为aendl;cout女老师人数为bendl;
33、break;case 3:int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;for(int i=0;itop;i+)if(Teai.depart=电子系) a1+;if(Teai.depart=机械系) a2+;if(Teai.depart=经管系) a3+;if(Teai.depart=建工系) a4+;if(Teai.depart=计算机系) a5+;if(Teai.depart=外语系) a6+;if(Teai.depart=财会系) a7+;if(Teai.depart=材料系) a8+;if(Teai.depart=文法系) a9+;c
34、out电子系老师人数为a1endl;cout机械系老师人数为a2endl;cout经管系老师人数为a3endl;cout建工系老师人数为a4endl;cout计算机系老师人数为a5endl;cout外语系老师人数为a6endl;cout财会系老师人数为a7endl;cout材料系老师人数为a8endl;cout文法系老师人数为a9endl;break;default:cout输入错误。请重新输入endl;break;保留功效:可将目前系统中各类人员统计存入文件中,存入方法任意。void Tea_Manage:Save()ofstream out(D:ying2.txt,ios:out);if(
35、!out)cout打开失败!endl;return;cout打开成功!endl;for(int i=0;itop;i+)outTeai.num Teai.name Teai.sex Teai.age Teai.depart Teai.spec Teai.title endl;cout写入成功!endl;out.close();读取功效:可将保留在文件中人员信息读入到目前系统中,供用户进行使用。void Tea_Manage:Read()ifstream in(D:ying2.txt,ios:in);if(!in)cout打开失败!Teai.num Teai.nameTeai.sexTeai.age