职工管理系统.docx
- 文档编号:1429401
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:29
- 大小:23.41KB
职工管理系统.docx
《职工管理系统.docx》由会员分享,可在线阅读,更多相关《职工管理系统.docx(29页珍藏版)》请在冰点文库上搜索。
职工管理系统
一系统的背景2
二系统的编译环境和语言2
三系统类的设计3
3。
1类的对象:
3
3。
2类的属性列表:
3
3。
3类的行为:
3
3。
4具体代码如下:
3
四系统运行入口的设计11
五运行步骤13
六数据文件16
七参考文献16
一系统的背景
从事商业活动的公司迫切需要这样一个系统:
它能高效的管理公司内部所有员工的个人信息,并能正确快速的对系统的使用者的操作做出回应,以提高效率,降低成本。
该系统能够满足以上的要求,使用户可以快速准确的管理公司员工的信息。
二系统的编译环境和语言
该系统是采用C++语言在Turboc下编译而成,。
因为在该系统中有明显的对象,即是公司的员工,且C++语言是一个非常强大的面向对象的语言,因此该系统使用C++编写将会简单,快速而有效。
TurboC是一个经典且功能强大的编译器,是编译用C++语言写成的程序的首要工具。
三系统类的设计
3.1类的对象:
系统有两个类:
Employee:
对象是公司里的每一个员工,是系统中最重要的类。
DBOperate:
对象是系统的数据文件,完成对员工信息的保存和读取.
3.2类的属性列表:
Employee:
员工的编号:
EmployeeNum(long)
员工的姓名:
EmployName(string)
员工所属部门:
EmployeeDepart(string)
员工级别:
EmployeeGrade(string)
员工工资:
EmployeePay(float)
员工工龄:
EmpoyeeWorkTime(long)
3。
3类的行为:
Employee:
添加新员工信息:
NewInfo();
员工信息浏览:
ShowInfo();
员工信息变更:
RefreshInfo();
发放工资:
Pay(intEG);//EG为员工级别
解聘员工:
DeleteInfo();
DBOperate:
保存员工信息:
WriteIn(intiflag);
读取员工信息:
ReadOut();
更新员工总人数:
RefreshMaxNum(intiflag);
注释:
当iflag为1时,人数增大;为零时,人数不变,即是修改;为-1时,人数减少。
3.4具体代码如下:
longEmployee:
:
EmployeeMaxNum=1000;
floatEmployee:
:
EmployeeBasePay=1500;
intEmployee:
:
MaxNum()
{
intMN=0;
ifstreammyf("c:
\\EmployeeMaxNum.txt”);
myf〉〉MN;
myf。
close();
returnMN;
}
voidEmployee:
:
NewInfo()
{
chartmpName[50];
cout<<”newEmployeeName〉";//输入员工名字
cin〉>tmpName;
Employee:
:
EmployeeName=newchar[strlen(tmpName)+1];
strcpy(Employee:
:
EmployeeName,tmpName);
//////////////////////////////////////////
Employee:
:
EmployeeNum=EmployeeMaxNum+Employee:
:
MaxNum()+1;//自动分配员工编号,为基础标号+员工人数
//////////////////////////////////////////
chartmpDepart[50];
cout<<"newEmployeeDepartment>”;//输入员工部门名称
cin>>tmpDepart;
Employee:
:
EmployeeDepart=newchar[strlen(tmpDepart)+1];
strcpy(Employee:
:
EmployeeDepart,tmpDepart);
//////////////////////////////////////////
cout〈〈”newEmployeeGrade(1:
zhiyuan2:
zhuren3:
jingli4:
dongshizhang)>”;//输入员工等级,1为职员,2为主任,3为经理,4为董事长
cin>>Employee:
:
EmployeeGrade;
while(Employee:
:
EmployeeGrade!
=1&&
Employee:
:
EmployeeGrade!
=2&&
Employee:
:
EmployeeGrade!
=3&&
Employee:
:
EmployeeGrade!
=4)
{
cout<<"YourInputError!
InputAgainbecareful:
)”<〈endl;
cout〈〈"newEmployeeGrade(1:
zhiyuan2:
zhuren3:
jingli4:
dongshizhang)>";
cin>〉Employee:
:
EmployeeGrade;
}
//////////////////////////////////////////
cout<<”newEmployeeWorkTime>”;//输入员工合同期
cin>>Employee:
:
EmployeeWorkTime;
//////////////////////////////////////////
Employee:
:
EmployeePay=Employee:
:
Pay(Employee:
:
EmployeeGrade);
DBOperatedbo;
dbo。
ReadOut();//将原来的数据文件中的数据读出,并加入新的数据
intMaxNum=Employee:
:
MaxNum();
EN[MaxNum]=Employee:
:
EmployeeName;
ENum[MaxNum]=Employee:
:
EmployeeNum;
ED[MaxNum]=Employee:
:
EmployeeDepart;
EG[MaxNum]=Employee:
:
EmployeeGrade;
EWT[MaxNum]=Employee:
:
EmployeeWorkTime;
EP[MaxNum]=Employee:
:
EmployeePay;
dbo.WriteIn
(1);//将新的信息全部写入数据文件
return;
}
voidEmployee:
:
ShowInfo()
{
for(inti=0;i〈Employee:
:
MaxNum();i++)
{//顺序输出所有员工的信息,Employee:
:
MaxNum()为员工人数
cout<〈”TheEmployee'sInformation:
”〈〈endl;
cout〈〈”**********************************"<〈endl;
cout<〈"*EmployeeName>”〈〈EN[i]〈 cout<〈"*EmployeeNum>"〈〈ENum[i]〈〈endl; cout<<”*EmployeeDepart〉”〈〈ED[i]〈 cout〈〈”*EmployeeGrade>"〈〈EG[i]<〈endl; cout〈<"*EmployeeWorkTime〉"< cout<〈"*EmployeePay〉"<〈EP[i]<〈endl; cout〈〈"**********************************"〈 } } voidEmployee: : RefreshInfo() { intcNum=1000;//基础编号 DBOperatedbo; dbo。 ReadOut(); Employee: : ShowInfo();//先将所有员工信息输出 cout<〈"PleaseinputtheEmployee’sNum>"; cin〉〉cNum; intMN; MN=Employee: : MaxNum(); for(inti=0;i { if(ENum[i]==cNum)//通过编号找到指定要更新的员工 {//依次更新员工信息 cout〈<"***********************************"< cout<〈”Yourchoice'stheEmployee"<〈endl; cout〈〈”**********************************"〈 cout〈<"*EmployeeName〉"〈〈EN[i]< cout〈〈”*EmployeeNum〉”< cout〈<"*EmployeeDepart〉”〈〈ED[i]〈〈endl; cout<<”*EmployeeGrade〉"〈〈EG[i]〈 cout<<"*EmployeeWorkTime〉"< cout<〈"*EmployeePay〉"< cout<〈"**********************************”<〈endl; cout〈<"InputyourRefresh: "〈 chartmpName[50]; cout<<”newEmployeeName〉"; cin〉〉tmpName; Employee: : EmployeeName=newchar[strlen(tmpName)+1]; strcpy(Employee: : EmployeeName,tmpName); ////////////////////////////////////////// EN[i]=Employee: : EmployeeName; ////////////////////////////////////////// chartmpDepart[50]; cout〈<"newEmployeeDepartment〉”; cin〉>tmpDepart; Employee: : EmployeeDepart=newchar[strlen(tmpDepart)+1]; strcpy(Employee: : EmployeeDepart,tmpDepart); ED[i]=Employee: : EmployeeDepart; ////////////////////////////////////////// cout〈〈”newEmployeeGrade(1: zhiyuan2: zhuren3: jingli4: dongshizhang)〉”; cin>>Employee: : EmployeeGrade; while(Employee: : EmployeeGrade! =1&& Employee: : EmployeeGrade! =2&& Employee: : EmployeeGrade! =3&& Employee: : EmployeeGrade! =4) { cout〈〈"YourInputError! InputAgainbecareful: )"〈 cout<<”newEmployeeGrade(1: zhiyuan2: zhuren3: jingli4: dongshizhang)>”; cin>〉Employee: : EmployeeGrade; EG[i]=Employee: : EmployeeGrade; } ////////////////////////////////////////// cout<〈”newEmployeeWorkTime>"; cin>〉Employee: : EmployeeWorkTime; ////////////////////////////////////////// Employee: : EmployeePay=Employee: : Pay(EG[i]); EP[i]=Employee: : EmployeePay; break; } } dbo.WriteIn(0);//将更新信息写入数据文件 } voidEmployee: : DeleteInfo() { intcNum=1000; DBOperatedbo; dbo.ReadOut(); Employee: : ShowInfo(); cout〈〈”PleaseinputtheEmployee’sNum>”; cin〉〉cNum; intMN; MN=Employee: : MaxNum(); for(inti=0;i〈MN;i++) { if(ENum[i]==cNum) { cout〈<"***********************************"< cout<〈"Yourchoice'stheEmployee”〈 cout〈〈”**********************************”〈〈endl; cout〈〈”*EmployeeName>”< cout〈〈"*EmployeeNum〉”〈 cout<<"*EmployeeDepart>"〈 cout〈<”*EmployeeGrade>"〈〈EG[i]<〈endl; cout<〈"*EmployeeWorkTime〉”< cout〈<"*EmployeePay〉"<〈EP[i]〈 cout<〈”**********************************”<〈endl; } } cout<<”DeletetheEmployee'sInformation(Y/N)>"; charc; cin>〉c; if(i==MN-1)//如果指定要删除的员工信息在文件末尾,那么只要将员工人数减1就行 dbo.WriteIn(—1);//重新将信息写入数据文件 else { for(intj=i;j { EN[j]=EN[j+1]; } dbo.WriteIn(-1); } cout〈<"DeleteSuccess! "< } floatEmployee: : Pay(intEG) { floattmpPay; tmpPay=Employee: : EmployeeBasePay+EG*Employee: : EmployeeBasePay; returntmpPay; } voidDBOperate: : WriteIn(intiflag) { DBOperate: : RefreshMaxNum(iflag); ofstreammyf("c: \\Employee.txt");//打开C盘下的数据文件 Employeee; intMN; MN=e.MaxNum(); for(inti=0;i { myf〈〈EN[i]<<'\n’〈〈ENum[i]<<'\n’〈〈ED[i]<〈'\n’〈 } myf。 close(); return; } voidDBOperate: : ReadOut() { ifstreammyf(”c: \\Employee.txt”);//打开C盘下的数据文件 chartmpName[50]; chartmpDepart[50]; Employeee; intMN=0; MN=e.MaxNum(); for(inti=0;i〈MN;i++) { myf>〉tmpName>〉DBOperate: : EmployeeNum>>tmpDepart〉>DBOperate: : EmployeeGrade>〉DBOperate: : EmployeeWorkTime〉〉DBOperate: : EmployeePay;//依次读出 DBOperate: : EmployeeName=newchar[strlen(tmpName)+1]; DBOperate: : EmployeeDepart=newchar[strlen(tmpDepart)+1]; strcpy(DBOperate: : EmployeeName,tmpName); strcpy(DBOperate: : EmployeeDepart,tmpDepart); EN[i]=DBOperate: : EmployeeName; ENum[i]=DBOperate: : EmployeeNum; ED[i]=DBOperate: : EmployeeDepart; EG[i]=DBOperate: : EmployeeGrade; EWT[i]=DBOperate: : EmployeeWorkTime; EP[i]=DBOperate: : EmployeePay; } myf。 close(); } voidDBOperate: : RefreshMaxNum(intiflag) { intMaxNum=0; ifstreammyif(”c: \\EmployeeMaxNum.txt"); myif>>MaxNum; cout<〈MaxNum〈 myif。 close(); MaxNum=MaxNum+iflag;//将员工人数做相应变动 ofstreammyof(”c: \\EmployeeMaxNum。 txt”); myof〈〈MaxNum; myof.close(); } 四系统运行入口的设计 提供一个操作界面入图: 注意: 系统中有全局变量用于存储从数据文件中读出的员工信息 char*EN[50]; longENum[50]; char*ED[50]; intEG[50]; longEWT[50]; floatEP[50]; 该系统的操作就是围绕这些全局变量展开。 代码如下: voidmain() { intc2=0; while(c2! =5) { cout〈〈"EmployeeInformationManageSystem”〈 cout〈<”******************************************”〈〈endl; cout<<”*EmployeeList—-—-----—--1"〈 cout〈<"*AddNewEmployeeInformation--—-——--———2”<〈endl; cout〈<”*RefreshEmployeeInformation——--——-————3"〈〈endl; cout〈<"*DeleteEmployeeInformation-——-—-—-——-4"< cout<<”******************************************"<〈endl; cout〈<”*ExitEIMS——-—————-——-5"〈〈endl; cout〈<"******************************************"〈 cout<〈"Inputyourchoiceonhere>"; cin〉>c2; Employeee; DBOperatedbo; switch(c2) { case1: dbo.ReadOut();e。 ShowInfo();break; case2: e。 NewInfo();break; case3: e.RefreshInfo();break; case4: e。 DeleteInfo();break; case5: break; default: cout〈〈"Error! YourChoicedoesn'tExit”< } if(c2==5) break; } } 五运行步骤 运行主界面: 【步骤1】: 选择1,系统将已有的员工信息依次显示在屏幕上. 【步骤2】: 选择2,系统将添加新的员工信息。 【步骤3】: 选择3,系统将更新指定的员工信息。 【步骤4】: 选择4,系统将删除指定的员工信息。 【步骤5】: 选择5,退出系统。 六数据文件 Employee.txt存储员工的基本信息 EmployeeMaxNum.txt存储员工的人数 数据文件都存放在C盘根目录下。 该系统对数据文件的操作在系统运行过程中非常重要,是使整个系统正常运行的关键. 七参考文献 【1】《C语言程序设计》谭浩强编著清华大学出版社 【2】《C++程序设计教程》钱能主编清华大学出版社 八附录 完整代码: #include #include〈string> #include〈fstream> usingnamespacestd; char*EN[50]; longENum[50]; char*ED[50]; intEG[50]; longEWT[50]; floatEP[50]; classEmployee { public: char*EmployeeName; longEmployeeNum; char*EmployeeDepart; intEmployeeGrade; longEmployeeWorkTime; floatEmployeePay; staticlongEmployeeMaxNum; staticfloatEmployeeBasePay; voidNewInfo(); voidShowInfo(); voidRefreshInfo(); voidDeleteInfo(); floatPay
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 管理 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)