版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程名称数据结构设计题目 运动会分数统计专 业计算机科学与技术班级学号姓名完成日期 2012年6月8日课程设计任务书设计题目:仓库管理系统设计内容与要求:【设计内容】为仓库设计一个仓库管理系统,记录存储货物的编号、名称、数量。并且可以 随时进行出货和出库操作、可随时查看货物信息。【基本要求】1)建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况;2)可以增加或删除货物;3)可以实现货物的入库出库;4)能用文件保存仓库货品信息;指导教师:2012年6月8日课程设计评语成绩:指导教师:1、问题描述建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物信
2、息、实现货物的入库出库,要求能用文件保存仓库货品信息。2、基本要求(1)、数据要求1) 建议输入货物的名称,编号,数量等,其余信息学生自行设计;2) 输出形式:有合理的提示,编号,名称,数量对应;3) 数据的存储结构自行设计。4)仓库货物的相关数据要存储在数据文件中。(2)、操作要求建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物信息、实现货物的入库出库,要求能用文件保存仓库货品信息。(3)、测试数据要求测试数据要求使用:1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。(4)、界面要求有合理的提示,每个功能可以设立菜单,根据
3、提示,能完成相关的功能操作并符合要求。(5)、存储结构要求学生自己根据系统功能要求自己设计,但是要求仓库货物的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c 语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构。3、数据结构(1)、定义货物数据类型定义货物数据类型双向链表,用于存放货物的信息,包括货物名称,数量,编号等信息。typedef struct dnodeint Number; / 货物编号char Namemax; / 货物名称int Counter; / 货物数量struct dnode *prior,*next;dlnode,*dlinkl
4、ist;4) 总体设计根据仓库管理系统的分析及设计要求,可以将此系统分为四个模块:信息统计模块、信息排序输出模块、信息查询模块、信息调用模块。(1)、信息统计模块实现信息的输入、统计,涉及函数有:void Input()、(2)、信息输出模块实现信息的输出,涉及函数有:void OutputByName()、voidOutputByNum()void init_linklist()void Show()(3)、信息查询模块实现信息的查询,涉及函数有:(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出、保存信息,涉及函数有:void Load(), void Save()主函数与各函数
5、调用关系流程图、结构图:货物的入库和出库加载货物信息查看货物信息查询货物信息退出并保存信息信息排序输出模块流程图按货物编号查询按货物名称查询退出返回主菜单主菜单XZ信息查询模块流程图5、详细设计(1)、货物入库功能void Input。、void InitList()是信息输入、双链表初始化函数,可以按用户执意 输入信息、包括货物的名称编号和数量。其主要功能流程图如下:NYinit_linklist(dlinklist *l)束(2)、货物出库功能void OutputByName()、void OutputByNum()两个函数分别可实现通过名称查找出库和通过编号查找出库其主要功能流程图如下
6、:(3)、货物查询功能()void Show()函数是一个信息查询函数及查询菜单函数,显示一个查询菜单,利用 switch语句实现按货物编号查询和按名称查询,利用循环语句do-while()返回查t5菜单,break 语句终止循环。其主要功能流程如下:(4)、信息保存及读取void save()、void ReadInfo(泅两个函数分别实现信息保存到文件以及从文件中 读取信息的功能。把信息保存到文件中以及读取保存在文件里的信息并输出。由 于采用的是链式存储,可以很方便的一下把文件里的信息全部读取出来,再依次 创建生成双链表,将信息全部读到两个双链表中存储。其主要功能流程图如下:关闭文件6、测
7、试与调试1、输出界面运行程序,进入主菜单界面,用户可以选择货物入库出库、加载货物信息、 信息查询、保存信息到文件、从文件中读入信息、退出系统等操作选项。为了避 免再次输入大量信息,可以先选择从文件中读入信息,将以前输入的信息重新显 示在屏幕上,再进行后续操作。主菜单界面如图所示:信信存 一人物物物保 物或看询出T 江能本查退0 12 3 40累 -加 二 聿 SV- II,一和息息白,,息(1)、货物的入库工、货物的入库2,货物的出库;3、返回主菜电请选择操作.九2,1请请请请物物回的的主人出菜.,编名的物物 一鬼隹器闪 择人人入果10苹.:量按照程序引导输入货物信息输入苹果、橘子、馒头各10
8、个。(2)、输出所有货物信息信息在主菜单输入3进入货物查看界面,所有货物信息如下图显示所示:欢迎进入包库管理系统! In一次查看黄,一 _ .4、查询贺物信息1 一出舁保存信息:数量101S编号12度、请按任意鞋继续.(3)、货物出库在主菜单中输入1进行货物出库士二安名符.我编号出库1I 2s回上一岛 请选择爵;.选择按名称出库I#苹果库库层i货 果的 出出一色的;苹翟 越干上耕库是出 三编回酎出覆客一重物 蓑返窗要信编名数货 、, 1父的的的的人 1 2 3东翦物物物输 请叱罡相番请力入茸物出库的数量:5输出出库结果一一 q一口中单果剩余的数量为:E 请按任意键继续一.选择按编号出库而出一区
9、的 尊P上钙库 苔编回科出 翼返哪事3 *Ji川1仃|1( 量 - 数 - 子的12橘翼 是出 一息物 信编名数货 曲的的的汇心物物物输输出出库结果请瑜入货物出库的数量:5出库成功I 库中橘子乘除的数量为 请获任意键矗绕一(4)、查询信息输入4进入信息查询界面,用户可根据自己喜好选择按货物编号查询、按货 物名称查询或者退出返回主菜单。信息查询界面如图所示:1.装编易查询;2,按名称查询;3.返回主菜单: 请选择操作:用户可根据自己喜好选择按哪种方式查询,查询结束后,按任意键返回信息 查询界面。输入3则返回主菜单。以下是分别按照货物编号、货物名称查询的情 况。按货物编号查询情况:查查菜色询物之橘
10、S续 口薪主耕查货:- 0 编名回翔要重键 展返蓟悠功编名数意 、变成的的的任 1 2 NEe物药物送物息 ;暮 询询第1的的子按货物名称查询:苹果名;的是物息询的的果香黄不自询物苹S续 I主稀查货 快您功编名数意 、二成的附的任 12 3.阴需物物物按(5)、调用信息为了避免每次运行程序时都要输入大量数据,在第一次运行程序后,就已经 将信息自动存档,再次运行时,可以先直接调用信息,按任意键返回主菜单,再 进行后续操作。调用的信息如图所示:欢迎进入仓库管理系统!-i苓襄嗡库和出库,T:查看贵/4a查询贡物后显0.退出弃保荐信息息,息,s 9萤存储成功”?谢谢使用 亲住意键避续显示文件中读取的信
11、息如图所示:息,市息息息信信信存物物物保蚊物就看询出辔桁查杳建续 功继 成碑 2S :数任 4载按 0-加请J三豳.丁器出* 3 .7息 转和息息息信信信存 -Ve人物物物保m 好的裳是洋=, 支物既看询出T XL倍加查查退:裳信信信存询出查退3、调试分析运行程序,进入主菜单界面,用户可以根据编号选择测试数据:选才 1号功能进入输入信息模块,根据提示信息将以下信息输入系统中名称:苹果。编号:1。数量:10名称:橘子。编号:2。数量:10名称:馒头。编号:3。数量:10存在问题的思考及算法的改进设想:1显示的内容堆积在一个屏幕上,看着很混乱,用 C语言里的clrscr()函数在 VC+理似乎不能
12、用,上网查了下资料,找到了一个头文件为的清屏函数system(“cls)。2调试程序时,遇到了屏幕一闪又回到原来界面的情况,没有输出想要得到的信息,原来是信息在屏幕上显示后,程序执行到了清屏函数,所以立马清屏了, 为了看到输出信息,调用system (pause)函数,使程序暂停,以让用户看到输 出地信息,然后再按任意键继续执行程序。3对于读写文件不是很熟悉,fread和fwrite函数不是很会用,在读出文件里 的信息并输出时花了很长时间,不过,最后总算是会用了。4、设计总结本次课程设计是围绕数据结构进行。根据问题描述可知,需要 解决问题并不复杂,整个问题只需要实现一个员工管理系统功能,那 就
13、是在这个系统中实现对职工信息的插入、删除、查询、排序、修改, 但是,为了实现该功能,却需要一定的算法和数据结构以保证实现的 时间和空间效率。把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。因此应该综合考虑这样的数据结构、算法以及它们的空间和
14、时间效率,然后从中选择一个作为实现程序的基础。此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。7、 源程序清单源代码:#include#include#include# define OK 1# define ERROR 0# define max 20typedef struct dnodeint Number;char Namemax;int Counter;struct dnode *prior,*next;dlnode,*dlinklist;int M
15、enu()printf(tt欢迎进入仓库管理系统!printf(tt-1、货物的入库和出库;n);printf(tt-2、加载货物信息;n);printf(tt-3、查看货物信息;n);printf(tt-4、查询货物信息;n);printf(tt-0、退出并保存信息;n);printf(tt请选择操作: );int flag;system(cls);scanf(%d,&flag);return flag;n);int Menu1()int flag;system(cls);printf(ttt1、货物的入库;n);printf(ttt2、货物的出库;n);printf(ttt3、返回主菜单;
16、n);printf(ttt请选择操作:);scanf(%d,&flag);return flag;int Menu2()int flag;system(cls);printf(ttt1、按编号查询;n);printf(ttt2、按名称查询;n);printf(ttt3、返回主菜单;n);printf(ttt请选择操作:);scanf(%d,&flag);return flag;int Menu3()int flag;system(cls);printf(ttt 1、按名称出库;n);printf(ttt2、按编号出库;n);printf(ttt3、返回上一层;n);printf(ttt 请选择
17、操作:);scanf(%d,&flag);return flag;void init_linklist(dlinklist *l)*l=(dlinklist)malloc(sizeof(dnode);(*l)-prior=NULL;(*l)-next=NULL;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 请输入货物的数
18、量:);scanf(%d,&counter);getchar();s=(dlnode*)malloc(sizeof(dnode);s-Number=number;strcpy(s-Name,name);s-Counter=counter;if(L-next=NULL)L-next=s;s-prior=L;s-next=NULL;elsewhile(L=L-next)!=NULL)if(s-NumberNumber)break; p=L;if(L=NULL)p-next=s;s-prior=p;s-next=NULL;elseif(L-Number=s-Number)L-Counter=L-Co
19、unter+s-Counter; elses-prior=L-prior;L-prior-next=s;s-next=L;L-prior=s;printf(ttt 入库成功!n);printf(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 OutputB
20、yNum(dlinklist L,int num)int num1;dlnode *p;p=L;while(p=p-next)!=NULL)if(p-Number=num)break;if(p=NULL) printf(ttt 仓库中没有该编号的货物!n);elseprintf(ttt 货物的信息是:n);printf(ttt 货物的编号:);printf(%dn,p-Number);printf(ttt货物的名称:);printf(%sn,p-Name);printf(ttt货物的数量:);printf(%dn,p-Counter);printf(ttt 请输入货物出库的数量:);scanf
21、(%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);elsep-prior-next=p-next;p-next-prior=p-prior;free(p);printf(ttt 出库成功!货物已经全部出库!n);else printf(ttt 仓库中货物数量不够出库数
22、量,请核实货物信息!n);printf(ttt );system(pause);void OutputByName(dlinklist L,char 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);elseprintf(ttt 货物的信息是:n);printf(ttt 货物的编号:);printf(%dn,p-Number);printf(ttt货物的名称:);printf(%sn,p-Name);pr
23、intf(ttt货物的数量:);printf(%dn,p-Counter);printf(ttt 请输入货物出库的数量:);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);elsep-prior-next=p-next;p-next-prior=p-pri
24、or;free(p);printf(ttt 出库成功!货物已经全部出库!n);else printf(ttt 仓库中货物数量不够出库数量,请核实货物信息!n);printf(ttt );system(pause);void Save(dlinklist L)dlnode *p;p=L-next;FILE *fp;if(fp=fopen(,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
25、数据存储成功! 谢谢使用!n);printf(ttt );system(pause);void Load(dlinklist L)dlnode *r,*s;r=L;FILE *fp;if(fp=fopen(,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 加载数据
26、成功!n);printf(tttt);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;elsebreak;return p;dlnode *SrchByNumber(dlinklist L,int num)dlnode *p;p=L-next;while (p!=NULL)if (p-Number!=num) p=p-next;elsebreak;return p;void main()
27、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 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;break;case 2:L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度环保设备制造企业融资合同参考格式4篇
- 2025年度出租车公司车辆运营及驾驶员激励政策合同4篇
- 2025年度电视剧编剧团队聘用合同书4篇
- 二零二五版门窗行业国际市场拓展与出口合同3篇
- 二零二五年度大泽15kw柴油发电机购销合同范本3篇
- 二零二五年度充电桩充电桩与充电站安全防护合同4篇
- 二零二五年度沧州租赁合同信息平台建设合同3篇
- 二零二五年度新能源汽车研发股份投资合同4篇
- 2025年度智能鱼塘管理系统承包合同2篇
- 2025版脚手架材料采购与施工服务合同范本4篇
- 燃气经营安全重大隐患判定标准课件
- JB-T 8532-2023 脉冲喷吹类袋式除尘器
- 深圳小学英语单词表(中英文)
- 护理质量反馈内容
- 山东省济宁市2023年中考数学试题(附真题答案)
- 抖音搜索用户分析报告
- 板带生产工艺热连轧带钢生产
- 钻孔灌注桩技术规范
- 2023-2024学年北师大版必修二unit 5 humans and nature lesson 3 Race to the pole 教学设计
- 供货进度计划
- 弥漫大B细胞淋巴瘤护理查房
评论
0/150
提交评论