版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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; /货物名称 int Counter;
4、 /货物数量 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()是信息输入、双链表初始化函数
6、,可以按用户执意输入信息 、包括货物的名称编号和数量。其主要功能流程图如下: 开 始输入名称、编号、数量合法?NYinit_linklist(dlinklist *l)结 束(2)、货物出库功能void OutputByName()、void OutputByNum()两个函数 分别可实现通过名称查找出库和通过编号查找出库其主要功能流程图如下:开始输入名称或编号货物是否存在NY 货物出库结束(3)、货物查询功能()void Show()函数是一个信息查询函数及查询菜单函数,显示一个查询菜单,利用switch语句实现按货物编号查询和按名称查询,利用循环语句dowhile()返回查询菜单,brea
7、k语句终止循环。其主要功能流程如下:开 始输入查询的货物编号货物是否存在NY提示未找到NY输出信息循环查找结 束(4)、信息保存及读取 void save()、void ReadInfo()这两个函数分别实现信息保存到文件以及从文件中读取信息的功能。把信息保存到文件中以及读取保存在文件里的信息并输出。由于采用的是链式存储,可以很方便的一下把文件里的信息全部读取出来,再依次创建生成双链表,将信息全部读到两个双链表中存储。其主要功能流程图如下:开 始创建文件Y数据写入文件关闭文件结 束6、测试与调试1、输出界面运行程序,进入主菜单界面,用户可以选择货物入库出库、加载货物信息、信息查询、保存信息到文
8、件、从文件中读入信息、退出系统等操作选项。为了避免再次输入大量信息,可以先选择从文件中读入信息,将以前输入的信息重新显示在屏幕上,再进行后续操作。主菜单界面如图所示:(1)、货物的入库按照程序引导输入货物信息输入苹果、橘子、馒头各10个。(2)、输出所有货物信息信息在主菜单输入3进入货物查看界面,所有货物信息如下图显示所示:(3)、货物出库在主菜单中输入1进行货物出库选择按名称出库输出出库结果选择按编号出库输出出库结果(4)、查询信息 输入4进入信息查询界面,用户可根据自己喜好选择按货物编号查询、按货物名称查询或者退出返回主菜单。信息查询界面如图所示:用户可根据自己喜好选择按哪种方式查询,查询
9、结束后,按任意键返回信息查询界面。输入3则返回主菜单。以下是分别按照货物编号、货物名称查询的情况。按货物编号查询情况:按货物名称查询:(5)、调用信息为了避免每次运行程序时都要输入大量数据,在第一次运行程序后,就已经将信息自动存档,再次运行时,可以先直接调用信息,按任意键返回主菜单,再进行后续操作。调用的信息如图所示:显示文件中读取的信息如图所示:(6)退出系统输入0则退出系统,并保存信息。如图所示:3、调试分析运行程序,进入主菜单界面,用户可以根据编号选择测试数据:选择1号功能进入输入信息模块,根据提示信息将以下信息输入系统中。 名称:苹果。编号:1。数量:10 名称:橘子。编号:2。数量:
10、10 名称:馒头。编号:3。数量:10存在问题的思考及算法的改进设想:1显示的内容堆积在一个屏幕上,看着很混乱,用C语言里的clrscr()函数在VC+里似乎不能用,上网查了下资料,找到了一个头文件为stdlib.h的清屏函数system(”cls”)。2调试程序时,遇到了屏幕一闪又回到原来界面的情况,没有输出想要得到的信息,原来是信息在屏幕上显示后,程序执行到了清屏函数,所以立马清屏了,为了看到输出信息,调用system(”pause”)函数,使程序暂停,以让用户看到输出地信息,然后再按任意键继续执行程序。3对于读写文件不是很熟悉,fread和fwrite函数不是很会用,在读出文件里的信息并
11、输出时花了很长时间,不过,最后总算是会用了。4、设计总结本次课程设计是围绕数据结构进行。根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个员工管理系统功能,那就是在这个系统中实现对职工信息的插入、删除、查询、排序、修改。但是,为了实现该功能,却需要一定的算法和数据结构以保证实现的时间和空间效率。把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。当我们面对一个实际问题,应该迅
12、速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。7、 源程序清单源代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK 1#defin
13、e ERROR 0#define max 20typedef 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
14、、查看货物信息; n");printf("tt -4、查询货物信息; n");printf("tt -0、退出并保存信息; n");printf("tt 请选择操作<0-4>:");scanf("%d",&flag);return flag;int Menu1()int flag; system("cls");printf("ttt 1、货物的入库;n");printf("ttt 2、货物的出库;n");printf(&quo
15、t;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");printf("ttt 请选择操作:");scanf("%d",&am
16、p;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(siz
17、eof(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 请输入货物的数量:");scanf(&
18、quot;%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->Number<=L->Number)break;p=L;if(L=NULL)p->next=s;s-&
19、gt;prior=p;s->next=NULL;else if(L->Number=s->Number)L->Counter=L->Counter+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;
20、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->Nu
21、mber=num)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->
22、;Counter);printf("ttt 请输入货物出库的数量:"); scanf("%d",&num1);getchar();if(p->Counter>num1)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);el
23、se 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,char namemax)int num1;dlnode *p;p=L;while(p=p
24、->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 货物的数
25、量:"); printf("%dn",p->Counter);printf("ttt 请输入货物出库的数量:"); scanf("%d",&num1);getchar();if(p->Counter>num1)p->Counter=p->Counter-num1;printf("ttt 出库成功!仓库中%s剩余的数量为:%dn",p->Name,p->Counter); else if(p->Counter=num1)if(p->next=NU
26、LL)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 Save(dlinklist L) dlnode *p;p=L
27、->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 "); syste
28、m("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);
29、 r->next=s;s->prior=r;r=s;r->next=NULL;fclose(fp); printf("tttt加载数据成功!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; else break; return p;dlnod
30、e *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() 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
31、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; defaul
32、t:printf("ttt 选择错误!请重新选择<1-3>!n"); printf("ttt "); system("pause");if(flag=0)break;break;case 3:flag1=0;break; default:printf("ttt 选择错误!请重新选择<1-3>!n"); printf("ttt "); system("pause"); if(flag1=0)break;break;case 2:Load(L);break;case 3:Show(L);break;case 4:while(1) switch(Menu2() case 1: printf("ttt 请输入您要查询的货物的编号:"); scanf("%d",&num2);getchar(); if(SrchByNumber(L,num2)!=NULL) printf("ttt 查询成功!货物的信息是:n"); printf("ttt 货物的编号:"); printf("%dn",SrchByNumber
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学四年级(机械设计制造及其自动化)智能制造技术试题及答案
- 2025年高职陶瓷设计与工艺(陶瓷烧制工艺)试题及答案
- 2025年大学医疗器械维修与管理(医疗器械监管)试题及答案
- 2026年河南单招第二志愿补录考试模拟试卷含答案高分冲刺版
- 2026年北京单招递补录取专项冲刺卷含答案补录考生专用
- 2026年湖南单招新能源汽车技术专业技能故障诊断经典题集含答案
- 2026年天津中职生单招专业技能对口冲刺卷含答案原专业11适配
- 2026年甘肃单招考前预测密卷含答案文化素质职业技能双科综合
- 旅游咨询员安全实践模拟考核试卷含答案
- 中药煎膏剂工发展趋势竞赛考核试卷含答案
- 货币发展史课件
- 儿童体适能初级基础课程8
- 燃用生物质循环流化床锅炉生产项目节能评估报告(节能专)
- 心外科护理教学课件
- 2025年江苏省无锡市梁溪区中考二模语文试题含答案解析
- 电厂高压配电室管理制度
- 四年级上册数学脱式计算大全500题及答案
- 分位数因子增广混频分位数回归模型构建及应用研究
- T-HAAI 003-2024 数据资产 数据质量评价规范
- DB31∕T 310001-2020 船舶水污染物内河接收设施配置规范
- GB/T 44968-2024粮食储藏小麦粉安全储藏技术规范
评论
0/150
提交评论