职工管理实训报告

广西科技大学鹿山学院

《高级语言程序设计》

课程实训报告

    目:             职工信息管理             

    业:             软件工程                 

    级:             131                     

    名:                    

    号:              

                                            

      二零## 年 6 月 5

目录

1.题目与要求·························· 1

1.1问题提出··························· 1

1.2本系统涉及的知识点······················ 1

1.3功能要求··························· 1

2.功能设计··························· 1

2.1算法设计··························· 1

2.2部分模块流程图························ 2

3.程序代码设计 ························ 3

3.1输入模块··························· 3

3.2查询模块··························· 3

3.3修改模块··························· 4

4.C程序设计总结 ······················· 5

5.结束语 ··························· 5

*附录:程序源代码 ······················· 6

1 题目与要求

1.1 问题提出

本人计划编写一个职工信息管理系统,主要用来管理职工的各项信息。

1.2 本系统涉及的知识点

结构、数组、循环、函数、分支、指针、文件

1.3 功能要求

1)        能从键盘输入职工的信息

2)        能从指定的文件中读入职工的信息

3)        能按职工号查询职工的信息

4)        能按学历统计职工数

5)        能查询到指定年份需要退休的职工的信息(男:60岁,女55岁)

6)        能删除指定职工号的职工信息

7)        能将职工信息保存在指定的文件中

2 功能设计

2.1 算法设计

1、利用switch语句设计如图所示的菜单

     

2、根据所选菜单编写相应代码:

1)输入函数write:利用循环输入的方式,将职工信息存入结构数组,并依次写入文件work.txt。

2)读取职工信息reads:读取并输出所有职工信息。

     职工信息管理系统模块图

2.2 部分模块流程图

按照工号查询流程图:

3 程序代码设计

3.1输入模块

1)函数原形:void write(),ids(),sexs(),year()

2)功能:利用while循环语句和scanf、gets、getchar函数完成对结构数组的输入,并用fwrite写入文件.其中职工号由ids()判断,性别由sexs()判断,出生日期由year()判断,学历由edus()判断.每成功输入一个数据都将打印在屏幕上

ids()函数判断id未存在,范围在1000-9999间,若不满足,提示并要求重新输入,若输入的工号为0,则中止输入.

sexs()函数判断输入的性别是否为男或女,若不是,则提示并要求重新输入.

year()函数判断若输入的日期格式不为****-**-**,则提示格式错误;若年份不在1900-2014之间,提示年份错误;若月份不在01-12间,则提示月份错误;若日期>31,其中4,6,9,11月的日期>30,则提示日期错误.

edus()函数判断若输入的学历不为小学/初中/高中/大学,则提示并要求重新输入

3.2查询模块

1)函数原型:main1(),reads(),serch(),eduserch(),tuixiu()

2)功能:在main()函数中选择查询子菜单,通过main1()函数选择查询选项或输入0返回主菜单

serch()函数:读取work.txt文件内容,将存在的id打印,用户输入id后,输出该id的所有信息.

eduserch()函数:调用edus()提示和判断用户输入学历,输出为该学历职工的所有信息和总计人数.

tuixiu()函数:提示用户输入年份,若有职工到此年份为退休,则依次输出职工信息并输出统计的人数.

3.3修改模块

1)函数原型:change()

2)功能:读取work.txt文件,打印所有工号姓名,用户输入工号后输出该工号所有信息并对各项信息编号,用户输入信息编号后提示用户输入新数据,修改成功后将用w+方式重写文件,用户可继续修改或输入0退出修改

4 C程序设计总结

遇到问题:1.录入函数中scanf写在while条件内,使每次循环都要求输入内容,若输入0则中止while,导致输入结束后写入了id为0的数据.

2.删除函数中的删除方式为:遍历文件,标记目标id下标,使用for循环覆盖此数据,重新写入文件,导致文件内容尾出现空数据

解决:加入delid0()函数,剔除数据间的空数据,判断数据是否有效,w+方式写入有效数据前的内容,较繁琐

总结:本程序简洁明了,功能齐全,经大量调试最终出现0错误与警告;录入模块有详细报错,与用户交互性强,易于使用;查询模块拥有查询子菜单列出查询类型,方便用户使用,查询前列出名单,查询过程中按需求提示,查询后按需提示;修改模块可连续修改同一职工的多项信息,增强了实用性,适当提示与输入检测使其更便于使用.

本程序存储方式为结构体数组,避开了链表的复杂操作,使程序更简单易行,但不足之处是占用内存大于链表,如有机会,下次会尝试使用链表.

5 结束语

