2020年度C公司人员信息管理系统课程设计报告_第1页
2020年度C公司人员信息管理系统课程设计报告_第2页
2020年度C公司人员信息管理系统课程设计报告_第3页
2020年度C公司人员信息管理系统课程设计报告_第4页
2020年度C公司人员信息管理系统课程设计报告_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C公司人员信息管

理系统课程设计报

目录

1系统需求分析.................................................1

2总体设计.....................................................2

3详细设计及实现...............................................6

4系统调试...................................................131

5结论........................................................73

6心得体会...................................................137

7参考书目....................................................75

文档仅供参考

1系统需求分析

1.1系统设计的目的与意义:

现在的公司人员数量及职位种类较多,各样的人事管理活动也

比较频繁,因此需要设计一个公司人员信息管理系统来对公司员

工信息进行管理。

1.2系统功能需求:

本系统有五个类:基类:employee、派生类:manager、

technician、salesman>salesmanager,储存经理、技术人员、销售人

员、销售经理信息。

(1)添加功能

程序能够任意添加上述四类人员的记录,可提供选择界面供

用户选择所要添加的人员类别,要求人员的编号要唯一,如果添

加了重复编号的记录时,则提示用户数据添加重复并取消添加。

(2)查询功能

可根据编号、姓名等信息对已添加的记录进行查询。如果未

找到,给出相应的提示信息,如果找到,则显示相应的记录信

息。

(3)显示功能

可显示当前系统中所有记录。

(4)修改功能

可根据查询结果对相应的记录进行修改,修改时注意编号的

唯一性。

文档仅供参考

(5)删除功能

对已添加的人员记录进行删除。如果当前系统中没有相应的

人员记录,则提示“记录为空!”并返回操作;否则输入要删除

的人员的编号或姓名,根据所输入的信息删除该人员记录,如果

没有找到该人员信息,则提示相应的记录不存在。

(6)统计功能

能根据多种参数进行人员的统计。例如:统计四类人员数量

以及总数,统计男、女员工的数量,统计平均工资、最高工资、

最低工资等。

(7)保存功能

将当前系统中各类人员记录存入文件中。

(8)读取功能

将保存在文件中的人员信息读入到当前系统中,以供用户使

用。

2总体设计

2.1系统功能分析:

系统经过调用函数来实现信息添加、信息查询、信息显示、信

息修改、信息删除、以及数据读取保存文件等功能。add()函数

用于录入信息;search()函数用来查询信息;show()函数用

来显示信息;alter()函数用来修改信息;del()函数用来删除

信息;stat()函数用来统计信息read()函数用于将文件中的数

据读取到内存中;save()函数用于将内存中的信息存入文件

文档仅供参考

内;主函数main()用于调用这些函数。

2.2系统功能模块划分与设计:

系统定义了manger类、technician类、salesman类、

salesmanger类这四个类,定义了add()、search()、show

()、alter()、del()、stat()、read()、save()、input

()、output。等函数来实现系统所需功能。

2.3系统功能模块图:

文档仅供参考

employee

virtualvoidadd()=();

virtualvoidsearch()=();

virtualvoidshow()=0;

virtualvoidalter()=();

virtualvoiddel()=();

virtualvoidstat()=O;

图3.1employee类

(2)经理类的设计

manager

voidadd();

voidsearch();

voidshow();

voidalter();

图3.2经理类

文档仅供参考

(3)技术人员类的设计

technician

voidadd();

voidsearch();

voidshow();

voidalter();

voiddel();

voidstat();

图3.3技术人员类

(4)销售人员类的设计

salesman

voidadd();

voidsearch();

voidshow();

voidalter();

voiddel();

<ric+

文档仅供参考

图3.4销售人员类

(5)成绩类的设计

salesmanager

voidadd();

voidsearch();

voidshow();

voidalter();

voiddelfk

3详细设计及实现

3.1employee类(抽象类)的实现

