화물 관리 시스템 (데이터 구조 체인 테이블)

30197 단어 데이터 구조
  1 /*      (       )*/

  2 #include<string.h>

  3 #include<stdio.h>

  4 #include<stdlib.h>

  5 #define MAXSIZE 100

  6 typedef struct

  7 {

  8     char name[11],no[11];

  9     int num;

 10 }goods;

 11 

 12 typedef struct node

 13 {

 14     goods data;

 15     struct node *next;

 16 }LNode;

 17 

 18 /*      */

 19 void input(LNode *L)

 20 {

 21     int i,n;

 22     LNode *r=L,*s;

 23     goods x;

 24     printf("
:
"); 25 scanf("%d",&n); 26 printf("
、 、 :
"); 27 printf(" :aaa 100 100
"); 28 printf("
"); 29 for(i=1;i<=n;i++) 30 { 31 scanf("%s%s%d",x.name,x.no,&x.num); 32 s=(LNode*)malloc(sizeof(LNode)); 33 s->data=x; 34 s->next=NULL; 35 r->next=s; 36 r=s; 37 } 38 } 39 40 /* */ 41 void run_over(LNode *L) 42 { 43 LNode *p=L->next; 44 printf("
----------- -----------
"); 45 printf("
"); 46 while(p!=NULL) 47 { 48 printf("%5s%5s%4d
",p->data.name,p->data.no,p->data.num); 49 p=p->next; 50 } 51 printf("--------------------------------
"); 52 } 53 54 /* */ 55 LNode* search(LNode *L,goods x) 56 { 57 LNode *p=L->next; 58 while(p!=NULL&&(strcmp(p->data.no,x.no)<0)) 59 { 60 p=p->next; 61 } 62 if(p!=NULL&&(strcmp(p->data.no,x.no)==0)) 63 { 64 return p; 65 } 66 else 67 { 68 return NULL; 69 } 70 } 71 72 /* */ 73 void insert(LNode *L,goods x) 74 { 75 LNode *p=L,*s; 76 while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)<0)) 77 { 78 p=p->next; 79 } 80 s=(LNode*)malloc(sizeof(LNode)); 81 s->data=x; 82 s->next=p->next; 83 p->next=s; 84 } 85 86 /* */ 87 void storage(LNode *L,goods x) 88 { 89 LNode *p; 90 p=search(L,x); 91 if(p==NULL) 92 { 93 insert(L,x); 94 } 95 else 96 { 97 p->data.num=p->data.num+x.num; 98 } 99 } 100 101 /* */ 102 void del(LNode *L,goods x) 103 { 104 LNode *p=L,*s; 105 while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)<0)) 106 { 107 p=p->next; 108 } 109 while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)==0)) 110 { 111 s=p->next; 112 p->next=s->next; 113 free(s); 114 } 115 } 116 117 /* */ 118 void out(LNode *L,goods x) 119 { 120 int j; 121 LNode *p; 122 p=search(L,x); 123 if(p==NULL) 124 { 125 printf("

"); 126 } 127 else if(p->data.num>x.num) 128 { 129 p->data.num=p->data.num-x.num; 130 } 131 else if(p->data.num==x.num) 132 { 133 del(L,x); 134 } 135 else if(p->data.num<x.num) 136 { 137 printf("
, %d。
",p->data.num); 138 printf("( 1, 0。)
"); 139 printf(""); 140 scanf("%d",&j); 141 if(j==1) 142 { 143 del(L,x); 144 printf("
! !
"); 145 } 146 else 147 { 148 printf("

"); 149 } 150 } 151 } 152 153 void menu() 154 { 155 printf("**********************************
"); 156 printf("* *
"); 157 printf("* 1----------------- *
"); 158 printf("* 2----------------- *
"); 159 printf("* 3----------------- *
"); 160 printf("* 4--------------------- *
"); 161 printf("* 5--------------------- *
"); 162 printf("* 0------------------------- *
"); 163 printf("**********************************
"); 164 } 165 166 int main() 167 { 168 goods x; 169 int sel; 170 LNode *L,*p; 171 L=(LNode *)malloc(sizeof(LNode)); 172 do 173 { 174 menu(); 175 printf(" ( :1):
"); 176 scanf("%d",&sel); 177 switch(sel) 178 { 179 case 1:printf("
!

"); 180 input(L); 181 break; 182 case 2:printf("
!

"); 183 run_over(L); 184 break; 185 case 3:printf("
!

"); 186 printf("

"); 187 printf(""); 188 scanf("%s",x.no); 189 p=search(L,x); 190 if(p==NULL) 191 { 192 printf("

"); 193 } 194 else 195 { 196 printf("

"); 197 printf("%5s%5s%4d
",p->data.name,p->data.no,p->data.num); 198 } 199 break; 200 case 4:printf("
!

"); 201 printf("
、 、 :
"); 202 printf("
"); 203 scanf("%s%s%d",x.name,x.no,&x.num); 204 storage(L,x); 205 break; 206 case 5:printf("
!

"); 207 printf("
、 、
"); 208 printf("
"); 209 scanf("%s%s%d",x.name,x.no,&x.num); 210 out(L,x); 211 break; 212 } 213 }while(sel!=0); 214 printf(" , !
"); 215 return 0; 216 }

좋은 웹페이지 즐겨찾기