崔亚楠老师在实训过程中悉心解答和解决我们遇到的问题,感谢崔老师.

参考文献

[1] 谭浩强,C程序设计(第四版),北京:清华大学出版社,2010.6

*附录:程序源代码

//职工管理系统,完整源代码

#include"stdio.h"

#include"stdlib.h"                                      //strcpy原型

#define NAMES 10                                                 //名字

#define EDUS 5                                               //学历

#define SITES 30                                      //地址

#define DATES 11                                    //日期

#define SEXS 3                                               //姓名

#define MAN 50                                              //人数上限

#define MALL sizeof(works)                            //获取字节长

//定义结构体

typedef struct work{                                 

       int id;

       char name[NAMES];

       char sex[SEXS];

       char date[DATES];

       char edu[EDUS];

       int wage;

       char site[SITES];

       int phone;

}works;

works worker[MAN];

//欢迎信息

void menu0(y){

       system("cls");

       puts("\n\n\n\n\t\t┏━━━━━━━━━━━━━━━━━━━━┓\n\

\t\t┃\t\t\t\t\t  ┃\n\

\t\t┃\t        职工管理系统\t\t  ┃\n\

\t\t┃\t                 \t\t  ┃\n\

\t\t┃\t\t\t\t\t  ┃\n\

\t\t┗━━━━━━━━━━━━━━━━━━━━┛\n\

\n");

if(y==0){

       printf("\t\t\t     欢迎使用 正在进入...\n");

}

if(y==1){

       printf("\t\t\t     感谢使用 正在退出...\n");

}

getch();

}

//主菜单

void menu(){

       system("cls");

       puts("\n\n\t\t┏━━━━━━━━━主菜单━━━━━━━━━┓\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       1.录入信息\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       2.查询信息\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       3.删除信息\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       4.修改信息\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       0.退出    \t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┗━━━━━━━━━━━━━━━━━━━━━┛\n\

\t\t\t\t请选择(0-4):\

\n");

}

//输入时

void write_menu(){

       system("cls");

       puts("\n\n\t\t━━━━━━━━━━录入信息━━━━━━━━━━\n\n");

}

//判断性别

void sexs(i){

       char y[SEXS];

       int n=1;

       FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       while(gets(y)){

              if(strcmp(y,"男")==0||strcmp(y,"女")==0){

                     strcpy(worker[i].sex,y);

                     break;    

              }

              else{

                     write_menu();

                     printf("输入错误(请输入男/女)\n");

                     continue;

              }

       }

       fclose(fp);

}

//判断出生日期

void year(i){

       char s[DATES],y[5];

       int n=1,y1=0;

       FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       while(gets(s)){      

              strncpy(y,s,5); //把年份复制给y1并转换成int型

              y1=atoi(y);

              if(s[10]=='\0'&&s[4]=='-'&&s[7]=='-'){       //长度为10,第5位和第8位为'-'

                    

                     if(y1>2014||y1<1900){

                            write_menu();

                            printf("年份输入错误,请重新输入(年份应在1900-2014之间)\n\n");

                            continue;

                     }

                     if((s[5]>'1'||s[5]<'0')||

((s[5]=='1'&&s[6]>'2')||(s[5]=='0'&&s[6]=='0'))){

                            write_menu();        //月份>12或为00,月份第一位为0或1

                            printf("月份输入错误,请重新输入(月份应为01-12)\n\n");

                            continue;

                     }

                                                        //闰年二月为29天否则不大于28

                                                        //4,6,9,11月小于等于30

                     if((s[8]<'0'||s[8]>'3')||(s[8]=='0'&&s[9]=='0')||(s[8]=='3'&&s[9]>'1')

||(((y1%4==0&&y1&100!=0)||(y1%400==0))&&(s[5]=='0'&&s[6]=='2'&&s[8]=='3'))

||((s[5]=='0'&&s[6]=='2')&&((s[8]=='2'&&s[9]>'8')||s[8]=='3'))

||(((s[5]=='0'&&(s[6]=='4'||s[6]=='6'||s[6]=='9'))||(s[5]=='1'&&s[6]=='1'))&&s[8]=='3'&&s[9]=='1')

){

                            write_menu();

                            printf("日期输入错误,请重新输入\

(闰年二月为29否则不大于28,4,6,9,11月小于等于30)\n\n");

                            continue;

                     }

                     strcpy(worker[i].date,s);

                     break;

              }

                     else{

                            write_menu();

                            printf("输入错误,请重新输入(格式:20##-01-01)\n\n");

                            continue;

                     }

       }

       fclose(fp);

}

//判断工号

int ids(i){

       int id,n=0,c=0;

      FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

      

       while(scanf("%d",&id)){

              while(!feof(fp)){

                     fread(&worker[n],MALL,1,fp);

                     if(worker[n].id==id&&worker[n].id!=0){          //搜索相同的id

                            c=1;

                            break;

                     }

                     n++;

              }

              if(c!=1){

                     if(id==0)

                            return 0;                       //输入0时返回0,在输入函数中结束

                     else if(id>=1000&&id<=9999){

                            getchar();

                            worker[i].id=id;

                            break;

                     }

                     else{

                            write_menu();

                            printf("输入错误(范围:1000-9999)\n");

                            continue;

                     }

              }

              write_menu();

              printf("已存在,请重新输入\n");

              c=0;

       }

       fclose(fp);

}

//判断学历

void edus(i){

       char y[EDUS];

       int n=1;

       FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       while(gets(y)){

              if(strcmp(y,"小学")==0||strcmp(y,"初中")==0

             ||strcmp(y,"高中")==0||strcmp(y,"大学")==0){

                     strcpy(worker[i].edu,y);

                     break;    

              }

              else{

                     write_menu();

                     printf("输入错误(请输入小学/初中/高中/大学)\n\n");

                     continue;

              }

       }

       fclose(fp);

}

//剔除所有id为0的数据(数据整理)

void delid0(){

       int i=0,num=0,n=0,c=0,t=0;

       FILE *fp;                                                              

       fp=fopen("work.txt","r+");

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==0&&t==0){

                     c=i;

                     t=1;

              }

              i++;

       }

       i--;

       num=i;

       i=0;

       rewind(fp);

      

       //剔除数据间的空数据,(删除数据时会产生)

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              i++;

       }

       i=0;

       rewind(fp);

       while(!feof(fp)){                        //剔除结尾空数据,(写入时可能产生)

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==0&&t==0){

                     c=i;

                     t=1;

              }

              i++;

       }

       if(t=1){

              fp=fopen("work.txt","w+");

              for(n=0;n

                     fwrite(&worker[n],MALL,1,fp);

              }

              fclose(fp);

       }

       fclose(fp);

}

