当前位置:文档之家› C 高校人员信息管理系统

C 高校人员信息管理系统

《基于C++的面向对象程序设计实例》课程设计报告课程名称 C++面向对象程序设计课题名称高校人员信息管理系统专业计算机科学与技术班级 1220541学号姓名苗鹏程指导教师侯欢欢(一)、课程设计题目:高校人员信息管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。

3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。

(三)、设计方法和基本原理:1.功能要求添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。

查询功能可根据编号、姓名等信息对已添加的记录进行查询。

如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

显示功能可显示当前系统中所有记录。

修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

删除功能对已添加的人员记录进行删除。

如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

统计功能能根据多种参数进行人员的统计。

例如:统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。

保存功能将当前系统中各类人员记录存入文件中。

读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。

在完成以上基本功能的基础上,可自行进行扩展或完善。

2.问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书目录摘要 ............................................................ 第一章绪论........................................................1.1 课程设计的目的 (4)1.2 课程设计的背景和意义 (4)1.2.1 课程设计的背景 (4)1.2.2 课程设计的意义 (4)1.3 课程设计环境 (5)第二章需求分析 (6)2.1 问题描述 (6)2.2 功能要求 (6)2.3 问题的解决方案 (6)第三章系统设计 (8)3.1 数据设计 (8)3.1.1 类设计 (8)3.1.2 类之间的关系 (10)3.1.3 函数设计 (10)3.2 结构设计 (10)3.2.1 系统流程图 (10)3.2.2 界面设计 (11)第四章系统实现 (13)4.1 类实现 (13)4.2 函数实现 (13)4.3 主函数实现 (21)第五章系统测试 (23)5.1 模块测试 (23)5.2 课程设计过程中遇到的问题 (28)结论 (29)致谢 0参考书目 (31)1.第一章绪论1.1 课程设计的目的《C++面向对象程序设计》是计算机专业的基础课程,本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。

1.2 课程设计的背景和意义随着社会的发展,各种公司规模逐渐变大,需要对公司的员工信息进行统一有效的管理,方便的对人员的信息进行增添、查阅、修改、删除、保存,这就必须有一个实用的管理系统。

1.2.1 课程设计的背景1. 理论研究基础掌握C++基本知识,具体包括:掌握面向对象基本知识和基本概念,掌握静态成员的定义与作用,掌握友元的定义,掌握运算符重载方法,继承与派生,虚函数的定义和使用,输入、输出流操作,文件的创建、打开、读写、关闭等。

2. 技术层面的支持(1)定义基类与派生类,将数据成员与成员函数封装在类中。

(2)设计增添、显示、查询、修改、删除、保存等函数。

1.2.2 课程设计的意义(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。

帮助了同学系统的掌握C++课程的主要内容。

(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。

课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。

(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。

1.3 课程设计环境Microsoft Visual C++ 6.02.第二章需求分析2.1问题描述某高校有四类人员:教师、实验员、行政人员、教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。

其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息有:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。

2.2功能要求1)添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。

2)查询功能可根据编号、姓名等信息对已添加的记录进行查询。

如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

3)显示功能可显示当前系统中所有记录。

4)修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

5)删除功能对已添加的人员记录进行删除。

如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

6)统计功能能根据多种参数进行人员的统计。

例如:统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。

7)保存功能将当前系统中各类人员记录存入文件中。

8)读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。

在完成以上基本功能的基础上,可自行进行扩展或完善。

2.3问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体以及它们之间的关系;3)根据问题描述,设计系统的类层次;4)完成类层次中各个类的描述;5)完成类中各个成员函数的定义;6)完成系统的应用模块;7)功能调试;8)完成系统总结报告。

3.第三章系统设计3.1 数据设计3.1.1 类设计1.人员的管理需包含人员的基本信息,所以定义一个人员类如表3-1所示:2. 根据高校人员的工作性质的不同,将所有员工分为教师、实验员、行政人员,教师兼行政人员表3-2教师类表3-3实验员类表3-4行政人员类表3-5教师兼行政人员类4、为了控制以上的类,分别建立了4个管理类,以经理的管理了为例:3.1.2 类之间的关系员工类派生出教师类、实验员类、行政人员类,教师类和行政人员类派生出教师兼行政人员类。

