C语言库存管理系统.doc
. .XX商品航天大学北方科技学院 课 程 设 计 任 务 书课程设计题目库存管理程序设计 教 研 室 计算机教研室 专业 班级 学号课程设计时间:年月日至年月日课程设计的内容及要求:主要内容设计一个程序管理库存商品,主要实现的功能如下:1、 添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等;2、 进货或售出商品后,相应的库存商品数量应该有所改变;3、 当某种商品库存少于一定数量时,应该提醒进货;4、 可以按商品名称模糊查询商品信息。根本要求1、 系统采用C程序设计语言实现;2、 独立完成系统的设计、编码和调试,通过指导教师当场验收;3、 交出完整的课程设计报告。指导教师 史 俊 年月日XX商品航天大学北方科技学院 课 程 设 计 成 绩 评 定 单课 程 名 称C语言综合训练课程设计题目库存管理程序设计 专业 班级 学号 辩论日期年月日指导教师辩论组评语:课程设计成绩指导教师辩论组签字 年月日库存管理程序设计目录摘 要21绪论22. 系统分析32.1 功能需求32.2数据需求32.3 性能需求33. 总体设计33.1功能模块设计33.2系统设计方案44. 详细设计54.1商品信息管理模块54.2商品查询管理模块95. 调试与测试105.1 调试105.2 测试106. 结论11完毕语11参考文献11附录1用户手册12附录2源程序14. .word. .摘 要库存管理系统是厂家、商城、商场等的管理商品信息不可缺少的局部,利用这个系统,可以更好地管理商品的信息。本系统使用C语言开发,实现商品信息库的新建,查询商品信息,修改商品信息,可对商品的出售进货有数量的变化,当数量缺乏时做提醒。本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进展了总结。关键词:库存;商品信息;数量变化;1绪论随着时代的进步,社会的开展,人们的生活水平逐渐提高,平时购物的种类越来越多,商场出售商品的种类也越来越多,各种商品的库存量在每天的销售与进货过程中会发生不断的变化,管理起来也越来越繁琐。发库存管理系统,可使管理商品信息变得更加简单,节省人力物力,降低本钱。库存管理系统,能实现商场对商品的添加,查询,修改,删除等功能,对商品的数量进展管理,满足商场的需求。随着社会的开展,社会生活水平不断提高,外出出行的人们也越来越多,伴随而来的是民航部门对商品管理和订票业务更加繁重的问题。开发商品售票管理系统,使得国家民航部门对出行人员的信息和商品的管理问题得到了改善。商品售票管理程序,能实现民航部门对商品信息的添加、查找、修改和删除等功能,方便了民航部门的管理,满足了民航部门的需求。根据课程设计任务书要求,本系统开发主要完成以下功能和性能。1、 添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等;2、 进货或售出商品后,相应的库存商品数量应该有所改变;3、 当某种商品库存少于一定数量时,应该提醒进货;4、 可以按商品名称模糊查询商品信息2. 系统分析2.1 功能需求本系统主要是库存商品进展管理的系统。该系统需要有添加,删除商品信息,查询商品信息,货少提醒等。2.2数据需求需要管理的商品信息包括:商品号、商品名称、商品类别、数量和产地。2.3 性能需求平安性:本系统在设计,开发,运行各环节,都贯彻了平安性的原那么。可靠性:遵循平安性原理,来提高本系统的可靠性。稳定性:本系统根据需要可以定义全局变量,可以使用构造体以及链表,来确保本系统的稳定性。响应速度;本系统因应用了链表,理论上可以提高查找的速度,整体的响应速度也会得到了提升。3. 总体设计3.1功能模块设计根据分析整个系统主要划分为4个模块,分别执行对于功能。商品信息管理实现商品编号、名称、类别、数量、产地等的查询、添加、修改、删除等功能。出售和进货管理可对商品在商品有数量变化时,对应变化,当商品数量少于一定数量时,提醒数量不够。功能模块图如图1所示。图1功能模块图(1)商品信息管理子模块该模块是对商品编号、名称、类别、数量、产地等信息的增加、删除和修改。(2)出售进货管理子模块该模块是对商品的出售进货时,数量的随之变化,当数量少于一定数值时,提醒数量缺乏。3.2系统设计方案(1) 数据构造设计typedef struct per char id10, 定义编号 name10, 定义商品名称 leibie10, 定义商品类别 chandi10;定义商品产地int num;定义商品数量struct per *next; per;(2) 菜单设计本系统中的菜单有以下几种:。 1. 一级菜单:即主菜单。其中包括:1.新建;2.查询;3.修删;4.售出或进货;5.退出。2.二级菜单a:新建菜单:包括:1、新建信息库;2、添加商品;3、返回。b:查询菜单:包括:1、查看信息库;2、查找商品号;3、返回。c:修删菜单:包括:1、修改商品信息;2、删除商品信息;3返回。d:售出或进货菜单:包括1、售出;2、进货;3、返回。(3) 函数设计void menu(); 主菜单void xinjian_menu(); 新建菜单void chaozhao_menu(); 查找菜单void xiugai_menu(); 修删菜单per *cj(); 新建信息库void print(per *head); 输出商品信息 void chazhao(per * head); 查找商品信息per *sc(per *head); 删除商品信息 per *charu(per *head); 添加商品信息 per *xiugai(per *head); 修改商品信息per *dp(per *head); 售出或进货4. 详细设计4.1商品信息管理模块(1)添加商品模块先建立商品信息,定义整型变量i和n以及指针变量p1和p2,在开辟新的结点,使结点为空,输入商品编号,执行n+,当p1->number不为0时,继续往下输入商品信息否那么p2->next=p1。继续执行p2=p1,p2->next=null。返回后可继续此输入,可循环重复,否那么回到主函数。具体实现程序流程如图2。图2 商品信息添加流程图(2) 删除商品模块定义整型变量i,指针变量p1和p2,输入商品号i,判断是否有此商品(i, p1->id) != 0 && p1->next != NULL),如果有,将p2 = p1;p1 = p1->next,在匹配与输入一样的商品,使(i, p1->id) = 0,那么删除成功回到主函数。具体实现程序流程如图3图3 商品信息删除流程图(3) 修改商品模块定义字符型变量na、整型变量na1、指针变量p1,使p1=head,如果!Head那么信息库为空,否那么输入要修改的商品,如果!P1那么商品不存在,否那么进入后不修改,按-返回,否那么继续输入商品信息然后可按-号完毕,返回目录。具体实现程序流程如图4图4 商品信息修改流程图4.2商品查询管理模块建立输出函数,定义指针p,p1,p1=head。当head等于空,输出“该信息库为空!,返回主函数。当head不等于空,输出信息库信息,再判断p->num<3,如果是那么输出“数量太少请进货返回主函数。具体实现程序流程如图3。图5商品查询流程图5. 调试与测试5.1 调试调试是系统开发的一个重要的步骤。调试可分为2个步骤,先是运行编写好程序找到问题,然后再解决并改正问题。本系统在调试时,发现在判断商品数量提醒时,有时出现错误,在反复查找后发现,在前面没有判断该商品是否存在,在改正后,程序正确运行。5.2 测试系统测试是系统开发的一个重要阶段,是系统保证质量的关键。如果在测试中不认真检查,在后期维护过程中将会非常麻烦。本系统测试数据过程如下。先进入运行程序输入“1,进入新建菜单,再输入“1进入新建信息库。请输入用第个1商品信息:商品号:1商品名称:三星商品类别:电子产品数量:2产地:是否继续输入:(1)是 (2)否输入“2。返回到主函数。 输入“2,进入查看菜单。再输入“1,进入查看信息库,屏幕输出 1 三星电子产品2 1XX数量太少请进货返回到主菜单。输入“4,进入售出或进货菜单。输入“2,按提示输入商品号“1,按提示依次输入数量:5屏幕输出进货成功!返回到主菜单。输入“2,进入查看菜单。再输入“1,进入查看信息库,屏幕输出 1 三星电子产品2 1XX返回到主菜单。输入“5,进入退出程序。屏幕输出 BYE BYE!退出程序。屡次运行程序后,发现各个菜单功能都可执行,在输入错误商品号时,给出该商品不存在的提示,因此,该程序无错误可正确执行。6. 结论本次课程设计,根据任务书要求,实现了添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等,进货或售出商品后,相应的库存商品数量应该有所改变,当某种商品库存少于一定数量时,应该提醒进货,可以按商品名称查询商品信息,可满足商场对系统的需求。但有局部功能还不太完善,如只可新建一次信息库,再次创立时,会将上个信息库覆盖,且不能保存数据。完毕语通过这次的课程设计实验,让我了解了我的一些方面的缺乏,也提高了我的学习能力,在通过查找资料来完成实验时,使我的知识更加的丰富,培养了我的学习兴趣。今后我要更加努力来学习。参考文献1 严蔚敏,X伟国.数据构造(C语言版).:清华大学,2002.9 2潭浩强.C语言程序设计第三版.:清华大学,2005附录1用户手册(1) 首先翻开程序,初始页面,如图6。图6 登录界面输入“1进入新建菜单,如图7。图7 新建页面主界面中输入“2进入查询界面,如图8图8 查询页面主界面中输入“3进入订票页面,如图9图9 修改或删除页面主界面中输入“4进入订票页面,如图10图10 进货或出售页面附录2源程序主要模块源代码清单:#include <stdio.h>#include <string.h>#include <malloc.h>#define LEN sizeof(struct per)#define PRESS_ANYKEY P("请输入任意键继续");getchar();getchar();#define P printftypedef struct perchar id10, name10, leibie10, chandi10;int num;struct per *next; per;void menu();void xinjian_menu();void chaozhao_menu();void xiugai_menu();void shou_menu();void print(per *head);void chazhao(per * head);per *dp(per *head);per *cj();per *sc(per *head);per *charu(per *head);per *xiugai(per *head);void menu()P("tt*n");P("tt* 库存信息管理系统 *n");P("tt* 1、新建 *n");P("tt* 2、查询 *n");P("tt* 3、修删 *n");P("tt* 4、售出或进货 *n");P("tt* 5、退出 *n");P("tt*n");void xinjian_menu()P("tt<<<<<<<<<<<<<<新建>>>>>>>>>>>>>>>n");P("tt 1、新建信息库 n");P("tt 2、添加商品 n");P("tt 3、返回 n");P("tt<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>n");void chazhao_menu()P("tt<<<<<<<<<<<<<<查看>>>>>>>>>>>>>>>n");P("tt 1、查看信息库 n");P("tt 2、查找商品号 n");P("tt 3、返回 n");P("tt<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>n");void xiugai_menu()P("tt<<<<<<<<<<<<修改或删除>>>>>>>>>>>>n");P("tt 1、修改商品信息 n");P("tt 2、删除商品信息 n");P("tt 3、返回 n");P("tt<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>n");void shou_menu()P("tt<<<<<<<<<<<<进货或出售>>>>>>>>>>>>n");P("tt 1、出售 n");P("tt 2、进货 n");P("tt 3、返回 n");P("tt<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>n");void main()per *head = NULL;per *link = head;register int i;domenu();P("请输入序号:");scanf("%d", &i);switch (i)case 1:xinjian_menu();P("请输入序号:");scanf("%d", &i);switch (i)case 1:link = cj();continue;case 2:link = charu(link);print(link); PRESS_ANYKEYcontinue;case 3:break;continue;case 2:chazhao_menu();P("请输入序号:");scanf("%d", &i);switch (i)case 1:print(link);PRESS_ANYKEYcontinue;case 2:chazhao(link);case 3:break;continue;case 3:xiugai_menu();P("请输入产品编号:");scanf("%d", &i);switch (i)case 1:link = xiugai(link);print(link); PRESS_ANYKEYcontinue;case 2:link = sc(link);print(link);continue;case 3:break;continue;case 4:link = dp(link);continue;case 5:P("BYE BYE!n");PRESS_ANYKEYbreak; while (1);per *cj()int i, n = 0;per *head = NULL;per *p1 = head, *p2 = head;dop1 = (per *)malloc(sizeof(per);P("请输入用第个%d商品信息n", +n);P("商品号:");scanf("%s", &p1->id);if (!strcmp(p1->id, "0")break;P("商品名称:");scanf("%s", &p1->name);P("商品类别:");scanf("%s", &p1->leibie);P("数量:");scanf("%d", &p1->num);P("产地:");scanf("%s", &p1->chandi);if (n = 1)head = p1;elsep2->next = p1;p2 = p1;p2->next = NULL;printf("是否继续输入:(1)是 (2)否n");scanf("%d", &i); while (i = 1);return head;per *charu(per *head)per *p0, *p1;p1 = head;p0 = (per *)malloc(sizeof(per);p0->next = NULL;P("商品号:");scanf("%s", &p0->id);P("商品名称:");scanf("%s", &p0->name);P("商品类别:");scanf("%s", &p0->leibie);P("数量:");scanf("%d", &p0->num);P("产地:");scanf("%s", &p0->chandi);if (!head)head = p0;return head;while (p1->next)p1 = p1->next;p1->next = p0;return head;void print(per *head)per *p;p = head;if (!head)P("tt该信息库为空!n");return;P("编号t名称t类别t数量t产地t提醒n");while (p)P("%st%st%st%dt%st", p->id, p->name, p->leibie, p->num, p->chandi);if (p->num < 3)P("数量太少请进货n");elseP("n");p = p->next;void chazhao(per * head)char j5;per *p1;p1 = head;P("请输入要查询的名称:");scanf("%s", &j);if (p1 != NULL)while (p1)if (strcmp(j, p1->name) = 0)P("%st%st%st%dt%stn", p1->id, p1->name, p1->leibie, p1->num, p1->chandi);p1 = p1->next;P("编号t名称t类别t数量t产地n");per *xiugai(per *head)char na5;int na1;per *p1;p1 = head;if (!head)P("tt该信息库为空!n");return head;P("请输入要修改商品号:");scanf("%s", &na);P("(如果不修改,请输入“-)n");while (p1)if (!strcmp(na, p1->id)break;p1 = p1->next;if (!p1)P("tt此商品不存在!n");return head;P("商品名称:");scanf("%s", &na);if (strcmp(na, "-")strcpy(p1->name, na);P("商品类别:");scanf("%s", &na);if (strcmp(na, "-")strcpy(p1->leibie, na);P("数量:");scanf("%d", &na1);if (strcmp(na, "-")p1->num=na1;P("产地:");scanf("%s", &na);if (strcmp(na, "-")strcpy(p1->chandi, na);return head;per *sc(per *head)char i5;per *p1, *p2;p1 = p2 = head;if (head = NULL)P("tt该信息库为空!n");return(head);P("请输入要删除序号:");scanf("%s", i);while (1)p1 = head;while (strcmp(i, p1->id) != 0 && p1->next != NULL)p2 = p1;p1 = p1->next;if (strcmp(i, p1->id) = 0)if (p1 = head)head = p1->next;else p2->next = p1->next; P("tt删除成功!n"); PRESS_ANYKEY;else P("tt此产品不存在!n"); break;return(head);per *dp(per *head)char na5;int yu1, i;per *p1;p1 = head;shou_menu();P("请输入序号:");scanf("%d", &i);switch (i)case 1:if (!head)P("tt该信息库为空!n");return NULL;P("请输入要定的商品号:");scanf("%s", &na);while (p1)if (!strcmp(na, p1->id)break;p1 = p1->next;if (!p1)P("tt此商品不存在!n");return head;P("请输入要售出商品数量:");scanf("%d", &yu1);if (yu1 <= 0)P("输入数量有误");else if (p1->num >= yu1)p1->num = p1->num - yu1;P("tt出售成功!n");elseP("商品数量缺乏");return head;case 2:if (!head)P("tt该信息库为空!n");return NULL;P("请输入要定的商品号:");scanf("%s", &na);while (p1)if (!strcmp(na, p1->id)break;p1 = p1->next;if (!p1)P("tt此商品不存在!n");return head;P("请输入要进货商品数量:");scanf("%d", &yu1);if (yu1 <= 0)P("输入数量有误");elsep1->num = p1->num + yu1;P("tt进货成功!n");return head;完成日期:2021 年4月21日. .word.