//输入,写入文件

void write(){

       FILE *fp;

       int id=0,i=0,eduid;

       char c;

       if((fp=fopen("work.txt","a+"))==NULL){

              printf("无法打开\n");

       }

       write_menu();

       printf("工号(输入0返回):\n\n");

       while(i<50){

              id=ids(i);

              if(id==0){

                     write_menu();

                     printf("任意键返回\n");

                     break;    

              }

              write_menu();

              printf("工号:%d\n\n名字:\n",worker[i].id);

              gets(worker[i].name);

              write_menu();

              printf("工号:%d 名字:%s\n\n性别:\n",worker[i].id,worker[i].name);

              sexs(i);

              write_menu();

              printf("工号:%d 名字:%s 性别:%s\n\n出生日期:\n",

worker[i].id,worker[i].name,worker[i].sex);

              year(i);

              write_menu();

              printf("工号:%d 名字:%s 性别:%s \n出生日期:%s\n\n学历:\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date);

              edus(i);

              write_menu();

              printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s\n\n工资:\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu);

              scanf("%d",&worker[i].wage);

              getchar();

              write_menu();

              printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d\n\n地址:\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage);

              scanf("%s",&worker[i].site);

              getchar();

              write_menu();

              printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d \n住址:%s\n\n电话:\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site);

              scanf("%d",&worker[i].phone);

              getchar();

              write_menu();

              printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d \n住址:%s 电话:%d \n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site,worker[i].phone);

              if(fwrite(&worker[i],MALL,1,fp)!=1){              //写入文件

                     printf("保存失败");

              }

              printf("\n继续输入工号或0退出\n");

              i++;

       }

       fclose(fp);

}

//输出所有职工信息

void reads(){

       system("cls");

       puts("\n\n\t\t━━━━━━━━━━全部职工━━━━━━━━━━\n\n");

       int i=0;

       FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==0){                    //跳过id为0的id

                     i++;

                     continue;

              }

                     printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d \n住址:%s 电话:%d\n\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site,worker[i].phone);

              i++;

       }

       printf("\n任意键返回\n");

       fclose(fp);

}

//按工号查询

