仓库管理系统程序设计训练报告_第1页
仓库管理系统程序设计训练报告_第2页
仓库管理系统程序设计训练报告_第3页
仓库管理系统程序设计训练报告_第4页
仓库管理系统程序设计训练报告_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HUNAN UNIVERSITY程序设计训练报 告学生姓名xxxx xxxxx 学生学号 xx2 xxx 专业班级 xxxx班 指导老师 xxxx 院长 xxx 2012 年6 月 12 日目录1软件开发平台22软件功能说明22.1功能分析说明图32.2各项功能说明33软件设计详细内容53.1采用的主要数据结构类型53.2流程图64软件测试114.1软件测试用例114.2软件测试报告255附录265.1软件使用说明265.2源码265.3参考文献376 心得.38 1. 软件开发平台配置环境 Windows 7(32位) 系统 运行环境 Windows 7(32位) 系统开发工具 Dev C+

2、 程序语言 C 语言2. 软件功能说明仓库产品管理系统要求记录产品的名称、制造商、产地、原有产量、现有量、编号、产品位置。亓学忠: 1、创建产品信息 2、输出产品信息 3、修改产品信息 4、插入产品信息 5、删除产品信息 6、查询某产品信息 7、按产品名称排序 8、按产品编号排序 9、保存产品信息到文件 10、从文件文件中读取产品信息朱宏伟: 1、目录 2、主函数仓库产品管理系统输入产品信息输出产品信息修改产品信息产品信息排序插入产品信息删除产品信息查询产品信息退出系统按产品名称排序按产品编号排序2.1功能分析说明图 2.2各项功能说明要求对分别上面的每个功能模块进行详细的文字说明输入模块 c

3、reateList() 在主函数里面选择1 进入输入模块, 首先建立一个名为product 的文本文档,用scanf函数依次从键盘输入产品名称 制造商 产地 原产量 现有量 编号 存放位置。 然后再把这些信息用printf函数写入文本文档,如果输入错误要重新输入。最后关闭文件。 打印模块 printList() 在主函数里面选择2 进入打印模块, 打开名为product的文本文档,然后依次把文本里的产品名称 制造商 产地 原有量 现有量 编号 存放位置,用printf函数文本读出来,用printf 函数显示出来,再关闭文件。 查找模块 find() 在主函数里面选择8 进入查找模块,再打开名为

4、product的文本文档,然后输入要查找的产品的名称,通过strcmp函数找到该产品的位置,再通过printf函数输出该产品息。如果库中没有此种产品,会提示输入错误,重新输入产品名称。然后关闭文件退出查找模块。 修改模块 changeproduct() 在主函数里面选择7进入输入模块,然后打开名为protect的文本文档,输入要修改的产品的名称,通过strcmp函数找到该产品的位置,找到后直接输入新的信息,如果产品库中没有此种产品的名称,会提示重新输入产品名称。然后关闭文件。 删除模块 delproduct() 在主函数里面选择5 进入删除模块,然后打开名为product的文本文档,然后要删除

5、的产品的名称,通过strcmp函数找到该产品位置,找到后又分三种情况: 1、如果该产品在链首,那么直接把链首位置后移到下一链节,然后清除此链节所占内存; 2、如果产品信息在链尾,那么直接上一链节指向NULL,然后清除此链节所占空间; 3、如果产品信息在链中,那么直接把上一链节的指针跳过此链节指向下一连接,然后清除此链节所占空间。 如果找不到此种产品,会提示重新输入产品名称,正确输入后按上面的三种情况运行此模块。 删除后退出删除模块。插入模块 insertproduct() 在主函数里选择6进入到插入模块,打开名为product的文本文档,然后直接输要插入的产品的名称 制造商 产地 原产量 现有

6、量 编号 存放位置,然后此模块会直接把该信息插入到信息首位,插入后退出此模块。排序模块 namesortList()或者numberssortList() 在主函数里选择3进入按产品名称排序模块,选择4进入按产品编号排序模块,打开名为product的文本文档,然后模块会通过链节一个一个对比彼此的名称大小(用strcmp函数)或者编号大小,然后小者在前,大者在后重新排序,排序后退出此模块。退出系统模块 通过输入0选择直接退出系统3软件设计详细内容3.1 采用的主要数据结构类型仓库管理系统:#include<stdio.h> #include<string.h> #incl