3.1.3 函数设计根据要求,为了功能的实现,通过top实现功能。

分别以8个功能函数进行对数据的操作(下面以经理类为例)void Add(); (信息的添加)3.23.2.3.2.2 界面设计1.主菜单界面,如图3—3所示图3—3 主菜单2.教师菜单界面,如图3-4图3—4 教师管理界面3.教师查询界面,如图3-5所示:图3—5 教师查询界面4.教师删除界面,如图3-6所示:图3—6 教师删除界面4.第四章系统实现4.1 类实现class Person //人员类class Teacher:virtual public Person //教师类class Government:virtual public Person //行政人员类class Experimenter:public Person //实验员类class Tea_Gover:public Teacher,public Government: //教师兼行政人员类class Tea_manage //教师管理类class Gov_manage //行政人员管理类class Exp_manage //实验员管理类class Tea_GoverManage //教师兼行政人员管理类4.2 函数实现void Person::Input() //员工信息输入{cout<<"请输入编号:"<<endl; cin>>num;cout<<"请输入名字:"<<endl; cin>>name;cout<<"请输入性别:"<<endl; cin>>sex;cout<<"请输入年龄:"<<endl; cin>>age;}void Teacher::Input_1() //教师信息输入{Input();cout<<"请输入所在系别:"<<endl; cin>>depart;cout<<"请输入专业名称:"<<endl; cin>>spec;cout<<"请输入职称:"<<endl; cin>>title;}void Person::Output () //员工信息输出{cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"性别:"<<sex<<endl;cout<<"年龄:"<<age<<endl;}void Teacher::Output_1() //教师信息输出{Output();cout<<"所在系别:"<<depart<<endl;cout<<"所在专业:"<<spec<<endl;cout<<"职称:"<<title<<endl;}int Person::GetNum() //返回编号{return num;}char Person::GetName() //返回姓名{return name[20];}char Person::GetSex() //返回性别{return sex[10];}int Person::GetAge() //返回年龄{return age;}char Teacher::GetDepart() //返回所在部门{return depart[20];}char Teacher::GetSpec() //返回专业{return spec[20];}char Teacher::GetTitle() //返回职称{return title[20];}void Tea_Manage::Add() //教师信息的添加{Teacher t;cout<<"请输入新增人员的信息:"<<endl;t.Input_1();int i;for( i=0;i<top;i++){if(t.GetNum()==Tea[i].GetNum()){cout<<"编号已存在,请重新输入:"<<endl;break;}}if(i==top){if(top>1000)cout<<"内存已满,不可添加"<<endl;else if(top<=1000){Tea[top]=t;cout<<"添加成功"<<endl;top++;}return;}}void Tea_Manage::Show() //教师信息的显示{for(int i=0;i<top;i++){Tea[i].Output_1();cout<<"....................................."<<endl;}}void Tea_Manage::Search() //教师信息的查询{if(top==0){cout<<"没有任何信息"<<endl;}int choice;int i=0;int m=0; int n=0;int num;cout<<"请输入您的选择:"<<endl;cout<<"查询方式 1.按名字 2.按编号"<<endl;cin>>choice;switch(choice){case 1:{char name[20];cout<<"请输入您所查询的人员名字:"<<endl;cin>>name;for(i;i<top;i++){if(!strcmp(name,Tea[i].name )){Tea[i].Output_1();break;}}if(i==top)cout<<"查无此人"<<endl;}break;case 2:{cout<<"请输入编号:"<<endl;cin>>num;for(i=0;i<top;i++){if(num==Tea[i].GetNum()){Tea[i].Output_1();}if(i==top)cout<<"查无此人"<<endl;}}break;}}void Tea_Manage::Edit() //教师信息的修改{int i=0;Search();cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++"<<endl;cout<<"1.修改编号 2.修改姓名 3.修改性别 4.修改年龄 5.修改系别 6.修改专业 7.修改职称 0.退出"<<endl;cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++"<<endl;int choice;cin>>choice;switch(choice){case 1:cout<<"编号不可修改"<<endl;break;case 2:{char na[20];cout<<"请输入修改后的姓名:"<<endl; cin>>na;strcpy(Tea[i].name,na);cout<<"修改成功"<<endl;}break;case 3:{int m;char a[10];cout<<"输入修改后的内容:"<<endl;cin>>a;strcpy(Tea[i].sex,a);cout<<"修改成功,是否继续(1/2)"<<endl;cin>>m;if(m=1)return;}break;case 4:{int b,m;cout<<"请输入修改后的年龄:"<<endl;cin>>b;Tea[i].age=b;cout<<"修改成功,是否继续(1/2)"<<endl;cin>>m;if(m=1)return;}break;case 5:{int m;char n[20];cout<<"请输入修改后系部:"<<endl;cin>>n;strcpy(Tea[i].depart,n);cout<<"修改成功,是否继续(1/2)"<<endl;cin>>m;if(m=1)return;}break;case 6:{int m;char n[20];cout<<"请输入修改后专业:"<<endl;cin>>n;strcpy(Tea[i].spec,n);cout<<"修改成功,是否继续(1/2)"<<endl;cin>>m;if(m=1)return;}break;case 7:{int m;char n[20];cout<<"请输入修改后的职称:"<<endl;cin>>n;strcpy(Tea[i].title,n);cout<<"修改成功,是否继续(1/2)"<<endl;cin>>m;if(m=1)return;}break;case 0:cout<<"退出成功!"<<endl;break;default:cout<<"无此选项!请重试!"<<endl;break;}}void Tea_Manage::Delete() //教师信息的删除{Teacher t;int i=0;cout<<"请输入你想删除人员的编号:"<<endl; cin>>t.num;if(top==0)cout<<"没有人员选择"<<endl;for(i;i<top;i++){if(t.num==Tea[i].num){Tea[i]=Tea[i+1];top--;}break;if(i==top)cout<<"查无此人"<<endl;}cout<<"删除成功"<<endl;return;int m; cin>>m;if(m=1) return;}void Tea_Manage::Total() //教师信息的统计{cout<<top<<endl;}void Tea_Manage::Save() //教师信息的保存{if(!outfile){cerr<<"open error!"<<endl;abort();}for(int i=0;i<top;i++){outfile.write((char *)&Tea[i],sizeof(Tea[i]));}cout<<"保存成功"<<endl;outfile.close();}void Tea_Manage::Read() //教师信息的读出{if(!infile){cerr<<"open error!"<<endl;abort();}while(infile.read((char *)&Tea[top],sizeof(Tea[0])))top++;cout<<"读取成功"<<endl;infile.close();}4.3 主函数实现int main() //主函数的实现{cout<<" ***欢迎进入北华航天工业学院人员管理系统***"<<endl;int choice;do{cout<<" *****主菜单*****\n"<<endl;cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <"<<endl;cout<<"|| ||"<<endl;cout<<"|| 1 => 行政人员管理 2 => 教师管理||"<<endl;cout<<"|| 3 => 实验人员管理 4 =>教师兼行政人员管理||"<<endl;cout<<"|| 0 => 退出系统||"<<endl;cout<<"|| ||"<<endl;cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;cout<<"\n请输入您的选择:";cin>>choice;switch(choice){case 1:StuMenu();break;case 2:TeaMenu();break;case 3:ExpMenu();break;case 4:Tea_StaMenu();break;case 0:cout<<"\n您已安全退出系统."<<endl;break;default:cout<<"\n没有此选项.请重选."<<endl;break;}}while(choice!=0);cout<<"\n ***欢迎您下次再使用本系统!***"<<endl;return 0;}5.第五章系统测试5.1 模块测试以教师信息为例进行说明。

相关主题