博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小题目【链表1】
阅读量:5969 次
发布时间:2019-06-19

本文共 11991 字,大约阅读时间需要 39 分钟。

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\n"); 34  35         exit(0); 36     } 37  38     head->data.num = 0; 39     head->data.name[0]='\0';//表头结点的 数据区域置空 40     head->data.sex[0]='\0';//表头结点的 数据区域置空 41     head->data.partment[0]='\0';//表头结点的 数据区域置空 42     head->data.position[0]='\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("      ------------------------------------\n"); 86     printf("     |---------------添加职工信息---------|\n"); 87     printf("      请输入职工编号[整数]:"); 88     scanf("%d",&num); 89     printf("      请输入职工姓名[字符串]:"); 90     scanf("%s",&name); 91     printf("      请输入职工性别[字符串]:\n"); 92        printf("      --------0:男\n"); 93     printf("      --------1:女\n"); 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]!='\0';i++)123     {124          data.name[i] = name[i];125     }126     data.name[i] ='\0';//结束127 128     for(i=0;partment[i]!='\0';i++)129     {130          data.partment[i] = partment[i];131     }132     data.partment[i] ='\0';//结束133 134     for(i=0;position[i]!='\0';i++)135     {136          data.position[i] = position[i];137     }138     data.position[i] ='\0';//结束139 140 141     data.num=  num ;142 //    printf("num:%d\n",data.num);143     data.basic =  basic ;144     data.add=  add ;145     data.days =  days ;146     data.tall = 0;//总工资初始为0147 148     Insert_list(head,data);//插入职工基本信息149     printf("     |-----------职工信息插入成功---------|\n");150     printf("      ------------------------------------\n");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("                         
<全部职工信息如下>
\n");170 printf("-----------------------------------------------------------------------------\n");171 printf("编号\t姓名\t性别\t部门\t职称\t基本工资\t奖金\t出勤\t总工资\n");172 printf("-----------------------------------------------------------------------------\n");173 174 while(q!=NULL)175 {176 177 printf("%d\t%s\t%s\t%s\t%s\t%.2f\t\t%.2f\t%d\t%.2f\n",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("-------------------------
<全部职工信息如上>
----------------------------------\n");182 }183 //删除职工信息(根据编号)184 void Delete(link_list *head,int num) 185 {186 printf("----------------
<删除编号为[%d]的信息>
----------------\n",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]的职工删除成功]\n",num); 202 }else printf("----------------[编号[%d]的职工不存在]----------------\n",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(" ------------------------------------\n");221 printf(" |---------------修改职工信息---------|\n");222 printf(" 请输入职工编号[整数]:");223 scanf("%d",&num);224 printf(" 请输入职工姓名[字符串]:");225 scanf("%s",&name);226 printf(" 请输入职工性别[字符串]:\n");227 printf(" --------0:男\n");228 printf(" --------1:女\n");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]!='\0';i++)258 {259 data.name[i] = name[i];260 }261 data.name[i] ='\0';//结束262 263 for(i=0;partment[i]!='\0';i++)264 {265 data.partment[i] = partment[i];266 }267 data.partment[i] ='\0';//结束268 269 for(i=0;position[i]!='\0';i++)270 {271 data.position[i] = position[i];272 }273 data.position[i] ='\0';//结束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(" |----------职工信息修改成功---------|\n");283 printf(" ------------------------------------\n");284 }285 286 void Update(link_list *p,int num) //修改职工信息287 {288 link_list *q=p;289 q = p->next;290 printf("----------------
<修改编号为[%d]的信息>
----------------\n",num); 291 if(q==NULL)292 {293 printf("----------------[编号[%d]的职工不存在]----------------\n",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("
<职工信息如下>
\n");310 printf("-----------------------------------------------------------------------------\n");311 printf("编号\t姓名\t性别\t部门\t职称\t基本工资\t奖金\t出勤\t总工资\n");312 printf("-----------------------------------------------------------------------------\n");313 printf("%d\t%s\t%s\t%s\t%s\t%.2f\t\t%.2f\t%d\t%.2f\n",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\n",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("----------------[查询职工信息不存在]----------------\n",num); 338 }else339 {340 printf("-----------------------------------------------------------------------------\n");341 printf(" [职工信息如上] \n"); 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(" ----------------[菜单]--------------\n");359 printf(" |--------1:插入职工信息--------------|\n");360 printf(" |--------2:计算职工总工资------------|\n");361 printf(" |--------3:删除职工信息--------------|\n");362 printf(" |--------4:修改职工信息--------------|\n");363 printf(" |--------5:查看全部职工信息----------|\n");364 printf(" |--------6:查找[按编号|姓名]---------|\n");365 printf(" |--------0:退出----------------------|\n");366 printf(" ------------------------------------\n");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("\n");407 printf(" ------------------------------------\n");408 printf(" |--------1:继续操作------------------|\n");409 printf(" |--------0:退出----------------------|\n");410 printf(" ------------------------------------\n");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]

转载于:https://www.cnblogs.com/minmsy/p/5120403.html

你可能感兴趣的文章
VS快速生成JSON数据格式对应的实体
查看>>
Word2vec 模型载入(tensorflow)
查看>>
Linux内核——定时器和时间管理
查看>>
RabbitMq消息序列化简述
查看>>
git忽略文件【转】
查看>>
Web上的支持的图片格式以及它们之间的区别
查看>>
jQuery监听文本框值改变触发事件(propertychange)
查看>>
甲骨文Java Archive
查看>>
查看数据库错误日志的位置
查看>>
电信网络拓扑图自动布局
查看>>
C#中List〈string〉和string[]数组之间的相互转换
查看>>
洛谷P1108 低价购买[DP | LIS方案数]
查看>>
通达信里的统计函数及区块背景函数
查看>>
redis主从配置<转>
查看>>
8 行 Node.js 代码实现代理服务器
查看>>
水印,图片验证码
查看>>
C#编程(七十六)----------使用指针实现基于栈的高性能数组
查看>>
Android 类库
查看>>
vue和iview应用中的一些问题(持续更新)
查看>>
基于 Workman 实现Web扫描登录
查看>>