1、1C+程序设计课程设计报告设计题目: 员工信息管理系统专 业 计算机科学与技术 班 级 计本 0804 班 学 生*指导教师 * 起止时间 2009 年 12 年 25 日至 2009 年 1 月 5 日2009-2010 学年 第一 学期2目 录1 引 言 11.1 问题的提出 (四号黑体) 11.2 国内外研究的现状 (四号黑体) 11.5 任务与分析 (四号黑体) 12 程序的主要功能 22.1 输入数据 .22.2 数据统计 .22.3 数据打印 .22.4 数据备份 .22.5 退出 .23 运行平台 24 总体设计 35 程序类说明 46 模块分析 66.1 经理类成员函数 .66
2、.2 销售经理类成员函数 .66.3 销售员类成员函数 .86.4 技术员类成员函数 .96.5 主函数 107 系统测试 .218 结论 .24参考文献 .253引 言 1.1 问题的提出 员工信息管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以员工信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识
3、,它已进入人类社会的各个领域并发挥着越来越重要的作用。1.2 国内外研究的现状 在现今国内外大中小型企业蓬勃发展,对企业的管理显得越发重要,其中对员工信息进行管理更是公司发展的命脉。在现代化的企业管理中,员工管理系统有着十分重要的作用, 员工信息管理系统是对员工信息进行修改和管理,而且方便快速。这个程序虽然简单,但是可以作为公司领导的辅助软件,对员工的各种信息进行管理。作为计算机应用的一部分,使用计算机对人事劳资信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规
4、化管理,与世界接轨的重要条件。1.3 任务与分析 1、对公司新员工进行信息编入并储存: 新员工姓名、性别、年龄、婚姻状况、学历、所在部门、职位、工作时。2、 类的层次结构大体如图 1 所示: 3、 输入数据总人数在 50 人内。4、 总体设计,要有一个菜单,用于选择各项功能,其中 1)新建并输入职工数据 2)按条件输出职工数据 3)修改指定职工的数据 4)删除数据 45)退出 注:各项菜单都调用一个函数来实现。 5、输入并存放所有职工的信息。2 程序的主要功能2.1 新建并输入职工数据 在界面状态下,按下“1”后出现“新员工姓名”、“新员工性别”、“新员工年龄”、“新员工婚姻状况”、“新员工学
5、历”、“新员工所在部门”、“新员工职位”、“新员工工作时”。则新员工信息添加成功。在添加过程中,输入性别时会提示“F 为女性,M 为男性”。输入婚姻状况会提示“Y 为已婚,N 为未婚”。输入学历时会出现“1:初中 2:高中 3:本科 4:硕士 5:博士”。输入所在部门时出现1: 董事会 2:市场部 3:公关部 4:客服中心 5:信息中心 。输入职位时出现1: 临时职员 2: 正式职员 3:主任 4:部门经理 5:董事长 。添加信息写入了到文件中。2.2 按条件输出职工数据在界面状态下,“请选择查询方式: * 输出全体职工信息- 1* 按职工部门输出- 2 * 按职工学历输出- 3 * 按职工年
6、龄输出- 4* 按职工编号输出- 52.3 修改指定职工的数据在界面状态下,在按下“3”后会出现“请输入要修改的员工编号:”,如果文件打开会按照用户的要求从文件头开始修改。2.4 删除数据输出文件,列出所有学生成绩。如果文件未打开会出现“文件打开失败!按 0 键返回.”,按照要求删除数据。2.5 退出在界面状态下,按下“ESC”会退出该学生成绩管理系统。返回源程序。如果要退出其余功能返回界面,则选择“5”键。3 程序运行平台5VC+6.0。具体操作如下:新建工程,添加相应的源文件,再编译,链接,执行等,此部分可参照实验指导书前面的内容写。4 总体设计4.1 系统总体框架图主函数新建并输入员工数
7、据按条件输出员工数据修改制定员工的数据删除数据退出系统图 4.2 系统流程图系统管理原本信息 新建并输入员工数据修改指定员工数据删除数据按条件输出员工数据退出登录65 程序类的说明系统的定义#include #include #include using namespace std; const N=50; / 定义系统可录入的员工最大数值 string EnameN; long EnumN; char EsexN; int EageN; char EmarriageN; int EdepartN; int EpositionN; int Edegree50; int EworktimeN;
8、float EpayN; Employ 类的声明class Employee public: string Employeename; long Employeenum; char Employeesex; int Employeeage; char Employeemarriage; int Employeedepart; int Employeeposition;int Employeedegree; int Employeeworktime; float Employeepay; static long EmployeeMaxNum; static float EmployeeBaseP
9、ay; void NewInfo(); void ShowInfo(); void showall(); 7void showdepart(int depart); void showdegree(int degree); void showage(int min,int max); void shownum(long number); void RefreshInfo(); void DeleteInfo(); float Pay(int Employeegrade); static int MaxNum(); ; DBOperate(数据操作)类的声明class DBOperate pub
10、lic: string Employeename; long Employeenum; char Employeesex; int Employeeage; char Employeemarriage; int Employeedepart; int Employeeposition; int Employeedegree; int Employeeworktime; float Employeepay; static long EmployeeMaxNum; static float EmployeeBasePay; void WriteIn(int iflag); void ReadOut
11、(); void RefreshMaxNum(int iflag); /i=1 or -1 or 0 ; long Employee:EmployeeMaxNum = 1000; float Employee:EmployeeBasePay = 1500; 6 模块分析/此部分应详细介绍设计思想、流程及关键代码等。返回系统已经存储的人数int Employee:MaxNum() int MN = 0; 8ifstream myf; myf.open(“EmployeeMaxNum.txt“); myfMN; coutEmployee:Employeename; Employee:Employe
12、enum = EmployeeMaxNum + Employee:MaxNum()+1; coutEmployee:Employeesex; coutEmployee:Employeeage; coutEmployee:Employeemarriage; coutEmployee:Employeedegree; while(Employee:Employeedegree !=1 coutEmployee:Employeedepart; while(Employee:Employeedepart !=1 coutEmployee:Employeeposition; while(Employee:
13、Employeeposition !=1 coutEmployee:Employeeworktime; Employee:Employeepay = Employee:Pay(Employee:Employeeposition); DBOperate dbo; 10dbo.ReadOut(); int MaxNum = Employee:MaxNum(); EnumMaxNum = Employee:Employeenum; EnameMaxNum = Employee:Employeename; EsexMaxNum = Employee:Employeesex; EageMaxNum =
14、Employee:Employeeage; EmarriageMaxNum = Employee:Employeemarriage; EdegreeMaxNum = Employee:Employeedegree; EdepartMaxNum = Employee:Employeedepart; EpositionMaxNum = Employee:Employeeposition; EworktimeMaxNum = Employee:Employeeworktime; EpayMaxNum = Employee:Employeepay; dbo.WriteIn(1); coutchoice
15、1; switch(choice1) case 1: showall();break; case 2: coutchoice2; e.showdepart(choice2);break; case 3: coutchoice2; e.showdegree(choice2);break; case 4: coutmin; coutmax; e.showage(min,max);break; case 5: coutsearchnum; e.shownum(searchnum);break; default: cout“=min if(Esexi=F) cout“; if(Emarriagei=Y
16、) cout“; switch (Edegreei) case 1:cout“; switch (Edeparti) case 1:cout“; switch (Epositioni) case 1:cout“; cincNum; int MN; MN = Employee:MaxNum(); for(int i=0;iEmployee:Employeename; Enamei = Employee:Employeename; coutEmployee:Employeesex; Esexi = Employee:Employeesex; coutEmployee:Employeeage; Ea
17、gei = Employee:Employeeage; coutEmployee:Employeemarriage; Emarriagei = Employee:Employeemarriage; coutEmployee:Employeedegree; while(Employee:Employeedegree !=1 Edegreei = Employee:Employeedegree; coutEmployee:Employeedepart; while(Employee:Employeedepart !=1 Edeparti = Employee:Employeedepart; cou
18、tEmployee:Employeeposition; while(Employee:Employeeposition !=1 Epositioni = Employee:Employeeposition; coutEmployee:Employeeworktime; Eworktimei = Employee:Employeeworktime; Epayi = Employee:Pay(Employee:Employeeposition); break; dbo.WriteIn(0); 删除员工数据的函数void Employee:DeleteInfo() char tmp; int cNu
19、m = 1000; 16DBOperate dbo; dbo.ReadOut(); void Employee:shownum(long number); cout: “; cincNum; int MN; MN = Employee:MaxNum(); for(int i=0;itmp; if(tmp=Y) if(i=MN-1) dbo.WriteIn(-1); else for(int j=i;jDBOperate:EmployeenumDBOperate:EmployeenameDBOperate:EmployeesexDBOperate:EmployeeageDBOperate:Emp
20、loyeemarriage DBOperate:EmployeedegreeDBOperate:EmployeedepartDBOperate:EmployeepositionDBOperate:EmployeeworktimeDBOperate:Employeepay; Enumi = DBOperate:Employeenum; Enamei = DBOperate:Employeename; Esexi = DBOperate:Employeesex; Eagei = DBOperate:Employeeage; Emarriagei = DBOperate:Employeemarria
21、ge; Edegreei = DBOperate:Employeedegree; Edeparti = DBOperate:Employeedepart; Epositioni = DBOperate:Employeeposition; Eworktimei = DBOperate:Employeeworktime; Epayi = DBOperate:Employeepay; myf.close(); 更新系统中员工计数文件的函数18void DBOperate:RefreshMaxNum(int iflag) int MaxNum = 0; ifstream myif(“EmployeeM
22、axNum.txt“); myifMaxNum; myif.close(); MaxNum = MaxNum+iflag; ofstream myof(“EmployeeMaxNum.txt“); myofselect;Employee e; DBOperate dbo; 19switch(select) case 1: e.NewInfo(); break; case 2: dbo.ReadOut(); e.ShowInfo(); break; case 3: e.RefreshInfo(); break; case 4: e.DeleteInfo(); break; case 5: bre
23、ak; default: cout“命令错误!“endl; if(select = 5) break; exit(1); return 0; 7 系统测试首先进入 VC+6.0,打开工程 person.dsw,然后进入源程序,接着选择 Build 下的 Execute person.exe 即可,也可以不打开工程,直接双击 person 文件夹下的 debug或 release 子文件夹下的 person.exe 文件即可运行程序。首先进入员工信息管理系统:图 7.1数据输入:20图 7.2图 7.3数据打印:21图 7.4图 7.5数据备份:22图 7.6备份数据保存在 E 盘 gzglxt
24、.txt 文件下:图 7.7退出系统:图 7.88 结论通过本次试验,对一个公司员工信息管理系统的功能全部实现,虽然没有一一演练,但是其他功能也能通过代码人工实现。不过美中不足的是在编写程序过程中没有考虑输出时的格式问题,系统也还不够完善,比如说缺少数据的打印与备份等问题,但是经过反复努力只能做到大致对齐地步。同时也通过本次课程设计让我对 C+更深一步的理解,对我们的学习帮助真的很大。最后要感谢指导老师在课程开始直到结束的细心指导。参考文献1. 钱能编著. C+程序设计教程(第二版). 北京:清华大学出版社, 2005.092郑莉等 编著. C+程序设计语言(第三版). 北京:清华大学出版社,2005.06 233.陈清华 朱 红主编. Visual C+课程设计案例精选与编程指导. 南京: 东南大学出版社,2003.06 4.刘振安等编著. C+程序设计课程设计.机械工业出版社,2004.08,北京