课程设计==||

#include <windows.h>
#include<stdio.h> 
#include <time.h> 
#include <string.h> 
 
struct employee 
{  
    int num; 
 char name[10]; 
 char sex; 
 int age; 
char xueli[30]; 
    int wage; 
   char addr[30]; 
   long int tel;  
}em[100];          
void menu(); 
void input(); 
void save(int); 
void display(); 
void del(); 
void add(); 
void search(); 
void search_num(); 
void search_xueli(); 
void search_tel();  
void modify();  
  
void menu()   
{  
 printf("                          计算机科学与技术\n"); 
    printf("\n");  
   
   
 printf("        ******************职工信息管理系统****************\n"); 
 printf("           1.录入职工信息"); 
 printf("           2.浏览职工信息\n"); 
 printf("           3.查询职工信息"); 
 printf("           4.删除职工信息\n"); 
    printf("           5.添加职工信息"); 
 printf("           6.修改职工信息\n"); 
printf("             7.退出\n"); 
 printf("        ********************谢谢使用******************\n"); 
    printf("\n"); 
    printf("\n"); 
 
} 
int main() 
{  
 menu();  
int n,flag; 
 char a; 
 do 
 {  
    printf("请选择你需要操作的步骤(1--7):\n");
    scanf("%d",&n); 
    if(n>=1&&n<=7) 
    {  
    flag=1; 
    break; 
    } 
    else 
    {  
   flag=0;  
   printf("您输入有误,请重新选择!"); 
    } 
 }  
    while(flag==0); 
    while(flag==1) 
  {  
  switch(n) 
  {  
          case 1:printf(" ***输入职工信息***\n");
 printf("\n");input();break;  
       case 2:printf(" ***浏览职工信息***\n");
 printf("\n");display();break;  
       case 3:printf(" ***按职工号查询职工信息***\n");
  printf("\n");search();break;  
       case 4:printf(" ***删除职工信息***\n");
  printf("\n");del();break;  
    case 5:printf(" ***添加职工信息***\n");
printf("\n");add();break;  
       case 6:printf(" ***修改职工信息***\n");
  printf("\n");modify();break; 
       case 7:exit(0);break; 
    default :break; 
  }  
  getchar(); 
  printf("\n");  
     printf("是否继续进行(y or n):\n"); 
     scanf("%c",&a); 
  if(a=='y') 
  {  
     flag=1;  
           menu(); 
     printf("请再次选择你需要操作的步骤(1--6):\n"); 
        scanf("%d",&n);  
 printf("\n"); 
  } 
  else 
 exit(0); 
 } 
} 
void input()   
{  
   int i,m;  
      printf("请输入需要创建信息的职工人数(1--100):\n"); 
   scanf("%d",&m); 
   for (i=0;i<m;i++) 
   {  
  printf("职工号:"); 
  em[i].num=i+1;
  printf("%8d ",em[i].num); 
  printf("\n");  
     printf("请输入姓名:  "); 
  scanf("%s",em[i].name); 
  getchar();  
  printf("请输入性别(f--女 m--男):  "); 
  scanf("%c",&em[i].sex); 
  printf("请输入年龄:  "); 
  scanf("%d",&em[i].age); 
  printf("请输入学历:  "); 
  scanf("%s",em[i].xueli); 
  printf("请输入工资:  "); 
  scanf("%d",&em[i].wage); 
  printf("请输入住址:  "); 
  scanf("%s",em[i].addr);  
        printf("请输入电话:  "); 
     scanf("%d",&em[i].tel); 
     printf("\n"); 
 
   }  
   printf("\n创建完毕!\n"); 
      save(m); 
} 
  
void save(int m)  
{  
 int i; 
 FILE*fp;  
 if ((fp=fopen("employee_list","wb"))==NULL)  
{  
  printf ("cannot open file\n"); 
     exit(0); 
 }  
 for (i=0;i<m;i++) 
   if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1) 
   printf("file write error\n"); 
   fclose(fp); 
} 
 
  
int load()  
{  
     FILE*fp; 
 int i=0;  
   if((fp=fopen("employee_list","rb"))==NULL) 
 {  
  printf ("cannot open file\n"); 
     exit(0); 
 } 
 else 
 { 
  do 
  {  
        fread(&em[i],sizeof(struct employee),1,fp); 
     i++; 
  }  
  while(feof(fp)==0); 
 }  
 fclose(fp); 
 return(i-1); 
} 