void serch(){

       system("cls");

                     puts("\n\n\t\t━━━━━━━━━━工号查询━━━━━━━━━━\n\n");

       int n,i=0,t=0;

       FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }                                                                    //列出已有工号

       printf("目前存在的工号:\n");

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==0){                    //跳过id为0的id

                     i++;

                     continue;

              }

                     printf("%6d",

worker[i].id);

              i++;

       }

       i=0;

       rewind(fp);                                               //定位到文件起始位置

       printf("\n输入工号\n\n");

       scanf("%d",&n);

       while(!feof(fp)){

              t=0;

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==0){                    //跳过id为0的id

                     i++;

                     continue;

              }

              if(n==worker[i].id){

                     system("cls");

                     puts("\n\n\t\t━━━━━━━━━━工号查询━━━━━━━━━━\n\n");

      

                     printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d \n住址:%s 电话:%d\n\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site,worker[i].phone);

             }

             else

                     t=1;

             i++;

       }

              if(t==1){

                     system("cls");

                     puts("\n\n\t\t━━━━━━━━━━工号查询━━━━━━━━━━\n\n");

      

                     printf("id不存在");

              }

        printf("\n任意键返回\n");

        fclose(fp);

}

//搜索学历

void eduserch(){

       system("cls");

       puts("\n\n\t\t━━━━━━━━━━学历查询━━━━━━━━━━\n\n");

       char n[EDUS],y[EDUS],i=0,num=0;

       FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       printf("输入学历\n\n");

       while(gets(y)){

              if(strcmp(y,"小学")==0||strcmp(y,"初中")==0

             ||strcmp(y,"高中")==0||strcmp(y,"大学")==0){

                     strcpy(n,y);

                     break;    

              }

              else{

                     system("cls");

                     puts("\n\n\t\t━━━━━━━━━━学历查询━━━━━━━━━━\n\n");

      

                     printf("输入错误(请输入小学/初中/高中/大学)\n\n");

                     continue;

              }

       }

       system("cls");

       puts("\n\n\t\t━━━━━━━━━━学历查询━━━━━━━━━━\n\n");

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(n[0]=='0'){

                     break;

              }                                                      //搜索edu的首字符是否与输入的相等

              if(worker[i].edu[0]==n[0]){ 

                     printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d \n住址:%s 电话:%d\n\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site,worker[i].phone);

                     num++;

              }

              i++;

       }

       if(n[0]!='0')

       printf("\n共%d人",num);

       printf("\n\n任意键返回\n");

       fclose(fp);

}

//退休查询

void tuixiu(){

       system("cls");

       puts("\n\n\t\t━━━━━━━━━━退休查询━━━━━━━━━━\n\n");

       char y[4];

       int i=0,n=0,c=0,t=0;

       FILE *fp;

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       printf("输入年份(将输出在该年份退休的职工,男60,女55退休):\n\n");

       scanf("%d",&n);

       printf("至%d年退休的员工:\n",n);

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(strcmp(worker[i].sex,"男")==0){

                     strncpy(y,worker[i].date,4);   //把date的年份复制给y

                     c=atoi(y);                                          //y转换为int型赋给c

                     if(n-c>=60){

                            t++;

                            printf("\n");

                            printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d \n住址:%s 电话:%d\n\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site,worker[i].phone);

                     }

              }

             if(strcmp(worker[i].sex,"女")==0){

                     strncmp(y,worker[i].date,4);

                     c=atoi(y);

                     if(n-c>=55){

                            t++;

                            printf("\n");

                            printf("工号:%d 名字:%s 性别:%s \n\

出生日期:%s 学历:%s 工资:%d \n住址:%s 电话:%d\n\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site,worker[i].phone);

                     }

              }

              i++;

       }

       if(t==0){

              printf("\n无");

       }

       printf("共%d人\n任意键返回\n",t);

       fclose(fp);

}

//删除指定职工

void del(){

       int n=0,i=0,s,num;                             

       FILE *fp;                                                              

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       system("cls");

       puts("\n\n\t\t━━━━━━━━━━删除职工━━━━━━━━━━\n\n");

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==0){                    //跳过id为0的id

                     i++;

                     continue;

              }

                     printf("工号:%d 名字:%s \n",

worker[i].id,worker[i].name);

              i++;

       }

       i=0;

       rewind(fp);

       printf("\n输入要删除的职工号\n");

       scanf("%d",&s);

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==s){

                     num=i;                                       //num标记要删除的工号

              }

              i++;                                           //i统计人数,下标

       }    

       i--;

       for(n=num;n

              worker[n]=worker[n+1];

       }

       if((fp=fopen("work.txt","rt+"))==NULL){

              printf("无法打开\n");

       }

       for(n=0;n

              if(fwrite(&worker[n],MALL,1,fp)!=1){

                     printf("\n无法保存\n");

              }

       }

       printf("\n删除成功!\n");

       getch();

       fclose(fp);

}

