C语言库存管理系统Word文档下载推荐.docx
《C语言库存管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言库存管理系统Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
2.系统分析
2.1功能需求
本系统主要是库存商品进行管理的系统。
该系统需要有添加,删除商品信息,查询商品信息,货少提醒等。
2.2数据需求
需要管理的商品信息包括:
商品号、商品名称、商品类别、数量和产地。
2.3性能需求
安全性:
本系统在设计,开发,运行各环节,都贯彻了安全性的原则。
可靠性:
遵循安全性原理,来提高本系统的可靠性。
稳定性:
本系统根据需要可以定义全局变量,可以使用结构体以及链表,来确保本系统的稳定性。
响应速度;
本系统因应用了链表,理论上可以提高查找的速度,整体的响应速度也会得到了提升。
3.总体设计
3.1功能模块设计
根据分析整个系统主要划分为4个模块,分别执行对于功能。
商品信息管理实现商品编号、名称、类别、数量、产地等的查询、添加、修改、删除等功能。
出售和进货管理可对商品在商品有数量变化时,对应变化,当商品数量少于一定数量时,提醒数量不够。
功能模块图如图1所示。
图1功能模块图
(1)商品信息管理子模块
该模块是对商品编号、名称、类别、数量、产地等信息的增加、删除和修改。
(2)出售进货管理子模块
该模块是对商品的出售进货时,数量的随之变化,当数量少于一定数值时,提醒数量不足。
3.2系统设计方案
(1)数据结构设计
typedefstructper
{
charid[10],定义编号
name[10],定义商品名称
leibie[10],定义商品类别
chandi[10];
定义商品产地
intnum;
定义商品数量
structper*next;
}per;
(2)菜单设计
本系统中的菜单有以下几种:
。
1.一级菜单:
即主菜单。
其中包括:
1.新建;
2.查询;
3.修删;
4.售出或进货;
5.退出。
2.二级菜单
a:
新建菜单:
包括:
1、新建信息库;
2、添加商品;
3、返回。
b:
查询菜单:
1、查看信息库;
2、查找商品号;
c:
修删菜单:
1、修改商品信息;
2、删除商品信息;
3返回。
d:
售出或进货菜单:
包括1、售出;
2、进货;
(3)函数设计
voidmenu();
主菜单
voidxinjian_menu();
新建菜单
voidchaozhao_menu();
查找菜单
voidxiugai_menu();
修删菜单
per*cj();
新建信息库
voidprint(per*head);
输出商品信息
voidchazhao(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三星电子产品21沈阳数量太少请进货
返回到主菜单。
输入“4”,进入售出或进货菜单。
输入“2”,按提示输入商品号“1”,按提示依次输入
5
屏幕输出
进货成功!
!
1三星电子产品21沈阳
输入“5”,进入退出程序。
BYEBYE!
退出程序。
多次运行程序后,发现各个菜单功能都可执行,在输入错误商品号时,给出该商品不存在的提示,因此,该程序无错误可正确执行。
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>
string.h>
malloc.h>
#defineLENsizeof(structper)
#definePRESS_ANYKEYP("
请输入任意键继续……"
);
getchar();
#definePprintf
charid[10],name[10],leibie[10],chandi[10];
voidshou_menu();
voidmenu()
P("
\t\t***************************************\n"
\t\t*库存信息管理系统*\n"
\t\t*1、新建*\n"
\t\t*2、查询*\n"
\t\t*3、修删*\n"
\t\t*4、售出或进货*\n"
\t\t*5、退出*\n"
}
voidxinjian_menu()
\t\t<
<
新建>
>
\n"
\t\t1、新建信息库\n"
\t\t2、添加商品\n"
\t\t3、返回\n"
voidchazhao_menu()
查看>
\t\t1、查看信息库\n"
\t\t2、查找商品号\n"
voidxiugai_menu()
修改或删除>
\t\t1、修改商品信息\n"
\t\t2、删除商品信息\n"
voidshou_menu()
进货或出售>
\t\t1、出售\n"
\t\t2、进货\n"
voidmain()
per*head=NULL;
per*link=head;
registerinti;
do
{
menu();
P("
请输入序号:
"
scanf("
%d"
&
i);
switch(i)
{
case1:
xinjian_menu();
P("
scanf("
switch(i)
{
case1:
link=cj();
continue;
case2:
link=charu(link);
print(link);
PRESS_ANYKEY
continue;
case3:
break;
}continue;
case2:
chazhao_menu();
PRESS_ANYKEY
chazhao(link);
case3:
xiugai_menu();
请输入产品编号:
link=xiugai(link);
link=sc(link);
case4:
link=dp(link);
continue;
case5:
BYEBYE!
PRESS_ANYKEY
}break;
}while
(1);
per*cj()
inti,n=0;
per*p1=head,*p2=head;
p1=(per*)malloc(sizeof(per));
请输入用第个%d商品信息\n"
++n);
%s"
p1->
id);
if(!
strcmp(p1->
id,"
0"
))
break;
name);
leibie);
num);
chandi);
if(n==1)
head=p1;
else
p2->
next=p1;
p2=p1;
p2->
next=NULL;
printf("
(1)是
(2)否\n"
}while(i==1);
returnhead;
per*charu(per*head)
per*p0,*p1;
p1=head;
p0=(per*)malloc(sizeof(per));
p0->
scanf("
p0->
if(!
head)
head=p0;
returnhead;
}
while(p1->
next)
p1=p1->
next;
next=p0;
voidprint(per*head)
per*p;
p=head;
\t\t该信息库为空!
return;
编号\t名称\t类别\t数量\t产地\t提醒\n"
while(p)
%s\t%s\t%s\t%d\t%s\t"
p->
id,p->
name,p->
leibie,p->
num,p->
if(p->
num<
3)
数量太少请进货\n"
p=p->
voidchazhao(per*head)
charj[5];
per*p1;
请输入要查询的名称:
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->
}
p1=p1->
}
编号\t名称\t类别\t数量\t产地\n"
per*xiugai(per*head)
charna[5];
intna1;
请输入要修改商品号:
na);
(如果不修改,请输入“-”)\n"
while(p1)
strcmp(na,p1->
id))
p1)
\t\t此商品不存在!
if(strcmp(na,"
-"
strcpy(p1->
name,na);
leibie,na);
na1);
p1->
num=na1;
chandi,na);
per*sc(per*head)
chari[5];
per*p1,*p2;
p1=p2=head;
if(head==NULL)
return(head);
请输入要删除序号:
i);
while
(1)
p1=head;
while(strcmp(i,p1->
p2=p1;
if(strcmp(i,p1->
id)==0)
if(p1==head)
head=p1->
elsep2->
next=p1->
\t\t删除成功!
PRESS_ANYKEY;
elseP("
\t\t此产品不存在!
break;
}return(head);
per*dp(per*head)
intyu1,i;
shou_menu();
switch(i)
case1:
if(!
P(