void display()  
{  
 int i;  
 int m=load();  
 printf("\n  职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n"); 
 for(i=0;i<m;i++) 
      
printf("\n   %d\t\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i
].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); 
} 
void del()  
{ 
int m=load(); 
 int i,j,n,t,flag; 
 char name[20];  
 printf("\n 原来的职工信息:\n"); 
    display();   
    printf("\n");  
 printf("请输入要删除的职工的姓名:\n"); 
 scanf("%s",name);  
 for(flag=1,i=0;flag&&i<m;i++) 
 {  
  if(strcmp(em[i].name,name)==0) 
  {  
printf("\n已找到此人,原始记录为:\n");  
            printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); 
    
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].
age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
            printf("\n确实要删除此人信息请按1,不删除请按0\n"); 
   scanf("%d",&n);  
            if(n==1)   
   {  
     for(j=i;j<m-1;j++) 
     {  
    strcpy(em[j].name,em[j+1].name); 
                em[j].num=em[j+1].num; 
                em[j].sex=em[j+1].sex; 
                em[j].age=em[j+1].age;  
                strcpy(em[j].xueli,em[j+1].xueli); 
                em[j].wage=em[j+1].wage;  
                strcpy(em[j].addr,em[j+1].addr); 
                em[j].tel=em[j+1].tel; 
     }  
    flag=0; 
   } 
  } 
 }  
 if(!flag) 
    m=m-1; 
 else  
    printf("\n对不起,查无此人!\n");  
    printf("\n 浏览删除后的所有职工信息:\n"); 
    save(m);     
    display();  
 printf("\n继续删除请按1,不再删除请按0\n"); 
 scanf("%d",&t); 
 switch(t) 
 {  
    case 1:del();break; 
    case 0:break; 
    default :break; 
 }
  } 
void add()
{  
 FILE*fp; 
 int n;  
    int count=0; 
    int i;  
    int m=load();  
    printf("\n 原来的职工信息:\n"); 
    display();   
    printf("\n");  
    fp=fopen("emploee_list","a");  
    printf("请输入想增加的职工数:\n"); 
 scanf("%d",&n);  
    for (i=m;i<(m+n);i++) 
  {  
  printf("\n 请输入新增加职工的信息:\n"); 
  printf("请输入职工号:  ");
   em[i].num=i+1;
       printf("%8d ",em[i].num); 
  printf("\n");  
        printf("请输入姓名:  "); 
     scanf("%s",em[i].name); 
        getchar();  
        printf("请输入性别(f--女  m--男):  "); 
     scanf("%c",&em[i].sex);  
        printf("请输入年龄:  "); 
     scanf("%d",&em[i].age); 
     printf("请输入学历:  "); 
     scanf("%s",em[i].xueli); 
     printf("请输入工资:  "); 
     scanf("%d",&em[i].wage); 
      printf("请输入住址:  "); 
     scanf("%s",em[i].addr);  
        printf("请输入电话:  "); 
     scanf("%d",&em[i].tel); 
        printf("\n"); 
     count=count+1;  
  printf("已增加的人数:\n"); 
     printf("%d\n",count); 
 }  
    printf("\n添加完毕!\n"); 
    m=m+count;  
 printf("\n浏览增加后的所有职工信息:\n"); 
 printf("\n"); 
 save(m);  
    display(); 
   fclose(fp);  
}
void search()
{  
    int t,flag; 
 do 
 {  
    printf("\n按职工号查询请按1  按学历查询请按2  按电话号码查询请按3,进入主函数按4\n");  
    scanf("%d",&t); 
    if(t>=1&&t<=4) 
    {  
    flag=1; 
    break; 
    } 
    else 
    {  
   flag=0;  
   printf("您输入有误,请重新选择!"); 
    } 
 }  
    while(flag==0); 
    while(flag==1) 
 {  
    switch(t) 
    {  
     case 1:printf("按职工号查询\n");search_num();break; 
     case 2:printf("按学历查询\n");search_xueli();break; 
     case 3:printf("按电话号码查询\n");search_tel();break; 
  case 4:main();break; 
     default:break; 
    } 
 
 } 
 
} 
void search_num() 
{  
  int num; 
  int i,t;  
  int m=load();  
  printf("请输入要查找的职工号(1-1000):\n"); 
  scanf("%d",&num); 
  for(i=0;i<m;i++) 
    if(num==em[i].num) 
 {  
    printf("\n已找到此人,其记录为:\n");  
       printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话  \n"); 
   printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].
age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); 
    break; 
 }  
   if(i==m)  
    printf("\n对不起,查无此人\n"); 
   printf("\n");  
   printf("返回查询函数请按1,继续查询职工号请按2\n"); 
   scanf("%d",&t); 
   switch(t) 
   {  
   case 1:search();break; 
      case 2: break; 
   default:break; 
   } 
} 
  
