1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 //定义一个商品结构体
6 typedef struct sp
7 {
8 char no[12]; //商品编号
9 char name[40]; //名称
10 int workload; //库存量
11 struct sp *next; //指向下一节点的指针
12 } SP;
13
14 //函数声明放在这里
15 void ListCreate(SP *L, int n); //创建商品链表节点
16 void LIstSearch(SP *L); //查找商品信息
17 void ListModify(SP *L); //修改商品信息
18 void ListInsert(SP *L); //插入商品信息
19 void ListDelete(SP *L); //删除商品信息
20 void Input(SP *p, int i); //输入商品信息
21 void SumSp(SP *L); //统计商品的库存总量
22 void Sort(SP *L); //对每类商品的库存量进行排名
23 void Menu(); //考试报名管理系统的菜单
24
25 //商品库存管理系统的主函数入口
26 int main()
27 {
28 int item, n; //item用于接收输入的命令,n用于接收输入的商品人数
29 SP *L = NULL; //初始化一个头节点
30 L = (SP *)malloc(sizeof(SP)); //为头节点开辟内存空间
31 L->next = NULL; //将头节点的指针域置空
32 do
33 {
34 Menu(); //菜单
35 printf("请输入相应的数字,进行相应的操作:\n");
36 scanf("%d", &item);
37 system("cls");
38 switch (item)
39 {
40 case 1:
41 printf("请输入您要录入的商品数目:");
42 scanf("%d", &n);
43 ListCreate(L, n);
44 getchar();
45 printf("\n请按任意键返回主菜单\n");
46 getchar();
47 system("cls");
48 break;
49 case 2:
50 LIstSearch(L); //查找商品信息
51 getchar();
52 printf("\n请按任意键返回主菜单\n");
53 getchar();
54 system("cls");
55 break;
56 case 3:
57 ListModify(L); //修改商品库存信息
58 getchar();
59 printf("\n请按任意键返回主菜单\n");
60 getchar();
61 system("cls");
62 break;
63 case 4:
64 ListDelete(L); //删除商品信息
65 getchar();
66 printf("\n请按任意键返回主菜单\n");
67 getchar();
68 system("cls");
69 break;
70 case 5:
71 ListInsert(L); //插入商品信息
72 getchar();
73 printf("\n请按任意键返回主菜单\n");
74 getchar();
75 system("cls");
76 break;
77 case 6:
78 SumSp(L);
79 getchar();
80 printf("\n请按任意键返回主菜单\n");
81 getchar();
82 system("cls");
83 break;
84 case 7:
85 Sort(L);
86 getchar();
87 printf("\n请按任意键返回主菜单\n");
88 getchar();
89 system("cls");
90 break;
91 case 0: //退出商品库存管理系统
92 printf("即将退出商品库存管理系统.....");
93 exit(0);
94 default:
95 printf("您输入的指令不正确,请重新输入");
96 }
97 printf("\n\n");
98 } while (item);
99 return 0;
100 }
101
102 //创建链表,将新生成的节点插入到链表的表头
103 void ListCreate(SP *L, int n)
104 {
105 int i;
106 for (i = 0; i < n; i++)
107 {
108 SP *p;
109 //将新生成的节点插入到链表中
110 p = NULL;
111 p = (SP *)malloc(sizeof(SP));
112 Input(p, i);
113 p->next = L->next;
114 L->next = p;
115 }
116 printf("录入成功!");
117 }
118
119 //查找商品库存量
120 void LIstSearch(SP *L)
121 {
122 char n[40];
123 SP *p = L->next;
124 if (p == NULL)
125 printf("数据为空,无法查找!");
126 else
127 {
128 printf("请输入您要查找的商品名称:");
129 scanf("%s", n);
130 while (strcmp(p->name, n) != 0)
131 {
132 p = p->next;
133 if (p == NULL)
134 {
135 printf("没有找到相关信息\n");
136 return;
137 }
138 }
139 printf("%s的库存量为%d\n",p->name,p->workload);
140 }
141 }
142
143 //修改商品的库存量
144 void ListModify(SP *L)
145 {
146 int a;
147 char nam[40];
148 SP *p = L->next;
149 if (p == NULL)
150 printf("数据为空,无法修改!");
151 else
152 {
153 printf("请输入您修改的商品名称:");
154 scanf("%s",nam);
155 while(strcmp(p->name, nam) != 0)
156 {
157 p = p->next;
158 if (p == NULL)
159 {
160 printf("没有找到相关信息\n");
161 return;
162 }
163 }
164 printf("请输入您修改后的库存量:");
165 scanf("%d",&p->workload);
166 printf("修改成功");
167 }
168 }
169
170 //删除商品信息
171 void ListDelete(SP *L)
172 {
173 char n[40];
174 SP *p = L->next, *pre = L; //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点
175 if (p == NULL)
176 printf("数据为空,无法删除!");
177 else
178 {
179 printf("请输入您要删除的商品名称:");
180 scanf("%s", n);
181 while (strcmp(p->name, n) != 0)
182 {
183 pre = p;
184 p = pre->next;
185 if (p == NULL)
186 {
187 printf("没有找到相关信息,无法删除\n");
188 return;
189 }
190 }
191 pre->next = p->next;
192 free(p);
193 printf("删除成功");
194 }
195 }
196
197 //插入商品库存的相关信息
198 void ListInsert(SP *L)
199 {
200 SP *s = NULL; //生成一个新节点s
201 s = (SP *)malloc(sizeof(SP));
202 printf("请输入商品的商品编号:");
203 scanf("%s", s->no);
204 printf("请输入商品的名称:");
205 scanf("%s", s->name);
206 printf("请输入商品的库存量:");
207 scanf("%d", &s->workload);
208 s->next = L->next;
209 L->next = s;
210 printf("插入成功!");
211 }
212
213 //统计商品的库存总量
214 void SumSp(SP *L)
215 {
216 int sum=0;
217 SP *p=L->next;
218 while(p!=NULL)
219 {
220 sum+=p->workload;
221 p=p->next;
222 }
223 printf("商品的库存总量为%d\n",sum);
224 }
225
226 //对每类商品的库存量进行排名
227 void Sort(SP *L)
228 {
229 SP *p,*q,*tail,*l;
230 tail=NULL;
231 while((L->next->next) != tail)
232 {
233 p = L;
234 q = L->next;
235 while(q->next != tail)
236 {
237 if((q->workload) > (q->next->workload))
238 {
239 p->next = q->next;
240 q->next = q->next->next;
241 p->next->next = q;
242 q = p->next;
243 }
244 q = q->next;
245 p = p->next;
246 }
247 tail = q;
248 }
249 printf("商品库存量从小到大结果如下:\n");
250 l=L->next;
251 while(l!=NULL)
252 {
253 if(l->next!=NULL)
254 {
255 printf("%s(%d)->",l->name,l->workload);
256 l=l->next;
257 }
258 else
259 {
260 printf("%s(%d)",l->name,l->workload);
261 l=l->next;
262 }
263 }
264 }
265 //输入商品库存的相关信息
266 void Input(SP *p, int i)
267 {
268 printf("请输入第%d个商品的商品编号:", i + 1);
269 scanf("%s", p->no);
270 printf("请输入第%d个商品的名称:", i + 1);
271 scanf("%s", p->name);
272 printf("请输入第%d个商品的库存量:", i + 1);
273 scanf("%d", &p->workload);
274 }
275
276 //商品库存管理系统的菜单
277 void Menu()
278 {
279 printf("\n\n");
280 printf("\t\t\t===================商品库存管理系统======================\n");
281 printf("\t\t\t* 作者:XXX 班级:XXXXXXXXXXX 学号:XXXXXXXXXX *\n");
282 printf("\t\t\t* *\n");
283 printf("\t\t\t* 1>. 录入商品库存信息 *\n");
284 printf("\t\t\t* 2>. 查找某个商品的库存量 *\n");
285 printf("\t\t\t* 3>. 修改某个商品的库存量 *\n");
286 printf("\t\t\t* 4>. 删除某个商品库存相关信息 *\n");
287 printf("\t\t\t* 5>. 插入某个商品的相关信息 *\n");
288 printf("\t\t\t* 6>. 统计商品的库存总量 *\n");
289 printf("\t\t\t* 7>. 对每类商品的库存量排名 *\n");
290 printf("\t\t\t* 0>. 退出管理系统 *\n");
291 printf("\t\t\t* 欢迎使用本系统!*\n");
292 printf("\t\t\t========================================================\n");
293 printf("\t\t\t输入选项,按回车进入选项: \n");
294 }

