C高校人员信息管理系统.docx
- 文档编号:16392847
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:26
- 大小:28.61KB
C高校人员信息管理系统.docx
《C高校人员信息管理系统.docx》由会员分享,可在线阅读,更多相关《C高校人员信息管理系统.docx(26页珍藏版)》请在冰点文库上搜索。
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)完成系统总结报告以及系统使用说明书
0
0
0
0
1
3
3
3
1
3
3
8
9
致谢0
1
1.第一章绪论
1.1课程设计的目的
《C++面向对象程序设计》是计算机专业的基础课程,本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。
1.2课程设计的背景和意义
随着社会的发展,各种公司规模逐渐变大,需要对公司的员工信息进行统一有效的管理,方便的对人员的信息进行增添、查阅、修改、删除、保存,这就必须有一个实用的管理系统。
1.2.1课程设计的背景
1.理论研究基础
掌握C++基本知识,具体包括:
掌握面向对象基本知识和基本概念,掌握静态成员的定义与作用,掌握友元的定义,掌握运算符重载方法,继承与派生,虚函数的定义和使用,输入、输出流操作,文件的创建、打开、读写、关闭等。
2.技术层面的支持
(1)定义基类与派生类,将数据成员与成员函数封装在类中。
(2)设计增添、显示、查询、修改、删除、保存等函数。
1.2.2课程设计的意义
(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。
帮助了同学系统的掌握C++课程的主要内容。
(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。
课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立
思考的条件。
(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。
1.3课程设计环境
MicrosoftVisualC++
2.第二章需求分析
问题描述
某高校有四类人员:
教师、实验员、行政人员、教师兼行政人员;共有的信息包括:
编号、姓名、性别、年龄等。
其中,教师还包含的信息有:
所在系部、专业、职称;实验员还包含的信息有:
所在实验室、职务;行政人员还包含的信息有:
政治面貌、职称等。
功能要求
1)添加功能
程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
2)查询功能
可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
3)显示功能
可显示当前系统中所有记录。
4)修改功能
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除功能
对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!
”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
6)统计功能
能根据多种参数进行人员的统计。
例如:
统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。
7)保存功能
将当前系统中各类人员记录存入文件中。
8)读取功能
将保存在文件中的人员信息读入到当前系统中,以供用户使用。
在完成以上基本功能的基础上,可自行进行扩展或完善。
问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体以及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告。
3.第三章系统设计
3.1数据设计
3.1.1类设计
1.人员的管理需包含人员的基本信息,所以定义一个人员类如表3-1所示:
表3-1员工类
类名
人员类
数据成员
protected:
num(编号)charname[20](姓名)
charsex[10](性别)age(年龄)
成员函数
public:
Input():
输入函数
Output():
输出函数
GetNum():
获取编号
GetName():
获取姓名
2.根据高校人员的工作性质的不同,将所有员工分为教师、实验员、行政人员,教师兼行政人员
表3-2教师类
类名
教师类(公有继承员工类)
数据成员
protected:
chardepart[20](部门);
charspec[20](专业);
chartitle[20](职称);
成员函数
public:
voidInput_1():
输入函数
voidOutput_1():
输出函数
charGetDepart():
获取部门
charGetSpec():
获取专业
charGetTitle():
获取职称
friendTea_Manage:
友元教师管理类
表3-3实验员类
类名
实验员类(公有继承员工类)
数据成员
protected:
chartextroom[20](所在实验室)
charpost[20](职务)
成员函数
public:
voidInput_3():
输入函数
voidOutput_3():
输出函数
charGetTextroom():
获取实验室
charGetPost():
获取职务
friendExp_Manage:
友元实验人员管理类
表3-4行政人员类
类名
行政人员类(公有继承员工类)
数据成员
public:
charpolitics[20]:
(政治面貌)
chartitle[20]:
(职称)
成员函数
public:
voidInput_2():
输入函数
voidOutput_2():
输出函数
charGetPolitics():
获取政治面貌
charGetTitle():
获取职称
friendSta_Manage:
友元行政人员管理类
表3-5教师兼行政人员类
类名
教师兼行政人员类(公有继承员工类)
数据成员
成员函数
Public:
voidInput_4():
输入函数
voidOutput_4():
输出函数
friendTea_Sta_Manage:
友元教师行政人员管理类
4、为了控制以上的类,分别建立了4个管理类,以经理的管理了为例:
表3-6教师管理类
类名
教师管理类
数据成员
TeacherTea[20](创建教师的空间);
top(统计人员数和进行操作时的指针);
3.1.2类之间的关系
员工类派生出教师类、实验员类、行政人员类,教师类和行政人员类派生出教师兼行政人员类。
3.1.3函数设计
根据要求,为了功能的实现,通过top实现功能。
分别以8个功能函数进行对数据的操作(下面以经理类为例)
voidAdd();(信息的添加)
voidSearch();(信息的查找)
voidEdit();(信息的编辑)
voidTotal();(信息的统计)
voidDelete();(信息的删除)
voidShow();(信息的显示)
voidSave();(信息的存储)
voidRead();(信息的读取)
3.2结构设计
3.2.1系统流程图
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类实现
classPersonetNum())
{
cout<<"编号已存在,请重新输入:
"< break; } } if(i==top) { if(top>1000) cout<<"内存已满,不可添加"< elseif(top<=1000) {Tea[top]=t; cout<<"添加成功"< top++; } return; } } voidTea_Manage: : Show()utput_1(); cout<<"....................................."< } } voidTea_Manage: : Search()名字2.按编号"< cin>>choice; switch(choice) { case1: { charname[20]; cout<<"请输入您所查询的人员名字: "< cin>>name; for(i;i { if(! strcmp(name,Tea[i].name)) { Tea[i].Output_1(); break; } } if(i==top) cout<<"查无此人"< }break; case2: { cout<<"请输入编号: "< cin>>num; for(i=0;i { if(num==Tea[i].GetNum()) { Tea[i].Output_1(); } if(i==top) cout<<"查无此人"< } }break; } } voidTea_Manage: : Edit()改编号2.修改姓名3.修改性别4.修改年龄5.修改系别6.修改专业7.修改职称0.退出"< cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"< intchoice;cin>>choice; switch(choice) { case1: cout<<"编号不可修改"< break; case2: { charna[20]; cout<<"请输入修改后的姓名: "< strcpy(Tea[i].name,na); cout<<"修改成功"< }break; case3: { intm; chara[10]; cout<<"输入修改后的内容: "< cin>>a; strcpy(Tea[i].sex,a); cout<<"修改成功,是否继续(1/2)"< cin>>m; if(m=1) return; }break; case4: { intb,m; cout<<"请输入修改后的年龄: "< cin>>b; Tea[i].age=b; cout<<"修改成功,是否继续(1/2)"< if(m=1) return; }break; case5: { intm; charn[20]; cout<<"请输入修改后系部: "< cin>>n; strcpy(Tea[i].depart,n); cout<<"修改成功,是否继续(1/2)"< cin>>m; if(m=1) return; }break; case6: { intm; charn[20]; cout<<"请输入修改后专业: "< cin>>n; strcpy(Tea[i].spec,n); cout<<"修改成功,是否继续(1/2)"< if(m=1) return; }break; case7: { intm; charn[20]; cout<<"请输入修改后的职称: "< cin>>n; strcpy(Tea[i].title,n); cout<<"修改成功,是否继续(1/2)"< if(m=1) return; }break; case0: cout<<"退出成功! "< default: cout<<"无此选项! 请重试! "< } } voidTea_Manage: : Delete()um) { Tea[i]=Tea[i+1]; top--; } break; if(i==top) cout<<"查无此人"< } cout<<"删除成功"< return; intm;cin>>m; if(m=1)return; } voidTea_Manage: : Total()< default: cout<<"\n没有此选项.请重选."< } }while(choice! =0); cout<<"\n***欢迎您下次再使用本系统! ***"< return0; } 5.第五章系统测试 5.1模块测试 以教师信息为例进行说明。 (1)选择对教师信息进行添加,见图5—1,图5—2 图5—1 图5—2 (2)选择对教师信息显示图5—3 图5—3 (3)选择对教师信息修改图5—4 图5—4 (4)修改后显示图5—5 图5—5 (5)对教师信息的删除图5—6 图5—6 (6)对教师信息保存图5—7 图5—7 (7)对保存的教师信息的读取图5—8 图5—8 (8)程序的退出图5—9 图5—9 5.2课程设计过程中遇到的问题 1、程序设计时选择了数组的方式来对数据的操作,在查询时,由于思路不明确,没有成功实现程序对教师信息的查询,在请教老师之后,巧妙地运用了变量top,终于完成了查询的功能。 2、文件的存入和读出使用的2进制的方法,对此,因为掌握不是很熟练,总是存入读出错误,在查阅了课本书籍之后,仍出现类似问题,请教老师后明白了2进制存入、读出的方法,实现了相关功能。 结论 通过本程序设计掌握了类对象、类数组、继承、派生、重载、输入输出流的定义和使用,对使用C++语言编码有了更深层次的理解,也认识到了自己还有许多不足之处,达到了实验目的。 本系统基本完成了题目的功能要求,并且还在一定程度上进行了优化,具体如下: 优点: 删除时可以重新选择;对无效数据的输入进行了有效的判断;在删除和查询时既可以按编号也可以按姓名;每次删除后自动将人员信息显示出来。 缺点: 对于重名的人员系统照旧可以添加,没有提醒;人员的编号可以重复。 可以改进的地方: 在添加成员时进行验证,看所输姓名和编号是否重复,若重复进行重新输入;在实现七个功能的地方添加exit函数,一旦操作失误,不想继续进行,则系统跳转会主界面进行新的操作选择。 6.心得体会 本次课程设计主要使用了本学期学习的MicrosoftVisualC++的设计环境,内容涵盖了c和c++语言部分知识,在本次编程过程中,我学习到了很多。 例如: 在编程首先要有全局观念,要认识到自己是要编写怎样的程序,并且要构建相应的程序结构,否则漫无目的的编写只能造成自己后期的负担。 其次要熟练的掌握老师以前所教授的相关知识,这样在编写程序的时候才能得心应手。 再次,要分步进行程序的编写,实现一个功能,再实现另一个功能,不可以全部编好最后在检查,否则最终无从下手。 我现在才明白一个真正好的程序是需要很多人共同完成的,不是说一个人就能完成一个程序的编写,现在的程序还不是很大,但如果是一个巨型系统,任何一个人是不可能完成的,像是微软操作系统也是由很多高手一起编写的,这次编写过程中,我请教了老师和同学一些问题,是在他们的帮助下我才最终顺利地完成任务。 让我深刻的认识到团队的力量。 所以在以后学习过程中,我想应该多探讨,多帮助,多学习才行。 参考书目 [1]沈炜,徐慧.VisualC++数据库编程技术与实例.北京: 人民邮电出版社,2005 [2]邓阿奇,丁有和.VisualC++教程.北京: 清华大学出版社,2004年9月 [3]谭浩强.C++程序设计.北京: 清华大学出版社,2004年 [4]谭浩强.C语言程序设计(第2版).北京: 清华大学出版社,2003 附录: 关键程序代码 #include #include #include<> #include"" #include"" #include"" #include"" #include"" #include"" #include"" #include"" #include"" usingnamespacestd; 师管理2.实验员管理|"< cout<<"|3.行政人员管理4.教师兼行政人员|"< cout<<"|0.退出系统|"< cout<<"||"< cout<<"============================================================================"< cout<<"\n请输入您的选择: "; cin>>choice; switch(choice) { case1: TeaMenu();break; case2: ExpMenu();break; case3: GovMenu();break; case4: Tea_GovMenu();break; case0: cout<<"\n您已安全退出系统."< default: cout<<"\n没有此选项.请重选."< } }while(choice! =0); cout<<"\n***欢迎您下次再使用本系统! ***"< return0; } voidTeaMenu() {system("cls"); Tea_Managet; intchoice; while(choice! =0) { cout<<"\n【教师管理】"< cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"< cout<<"||"< cout<<"|1.添加2.查找3.修改4.统计5.删除6.显示7.保存8.读取0.退出|"< cout<<"||"< cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"< cout<<"\n输入您操作的选项: "; cin>>choice; switch(choice) { case1: ();break; case2: ();break; case3: ();break; case4: ();break; case5: ();break; cas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 人员 信息管理 系统