void search_xueli() 
{  
  char xueli[30]; 
  int i,t;  
  int m=load();  
  printf("请输入要查找的学历:\n"); 
  scanf("%s",xueli); 
  for(i=0;i<m;i++)  
   if(strcmp(em[i].xueli,xueli)==0) 
 {  
    printf("\n已找到,其记录为:\n");  
    printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n"); 
     
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].
age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); 
 
 }  
  if(i==m)  
    printf("\n对不起,查无此人\n"); 
   printf("\n");  
   printf("返回查询函数请按1,继续查询学历请按2\n"); 
   scanf("%d",&t); 
  switch(t) 
  {  
   case 1:search();break; 
      case 2:break; 
   default :break; 
  } 
 
} 
 void search_tel() 
{  
   long int tel; 
  int i, t; 
  int m=load();  
  printf("请输入要查找的电话号码:\n"); 
  scanf("%ld",&tel); 
  for(i=0;i<m;i++) 
    if(tel==em[i].tel) 
 {  
    printf("\n已找到此人,其记录为:\n");  
       printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话  \n"); 
     
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].
age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); 
    break; 
 }  
    if(i==m)  
    printf("\n对不起,查无此人\n"); 
   printf("\n");  
   printf("返回查询函数请按1,继续查询电话号码请按2\n"); 
   scanf("%d",&t); 
  switch(t) 
  {  
   case 1:search();break; 
      case 2:break; 
   default :break; 
  } 
 
} 
  
void modify() 
{  
    int num; 
 char name[10]; 
 char sex; 
 int age;  
 char xueli[30]; 
    int wage; 
   char addr[30]; 
    long int tel;  
    int b,c,i,n,t,flag;  
 int m=load(); 
    printf("\n 原来的职工信息:\n"); 
    display();    
 printf("\n");  
    printf("请输入要修改的职工的姓名:\n"); 
 scanf("%s",name);  
 for(flag=1,i=0;flag&&i<m;i++)  
 {  
  if(strcmp(em[i].name,name)==0) 
  {  
   printf("\n已找到此人,原始记录为:\n");  
            printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话  \n");    
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].
age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
            printf("\n确实要修改此人信息请按1  不修改请按0\n"); 
   scanf("%d",&n); 
            if(n==1) 
   {  
    printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别4.年龄5.学历6.工资7.住址 8.电话\n");  
    printf("请输入你想修改的那一项序号:\n"); 
    scanf("%d",&c); 
    if(c>8||c<1)  
    printf("\n选择错误,请重新选择!\n"); 
   }  
         flag=0; 
  } 
 
 }  
    if(flag==1)  
 printf("\n对不起,查无此人!\n"); 
    do 
 {  
  switch(c)     
  {  
           case 1:printf("职工号改为: "); 
      scanf("%d",&num);  
                  em[i-1].num=num; 
      break;  
           case 2:printf("姓名改为: "); 
         scanf("%s",name);  
      strcpy(em[i-1].name,name); 
         break;  
           case 3:printf("性别改为: "); 
         getchar();  
         scanf("%c",&sex); 
      em[i-1].sex=sex; 
      break;  
           case 4:printf("年龄改为: "); 
         scanf("%d",&age);  
                  em[i-1].age=age; 
      break;  
           case 5:printf("学历改为: "); 
         scanf("%s",xueli);  
                  strcpy(em[i-1].xueli,xueli); 
      break;  
 case 6:printf("工资改为: "); 
         scanf("%d",wage); 
                 break;  
           case 7:printf("住址改为: "); 
         scanf("%s",addr);  
                  strcpy(em[i-1].addr,addr); 
      break;  
           case 8:printf("电话改为: "); 
     scanf("%ld",&tel);  
                  em[i-1].tel=tel; 
      break; 
  }  
        printf("\n");  
  printf("\n是否确定所修改的信息?\n 是请按1  不,重新修改请按2:  \n"); 
        scanf("%d",&b); 
 
 }  
   while(b==2);  
   printf("\n浏览修改后的所有职工信息:\n"); 
   printf("\n"); 
   save(m); 
   display();  
   printf("\n继续修改请按1,不再修改请按0\n"); 
   scanf("%d",&t); 
   switch(t) 
 {  
    case 1:modify();break; 
    case 0:break; 
    default :break; 
 } 
 
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值