职工管理系统说明书.docx
《职工管理系统说明书.docx》由会员分享,可在线阅读,更多相关《职工管理系统说明书.docx(27页珍藏版)》请在冰豆网上搜索。

职工管理系统说明书
C++程序设计课程设计说明书
职工管理系统
指导教师:
张银霞
设计者:
许厅范秋城崔永雷
专业班级:
自动化091
设计时间:
2010年10月-11月
《C++程序设计》课程设计任务书
专业班级:
自动化091
设计题目:
职工信息管理系统
一、已知技术参数或设计前提
1、该系统目前能容下50名员工信息。
2、每个职工的信息包括:
员工编号,姓名,性别,年龄,婚姻情况,学历,所在部门,所在职务,工作时长,额定工资。
3、员工编号是唯一的。
二、设计内容及要求
1、实现职工信息的数据录入。
2、能够根据职工的编号,实现对该职工信息的修改。
3、实现按职工的编号,所在部门,学历,年龄进行职工信息的查询。
4、实现按职工编号删除指定的职工信息。
5、能够以列表方式输出所有职工信息。
6、实现按照需求扩充系统员工数的容量。
7、通过文件存储职工信息。
8、实现按照年龄段、部门、年龄等输出职工信息。
9、用类实现以上功能。
三、课程设计工作计划
1、了解课程设计大纲的要求,确定题目,成立设计小组。
(10月13—10月16)
2、上网查阅资料,确定程序所包含的内容,进行问题分析,制定方案。
(10月17—10月25)
3、确定成员分工,根据方案编写程序并进行调试(10月25—10月30)
4、撰写设计说明书,完成设计(11月1—11月10)
5、对说明书及程序中存在的不足进行修改。
(11月10—11月19)
6、提交设计内容,答辩(11月20—11月25)
四、相关教材及参考书目
[1]陈文宇,张松梅编著.C++语言教程.电子科技大学出版社,2004
[2]张耀仁著,彻底研究.C++程序设计.中国铁道出版社,2006
[3]CayHorstmann著.C++核心思想.电子工业大学出版社,2004
[4]谭正浩著.C++面向对象程序设计.清华大学出版社,2006
[5](美)埃尔克著.C++编程思想.机械工业出版社,2005
指导教师签字:
系主任签字:
2010年月日
职工管理系统
一、需求分析
步入21世纪的中国经济越来越发达,务工人员越来越多,这就直接导致对员工的管理越来越难,本程序的设计是为了帮组工厂、公司的人员进行智能化的管理。
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
二、系统的软硬件环境
1、硬件环境CPU2.0GHz内存2GB硬盘320GB
2、软件环境WindowsXPvisualC++6.0
三、系统功能模块
如图1所示,职工管理系统共有五个功能模块,录入职工信息功能模块、查询职工信息功能模块、删除职工信息功能模块、显示功能模块、删除职工信息模块和修改职工信息功能模块。
其中查询信息模块有分按职工所在部门查询、按职工学历查询、按职工年龄查询和、职工编号查询和输出全体员工信息。
图1系统功能模块图
四、程序设计分析
1、类结构
(1)、职工类Employee
该类的对象是公司里的每一个员工,是该系统当中最主要的数据。
数据成员:
姓名(Ename[N])、职工编号(Enum[N])、性别(Esex[N])、年龄(Eage[N])、婚姻状况(Emarriage[N])、学历(Edegree[N])、工作部门(Edepart[N])、职工职位(Eposition[N])、工时(Etime[N])、工薪(Epay[N])。
成员函数:
voidNewInfo();新信息录入函数(采集职工信息),其中运用了while语句来判断输入数据的合法性。
voidShowInfo();信息显示函数(显示所有职工的信息或按要求显示职工信息),其中运用了switch语句if语句和for循环语句来实现。
voidRefreshInfo();修改员工信息的函数(修改职工信息),其中运用了for循环语句,if判断语句和while语句来实现的。
voidDeleteInfo();删除员工数据的函数(删除职工信息),其中运用了for循环语句先查找到要删除的职工信息,再运用if判断语句对查找到的职工信息进行处理。
(2)、职工数据类DBOperate
该类的对象为系统数据文件,完成对员工信息的保存和读取。
数据成员:
姓名(Ename[N])、职工编号(Enum[N])、性别(Esex[N])、年龄(Eage[N])、婚姻状况(Emarriage[N])、学历(Edegree[N])、工作部(Edepart[N])、职工职位(Eposition[N])、工时、工薪(Epay[N])。
成员函数:
voidWriteIn(intiflag);数据写入函数,其中运用了for循环语句来实现。
voidReadOut();数据读出函数,其中运用了for循环语句来实现。
2、模块设计分析
(1)、主函数:
创建职工类对象e和职工数据类对象dbo。
(2)、录入职工数据:
对职工的信息进行采集,调用voidNewInfo();函数采集职工信息,然后将数据存入职工数据类(DBOperate)的对象dbo中,其中运用到了while语句来判断输入数据的合法性。
(3)、查询职工数据:
调用职工数据类(DBOperate)的成员函数(voidReadOut();)打开一个名为"Employee"的txt的文本文档,然后调用职工类(Employee)的成员函数(voidShowInfo();)进行查找或者显示全部职工信息,其中运用了for循环语句查找所需职工的信息。
(4)、修改职工数据
调用职工类(Employee)的成员函数(voidRefreshInfo()),输入职工的编号进行查找,然后进行修改,其中运用了for循环语句来查找所要修改的职工信息。
(5)、删除职工数据:
调用职工类(Employee)的成员函数(voidDeleteInfo()),输入职工的编号删除,其中运用了for循环语句来查找所要修改的职工信息。
五、使用说明
1、系统的启动
首先,置入光盘,打开光盘,双击“职工管理系统.exe”文件,出现职工管理系统主界面,如图2所示,出现系统主界面图,说明启动成功。
图2职工管理系统主界面图
2、录入功能
根据提示分别录入职工的姓名、年龄、学历、性别、所在部门、工作时长、婚姻状况等信息,如图3所示的界面图。
图3录入功能界面图
3、查询和统计功能
输入数字“1”就会显示全部职工的信息;输入数字“2”就会出现提示“请输入要查询的职工所在的部门编号”然后输入部门编号就会显示该部门所有职工的信息;输入数字“3”就会出现提示“请输入要查询的职工的学历的编号”然后输入每个学历所对应的编号就会显示拥有该学历的所有的职工的信息;输入数字“4”就会提示“请输入要查询的年龄范围”然后输入要查询的范围就会显示该年龄段的所有的职工的信息;输入数字“4”就会出现提示“请输入要查询的职工的编号”然后输入编号就会出现该职工的信息,如图4所示。
图4查询和统计功能界面图
4、修改功能
输入要修改的职工的编号,就可以开始修改该职工的信息,修改完后会显示修改成功。
如图5所示。
图5修改功能界面图
5、删除职工信息功能模块
如图6所示,输入职工的编号,就会提示是否删除该职工的信息,如果要删除就输入Y,如不需要删除就输入N,删除后就会提示删除成功。
图6删除功能界面图
六、结束语
经过几天艰辛的努力和不懈的奋斗我们这个小组终于把这个程序调试出来了,由于我们的基础知识不够好所以在编译和调试的过程中我们遇到了很多的问题,但是我们从来没有想过放弃,我们彼此鼓励,去图书馆查阅资料,去询问老师,然后再编译在调试再修改……。
这个程序的成功之处在于它的功能齐全,它不但能录入、修改、删除,还在于拥有灵活的查询功能,能通过输入职工号查询、输入所在部门查询、输入学历查询、输入年龄查询等等。
通过这次的程序设计我发现了我们小组的成员对指针、字符数组、类和文件操作掌握的不是很好,因此我们这个小组在程序设计的时候对指针的运用很少,这也就成了这个程序最大的不足之处,需要改进。
这个程序还有一个不足的地方就是在类的时候那块没有设置私有成员,这样便导致任何函数都能访问类的成员,这个地方同样需要改进。
七、参考文献
[1]陈文宇,张松梅编著.C++语言教程.电子科技大学出版社,2004
[2]张耀仁著.彻底研究C++程序设计.中国铁道出版社,2006
[3]CayHorstmann著.C++核心思想.电子工业大学出版社,2004
[4]谭正浩著.C++面向对象程序设计.清华大学出版社,2006
[5](美)埃尔克著.C++编程思想.机械工业出版社,2005
八、组员分工
许厅:
编写职工类主函数和职工信息查询功能模块,编写职工信息录入功能模块
范秋城:
编写职工信息修改功能模块
崔永雷:
编写职工信息删除功能模块
九、源程序代码
#include
#include
#include
usingnamespacestd;
constN=50;//定义系统可录入的员工最大数值
stringEname[N];//名字
longEnum[N];//编号
charEsex[N];//性别
intEage[N];//年龄
charEmarriage[N];//婚否
intEdepart[N];//部门
intEposition[N];//职位
intEdegree[50];//学历
intEworktime[N];//工作时
floatEpay[N];//工薪
classEmployee//定义职工的一个类
{
public:
stringEmployeename;
longEmployeenum;
charEmployeesex;
intEmployeeage;
charEmployeemarriage;
intEmployeedepart;
intEmployeeposition;
intEmployeedegree;
intEmployeeworktime;
floatEmployeepay;
staticlongEmployeeMaxNum;//最大职工数
staticfloatEmployeeBasePay;//基本工薪
voidNewInfo();//新信息输入函数
voidShowInfo();//新信息显示函数
voidshowall();//
voidEmployee:
:
checkout();
voidshowdepart(intdepart);//显示员工的部门所在函数
voidshowdegree(intdegree);//显示员工的学历函数
voidshowage(intmin,intmax);
voidshownum(longnumber);
voidRefreshInfo();//更新员工信息函数
voidDeleteInfo();//删除员工信息函数
floatPay(intEmployeegrade);
staticintMaxNum();
};
classDBOperate//类
{
public:
stringEmployeename;
longEmployeenum;
charEmployeesex;
intEmployeeage;
charEmployeemarriage;
intEmployeedepart;
intEmployeeposition;
intEmployeedegree;
intEmployeeworktime;
floatEmployeepay;
staticlongEmployeeMaxNum;
staticfloatEmployeeBasePay;
voidWriteIn(intiflag);//类的输入成员函数
voidReadOut();//输出成员函数
voidRefreshMaxNum(intiflag);//i=1or-1or0
};
longEmployee:
:
EmployeeMaxNum=1000;
floatEmployee:
:
EmployeeBasePay=1500;
intEmployee:
:
MaxNum()//返回系统已经存储的人数
{
intMN=0;
ifstreammyf;
myf.open("EmployeeMaxNum.txt");
myf>>MN;
myf.close();
returnMN;
}
voidEmployee:
:
NewInfo()//添加新成员函数
{
cout<<"新员工姓名:
";
cin>>Employee:
:
Employeename;
cout<<"新员工编号:
"<cin>>Employee:
:
Employeenum;
cout<<"新员工性别(F为女性,M为男性):
";
cin>>Employee:
:
Employeesex;
cout<<"新员工年龄:
";
cin>>Employee:
:
Employeeage;
cout<<"新员工婚姻状况(Y为已婚,N为未婚):
";
cin>>Employee:
:
Employeemarriage;
cout<<"新员工学历,请输入相应学历的序号:
"<cout<<"[1:
初中2:
高中3:
本科4:
硕士5:
博士]";
cin>>Employee:
:
Employeedegree;
while(Employee:
:
Employeedegree!
=1&&Employee:
:
Employeedegree!
=2&&Employee:
:
Employeedegree!
=3&&Employee:
:
Employeedegree!
=4&&Employee:
:
Employeedegree!
=5)
{
cout<<"输入有误,请重新输入:
"<cout<<"[1:
初中2:
高中3:
本科4:
硕士5:
博士]";
cin>>Employee:
:
Employeedegree;
}
cout<<"新员工所在部门,请输入相应部门的序号:
"<cout<<"[1:
董事会2:
市场部3:
公关部4:
客服中心5:
信息中心]";
cin>>Employee:
:
Employeedepart;
while(Employee:
:
Employeedepart!
=1&&Employee:
:
Employeedepart!
=2&&Employee:
:
Employeedepart!
=3&&Employee:
:
Employeedepart!
=4&&Employee:
:
Employeedepart!
=5)
{
cout<<"输入有误,请重新输入:
"<cout<<"[1:
董事会2:
市场部3:
公关部4:
客服中心5:
信息中心]";
cin>>Employee:
:
Employeedepart;
}
cout<<"新员工职位,请输入相应职位的序号:
"<cout<<"[1:
临时职员2:
正式职员3:
主任4:
部门经理5:
董事长]";
cin>>Employee:
:
Employeeposition;
while(Employee:
:
Employeeposition!
=1&&Employee:
:
Employeeposition!
=2&&Employee:
:
Employeeposition!
=3&&Employee:
:
Employeeposition!
=4&&Employee:
:
Employeeposition!
=5)
{
cout<<"输入有误,请重新输入:
"<cout<<"[1:
临时职员2:
正式职员3:
主任4:
部门经理5:
董事长]";
cin>>Employee:
:
Employeeposition;
}
cout<<"新员工的工作时(不需要输入单位):
";
cin>>Employee:
:
Employeeworktime;
Employee:
:
Employeepay=Employee:
:
Pay(Employee:
:
Employeeposition);
DBOperatedbo;
dbo.ReadOut();
intMaxNum=Employee:
:
MaxNum();
Enum[MaxNum]=Employee:
:
Employeenum;
Ename[MaxNum]=Employee:
:
Employeename;
Esex[MaxNum]=Employee:
:
Employeesex;
Eage[MaxNum]=Employee:
:
Employeeage;
Emarriage[MaxNum]=Employee:
:
Employeemarriage;
Edegree[MaxNum]=Employee:
:
Employeedegree;
Edepart[MaxNum]=Employee:
:
Employeedepart;
Eposition[MaxNum]=Employee:
:
Employeeposition;
Eworktime[MaxNum]=Employee:
:
Employeeworktime;
Epay[MaxNum]=Employee:
:
Employeepay;
dbo.WriteIn
(1);
cout<<"添加新成员成功!
"<return;
}
voidEmployee:
:
ShowInfo()//程序主体数据输出函数
{
intchoice1,choice2,min,max;
Employeee;
cout<<"请选择显示方式:
"<cout<<"***************************"<cout<<"*职工信息全输出--------1*"<cout<<"*按职工部门输出--------2*"<cout<<"*按职工学历输出--------3*"<cout<<"*按职工年龄输出--------4*"<cout<<"***************************"<cin>>choice1;
switch(choice1)
{
case1:
showall();
break;
case2:
cout<<"请输入要查询职工的部门编号:
[1:
董事会2:
市场部3:
公关部4:
客服中心5:
信息中心]";
cin>>choice2;
e.showdepart(choice2);
break;
case3:
cout<<"请输入要查询职工的学历编号:
[1:
初中2:
高中3:
本科4:
硕士5:
博士]";
cin>>choice2;
e.showdegree(choice2);
break;
case4:
cout<<"请输入要查询的年龄范围:
";
cout<<"最小值:
";
cin>>min;
cout<<"最大值:
";
cin>>max;
e.showage(min,max);
break;
default:
cout<<"出错啦!
"<break;
}
}
voidEmployee:
:
checkout()
{
longsearchnum;
Employeee;
cout<<"*****************************"<cout<<"*请输入要查询的员工编号*"<cout<<"*****************************"<cin>>searchnum;
e.shownum(searchnum);
}
voidEmployee:
:
showall()//全体员工输出函数
{
inti;
longnumber;
for(i=0;i:
MaxNum();i++)
{
number=Enum[i];
shownum(number);
}
}
voidEmployee:
:
showdepart(intdepart)//按员工所在部门输出函数
{
inti;
switch(depart)
{
case1:
cout<<"董事会的成员有:
>"<break;
case2:
cout<<"市场部的成员有:
>"<break;
case3:
cout<<"公关部的成员有:
>"<break;
case4:
cout<<"客服中心成员有:
>"<break;
case5:
cout<<"信息中心成员有:
>"<break;
default:
cout<<"输入错误!
>"<break;
}
for(i=0;i:
MaxNum();i++)
{
if(Edepart[i]==depart)
{
longnumber=Enum[i];
shownum(number);
}
elsecontinue;
}
}
voidEmployee:
:
showdegree(intdegree)//按员工学历输出函数
{
inti;
switch(degree)
{
case1:
cout<<"初中学历的员工有:
"<break;
case2:
cout<<"高中学历的员工有:
"<break;
case3:
cout<<"本科学历的员工有:
"<