文档仅供参考

#include<string>

usingnamespacestd;

classemployee

public:

employee(void);

-employee(void);

virtualvoidadd()=();

virtualvoidsearch()=();

virtualvoidshow()=();

virtualvoidalter()=O;

virtualvoiddel()=0;

virtualvoidstat()=O;

virtualvoidsave()=0;

virtualvoidread()=0;

virtualvoidinput()=0;

virtualvoidoutput()=0;

protected:

stringnumber;

stringname;

stringsex;

stringdepartment;

文档仅供参考

stringrank;

floatsalary;

};

3.2经理类的实现

manager.h

#include"employee.h"

classmanager:

virtualpublicemployee

(

public:

manager(void);

-manager(void);

voidadd();

voidsearch();

voidshow();

voidalter();

voiddel();

voidstat();

voidsave();

voidread();

voidinput();

voidoutputQ;

文档仅供参考

};

manager.cpp

#include"StdAfx.h"

#include"manager.h"

#include<iostream>

#include<fstream>

#include<string>

#include<iomanip>

usingnamespacestd;

constintMAX=1()();

managerM[MAX];

intstatictop1=0;

manager::manager(void)

(

}

manager::-manager(void)

(

}

voidmanager::input()

{

cout<<"输入编号:"<<endl;

cin»number;

文档仅供参考

cout<〈”输入姓名:"«endl;

cin»name;

cout<<"输入性别:"<<endl;

cin»sex;

cout<<"输入部:"«endl;

cin»department;

cout<<"输入级别:"<<endl;

cin»rank;

cout<<"输入固定月薪:"«endl;

cin»salary;

}

voidmanager::output()

{cout«number«"\t"«name«"\t"«sex«"\t"«department«"\t"

<<rank«"\t"«salary«endl;

)

voidmanager::read()

(

top1=();

system("cls");

ifstreaminflie("经理.txt”,ios::in);

if(!inflie)

文档仅供参考

cout<<"打开失败!"<<endl;

return;

)

inti=0;

while(inflie»M[i].number»M[i].name»M[i].sex»M[i].depa

rtment»M[i].rank»M[i].salary)

(

i++;

topl=i;

)

inflie.close();

)

voidmanager::save()