库存管理系统实现 C语言课设的更多相关文章

  1. C语言课设——电影院选票系统

    C语言课设--电影院选票系统 1.课题介绍 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户 1.电影 ...

  2. C语言课设心得分享(一)

    今儿上完课设,老师果然讲的比较少,周四还不用去,看来还是学生自己折腾.我在做课设的过程中,攒了一些心得/体会,希望能和大家分享分享,也希望能一起探讨探讨.如果是我能回答的问题,我很乐意能够提供帮助. ...

  3. 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。

    快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC.EntityFrameWork.T4模板技术. 产品界面如下图所示: 源码结构: 开放全部源码,如有需要请联系,QQ:1107141 ...

  4. JAVA课设个人博客--多源数据教学管理系统

    JAVA课设个人博客--多源数据教学管理系统 1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2. 个人负责模块或任务说明 主要模块 ...

  5. C语课设心得分享(二)

    咱们今儿说说IDE的事儿. IDE是「集成开发环境」的意思,比如咱们常用的VC6.0,就是开发C语言所用的IDE的一种.对于IDE的认识,可能有些朋友有点儿模糊,咱们捋一捋,我也会给出一些IDE方面的 ...

  6. C语课设心得分享(三)

    调试. 以前咱们写课后习题,一般也不需要使用调试,如果程序编译error,根据错误信息就可以改好:如果是结果错误,那么在稿纸上过几遍基本也可以得出结果. 但咱们这个课设比较大,就需要很多调试的过程,尤 ...

  7. 将C语课设传到了Github和Code上 2015-91-18

    一直听说Git好使,以前捣鼓过没弄成,现在考完试了终于可以静下心来研究研究. 哎,我要是当时做课设的时候就用Git,也能省下不少事呢. 使用的Git教程,刚看个开头: 廖雪峰的Git教程 http:/ ...

  8. 计算机网络课设之基于UDP协议的简易聊天机器人

    前言:2017年6月份计算机网络的课设任务,在同学的帮助和自学下基本搞懂了,基于UDP协议的基本聊天的实现方法.实现起来很简单,原理也很简单,主要是由于老师必须要求使用C语言来写,所以特别麻烦,而且C ...

  9. 我们为之奋斗过的C#之---简单的库存管理系统

    今天非常开心,因为今天终于要给大家分享一个库存管理项目了. 我个人感觉在做项目之前一定先要把逻辑思路理清,不要拿到项目就噼里啪啦的一直敲下去这样是一不好的习惯,等你做大项目的时候,你就不会去养成一种做 ...

随机推荐

  1. php pdf添加水印(中文水印,图片水印)

    1.下载软件包 链接:https://pan.baidu.com/s/1cah-mf-SCtfMhVyst_sG8w&shfl=sharepset 提取码:ld8z 2.下载pdf_water ...

  2. tensorflow源码解析之common_runtime拾遗

    把common_runtime中剩余的内容,按照文件名排序进行了简单的解析,时间原因写的很仓促,算是占个坑,后续有了新的理解再来补充. allocator_retry 有时候内存分配不可能一次完成,为 ...

  3. Windows下搭建REDIS集群

    Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...

  4. Golang 基础之基础语法梳理 (一)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第一章节 Golang 基础之基础语法梳理 (一) Gol ...

  5. ARM中断与架构知识 精简知识点

    目录 一.ARM系统的异常与中断 二.CPU模式与寄存器 1.ARM CPU模式 2.ARM CPU state,两种指令集 3.ARM CPU寄存器: 引申介绍一下存储空间中的数据存放 4.ARM三 ...

  6. 通过DP总线实现S7-300/400与SINAMICS S120 通讯

    一.DP总线通讯功能概述 S7-300/400与SINAMICS S120 之间通过DP总线可进行周期性及非周期性数据通讯. 使用标准S7功能块SFC14/SFC15,S7-300/400PLC通过P ...

  7. bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp)

    bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp) bzoj Luogu 你要用ATGC四个字母用两种操作拼出给定的串: 1.将其中一个字符 ...

  8. 使用git clone 报错curl56 errno 10054解决方法

    使用git clone 报错curl56 errno 10054解决方法 ----------------版权声明:本文为CSDN博主「伽马射线爆」的原创文章,遵循CC 4.0 BY-SA版权协议,转 ...

  9. jQuery--筛选【查找函数】

    查找函数介绍 <A> <B> <C></C> <D></D> <E></E> <F>< ...

  10. MySQL安装速成指南(ZIP)

    MySQL初始化数据库 第一步:将MySQL ZIP压缩包进行解压 第二部:在MySQL主目录创建my.ini文件,并添加以下内容 [client] port=3306 socket=/tmp/mys ...