#include <stdio.h>
#include <malloc.h>
#define NULL 0
#define FILENAME "employee.dat"
typedef struct EmployeeList/*雇员的结构体*/
{
int id;/*雇员卡号ID*/
char name[20];/*雇员姓名*/
int age; /*雇员年龄*/
char sex[2]; /*雇员性别*/
char xueli[30];/*雇员学历*/
char onduty[20];/*雇员职务*/
char bumen[20];/*雇员部门*/
int salary; /*雇员薪水*/
struct EmployeeList *next;
}Employee;
Employee *head=NULL;
void EmployeeInit(Employee *p)
{
p->id = 0; /*雇员卡号ID*/
strcpy(&(p->name),"wumingshi");/*雇员姓名*/
p->age = 0; /*雇员年龄*/
strcpy(&(p->sex),"n"); /*雇员性别*/
strcpy(&(p->xueli),"xiaoxue");/*雇员学历*/
strcpy(&(p->onduty),"zhiyuan");/*雇员职务*/
strcpy(&(p->bumen),"jisuanji");/*雇员职称*/
p->salary = 0; /*雇员薪水*/
p->next = NULL;
}
void PrintEmp(Employee *p)
{
if(p==NULL) /*打印标头*/
{
printf("%5s%15s%4s%5s%6s%10s%15s%15s","id","name","sex","age","sal","xueli","bumen","onduty");
}
else
{
printf("%5d%15s%4s%5d%6d%10s%15s%15s",p->id,p->name,p->sex,p->age,p->salary,p->xueli,p->bumen,p->onduty);
}
}
int Add()
{
FILE *fp;
Employee *p,*q;
char id[20];
clrscr();
p=q=head;
while(p!=NULL)
{
q=p;
p=p->next;
}
if(head==NULL)
{ /*链表为空的时候的处理*/
head =(Employee*)malloc(sizeof(Employee));
EmployeeInit(head);
head->next = NULL;
p=head;
}
else
{
p=(Employee*)malloc(sizeof(Employee));
EmployeeInit(p);
p->next = NULL;
q->next = p;
}
gotoxy(2,3);
printf(" Intput new Employee ID:");/*逐个输入雇员的资料*/
scanf("%d",&(p->id));
gets(id);
gotoxy(2,4);
printf("Intput new Employee name: ");/*逐个输入雇员的资料*/
gets(p->name);
gotoxy(2,5);
printf(" Input Employee sex: ");
gets(p->sex);
p->sex[1]='\0'; /*只截取一个字符*/
gotoxy(2,6);
printf(" Input Employee age: ");
scanf("%d",&(p->age));
gets(id);
gotoxy(2,7);
printf(" Input Employee salary: ");
scanf("%d",&(p->salary));
gets(id);
gotoxy(2,8);
printf(" Input Employee bumen: ");
gets(p->bumen);
gotoxy(2,9);
printf(" Input Employee zhiwu: ");
gets(p->onduty);
gotoxy(2,10);
printf(" input Employee xueli: ");
gets(p->xueli);
clrscr();
gotoxy(2,3);
PrintEmp(NULL);
gotoxy(2,4);
PrintEmp(p);
Save();
getch();
clrscr();
}
int Delete()
{
Employee *p,*q;
char Employeename[20];
clrscr();
printf("Input the Employee name: ");/*输入雇员名*/
gets(Employeename);
p=head;
while(p!=NULL)/*按名字查找要删除的雇员*/
{
if(strcmp(p->name,Employeename)==0)/*查找雇员*/
{
gotoxy(2,4);
printf("%s record is deleted!!!");
if(p==head)
head=head->next;/*如果是第一条记录*/
else
q->next=p->next;/*不是第一条记录*/
break;
}
q=p; /*没找到,则指针后移继续找*/
p=p->next;
}
Save();
clrscr();
}
int Modify()
{
int flag;
int i=4;
int id=0;
Employee *p,*q;
char temp[20];
clrscr();
flag=0;
gotoxy(2,3);
printf(" Intput Employee ID:");/*逐个输入雇员的资料*/
scanf("%d",&id);
gets(temp);
p=head;
clrscr();
PrintEmp(NULL);
while(p!=NULL)/*按ID查找雇员*/
{
if(p->id == id)/*查找雇员*/
{
gotoxy(2,3);
PrintEmp(p);
flag = 1;
gotoxy(2,4);
printf(" Intput new Employee ID:");/*逐个输入雇员的修改资料*/
scanf("%d",&(p->id));
gets(temp);
gotoxy(2,5);
printf("Intput new Employee name: ");
gets(p->name);
gotoxy(2,6);
printf(" Input Employee sex: ");
gets(p->sex);
p->sex[1]='\0';
gotoxy(2,7);
printf(" Input Employee age: ");
scanf("%d",&(p->age));
gets(temp);
gotoxy(2,8);
printf(" Input Employee salary: ");
scanf("%d",&(p->salary));
gets(temp);
gotoxy(2,9);
printf(" Input Employee bumen: ");
gets(p->bumen);
gotoxy(2,10);
printf(" Input Employee zhiwu: ");
gets(p->onduty);
gotoxy(2,11);
printf(" input Employee xueli: ");
gets(p->xueli);
gotoxy(2,12);
printf("modify succeed!!!");
gotoxy(2,13);
PrintEmp(p);
Save();/*修改后存盘*/
i++;
}
p=p->next;
}
if(flag ==0 )
{
gotoxy(2,4);
printf("Not find this employee! ");
}
getch();
clrscr();
}
int Find()
{
int flag;
int i=4;
Employee *p,*q;
char Employeename[20];
clrscr();
flag=0;
gotoxy(2,3);
printf("Input the Employee name: ");/*输入雇员名*/
gets(Employeename);
p=head;
clrscr();
PrintEmp(NULL);
while(p!=NULL)/*按名字查找雇员*/
{
if(strcmp(p->name,Employeename)==0)/*查找雇员*/
{
gotoxy(2,i);
PrintEmp(p);
/*printf("%d %s %s %d d% %s %s %s",p->id,p->name,p->sex,p->age,p->salary,p->xueli,p->bumen,p->onduty);*/
flag = 1;
i++;
}
p=p->next;
}
if(flag ==0 )
{
gotoxy(2,4);
printf("Not find this employee! ");
}
getch();
clrscr();
}
int Browse()
{
Employee *p;
int i=3;
int count=0;
int salary=0;
clrscr();
gotoxy(2,3);
PrintEmp(NULL);
p=head;
while(p!=NULL)
{
i++;
gotoxy(2,i);
PrintEmp(p);
count++;
salary = salary + p->salary;
p=p->next;
}
i++;
gotoxy(2,i);
printf("total employee :%d \n total salary: %d",count,salary);
getch();
clrscr();
}
int Read()
{
FILE *fp;
Employee *p,*q;
fp=fopen(FILENAME,"rb");
head=NULL;
if(fp==NULL)/*没找到文件*/
{
gotoxy(2,3);
printf("Not find file!!!");
fclose(fp);
return;
}
if(feof(fp))
return;
head=(Employee*)malloc(sizeof(Employee));/*将文件内容放入链表*/
fread(head,sizeof(Employee),1,fp);
p=q=head;
while(!feof(fp))
{
q=p;
p=(Employee*)malloc(sizeof(Employee));
fread(p,sizeof(Employee),1,fp);/*读记录*/
q->next=p;/*链入到链表的尾部*/
}
q->next=NULL;
fclose(fp);
}
int Save()
{
FILE *fp;
Employee *p;
fp=fopen(FILENAME,"wb");/*删除后重新保存*/
p=head;
while(p!=NULL)
{
fwrite(p,sizeof(Employee),1,fp);/*块写*/
p=p->next;
}
fclose(fp);
}
void SaveText()
{
FILE *fp;
Employee *p;
char filename[20];
clrscr();
gotoxy(2,3);
printf("Please input filename:");
gets(filename);
fp=fopen(filename,"wt");/*删除后重新保存*/
if(fp==NULL)
{
gotoxy(2,5);
printf("File Error,Please again.");
return;
}
p=head;
fprintf(fp,"%5s%15s%4s%5s%6s%10s%15s%15s\n","id","name","sex","age","sal","xueli","bumen","onduty");
while(p!=NULL)
{
fprintf(fp,"%5d%15s%4s%5d%6d%10s%15s%15s\n",p->id,p->name,p->sex,p->age,p->salary,p->xueli,p->bumen,p->onduty);
p=p->next;
}
fclose(fp);
gotoxy(2,7);
printf("File save successful!!!");
getch();
clrscr();
}
int menu()
{
printf(" 0--------new YuanGong\n");
printf(" 1--------delete YuanGong\n");
printf(" 2--------modify YuanGong\n");
printf(" 3--------find YuanGong\n");
printf(" 4--------browse YuanGong\n");
printf(" 5--------save\n");
printf(" 6--------exit\n");
printf("please choose:");return(getch());
}
main()
{
char ch;
Read();
while(1)
{ ch=menu();
switch(ch)
{
case '0':Add();break;
case '1':Delete();break;
sre.rar_其他小程序
版权申诉
12 浏览量
2022-09-15
01:17:11
上传
评论
收藏 20KB RAR 举报
JonSco
- 粉丝: 72
- 资源: 1万+
最新资源
- postgresql-42.7.3.jar
- 2024-05-21 20-36-43.mkv
- 基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码(毕业设计&课程设计&项目开发)
- 基于java开发的app接收硬件端传输的心音信号,具有显示心音波形,发出心音的功能+源码(毕业设计&课程设计&项目开发)
- Python 程序语言设计模式思路-行为型模式:职责链模式:将请求从一个处理者传递到下一个处理者
- 9241703124789646.16健身系统2.apk
- postgresql-16.3-1-windows-x64.exe
- Python 程序语言设计模式思路-结构型模式:装饰器讲解及利用Python装饰器模式实现高效日志记录和性能测试
- 基于YOLOv5和DeepSORT的多目标跟踪仿真与记录
- Python 程序语言设计模式思路-创建型模式:原型模式:通过复制现有对象来创建新对象,面向对象编程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