ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:218.40KB ,
资源ID:9111162      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9111162.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(仓库管理系统课程设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

仓库管理系统课程设计.docx

1、仓库管理系统课程设计课 程 设 计 报 告 课程名称 数据结构设计题目 运动会分数统计专 业 计算机科学与技术班 级 学 号 姓 名 完成日期 _2012年6月8日_课 程 设 计 任 务 书设计题目: 仓库管理系统设计内容与要求:【设计内容】为仓库设计一个仓库管理系统,记录存储货物的编号、名称、数量。并且可以随时进行出货和出库操作、可随时查看货物信息。【基本要求】1) 建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况;2) 可以增加或删除货物;3) 可以实现货物的入库出库;4) 能用文件保存仓库货品信息; 指导教师:_ _ 2012年 6月 8日课 程 设 计 评 语 成绩: 指导

2、教师:_ 年 月 日1、问题描述建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物信息、实现货物的入库出库,要求能用文件保存仓库货品信息。2、基本要求(1)、数据要求1) 建议输入货物的名称,编号,数量等,其余信息学生自行设计;2) 输出形式:有合理的提示,编号,名称,数量对应;3) 数据的存储结构自行设计。4)仓库货物的相关数据要存储在数据文件中。(2)、操作要求建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物信息、实现货物的入库出库,要求能用文件保存仓库货品信息。(3)、测试数据要求测试数据要求使用:1、全部合法数据;2、整体非

3、法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。(4)、界面要求有合理的提示,每个功能可以设立菜单,根据提示,能完成相关的功能操作并符合要求。(5)、存储结构要求学生自己根据系统功能要求自己设计,但是要求仓库货物的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构。3、数据结构(1)、定义货物数据类型定义货物数据类型双向链表,用于存放货物的信息,包括货物名称,数量,编号等信息。typedef struct dnode int Number; /货物编号 char Namemax; /货物名称 in

4、t Counter; /货物数量 struct dnode *prior,*next;dlnode,*dlinklist;4、总体设计 根据仓库管理系统的分析及设计要求,可以将此系统分为四个模块:信息统计模块、信息排序输出模块、信息查询模块、信息调用模块。(1)、信息统计模块实现信息的输入、统计,涉及函数有:void Input()、(2)、信息输出模块实现信息的输出,涉及函数有:void OutputByName()、void OutputByNum()void init_linklist()void Show()(3)、信息查询模块实现信息的查询,涉及函数有:(4)、信息调用模块实现信息的

5、调用,即从文件中读出信息并输出、保存信息,涉及函数有:void Load(),void Save() 主函数与各函数调用关系流程图、结构图: 信息排序输出模块流程图 信息查询模块流程图5、详细设计(1)、货物入库功能void Input()、void InitList()是信息输入、双链表初始化函数,可以按用户执意输入信息 、包括货物的名称编号和数量。其主要功能流程图如下: (2)、货物出库功能void OutputByName()、void OutputByNum()两个函数 分别可实现通过名称查找出库和通过编号查找出库其主要功能流程图如下:(3)、货物查询功能 ()void Show()函

6、数是一个信息查询函数及查询菜单函数,显示一个查询菜单,利用switch语句实现按货物编号查询和按名称查询,利用循环语句dowhile()返回查询菜单,break语句终止循环。其主要功能流程如下: (4)、信息保存及读取 void save()、void ReadInfo()这两个函数分别实现信息保存到文件以及从文件中读取信息的功能。把信息保存到文件中以及读取保存在文件里的信息并输出。由于采用的是链式存储,可以很方便的一下把文件里的信息全部读取出来,再依次创建生成双链表,将信息全部读到两个双链表中存储。其主要功能流程图如下:6、测试与调试1、输出界面 运行程序,进入主菜单界面,用户可以选择货物入

7、库出库、加载货物信息、信息查询、保存信息到文件、从文件中读入信息、退出系统等操作选项。为了避免再次输入大量信息,可以先选择从文件中读入信息,将以前输入的信息重新显示在屏幕上,再进行后续操作。主菜单界面如图所示:(1)、货物的入库按照程序引导输入货物信息输入苹果、橘子、馒头各10个。(2)、输出所有货物信息信息在主菜单输入3进入货物查看界面,所有货物信息如下图显示所示:(3)、货物出库在主菜单中输入1进行货物出库选择按名称出库输出出库结果选择按编号出库输出出库结果(4)、查询信息 输入4进入信息查询界面,用户可根据自己喜好选择按货物编号查询、按货物名称查询或者退出返回主菜单。信息查询界面如图所示

