【课程设计】职工信息管理系统_课程设计职工管理系统
【课程设计】职工信息管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“课程设计职工管理系统”。
题目:职工信息系统
功能包括:
建立职工信息数据(职工编号,姓名,性别,年龄,电话,职务,工资和家庭成员信息)和信息简表(编号,姓名,电话) 根据职工编号查询职工信息(查询时需要身份确认。单位领导和人事秘书可以看到职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信息简表) 增加新职工信息(由人事秘书完成,需要身份确认) 删除职工信息(由人事秘书完成,需要身份确认) 修改职工工资(由财务处人员完成,需要身份确认) 要求所有信息能够存储在文件中,并具有良好的用户界面
#include #include #include #include using namespace std;const char * file = “staff.dat”;const int LIM =8;int ct=0;int Admin;int na;
//ct用来储存文件中数据组数,Admin用来储存登陆后该用户的权限,//na用来储存登录所输的编号,方便主菜单内使用其显示当前用户
void hline(int);inline void eatline(){while(cin.get()!='n')continue;} cla staff {/*职工编号,姓名,性别,年龄,职务,电话,工资和家庭成员信息*/ public:
};void staff::printf()
//输出的选择,判断其职务,选择调用哪个输出 { if(Admin==1||Admin==2)printf1();else int num;char name[LIM],sex[3];int age;char job[10],phone[15];double wages;char home[20];int admin;void printf();void printf1();void printf2();void printf3();
}
if(Admin==3)printf2();else printf3();void staff::printf1()
//领导及人事秘书能见的输出 {
} void staff::printf2()
//财务人员能见的输出 {
} void staff::printf3()
//普通员工能见的输出 { cout
} hline(3);cout
//输出信息的头部 {
switch(n){ case 1:{cout
};break;case 2:{cout
};break;case 3:{cout
}
}
};break;void menu()
//主菜单 { cout
//二级菜单 { cout
//登陆的实现部分 { cout
int w=0;while(!(cin>>na)){ cin.clear();while(cin.get()!='n')continue;cout
for(int i=1;i
{
streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){
cerr
exit(EXIT_FAILURE);
} find.read((char *)&stu, sizeof stu);if(stu.num==na){ } w=1;Admin=stu.admin;}
if(w==0){cout
}
int stu_num()
//计算数据组数 {
} staff stu;ifstream stunum;stunum.open(file,ios_base::in|ios_base::binary);if(stunum.is_open()){
} stunum.close();return ct;stunum.seekg(0);while(stunum.read((char *)&stu,sizeof stu))ct++;system(“pause”);system(“cls”);void setadmin(staff &stu,char jobs[10])
//增加职工时根据职务设置权限 { char job1[10]=“总经理”;char job2[10]=“副总经理”;char job3[10]=“人事秘书”;char job4[10]=“财务人员”;
}
void add()
// 输入数据的函数,增加职工 {
if(Admin==2){ staff stu;if((!strcmp(stu.job,job1))||(!strcmp(stu.job,job2)))stu.admin=1;else
if(!strcmp(stu.job,job3))stu.admin=2;else if(!strcmp(stu.job,job4))stu.admin=3;
ofstream fout(file, ios_base::out | ios_base::app | ios_base::binary);
if(!fout.is_open())
{
cerr
exit(EXIT_FAILURE);
}
cout
cin.get(stu.name, LIM);
while(stu.name[0]!= ' ')
{
cout
cin>>stu.num;cout >stu.age;
cout
cout
cin.get(stu.phone, 15);
cout >stu.wages;
cout
eatline();
cin.get(stu.home, 20);setadmin(stu,stu.job);
fout.write((char *)&stu, sizeof stu);cout
eatline();cin.get(stu.name,LIM);
}
fout.close();
} else cout
void output()
//输出全部职工信息的函数 { staff stu;
} ifstream find;find.open(file,ios_base::in|ios_base::binary);hline(1);while(find.read((char *)&stu,sizeof stu)){ cout
//修改数据函数 {
if(Admin==3){
fstream change;
int w=0;staff stu;streampos place;
change.open(file,ios_base::in|ios_base::out|ios_base::binary);if(change.eof())change.clear();
//清除EOF cout>rec;eatline();for(int i=0;i
place =i* sizeof stu;change.seekg(place);if(change.fail()){
cerr
exit(EXIT_FAILURE);
} change.read((char *)&stu, sizeof stu);if(stu.num==rec){ } w=1;
cout
}
if(w==1){ cout > stu.wages){
if(stu.wages100000)
{
cout
cin.clear();
while(cin.get()!='n');
continue;
}
break;} change.seekp(place);
// 回到查找到的地点
change.write((char *)&stu, sizeof stu)
cerr
n“;
}
exit(EXIT_FAILURE);} change.close();cout
void del()
//删除指定编号的职工信息 {
if(Admin==2){
while(1){ eatline();int delnum;cout
cin>>delnum;fstream in;in.open(”staff.dat“,ios_base::in|ios_base::binary);if(!in){ cout
} in.close();temp.close();//修改完成,将原文件清空,并将临时文件内容q=0;if(stu.num==delnum){ } if(q==0)temp.write((char*)&stu,sizeof(stu));in.read((char*)&stu,sizeof(stu));q=1;复制回原文件
中
} { out.write((char*)&stu,sizeof(stu));temp.read((char*)&stu,sizeof(stu));out.open(”staff.dat“,ios_base::out|ios_base::trunc|ios_base::binary);temp.read((char*)&stu,sizeof(stu));while(!temp.eof())//将文件内容修改后临时寸到另一个文件
temp.open(”temp.dat“,ios_base::in|ios_base::binary);if(!temp){ cout
cout>x;if(!(x=='y'||x=='Y'))break;} else cout
void find()
//查找职工的实现部分 {
while(1){ menu2();//eatline();int a;int w=0;cin>>a;int na;char sna[LIM];fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu;switch(a){ case 1:cout>na;break;
case 2:cout>sna;break;case 3:{w=1;
if(Admin==1||Admin==2)output();else cout
}break;default:{
} for(int i=1;i
streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){
cout
cerr
exit(EXIT_FAILURE);} find.read((char *)&stu, sizeof stu);switch(a){ case 1:if(stu.num==na){
w=1;
stu.printf();};break;case 2:if(!strcmp(stu.name,sna))
{
w=1;
stu.printf();
};break;case 3:break;default:{
cout
cin.clear();
while(cin.get()!='n');continue;
}
} }
n”;
} if(w==0)cout>x;if(!(x=='y'||x=='Y'))break;} /* 建立职工信息数据(职工编号,姓名,性别,年龄,电话,职务,工资和家庭成员信息)和信息简表(编号,姓名,电话)根据职工编号查询职工信息(查询时需要身份确认。单位领导和人事秘书可以看到
职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信 息简表)
增加新职工信息(由人事秘书完成,需要身份确认)
删除职工信息(由人事秘书完成,需要身份确认)
修改职工工资(由财务处人员完成,需要身份确认)
要求所有信息能够存储在文件中,并具有良好的用户界面 */
int main(){
system(“color 6F”);ifstream fin;fin.open(file,ios_base::in|ios_base::binary);if(!fin.is_open()){ staff st[5]={ {10001,“张三”,“男”,35,“总经理”,“***”,20000,“父母,弟弟,姐姐”,1},{10002,“李四”,“男”,32,“副总经理”,“***”,12000,“父母,兄长”,1},{10003,“
王
婷
”,“
女
”,25,“
人
事
秘
书”,“***”,10000,“---略---”,2},{10004,“陈六”,“女”,25,“财务人员”,“***”,8000,“---略---”,3},{10005,“Obama”,“
男
”,23,“
普
通
职
工”,“***5”,7000,“---略---”,0}};ofstream fout(file,ios_base::out|ios_base::binary);
for(int i=0;i>n;switch(n){ case '1':eatline();find();break;case '2':add();break;case '3':del();break;case '4':change();break;case '5':exit(EXIT_FAILURE);
n “;
default:{
cout
cin.clear();
while(cin.get()!='n');
continue;}
清除已经输入的内容,程序选择
}
system(”pause“);
system(”cls");
cin.clear();}
return 0;}
//如果选择错误,cin.clear等语句