职工档案管理系统C语言

#include

#include

#include

/*********************定义结构体**************************/

struct RuC_data

{

int nian,yue,ri;//生产日期:年,月,日

};

struct ZhiG_inf//定义一个类型名为SHANGP 的结构体类型

{

int member;//工号

char name[20];//名字

char xingb[20];//性别

double gongz;//工资

struct RuC_data data;//生产日期

}PRESON[1000];

/*********************使用函数的定义**************************/

int num=0;

void TianG();

void ZhanX();

void Display();

void Read_file();

void Write_file();

void XiuG();

void ShanC();

void ZhuiG();

void PaiX();

/**********************主菜单******************************/

void main()

{

while(1)

{

int option;

system("cls"); /****清除屏幕****/

printf("\t\t----------------------主菜单-----------------------\n");

printf("\t\t------------------职工信息加载------------------\n");

printf("\t\t------------------职工信息添加------------------\n");

printf("\t\t------------------职工信息查看------------------\n");

printf("\t\t------------------职工信息修改------------------\n");

printf("\t\t------------------职工信息查找删除------------------\n");

printf("\t\t------------------职工信息排序------------------\n");

printf("\t\t------------------职工信息追加------------------\n");

printf("\t\t------------------职工信息保存------------------\n");

printf("\t\t------------------退出程序----------------------\n");

printf("\t\t请选择: ");

scanf("%d",&option);

switch (option) //选择

{

case 1: Read_file();//读入文件

break;

case 2: TianG();//初始添加

break;

case 3: ZhanX();//查看职工信息

break;

case 4: XiuG();//修改职工信息

break;

case 5: ShanC();//查看和删除记录

break;

case 6: PaiX();//进行排序

break;

case 7: ZhuiG();//追加职工信息

break;

case 8: Write_file();//保存文件

break;

case 0: exit(0);

}

}

}

/*****************************添加记录**********************************/ void TianG()

{

int number,i,flag=0;

system("cls");

printf("\t\t--------------------职工信息添加-----------------------\n");

printf("\t\t请输本次录入记录个数:");

scanf("%d",&number);

for(i=0;i

{

printf("\t\t请输第%d职工的序号:",i+1);

scanf("%d",&PRESON[i].member);

getchar();

printf("\t\t职工姓名:\t");

scanf("%s",&PRESON[i].name);

getchar();

printf("\t\t职工性别:\t");

scanf("%s",&PRESON[i].xingb);

getchar();

printf("\t\t职工工资:\t");

scanf("%lf",&PRESON[i].gongz);

getchar();

printf("\t\t入厂日期:\t");

scanf("%d%d%d",&PRESON[i].data.nian,&PRESON[i].data.yue,&PRESON[i].data.ri); getchar();

if(PRESON[i].data.yue12) /***判断数据是否正确***/ {

printf("\t\t很抱歉! 你输入的职工信息错误!(0

i--;//如果输入错误重新输入

}

if(PRESON[i].data.yue==4||PRESON[i].data.yue==6||PRESON[i].data.yue==9||PRESON[i].data.yue==11)

{

if(PRESON[i].data.ri30)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

i--;//如果输入错误重新输入

}

}

if(PRESON[i].data.yue==1||PRESON[i].data.yue==3||PRESON[i].data.yue==5||PRESON[i].data.yue==7||PRESON[i].data.yue==8||PRESON[i].data.yue==10||PRESON[i].data.yue==12) {

if(PRESON[i].data.ri31)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

i--;//如果输入错误重新输入

}

}

if(PRESON[i].data.yue==2)//判断2 月的天数

{

if((PRESON[i].data.nian%4==0)&&(PRESON[i].data.nian%100!=0)||(PRESON[i].data.nian%400==0))//判断是否是闰年

{

flag=1;

}

else flag=0;

if(flag==1)//闰年2月超过29天报错

{

if(PRESON[i].data.ri29)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

i--;//如果输入错误重新输入

}

}

if(flag==0)//平年2 月超过28天报错

{

if(PRESON[i].data.ri28)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

i--;//如果输入错误重新输入

}

}

}

}