(

ofstreamoutflie("经理.txt”,ios::out);

if(!outflie)

(

cout<<"打开失败!"<<endl;

return;

inti;

文档仅供参考

for(i=0;i<topl;i++)

outflie«M[i].number«"\t"«M[i].name«"\t"«M[i].sex«"\t

"<<M[i].department«"\t"«M[i].rank«"\t"«M[i].salary«endl;

}

cout<<"保存成功!"«endl;

outflie.close();

}

voidmanager::add()

(

system("cls");

read();

if(topl>=MAX)

(

coutvv"人员已满"<<endl;

return;

}

cout<<"输入要添加的编号:"«endl;

stringn;

cin»n;

for(inti=();i<top1;i++)

文档仅供参考

if(n==M[i].number)

cout<<"该编号的人员已存在"<<endl;

return;

}

managerm;

cout<〈"请再次输入新添加人员的信息"<<endl;

m.inputO;

cout«"是否确认添加?1、是2、否"<<endl;

inta;

cin»a;

if(a==l)

(

M[topl]=m;

top1=top1+1;

save();

)

else

(

cout<〈"放弃添加"<<endl;

return;

文档仅供参考

voidmanager::search()

(

system("cls");

read();

if(topl==0)

(

cout<<"当前系统没有储存记录!"«endl;

return;

}

intchoice;

cout<〈"请选择查找方式:1、按编号查找2、按姓名查找

0、退出”《endl;

cin»choice;

switch(choice)

(

case1:

(

cout<〈"请输入要查找的编号:"«endl;

stringnum;

cin»num;

文档仅供参考

for(inti=0;i<topl;i++)

(

if(M[i].number==num)

(

cout<<"编号姓名

性别部门"<<\"<<”级别月薪"《endl;

M[i].output();

return;

)

)

cout<<“查无此人!"<<endl;

};break;

case2:

(

cout«1'请输入要查找的姓名"<<endl;

stringname;

cin»name;

for(inti=();i<topl;i++)

(

if(M[i].name==name)

cout«"编号"姓名"«"\t"«"

文档仅供参考

性别"部门"<<\"<<”级别”《%"«"月薪"《endl;

M[i].output();

)

)

cout<<"查无此人!"<<endl;

};break;

case0:break;

default:cout<<"输入错误!请输入0〜3的数字

"«endl;system("pause");search();break;

voidmanager::show()

(

system("cls");

read();

if(topl==0)

(

cout<<"无数据!"«endl;

return;

文档仅供参考

cout«"编号"«"\t"«"姓名"《\"<<"性^0"«"\t"«"部门

"<<%"="级别月薪"<<endl;

for(inti=0;i<topl;i++)

M[i].output();

}

voidmanager::alter()

(

system("cls");

read();

if(topl==0)

(

cout<<"当前系统没有储存记录"<<endl;

return;

)

stringnum;

cout<<"请输入要修改的经理编号:"<<endl;

cin»num;

for(inti=0;i<topl;i++)

if(M[i].number==num)

文档仅供参考

cout«"编号"«"\t"«"姓名"<<%"<<"性别

”部门"《%"<<"级别月薪”《endl;

M[i].output();

cout<<"请选择修改范围:1、全部修改2、修改

编号3、修改姓名4、修改性别”<<endl;

cout«"5、修改部门6、修改级别7、

修改月薪"«endl;

cout«"0、退出修改"<<endl;

intchoice;

cin»choice;

switch(choice)

(

case1:

(

cout<<"输入修改后的编号:"<<endl;

stringn;

cin»n;

for(intj=0;j<topl;j++)

if(n==M[j].number)

cout<<"该编号的人员已存在"<<endl;

文档仅供参考

return;

cout<<”输入修改后的姓名:"<<endl;

stringna;

cin»na;

cout<<"输入修改后的性别:"<<endl;

strings;

cin»s;

cout<<"输入修改后的部门:"«endl;

stringd;

cin»d;

cout<<"输入修改后的级别:"«endl;

stringr;

cin»r;

cout<<"输入修改后的月薪:"<<endl;

floatsa;

cin»sa;

cout<<"是否确认修改?1、是2、

否"<<endl;

inta;

cin»a;

if(a==l)

文档仅供参考

M[i].number=n;

M[i].name=na;

M[i].sex=s;

M[i].department=d;

M[i].ranker;

M[i].salary=sa;

else

cout<<"放弃修改"<<endl;

return;

save();

};break;

case2:

cout«"请输入修改后的编号

"«endl;

stringn;

cin»n;

for(inti=0;i<topl;i++)

文档仅供参考

if(n==M[i].number)

(

cout<<"该编号的人员已存在"<<endl;

return;

)

cout<〈"是否确认修改?1、是

2、否"vvendl;

inta;

cin»a;

if(a==l)

M[i].number=n;

else

(

cout<〈"放弃修改"<<endl;

return;

)

save();

};break;

case3:

cout«"请输入修改后的姓名

文档仅供参考

"«endl;

stringna;

cin»na;

M[i].name=na;

cout<<"是否确认修改?1、是

2、否"<<endl;

inta;

cin»a;

if(a==l)

M[i].name=na;

else

(

cout<〈"放弃修改"<<endl;

return;

}

save();

};break;

case4:

(

cout«"请输入修改后的性别

"«endl;

strings;

文档仅供参考

cin»s;

M[i].sex=s;

cout<〈"是否确认修改?1>是

2、否"<<endl;

inta;

cin»a;

if(a-1)

M[i].sex=s;

else

{

cout<<"放弃修改"<<endl;

return;

}

save();

};break;

case5:

(

cout«"请输入修改后的部门

"«endl;

stringd;

cin»d;

M[i].department=d;

文档仅供参考

cout<<"是否确认修改?1、是

2、否"<<endl;

inta;

cin»a;

if(a==l)

M[i].department=d;

else

(

cout<<"放弃修改"<<endl;

return;

)

save();

};break;

case6:

(

cout«"请输入修改后级别

"«endl;

stringr;

cin»r;

M[i].rank=r;

cout<<"是否确认修改?1、是

2、否"<<endl;

文档仅供参考

inta;

cin»a;

if(a==l)

M[i].ranker;

else

(

cout<〈"放弃修改"<<endl;

return;

)

save();

};break;

case7:

{

cout«"请输入修改后的月薪

"«endl;

floatsa;

cin»sa;

M[i].salary=sa;

cout<〈"是否确认修改?1>是

2、否"<<endl;

inta;

cin»a;

文档仅供参考

if(a==l)

M[i].salary=sa;

else

(

cout<〈"放弃修改"<<endl;

return;

}

save();

};break;

caseO:cout<<"退出修改"<<endl;return;break;

default:cout«"无此选项!请输入0~7的数字

"«endl;system("pause");break;

)

cout«"修改完成"<<endl;

return;

)

)

cout<<"查无此人"<<endl;

}

