#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欢迎使用职工管理系统:"<
system("cls");
return a;
}
void print()//输入职工信息
{
FILE *p=fopen("stuff.bin","ab+");
Staff staff;
cout<<"工号\t姓名\t性别\t年龄\t类型\t学历\t工资\t住址\t电话"<
fread(&staff,sizeof(staff),1,p);
for(;!feof(p);)
{
cout<
cout<<"女"<<'\t';
else
cout<<"男"<<'\t';
cout<
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<
}
fclose(p);
}
void alter()
{
int a;
cout<<"1 修改数据\n2 删除数据"<
if(a==1)
{
FILE *p=fopen("stuff.bin","rb+");
if(p==NULL)
{
cout<<"文件没有建立"<
}
cout<<"输入要修改的工号"<
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<<"此成员不存在"<
}
cout<<"你所要修改的选项:"<
cin>>c;
for(;;)
{
if(c==1)
{
cout<<"请输入学号"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
else if(c==2)
{
cout<<"请输入姓名"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
else if(c==3)
{
cout<<"请输入性别"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
else if(c==4)
{
cout<<"请输入年龄"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
else if(c==5)
{
cout<<"请输入类型"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
else if(c==6)
{
cout<<"请输入学历"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
else if(c==7)
{
cout<<"请输入工资"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
else if(c==8)
{
cout<<"请输入地址"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
else if(c==9)
{
cout<<"请输入电话"<
fwrite(&staff,sizeof(staff),1,p);
cout<<"操作成功"<
}
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<<"输入要删除的工号"<
cin>>b;
for(int j=0;j {
if(staff[j].number==b)
{
break;
}
}
if(staff[j].number!=b)
{
cout<<"没有这个人员"<
}
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<<"成功删除"<
}
}
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 年龄查询"<
cin>>a;
for(;;)
{
if(a==1)
{
cout<<"请输入你要查询的工资范围(从小到大)"<
cin>>begin>>end;
for(int j=0;j {
if(staff[j].wage>=begin&&staff[j].wage<=end)
{
cout<
cout<<"女"<<'\t';
else
cout<<"男"<<'\t';
cout<
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<<"请输入要查询的年龄范围"<
cin>>begin>>end;
for(int j=0;j {
if(staff[j].age>=begin&&staff[j].age<=end)
{
cout<
cout<<"女"<<'\t';
else
cout<<"男"<<'\t';
cout<
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 年龄排序"<
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<<"排序已经完成"<
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<<"排序已经完成"<
break;
}
else
cout<<"请重新输入"<
}
void input(int b)
{
FILE *p=fopen("stuff.bin","ab+");
Staff staff;
int i;
cout<<"请输入依次员工的工号 "<
cout<<"请输入依次员工的姓名"<
cout<<"请输入依次员工的性别(男1,女0)"<
{
cin>>staff.sex;
if(staff.sex==0||staff.sex==1)
break;
else
cout<<"输入有误,请重新输入"<
cout<<"请输入依次员工的年龄"<
staff.type=b;
cout<<"请选择依次员工的学历\n1 小学\n2 中学\n3中专 \n4 高中\n5 大专\n6 大学"<
{
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<<"请输入教师的月工作量"<
staff.wage=1000+(i-24)*30;
break;
case 2:
staff.wage=800+150; break;
case 3:
staff.wage=900+250;
break;
case 4:
cout<<"请输入教师兼职实验员的月工作量"<
staff.wage=1000+(i-12)*30+150;//基本工资(1000)+课时费[(月工作量-12)X30]+实验室补助(150);
break;
case 5:
cout<<"请输入行政人员兼职教师的月工作量"<
staff.wage=900+210+i*30;//行政人员兼职教师:基本工资(900)+行政补贴(210)+课时费(月工作量X30);
break;
default://不会出现;
cout<<"您输入有误";
}
cout<<"请输入依次员工的住址"<
cout<<"请输入依次员工的电话"<
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 行政人员兼职教师"<
{
cin>>i;
if(i==1||i==2||i==3||i==4||i==5)
{
break;
}
else
{
cout<<"输入有误,请重新输入"<
}
}
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 排序"<
{
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;
}
}
}
代码先送到,能用再附报告。