7、ude<stdlib.h> 链表 3.2 流程图 1、main()函数流程图:namesortList(h)numberssortList(h)breakbreakinput select select=0? select=1? Select=2?createList()breakbreakbreakbreakreturnmain()YNNYY Select=3?NN Select=4?N Select=5?YYprintList(h)Ndelproduct(h)NNN Select=7? Select=6?YYYinsertproduct(h) Select=10?N Selec

8、t=9? Select=8?breakbreakYYchangeproduct(h) find(h) load(h)breakbreakY save(h)2、createList() 函数流程图:printf(.); input ni=1?i=3?i=2?printf(.);printf(.);.i=n?NYNYYNY printf(.);return h3、printList()函数流程图: returnnewNode->next!=NULL?N printf(.);Y newNode=newNode->next input nameYcur=NULL?printf(.);YNs

9、trcmp(cur->name,name.)?curpre=curcur=cur->next4、find() 函数流程图:N5、changeproduct() 函数流程图:input nameYcur=NULL?printf(.);YNstrcmp(cur->name,name.)?curpre=curcur=cur->nextNinput nameNNstrcmp(cur-> name,name)?curpre=curcur=cur->nextNNcur!=NULL?cur=h?h=h->nextfree(cur)cur->next=NULL?

10、curpre->next=NULLfree(cur)curpre->next=cur->nextfree(cur)6、delproduct()函数流程图:YreturnYYY 4. 软件测试4.1软件测试用例1、 创建产品信息2、 输出数据3、 按名称排序4、 按产品编号排序5、 删除产品信息6、 插入产品信息 7、修改产品信息8、 查询产品信息9、 保存10、 打开文件11、 退出软件4.2软件测试报告将4.1 测试过程中能完成的功能和不能完成的功能以及不能完全完成的功能进行列表分析,指出测试结果和出错原因,例如:标号项目预期结果实际结果出错原因出错次数01主函数菜单美观的

11、菜单得到美观的菜单无无02输入产品信息正确输入数据完成无无03输出产品信息正确输出数据完成无无04按名称排序正确排序完成无无05按产品编号排序正确排序完成无无06删除产品信息正确删除数据完成无无07修改产品信息正确修改完成无无08查询产品信息正确查询到信息完成无无09退出系统正确退出系统完成无无5.附录5.1软件使用说明运行条件:本软件可以在Dev C+ 和 Visual C+ 里运行,在Turbo C 下不能运行,其他编程软件没有测试。进入菜单, 选择你要执行模块,在初次使用时,应收先选择数字1 输入航班信息后才能使用其他模块,5.2源码/*仓库产品管理系统-亓学忠*/#include<

12、;stdio.h> /*包含常用库函数*/#include<string.h> /*包含strcmp、strcpy字符串比较拷贝函数*/#include<stdlib.h> /*包含exit强制结束函数*/#include<conio.h>struct product /*定义相关链表*/char name12; /*产品名称*/char manufacturer30; /*制造商*/char origin30; /*产地*/int originqun; /*产品原有数量*/int nowqun; /*现有产品数量*/int numbers; /*产品

13、编号*/char location30; /*存放位置*/struct product *next; /*指向下一个同类型结构*/;void W()printf("nnn");printf("tn");printf("t n");printf("t n");printf("t n");printf("t n");printf("t n");printf("t 欢迎使用产品库存管理系统 n");printf("t n"

14、);printf("t 按任意键继续 n");printf("t n");printf("t n");printf("t n");printf("t n");printf("t n");printf("tn");getch();struct product *createList() /*定义新建产品信息函数*/struct product *head=NULL,*cur=NULL,*curnext=NULL; /*定义头节点、当前节点、下一个节点*/in

15、t n,i; /*定义节点数、循环变量*/printf("t请输入要创建的节点数:"); scanf("%d",&n);for(i=0;i<n;i+) /*用for循环输入产品信息*/if(i=0) /*输入头节点信息*/ A: printf("t请输入第%d种产品的:名称 制造商 产地 原产量 现有量 编号 存放位置n",i+1);curnext=(struct product*)malloc(sizeof(struct product); /*开辟curnext需要的空间*/printf("t")

16、;scanf("%s%s%s%d%d%d%s",curnext->name,curnext->manufacturer,curnext->origin,&(curnext->originqun),&(curnext->nowqun),&(curnext->numbers),curnext->location);if(curnext->originqun<0|curnext->nowqun<0|curnext->originqun<curnext->nowqun) /*

17、判断输入数据是否正确*/ printf("nt输入数据错误,请重新输入!nn");goto A;curnext->next=NULL;head=curnext; /*将cuenext赋给头节点*/cur=curnext; /*将cuenext赋给当前节点cur*/elsecurnext=(struct product*)malloc(sizeof(struct product); /*开辟下一个节点需要的空间*/B: printf("t请输入第%d种产品的:名称 制造商 产地 原产量 现有量 编号 存放位置n",i+1);printf("

18、t");scanf("%s%s%s%d%d%d%s",curnext->name,curnext->manufacturer,curnext->origin,&(curnext->originqun),&(curnext->nowqun),&(curnext->numbers),curnext->location);if(curnext->originqun<0|curnext->nowqun<0|curnext->originqun<curnext->no

19、wqun) /*判断输入数据是否正确*/ printf("nt输入数据错误,请重新输入!nn");goto B;curnext->next=NULL;cur->next=curnext; /*将当前节点与下个节点连接起来*/cur=curnext; /*当前节点后移*/system("cls"); /*DOS清屏*/printf("nt恭喜你输入已完成。nn");return head; /*结束输入信息并返回主菜单*/;void printList(struct product *h) /*定义输出产品信息函数*/str

20、uct product *newNode; newNode=h; /*获取链表头指针*/ system("cls");printf("nt名称t制造商t产地t原产量t现有量t编号t存放位置");while(newNode->next!=NULL)printf("nt%st%st%st%dt%dt%dt%s",newNode->name,newNode->manufacturer,newNode->origin,newNode->originqun,newNode->nowqun,newNode-&g

21、t;numbers,newNode->location);newNode=newNode->next;printf("nt%st%st%st%dt%dt%dt%sn",newNode->name,newNode->manufacturer,newNode->origin,newNode->originqun,newNode->nowqun,newNode->numbers,newNode->location);printf("n");struct product *delproduct(struct

22、product *h) /*定义删除某位产品的信息函数,名称由用户输入*/struct product *cur=NULL,*curpre=NULL;char name12;G:printf("t请输入要删除的产品名称:");scanf("%s",name);cur=h;while(cur!=NULL&&strcmp(cur->name,name) /*查找产品位置*/curpre=cur; /*如果不是所需节点,curpre指向后移*/cur=cur->next; /*cur也后移*/if(cur=NULL) /*如果没有找

23、到*/printf("nt没有找到该产品,请重新输入!nn"); goto G;if(!strcmp(cur->name,name) /*如果找到该产品*/if(cur=h) /*如果该节点在链首*/h=h->next; /*当前链首后移*/free(cur); /*释放链首所占内存*/ elseif(cur->next=NULL) /*如果该节点在链尾*/curpre->next=NULL; /*前一个链节指向空*/free(cur); /*释放链尾所占内存*/else /*如果该节点在链中*/curpre->next=cur->nex

24、t; /*该节点的前一位链节指向该链节后的下一位节点*/ free(cur); /*释放该节点所占内存*/system("cls");printf("nt已成功删除该产品信息!nn");return h; /*结束该函数且返回新链表后返回主菜单*/struct product *changeproduct(struct product *h) /*定义修改产品信息函数*/struct product *cur=NULL,*curpre=NULL;char name12;D:printf("t请输入要修改产品名称:");scanf(&q

25、uot;%s",name);cur=h;while(cur!=NULL&&strcmp(cur->name,name) /*查找产品位置*/curpre=cur;cur=cur->next;if(cur=NULL) /*如果没有找到*/printf("nt没有找到该产品,请重新输入!nn");goto D; if(!strcmp(cur->name,name) /*如果找到该产品*/E: printf("nt名称 制造商 产地 原产量 现有量 编号 存放位置n"); /*输入该产品的新信息*/printf(&q

26、uot;t");scanf("%s%s%s%d%d%d%s",cur->name,cur->manufacturer,cur->origin,&(cur->originqun),&(cur->nowqun),&(cur->numbers),cur->location);if(cur->originqun<0|cur->nowqun<0|cur->originqun<cur->nowqun) /*判断输入数据是否正确*/ printf("nt输入数据

27、错误,请重新输入!nn");goto E; system("cls");printf("nnt已成功修改信息!nn");return h;struct product *insertproduct(struct product *h) /*插入新产品信息到链首*/struct product *newproduct=NULL;newproduct=(struct product*)malloc(sizeof(struct product);C:printf("t请输入新产品的信息:名称 制造商 产地 原有量 现有量 编号 存放位置n

28、");printf("t");scanf("%s %s %s %d %d %d %s",newproduct->name,newproduct->manufacturer,newproduct->origin,&(newproduct->originqun),&(newproduct->nowqun),&(newproduct->numbers),newproduct->location);if(newproduct->originqun<0|newproduct-&

29、gt;nowqun<0|newproduct->originqun<newproduct->nowqun) /*判断输入数据是否正确*/printf("nt输入数据错误,请重新输入!nn");goto C;newproduct->next=h;h=newproduct;system("cls"); /*DOS清屏*/printf("nnt已成功插入新产品信息!nn");return h;struct product *namesortList(struct product *h) /*按名称对产品进行排序

30、*/struct product *newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre;if(h=NULL) /*空链*/return h;while(h!=NULL)minPre=curPre=min=cur=h;while(cur!=NULL) /*检索名称最小的点*/if(strcmp(cur->name,min->name)<0)min=cur;minPre=curPre;curPre=cur;cur=cur->next;if(newH=NULL) /*新链为空*/newH=min;newT=min;elsenewT-&

31、gt;next=min; /*附到新链尾*/newT=newT->next; /*将最小节点和原链分离*/if(min=h) /*min在链首*/h=h->next;elseif(min->next=NULL)minPre->next=NULL;elseminPre->next=min->next;min->next=NULL;system("cls");printf("nnt已成功按名称排名!nn");return newH; struct product *numberssortList(struct pro

32、duct *h) /*按产品编号排序*/struct product *newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre;if(h=NULL)return h;while(h!=NULL)minPre=curPre=min=cur=h;while(cur!=NULL)if(cur->numbers<min->numbers)min=cur;minPre=curPre;curPre=cur;cur=cur->next;if(newH=NULL)newH=min;newT=min;elsenewT->next=min;new

33、T=newT->next;if(min=h)h=h->next;elseif(min->next=NULL)minPre->next=NULL;elseminPre->next=min->next;min->next=NULL;system("cls");printf("nnt已成功按编号排名!nn");return newH;void find(struct product *h) /*按产品名查询某产品信息*/struct product *cur=NULL,*curpre=NULL;char name12;

34、F:printf("t请输入要查询的产品名称:"); /*要查询的对象名*/scanf("%s",name);cur=h;while(cur!=NULL&&strcmp(cur->name,name) /*查找产品位置*/curpre=cur;cur=cur->next;if(cur=NULL) /*如果没有找到*/printf("nt没有找到该产品,请重新输入!nn"); goto F;if(!strcmp(cur->name,name) /*找到该产品*/system("cls"

35、;); /*DOS清屏*/printf("nnt该产品信息:nn");printf("t名称t制造商t产地t原产量t现有量t编号t存放位置n"); printf("t%st%st%st%dt%dt%dt%snn",cur->name,cur->manufacturer,cur->origin,cur->originqun,cur->nowqun,cur->numbers,cur->location);void save(struct product *h) /*保存*/FILE *fp;str

36、uct product *cur;fp=fopen("product.txt","wb"); /*打开文件进行操作*/if(fp=NULL) /*若打开失败*/printf("t文件打开失败n");return;cur=h;while(cur!=NULL) /*若正确打开*/fwrite(cur,sizeof(struct product),1,fp); /*保存操作*/ cur=cur->next ;fclose(fp); /*操作完关闭文件*/fflush(stdin);/*清除缓存*/system("cls&qu

37、ot;);printf("nt恭喜你已成功保存数据!nn");struct product *load(struct product *h) /*打开文件*/struct product *cur,*temp,*newproduct,product;FILE *fp;fp=fopen("product.txt","rb"); /*打开文件进行操作*/if(fp=NULL) /*打开失败*/printf("t打开失败!n");return h;if(h!=NULL) /*成功打开*/cur=h;while(cur!=

38、NULL)temp=cur;cur=cur->next;free(temp);while(fread(&product,sizeof(struct product),1,fp)!=0)newproduct=(struct product*)malloc(sizeof(struct product);*newproduct=product;newproduct->next=NULL;if(h=NULL)temp=h=newproduct;elsetemp->next=newproduct;temp=newproduct;system("cls");printf("nt已成功打开文件!nn");fclose(fp);return h;void menu() /*目录*/printf("t目¤录n");printf("t n");printf("t 1 创建产品信息 n");printf("t 2 输出产品信息 n");printf("t 3 按名称排序 n");printf("t 4 按产品

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论