仓库信息管理C语言程序说明书.docx
《仓库信息管理C语言程序说明书.docx》由会员分享,可在线阅读,更多相关《仓库信息管理C语言程序说明书.docx(50页珍藏版)》请在冰豆网上搜索。
仓库信息管理C语言程序说明书
1引言
自1972年推出C语言设计程序以来,C语言渐渐成为世界上流行最为广泛的高级设计语言,并在C语言的基础上产生了C++、VisualC++、Java、C#等。
C语言是目前编程领域中最有影响力的一种程序设计语言,它具有灵活性、丰富性、可移植性的优点。
C语言技术使人们的工作系统化,工作效率提高,并且实现了资源的共享。
[1]
一个庞大的仓库商品信息,人工处理起来非常吃力、费时。
以往的仓库管理基本上都是靠手工进行,随着仓库的规模增大,有关商品管理工作所涉及的数据量越来越大,单纯依靠增加人力、物力来进行商品管理已经脱离时代发展的轨道。
由于现今的仓库管理非常繁琐,管理人员付出大量的工作时间,得到的效率很低,有时甚至会延误商品的保质期,造成很大的经济损失。
因此为提高工作效率,减轻工作负担,开发仓库管理系统软件非常必要。
建立仓库信息管理系统,在C语言的平台下,可以方便记录商品详细信息的记录和查找等管理,提高工作效率,实现仓库商品信息管理工作流程的系统化、规范化和自动化。
[2]
这次课程设计的仓库管理系统采用结构体的方式,完成了对数据的录入、查找、删除、插入、修改、保存、输出等功能。
通过完成本课题进一步熟悉C语言基本知识,并掌握数据结构的一些重要的实用的算法思想,进一步熟悉数组的建立运用和函数调用,加深对数据结构的理解,提高算法设计的能力,锻炼编程的能力。
2需求分析
仓库信息管理系统主要对仓库的各项商品信息管理进行在计算机上的信息存储和处理,从而简化信息管理工作量。
仓库信息管理系统的需求分析主要确定系统的主要功能,对系统进行概要描述,分析系统运行时所需的软、硬件环境,并对系统的各个主要功能进行需求描述,目的时使软件在设计过程中尽量符合客户的需要。
[3]
2.1系统概述
根据仓库商品管理的需要,要建立一个仓库商品信息管理系统软件,实现仓库信息管理的基本操作:
数据录入、数据查询、数据修改、数据输出,以方便对成绩的各项管理操作。
系统的各个功能模块都用函数的形式来实现,可以将仓库信息保存在文件中,并从文件中读取出来。
系统基本信息包含商品编号、商品名称、生产厂家、入库时间、入库数量、现存数量、备注等。
修改数据指可以对指定数据进行修改并在修改前后对数据内容进行显示;查找数据指可以对要求的任意数据进行查找并显示查找结果;插入数据指在指定位置插入一条完整的信息;数据排序指按照信息的某个字段进行升序或降序排序,并显示排序结果。
程序具有数据录入、删除、修改、显示、插入、查找、排序以及数据保存等功能。
2.2问题分析
实际上要完成的是一个简单数据库管理信息系统的设计,同时要掌握数据结构方面的知识。
要求程序结构合理、算法准确、语法正确,并生成可执行文件。
2.3功能需求描述
仓库商品管理系统软件提供对商品信息的管理功能和顾客登录、管理等安全验证功能,并提供一个友好的操作界面,功能需求描述如下。
(1)密码验证
根据输入的密码判断是否允许使用本系统。
(2)菜单
进入菜单系统界面后,对系统提供的功能用列表的方式清晰的显示出来,并能正确接受输入。
(3)录入仓库初始记录
可按顺序将商品名称、商品编号、生产厂家、入库时间、入库数量、现存数量、备注依次输入。
能够一次性输入多商品的信息。
系统将商品信息存储在系统磁盘的文件只能中,以便进行管理、查找和备份等。
由选择结构用户选择并转相应函数。
(4)商品查询
分为根据名称查询、编号查询、生产厂家查询和入库时间查询四个具体需求,分别提示查询商品按名称、编号、生产厂家或入库时间的方式,如果在磁盘文件中有对应的商品信息,则显示出对应商品的信息。
(5)修改商品记录
提示输入要进行修改操作的商品名称,如果在文件中有该商品的信息存在,则输出该商品信息,提示是否修改,确定后惊醒修改,并将修改结果存储于文件中。
(6)增加商品记录
可在原有仓库商品信息文件的基础上增加新的商品信息记录,并继续保存于文件。
(7)显示全部记录
在进入显示全部信息的界面后,输出该文件中所包含的全部商品信息。
(8)商品排序
分为根据名称排序、编号排序和入库时间排序三个具体需求,分别提示商品排序按名称、编号、生产厂家或入库时间的方式,根据商品信息从小到大进行排序,并显示排序后的结果。
3系统总体设计
3.1系统总体设计思路
仓库商品信息管理系统要求实现许多功能,可遵循结构化程序设计思想来进行本系统的设计——自顶向下,逐步细化,也就是将软件设计任务划分成许多容易解决的小的子任务,即分解出许多子功能模块进行设计。
本程序经过分析可划分出10个子任务:
登录(密码验证)、数据输入、商品查询(包括通过商品名称查询、商品编号查询、生产厂家查询、入库时间查询)、删除商品记录、修改商品记录、增加商品信息、显示全部记录、商品排序(包括按商品名称排序、商品编号排序、入库时间排序)、保存、恢复。
3.2系统总体设计框图
图1仓库信息管理系统框图
3.3模块功能说明
对本系统的功能进行分析后可作如下的模块化设计:
(1)登录模块实现功能
输入密码,进行来访者身份验证。
通过循环结构实现。
(2)输入模块实现功能
按顺序将商品名称、商品编号、生产厂家、入库时间、入库数量、现存数量、备注依次输入,由选择结构用户选择并转相应函数。
(3)查找模块实现功能
在已经存储的文件中查找指定的货品信息。
可以按照商品名称、商品编号、生产厂家和入库时间四种方法进行。
(4)删除模块实现功能
在已经存储的文件中删除指定的货品信息,并释放内存空间。
(5)修改模块实现功能
在已经存盘的文件中修改商品的信息,包括商品名称、商品编号、生产厂家、入库时间等等。
(6)插入模块实现功能
向已经存盘的文件中再输入商品的信息,包括商品编号、商品名称、生产厂家等等。
(7)输出模块实现功能
在进入显示全部信息的界面后,输出该文件中所包含的全部商品信息。
(8)保存模块实现功能
进行上述操作后,都要进行保存操作,信息以文件形式被长期保存。
(9)恢复模块实现功能
进行清空操作,指定文件中的信息被清空。
(10)主菜单模块实现功能
完成系统的主菜单界面处理。
3.4界面设计
3.4.1登录界面设计
运行程序进入登录界面(密码初始化为“000000”,并提供密码屏蔽功能。
重复输入三次,自动退出),密码正确后,按Enter进入仓库管理菜单。
图2进入登录界面
3.4.2仓库管理菜单界面设计
进入菜单界面后,选择1-10进入相应的系统各功能界面。
图3进入主菜单界面
3.4.3录入仓库初始记录界面设计
在菜单界面输入“1”,进行录入仓库初始记录,输入要输的商品数目,进入输入界面,依次输入商品名称、商品编号、生产厂家、入库时间、入库数量、现存数量、备注。
图4录入仓库信息界面
3.4.4商品查询界面设计
在菜单界面输入数字“2”,进行商品查询,可根据名称查询、编号查询、生产厂家查询或入库时间查询,选择所要查询的方式,输入相应信息,则显示出对应商品的信息。
图5商品查询界面
3.4.5商品记录删除界面设计
在菜单界面输入数字“3”,进行商品记录删除,输入要删除商品的名称,则显示出要删除商品的信息,按“y”或“Y”确定删除。
图6商品删除界面
3.4.6商品记录修改界面设计
在菜单界面输入数字“4”,进行商品记录修改,输入要修改商品的名称,则显示出要修改商品的信息,按按“y”或“Y”确定修改后,依次输入新的商品信息。
图7商品记录修改界面
3.4.7商品信息增加界面设计
在菜单界面输入数字“5”,进行商品信息增加,输入增加数目后,依次输入新增商品各项信息。
图8商品信息增加界面
3.4.8显示全部记录设计界面
在菜单界面输入数字“6”,显示全部商品信息记录。
图9显示界面
3.4.9商品信息的排序设计界面
在菜单界面输入数字“7”,进行上品新的排序,可根据名称排序、编号排序或入库时间排序,选择所要排序的方式,则显示出排序后商品的信息。
图10商品信息排序界面(按生产厂家排序)
4系统详细设计
4.1数据结构
仓库管理信息包括编号、名称、生产厂家、入库时间、入库数量、现存数量、备注。
所以将其定义为结构体。
以结构体的形式保存进文件。
结构体说的定义如下。
(1)structDate/*声明structDate类型*/
{
intmouth;
intday;
intyear;
};
(2)structcangku
{
intnum;/*商品编号*/
charname[20];/*商品名称*/
charfactor[50];/*生产厂家*/
charintrodution[50];/*备注*/
intamount;/*入库数量*/
intnamount;/*现存数量*/
structDaterktime;/*入库时间也是另一结构体类型的成员*/
};
4.2main()主函数模块
程序采用模块化设计,主函数是程序的入口,各模块独立,可分块调整,均由主函数控制。
采用switch分支语句编写菜单选择控制各个模块的功能,每个模块的功能由简单的基本函数构成。
直接利用输出函数printf输出字符串,在屏幕上显示一个菜单,并显示一个提示输入选项,输入1-10之间的数字,将此数字作为菜单函数的返回值返回主函数,主函数根据这个数字调用相应的功能函数,制作简便,操作简单。
模块中主要部分如下。
switch(Menu_select())
图11主函数操作流程图
4.3Pwd()密码验证模块
本系统提供密码功能,密码初始化为“000000”,并提供密码屏蔽功能。
密码验证函数的具体做法是,先接收一段字符,然后看与系统预先设定的密码字符串是否相同,如果相同则返回1,不相同则重新接收一串字符,重复三次,自动返回0。
模块中主要部分如下。
for(pwdNum=3;pwdNum>0;pwdNum--)
for(i=0;i<6;i++)
{
pwdPut[i]=getch();
printf("*");
}
getch();
}
4.4Menu_select()菜单模块
该函数列出了一个清晰的结构,对本程序所运用的几个模块整体上有个同意认识,方便对程序的调用,节省了时间。
模块中主要部分如下。
{
printf("\n输入您想要进行的操作选项键(1-10):
");
if(scanf("%d",&c)!
=1)
{
while(getchar()!
='\n')
continue;
}
}
while(c<1||c>10);
returnc;
}
图12菜单函数操作流程图
4.5Import()输入模块
为了输入时不出错,输入方法使用一个数据一行的方式输入,用回车确定。
由于记录并不是一次性全部输入,而是随时添加和删除的,而预先开辟的空间数往往大于实际的记录数,所以程序设定全局变量n,随时记录所输入学生个数。
当输入结束后,调用save()函数保存数据。
模块中主要部分如下。
for(i=0;i4.6Search()商品查询模块
本函数可对商品名称、商品编号、生产厂家和入库时间四个字段数据进行查找并显示查找结果,通过for循环和if选择结构选择查找的方式。
图13查询操作总流程图
4.6.1按商品名称模块
按名称查询模块流程图如下。
图14按名称查询操作流程图
按名称查询模块中主要部分如下。
xuanze=getch();
if(xuanze=='2')/*通过物品名称查询*/
for(i=0;i{if(strcmp(s,t[i].name)==0)/*将两个字符串进行比较*/
{……
flag=1;printf("\n\n要查找的商品信息如下:
\n");}
if(flag==0)
printf("要查找的商品不存在!
!
\n");
getchar();
4.7DeleteRecord()商品信息删除模块
输入要删除商品的名称,通过查找判断,比较字符大小删除商品记录。
模块中主要部分如下。
if(strcmp(s,t[i].name)==0)
图15删除商品信息操作流程图
4.8AlterRecord()商品修改模块
本函数中可以修改指定商品的相关信息,通过字符比较找到相应商品,输入完毕后返回菜单界面。
模块中主要部分如下。
if(strcmp(s,t[i].name)==0)
图16修改商品信息操作流程图
4.9AddRecord()商品插入模块
该函数插入一条商品信息,操作简单快捷。
模块中主要部分如下。
for(i=n;i
图17插入操作流程图
4.10Sort()商品排序函数
本函数可对商品名称,商品编号和生产厂家三个字段进行排序并显示结果,通过for循环和if-elseif的选择结构排序。
图18排序操作总流程图
4.10.1按商品名称排序
按商品名称排序的流程图如下。
图19按商品名称排序操作流程图
模块中主要部分如下。
xuanze=getch();
if(xuanze=='1')/*按商品名称排序*/
{
inti,j;
structcangkutemp;
for(j=1;jfor(i=0;iif((strcmp(t[i].name,t[i+1].name))>0)
{
temp=t[i];
t[i]=t[i+1];
t[i+1]=temp;
}
printf("排序成功!
!
!
\n");
printf("排序后仓库信息列表如下:
\n");
List(t,n);
}
5总结
本系统通过在main主函数中使用switch结构,把各个子函数连接起来,形成鲜明的结构;增加了密码登录模块,更有效的保护信息安全;数据的录入采用结构体的形式,使数据录入、显示更加规范化;主界面通过菜单函数显示所有的功能,使界面简洁紧凑,功能一目了然,通过菜单函数的十个选项,选择不同的功能实现所要进行的操作;各个功能的设计比较严谨,使用过程方便快捷,可以更加准确快速的进行仓库信息的管理和存储;独特的系统使整个结构清晰明了;该程序设计小巧,便于使用和推广。
程序简便易操作,每个函数都有各自不同的功能,使得仓库信息管理管理系统更加细致全面。
我通过学习C语言程序设计,对C语言的基本概念和常用算法也有了一定的了解,平时虽然也做过一些练习,也看了不少程序从而掌握一定的语法知识和编程经验。
但是对于有些功能强大的软件还是没有尝试过能否编得起来。
所以决定在所学知识的基础上,再加以拓展,编个主题明确、具有一定使用价值的中小程序,提高了自身的编程水平与上机调试技能。
通过这一星期的实习,我得到了很大的收获。
参考文献
[1]谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:
高等教育出版社,2006
[2]吕凤煮.C语言基础教程——基础理论与案例[M].北京:
清华大学出版社,2005
[3]黄明,梁旭,万洪莉.C语言课程设计[M].北京:
电子工业出版社,2006
附录
仓库管理程序设计清单
#include
#include
#include
#include
structDate
/*声明structDate类型*/
{intmouth;
intday;
intyear;
};
structcangku
{
intnum;
/*商品编号*/
charname[20];
/*商品名称*/
charfactor[50];
/*生产厂家*/
charintrodution[50];
/*备注*/
intamount;
/*入库数量*/
intnamount;
/*现存数量*/
structDaterktime;
/*入库时间也是另一结构体类型的成员*/
};
typedefstructcangkuStorehouse;
/*定义结构体数组*/
intImport(Storehouset[]);
/*声明将要使用的函数*/
voidList(Storehouset[],intn);
voidSearch(Storehouset[],intn);
intDeleteRecord(Storehouset[],intn);
intAlterRecord(Storehouset[],intn);
intAddRecord(Storehouset[],intn);
voidSort(Storehouset[],intn);
voidSaveRecord(Storehouset[],intn);
intLoadRecord(Storehouset[]);
intLoadRecord1(Storehouset[]);
voidSave(Storehouset[],intn);
voidLoad(Storehouset[],intn);
voidLoad1(Storehouset[]);
intMenu_select();
voidtuichu();
intPwd();
voidmain()
{
Pwd();
Storehouseck[50];
intlength,w=1;
while(w)
/*用户选择并转相应函数*/
{
switch(Menu_select())
{
case1:
length=Import(ck);
SaveRecord(ck,length);
break;
case2:
length=LoadRecord(ck);
Search(ck,length);
break;
case3:
length=LoadRecord(ck);
length=DeleteRecord(ck,length);
SaveRecord(ck,length);
break;
case4:
length=LoadRecord(ck);
length=AlterRecord(ck,length);
SaveRecord(ck,length);
break;
case5:
length=LoadRecord(ck);
length=AddRecord(ck,length);
SaveRecord(ck,length);
break;
case6:
length=LoadRecord(ck);
system("cls");
List(ck,length);
break;
case7:
length=LoadRecord(ck);
system("cls");
Sort(ck,length);
SaveRecord(ck,length);
break;
case8:
length=LoadRecord(ck);
system("cls");
Save(ck,length);
break;
case9:
length=LoadRecord1(ck);
Load1(ck);
system("cls");
Load(ck,length);
break;
case10:
tuichu();
}
}
}
intPwd()
/*密码验证函数*/
{
inti;
charpwdPut[7]={0};
system("cls");
/*运行前清屏*/
intpwdNum=3;
for(pwdNum=3;pwdNum>0;pwdNum--)
{
if(pwdNum==0)
{
return(0);
}
printf("\n请输入口令(你还有%d次机会):
",pwdNum);
for(i=0;i<6;i++)
{
pwdPut[i]=getch();
printf("*");
}
getch();
if(!
strcmp(pwdPut,"000000"))
{
return
(1);
}
}
exit
(1);
}
intMenu_select()
/*菜单函数*/
{
intc;
printf("按Enter键进入仓库管理菜单\n");
getchar();
system("cls");
system("modeconcols=80lines=25&color17");
/*改变背景及文字颜色*/
printf("\n\n");
printf("☆欢迎进入仓库管理★");
printf("☆");
printf("☆1.录入仓库初始记录2.商品查询☆");
printf("");
printf("★3.删除商品记录4.修改商品记录");
printf("☆☆");
printf("5.增加商品信息6.显示全部记录★");
printf("☆");
printf("☆7.商品排序8.备份☆");
printf("");
printf("★9.恢复10.退出");
printf("☆☆");
printf("★");
printf("☆╭⌒╮⌒╮∵∴.★");
printf("╱◥██◣'⌒╮∵∴☆");
printf("│田│田田│∴∴");
printf("╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬");
printf("══════════════════════════════════");
do
{
printf("\n输入您想要进行的操作选项键(1-10):
");
if(scanf("%d",&c)!
=1)
{
while(getchar()!
='\n')
continue;
}
}
while(c<1||c>10);
returnc;
}
intImport(Storehouset[])
/*数据输入*/
{
inti,n;
system("cls");
printf("\n请输入要输入的商品数目:
\n");
scanf("%d",&n);
printf("开始输入仓库信息:
\n");
for(i=0;i{
system("cls");
printf("\n第%d个商品的编号:
",i+1);
scanf("%d",&t[i].num);
printf("第%d个商品的名称:
",i+1);
scanf("%s",&t[i].name);
printf("第%d个生产厂家:
",i+1);
scanf("%s",&t[i].factor);
printf("第%d个商品的入库时间:
",i+1);
scanf("%d-%d-%d",&t[i].rktime.mouth,&t[i].rktime.day,&t[i].rktime.year);
printf("第%d个商品的入库数量:
",i+