跪求C++课程设计,职工工资管理系统的设计代码和Word模板报告

2024-12-23 14:01:39
推荐回答(1个)
回答1:

#include
#include
#include
#include
struct Staff
{
int number;
char name[10];
short sex;
int age;
int type;
int school;
int wage;
char address[20];
long tele;
};
int service()
{
int a;
cout<<"\t\t\t欢迎使用职工管理系统:"< cout<<"请选择您所要的服务:\n 1 录入职工信息\n 2 浏览职工信息\n 3 查询和排序功能\n 4 职工信息删除、修改功能 \n 5 退出系统"< cin>>a;
system("cls");
return a;
}
void print()//输入职工信息
{
FILE *p=fopen("stuff.bin","ab+");
Staff staff;
cout<<"工号\t姓名\t性别\t年龄\t类型\t学历\t工资\t住址\t电话"< rewind(p);
fread(&staff,sizeof(staff),1,p);
for(;!feof(p);)
{
cout< if(staff.sex==0)
cout<<"女"<<'\t';
else
cout<<"男"<<'\t';
cout< if(staff.type==1)
cout<<"教师"<<'\t';
else if(staff.type==2)
cout<<"实验员"<<'\t';
else if(staff.type==3)
cout<<"行政人员"<<'\t';
else if(staff.type==4)
cout<<"教师兼职实验员"<<'\t';
else
cout<<"行政人员兼职教师"<<'\t';
if(staff.school==1)
cout<<"小学"<<'\t';
else if(staff.school==2)
cout<<"中学"<<'\t';
else if(staff.school==3)
cout<<"中专"<<'\t';
else if(staff.school==4)
cout<<"高州"<<'\t';
else if(staff.school==5)
cout<<"大专"<<'\t';
else
cout<<"大学"<<'\t';
cout< fread(&staff,sizeof(staff),1,p);
}
fclose(p);

}
void alter()
{
int a;
cout<<"1 修改数据\n2 删除数据"< cin>>a;
if(a==1)
{
FILE *p=fopen("stuff.bin","rb+");
if(p==NULL)
{
cout<<"文件没有建立"< exit(1);
}
cout<<"输入要修改的工号"< int b;
cin>>b;
Staff staff;
fread(&staff,sizeof(staff),1,p);
for(;!feof(p);)
{
if(staff.number==b)
{
break;
}
fread(&staff,sizeof(staff),1,p);
}
int f=sizeof(staff);
fseek(p,-f,1);
if(staff.number!=b)
{
cout<<"此成员不存在"< return;
}
cout<<"你所要修改的选项:"< cout<<"1工号\t2姓名\t3性别\t4年龄\t5类型\t6学历\t7工资\t8住址\t9电话"< int c;
cin>>c;
for(;;)
{
if(c==1)
{
cout<<"请输入学号"< cin>>staff.number;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else if(c==2)
{
cout<<"请输入姓名"< cin>>staff.name;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< }
else if(c==3)
{
cout<<"请输入性别"< cin>>staff.sex;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else if(c==4)
{
cout<<"请输入年龄"< cin>>staff.age;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else if(c==5)
{
cout<<"请输入类型"< cin>>staff.type;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else if(c==6)
{
cout<<"请输入学历"< cin>>staff.school;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else if(c==7)
{
cout<<"请输入工资"< cin>>staff.wage;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else if(c==8)
{
cout<<"请输入地址"< cin>>staff.address;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else if(c==9)
{
cout<<"请输入电话"< cin>>staff.tele;
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"< break;
}
else
{
cout<<"请重新输入"< }
}
fclose(p);
}
else
{
FILE *p=fopen("stuff.bin","rb+");
Staff staff[500];
fread(staff,sizeof(Staff),1,p);
for(int i=1;!feof(p);i++)
{
fread(&staff[i],sizeof(Staff),1,p);
}
i--;
cout<<"输入要删除的工号"< int b;
cin>>b;
for(int j=0;j {
if(staff[j].number==b)
{
break;
}
}
if(staff[j].number!=b)
{
cout<<"没有这个人员"< return;
}
fclose(p);
p=fopen("stuff.bin","wb+");
for(int k=0;k {
if(staff[k].number!=staff[j].number)
{
fwrite(&staff[k],sizeof(Staff),1,p);
}

}
cout<<"成功删除"< fclose(p);
}

}
void find()
{
FILE *p=fopen("stuff.bin","rb+");
Staff staff[1000];
fread(staff,sizeof(Staff),1,p);
for(int i=1;!feof(p);i++)
{
fread(&staff[i],sizeof(Staff),1,p);
}
//查询和排序功能:按工资查询和按学历查询或按年龄等查询
cout<<"请选择你需要的服务\n1 工资查询\n2 年龄查询"< int a;
cin>>a;
for(;;)
{
if(a==1)
{
cout<<"请输入你要查询的工资范围(从小到大)"< int begin,end;
cin>>begin>>end;
for(int j=0;j {
if(staff[j].wage>=begin&&staff[j].wage<=end)
{
cout< if(staff[j].sex==0)
cout<<"女"<<'\t';
else
cout<<"男"<<'\t';
cout< if(staff[j].type==1)
cout<<"教师"<<'\t';
else if(staff[j].type==2)
cout<<"实验员"<<'\t';
else if(staff[j].type==3)
cout<<"行政人员"<<'\t';
else if(staff[j].type==4)
cout<<"教师兼职实验员"<<'\t';
else
cout<<"行政人员兼职教师"<<'\t';
if(staff[j].school==1)
cout<<"小学"<<'\t';
else if(staff[j].school==2)
cout<<"中学"<<'\t';
else if(staff[j].school==3)
cout<<"中专"<<'\t';
else if(staff[j].school==4)
cout<<"高州"<<'\t';
else if(staff[j].school==5)
cout<<"大专"<<'\t';
else
cout<<"大学"<<'\t';
cout< }
}
}
else if(a==2)
{
cout<<"请输入要查询的年龄范围"< int begin,end;
cin>>begin>>end;
for(int j=0;j {
if(staff[j].age>=begin&&staff[j].age<=end)
{
cout< if(staff[j].sex==0)
cout<<"女"<<'\t';
else
cout<<"男"<<'\t';
cout< if(staff[j].type==1)
cout<<"教师"<<'\t';
else if(staff[j].type==2)
cout<<"实验员"<<'\t';
else if(staff[j].type==3)
cout<<"行政人员"<<'\t';
else if(staff[j].type==4)
cout<<"教师兼职实验员"<<'\t';
else
cout<<"行政人员兼职教师"<<'\t';
if(staff[j].school==1)
cout<<"小学"<<'\t';
else if(staff[j].school==2)
cout<<"中学"<<'\t';
else if(staff[j].school==3)
cout<<"中专"<<'\t';
else if(staff[j].school==4)
cout<<"高州"<<'\t';
else if(staff[j].school==5)
cout<<"大专"<<'\t';
else
cout<<"大学"<<'\t';
cout< }
}
}
else
cout<<"输入有误,请重新输入"< }

}
void rank()
{
FILE *p=fopen("stuff.bin","rb+");
Staff staff[1000];
fread(staff,sizeof(Staff),1,p);
for(int i=1;!feof(p);i++)
{
fread(&staff[i],sizeof(Staff),1,p);
}
i--;
fclose(p);
cout<<"请选择你需要的服务\n1 工资排序\n2 年龄排序"< int a;
p=fopen("stuff.bin","wb+");
for(;;)
{
cin>>a;
if(a==1)
{
for(int j=0;j {
for(int k=0;k {
if(staff[k].wage {
Staff con;
con=staff[k+1];
staff[k+1]=staff[k];
staff[k]=con;
}
}
}
fwrite(staff,sizeof(Staff),i,p);
cout<<"排序已经完成"< fclose(p);
break;
}
else if(a==2)
{
for(int j=0;j {
for(int k=0;k {
if(staff[k].age {
Staff con;
con=staff[k+1];
staff[k+1]=staff[k];
staff[k]=con;
}
}
}
fwrite(staff,sizeof(Staff),i,p);
cout<<"排序已经完成"< fclose(p);
break;
}
else
cout<<"请重新输入"< }
}
void input(int b)
{
FILE *p=fopen("stuff.bin","ab+");
Staff staff;
int i;
cout<<"请输入依次员工的工号 "< cin>>staff.number;
cout<<"请输入依次员工的姓名"< cin>>staff.name;
cout<<"请输入依次员工的性别(男1,女0)"< for(;;)
{
cin>>staff.sex;
if(staff.sex==0||staff.sex==1)
break;
else
cout<<"输入有误,请重新输入"< }
cout<<"请输入依次员工的年龄"< cin>>staff.age;
staff.type=b;
cout<<"请选择依次员工的学历\n1 小学\n2 中学\n3中专 \n4 高中\n5 大专\n6 大学"< for(;;)
{
cin>>staff.school;
if(staff.school==1||staff.school==2||staff.school==3||staff.school==4||staff.school==5||staff.school==6)
break;
else
cout<<"你输入有误,数字范围为1-6,请重新输入"< }
switch(b)
{
fseek(p,0L,2);
case 1:
cout<<"请输入教师的月工作量"< cin>>i;
staff.wage=1000+(i-24)*30;
break;
case 2:
staff.wage=800+150; break;
case 3:
staff.wage=900+250;
break;
case 4:
cout<<"请输入教师兼职实验员的月工作量"< cin>>i;
staff.wage=1000+(i-12)*30+150;//基本工资(1000)+课时费[(月工作量-12)X30]+实验室补助(150);
break;
case 5:
cout<<"请输入行政人员兼职教师的月工作量"< cin>>i;
staff.wage=900+210+i*30;//行政人员兼职教师:基本工资(900)+行政补贴(210)+课时费(月工作量X30);
break;
default://不会出现;
cout<<"您输入有误";
}
cout<<"请输入依次员工的住址"< cin>>staff.address;
cout<<"请输入依次员工的电话"< cin>>staff.tele;
fwrite(&staff,sizeof(staff),1,p);
fclose(p);

}
void False()
{
cout<<"你输入有误,数字范围为1-5,请重新输入"<}
int choice()
{
int i;
cout<<"\t\t\t\t\t请选择您输入的职工类型:\n 1 教师\n 2 实验员 \n 3 行政人员 \n 4 教师兼职实验员 \n 5 行政人员兼职教师"< for(;;)
{
cin>>i;
if(i==1||i==2||i==3||i==4||i==5)
{
break;

}
else
{
cout<<"输入有误,请重新输入"< continue;
}
}
return i;
}
void main()
{

for(int i=0;;i++)
{
int a;
a=service();
if(a==1)
{
int b;
b=choice();
input(b);
}
else if(a==2)
{
print();
}
else if(a==3)
{
cout<<"请输入你所需要的服务\n1 查询\n2 排序"< for(;;)
{
int b;
cin>>b;
if(b==1)
{
find();
break;
}
else if(b==2)
{
rank();
break;
}
else
cout<<"请重新输入"< }

}
else if(a==4)
{
alter();
}
else if(a==5)
{
exit(1);
}
else
{
False();
continue;
}
}
}

代码先送到,能用再附报告。