69,369
社区成员
发帖
与我相关
我的任务
分享
#ifndef _EMSTRUCT_H_
#define _EMSTRUCT_H_
struct clerk
{
char num[20]; //工号
char name[20]; //姓名
int iYear; //发放年份
int iMonth; //发放月份
float Post_salary;//岗位工资
float Class_salary; //课时工资
float performance_salary;//绩效工资
double total;//合计
};
#endif
#include "stdio.h"
#include "EMstruct.h"
#include "stdlib.h"
#include "string.h"
#define LEN 1024 //宏定义
/************************************/
void menu() ;
void studychoose();
/***********************************/
//全局声明
/************************************/
int input_n;//需要录入的职工人数
struct clerk stu[LEN];
/************************************/
/*录入数据*/
struct clerk* screate()
{
int cout_cr;//循环计次用
printf("需要录入的职工人数:");
scanf("%d",&input_n);
for(cout_cr=0;cout_cr<input_n;cout_cr++)
{
printf("员工工号:");
scanf("%s",stu[cout_cr].num);
printf("员工姓名:");
scanf("%s",stu[cout_cr].name);
printf("发放年份:");
scanf("%d",&stu[cout_cr].iYear);
printf("发放月份:");
scanf("%d",&stu[cout_cr].iMonth);
printf("岗位工资:");
scanf("%f",&stu[cout_cr].Post_salary);
printf("课时工资:");
scanf("%f",&stu[cout_cr].Class_salary);
printf("绩效工资:");
scanf("%f",&stu[cout_cr].performance_salary);
printf("==========================================\n");
printf("\n");
}
system("pause");
return stu;
}
/*显示信息*/
void stushow()
{
int show_count;
printf("工号\t 姓名\t 发放年份\t 发放月份\t 岗位工资\t 课时工资\t 绩效工资\n");
for(show_count=0;show_count<input_n;show_count++)
{
printf("%s\t %s\t %d\t %d\t %.3f\t %.3f\t %.3f\n",
stu[show_count].num,
stu[show_count].name,
stu[show_count].iYear,
stu[show_count].iMonth,
stu[show_count].Post_salary,
stu[show_count].Class_salary,
stu[show_count].performance_salary
);
}
if(show_count==input_n)
{
printf("没有信息\n");
}
printf("按任意键继续....\n");
system("pause");
system("cls");
menu();
}
/*保存信息*/
void study_save(int ix)
{
int save_count;
FILE* save_FILE;
save_FILE=fopen("save_data.dat","wb");
if(save_FILE==NULL)
{
printf("打开文件失败!\n");
exit(1);
}
for(save_count=0;save_count<ix;save_count++)
if((fwrite(&stu,sizeof(stu),1,save_FILE))!=1)
{
printf("保存失败!\n");
exit(1);
}
fclose(save_FILE);
printf("保存成功!\n");
printf("按任意键继续.....\n");
system("pause");
system("cls");
menu();//这个是界面函数
}
void study_read(int ij)
{
struct clerk read_stu;
int i=0;
//int read_count;
FILE* read_FILE;
read_FILE=fopen("save_data.dat","rb");
if(read_FILE==NULL)
{
printf("打开文件失败!\n");
exit(1);
}
for(i=0;i<ij;i++)
{
if(fread(&stu[i],sizeof(stu),1,read_FILE)!=1)
{
printf("读取失败!\n");
exit(1);
}
}
fclose(read_FILE);
printf("读取到的数据是:\n");
//下面的循环是测试读取出来的数据是否正常打印
for(int k=0;k<i;k++)
{
printf("%s %s %d %d %.3f %.3f %.3f\n",
stu[k].num,
stu[k].name,
stu[k].iYear,
stu[k].iMonth,
stu[k].Post_salary,
stu[k].Class_salary,
stu[k].performance_salary
);
}
printf("读取数据成功!\n");
printf("按任意键继续.....\n");
system("pause");
system("cls");
menu();
}
/*操作*/
void studychoose()
{
struct clerk* choose_create;
int study_num;
printf("输入选项(0-8)进行操作:");
scanf("%d",&study_num);
switch(study_num)
{
case 1:
choose_create=screate();
system("cls");
menu();
break;
case 2:
choose_create=vadd();
system("cls");
menu();
break;
case 3:
delnum();
break;
case 4:
stushow();
break;
case 5:
vfind();
break;
case 6:
statistical();
break;
case 7:
study_save(input_n);//把全局计效变量作实参
break;
case 8:
study_read(input_n);//把全局计效变量作实参
break;
case 0:
exit(0);
break;
default:
printf("error\n");
break;
}
menu();
}
for(i=0;i<ij;i++)
{
if(fread(&stu[i],sizeof(stu),1,read_FILE)!=1)
{
printf("读取失败!\n");
exit(1);
}
}