资源描述
。
沈阳商品航天大学北方科技学院
课 程 设 计 任 务 书
课程设计题目 库存管理程序设计
教 研 室 计算机教研室 专业
班级 学号 姓名
课程设计时间: 年 月 日至 年 月 日
课程设计的内容及要求:
主要内容
设计一个程序管理库存商品,主要实现的功能如下:
1、 添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等;
2、 进货或售出商品后,相应的库存商品数量应该有所改变;
3、 当某种商品库存少于一定数量时,应该提醒进货;
4、 可以按商品名称模糊查询商品信息。
基本要求
1、 系统采用C程序设计语言实现;
2、 独立完成系统的设计、编码和调试,通过指导教师当场验收;
3、 交出完整的课程设计报告。
指导教师 史 俊 年 月 日
沈阳商品航天大学北方科技学院
课 程 设 计 成 绩 评 定 单
课 程 名 称 C语言综合训练
课程设计题目 库存管理程序设计
专业 班级
学号 姓名 答辩日期 年 月 日
指导教师(答辩组)评语:
课程设计成绩
指导教师(答辩组)签字
年 月 日
库存管理程序设计
目录
摘 要 2
1.绪论 2
2. 系统分析 3
2.1 功能需求 3
2.2数据需求 3
2.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语言开发,实现商品信息库的新建,查询商品信息,修改商品信息,可对商品的出售进货有数量的变化,当数量不足时做提醒。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:库存;商品信息;数量变化;
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 id[10], 定义编号
name[10], 定义商品名称
leibie[10], 定义商品类别
chandi[10]; 定义商品产地
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 1沈阳 数量太少请进货
返回到主菜单。
输入“4”,进入售出或进货菜单。输入“2”,按提示输入商品号“1”,按提示依次输入
数量:5
屏幕输出
进货成功!!!
返回到主菜单。
输入“2”,进入查看菜单。再输入“1”,进入查看信息库,屏幕输出
1 三星 电子产品 2 1沈阳
返回到主菜单。
输入“5”,进入退出程序。屏幕输出
BYE BYE!!!
退出程序。
多次运行程序后,发现各个菜单功能都可执行,在输入错误商品号时,给出该商品不存在的提示,因此,该程序无错误可正确执行。
6. 结论
本次课程设计,根据任务书要求,实现了添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等,进货或售出商品后,相应的库存商品数量应该有所改变,当某种商品库存少于一定数量时,应该提醒进货,可以按商品名称查询商品信息,可满足商场对系统的需求。但有部分功能还不太完善,如只可新建一次信息库,再次创建时,会将上个信息库覆盖,且不能保存数据。
结束语
通过这次的课程设计实验,让我了解了我的一些方面的不足,也提高了我的学习能力,在通过查找资料来完成实验时,使我的知识更加的丰富,培养了我的学习兴趣。今后我要更加努力来学习。
参考文献
[1] 严蔚敏,吴伟国.数据结构(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 printf
typedef struct per
{
char id[10], name[10], leibie[10], chandi[10];
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("\t\t***************************************\n");
P("\t\t* 库存信息管理系统 *\n");
P("\t\t* 1、新建 *\n");
P("\t\t* 2、查询 *\n");
P("\t\t* 3、修删 *\n");
P("\t\t* 4、售出或进货 *\n");
P("\t\t* 5、退出 *\n");
P("\t\t***************************************\n");
}
void xinjian_menu()
{
P("\t\t<<<<<<<<<<<<<<新建>>>>>>>>>>>>>>>\n");
P("\t\t 1、新建信息库 \n");
P("\t\t 2、添加商品 \n");
P("\t\t 3、返回 \n");
P("\t\t<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>\n");
}
void chazhao_menu()
{
P("\t\t<<<<<<<<<<<<<<查看>>>>>>>>>>>>>>>\n");
P("\t\t 1、查看信息库 \n");
P("\t\t 2、查找商品号 \n");
P("\t\t 3、返回 \n");
P("\t\t<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>\n");
}
void xiugai_menu()
{
P("\t\t<<<<<<<<<<<<修改或删除>>>>>>>>>>>>\n");
P("\t\t 1、修改商品信息 \n");
P("\t\t 2、删除商品信息 \n");
P("\t\t 3、返回 \n");
P("\t\t<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>\n");
}
void shou_menu()
{
P("\t\t<<<<<<<<<<<<进货或出售>>>>>>>>>>>>\n");
P("\t\t 1、出售 \n");
P("\t\t 2、进货 \n");
P("\t\t 3、返回 \n");
P("\t\t<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>\n");
}
void main()
{
per *head = NULL;
per *link = head;
register int i;
do
{
menu();
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_ANYKEY
continue;
case 3:
break;
}continue;
case 2:
chazhao_menu();
P("请输入序号:");
scanf("%d", &i);
switch (i)
{
case 1:
print(link);
PRESS_ANYKEY
continue;
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_ANYKEY
continue;
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_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", &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;
else
p2->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("\t\t该信息库为空!!!\n");
return;
}
P("编号\t名称\t类别\t数量\t产地\t提醒\n");
while (p)
{
P("%s\t%s\t%s\t%d\t%s\t", p->id, p->name, p->leibie, p->num, p->chandi);
if (p->num < 3)
P("数量太少请进货\n");
else
P("\n");
p = p->next;
}
}
void chazhao(per * head)
{
char j[5];
per *p1;
p1 = head;
P("请输入要查询的名称:");
scanf("%s", &j);
if (p1 != NULL)
{
while (p1)
{
if (strcmp(j, p1->name) == 0)
{
P("%s\t%s\t%s\t%d\t%s\t\n", p1->id, p1->name, p1->leibie, p1->num, p1->chandi);
}
p1 = p1->next;
}
}
P("编号\t名称\t类别\t数量\t产地\n");
}
per *xiugai(per *head)
{
char na[5];
int na1;
per *p1;
p1 = head;
if (!head)
{
P("\t\t该信息库为空!!!\n");
return head;
}
P("请输入要修改商品号:");
scanf("%s", &na);
P("(如果不修改,请输入“-”)\n");
while (p1)
{
if (!strcmp(na, p1->id))
break;
p1 = p1->next;
}
if (!p1)
{
P("\t\t此商品不存在!!!\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 i[5];
per *p1, *p2;
p1 = p2 = head;
if (head == NULL)
{
P("\t\t该信息库为空!!!\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("\t\t删除成功!!!\n"); PRESS_ANYKEY;
}
else P("\t\t此产品不存在!!!\n"); break;
}return(head);
}
per *dp(per *head)
{
char na[5];
int yu1, i;
per *p1;
p1 = head;
shou_menu();
P("请输入序号:");
scanf("%d", &i);
switch (i)
{
case 1:
{
if (!head)
{
P("\t\t该信息库为空!!!\n");
return NULL;
}
P("请输入要定的商品号:");
scanf("%s", &na);
while (p1)
{
if (!strcmp(na, p1->id))
break;
p1 = p1->next;
}
if (!p1)
{
P("\t\t此商品不存在!!!\n");
return head;
}
P("请输入要售出商品数量:");
scanf("%d", &yu1);
if (yu1 <= 0){
P("输入数量有误");
}
else if (p1->num >= yu1){
p1->num = p1->num - yu1;
P("\t\t出售成功!!!\n");
}
else{
P("商品数量不足");
}
return head;
}
case 2:
{
if (!head)
{
P("\t\t该信息库为空!!!\n");
return NULL;
}
P("请输入要定的商品号:");
scanf("%s", &na);
while (p1)
{
if (!strcmp(na, p1->id))
break;
p1 = p1->next;
}
if (!p1)
{
P("\t\t此商品不存在!!!\n");
return head;
}
P("请输入要进货商品数量:");
scanf("%d", &yu1);
if (yu1 <= 0){
P("输入数量有误");
}
else{
p1->num = p1->num + yu1;
P("\t\t进货成功!!!\n");
}
return head;
}
}
}
完成日期:2015年4月21日
THANKS !!!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考
展开阅读全文