//重写数据

void allw(i){

       int n;

       FILE *fp;

       fp=fopen("work.txt","w+");                             

      

       for(n=0;n

              fwrite(&worker[n],MALL,1,fp);

       }

       fclose(fp);

}

//信息修改

void change(){

       int n=0,i=0,s,num,t=0,c=0;                               

       FILE *fp;                                                              

       if((fp=fopen("work.txt","r+"))==NULL){

              printf("无法打开\n");

       }

       system("cls");

       puts("\n\n\t\t━━━━━━━━━━修改信息━━━━━━━━━━\n\n");

      

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==0){                    //跳过id为0的id

                     i++;

                     continue;

              }

                     printf("工号:%d 名字:%s \n",

worker[i].id,worker[i].name);

              i++;

       }

       i=0;

       rewind(fp);

       printf("\n输入要修改的职工号\n");

       scanf("%d",&s);

       getchar();

       while(!feof(fp)){

              fread(&worker[i],MALL,1,fp);

              if(worker[i].id==s){

                     num=i;

                     system("cls");

                     puts("\n\n\t\t━━━━━━━━━━修改信息━━━━━━━━━━\n\n");

                     printf("1.工号:%15d \n2.名字:%15s \n3.性别:%15s \n\

4.出生日期:%15s \n5.学历:%15s \n6.工资:%15d \n7.住址:%15s \n8.电话:%15d\n\n",

worker[i].id,worker[i].name,worker[i].sex,worker[i].date,

worker[i].edu,worker[i].wage,worker[i].site,worker[i].phone);

              }

              i++;

       }

       printf("输入要修改的数据编号\n");

       while(scanf("%d",&s)&&s!=0){

              getchar();

              switch(s){

                     case 1:printf("新工号\n");ids(num);break;

                     case 2:printf("新姓名\n");gets(worker[num].name);break;

                     case 3:printf("新性别\n");sexs(num);break;

                     case 4:printf("新出生年月\n");year(num);break;

                     case 5:printf("新学历\n");edus(num);break;

                     case 6:printf("新工资\n");scanf("%d",&worker[num].wage);getchar();break;

                     case 7:printf("新住址\n");scanf("%s",&worker[num].site);getchar();break;

                     case 8:printf("新电话\n");scanf("%d",&worker[num].phone);getchar();break;

                     default:printf("选项输入错误\n");break;

              }

              allw(i);                                //重写文件

              system("cls");

              puts("\n\n\t\t━━━━━━━━━━修改信息━━━━━━━━━━\n\n");

              printf("1.工号:%15d \n2.名字:%15s \n3.性别:%15s \n\

4.出生日期:%15s \n5.学历:%15s \n6.工资:%15d \n7.住址:%15s \n8.电话:%15d\n\n",

worker[num].id,worker[num].name,worker[num].sex,worker[num].date,

worker[num].edu,worker[num].wage,worker[num].site,worker[num].phone);

              printf("输入编号继续修改或输入0结束修改\n");

       }

       fclose(fp);

       printf("任意键返回\n");

}

//查询菜单

void menu1(){

       system("cls");

       puts("\n\n\t\t┏━━━━━━━━━查询信息━━━━━━━━┓\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       1.浏览全部\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       2.按照工号\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       3.按照学历\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       4.退休情况\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┃\t       0.返回上级\t\t    ┃\n\

\t\t┃\t\t\t\t\t    ┃\n\

\t\t┗━━━━━━━━━━━━━━━━━━━━━┛\n\

\t\t\t\t请选择(0-4):\n");

}

//查询菜单函数

void main1(){

       menu1();

       int n;

       while(scanf("%d",&n)&&n!=0){

              getchar();

              delid0();

              switch(n){

                     case 1:reads();break;

                     case 2:serch();break;

                     case 3:eduserch();break;

                     case 4:tuixiu();break;

                     case 0:break;

                     default:printf("\n输入错误,按任意键后重新输入\n");break;

              }

              getch();

              menu1();

       }

}

//主函数

int main(){

       int n,i=0;

       menu0(0);

       menu();

       while(scanf("%d",&n)&&n!=0){

              getchar();

              delid0();

              switch(n){

                     case 1:write();break;

                     case 2:main1();menu();break;

                     case 3:del();break;

                     case 4:change();break;

                     default:printf("\n输入错误,按任意键后重新输入\n");break;

              }

//            getch();

              menu();

       }

       menu0(1);

       return 0;

}

高级语言程序设计实训成绩评定表

相关推荐