仓库管理系统说明书.docx
- 文档编号:8541517
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:29
- 大小:177.94KB
仓库管理系统说明书.docx
《仓库管理系统说明书.docx》由会员分享,可在线阅读,更多相关《仓库管理系统说明书.docx(29页珍藏版)》请在冰豆网上搜索。
仓库管理系统说明书
目录
摘要1
1.采用类c语言定义相关的数据类型2
2.各模块的伪码算法2
3.函数的调用关系图3
4.调试分析3
5.测试结果4
6.源程序(带注释)5
总结9
参考文献10
致谢11
附件Ⅰ任务一源程序代码12
摘要
自1972年推出C语言设计程序以来,C语言渐渐成为世界上流行最为广泛的高级设计语言,并在C语言的基础上产生了C++、VisualC++、Java、C#等。
C语言是目前编程领域中最有影响力的一种程序设计语言,它具有灵活性、丰富性、可移植性的优点。
C语言技术使人们的工作系统化,工作效率提高,并且实现了资源的共享。
一个庞大的仓库商品信息,人工处理起来非常吃力、费时。
以往的仓库管理基本上都是靠手工进行,随着仓库的规模增大,有关商品管理工作所涉及的数据量越来越大,单纯依靠增加人力、物力来进行商品管理已经脱离时代发展的轨道。
由于现今的仓库管理非常繁琐,管理人员付出大量的工作时间,得到的效率很低,有时甚至会延误商品的保质期,造成很大的经济损失。
因此为提高工作效率,减轻工作负担,开发仓库管理系统软件非常必要。
建立仓库信息管理系统,在C语言的平台下,可以方便记录商品详细信息的记录和查找等管理,提高工作效率,实现仓库商品信息管理工作流程的系统化、规范化和自动化。
这次课程设计的仓库管理系统采用结构体的方式,完成了对数据的录入、查找、删除、插入、修改、保存、输出等功能。
通过完成本课题进一步熟悉C语言基本知识,并掌握数据结构的一些重要的实用的算法思想,进一步熟悉数组的建立运用和函数调用,加深对数据结构的理解,提高算法设计的能力,锻炼编程的能力。
关键词:
仓库管理;单链表;数据结构和算法
1.采用类c语言定义相关的数据类型
(1)structDate/*声明structDate类型*/
{
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.按入库时间排序");
printf("\n");
xuanze=getch();/*从控制台无回显地取一个字符*/
for(;xuanze!
='1'&&xuanze!
='2'&&xuanze!
='3'&&xuanze!
='4';)/*判断指令是否有效,无效则重新输入*/
xuanze=getch();
if(xuanze=='1')/*按商品名称排序*/
{
inti,j;
structcangkutemp;
for(j=1;j for(i=0;i if((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); } if(xuanze=='2') /*按商品编号排序*/ { inti,j; structcangkutemp; for(j=1;j for(i=0;i if(t[i].num>t[i+1].num) { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } printf("排序成功! ! ! \n"); printf("排序后仓库信息列表如下: \n"); List(t,n); } if(xuanze=='3') /*按入库时间排序*/ { inti,j; structcangkutemp; for(j=1;j for(i=0;i if(t[i].rktime.year>t[i+1].rktime.year) { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } elseif(t[i].rktime.year==t[i+1].rktime.year) {if(t[i].rktime.month>t[i+1].rktime.month) { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } elseif(t[i].rktime.month==t[i+1].rktime.month) {if(t[i].rktime.day>t[i+1].rktime.day) { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } } } printf("排序成功! ! ! \n"); printf("排序后仓库信息列表如下: \n"); List(t,n); } if(xuanze=='4') /*返回系统管理菜单*/ Menu_select(); } 总结 本系统通过在main主函数中使用switch结构,把各个子函数连接起来,形成鲜明的结构;增加了密码登录模块,更有效的保护信息安全;数据的录入采用结构体的形式,使数据录入、显示更加规范化;主界面通过菜单函数显示所有的功能,使界面简洁紧凑,功能一目了然,通过菜单函数的十个选项,选择不同的功能实现所要进行的操作;各个功能的设计比较严谨,使用过程方便快捷,可以更加准确快速的进行仓库信息的管理和存储;独特的系统使整个结构清晰明了;该程序设计小巧,便于使用和推广。 程序简便易操作,每个函数都有各自不同的功能,使得仓库信息管理管理系统更加细致全面。 我通过学习C语言程序设计和算法与数据结构,对C语言的基本概念和算法与数据结构也有了一定的了解,平时虽然也做过一些练习,也看了不少程序从而掌握一定的语法知识和编程经验。 但是对于有些功能强大的软件还是没有尝试过能否编得起来。 所以决定在所学知识的基础上,再加以拓展,编个主题明确、具有一定使用价值的中小程序,提高了自身的编程水平与上机调试技能。 通过这三星期的实习,我得到了很大的收获。 参考文献 [1]严蔚敏,吴伟民.《数据结构(C语言版)》.清华大学出版社.2007) [2]张永,李睿,年福忠.《算法与数据结构》.国防工业出版社.2009) [3]王连相,赵付青.《C/C++程序设计教程》.中国铁道出版社.2011) [3]谭浩强.《c语言程序设计》.清华大学出版社.2008) 致谢 附件Ⅰ任务一源程序代码 #include #include #include #include structDate { intyear; intmonth; intday; }; structcangku { intnum; charname[20]; charfactor[50]; charintrodution[50]; intamount; intnamount; intprice; structDaterktime; }; 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); break; case3: length=LoadRecord(ck); length=DeleteRecord(ck,length); SaveRecord(ck,length); break; case4: length=LoadRecord(ck); length=chuku(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; case0: tuichu(); } } } intMenu_select() { intc; printf("按Enter键进入仓库管理菜单\n"); getchar(); system("cls"); system("modeconcols=80lines=20&color17"); printf("\n\n"); printf("══════════════════════════════════"); printf(""); printf("欢迎进入仓库产品管理系统"); printf(""); printf(""); printf("1.录入仓库初始记录2.商品查询"); printf(""); printf("3.删除商品记录4.商品出库"); printf(""); printf("5.增加商品信息6.显示全部记录"); printf(""); printf("7.商品排序8.备份"); printf(""); printf("9.恢复0.退出"); printf(""); printf(""); printf("╭⌒╮⌒╮∵∴."); printf("╱◥██◣'⌒╮∵∴"); printf("│田│田田│∴∴"); printf("╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬"); printf("══════════════════════════════════"); do { printf("\n输入您想要进行的操作选项键(0-9): "); if(scanf("%d",&c)! =1) { while(getchar()! ='\n') continue; } } while(c<0||c>9); 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("%d",&t[i].price); printf("第%d个生产厂家: ",i+1); scanf("%s",&t[i].factor); printf("第%d个商品的入库时间: ",i+1); scanf("%d%d%d",&t[i].rktime.year,&t[i].rktime.month,&t[i].rktime.day); printf("第%d个商品的入库数量: ",i+1); scanf("%d",&t[i].amount); printf("第%d个商品的现存数量: ",i+1); scanf("%d",&t[i].namount); printf("第%d个商品备注: ",i+1); scanf("%s",&t[i].introdution); } return(n); } voidList(Storehouset[],intn) { inti; printf("**************************************************************************\n"); printf("编号名称价格生产厂家入库时间入库数量现存数量备注\n"); printf("--------------------------------------------------------------------------\n"); for(i=0;i { printf("%-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);// } printf("**************************************************************************\n"); printf("\n"); getchar(); } voidSearch(Storehouset[],intn) { charxuanze; chars[20],ch[20]; intb,m,d,y,i,flag=0; system("cls"); printf("\n\n请输入查询方式(按5可返回系统管理菜单): \n1.通过编号查询2.通过名称查询\n"); printf("\n3.通过生产厂家查询4.通过入库时间查询\n"); printf("\n5.返回菜单选项\n"); xuanze=getch();/*从控制台无回显地取一个字符*/ for(;xuanze! ='1'&&xuanze! ='2'&&xuanze! ='3'&&xuanze! ='4'&&xuanze! ='5';) /*判断指令是否有效,无效则重新输入*/ xuanze=getch(); if(xuanze=='1') { printf("\n请输入物品编号: "); scanf("%d",&b); for(i=0;i { if(b==t[i].num) { flag=1; system("cls"); printf("\n\n要查找的商品信息如下: \n"); printf("\n"); printf("**************************************************************************\n"); printf("编号名称价格生产厂家入库时间入库数量现存数量备注\n"); printf("--------------------------------------------------------------------------\n"); { printf("%-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);// } printf("**************************************************************************\n"); printf("\n"); } } if(flag==0) printf("要查找的商品不存在! ! \n"); getchar(); } if(xuanze=='2') { printf("\n请输入要查找的商品名称: \n"); scanf("%s",s); for(i=0;i { if(strcmp(s,t[i].name)==0)/*将两个字符串进行比较*/ { flag=1; system("cls"); printf("\n\n要查找的商品信息如下: \n"); printf("\n"); printf("**************************************************************************\n"); printf("编号名称价格生产厂家入库时间入库数量现存数量备注\n"); printf("--------------------------------------------------------------------------\n"); { printf("%-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);// } printf("**************************************************************************\n"); printf("\n"); } } if(flag==0) printf("要查找的商品不存在! ! \n"); getchar(); } if(xuanze=='3') { printf("\n请输入要查找的生产厂家: \n"); scanf("%s",ch); for(i=0;i { if(strcmp(ch,t[i].factor)==0) { flag=1; system("cls"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仓库 管理 系统 说明书