一个职工关系系统(c语言)

Posted by zhang on

亮亮的职工管理系统加注释版

#include <stdio.h>
#include <string.h>
struct worker/*定义结构体存储职工信息*/
{
     char num[10];/*职工号*/
     char name[8];/*姓名*/
     char sex[8];/*性别*/
     char age[10];/*年龄*/
     char xueli[12];/*学历*/
     char zhiwu[12];/*职务*/
     char gongzi[8];/*工资*/
     char addr[10];/*住址*/
     char tel[12];/*电话*/ 
};
struct worker input();
void display(struct worker b[],int count);
void search(struct worker b[],int count,char name[]);
void sort(struct worker b[],int count);
void del(struct worker b[],int count);/*声明被调用函数*/

main()
{
     int number;   
     int quit;
     struct worker bo[50];
     int count=0;
     while(quit!=7)
     {
         printf("                ********欢迎使用职工信息管理系统********
");
         printf("本系统的功能如下:
");
         printf("1--职工信息录入
");
         printf("2--职工信息浏览
");
         printf("3--职工信息按工资排序
");
         printf("4--职工信息查询(按职务)
");
         printf("5--职工信息删除
");
         printf("6--退出系统
");
         printf("请选择功能(输入序号):");
        
         scanf("%d",&number);/*判断功能*/
         switch(number)
         {
             case 1:/*录入*/
             {   
                 char ch=’y’;
                  printf("请输入职工信息:
");
                 while((ch==’y’)||(ch==’Y’))
                 {
                      bo[count]=input();
                      count++;  
                      scanf("%c",&ch);
                      fflush(stdin);                   
                 }

                 break;
             }
             case 2: display(bo,count); break;/*浏览*/
             case 3: /*工资排序*/
             {
                 sort(bo,count);
                 printf("按工资排序后的职工信息如下:
");
                 display(bo,count);
                 break;
             }
             case 4: /*查询*/
             {
                 char zhiwu[12];
                 printf("请输入职务:");
                 scanf("%s",&zhiwu);
                 fflush(stdin);
                 search(bo,count,zhiwu);
                 break;
             }
             case 5:/*删除*/
             {
                 del(bo,count);
                 count--;
                 printf("删除后的职工信息如下:
");
                 display(bo,count);
                 break;
             }
             case 6: quit=6;printf("                ********退出系统,欢迎下次使用!********
");break;/*退出*/   
             default:printf("选择错误,请重新输入
");break;/*容错*/
         }
         fflush(stdin);
     } 
   
}

struct worker input()/*录入信息*/
{
     struct worker b;
     printf("职工号:");
     scanf("%s",&b.num);
     fflush(stdin);
     printf("姓名:");
     scanf("%s",&b.name);
     fflush(stdin);
     printf("性别:");
     scanf("%s",&b.sex);
     fflush(stdin);
     printf("年龄:");
     scanf("%s",&b.age);
     fflush(stdin);
     printf("学历:");
     scanf("%s",&b.xueli);
     fflush(stdin);
     printf("职务:");
     scanf("%s",&b.zhiwu);
     fflush(stdin);
     printf("工资:");
     scanf("%s",&b.gongzi);
     fflush(stdin);
     printf("住址:");
     scanf("%s",&b.addr);
     printf("电话:");
     scanf("%s",&b.tel);
     fflush(stdin);    
     return(b);   
}

void display(struct worker b[],int count)/*浏览*/
{
     int i;
     printf("
职工号 姓名 性别 年龄 学历 职务 工资 住址 电话
");
     for(i=0;i      {
         printf("%s",b[i].num);
         printf(" %s",b[i].name);
         printf(" %s",b[i].sex);
         printf(" %s",b[i].age);
         printf(" %s",b[i].xueli);
         printf(" %s",b[i].zhiwu);
         printf(" %s",b[i].gongzi);
         printf(" %s",b[i].addr);
         printf(" %s",b[i].tel);       
         printf("
");
     }   
}

void search(struct worker b[],int count,char zhiwu[])/*查询*/
{
     int i;
     for(i=0;i      {
         if(strcmp(b[i].zhiwu,zhiwu)==0)
         /*
    strcmp函数
    用法:#include
  功能:比较字符串s1和s2。
  一般形式:strcmp(字符串1,字符串2)
  说明:
  当s1   当s1=s2时,返回值=0
  当s1>s2时,返回值>0
  即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’’为止。
        */
         {
             printf("%s",b[i].num);
         printf(" %s",b[i].name);
         printf(" %s",b[i].sex);
         printf(" %s",b[i].age);
         printf(" %s",b[i].xueli);
         printf(" %s",b[i].zhiwu);
         printf(" %s",b[i].gongzi);
         printf(" %s",b[i].addr);
         printf(" %s",b[i].tel);       
         printf("
");
             break;
         }
     }
     if(i==count)
         printf("查无此人!
");
     printf("
");
}

void sort(struct worker b[],int count)/*排序,采用冒泡排序,稳定*/
{
     struct worker t;
     int i,j;
     for(i=0;i      {
         for(j=0;j          {
             if(b[j].gongzi>b[j+1].gongzi)
             {
                 t=b[j];
                 b[j]=b[j+1];
                 b[j+1]=t;
             }
         }
     }
}

void del(struct worker b[],int count)/*删除*/
{
     int i,j;
     char num[10];
     printf("请输入要删除职工的信息:");
     scanf("%s",num);
     for(i=0;i          if(strcmp(b[i].num,num)==0)
             break;
     for(j=i;j          b[j]=b[j+1];
}

#About Me

张小璋,野蛮生长成世界500强企业供应链金融产品经理的法语毕业生。微信公众号:张小璋碎碎念(ID: SylvainZhang )。
一直在互联网金融公司从事产品经理工作并负责互联网金融产品线,深耕互联网金融和区块链领域。「PMCAFF」、「人人都是产品经理」专栏作家、「PmTalk」签约作家。