博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
货物管理系统(数据结构链式表)
阅读量:7045 次
发布时间:2019-06-28

本文共 5298 字,大约阅读时间需要 17 分钟。

1 /*货物管理系统(数据结构链式表)*/  2 #include
3 #include
4 #include
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("\n请输入货物的种数:"); 25 scanf("%d",&n); 26 printf("\n请输入货物的名称、代号、数量:\n"); 27 printf("例:aaa 100 100\n"); 28 printf("货物名称 货物代号 货物数量\n"); 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("\n-----------货物清单-----------\n"); 45 printf("货物名称 货物代号 货物数量\n"); 46 while(p!=NULL) 47 { 48 printf("%5s%5s%4d\n",p->data.name,p->data.no,p->data.num); 49 p=p->next; 50 } 51 printf("--------------------------------\n"); 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("\n仓库中无此货物!\n");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
data.num);138 printf("(购买请按1,不购买请按0。)\n");139 printf("你的选择:");140 scanf("%d",&j);141 if(j==1)142 {143 del(L,x);144 printf("\n购买成功!欢迎下次光临!\n");145 }146 else147 {148 printf("\n欢迎下次光临!\n");149 }150 }151 }152 153 void menu()154 {155 printf("**********************************\n");156 printf("* 货物管理系统 *\n");157 printf("* 1-----------------录入货物信息 *\n");158 printf("* 2-----------------浏览货物清单 *\n");159 printf("* 3-----------------查找货物信息 *\n");160 printf("* 4---------------------货物入库 *\n");161 printf("* 5---------------------货物出库 *\n");162 printf("* 0-------------------------退出 *\n");163 printf("**********************************\n");164 }165 166 int main()167 {168 goods x;169 int sel;170 LNode *L,*p;171 L=(LNode *)malloc(sizeof(LNode));172 do173 {174 menu();175 printf("请输入你的选择(例:1):\n");176 scanf("%d",&sel);177 switch(sel)178 {179 case 1:printf("\n你选择了录入货物信息!\n\n");180 input(L);181 break;182 case 2:printf("\n你选择了浏览货物清单!\n\n");183 run_over(L);184 break;185 case 3:printf("\n你选择了查找货物信息!\n\n");186 printf("\n请输入要查找的货物的代号:\n");187 printf("代号为:");188 scanf("%s",x.no);189 p=search(L,x);190 if(p==NULL)191 {192 printf("\n该货物不存在。\n");193 }194 else195 {196 printf("\n货物名称 货物代号 货物数量\n");197 printf("%5s%5s%4d\n",p->data.name,p->data.no,p->data.num);198 }199 break;200 case 4:printf("\n你选择了货物入库!\n\n");201 printf("\n请输入要入库的货物的名称、代号、数量:\n");202 printf("货物名称 货物代号 货物数量\n");203 scanf("%s%s%d",x.name,x.no,&x.num);204 storage(L,x);205 break;206 case 5:printf("\n你选择了货物出库!\n\n");207 printf("\n请输入要出库的货物的名称、代号、数量\n");208 printf("货物名称 货物代号 货物数量\n");209 scanf("%s%s%d",x.name,x.no,&x.num);210 out(L,x);211 break;212 }213 }while(sel!=0);214 printf("感谢您的使用,再见!\n");215 return 0;216 }

 

转载于:https://www.cnblogs.com/xautlmx/p/3441354.html

你可能感兴趣的文章
找到当前mysql group replication 环境的primary结点
查看>>
正确的C++/C堆栈
查看>>
使用Swagger生成Spring Boot REST客户端(支持Feign)(待实践)
查看>>
solr6.6 配置拼音分词
查看>>
datatables参数配置详解
查看>>
Composer 结合 Git 创建 “服务类库”
查看>>
Redis线程模型
查看>>
修改firefox/chrome浏览器的UserAgent
查看>>
sql 基础练习 计算7天各个时间点的总和 group by order mysql一次查询多个表
查看>>
MySQL高级-索引优化
查看>>
SQL中Group By的使用
查看>>
RateLimiter 限流
查看>>
资深设计师Tony Ventrice解析手机游戏开发的四个层次
查看>>
Swift入门篇-结构体
查看>>
Using the Eclipse Jobs-API(转载)
查看>>
GCC编译过程
查看>>
AE intersect、clip的实现
查看>>
图解使用Win8Api进行Metro风格的程序开发一----建立我们的导航架构
查看>>
iOS开发过程中使用Core Data应避免的十个错误
查看>>
I.MX6 wpa_cli 使用
查看>>