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
 13 {
 14     goods data[MAXSIZE];
 15     int len;
 16 }SeqList;
 17 
 18 /*录入货物信息*/
 19 void input(SeqList *L)
 20 {
 21     int i;
 22     printf("\n请输入货物的种数:");
 23     scanf("%d",&(L->len));
 24     printf("\n请输入货物的名称、代号、数量:\n");
 25     printf("例:aaa 100 100\n");
 26     printf("货物名称    货物代号    货物数量\n");
 27     for(i=1;i<=L->len;i++)
 28     {
 29         scanf("%s%s%d",L->data[i].name,L->data[i].no,&L->data[i].num);
 30     }
 31 }
 32 
 33 /*浏览货物清单*/
 34 void run_over(SeqList *L)
 35 {
 36     int i;
 37     printf("\n-----------货物清单-----------\n");
 38     printf("货物名称    货物代号    货物数量\n");
 39     for(i=1;i<=L->len;i++)
 40     {
 41         printf("%5s%5s%4d\n",L->data[i].name,L->data[i].no,L->data[i].num);
 42     }
 43     printf("--------------------------------\n");
 44 }
 45 
 46 /*查找货物*/
 47 int search(SeqList *L,goods x)
 48 {
 49     int i=1;
 50     while(i<=L->len&&(strcmp(L->data[i].no,x.no)!=0))
 51     {
 52         i++;
 53     }
 54     if(i>(L->len))
 55     {
 56         return 0;
 57     }
 58     else
 59     {
 60         return i;
 61     }
 62 }
 63 
 64 /*插入货物信息*/
 65 void insert(SeqList *L,goods x)
 66 {
 67     int i=1,j;
 68     while(i<=L->len&&(strcmp(L->data[i].no,x.no)<0))
 69     {
 70         i++;
 71     }
 72     if(L->len==MAXSIZE-1)
 73     {
 74         printf("仓库已满!");
 75     }
 76     else
 77     {
 78         for(j=L->len;j>=i;j--)
 79         {
 80             L->data[j+1]=L->data[j];
 81         }
 82         L->data[i]=x;
 83         L->len++;
 84     }
 85 }
 86 
 87 /*货物入库*/
 88 void storage(SeqList *L,goods x)
 89 {
 90     int k;
 91     k=search(L,x);
 92     if(k==0)
 93     {
 94         insert(L,x);
 95     }
 96     else
 97     {
 98         L->data[k].num=L->data[k].num+x.num;
 99     }
100 }
101 
102 /*删除货物信息*/
103 void del(SeqList *L,goods x)
104 {
105     int i,j;
106     i=search(L,x);
107     for(j=i+1;j<=(L->len);j++)
108     {
109         L->data[j-1]=L->data[j];
110     }
111     L->len--;
112 }
113 
114 /*货物出库*/
115 void out(SeqList *L,goods x)
116 {
117     int i,j;
118     i=search(L,x);
119     if(i==0)
120     {
121         printf("\n仓库中无此货物!\n");
122     }
123     else if(L->data[i].num>x.num)
124     {
125         L->data[i].num=L->data[i].num-x.num;
126     }
127     else if(L->data[i].num==x.num)
128     {
129         del(L,x);
130     }
131     else if(L->data[i].num<x.num)
132     {
133         printf("\n该货物数量不足,仅剩%d。是否购买\n",L->data[i].num);
134         printf("(购买请按1,不购买请按0。)\n");
135         printf("你的选择:");
136         scanf("%d",&j);
137         if(j==1)
138         {
139             del(L,x);
140             printf("\n购买成功!欢迎下次光临!\n");
141         }
142         else
143         {
144             printf("\n欢迎下次光临!\n");
145         }
146     }
147 }
148 
149 void menu()
150 {
151     printf("**********************************\n");
152     printf("*          货物管理系统          *\n");
153     printf("* 1-----------------录入货物信息 *\n");
154     printf("* 2-----------------浏览货物清单 *\n");
155     printf("* 3-----------------查找货物信息 *\n");
156     printf("* 4---------------------货物入库 *\n");
157     printf("* 5---------------------货物出库 *\n");
158     printf("* 0-------------------------退出 *\n");
159     printf("**********************************\n");
160 }
161 
162 int main()
163 {
164     goods x;
165     int sel,k;
166     SeqList *L;
167     L=(SeqList *)malloc(sizeof(SeqList));
168     L->len=0;
169     do
170     {
171         menu();
172         printf("请输入你的选择(例:1):\n");
173         scanf("%d",&sel);
174         switch(sel)
175         {
176             case 1:printf("\n你选择了录入货物信息!\n\n");
177                    input(L);
178                 break;
179             case 2:printf("\n你选择了浏览货物清单!\n\n");
180                    run_over(L);
181                 break;
182             case 3:printf("\n你选择了查找货物信息!\n\n");
183                    printf("\n请输入要查找的货物的代号:\n");
184                    printf("代号为:");
185                    scanf("%s",x.no);
186                    k=search(L,x);
187                    if(k==0)
188                    {
189                        printf("\n该货物不存在。\n");
190                    }
191                    else
192                    {
193                        printf("\n货物名称    货物代号    货物数量\n");
194                        printf("%5s%5s%4d\n",L->data[k].name,L->data[k].no,L->data[k].num);
195                    }
196                 break;
197             case 4:printf("\n你选择了货物入库!\n\n");
198                    printf("\n请输入要入库的货物的名称、代号、数量:\n");
199                    printf("货物名称    货物代号    货物数量\n");
200                    scanf("%s%s%d",x.name,x.no,&x.num);
201                    storage(L,x);
202                 break;
203             case 5:printf("\n你选择了货物出库!\n\n");
204                    printf("\n请输入要出库的货物的名称、代号、数量\n");
205                    printf("货物名称    货物代号    货物数量\n");
206                    scanf("%s%s%d",x.name,x.no,&x.num);
207                    out(L,x);
208                 break;
209         }
210     }while(sel!=0);
211     return 0;
212 }

 

posted on 2013-11-25 13:33  ↗℡.Koen↘  阅读(750)  评论(0编辑  收藏  举报