commit d1c9c629bc03b5ea7ab7da4b90ace1d898ff5948 Author: 1836015489@qq.com <1836015489@qq.com> Date: Wed Jan 9 21:17:40 2019 +0800 first commit diff --git a/chenggong.cpp b/chenggong.cpp new file mode 100644 index 0000000..7815c0e --- /dev/null +++ b/chenggong.cpp @@ -0,0 +1,197 @@ +#include +#include + +struct work_info +{ + int num; + int work; + int ranking; + struct work_info *next; +}; +int length; +typedef struct work_info worker; + +worker *create_w_Doc(); +void print_w_Doc(worker *head); +void input_w_Doc(worker *head); +void delect_w_Doc(worker *head); +void fun1_w_Doc(worker *head); +void stor_w_Doc(worker *head); +void fun_w_Doc(worker *head); + +int main() +{ + worker *head; + head=create_w_Doc(); + input_w_Doc(head); + delect_w_Doc(head); + fun1_w_Doc(head); + fun_w_Doc(head); + stor_w_Doc(head); + print_w_Doc(head); + return 0; +} + +worker *create_w_Doc() +{ + printf(" *************************** \n "); + printf(" * 职工工作量统计 * \n "); + worker *head,*p1,*p2; + length=0; + int num,work; + head=p1=(worker*)malloc(sizeof(worker)); + printf("请输入工号、工作量:\n\n"); + scanf("%d%d",&num,&work); + while(num!=0) + { + p2=(worker*)malloc(sizeof(worker)); + p2->num=num; + p2->work=work; + p1->next=p2; + p1=p2; + length++; + scanf("%d%d",&num,&work); + } + printf("输入成功!\n\n"); + return head; +} + +void input_w_Doc(worker *head) +{ + worker *p1,*p2; + int n,i; + p1=head; + printf("请输入你需要加入的位置:"); + scanf("%d",&n); + if(n>length) + { + printf("输入错误!\n"); + return; + } + else + { + printf("输入职工工号、工作量:\n"); + p2=(worker*)malloc(sizeof(worker)); + scanf("%d%d",&p2->num,&p2->work); + p1=head; + while(p1!=NULL) + { + if(p1->num==p2->num) + { + printf("输入不正确,请重新输入:"); + scanf("%d%d",&p2->num,&p2->work); + } + p1=p1->next; + } + p1=head; + for(i=0;inext; + } + p2->next=p1->next; + p1->next=p2; + length++; + printf("插入成功!\n\n"); + return; + } +} + +void delect_w_Doc(worker *head) +{ + worker *p1,*p2; + int num; + p1=head->next; + p2=head; + printf("请输入需要删除的工号:"); + scanf("%d",&num); + while(p1!=NULL) + { + if(p1->num==num) + { + p2->next=p1->next; + free(p1); + length--; + printf("删除成功!\n\n"); + return; + } + p1=p1->next; + p2=p2->next; + } + printf("输入错误!\n\n"); +} +void fun1_w_Doc(worker *head) +{ + worker *p1; + int num, work; + p1=head; + printf("请输入你需要累加的工号:"); + scanf("%d",&num); + p1=head; + do + { + if(p1->num==num) + { + printf("请输入你需要累加的工作量:"); + scanf("%d",&work); + p1->work+=work; + return; + } + p1=p1->next; + }while(p1!=NULL); + +} + +void fun_w_Doc(worker *head) +{ + worker *p1,*p2; + p1=head; + p2=head->next; + for(p1=head;p1!=NULL;p1=p1->next) + { + for(p2=p1->next;p2!=NULL;p2=p2->next) + { + if(p1->workwork) + { + p1->next=p2->next; + p2->next=p1; + p2=p1; + } + } + } + return; +} + +void stor_w_Doc(worker *head) +{ + worker *p1,*p2; + int n; + p1=head->next; + int i; + i=1; + while(p1!=NULL) + { + p1->ranking=i; + p1=p1->next; + i++; + } + return; +} + +void print_w_Doc(worker *head) +{ + worker *p; + if(p=NULL) + { + printf("无记录!"); + return; + } + printf("记录为:\n\n"); + printf("工号 工作量 名次\n"); + p=head->next; + do + { + printf("%d %d %d\n",p->num,p->work,p->ranking); + p=p->next; + }while(p!=NULL); +} +