zoukankan      html  css  js  c++  java
  • 货物管理系统(数据结构链式表)

      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 }
  • 相关阅读:
    Eclipse 快捷键
    计算机网络之读Internet网发展史 读后感
    计算机网络之读Internet网发展史 读后感
    动态加载布局的技巧
    二、JSP的3个编译指令,7个动作指令,9个内置对象
    【杭电】[2050]折线分割平面
    【杭电】[2050]折线分割平面
    【杭电】[2068]RPG的错排
    【杭电】[2068]RPG的错排
    【杭电】[4500]小Q系列故事——屌丝的逆袭
  • 原文地址:https://www.cnblogs.com/xautlmx/p/3441354.html
Copyright © 2011-2022 走看看