printf("\t\t是否存储?(Y/N):");

if (getchar()=='y' || getchar()=='Y')

{

for(i=0;i

{

num++; /*增加一组数据***/

getchar();

}

}

}

/******************************查询菜单********************************/ void ZhanX()

{

int option;

printf("\t\t----------------------查询菜单---------------------\n");

printf("\t\t-查看所有记录:\n\t\t返回主菜单\n\t\t请选择: ");

scanf("%d",&option);

getchar();

switch (option)

{

case 1:

system("cls");

Display();ZhanX();

case 2:

main();

default:

ZhanX();

}

}

/******************************显示所有信息****************************/ void Display()

{

int i;

system("cls");

printf("\t\t职工序号 职工姓名 职工性别 职工工资 入厂日期\n\t\t---------------------------------------------------\n");

for (i=0;i

{

printf("\t\t%-11d %-11s %-11s %-11lf %d-%d-%d\n",PRESON[i].member,PRESON[i].name,PRESON[i].xingb,PRESON[i].gongz,PRESON[i].data.nian,PRESON[i].data.yue,PRESON[i].data.ri);

}

}

/*********************按照职工名称是否相同返回下标*************************/ int back_i(char name[])

{

int i;

for (i=0;i

if( strcmp(PRESON[i].name,name)==0) /***判断字符是否相同*****/ {

return i;

}

return -1;

}

/*****************************修改记录*****************************/

void XiuG()

{

char name[20];

int index,flag;

char x;

Display();

printf("\t\t---------------------修改职工信息------------------\n");

printf("\n\t\t请输入要修改的职工姓名:");

scanf("\t\t%s",name);

index=back_i(name); /*****调用(按照职工名称是否相同返回下标)函数*****/ if (index==-1)

printf("\n该职工不存在!\n");

else

{

printf("\t\t你要修改的信息为:\n");

printf("\n\t\t职工序号 职工姓名 职工性别 职工工资 入厂日期\n");

printf("\t\t%-11d %-11s %-11s %-11lf %d-%d-%d\n",PRESON[index].member,PRESON[index].name,PRESON[index].xingb,PRESON[index].gongz,PRESON[index].data.nian,PRESON[index].data.yue,PRESON[index].data.ri);

printf("\t\t---------------------请输入新值--------------------\n");

printf("\n\t\t请输入职工序号:");

scanf("%d",&PRESON[index].member);

printf("\n\t\t请输入职工性别:");

scanf("%s",&PRESON[index].xingb);

printf("\n\t\t请输入职工工资:");

scanf("%lf",&PRESON[index].gongz);

printf("\n\t\t请输入职工入厂期:");

scanf("%d%d%d",&PRESON[index].data.nian,&PRESON[index].data.yue,&PRESON[index].data.ri);

if(PRESON[index].data.yue12) /***判断数据是否正确***/

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

XiuG();//如果输入错误重新输入

}

if(PRESON[index].data.yue==4||PRESON[index].data.yue==6||PRESON[index].data.yue==9||PRESON[index].data.yue==11)

{

if(PRESON[index].data.ri30)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

XiuG();//如果输入错误重新输入

}

}

if(PRESON[index].data.yue==1||PRESON[index].data.yue==3||PRESON[index].data.yue==5||PRESON[index].data.yue==7||PRESON[index].data.yue==8||PRESON[index].data.yue==10||PRESON[index].data.yue==12)

{

if(PRESON[index].data.ri31)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

XiuG();//如果输入错误重新输入

}

}

if(PRESON[index].data.yue==2)//判断2 月的天数

{

if((PRESON[index].data.nian%4==0)&&(PRESON[index].data.nian%100!=0)||(PRESON[index].data.nian%400==0))//判断是否是闰年

{

flag=1;

}

else flag=0;

if(flag==1)//闰年2月超过29天报错

{

if(PRESON[index].data.ri29)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

XiuG();//如果输入错误重新输入

}

}

if(flag==0)//平年2 月超过28天报错

{

if(PRESON[index].data.ri28)

{

printf("\t\t很抱歉! 你输入的职工信息错误!(0

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

XiuG();//如果输入错误重新输入

}

}

}

getchar();

}

}

