仓库管理系统说明书.docx

上传人:b****5 文档编号:8541517 上传时间:2023-01-31 格式:DOCX 页数:29 大小:177.94KB
下载 相关 举报
仓库管理系统说明书.docx_第1页
第1页 / 共29页
仓库管理系统说明书.docx_第2页
第2页 / 共29页
仓库管理系统说明书.docx_第3页
第3页 / 共29页
仓库管理系统说明书.docx_第4页
第4页 / 共29页
仓库管理系统说明书.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

仓库管理系统说明书.docx

《仓库管理系统说明书.docx》由会员分享,可在线阅读,更多相关《仓库管理系统说明书.docx(29页珍藏版)》请在冰豆网上搜索。

仓库管理系统说明书.docx

仓库管理系统说明书

目录

摘要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"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1