zoukankan      html  css  js  c++  java
  • 小题目【链表1】

      1 #include "stdio.h"
      2 #include "stdlib.h"
      3 #include "malloc.h"
      4 #include "string.h"
      5 
      6 const int maxlen=1000;//最大长度
      7 typedef char type;
      8 
      9 struct Data{
     10     int num;//职工的编号
     11     char name[20];//职工的姓名
     12     char sex[20];//职工的性别
     13     char partment[20];//职工的部门
     14     char position[20];//职工的职称
     15     float basic;//职工的基本工资
     16     float add;//职工的奖金
     17     int days;//职工的出勤
     18     float tall;//职工的总工资
     19 };
     20 //-------------链表------------------
     21 struct link_list
     22 {
     23     Data data;
     24     link_list *next;
     25 };
     26 
     27 /*创建链表*/
     28 link_list *Create_list(link_list *head)
     29 {
     30     head = (link_list *)malloc(sizeof link_list);//分配存储区域
     31     if(head==NULL)
     32     {
     33         printf("setup fail
    ");
     34 
     35         exit(0);
     36     }
     37 
     38     head->data.num = 0;
     39     head->data.name[0]='';//表头结点的 数据区域置空
     40     head->data.sex[0]='';//表头结点的 数据区域置空
     41     head->data.partment[0]='';//表头结点的 数据区域置空
     42     head->data.position[0]='';//表头结点的 数据区域置空
     43     head->data.basic =0;   //初始为0基本工资
     44     head->data.add = 0;    //奖金0
     45     head->data.days = 0;   //出勤
     46     head->data.tall = 0;    //总工资初始为0
     47     head->next=NULL;
     48     return head;
     49 }
     50 
     51 /*向链表中插入一个元素(插在链表的最后面)*/
     52 void Insert_list(link_list *head,Data data)
     53 {
     54     link_list *q=NULL;
     55     link_list *p=NULL;
     56     link_list *s=NULL;
     57     q=head;//头结点
     58     p=q->next;
     59     while(p!=NULL)//找到尾指针
     60     {
     61         q=p;
     62         p=q->next;
     63     }
     64     s=(link_list *)malloc(sizeof link_list);//分配存储区域
     65     s->data = data;
     66     q->next=s;
     67     s->next=p;
     68 }
     69 
     70 //添加信息
     71 void insert(link_list *head)//链表尾部插入新的图书信息
     72 {
     73     int i;
     74     Data data;
     75     int num;//职工的编号
     76     char name[20];//职工的姓名
     77     char sex[20];//职工的性别
     78     char partment[20];//职工的部门
     79     char position[20];//职工的职称
     80     float basic;//职工的基本工资
     81     float add;//职工的奖金
     82     int days;//职工的出勤
     83     float tall;//职工的总工资
     84     int select;
     85     printf("      ------------------------------------
    ");
     86     printf("     |---------------添加职工信息---------|
    ");
     87     printf("      请输入职工编号[整数]:");
     88     scanf("%d",&num);
     89     printf("      请输入职工姓名[字符串]:");
     90     scanf("%s",&name);
     91     printf("      请输入职工性别[字符串]:
    ");
     92        printf("      --------0:男
    ");
     93     printf("      --------1:女
    ");
     94     printf("      请选择:");
     95     scanf("%d",&select);
     96     while(select!=0&&select!=1)
     97     {
     98         printf("      输入有误,输入(0|1):");
     99         scanf("%d",&select);
    100     }
    101     switch(select)
    102     {
    103     case 0:
    104         strcpy(data.sex,"");
    105         break;
    106     case 1:strcpy(data.sex,"");
    107         break;
    108     }
    109     printf("      请输入职工部门[字符串]:");
    110     scanf("%s",&partment);
    111     printf("      请输入职工职称[字符串]:");
    112     scanf("%s",&position);
    113     
    114     printf("      请输入基本工资[浮点数]:");
    115     scanf("%f",&basic);
    116 
    117     printf("      请输入奖金[浮点数]:");
    118     scanf("%f",&add);
    119     printf("      请输入出勤天数[浮点数]:");
    120     scanf("%d",&days);
    121 
    122     for(i=0;name[i]!='';i++)
    123     {
    124          data.name[i] = name[i];
    125     }
    126     data.name[i] ='';//结束
    127 
    128     for(i=0;partment[i]!='';i++)
    129     {
    130          data.partment[i] = partment[i];
    131     }
    132     data.partment[i] ='';//结束
    133 
    134     for(i=0;position[i]!='';i++)
    135     {
    136          data.position[i] = position[i];
    137     }
    138     data.position[i] ='';//结束
    139 
    140 
    141     data.num=  num ;
    142 //    printf("num:%d
    ",data.num);
    143     data.basic =  basic ;
    144     data.add=  add ;
    145     data.days =  days ;
    146     data.tall = 0;//总工资初始为0
    147 
    148     Insert_list(head,data);//插入职工基本信息
    149     printf("     |-----------职工信息插入成功---------|
    ");
    150     printf("      ------------------------------------
    ");
    151 }
    152 
    153 void compute(link_list *head)//计算每个职工的总工资
    154 {
    155     link_list *q=NULL;
    156     q=head->next;
    157     while(q!=NULL)
    158     {
    159         q->data.tall =q->data.basic + q->data.add ;
    160         q=q->next;
    161     }
    162 }
    163 
    164 void Look(link_list *head)//查看所有职工信息
    165 {
    166     int i;
    167     link_list *q=NULL;
    168     q=head->next;
    169     printf("                         <全部职工信息如下>                             
    ");
    170     printf("-----------------------------------------------------------------------------
    ");
    171     printf("编号	姓名	性别	部门	职称	基本工资	奖金	出勤	总工资
    ");
    172     printf("-----------------------------------------------------------------------------
    ");
    173     
    174     while(q!=NULL)
    175     {
    176        
    177         printf("%d	%s	%s	%s	%s	%.2f		%.2f	%d	%.2f
    ",q->data.num,q->data.name,q->data.sex,q->data.partment,q->data.position,
    178             q->data.basic,q->data.add,q->data.days,q->data.tall);
    179         q=q->next;
    180     }
    181     printf("-------------------------<全部职工信息如上>----------------------------------
    ");
    182 }
    183 //删除职工信息(根据编号)
    184 void Delete(link_list *head,int num) 
    185 {
    186     printf("----------------<删除编号为[%d]的信息>----------------
    ",num); 
    187     link_list *p,*f;
    188     p = head;
    189     f = head->next;
    190     bool flags = true;
    191     if(f!=NULL)
    192     {
    193         while(p!=NULL&&f!=NULL&&f->data.num!=num)
    194         {
    195            p = p->next;
    196            f = f->next;
    197         }
    198         if(f!=NULL&&p!=NULL)
    199         {
    200             p->next = f->next;
    201             printf("                 [编号[%d]的职工删除成功]
    ",num); 
    202         }else  printf("----------------[编号[%d]的职工不存在]----------------
    ",num); 
    203     }
    204 }
    205 //修改职工信息
    206 void  Update_single(link_list *p)//修改单个职工信息
    207 {
    208     int i;
    209     Data data;
    210     int num;//职工的编号
    211     char name[20];//职工的姓名
    212     char sex[20];//职工的性别
    213     char partment[20];//职工的部门
    214     char position[20];//职工的职称
    215     float basic;//职工的基本工资
    216     float add;//职工的奖金
    217     int days;//职工的出勤
    218     float tall;//职工的总工资
    219     int select;
    220     printf("      ------------------------------------
    ");
    221     printf("     |---------------修改职工信息---------|
    ");
    222     printf("      请输入职工编号[整数]:");
    223     scanf("%d",&num);
    224     printf("      请输入职工姓名[字符串]:");
    225     scanf("%s",&name);
    226     printf("      请输入职工性别[字符串]:
    ");
    227        printf("      --------0:男
    ");
    228     printf("      --------1:女
    ");
    229     printf("      请选择:");
    230     scanf("%d",&select);
    231     while(select!=0&&select!=1)
    232     {
    233         printf("      输入有误,输入(0|1):");
    234         scanf("%d",&select);
    235     }
    236     switch(select)
    237     {
    238     case 0:
    239         strcpy(data.sex,"");
    240         break;
    241     case 1:strcpy(data.sex,"");
    242         break;
    243     }
    244     printf("      请输入职工部门[字符串]:");
    245     scanf("%s",&partment);
    246     printf("      请输入职工职称[字符串]:");
    247     scanf("%s",&position);
    248     
    249     printf("      请输入基本工资[浮点数]:");
    250     scanf("%f",&basic);
    251 
    252     printf("      请输入奖金[浮点数]:");
    253     scanf("%f",&add);
    254     printf("      请输入出勤天数[浮点数]:");
    255     scanf("%d",&days);
    256 
    257     for(i=0;name[i]!='';i++)
    258     {
    259          data.name[i] = name[i];
    260     }
    261     data.name[i] ='';//结束
    262 
    263     for(i=0;partment[i]!='';i++)
    264     {
    265          data.partment[i] = partment[i];
    266     }
    267     data.partment[i] ='';//结束
    268 
    269     for(i=0;position[i]!='';i++)
    270     {
    271          data.position[i] = position[i];
    272     }
    273     data.position[i] ='';//结束
    274 
    275 
    276     data.num=  num ;
    277     data.basic =  basic ;
    278     data.add=  add ;
    279     data.days =  days ;
    280     data.tall = data.basic+data.add;//总工资初始
    281     p->data = data;//修改职工基本信息
    282     printf("     |----------职工信息修改成功---------|
    ");
    283     printf("      ------------------------------------
    ");
    284 }
    285 
    286 void Update(link_list *p,int num)  //修改职工信息
    287 {
    288     link_list *q=p;
    289     q = p->next;
    290     printf("----------------<修改编号为[%d]的信息>----------------
    ",num); 
    291     if(q==NULL)
    292     {
    293         printf("----------------[编号[%d]的职工不存在]----------------
    ",num); 
    294     }
    295     else  while(q!=NULL){
    296        
    297         if(num==(q->data.num))    
    298         {
    299             Update_single(q);
    300             break;
    301         }
    302          q=q->next;
    303     } 
    304   
    305 } 
    306 
    307 void Show_Single(link_list *q,char num[maxlen])//显示p结点的所有信息
    308 {
    309     printf("                           <职工信息如下>                             
    ");
    310     printf("-----------------------------------------------------------------------------
    ");
    311     printf("编号	姓名	性别	部门	职称	基本工资	奖金	出勤	总工资
    ");
    312     printf("-----------------------------------------------------------------------------
    ");
    313     printf("%d	%s	%s	%s	%s	%.2f		%.2f	%d	%.2f
    ",q->data.num,q->data.name,q->data.sex,q->data.partment,q->data.position,
    314             q->data.basic,q->data.add,q->data.days,q->data.tall);
    315 
    316 }
    317 
    318 void Search(link_list *p,char num[maxlen])  //按编号|姓名
    319 {
    320     //printf("%s
    ",num);
    321     link_list *q;
    322     q=p->next;
    323     bool flags = true;
    324     if(q==NULL)
    325     {
    326     }else  while(q!=NULL){
    327         if((atoi(num)==(q->data.num))||(strcmp(num,q->data.name)==0))    
    328         {
    329             Show_Single(q,num);
    330             flags = false;
    331             break;
    332         }
    333          q=q->next;
    334     } 
    335     if(flags)
    336     {
    337         printf("----------------[查询职工信息不存在]----------------
    ",num); 
    338     }else
    339     {
    340         printf("-----------------------------------------------------------------------------
    ");
    341         printf("                 [职工信息如上]                   
    "); 
    342     }
    343 
    344 
    345 } 
    346 
    347 
    348 int  main()
    349 {
    350     link_list* we;
    351     link_list *head = NULL;
    352     link_list *s = NULL;/*接收指针 case3的指针接收*/
    353     head=Create_list(head);
    354     char sel[100];
    355     int select;
    356     do{
    357         system("CLS");
    358         printf("      ----------------[菜单]--------------
    ");
    359         printf("     |--------1:插入职工信息--------------|
    ");
    360         printf("     |--------2:计算职工总工资------------|
    ");
    361         printf("     |--------3:删除职工信息--------------|
    ");
    362         printf("     |--------4:修改职工信息--------------|
    ");
    363         printf("     |--------5:查看全部职工信息----------|
    ");
    364         printf("     |--------6:查找[按编号|姓名]---------|
    ");
    365         printf("     |--------0:退出----------------------|
    ");
    366         printf("      ------------------------------------
    ");
    367         printf("您的选择是:");
    368         scanf("%d",&select);
    369         while(select!=1&&select!=2&&select!=3&&select!=4&&select!=5&&select!=6&&select!=0)
    370         {
    371             printf("您输入有误,请重新输入:");
    372             scanf("%d",&select);
    373         }
    374         switch(select)
    375         {
    376         case 1:
    377              insert(head);//插入信息职工信息
    378              break;
    379         case 2:
    380             compute(head);//计算职工总工资
    381             Look(head);
    382             break;
    383         case 3:
    384             printf("删除职工的编号:");//删除
    385             scanf("%d",&select);
    386             Delete(head,select);
    387             break;
    388         case 4:
    389             printf("修改的职工的编号:");
    390             scanf("%d",&select);
    391             Update(head,select);
    392             break;
    393         case 5:
    394             Look(head);
    395             break;
    396         case 6:
    397             printf("查询的职工编号或姓名:");
    398             getchar();
    399             gets(sel);
    400             Search(head,sel);
    401             break;
    402         default:
    403             exit(0);
    404             break;
    405         }
    406         printf("
    ");
    407         printf("      ------------------------------------
    ");
    408         printf("     |--------1:继续操作------------------|
    ");
    409         printf("     |--------0:退出----------------------|
    ");
    410         printf("      ------------------------------------
    ");
    411         printf("您的选择是:");
    412         scanf("%d",&select);
    413         while(select!=1&&select!=0)
    414         {
    415             printf("您输入有误,请重新输入:");
    416             scanf("%d",&select);
    417         }
    418     }while(select==1);
    419     return 0;
    420 }

     职工管理系统[无bug]

  • 相关阅读:
    Hosts文件的使用
    【java】关于时间
    【java】定时器
    log4j2的使用
    【springMVC】简单的前后端数据交流
    springMVC简单示例
    442. Find All Duplicates in an Array
    448. Find All Numbers Disappeared in an Array Add to List
    xml scheme 示例解析
    《C#高效编程》读书笔记04-使用Conditional特性而不是#if条件编译
  • 原文地址:https://www.cnblogs.com/minmsy/p/5120403.html
Copyright © 2011-2022 走看看