高校人事管理系统 C++.docx
《高校人事管理系统 C++.docx》由会员分享,可在线阅读,更多相关《高校人事管理系统 C++.docx(64页珍藏版)》请在冰豆网上搜索。
高校人事管理系统C++
一、设计内容与设计要求
1.课程设计目的:
面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目
1)公司库存管理系统
2)高校学籍管理系统
3)高校工资管理系统
4)高校人事管理系统
5)通讯录程序设计
6)学生成绩管理系统
7)图书管理系统
8)文本编辑器的设计与实现
9)学生考勤管理系统
10)公司人员管理系统
3.设计要求:
⑴设计课题题目:
每位同学根据自己学号除以9所得的余数加一选择相应题号的课题。
换题者不记成绩。
(课题10只做为参考课题)
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:
包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:
包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。
④系统调试:
调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第18周星期一8:
00——12:
00
星期二8:
00——12:
00
星期四8:
00——12:
00
第19周星期一8:
00——12:
00
星期二14:
30——18:
30
星期三8:
00——12:
00
三、参考书籍
1.《C++程序设计课程设计》刘振安编著TP312C563
2.《C++Builder和Delphi课程设计与系统开发案例》伍俊良清华大学出版社7-302-06072-X
3.VisualC++课程设计案例精编严华峰中国水利水电出版社7-5084-2007-12004
4.VisualC++课程设计与系统开发案例伍俊良清华大学出版社7-302-05968-32002
(编程平台不限,vc++,c++Builder等等。
)
课题4:
高校人事管理系统
(一)、课程设计题目:
高校人事管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
某高校,主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
要求:
(1)添加删除功能:
能根据学院人事的变动情况,添加删除记录;
(2)查询功能:
能根据编号和姓名进行查询;
(3)编辑功能(高级):
根据查询对相应的记录进行修改,并存储;
(4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);
(5)保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告以及系统使用说明书。
1.系统需求分析
题目需求:
(1)添加删除功能:
能根据学院人事的变动情况,添加删除记录;
(2)查询功能:
能根据编号和姓名进行查询;
(3)编辑功能(高级):
根据查询对相应的记录进行修改,并存储;
(4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);
(5)保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
系统设计目标:
(1)系统能根据用户输入菜单的选项进行执行。
(2)能对基本错误进行判断,并要求用重新输入。
(3)能够把输入的数据保存到txt文件中,下次能够使用。
(4)有较好的人性化,不至于用户不知道做什么。
系统实现功能:
(1)删除功能:
能根据用户输入姓名与编号进行删除。
(2)查询功能:
能根据用户输入姓名、编号、职位、来校时间、离校时间。
(3)编辑功能:
能根据查询的数据进行修改。
(4)统计功能:
能根据多种参数进行人员统计。
(5)保持功能:
能对输入的数据进行存储在文件中。
(6)识别错误功能:
能对基本错误进行判断,并要求用户重新输入。
(7)人员编号在生成人员信息时自动生成。
2.总体设计
系统功能模块划分
3.详细设计
UML:
4.系统调试
1.问题1:
VC++6.0对友元函数支持不是很好,通过查资料得知解决方法。
2.问题2:
逻辑错误,通过分析解决。
3.问题3:
txt文件读入到动态数组中去,会读错,读不出,多读入一个,通过询问
老师同学解决。
4.问题4:
vector容器中成员函数的使用,通过查书解决。
5.结果分析
1.输入信息
2.查询信息
1:
按姓名查询
2:
按编号查询
3:
按来校时间查询
4:
按离校时间查询
5:
按职工职位查询
3:
删除信息
1:
按姓名删除
2:
按编号删除
4:
编辑信息
3:
增加职工
5:
统计信息
6:
输出信息
0:
退出系统
独到的设计:
1.有基本的纠错功能,并能提示用户重新输入。
2.除了按姓名、编号搜索还能按来小时间、离校时间、职位进行搜索。
3.编辑功能能够分别对姓名、编号、性别、修改。
4.较好的使用继承、派生,符合基本思维。
5.较好的使用类的组合。
6.函数命名、类的命名、数据的命名能够见明思意,较好的符合命名规则。
不足之处:
1.源代码过多,仅仅使用了容器vector,没有使用STL迭代器、算法等。
2.基类没有很好的抽象。
3.主函数调用的函数没有封装在一个类中,仅仅包含在一个头文件中。
4.文件的操作没有很好的掌握。
5.数据输出,没有按格式对齐混乱。
6.函数过长,函数做的事情不止一件。
7.类中包含的成员过多。
8.不够人性话,用户界面不够美观。
9.对于一些错误不能有效的终止。
(总结自己独到的设计特点和不足之处。
)
6.总结
通过一周的课程设计,我学到了很多东西,
1.系统分析,类层次之间的关系非常重要,只有架构好总体,才能设计出好的系统
2.建立了一套完整的系统模型,先从整体入手,再细分。
而不是一开始就着急编写,那样系统只会非常混乱。
3.函数、类的命名。
基本上能够见名思意。
4..文件的操作本来是一片模糊,通过实践操作,已经理解对文件的操作,原来很简单。
5.通过与同学讨论,知道要擅长使用STL来解决实际问题,而不是自己去编写函数。
懂得利用C++中定义的对象解决问题。
对于面向对象设计又有了更深的理解。
6.类之间的设计中符合人的思维逻辑。
7.通过一些书籍,知道在设计中要遵守的规则,程序中统一的输出格式。
8.知道一些基本的优化规则,如函数只能做一件事、越小越好、基类要足够的抽象,最好使用组合而不是继承,减少依赖性等等。
9.在程序设计中要与别人合作,把自己的糟粕去掉,吸取别人程序中的精华,与其他同学讨论。
10.编写中要先写好一个功能后马上调试,及时发现问题,及时解决问题,而不是系统写完后再慢慢调试,那样问题会很多,调好这里后那里又出现问题,我们初学者还有很多细节不会注意,这种方法有助于我更快的编写出系统,减少编写时间,把更多的时间留下来完善程序。
总之,通过这次的课程设计,让我真正了解到C++语言中的类模块真正魅力和无穷的功能,感到STL的强大,希望尽快掌握STL的知识来解决实际问题。
通过对文件的操作领略到编程的神奇,感到非常的方便。
这个学期的对C++的学习,仅仅是叩开了C++这扇大门,里面还有很多知识我所不知道的,而此次的课程设计更加激发了我对C++语言学习的浓厚兴趣。
这个假期会进一步加强这个学期所学,也会进一步学习C++。
计算机与通信学院课程设计评分表
课程名称:
面向对象程序设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
附源代码:
Time.h
#ifndefTIME_H
#defineTIME_H
classTime
{
public:
Time(inty=1900,intm=1,intd=1);
virtual~Time();
intgetYear()const;
intgetMonth()const;
intgetDay()const;
voidsetYear(inty);
voidsetMonth(intm);
voidsetDay(intd);
booljudgeLeapYear();
protected:
intyear;
intmonth;
intday;
};
#endif
Time.cpp
#include
usingnamespacestd;
#include"Time.h"
Time:
:
Time(inty,intm,intd):
year(y),month(m),day(d)
{
}
Time:
:
~Time()
{}
intTime:
:
getYear()const
{returnyear;}
intTime:
:
getMonth()const
{returnmonth;}
intTime:
:
getDay()const
{returnday;}
voidTime:
:
setYear(inty)
{year=y;}
voidTime:
: