职工信息管理系统源代码Word下载.docx

上传人:b****7 文档编号:21923755 上传时间:2023-02-01 格式:DOCX 页数:25 大小:19.20KB
下载 相关 举报
职工信息管理系统源代码Word下载.docx_第1页
第1页 / 共25页
职工信息管理系统源代码Word下载.docx_第2页
第2页 / 共25页
职工信息管理系统源代码Word下载.docx_第3页
第3页 / 共25页
职工信息管理系统源代码Word下载.docx_第4页
第4页 / 共25页
职工信息管理系统源代码Word下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

职工信息管理系统源代码Word下载.docx

《职工信息管理系统源代码Word下载.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统源代码Word下载.docx(25页珍藏版)》请在冰豆网上搜索。

职工信息管理系统源代码Word下载.docx

strcpy(this->

Sex,Esex);

this->

Borntime=Eborntime;

Duty=Eduty;

}

//获取职工年龄

voidGetage()

{

Age=2014-Borntime;

}

virtualvoidCalcwage()=0;

virtualvoidOutput()=0;

friendclassCompany;

};

classClerks:

publicEmployees//文员类

private:

doubleWorkload;

//上个月完成工作量

Clerks(charID,char*Ename,char*Esex,intEborntime,intEduty,doubleEworkload):

Employees(ID,Ename,Esex,Eborntime,Eduty)

Workload=Eworkload;

doubleGetWorkload()

returnWorkload;

voidSetWorkload(doubleAmount)

Workload=Amount;

//文员的总工资

voidCalcwage()

Salary=Cwage+Workload*20;

voidOutput()

Getage();

Calcwage();

cout<

<

Num<

"

\t"

Name<

Sex<

Borntime<

年\t"

Age<

岁\t"

文员\t"

Salary<

endl;

classSalesman:

publicEmployees//销售员类

Salesman(charID,char*Ename,char*Esex,intEborntime,intEduty,doubleEworkload):

Salary=Swage+Workload*20+100;

//100为业务补贴

cout<

销售员\t"

classSManager:

publicEmployees//销售经理类

SManager(charID,char*Ename,char*Esex,intEborntime,intEduty,doubleEworkload):

voidSetWorkload(doubles)

Workload=s;

Salary=Mwage+Workload*10+100;

//100为行政补贴

销售经理\t"

classGManager:

publicEmployees//总经理类

GManager(charID,char*Ename,char*Esex,intEborntime,intEduty):

Employees(ID,Ename,Esex,Eborntime,Eduty){}

Salary=Mwage+1000;

//1000为行政补贴

总经理\t"

classCompany//公司类

Employees*Worker;

//创建一个职工的链表

voidClear();

//清除内存中数据

Company()

Worker=0;

Load();

~Company()

Employees*p;

p=Worker;

while(p)

{

p=p->

next;

deleteWorker;

Worker=p;

}

doubleAwage();

//计算平均工资

doubleAage();

//计算平均年龄

voidAdd();

//增加职工信息

voidModify();

//修改职工信息

voidDelete();

//删除职工信息

voidQuery();

//查询职工信息

voidSet();

//基础数据设置

voidCount();

//简单统计信息

voidSave();

//数据存入磁盘(包括基础数据,职工数据)

voidLoad();

//数据载入内存(包括基础数据,职工数据)

voidCompany:

:

Clear()//清除内存中职工数据(内部使用)

Employees*p=Worker;

while(p)

Worker=p->

deletep;

}

Add()

Employees*p;

//新结点指针

//名字

//上个月工作量

\n**新增职工**\n"

;

//输入职工信息

输入编号:

cin>

>

ID;

输入姓名:

Name;

输入性别:

Sex;

输入出生年份:

cin>

Borntime;

输入职位(1:

文员2:

销售员3:

销售经理4:

总经理):

Duty;

while(Duty!

=1&

&

Duty!

=2&

=3&

=4)

输入有误,请重新输入:

**1:

总经理**"

cin>

if(Duty!

上个月完成工作量:

Workload;

//创建新职工结点

switch(Duty)

case1:

p=newClerks(ID,Name,Sex,Borntime,Duty,Workload);

break;

case2:

p=newSalesman(ID,Name,Sex,Borntime,Duty,Workload);

case3:

p=newSManager(ID,Name,Sex,Borntime,Duty,Workload);

case4:

p=newGManager(ID,Name,Sex,Borntime,Duty);

p->

next=0;

//员工结点加入链表

if(Worker)//若已经存在结点

Employees*p2;

p2=Worker;

while(p2->

next)//查找尾结点

p2=p2->

p2->

next=p;

//连接

else//若不存在结点(链表为空)

Worker=p;

新增职工成功!

Modify()

//编号

\n**修改职工信息**\n"

ID:

Num;

//查找要修改的结点

Employees*p1,*p2;

p1=Worker;

while(p1)

if(p1->

Num==Num)

break;

else

p2=p1;

p1=p1->

//修改结点

if(p1!

=NULL)//若找到结点

p1->

Output();

调整职位(1-文员2-销售员3-销售经理4-总经理):

Duty!

=Duty)//若职位发生变动

//修改其它数据

cout<

输入出生时间:

if(Duty!

{

cout<

}

//创建新员工结点

Employees*p3;

switch(Duty)

case1:

p3=newClerks(p1->

Num,Name,Sex,Borntime,Duty,Workload);

case2:

p3=newSalesman(p1->

case3:

p3=newSManager(p1->

case4:

p3=newGManager(p1->

Num,Name,Sex,Borntime,Duty);

//员工结点替换到链表

p3->

next=p1->

if(p1==Worker)//若要替换的结点是第一个结点

Worker=p3;

else//若要删除的结点是后续结点

p2->

next=p3;

//删除原来的员工结点

deletep1;

else//若职位没有变动

p1->

if(Duty==1)

((Clerks*)p1)->

SetWorkload(Workload);

elseif(Duty==2)

((Salesman*)p1)->

elseif(Duty==3)

((SManager*)p1)->

修改职工信息成功!

\n"

else//未找到结点

错误:

未找到该职工信息!

Delete()//删除职工信息

\n**删除职工**\n"

//查找要删除的结点

//删除结点

=NULL)//若找到结点,则删除

if(p1==Worker)//若要删除的结点是第一个结点

Worker=p1->

else//若要删除的结点是后续结点

p2->

找到并删除\n"

Query()

intcheck,count(0);

\n**查询职工信息**\n"

编号\t"

姓名\t"

性别\t"

出生时间"

"

年龄\t"

职位\t"

工资(元/月)"

//doublesum1=0;

//工资总和

//intTotalnum=0;

//职工总数

//sum1+=p->

Salary;

//Totalnum++;

p=p->

//cout<

本月实发工资总数:

sum1<

元"

请输入你要查询职工的编号:

check;

Employees*p4=Worker;

while(p4)

if(p4->

Num==check)

if(p4->

Duty==1)

((Clerks*)p4)->

count++;

break;

elseif(p4->

Duty==2)

((Salesman*)p4)->

Duty==3)

((SManager*)p4)->

Duty==4)

((GManager*)p4)->

p4=p4->

if(count==0)cout<

Set()

\n**设置基础数据**\n"

文员基本工资("

Cwage<

元):

Cwage;

销售员基本工资("

Mwage<

Mwage;

经理基本工资("

Swage<

Swage;

基础数据已设置!

doubleCompany:

Awage()//计算平均工资函数

{

doublesum1=0;

//工资总和

doubleAverwage;

//平均工资

intTotalnum=0;

p->

sum1+=p->

Totalnum++;

p=p->

Averwage=sum1/Totalnum;

//计算平均工资

returnAverwage;

}

Aage()//计算平均年龄函数

doublesum2=0;

//年龄总和

doubleAverage;

//平均年龄

sum2+=p->

Age;

Average=sum2/Totalnum;

//计算平均年龄

returnAverage;

Count()

intch;

\n**简单统计信息**\n"

1:

计算职工平均年龄\n"

2:

计算职工工资排行\n"

请选择操作(1/2):

ch;

switch(ch)

Aage();

break;

Awage();

default:

cout<

命令有误!

Save()//数据存盘(包括基础数据,人员数据),均采用文本文件

ofstreamfEmployees,fBase;

charc;

\n保存职工和基础数据,是否继续?

[Y/N]:

c;

if(toupper(c)!

='

Y'

||toupper(c)!

y'

)return;

//保存职工编号、姓名、性别、出生时间、年龄、职位、工资(元/月)

fEmployees.open("

Employees.txt"

ios:

out);

fEmployees<

p->

Duty<

if(p->

fEmployees<

((Clerks*)p)->

GetWorkload()<

elseif(p->

((Salesman*)p)->

((SManager*)p)->

fEmployees.close();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1