• 货物管理系统(数据结构顺序表)


      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("
    请输入货物的种数:");
     23     scanf("%d",&(L->len));
     24     printf("
    请输入货物的名称、代号、数量:
    ");
     25     printf("例:aaa 100 100
    ");
     26     printf("货物名称    货物代号    货物数量
    ");
     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("
    -----------货物清单-----------
    ");
     38     printf("货物名称    货物代号    货物数量
    ");
     39     for(i=1;i<=L->len;i++)
     40     {
     41         printf("%5s%5s%4d
    ",L->data[i].name,L->data[i].no,L->data[i].num);
     42     }
     43     printf("--------------------------------
    ");
     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("
    仓库中无此货物!
    ");
    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("
    该货物数量不足,仅剩%d。是否购买
    ",L->data[i].num);
    134         printf("(购买请按1,不购买请按0。)
    ");
    135         printf("你的选择:");
    136         scanf("%d",&j);
    137         if(j==1)
    138         {
    139             del(L,x);
    140             printf("
    购买成功!欢迎下次光临!
    ");
    141         }
    142         else
    143         {
    144             printf("
    欢迎下次光临!
    ");
    145         }
    146     }
    147 }
    148 
    149 void menu()
    150 {
    151     printf("**********************************
    ");
    152     printf("*          货物管理系统          *
    ");
    153     printf("* 1-----------------录入货物信息 *
    ");
    154     printf("* 2-----------------浏览货物清单 *
    ");
    155     printf("* 3-----------------查找货物信息 *
    ");
    156     printf("* 4---------------------货物入库 *
    ");
    157     printf("* 5---------------------货物出库 *
    ");
    158     printf("* 0-------------------------退出 *
    ");
    159     printf("**********************************
    ");
    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):
    ");
    173         scanf("%d",&sel);
    174         switch(sel)
    175         {
    176             case 1:printf("
    你选择了录入货物信息!
    
    ");
    177                    input(L);
    178                 break;
    179             case 2:printf("
    你选择了浏览货物清单!
    
    ");
    180                    run_over(L);
    181                 break;
    182             case 3:printf("
    你选择了查找货物信息!
    
    ");
    183                    printf("
    请输入要查找的货物的代号:
    ");
    184                    printf("代号为:");
    185                    scanf("%s",x.no);
    186                    k=search(L,x);
    187                    if(k==0)
    188                    {
    189                        printf("
    该货物不存在。
    ");
    190                    }
    191                    else
    192                    {
    193                        printf("
    货物名称    货物代号    货物数量
    ");
    194                        printf("%5s%5s%4d
    ",L->data[k].name,L->data[k].no,L->data[k].num);
    195                    }
    196                 break;
    197             case 4:printf("
    你选择了货物入库!
    
    ");
    198                    printf("
    请输入要入库的货物的名称、代号、数量:
    ");
    199                    printf("货物名称    货物代号    货物数量
    ");
    200                    scanf("%s%s%d",x.name,x.no,&x.num);
    201                    storage(L,x);
    202                 break;
    203             case 5:printf("
    你选择了货物出库!
    
    ");
    204                    printf("
    请输入要出库的货物的名称、代号、数量
    ");
    205                    printf("货物名称    货物代号    货物数量
    ");
    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 }
  • 相关阅读:
    asp.net中获取网站根目录和物理路径的方法
    解决Windows 程序界面闪烁问题的一些经验
    winform中怎样使DataGridView的某一列可以添加两个Button控件
    Asp.net中实现多语言的Page的扩展的基类
    c#自杀程序的关键方法
    30岁前成功的12条黄金法则
    分享一个收集到的文件和目录操作类FileSystemObject
    有时候我们需要搜索指定栏目下的文章,如何实现呢?
    安静删除服务器超级多的文件,有的文件夹文件过多而不方便删除
    SQLServer2005数据库备份与还原
  • 原文地址:https://www.cnblogs.com/xautlmx/p/3441353.html
Copyright © 2020-2023  润新知