voidmanager::del()

system("cls");

文档仅供参考

read();

if(topl==0)

(

cout<<"当前系统没有储存记录"<<endl;

return;

}

intchoice;

cout<〈"请删除查找方式:1、按编号删除2、按姓名删除

0、退出"<<endl;

cin»choice;

switch(choice)

(

case1:

(

cout«"请输入所要删除人员的编号:"«endl;

stringnum;

cin»num;

for(inti=();i<topl;i++)

(

if(M[i].number==num)

cout«"编号"姓名"«"\t"«"

文档仅供参考

性别"<<\"«"部门级别月薪"《endl;

M[i].output();

cout<<"是否确认删除?1、是2、否

"«endl;

intchoice;

cin»choice;

switch(choice)

(

case1:

{

for(intj=i;j<topl;j++)

M[j]=M[j+l];

cout«"删除成功!

"«endl;

topl=topl-l;

};save();break;

case2:return;

default:cout<<"没有止匕选项!"«endl;

}return;

)

cout<<”无止匕人!"<<endl;

文档仅供参考

};system("pause");del();break;

case2:

(

cout<<"请输入所要删除人员的姓名:"«endl;

stringname;

cin»name;

for(inti=0;i<topl;i++)

(

if(M[i].name==name)

(

cout«"编号"<<""<<"姓名"«"\t"«"

性别”《%”<<"部门"<<%"<<"级别”<<、"《"月薪"<<011由;

M[i].output();

cout<〈"是否确认删除?1、是2、否

"«endl;

intchoice;

cin»choice;

switch(choice)

(

case1:

for(intj=i;j<topl;j++)

文档仅供参考

M[j]=M[j+l];

cout«"删除成功!

"«endl;

top1=top1-1;

};save();break;

case2:return;

default:cout<<"没有止匕选项!"«endl;

}

)

}return;

cout<<"无此人!"«endl;

};break;

caseOibreak;

default:cout<〈"输入错误!请输入0〜3的数字

"«endl;system("pause");del();break;

)

save();

}

voidmanager::stat()