8、:用户可根据自己喜好选择按哪种方式查询,查询结束后,按任意键返回信息查询界面。输入3则返回主菜单。以下是分别按照货物编号、货物名称查询的情况。按货物编号查询情况:按货物名称查询:(5)、调用信息为了避免每次运行程序时都要输入大量数据,在第一次运行程序后,就已经将信息自动存档,再次运行时,可以先直接调用信息,按任意键返回主菜单,再进行后续操作。调用的信息如图所示:显示文件中读取的信息如图所示:(6)退出系统 输入0则退出系统,并保存信息。如图所示:3、调试分析 运行程序,进入主菜单界面,用户可以根据编号选择测试数据:选择1号功能进入输入信息模块,根据提示信息将以下信息输入系统中。 名称:苹果。编

9、号:1。数量:10 名称:橘子。编号:2。数量:10 名称:馒头。编号:3。数量:10存在问题的思考及算法的改进设想:1显示的内容堆积在一个屏幕上,看着很混乱,用C语言里的clrscr()函数在VC+里似乎不能用,上网查了下资料,找到了一个头文件为stdlib.h的清屏函数system(”cls”)。2调试程序时,遇到了屏幕一闪又回到原来界面的情况,没有输出想要得到的信息,原来是信息在屏幕上显示后,程序执行到了清屏函数,所以立马清屏了,为了看到输出信息,调用system(”pause”)函数,使程序暂停,以让用户看到输出地信息,然后再按任意键继续执行程序。3对于读写文件不是很熟悉,fread和

10、fwrite函数不是很会用,在读出文件里的信息并输出时花了很长时间,不过,最后总算是会用了。4、设计总结 本次课程设计是围绕数据结构进行。根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个员工管理系统功能,那就是在这个系统中实现对职工信息的插入、删除、查询、排序、修改。但是,为了实现该功能,却需要一定的算法和数据结构以保证实现的时间和空间效率。把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定

11、功能程序的重要意义。当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。7、源程序清单源代码:#include#include#include#define OK 1#define ERROR 0#define max 20

12、typedef struct dnode int Number; char Namemax; int Counter; struct dnode *prior,*next;dlnode,*dlinklist;int Menu() int flag; system(cls); printf(tt 欢迎进入仓库管理系统! n); printf(tt -1、货物的入库和出库; n); printf(tt -2、加载货物信息; n); printf(tt -3、查看货物信息; n); printf(tt -4、查询货物信息; n); printf(tt -0、退出并保存信息; n); printf(t

13、t 请选择操作:); scanf(%d,&flag); return flag;int Menu1() int flag; system(cls); printf(ttt 1、货物的入库;n); printf(ttt 2、货物的出库;n); printf(ttt 3、返回主菜单;n); printf(ttt 请选择操作:); scanf(%d,&flag); return flag;int Menu2() int flag; system(cls); printf(ttt 1、按编号查询;n); printf(ttt 2、按名称查询;n); printf(ttt 3、返回主菜单;n); pri

14、ntf(ttt 请选择操作:); scanf(%d,&flag); return flag;int Menu3() int flag; system(cls); printf(ttt 1、按名称出库;n); printf(ttt 2、按编号出库;n); printf(ttt 3、返回上一层;n); printf(ttt 请选择操作:); scanf(%d,&flag); return flag;void init_linklist(dlinklist *l) *l=(dlinklist)malloc(sizeof(dnode); (*l)-prior=NULL; (*l)-next=NULL;

15、 void Input(dlinklist L) dlnode *s,*p; int number,counter; char namemax; printf(ttt 请输入货物编号:); scanf(%d,&number);getchar(); printf(ttt 请输入货物名称:); scanf(%s,name); printf(ttt 请输入货物的数量:); scanf(%d,&counter);getchar(); s=(dlnode*)malloc(sizeof(dnode); s-Number=number; strcpy(s-Name,name); s-Counter=coun

16、ter; if(L-next=NULL) L-next=s; s-prior=L; s-next=NULL; else while(L=L-next)!=NULL) if(s-NumberNumber)break; p=L; if(L=NULL) p-next=s; s-prior=p; s-next=NULL; else if(L-Number=s-Number)L-Counter=L-Counter+s-Counter; else s-prior=L-prior; L-prior-next=s; s-next=L; L-prior=s; printf(ttt 入库成功!n); printf

17、(ttt ); system(pause); void Show(dlinklist L) dlinklist p; p=L-next; printf(ttt名称tt编号tt数量n); while(p!=NULL) printf(ttt%stt%dtt%dn,p-Name,p-Number,p-Counter); p=p-next; printf(ttt ); system(pause);void OutputByNum(dlinklist L,int num) int num1; dlnode *p; p=L; while(p=p-next)!=NULL) if(p-Number=num)b

