《C语言知识库存管理计划系统.doc》由会员分享,可在线阅读,更多相关《C语言知识库存管理计划系统.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、/ 沈阳商品航天大学北方科技学院 课课 程程 设设 计计 任任 务务 书书 课程设计题目 库存管理程序设计库存管理程序设计 教 研 室 计算机教研室 专业 班级 学号 姓名 课程设计时间: 年 月 日至 年 月 日 课程设计的内容及要求: 主要内容主要内容 设计一个程序管理库存商品,主要实现的功能如下: 1、添加、修改、删除库存商品信息,商品信息包括:编号、名称、 类别、数量、产地等; 2、进货或售出商品后,相应的库存商品数量应该有所改变; 3、当某种商品库存少于一定数量时,应该提醒进货; 4、可以按商品名称模糊查询商品信息。 基本要求基本要求 1、系统采用 C 程序设计语言实现; 2、独立完
2、成系统的设计、编码和调试,通过指导教师当场验收; 3、交出完整的课程设计报告。 指导教师 史 俊 年 月 日 / 沈阳商品航天大学北方科技学院 课课 程程 设设 计计 成成 绩绩 评评 定定 单单 课 程 名 称 C C 语言综合训练语言综合训练 课程设计题目 库存管理程序设计库存管理程序设计 专业 班级 学号 姓名 答辩日期 年 月 日 指导教师(答辩组)评语: 课程设计成绩 指导教师(答辩组)签字 年 月 日 / 库存管理程序设计 目录 摘摘 要要 .2 1绪论绪论 .2 2. 系统分析系统分析 .3 2.1 功能需求 .3 2.2 数据需求.3 2.3 性能需求 .3 3. 总体设计总体
3、设计 .3 3.1 功能模块设计.3 3.2 系统设计方案.4 4. 详细设计详细设计 .5 4.1 商品信息管理模块.5 4.2 商品查询管理模块.9 5. 调试与测试调试与测试 .10 5.1 调试 .10 5.2 测试 .10 6. 结论结论 .11 结束语结束语 .11 参考文献参考文献 .11 附录附录 1用户手册用户手册 .12 附录附录 2源程序源程序 .14 / 摘摘 要要 库存管理系统是厂家、商城、商场等的管理商品信息不可缺少的部分,利 用这个系统,可以更好地管理商品的信息。 本系统使用 C 语言开发,实现商品信息库的新建,查询商品信息,修改商 品信息,可对商品的出售进货有数
4、量的变化,当数量不足时做提醒。 本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分 析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程, 最后对系统的完成情况进行了总结。 关键词:库存;商品信息;数量变化; 1绪论绪论 随着时代的进步,社会的发展,人们的生活水平逐渐提高,平时购物的种 类越来越多,商场出售商品的种类也越来越多,各种商品的库存量在每天的销 售与进货过程中会发生不断的变化,管理起来也越来越繁琐。发库存管理系统, 可使管理商品信息变得更加简单,节省人力物力,降低成本。库存管理系统, 能实现商场对商品的添加,查询,修改,删除等功能,对商品的数量进行管理,
5、 满足商场的需求。 随着社会的发展,社会生活水平不断提高,外出出行的人们也越来越多, 伴随而来的是民航部门对商品管理和订票业务更加繁重的问题。开发商品售票 管理系统,使得国家民航部门对出行人员的信息和商品的管理问题得到了改善。 商品售票管理程序,能实现民航部门对商品信息的添加、查找、修改和删除等 功能,方便了民航部门的管理,满足了民航部门的需求。 根据课程设计任务书要求,本系统开发主要完成以下功能和性能。 1、添加、修改、删除库存商品信息,商品信息包括:编号、名称、 类别、数量、产地等; 2、进货或售出商品后,相应的库存商品数量应该有所改变; 3、当某种商品库存少于一定数量时,应该提醒进货;
6、4、可以按商品名称模糊查询商品信息 / 2. 系统分析系统分析 2.1 功能需求功能需求 本系统主要是库存商品进行管理的系统。 该系统需要有添加,删除商品信息,查询商品信息,货少提醒等。 2.2 数据需求数据需求 需要管理的商品信息包括:商品号、商品名称、商品类别、数量和产地。 2.3 性能需求性能需求 安全性:本系统在设计,开发,运行各环节,都贯彻了安全性的原则。 可靠性:遵循安全性原理,来提高本系统的可靠性。 稳定性:本系统根据需要可以定义全局变量,可以使用结构体以及链表, 来确保本系统的稳定性。 响应速度;本系统因应用了链表,理论上可以提高查找的速度,整体的响 应速度也会得到了提升。 3
7、. 总体设计总体设计 3.1 功能模块设计功能模块设计 根据分析整个系统主要划分为 4 个模块,分别执行对于功能。商品信息管 理实现商品编号、名称、类别、数量、产地等的查询、添加、修改、删除等功 能。出售和进货管理可对商品在商品有数量变化时,对应变化,当商品数量少 于一定数量时,提醒数量不够。 功能模块图如图 1 所示。 / 库存管理系统 商品信息管理进货出售管理 商品 信息 查询 商品 信息 添加 商品 信息 删除 商品 信息 修改 图图 1 功能模块图功能模块图 (1)商品信息管理子模块 该模块是对商品编号、名称、类别、数量、产地等信息的增加、删除和修 改。 (2)出售进货管理子模块 该模
8、块是对商品的出售进货时,数量的随之变化,当数量少于一定数值时, 提醒数量不足。 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、返回。
9、 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);
10、删除商品信息 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。返 回后可继续此输入,可循环重复,否则回到主函数。具体实现
11、程序流程如图 2。 开始 开始 整型变量i,n 指针变量p1,p2 整型变量i,n 指针变量p1,p2 Head=null Head=null 开辟新结点 开辟新结点 输入商品 号 输入商品 号 n+ n+ !strcmp(p1- name,N0) !strcmp(p1- name,N0) 输入剩下的 商品信息 输入剩下的 商品信息 N=1 N=1 Head=p1 Head=p1 P2=p1 P2=p1 P2-next=null P2-next=null 输入是否 继续 输入是否 继续 i=1 i=1 Return head Return head 结束 结束 Y N N Y N Y 图图 2
12、 商品信息添加流程图商品信息添加流程图 (2)删除商品模块 定义整型变量 i,指针变量 p1 和 p2,输入商品号 i,判断是否有此商品(i, p1-id) != 0 p1 = p1-next, / 在匹配与输入相同的商品,使(i, p1-id) = 0,则删除成功回到主函数。具 体实现程序流程如图 3 开始 开始 整型变量i 指针变量p1,p2 整型变量i 指针变量p1,p2 输入商品 号 输入商品 号 i, p1-id) != 0 p1 = p1-next p2 = p1;p1 = p1-next 输出删除成功 输出删除成功 图图 3 商品信息删除流程图商品信息删除流程图 (3)修改商品模
13、块 定义字符型变量 na、整型变量 na1、指针变量 p1,使 p1=head,如果! Head 则信息库为空,否则输入要修改的商品,如果!P1 则商品不存在,否则进 入后不修改,按-返回,否则继续输入商品信息然后可按-号结束,返 回目录。具体实现程序流程如图 4 / 开始 开始 字符型变量na 整型变量na1 指针变量p1 字符型变量na 整型变量na1 指针变量p1 输入商品 号 输入商品 号 !p1 !p1 按-结束 按-结束 Return head Return head 结束 结束 Y 输出此商品不存 在! 输出此商品不存 在! N 输入修改商品 的信息 输入修改商品 的信息 p1=
14、head p1=head !Head !Head Y N 图图 4 商品信息修改流程图商品信息修改流程图 / 4.2 商品查询管理模块商品查询管理模块 建立输出函数,定义指针 p,p1,p1=head。当 head 等于空,输出“该信息 库为空!” ,返回主函数。当 head 不等于空,输出信息库信息,再判断 p- numnext p1=p1-next return return 结束 结束 N Y P-num3 输出数量太少 请进货 N Y 图图 5 5 商品查询流程图商品查询流程图 / 5. 调试调试与测试与测试 5.1 调试调试 调试是系统开发的一个重要的步骤。调试可分为 2 个步骤,先
15、是运行编写 好程序找到问题,然后再解决并改正问题。 本系统在调试时,发现在判断商品数量提醒时,有时出现错误,在反复查 找后发现,在前面没有判断该商品是否存在,在改正后,程序正确运行。 5.2 测试测试 系统测试是系统开发的一个重要阶段,是系统保证质量的关键。如果在测 试中不认真检查,在后期维护过程中将会非常麻烦。 本系统测试数据过程如下。 先进入运行程序 输入“1” ,进入新建菜单,再输入“1”进入新建信息库。 请输入用第个 1 商品信息: 商品号:1 商品名称:三星 商品类别:电子产品 数量:2 产地:沈阳 是否继续输入:(1)是 (2)否 输入“2” 。 返回到主函数。 输入“2” ,进入
16、查看菜单。再输入“1” ,进入查看信息库,屏幕输出 1 三星 电子产品 2 1 沈阳 数量太少请进货 返回到主菜单。 输入“4” ,进入售出或进货菜单。输入“2” ,按提示输入商品号“1” , 按提示依次输入 数量:5 屏幕输出 进货成功! / 返回到主菜单。 输入“2” ,进入查看菜单。再输入“1” ,进入查看信息库,屏幕输出 1 三星 电子产品 2 1 沈阳 返回到主菜单。 输入“5” ,进入退出程序。屏幕输出 BYE BYE! 退出程序。 多次运行程序后,发现各个菜单功能都可执行,在输入错误商品号时,给 出该商品不存在的提示,因此,该程序无错误可正确执行。 6. 结论结论 本次课程设计,
17、根据任务书要求,实现了添加、修改、删除库存商品信息, 商品信息包括:编号、名称、类别、数量、产地等,进货或售出商品后,相应 的库存商品数量应该有所改变,当某种商品库存少于一定数量时,应该提醒进 货,可以按商品名称查询商品信息,可满足商场对系统的需求。但有部分功能 还不太完善,如只可新建一次信息库,再次创建时,会将上个信息库覆盖,且 不能保存数据。 结束语结束语 通过这次的课程设计实验,让我了解了我的一些方面的不足,也提高了我 的学习能力,在通过查找资料来完成实验时,使我的知识更加的丰富,培养了 我的学习兴趣。今后我要更加努力来学习。 参考文献参考文献 1 严蔚敏,吴伟国.数据结构(C 语言版)
18、.北京:清华大学出版社,2002.9 2潭浩强.C 语言程序设计(第三版).北京:清华大学出版社,2005 / 附录附录 1用户手册用户手册 (1)首先打开程序,初始页面,如图 6。 图图 6 登录界面登录界面 输入“1”进入新建菜单,如图 7。 / 图图 7 新建页面新建页面 主界面中输入“2”进入查询界面,如图 8 图图 8 查询页面查询页面 主界面中输入“3”进入订票页面,如图 9 图图 9 修改或删除页面修改或删除页面 主界面中输入“4”进入订票页面,如图 10 图图 10 进货或出售页面进货或出售页面 / 附录附录 2源程序源程序 主要模块源代码清单: #include #inclu
19、de #include #define LEN sizeof(struct per) #define PRESS_ANYKEY P(请输入任意键继续);getchar();getchar(); #define P printf typedef struct per char id10, name10, leibie10, chandi10; int num; struct per *next; per; void menu(); void xinjian_menu(); void chaozhao_menu(); void xiugai_menu(); void shou_menu(); vo
20、id 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()
21、P(ttn); P(tt 1、新建信息库 n); P(tt 2、添加商品 n); P(tt 3、返回 n); P(ttn); void chazhao_menu() P(ttn); P(tt 1、查看信息库 n); P(tt 2、查找商品号 n); P(tt 3、返回 n); P(ttn); void xiugai_menu() P(ttn); P(tt 1、修改商品信息 n); P(tt 2、删除商品信息 n); P(tt 3、返回 n); P(ttn); void shou_menu() / P(ttn); P(tt 1、出售 n); P(tt 2、进货 n); P(tt 3、返回 n);
22、 P(ttn); void main() per *head = NULL; per *link = head; register int i; do menu(); P(请输入序号:); scanf(%d, switch (i) case 1: xinjian_menu(); P(请输入序号:); scanf(%d, switch (i) case 1: link = cj(); continue; case 2: link = charu(link); print(link); PRESS_ANYKEY continue; case 3: break; / continue; case 2
23、: chazhao_menu(); P(请输入序号:); scanf(%d, switch (i) case 1: print(link); PRESS_ANYKEY continue; case 2: chazhao(link); case 3: break; continue; case 3: xiugai_menu(); P(请输入产品编号:); scanf(%d, switch (i) case 1: link = xiugai(link); print(link); PRESS_ANYKEY continue; case 2: link = sc(link); print(link)
24、; continue; case 3: break; continue; / case 4: link = dp(link); continue; case 5: P(BYE BYE!n); PRESS_ANYKEY break; while (1); per *cj() int i, n = 0; per *head = NULL; per *p1 = head, *p2 = head; do p1 = (per *)malloc(sizeof(per); P(请输入用第个%d 商品信息n, +n); P(商品号:); scanf(%s, if (!strcmp(p1-id, 0) brea
25、k; P(商品名称:); scanf(%s, P(商品类别:); scanf(%s, P(数量:); scanf(%d, P(产地:); scanf(%s, if (n = 1) head = p1; / else p2-next = p1; p2 = p1; p2-next = NULL; printf(是否继续输入:(1)是 (2)否n); scanf(%d, while (i = 1); return head; per *charu(per *head) per *p0, *p1; p1 = head; p0 = (per *)malloc(sizeof(per); p0-next =
26、 NULL; P(商品号:); scanf(%s, P(商品名称:); scanf(%s, P(商品类别:); scanf(%s, P(数量:); scanf(%d, P(产地:); scanf(%s, 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); w
27、hile (p) P(%st%st%st%dt%st, p-id, p-name, p-leibie, p-num, p- chandi); if (p-num next; void chazhao(per * head) char j5; per *p1; p1 = head; P(请输入要查询的名称:); scanf(%s, 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-n
28、ext; 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, P(如果不修改,请输入“-”)n); while (p1) if (!strcmp(na, p1-id) break; p1 = p1-next; / if (!p1) P(tt 此商品不存在!n); return head; P(商品名称:); scanf(%s, if (strcmp
29、(na, -) strcpy(p1-name, na); P(商品类别:); scanf(%s, if (strcmp(na, -) strcpy(p1-leibie, na); P(数量:); scanf(%d, if (strcmp(na, -) p1-num=na1; P(产地:); scanf(%s, 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);
30、 / return(head); P(请输入要删除序号:); scanf(%s, i); while (1) p1 = head; while (strcmp(i, p1-id) != 0 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;
31、 per *p1; p1 = head; shou_menu(); P(请输入序号:); scanf(%d, switch (i) / case 1: if (!head) P(tt 该信息库为空!n); return NULL; P(请输入要定的商品号:); scanf(%s, while (p1) if (!strcmp(na, p1-id) break; p1 = p1-next; if (!p1) P(tt 此商品不存在!n); return head; P(请输入要售出商品数量:); scanf(%d, if (yu1 num = yu1) p1-num = p1-num - yu1
32、; P(tt 出售成功!n); else P(商品数量不足); return head; / case 2: if (!head) P(tt 该信息库为空!n); return NULL; P(请输入要定的商品号:); scanf(%s, while (p1) if (!strcmp(na, p1-id) break; p1 = p1-next; if (!p1) P(tt 此商品不存在!n); return head; P(请输入要进货商品数量:); scanf(%d, if (yu1 num = p1-num + yu1; P(tt 进货成功!n); return head; / / 完成日期:2015 年 4 月 21 日