(

system("cls");

read();

文档仅供参考

intchoice;

cout«"k人数统计2、性别统计3、平均工资4、最高工

资5、最低工资0、退出"<<endl;

cout<<"请输入所要执行的编号:"<<endl;

cin»choice;

switch(choice)

(

casel:cout«"经理的人数为:

"«top1«endl;system("pause");stat();break;

case2:

(

inta=0,b=0;

stringY="男";

stringX="女";

for(inti=0;i<topl;i++)

(

if(M[i].sex==Y)

a++;

if(M[i].sex==X)

b++;

)

cout<<“男性人数:"<<a«endl;

文档仅供参考

cout<<"女性人数:"«b«endl;

};system("pause");stat();break;

case3:

(

floatave_salary=O;

floatall_salary=O;

for(inti=0;i<topl;i++)

(

all_salary=M[i].salary+all_salary;

}

ave_salary=all_salary/top1;

cout<<"平均工资:"«ave_salary;

};system("pause");stat();break;

case4:

(

floatmax_salary=O;

for(inti=0;i<topl-l;i++)

(

if(M[i].salary>M[i+l].salary)

(

max_salary=M[i].salary;

M[i+l].salary=max_salary;

文档仅供参考

else

max_salary=M[i+1].salary;

)

cout<<"最高工资:"«max_salary;

};system("pause");stat();break;

case5:

floatmin_salary=O;

for(inti=0;i<top1-1;i++)

|

if(M[i].salary<M[i+1].salary)

(

min_salary=M[i].salary;

M[i+l].salary=min_salary;

)

else

min_salary=M[i+l].salary;

)

cout<<"最低工资:"«min_salary;

};system("pause");stat();break;

case0:break;

文档仅供参考

default:cout«"无此选项!请输入0~5的数字

"«endl;system("pause");stat();break;

}

}

3.3技术人员类的实现

technician.h

#include"employee.h"

classtechnician:

publicemployee

{

public:

technician(void);

-technician(void);

voidadd();

voidsearch();

voidshow();

voidalter();

voiddel();

voidstat();

voidsave();

voidread();

文档仅供参考

voidinput();

voidoutput();

protected:

floatwork_time;

floattime_salary;

};

technician.cpp

include"StdAfx.h"

#include"technician.h"

#include<iostream>

#include<fstream>

#include<string>

#include<iomanip>

usingnamespacestd;

constintMAX=100;

technicianT[MAX];

intstatictop2=0;

technician::technician(void)

technician::-technician(void)

文档仅供参考

voidtechnician::input()

{

cout<<"请输入输入编号:"«endl;

cin»number;

cout<<"请输入输入姓名:"<<endl;

cin»name;

cout<〈"请输入输入性别:"«endl;

cin»sex;

cout<<"请输入输入部门:"«endl;

cin»department;

cout<<"请输入输入级别:"«endl;

cin»rank;

cout<〈"请输入输入工时:"<<endl;

cin»work_time;

cout<<"请输入输入时薪:"«endl;

cin»time_salary;

salary=time_salary*work_time;

}

voidtechnician::output()

{cout«number«"\t"«name«"\t"«sex«"\t"«department«"\t"

«rank«"\t"«work_time«"\t"«time_salary«"\t"«salary«endl;

文档仅供参考

voidtechnician::read()

(

top2=0;

system("cls");

ifstreaminflie(”技术人员.txt”,ios::in);

if(!inflie)

(

cout«”打开失败!"«endl;

return;

}

inti=0;

while(inflie»T[i].number»T[i].name»T[i].sex»T[i].depart

ment»T[i].rank»T[i].work_time»T[i].time_salary»T[i].salary)

(

i++;

top2=i;

}

inflie.closeO;

voidtechnician::save()

文档仅供参考

ofstreamoutflie("技术人员.txt",ios::out);

if(!outflie)

(

cout<<"打开失败!"«endl;

return;

}

inti;

for(i=0;i<top2;i++)

(

outflie«T[i].number«"\t"«T[i].name«"\t"«T[i].sex«"\t"<

<T[i].department«"\t"«T[i].rank«"\t"«T[i].work_time«"\t"«T[

i].time_salary«"\t"«T[i].salary«endl;

}

cout«"保存成功!"«endl;

outflie.close();

}

voidtechnician::add()

(

system("cls");

read();

文档仅供参考

if(top2>=MAX)

cout<<"人员已满"<<endl;

return;

}

cout<<"输入要添加的编号:"«endl;

stringn;

cin»n;

for(inti=0;i<top2;i++)

if(n==T[i].number)

(

cout<<"该编号的人员已存在"<<endl;

return;

}

techniciant;

cout«"请再次输入新添加人员的信息"《endl;

t.input();

coutcc"是否确认添加?1、是2、否"<<endl;

inta;

cin»a;

if(a==l)

文档仅供参考

T[top2]=t;

top2=top2+l;

save();

)