/****************************查找删除相关信息*****************************/ void ShanC()

{

int i;

char name[20];

int index;

Display();

printf("\n\t\t请输入要查找的职工姓名:");

scanf("\t\t%s",name);

index=back_i(name);

if (index==-1)

printf("\n该职工不存在!\n");

else

{

char p;

printf("\n\t\t你要查找的记录为:\n");

printf("\t\t---------------------------------------------");

printf("\n\t\t职工序号 职工姓名 职工性别 职工工资 入厂日期\n" );

printf("\t\t%-11d %-11s %-11s %-11lf %d-%d-%d\n",PRESON[index].member,PRESON[index].name,PRESON[index].xingb,PRESON[index].gongz,PRESON[index].data.nian,PRESON[index].data.yue,PRESON[index].data.ri);

printf("\n\t\t是否要删除? (y/n)");

scanf("\n%c",&p);

if (p=='Y'||p=='y')

{

for (i=index;i

{

PRESON[i]=PRESON[i+1]; /****将该条记录后面的数据前移***/ }

num--;

}

getchar();

}

}

/*******************************从文件读取记录*****************************/ void Read_file()

{

FILE *fp;

int i=0;

int flag=0;

char x;

if ((fp=fopen("c:\\zhigong.txt","rb"))==NULL)

{

printf("职工信息不存在,请按回车重新建立!\n");

return;

}

else

printf("\t\t\t\t职工信息已加载!\n");

while(fread(&PRESON[i],sizeof(struct ZhiG_inf),1,fp)!=NULL)

{

num++;

i++;

}

fclose(fp);

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

scanf("%c",&x);

}

/***************************保存文件******************************/ void Write_file()

{

FILE *fp;

int i;

char x;

if ((fp=fopen("c:\\zhigong.txt","wb"))==NULL)

{

printf("不能打开文件!\n");

return;

}

for (i=0;i

if (fwrite(&PRESON[i],sizeof(struct ZhiG_inf),1,fp)!=1)

printf("写入文件错误!\n");

fclose(fp);

printf("\t\t\t\t职工信息保存成功!\n");

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

}

/**********************************排序*********************************/ void PaiX()

{

char x;

struct ZhiG_inf temp;

int i,j;

for(i=0;i

{

for(j=i+1;j

{

if(PRESON[i].gongz>PRESON[j].gongz) /*******按照工资进行排序******/

{

temp=PRESON[i];

PRESON[i]=PRESON[j];

PRESON[j]=temp;

}

}

}

printf("\t\t职工序号 职工姓名 职工性别 职工工资 入厂日期\n\t\t---------------------------------------------------\n");

for (i=0;i

{

printf("\t\t%-11d %-11s %-11s %-11lf %d-%d-%d\n",PRESON[i].member,PRESON[i].name,PRESON[i].xingb,PRESON[i].gongz,PRESON[i].data.nian,PRESON[i].data.yue,PRESON[i].data.ri);

}

printf("\t\t输入任意字符继续:");

scanf("%c",&x);

scanf("%c",&x);

}

/********************************信息追加*****************************/ void ZhuiG()

{

int site,i;

Display();

printf("\t\t您想插入的位置:");

scanf("%d",&site);

for(i=num-1;i>=site-1;i--)

PRESON[i+1]=PRESON[i]; /*********先空出一个位置***********/ num++;

printf("\t\t请输追加职工的序号:");

scanf("%d",&PRESON[site-1].member);

getchar();

printf("\t\t职工姓名:\t");

scanf("%s",&PRESON[site-1].name);

getchar();

printf("\t\t职工性别:\t");

scanf("%s",&PRESON[site-1].xingb);

getchar();

printf("\t\t职工工资:\t");

scanf("%lf",&PRESON[site-1].gongz);

getchar();

printf("\t\t入厂日期:\t");

scanf("%d%d%d",&PRESON[site-1].data.nian,&PRESON[site-1].data.yue,&PRESON[site-1].data.ri);

getchar();

}


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn