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. mysql保存emoji表情,utf8mb4保存不了表情的问题

    报错信息 : Incorrect string value: '\xF0\x9F\x99\x85\xE2\x80...' for column 'content' at row 1 mysql数据库的 ...

  2. libx264开发笔记(一):libx264介绍、海思平台移植编译

    前言   在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上.   相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...

  3. HTTP 错误 500.21 - Internal Server Error 解决方案【转】

    HTTP 错误 500.21 - Internal Server Error 解决方案:  今天在测试网站的时候,在浏览器中输入http://localhost/时,发生如下错误: HTTP Erro ...

  4. luoguP6620 [省选联考 2020 A 卷] 组合数问题(斯特林数)

    luoguP6620 [省选联考 2020 A 卷] 组合数问题(斯特林数) Luogu 题外话: LN切这题的人比切T1的多. 我都想到了组合意义乱搞也想到可能用斯特林数为啥还是没做出来... 我怕 ...

  5. CentOS6跟CentOS7的区别

    1.CentOS6在/etc/profile配置环境变量是JAVAHOME,CentOS7是{JAVA_HOME} 2.

  6. java继承:extends

    继承:extends 1.java只支持单继承,不支持多继承 2.java支持多层继承(继承体系) 3.子类不能继承父类所有非私有的成员(成员方法和成员变量) 4.子类不能继承父类的构造方法,但是可以 ...

  7. docker之间如何通讯的

    Docker 查看容器 IP 地址   查看Docker的底层信息. docker inspect 会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息 docker inspect ...

  8. 我们如何监视所有 Spring Boot 微服务?

    Spring Boot 提供监视器端点以监控各个微服务的度量.这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助.但是,使用监视器的一个主要缺点或困 ...

  9. Java 中的 ReadWriteLock 是什么?

    读写锁是用来提升并发程序性能的锁分离技术的成果.

  10. 使用 MyBatis 的 mapper 接口调用时有哪些要求?

    1.Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同: 2.Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 paramet ...