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. MySQL8.0降级安装5.7

    本文旨在自我学习使用,如有任何疑问请及时联系博主 前言 基于OpenHarmony的FA数字管家服务端 默认情况下,Ubuntu20.04安装MySQL的版本为8.0.但8.0更加严格的加密规则,使得 ...

  2. Using Beyond Compare with TFS

    In order to configure Visual Studio to use Beyond Compare for a compare operation choose the followi ...

  3. Linux kernel cfg80211_mgd_wext_giwessid缓冲区溢出漏洞

    受影响系统:Linux kernel <= 5.3.2描述:CVE(CAN) ID: CVE-2019-17133 Linux kernel是开源操作系统Linux所使用的内核. Linux k ...

  4. uoj86 mx的组合数 (lucas定理+数位dp+原根与指标+NTT)

    uoj86 mx的组合数 (lucas定理+数位dp+原根与指标+NTT) uoj 题目描述自己看去吧( 题解时间 首先看到 $ p $ 这么小还是质数,第一时间想到 $ lucas $ 定理. 注意 ...

  5. Apache Ranger安装部署

    1.概述 Apache Ranger提供了一个集中式的安全管理框架,用户可以通过操作Ranger Admin页面来配置各种策略,从而实现对Hadoop生成组件,比如HDFS.YARN.Hive.HBa ...

  6. KMP 算法中的 next 数组

    KMP 算法中对 next 数组的理解 next 数组的意义 此处 next[j] = k:则有 k 前面的浅蓝色区域和 j 前面的浅蓝色区域相同: next[j] 表示当位置 j 的字符串与主串不匹 ...

  7. springcloud断路器的作用?

    当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应) 断路器有完全打开状态:一段时间内 达到一定 ...

  8. 面试问题之计算机网络:OSI七层网络模型及相关协议

    一.应用层 功能:为应用程序提供服务并规定应用程序中通信相关的细节: 包括的协议如下: 1.超文本传输协议HTTP:这是一种基本的客户机/服务器的访问协议:浏览器向服务器发送请求,而服务器会应相应的网 ...

  9. switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

    答:在Java 5以前,switch(expr)中,expr只能是byte.short.char.int.从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始 ...

  10. IDEA 创建javaWeb以及Servlet

    1.新建项目 2.Web工程设置:点击项目名称,按F4 (1)配置sources:在WEB-INF下新建两个文件夹classes和lib (2)配置path:刚刚创建的classes文件夹路径 (3) ...