仓库管理系统说明书Word文件下载.docx
《仓库管理系统说明书Word文件下载.docx》由会员分享,可在线阅读,更多相关《仓库管理系统说明书Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
intmouth;
intday;
intyear;
};
(2)structcangku
intnum;
/*商品编号*/
charname[20];
/*商品名称*/
charfactor[50];
/*生产厂家*/
charintrodution[50];
/*备注*/
intamount;
/*入库数量*/
intnamount;
/*现存数量*/
intprice/*商品价格*/
structDaterktime;
/*入库时间也是另一结构体类型的成员*/
2.各模块的伪码算法
1.Main()主函数模块,用一个swtich()函数实现各个模块的连接以实现各个功能。
2.Menu_select()菜单函数模块,显示程序的菜单及输入所需的功能选项。
3.Import(Storehouset[])输入函数模块,完成数据的录入功能。
4.SaveRecord(Storehouset[],intn)保存函数模块,程序做每一次对数据的添加,修改,删除之后都会运行一次,把数据写到一个新建的文件中。
5.Load(Storehouset[],intn)加载函数模块,在对数据进行处理之前,运行本函数把已有的数据加载到运存中。
6.DeleteRecord(Storehouset[],intn)删除函数模块,按商品名称删除数据。
7.AlterRecord(Storehouset[],intn)修改函数模块,先if(strcmp(s,t[i].name)==0)按名称查找商品,在修改数据。
8.Search(Storehouset[],intn)查询函数模块,先输入查询方式if(strcmp(s,t[i].name)==0)查找数据。
9.Sort(Storehouset[],intn)排序函数模块,先选择排序方式,用冒泡排序的的方式排序。
10.voidtuichu()退出函数模块,显示退出函数界面。
3.函数的调用关系图
4.调试分析
a、调试中遇到的问题及对问题的解决方法
在实现商品查询功能时,输出乱码。
通过修改输出格式的控制和对printf()的修改解决乱码问题。
定义结构体时入库时间问题,通过在主结构体中定义structDaterktime再定义rktime为年月日解决。
b、算法的时间复杂度和空间复杂度
以最坏情况下的时间复杂度作为算法的时间复杂度。
本程序的最坏情况出现在排序时需要全部移动数据,排序为冒泡排序故时间复杂度为O(n²
)。
算法所需要的储存空间分为三部分:
输入数据所占用的空间,程序代码所占用的空间和辅助变量所占用的空间。
一般以最坏情况下的空间复杂度作为算法的空间复杂度。
空间复杂度为O(n)。
5.测试结果
第一步
按Enter进入主界面
图1
第二步
按1录入一组数据
第三步
按6显示全部记录,显示如下
图2
第四步
按7再按1,按名称排序如下
图3
6.源程序(带注释)
voidSort(Storehouset[],intn)
{charxuanze;
system("
cls"
);
printf("
\n\n请输入排序方式(按4可返回系统管理菜单):
\n1.按名称排序2.按编号排序\
3.按入库时间排序"
\n"
xuanze=getch();
/*从控制台无回显地取一个字符*/
for(;
xuanze!
='
1'
&
2'
3'
4'
;
)/*判断指令是否有效,无效则重新输入*/
if(xuanze=='
)/*按商品名称排序*/
inti,j;
structcangkutemp;
for(j=1;
j<
n;
j++)
for(i=0;
i<
n-j;
i++)
if((strcmp(t[i].name,t[i+1].name))>
0)
temp=t[i];
t[i]=t[i+1];
t[i+1]=temp;
}
排序成功!
!
排序后仓库信息列表如下:
List(t,n);
)
/*按商品编号排序*/
if(t[i].num>
t[i+1].num)
if(xuanze=='
/*按入库时间排序*/
if(t[i].rktime.year>
t[i+1].rktime.year)
elseif(t[i].rktime.year==t[i+1].rktime.year)
{if(t[i].rktime.month>
t[i+1].rktime.month)
elseif(t[i].rktime.month==t[i+1].rktime.month)
{if(t[i].rktime.day>
t[i+1].rktime.day)
/*返回系统管理菜单*/
Menu_select();
总结
本系统通过在main主函数中使用switch结构,把各个子函数连接起来,形成鲜明的结构;
增加了密码登录模块,更有效的保护信息安全;
数据的录入采用结构体的形式,使数据录入、显示更加规范化;
主界面通过菜单函数显示所有的功能,使界面简洁紧凑,功能一目了然,通过菜单函数的十个选项,选择不同的功能实现所要进行的操作;
各个功能的设计比较严谨,使用过程方便快捷,可以更加准确快速的进行仓库信息的管理和存储;
独特的系统使整个结构清晰明了;
该程序设计小巧,便于使用和推广。
程序简便易操作,每个函数都有各自不同的功能,使得仓库信息管理管理系统更加细致全面。
我通过学习C语言程序设计和算法与数据结构,对C语言的基本概念和算法与数据结构也有了一定的了解,平时虽然也做过一些练习,也看了不少程序从而掌握一定的语法知识和编程经验。
但是对于有些功能强大的软件还是没有尝试过能否编得起来。
所以决定在所学知识的基础上,再加以拓展,编个主题明确、具有一定使用价值的中小程序,提高了自身的编程水平与上机调试技能。
通过这三星期的实习,我得到了很大的收获。
参考文献
[1]严蔚敏,吴伟民.《数据结构(C语言版)》.清华大学出版社.2007)
[2]张永,李睿,年福忠.《算法与数据结构》.国防工业出版社.2009)
[3]王连相,赵付青.《C/C++程序设计教程》.中国铁道出版社.2011)
[3]谭浩强.《c语言程序设计》.清华大学出版社.2008)
致谢
附件Ⅰ任务一源程序代码
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
structDate
intmonth;
structcangku
intprice;
typedefstructcangkuStorehouse;
intImport(Storehouset[]);
voidList(Storehouset[],intn);
voidSearch(Storehouset[],intn);
intDeleteRecord(Storehouset[],intn);
intAddRecord(Storehouset[],intn);
intchuku(Storehouset[],intn);
voidSort(Storehouset[],intn);
voidSaveRecord(Storehouset[],intn);
intLoadRecord(Storehouset[]);
intLoadRecord1(Storehouset[]);
voidSave(Storehouset[],intn);
voidLoad(Storehouset[],intn);
voidLoad1(Storehouset[]);
intMenu_select();
voidtuichu();
voidmain()
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);
case3:
length=DeleteRecord(ck,length);
case4:
length=chuku(ck,length);
case5:
length=AddRecord(ck,length);
case6:
List(ck,length);
case7:
Sort(ck,length);
case8:
Save(ck,length);
case9:
length=LoadRecord1(ck);
Load1(ck);
Load(ck,length);
case0:
tuichu();
intMenu_select()
intc;
按Enter键进入仓库管理菜单\n"
getchar();
modeconcols=80lines=20&
color17"
\n\n"
══════════════════════════════════"
"
欢迎进入仓库产品管理系统"
1.录入仓库初始记录2.商品查询"
3.删除商品记录4.商品出库"
5.增加商品信息6.显示全部记录"
7.商品排序8.备份"
9.恢复0.退出"
╭⌒╮⌒╮∵∴."
╱◥██◣'
⌒╮∵∴"
│田│田田│∴∴"
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬"
do
\n输入您想要进行的操作选项键(0-9):
"
if(scanf("
%d"
&
c)!
=1)
while(getchar()!
\n'
continue;
while(c<
0||c>
9);
returnc;
intImport(Storehouset[])
inti,n;
\n请输入要输入的商品数目:
scanf("
n);
开始输入仓库信息:
\n第%d个商品的编号:
i+1);
t[i].num);
第%d个商品的名称:
%s"
t[i].name);
第%d个商品价格:
t[i].price);
第%d个生产厂家:
t[i].factor);
第%d个商品的入库时间:
%d%d%d"
t[i].rktime.year,&
t[i].rktime.month,&
t[i].rktime.day);
第%d个商品的入库数量:
scanf("
t[i].amount);
第%d个商品的现存数量:
t[i].namount);
第%d个商品备注:
t[i].introdution);
return(n);
voidList(Storehouset[],intn)
inti;
**************************************************************************\n"
编号名称价格生产厂家入库时间入库数量现存数量备注\n"
--------------------------------------------------------------------------\n"
%-5d%-10s%-7d%-13s%-5d%-3d%-7d%-10d%-8d%-7s\n"
t[i].num,t[i].name,t[i].price,t[i].factor,\
t[i].rktime.year,t[i].rktime.month,t[i].rktime.day,t[i].amount,t[i].namount,t[i].introdution);
//
voidSearch(Storehouset[],intn)
charxuanze;
chars[20],ch[20];
intb,m,d,y,i,flag=0;
\n\n请输入查询方式(按5可返回系统管理菜单):
\n1.通过编号查询2.通过名称查询\n"
\n3.通过生产厂家查询4.通过入库时间查询\n"
\n5.返回菜单选项\n"
5'
/*判断指令是否有效,无效则重新输入*/
\n请输入物品编号:
b);
if(b==t[i].num)
flag=1;
\n\n要查找的商品信息如下:
printf("
}
if(flag==0)
要查找的商品不存在!
\n请输入要查找的商品名称:
s);
if(strcmp(s,t[i].name)==0)/*将两个字符串进行比较*/
\n请输入要查找的生产厂家:
ch);
if(strcmp(ch,t[i].factor)==0)