职工信息管理系统外加课程设计报告.docx
《职工信息管理系统外加课程设计报告.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统外加课程设计报告.docx(31页珍藏版)》请在冰豆网上搜索。
![职工信息管理系统外加课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-12/7/d2471595-d269-41e1-b265-eaebc4c9c47c/d2471595-d269-41e1-b265-eaebc4c9c47c1.gif)
职工信息管理系统外加课程设计报告
/*职工信息管理系统
建立一个职工信息管理系统,对于普通员工只能查询和修改自己的详细信息
和查询其他员工的简单信息,对于人事部门人员可以查询、修改、增加所有职工的详细信息
(但不包含修改工资),对于财务部门人员可以查询所有职工的详细信息,和修改职工的工资。
(1)进入系统需要密码验证
(2)具有简单的菜单功能。
(不同类型的员工的菜单形式不同)
(3)能够按要求完成职工信息的增加,删除,查询和更新相关信息
(4)对程序源代码要给出各部分的详细注释。
(5)雇员信息以文件的形式存储。
(6)自己根据能力及需要添加相应功能模块,增强模拟系统功能。
*/
#include
#include//因为要用到控制符,所以添加其定义
#include//输入输出文件流类
#include
#defineSIZE100
usingnamespacestd;
classinfomation//定义包含需要处理信息的类
{
public:
charname[10];//姓名
charnum[10];//工号
charsex[3];//性别
intage;//年龄
intdepartment;//部门1普通职工2人事部门人员3财务部门人员
charaddress[10];//地址
floatsalary;//工资
chardate[12];//出生日期
charpswd[10];//密码
};
infomationstu[SIZE];//每个元素对应一条信息
intlen;//总数
intID;//登录者的索引
classperson//定义普通职工类
{
public:
person();
~person();
voidload();//读取信息
voidsave();//保存信息
intmenu();//菜单
voidmodify();//修改信息
voidsearch();//信息查询
intcheck(chars[],inti);//检查是否有信息重复
};
classrenshi:
publicperson//定义人事部门类
{
public:
voidinput();//录入信息
voiddel();//删除信息
};
classcaiwu:
publicperson//定义财务部门类
{
public:
voidmodify_salary();//修改工资
};
charfilename[]="person.txt";
person:
:
person(){}
person:
:
~person(){}
voidcaiwu:
:
modify_salary()
{
chars[20];
system("cls");//清屏
cout<<"请输入要修改工资的职工的工号:
";
cin>>s;
for(inti=0;iif(strcmp(stu[i].num,s)==0)
break;//存在
if(i==len)//相等,说明输入信息不存在
{
cout<<"对不起!
没有你输入工号的相关信息。
"<system("pause");//任意键继续
return;
}
cout<<"请输入工资:
";
cin>>stu[i].salary;
save();//保存
cout<<"工资修改成功!
"<system("pause");//任意键继续
}
voidperson:
:
load()//读取所需信息
{
fstreamfile(filename,ios:
:
in);//以读的方式打开文件,ios:
:
in见与书上245页
inti=0;
if(file.is_open())
{
while(!
file.eof())//判断是否到文件末尾
{
file>>stu[i].name
>>stu[i].num
>>stu[i].sex
>>stu[i].age
>>stu[i].department
>>stu[i].address
>>stu[i].salary
>>stu[i].date
>>stu[i].pswd
;//读取文件
if(!
file.eof())
i++;
}
file.close();//关闭文件
}
else
{
strcpy(stu[0].name,"管理员");
strcpy(stu[0].num,"0");//初始登录工号
strcpy(stu[0].pswd,"0");//初始登录密码
stu[0].department=2;//为人事部门人员
strcpy(stu[0].sex,"男");
strcpy(stu[0].address,"北京");
strcpy(stu[0].date,"2010-10-01");
stu[0].age=22;
stu[0].salary=2000;
i=1;
}
len=i;
}
voidperson:
:
save()//保存录入职工信息
{
fstreamfile(filename,ios:
:
out|ios:
:
trunc);
if(file.is_open())
{
for(inti=0;ifile
<<<<<<<<<<file.close();//关闭文件
}
}
intperson:
:
check(chars[],inti)//检查是否重复
{
intg=0;
for(;gif(strcmp(stu[g].num,s)==0&&i!
=g)//比较是不是一样,一样就说明重复了
return1;//表示重复了
return0;//查找了整个数组都没发现重复的表示没有重复
}
voidrenshi:
:
input()//录入信息
{
charch;
system("cls");//清屏
for(inti=len;i{
cout<<"请输入姓名:
";
cin>>stu[i].name;
cout<<"请输入工号:
";
cin>>stu[i].num;
while(check(stu[i].num,i)==1)
{
cout<<"工号重复,请重新输入:
";
cin>>stu[i].num;
}
cout<<"请选择性别(1、男2、女):
";
while
(1)
{
cin>>ch;
if(ch=='1'||ch=='2')
break;
else
cout<<"输入错误请重新输入:
";
}
if(ch=='1')
strcpy(stu[i].sex,"男");
else
strcpy(stu[i].sex,"女");
cout<<"请输入年龄:
";
cin>>stu[i].age;
cout<<"请选择部门(1、普通职工2、人事部门人员3、财务部门人员):
";
while
(1)
{
cin>>stu[i].department;
if(stu[i].department==1||stu[i].department==2||stu[i].department==3)
break;
else
cout<<"输入错误请重新输入:
";
}
cout<<"请输入地址:
";
cin>>stu[i].address;
cout<<"请输入初始工资:
";
cin>>stu[i].salary;
cout<<"请输入出生日期(格式:
2012-01-02):
";
cin>>stu[i].date;
cout<<"请输入密码:
";
cin>>stu[i].pswd;
len++;//个数加1
cout<<"一条信息录入完成,是否继续录入?
(y/n):
";
while
(1)
{
cin>>ch;
if(ch=='y'||ch=='Y'||ch=='n'||ch=='N')
break;
else
cout<<"输入错误请重新输入:
";
}
if(ch=='n'||ch=='N')
break;
}
save();//保存
}
voidrenshi:
:
del()//删除信息
{
chars[20];
system("cls");//清屏
cout<<"请输入要删除的工号:
";
cin>>s;
for(inti=0;iif(strcmp(stu[i].num,s)==0)
break;//存在结束循环
if(i==len)//这二者相等说明查找完所有信息也没找到输入信息,说明输入信息不存在
{
cout<<"对不起!
没有你输入工号的相关信息。
\n";
system("pause");//任意键继续
return;
}
stu[i]=stu[len-1];//用最后一条信息覆盖要删除的信息
len--;//信息条数减一
save();//保存
cout<<"删除成功!
"<system("pause");//任意键继续
}
voidperson:
:
modify()//修改信息
{
inti;
chars[20],ch;
system("cls");//清屏
if(stu[ID].department==1)//是普通职工
{
i=ID;
}
else
{
cout<<"请输入要修改的工号:
";
cin>>s;
for(i=0;iif(strcmp(stu[i].num,s)==0)
break;//存在结束循环
if(i==len)//相等,说明输入信息不存在
{
cout<<"对不起!
没有你输入工号的相关信息。
\n";
system("pause");//任意键继续
return;
}
}
cout<<"请输入姓名:
";
cin>>stu[i].name;
cout<<"请输入工号:
";
cin>>stu[i].num;
while(check(stu[i].num,i)==1)
{
cout<<"工号重复,请重新输入:
";
cin>>stu[i].num;
}
cout<<"请选择性别(1、男2、女):
";
while
(1)
{
cin>>ch;
if(ch=='1'||ch=='2')
break;
else
cout<<"输入错误请重新输入:
";
}
if(ch=='1')
strcpy(stu[i].sex,"男");
else
strcpy(stu[i].sex,"女");
cout<<"请输入年龄:
";
cin>>stu[i].age;
cout<<"请选择部门(1、普通职工2、人事部门人员3、财务部门人员):
";
while
(1)
{
cin>>stu[i].department;
if(stu[i].department==1||stu[i].department==2||stu[i].department==3)
break;
else
cout<<"输入错误请重新输入:
";
}
cout<<"请输入地址:
";
cin>>stu[i].address;
cout<<"请输入出生日期(格式:
2012-01-02):
";
cin>>stu[i].date;
cout<<"请输入密码:
";
cin>>stu[i].pswd;
save();//保存
cout<<"修改成功!
"<system("pause");//任意键继续
}
voidperson:
:
search()//职工信息查询
{
chars[20];
system("cls");//清屏
cout<<"请输入要查询的工号:
";
cin>>s;
for(inti=0;iif(strcmp(stu[i].num,s)==0)
break;//存在
if(i==len)//相等,说明输入信息不存在
{
cout<<"对不起!
没有你输入工号的相关信息。
\n";
system("pause");//任意键继续
return;
}
cout<<"查询结果如下:
"<cout<<"********************************************************************************"<if(i==ID||ID>1)//是自己或不是普通职工
{
cout<<"姓名工号性别年龄部门地址工资出生日期"<cout.setf(ios:
:
left);//设置左对齐
cout<:
fixed)<(2)//设置保留小数,其用法见书上228页的格式输出
<<<<<<<<<}
else
{
cout<<"姓名:
工号:
性别:
年龄:
部门:
出生日期:
"<cout.setf(ios:
:
left);//设置左对齐
cout<:
fixed)<(2)//设置保留小数,其用法见书上228页的格式输出
<<<<<<<}
cout<<"*****************************************************************************"<cout<<"备注:
1、普通职工2、人事部门人员3、财务部门人员"<system("pause");//任意键继续
}
voidlogin()//实现职工登录
{
charnum[10],pswd[10];
system("cls");//清屏
cout<<"******************************************************************************"<cout<<"人事部门初始工号:
0密码:
0"<cout<<"******************************************************************************"<cout<<"\n\n\n\n\n\n\n请输入工号:
";
cin>>num;
for(inti=0;iif(strcmp(stu[i].num,num)==0)
break;//存在
if(i==len)//相等,说明输入信息不存在
{
cout<<"对不起!
没有你输入工号的相关信息。
";
system("pause");//任意键继续
exit(0);
}
cout<<"请输入密码:
";
cin>>pswd;
if(strcmp(pswd,stu[i].pswd)!
=0)//匹配密码
{
cout<<"对不起!
密码错误,登录失败。
";
system("pause");//任意键继续
return;
}
else
{
ID=i;//登录者索引
cout<<"登录成功。
";
system("pause");//任意键继续
}
}
intperson:
:
menu()//总的功能菜单
{
intc;
system("cls");//清屏
if(stu[ID].department==1)
{
cout<<"********************************************************"<cout<<"1、修改职工信息"<cout<<"********************************************************"<cout<<"2、查询职工信息"<cout<<"********************************************************"<cout<<"3、返回登录"<cout<<"********************************************************"<}
elseif(stu[ID].department==2)
{
cout<<"**********************************************************"<cout<<"1、增加职工信息"<cout<<"**********************************************************"<cout<<"2、修改职工信息"<cout<<"**********************************************************"<cout<<"3、查询职工信息"<cout<<"**********************************************************"<cout<<"4、删除职工信息"<cout<<"**********************************************************"<cout<<"5、返回登录"<cout<<"**********************************************************"<}
elseif(stu[ID].department==3)
{
cout<<"**********************************************************"<cout<<"1、修改职工工资"<cout<<"**********************************************************"<cout<<"2、查询职工信息"<cout<<"**********************************************************"<cout<<"3、返回登录"<cout<<"**********************************************************"<}
cout<<"请选择:
";
cin>>c;
returnc;
}
//以下是对普通员工、人事部门、财务部门权限的分类
intperson1()//普通员工所具有的权限设置
{
personstud;
stud.load();//读取文件信息
while
(1)
{
intsel=stud.menu();//获取选择
switch(sel)
{
case1:
stud.modify();break;//修改
case2:
stud.search();break;//查询
case3:
return0;//返回登录
}
}
return0;
}
intrenshi1()//人事部门的功能
{
renshistud;
stud.load();//读取文件信息
while
(1)
{
intsel=stud.menu();//获取选择
switch(sel)
{