You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
4.3 KiB
170 lines
4.3 KiB
#include<stdio.h>
|
|
#include<string.h>
|
|
#include<stdlib.h>
|
|
#define max 30 //定义
|
|
void menu();//菜单
|
|
void import();
|
|
void browse();//显示所有
|
|
void search_num();//查询信息
|
|
void revise();//修改信息
|
|
struct people { //定义个人信息结构体
|
|
char no[5]; //编号
|
|
char name[max]; //名字
|
|
int basepay;//基本工资
|
|
int wage; //职务工资
|
|
int subsidy;//津贴
|
|
int surance;//医疗保险
|
|
int fund; //公积金
|
|
int total; //z总和
|
|
};
|
|
struct people num[max]; //定义人员信息数组
|
|
void main(){//主函数
|
|
menu();
|
|
}
|
|
void menu() //菜单
|
|
{
|
|
int a;
|
|
int i=0;
|
|
while(1) {
|
|
printf(" 职工工资管理系统 ");
|
|
printf("\n**********************\n") ;
|
|
printf("1.录入信息\n") ;
|
|
printf("2.修改信息\n") ;
|
|
printf("3.显示所有\n") ;
|
|
printf("4.查询信息\n") ;
|
|
printf("5.退出\n") ;
|
|
printf("\n**********************\n") ;
|
|
printf ("请输入数字编码");
|
|
scanf("%d",&a);
|
|
switch (a) {
|
|
case 1:{ //录入数据
|
|
import();
|
|
break;
|
|
}
|
|
case 2:{ //修改信息
|
|
revise();
|
|
break;
|
|
}
|
|
case 3:{ //显示信息
|
|
browse();
|
|
break;
|
|
}
|
|
case 4:{ //查询信息
|
|
search_num();
|
|
break;
|
|
}
|
|
case 5:{ //退出
|
|
printf("退出成功 请关闭") ;
|
|
exit(0); }
|
|
defaul:{ //输入错误
|
|
printf("请重新输入");
|
|
break;
|
|
}
|
|
}
|
|
} }
|
|
void import(){ //录入信息
|
|
FILE *fp;
|
|
int n,i; //n用来存储职工数 i用来存储第几个员工
|
|
if ((fp=fopen("word","wb"))==NULL) //
|
|
{ //
|
|
printf("不能建立word文件\n"); // 这四行用来判断是否可以正确打开
|
|
exit(1); //
|
|
}
|
|
printf("输入职工人数:");
|
|
scanf ("%d",&n);
|
|
for(i=0;i<n;i++){
|
|
printf("请输入第%d个职工的编号",i+1);
|
|
scanf("%s",&num[i].no); //职工号
|
|
printf("请输入第%d姓名信息",i+1);
|
|
scanf("%s",&num[i].name); //姓名
|
|
printf("请输入第%d基本工资",i+1) ;
|
|
scanf("%d",&num[i].basepay) ; //基本工资
|
|
printf("请输入职务工资") ;
|
|
scanf("%d",&num[i].wage) ; //职务工资
|
|
printf("请输入津贴") ;
|
|
scanf("%d",&num[i].subsidy) ; //津贴
|
|
printf("请输入医疗保险") ;
|
|
scanf("%d",&num[i].surance) ; //保险
|
|
printf("请输入公积金") ;
|
|
scanf("%d",&num[i].fund) ; //公积金
|
|
num[i].total= num[i].basepay+num[i].wage+num[i].subsidy+num[i].surance+num[i].fund; //计算总和
|
|
fwrite(&num[i],sizeof(struct people),1,fp); //写入到文件中
|
|
}
|
|
fclose(fp); //关闭文件
|
|
}
|
|
void revise(){ //修改信息
|
|
FILE *fp;
|
|
int i;
|
|
char number[5];
|
|
if((fp=fopen("word","rb+"))==NULL) //二进制读的方式打开
|
|
{
|
|
printf("不能打开word文件\n");
|
|
exit(1);
|
|
}
|
|
printf("输入要修改的的职工号:");
|
|
scanf("%s",number);
|
|
for(i=0;fread(&num[i],sizeof(struct people),1,fp);i++)
|
|
if(!strcmp(num[i].no,number)) break; //对比职工号 如果没有这个职工号 就退出
|
|
if(feof(fp)) //如果fp文件指针到达文件尾
|
|
{
|
|
printf("\t查无此人\n");
|
|
exit(2);
|
|
}
|
|
//fseek(fp,i*sizeof(struct people),SEEK_SET);
|
|
printf("请输入职工新的编号");
|
|
scanf("%s",&num[i].no);
|
|
printf("请输入姓名信息");
|
|
scanf("%s",&num[i].name);
|
|
printf("请输入基本工资") ;
|
|
scanf("%d",&num[i].basepay) ;
|
|
printf("请输入职务工资") ;
|
|
scanf("%d",&num[i].wage) ;
|
|
printf("请输入津贴") ;
|
|
scanf("%d",&num[i].subsidy) ;
|
|
printf("请输入医疗保险") ;
|
|
scanf("%d",&num[i].surance) ;
|
|
printf("请输入公积金") ;
|
|
scanf("%d",&num[i].fund) ;
|
|
num[i].total= num[i].basepay+num[i].wage+num[i].subsidy+num[i].surance+num[i].fund;
|
|
fseek(fp,-(long)sizeof(struct people),SEEK_CUR); //移动指针到所在数组的第一个地址上
|
|
fwrite(&num[i],sizeof(struct people),1,fp); //写入数据
|
|
fclose(fp);
|
|
}
|
|
void browse(){ //显示信息
|
|
int i;
|
|
FILE *fp;
|
|
if((fp=fopen("word","r"))==NULL)
|
|
{
|
|
printf("不能打开word文件\n");
|
|
exit(0);
|
|
}
|
|
printf("职工号\t 姓名\t 基本工资\t 职务工资\t 津贴\t 医疗保险\t 公积金\t \t总工资 \n");
|
|
for(i=0;fread(&num[i],sizeof(struct people),1,fp)!=0;i++)
|
|
{
|
|
printf("%s\t %s\t %d\t\t %d\t\t %d\t %d\t\t %d\t\t %d\t\n",num[i].no,num[i].name,num[i].basepay,num[i].wage,num[i].subsidy,num[i].surance,num[i].fund,num[i].total);
|
|
}
|
|
fclose(fp);
|
|
}
|
|
void search_num(){//查询信息
|
|
FILE *fp;
|
|
int i;
|
|
char number[5];
|
|
if((fp=fopen("word","rb"))==NULL)
|
|
{
|
|
printf("不能打开word文件\n");
|
|
exit(1);
|
|
}
|
|
printf("要查询的职工号:");
|
|
scanf("%s",number);
|
|
for(i=0;fread(&num[i],sizeof(struct people),1,fp);i++)
|
|
if(!strcmp(num[i].no,number)) break;
|
|
if(feof(fp))
|
|
{
|
|
printf("\t查无此人\n");
|
|
}
|
|
printf("职工号\t 姓名\t 基本工资\t 职务工资\t 津贴\t 医疗保险\t 公积金\t 总工资 \n");
|
|
printf("%s\t %s\t %d\t %d\t %d\t %d\t %d\t %d\t\n",num[i].no,num[i].name,num[i].basepay,num[i].wage,num[i].subsidy,num[i].surance,num[i].fund,num[i].total);
|
|
fclose(fp);
|
|
}
|
|
|