else

(

cout<〈"放弃添加"<<endl;

return;

voidtechnician::search()

(

system("cls");

read();

if(top2==0)

(

cout<<"当前系统没有储存记录!"«endl;

return;

)

intchoice;

cout<〈"请选择查找方式:1、按编号查找2、按姓名查找

0、退出"vvendl;

文档仅供参考

cin»choice;

switch(choice)

(

case1:

(

cout<〈"请输入要查找的编号:"«endl;

stringnum;

cin»num;

for(inti=0;i<top2;i++)

(

if(T[i].number==num)

(

cout<<"编号姓名

性别部门"《%"<<"级别"<<\"<<"工时"<<%"《"时薪

"月薪"<<endl;

T[i].output();

return;

)

}

cout<<"查无此人!"<<endl;

};break;

case2:

文档仅供参考

cout<<"请输入要查找的姓名"<<endl;

stringname;

cin»name;

for(inti=0;i<top2;i++)

(

if(T[i].name==name)

(

cout<<"编号"<<\"<<"姓名

性别"<<%"<<"部n"«"\t"«"级别"<<\"«"工时"<<%"<<"时薪

"<<\"<<"月薪”《endl;

T[i].output();

return;

)

)

cout<<"查无此人!"<<endl;

};break;

case0:break;

default:cout<<"输入错误!请输入03的数字

"«endl;system("pause");search();break;

)

文档仅供参考

voidtechnician::show()

{

system("cls");

read();

if(top2==0)

(

coutvv"无数据!"«endl;

return;

)

cout«"编号"«"\t"«"姓名性别部门

"«"\t"«"级别"<<\"<<"工时时薪"«"\t"«"月薪

"«endl;

for(inti=0;i<top2;i++)

T[i].output();

}

voidtechnician::alter()

(

system("cls");

read();

if(top2==0)

文档仅供参考

COUt«"当前系统没有储存记录"《611祖;

return;

)

stringnum;

cout<<"请输入要修改的技术人员编号:"«endl;

cin»num;

for(inti=0;i<top2;i++)

(

if(T[i].number==num)

(

cout«"编号"«"\t"«"姓名"<<\"<<"性别

"«"\t"«"部门"<<""<<"级别”<<\"<<"工时"«"\t"«"时薪

"月薪"《endl;

T[i].output();

cout<<"请选择修改范围:1、全部修改2、修改

编号3、修改姓名4、修改性别”<<endl;

cout«"5、修改部门6、修改级别7、

修改工时8、修改时薪"<<endl;

cout«"0、退出修改"<<endl;

intchoice;

cin»choice;

文档仅供参考

switch(choice)

case1:

(

cout<<"输入修改后的编号:"<<endl;

stringn;

cin»n;

for(intj=0;j<top2;j++)

if(n==T[j].number)

(

cout<<"该编号的人员已存在"<<endl;

return;

)

cout<<"输入修改后的姓名:"«endl;

stringna;

cin»na;

cout<<"输入修改后的性别:"«endl;

strings;

cin»s;

cout<<"输入修改后的部门:"<<endl;

stringd;

文档仅供参考

cin»d;

cout<<"输入修改后的级别:"<<endl;

stringr;

cin»r;

cout«”输入修改后的工时:"<<endl;

floatwt;

cin»wt;

cout<<"输入修改后的工时:"<<endl;

floatts;

cin»ts;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论