18、reak; if(p=NULL) printf(ttt 仓库中没有该编号的货物!n); else printf(ttt 货物的信息是:n); printf(ttt 货物的编号:); printf(%dn,p-Number); printf(ttt 货物的名称:); printf(%sn,p-Name); printf(ttt 货物的数量:); printf(%dn,p-Counter); printf(ttt 请输入货物出库的数量:); scanf(%d,&num1);getchar(); if(p-Counternum1) p-Counter=p-Counter-num1; printf(t

19、tt 出库成功!仓库中%s剩余的数量为:%dn,p-Name,p-Counter); else if(p-Counter=num1) if(p-next=NULL) p-prior-next=NULL; free(p); else p-prior-next=p-next; p-next-prior=p-prior; free(p); printf(ttt 出库成功!货物已经全部出库!n); else printf(ttt 仓库中货物数量不够出库数量,请核实货物信息!n); printf(ttt ); system(pause);void OutputByName(dlinklist L,cha

20、r namemax) int num1; dlnode *p; p=L; while(p=p-next)!=NULL) if(strcmp(name,p-Name)=0)break; if(p=NULL)printf(ttt 仓库中没有叫该名称的货物!n); else printf(ttt 货物的信息是:n); printf(ttt 货物的编号:); printf(%dn,p-Number); printf(ttt 货物的名称:); printf(%sn,p-Name); printf(ttt 货物的数量:); printf(%dn,p-Counter); printf(ttt 请输入货物出库

21、的数量:); scanf(%d,&num1);getchar(); if(p-Counternum1) p-Counter=p-Counter-num1; printf(ttt 出库成功!仓库中%s剩余的数量为:%dn,p-Name,p-Counter); else if(p-Counter=num1) if(p-next=NULL) p-prior-next=NULL; free(p); else p-prior-next=p-next; p-next-prior=p-prior; free(p); printf(ttt 出库成功!货物已经全部出库!n); else printf(ttt 仓

22、库中货物数量不够出库数量,请核实货物信息!n); printf(ttt ); system(pause);void Save(dlinklist L) dlnode *p; p=L-next; FILE *fp; if(fp=fopen(stu.txt,w)=NULL) printf(ttt 文件打开失败!n); return; while(p!=NULL) fprintf(fp,%d %s %d ,p-Number,p-Name,p-Counter); p=p-next; fclose(fp); printf(ttt 数据存储成功!谢谢使用!n); printf(ttt ); system(

23、pause); void Load(dlinklist L) dlnode *r,*s; r=L; FILE *fp; if(fp=fopen(stu.txt,r)=NULL) printf(tttt文件打开失败!n); return; while(!feof(fp) s=(dlnode*)malloc(sizeof(dnode); fscanf(fp,%d %s %d ,&s-Number,&s-Name,&s-Counter); r-next=s; s-prior=r; r=s; r-next=NULL; fclose(fp); printf(tttt加载数据成功!n); printf(t

24、ttt); system(pause);dlnode *SrchByName(dlinklist L,char namemax) dlnode *p; p=L-next; while (p!=NULL) if (strcmp(p-Name,name)!=0) p=p-next; else break; return p;dlnode *SrchByNumber(dlinklist L,int num) dlnode *p; p=L-next; while (p!=NULL) if (p-Number!=num) p=p-next; else break; return p;void main(

25、) int num1,num2; int flag=1,flag1=1,flag2=1; char name1max,name2max; dlinklist L; init_linklist(&L); while(1) switch(Menu() case 1: while(1) switch(Menu1() case 1: Input(L); break; case 2: while(1) switch(Menu3() case 1: printf(ttt 请输入要出库的货物的名称:); scanf(%s,name1); OutputByName(L,name1); break; case

26、2: printf(ttt 请输入要出库的货物的编号:); scanf(%d,&num1);getchar(); OutputByNum(L,num1); break; case 3: flag=0; break; default: printf(ttt 选择错误!请重新选择!n); printf(ttt ); system(pause); if(flag=0)break; break; case 3:flag1=0;break; default: printf(ttt 选择错误!请重新选择!n); printf(ttt ); system(pause); if(flag1=0)break;

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

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