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

下载本文档

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

文档简介

1、HUNANUNIVERSITY程序设计训练报告学生姓名xxxxxxxxx学生学号xx2xxx专业班级xxxx班指导老师xxxx院长xxx2012年6月12日目录1 软件开发平台1软件功能说明21.1 功能分析说明图31.2 各项功能说明3软件设计详细内容51.3 采用的主要数据结构类型51.4 流程图6软件测试111.5 软件测试用例111.6 软件测试报告25附录261.7 软件使用说明261.8 源码261.9 参考文献37心得381.软件开发平台配置环境Windows7(32位)系统运行环境Windows7(32位)系统开发工具DevC+程序语言C语言2.软件功能说明仓库产品管理系统要求

2、记录产品的名称、制造商、产地、原有产量、现有量、编号、产品位置。亓学忠:1、创建产品信息2、输出产品信息3、修改产品信息4、插入产品信息5、删除产品信息6、查询某产品信息7、按产品名称排序8、按产品编号排序9、保存产品信息到文件10、从文件文件中读取产品信息朱宏伟:1、目录2.1功能分析说明图2.2各项功能说明要求对分别上面的每个功能模块进行详细的文字说明输入模块createList()在主函数里面选择1进入输入模块,首先建立一个名为product的文本文档,用scanf函数依次从键盘输入产品名称制造商产地原产量现有量编号存放位置。然后再把这些信息用printf函数写入文本文档,如果输入错误要

3、重新输入。最后关闭文件。打印模块printList()在主函数里面选择2进入打印模块,打开名为product的文本文档,然后依次把文本里的产品名称制造商产地原有量现有量编号存放位置,用printf函数文本读出来,用printf函数显示出来,再关闭文件。查找模块find()在主函数里面选择8进入查找模块,再打开名为product的文本文档,然后输入要查找的产品的名称,通过strcmp函数找到该产品的位置,再通过printf函数输出该产品息。如果库中没有此种产品,会提示输入错误,重新输入产品名称。然后关闭文件退出查找模块。修改模块changeproduct()在主函数里面选择7进入输入模块,然后打

4、开名为protect的文本文档,输入要修改的产品的名称,通过strcmp函数找到该产品的位置,找到后直接输入新的信息,如果产品库中没有此种产品的名称,会提示重新输入产品名称。然后关闭文件。删除模块delproduct()在主函数里面选择5进入删除模块,然后打开名为product的文本文档,然后要删除的产品的名称,通过strcmp函数找到该产品位置,找到后又分三种情况:1 、如果该产品在链首,那么直接把链首位置后移到下一链节,然后清除此链节所占内存;2 、如果产品信息在链尾,那么直接上一链节指向NULL然后清除此链节所占空间;3 、如果产品信息在链中,那么直接把上一链节的指针跳过此链节指向下一连

5、接,然后清除此链节所占空间。如果找不到此种产品,会提示重新输入产品名称,正确输入后按上面的三种情况运行此模块。删除后退出删除模块。插入模块insertproduct()在主函数里选择6进入到插入模块,打开名为product的文本文档,然后直接输要插入的产品的名称制造商产地原产量现有量编号存放位置,然后此模块会直接把该信息插入到信息首位,插入后退出此模块。排序模块namesortList()或者numberssortList()在主函数里选择3进入按产品名称排序模块,选择4进入按产品编号排序模块,打开名为product的文本文档,然后模块会通过链节一个一个对比彼此的名称大小(用strcmp函数)

6、或者编号大小,然后小者在前,大者在后重新排序,排序后退出此模块。退出系统模块3软件设计详细内容3.1采用的主要数据结构类型仓库管理系统:#include#include#include链表3.2流程图1、main()函数流程图:3、printList()函数流程图:4、find()函数流程图:5、changeproduct()函数流程图:6、delproduct()函数流程图:4.软件测试4.1软件测试用例1、创建产品信息编号现有量原产量产地辛itwi貉总awueer32451FgiB1/.茲扌居错误,1P重新输人宇站青输入第1种产品的|4Wueer456341i*t请输入第2种产品的;ass

7、ddf678432fg请输入第3种产品的:zxxccv7895&3ub站青输入第1种产品的|4Wueer456341i*t请输入第2种产品的;assddf678432fg请输入第3种产品的:zxxccv7895&3ub名称名称名称制造商制造商制造商产地产地产地原产量原产量原产量现有量现有量现有量编号编号编号存放位直存敢位宣存放位置剑建产品倩息lilt品信息醜;巔文件789100恭喜你输入已显成。目口录请输入要操作的步骤代码=2、输出数据号1量有见413量产&原45序息-nllltI小bk;!/息息心息息信=旦_豆一一IJn产产称品严产产某建出名产除入改询存03、按名称排序已成功按名称排钮III

8、顯文件6789100请输入要操作的步骤代码他-10:存放位置fgvb原产量现有量编号67845678?433456制造商产地dfercvsdwexc名称asqu3X序息自3息11119息自415=lrrl豆直uJrRngp品口品品品严件产产称品严产产某文建出名产除入改询存开菽678910 0诂输入要操作的步骤代码/0-10=4、按产品编号排序已成功按编号排名!型建史品値區童岀需剝息頁产虧韌序塔霹岁駱息界存亠沁麝文件亡请输凡要操作的步骤代码:容称310勰文件请输入要操作的步骤代码:原产量现有量456678789目(录*制造商产地we6Fsddfxccu编劭存放位置BF口口|口j品唁息品住自Q口/

9、:严品冶息5、删除产品信息名称制造商产地原产量现有量编号qwueer456341assddf678432zxxccu789563存放位置rt1创建产品信息3言息IF口丿甘三自789100歸熬籍息呆存i请攪入要操作的步骤代码=5请验入要删嗓的产品名称:PP役有找到该产品青重新输入?请输入要删除的产品名称kk役有找到该产品请重新输入?请输入要删除的产品名称:as已成功删除该产品信息甲100111WrSfl查某口口缶息保稈宀皿文件结束请输入要操作的步骤代码0-10:名称制造商产地原产量现有量编号存放位置qvueer456341rtzxxccu789563vb序息自山B.nnsBsBV口口114品品口

10、5B3S品品口空严件产产称口淫产产某文建岀負除入改询存开0请输人要操作的步骤代码0105:6、插入产品信息名称制造商产地原产量现有量编号存放位置quweer45S341rtexxccv7B93uh寿目口录1234G759106型建亡品ilt8fcrF丄3巨息嘗改PgJii畫询某生品信息黯文件言息宼谊输入要操请输夬新严品3Wdefr777-43gt输入数1尉误*请重新8山宼谊输入要操请输夬新严品3Wdefr777-43gt输入数1尉误*请重新8山产地原有量现有量编号存放位畫请输入新产品的信息:名称制造商严地原有量现有量编号存放位置xscduf7775S3阳已咸功播入新产品信息序自心自心息自心自心

11、亠15亠一豆二口pM一豆吕亠S.口nn件亠产称口S!严亠宀产某文建岀名产除入改询存开我创0序自心自心息自心自心亠15亠一豆二口pM一豆吕亠S.口nn件亠产称口S!严亠宀产某文建岀名产除入改询存开我创0自亠请辆入要援作的步骤代码:名称xsqwEX制造商产地weerxccu原产量现有量编号777553456341789563存放位置bsrPt口口勺玄恵、10击开文件结束请输入要操作的步骤代码010):7、修改产品信息制造商产地cdufweerxccv原产量现有量编号777534563417895&3*A挾产品编号毎序剪鴛密I會錨肆;謁息揺文件结東挾产品编号毎序剪鴛密I會錨肆;謁息揺文件结東*1H0

12、ig$A要犍作戲步爨企码佃TQ:7召诂输入要穆按严品-SW:pp視有找到该产品,请重新WiA*请输入要修改产品名称=败名称制造商产地原产量现有量编号存放位置jufftfr5554fr输入数据错误,请重新输入,名称制造商产地原产量现有量编号存放位置cduhg666334bg已成功修改信息辛0件产产称品严产产某文建出名产除入改询存开我幺k盘请输入要操作的步骤代码佃-佃卄窖称xsqwcd制造商产地cdufweerufbg原产量现有量编号777456666存放位置hsrrt678910ogttl督序查询某产矗息呆梓宀抉黜文件请输入要操作的步骤代码(010):8、查询产品信息制造商产地原产量现有量编号存

13、放位置cduf777553weer456341rtufbg666334bg息78I0勰文件目口录承i直攪入要韵乍鬼歩骤-ft:8inW入要査询的严品名祢;oo请输人.要查询的广品名称*W資该产品信息:号编1量有见4i3量产6原45商造制Me序息息心息息信亠一芟一一lR信oan*lj口品口品品品严件产产称品严产产某文建岀蚩严除入改询存开楚09、保存恭喜你已成功保存数据自S自3ss自亠亠15启崖nz虐崖Rnna品口品品品严件亠亠凡称品口亠孟文建岀名产除入改询存开貳10、打开文件0i月輛入要操作的步骤代码cm=名称XS割cd制造商cdueuf产地uferbg原产量777456666现有量编号5534

14、33存放位置rtbg_At,.t12346?S910 n自自1*3畫询某住品信息勲文件请输入要操作的步骤代码C0-10:11、退出软件名称XSqucd制造商产地cdufueerufh原产量现有量编号777456666553433存放位置阳rtbg序息0.自38.急亠百口品口SS3S品品品严件亠产称晶产亠某文建出名产除入改询存开貳请输入要拗作的步骤代码=0ressanukeytocontinue4.2软件测试报告将4.1测试过程中能完成的功能和不能完成的功能以及不能完全完成的功能进行列表分析,指出测试结果和出错原因,例如:号标项目预期结果实际结果出错原因出错次数01主函数菜单美观的菜单得到美观的

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

16、include数*/*包含常用库函数*/#include#includestructproductcharname12;charmanufacturer30;charorigin30;intoriginqun;intnowqun;intnumbers;charlocation30;structproduct*next;voidW()printf(nnn);#include#includestructproductcharname12;charmanufacturer30;charorigin30;intoriginqun;intnowqun;intnumbers;charlocation30;

17、structproduct*next;voidW()printf(nnn);/*包含exit强制结束函数*/*定义相关链表*/*产品名称*/*制造商*/*产地*/*产品原有数量*/*现有产品数量*/产品编号/*存放位置*/*指向下一个同类型结构*/*包含strcmp、strcpy字符串比较拷贝函printf(tn);printf(tn);printf(tn);printf(tn);printf(tn);printf(tn);printf(t欢迎使用产品库存管理系统n);printf(tn);printf(t按任意键继续n);printf(tn);printf(tn);printf(tn);pr

18、intf(tn);printf(tn);printf(tn);getch();structproduct*createList()/*定义新建产品信息函数*/structproduct*head=NULL,*cur=NULL,*curnext=NULL;/*定义头节点、当前节点、下一个节点*/intn,i;/*定义节点数、循环变量*/printf(t请输入要创建的节点数:”);scanf(%d,&n);for(i=0;iname,curnext-manufacturer,curnext-origin,&(curnext-originqun),&(curnext-nowqun),&(curnex

19、t-numbers),curnext-location);if(curnext-originqunnowqunoriginqunnowqun)/*判断输入数据是否正确*/printf(nt输入数据错误,请重新输入!nn);gotoA;curnext-next=NULL;head=curnext;/*将cuenext赋给头节点*/cur=curnext;/*将cuenext赋给当前节点cur*/elsecurnext=(structproduct*)malloc(sizeof(structproduct);/*开辟下一个节点需要的空间*/B:printf(t请输入第%d种产品的:名称制造商产地原

20、产量现有量编号存放位置n,i+1);printf(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-originqunnowqunoriginqunnowqun)/*判断输入数据是否正确*/printf(nt输入数据错误,请重新输入!nn);gotoB;curnext-next=NULL;cur-next=curnext;与下个

21、节点连接起来*/cur=curnext;后移*/*将当前节点/*当前节点system(cls);*/printf(nt恭喜你输入已完成。nn);returnhead;信息并返回主菜单*/;voidprintList(structproduct*h)信息函数*/*DOS清屏/*结束输入/*定义输出产品structproduct*newNode;newNode=h;表头指针*/*获取链system(cls);printf(nt名称t制造商t产地t原产量t现有量t编号t存放位置);while(newNode-next!=NULL)/*定义删除某位产品/*查找产品/*如果不是所/*cur也后移*/*如

22、果没有找到*/!nn);/*如果找到该产/*如果该节点/*当前链首后/*释放链首所占printf(nt%st%st%st%dt%dt%dt%s,newNode-name,newNode-manufacturer,newNode-origin,newNode-originqun,newNode-nowqun,newNode-numbers,newNode-location);newNode=newNode-next;printf(nt%st%st%st%dt%dt%dt%sn,newNode-name,newNode-manufacturer,newNode-origin,newNode-ori

23、ginqun,newNode-nowqun,newNode-numbers,newNode-location);printf(n);structproduct*delproduct(structproduct*h)的信息函数,名称由用户输入*/structproduct*cur=NULL,*curpre=NULL;charname12;G:printf(t请输入要删除的产品名称:”);scanf(%s,name);cur=h;while(cur!=NULL&strcmp(cur-name,name)位置*/curpre=cur;需节点,curpre指向后移*/cur=cur-next;if(c

24、ur=NULL)printf(nt没有找到该产品,请重新输入gotoG;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-next;位链节指向该链节后的下一位节点*/free(cur);占内存*/*如果该节点/*前一个链节/*释放链尾所占/*如果该节点/*该节点的前一/*释放该节点所system(cls);printf(nt已成功删除该产

25、品信息!nn);returnh;且返回新链表后返回主菜单*/structproduct*changeproduct(structproduct*h)数*/structproduct*cur=NULL,*curpre=NULL;charname12;D:printf(t请输入要修改产品名称:”);scanf(%s,name);cur=h;while(cur!=NULL&strcmp(cur-name,name)置*/curpre=cur;cur=cur-next;if(cur=NULL)/*结束该函数/*定义修改产品信息函/*查找产品位/*如果没有找到*/printf(nt没有找到该产品,请重新

26、输入!nn);gotoD;if(!strcmp(cur-name,name)/*女口果找至U该产品*/E:printf(nt名称制造商产地原产量现有量编号存放位置n);/*输入该产品的新信息*/printf(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-originqunnowqunoriginqunnowqun)/*判断输入数据是否正确*/printf(nt输入数据错误,请重新输入!n

27、n);gotoE;system(cls);printf(nnt已成功修改信息!nn);returnh;structproduct*insertproduct(structproduct*h)/*插入新产品信息至U链首*/structproduct*newproduct=NULL;newproduct=(structproduct*)malloc(sizeof(structproduct);C:printf(t请输入新产品的信息:名称制造商产地原有量现有量编号存放位置n);printf(t);scanf(%s%s%s%d%d%d%s,newproduct-name,newproduct-manu

28、facturer,newproduct-origin,&(newproduct-originqun),&(newproduct-nowqun),&(newproduct-numbers),newproduct-location);if(newproduct-originqunnowqunoriginqunnowqun)/*判断输入数据是否正确*/printf(nt输入数据错误,请重新输入!nn”);gotoC;newproduct-next=h;h=newproduct;system(cls);printf(nnt已成功插入新产品信息!nn);returnh;structproduct*nam

29、esortList(structproduct*h)序*/*DOS清屏*/*按名称对产品进行排structproduct*newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre;if(h=NULL)returnh;while(h!=NULL)minPre=curPre=min=cur=h;while(cur!=NULL)最小的点*/if(strcmp(cur-name,min-name)next;if(newH=NULL)空*/newH=min;newT=min;elsenewT-next=min;尾*/newT=newT-next;点和原链分离*/if(

30、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);returnnewH;/*按产品编号排/*按产品编号排structproduct*numberssortList(structproduct*h)序*/structproduct*newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre

31、;if(h=NULL)returnh;while(h!=NULL)minPre=curPre=min=cur=h;while(cur!=NULL)if(cur-numbersnumbers)min=cur;minPre=curPre;curPre=cur;cur=cur-next;if(newH=NULL)newH=min;newT=min;elsenewT-next=min;newT=newT-next;if(min=h)h=h-next;elseif(min-next=NULL)minPre-next=NULL;elseminPre-next=min-next;min-next=NULL;

32、system(cls);printf(nnt已成功按编号排名!nn);returnnewH;/*按产品名查询某产品信息*/*要查询的对象名*/*查找产品位置*/*如果没有找到*/voidfind(structproduct*h)structproduct*cur=NULL,*curpre=NULL;charname12;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没有找到该产品,请重新输

33、入!nn);gotoF;/*保存*/*打开文件进行操作*/*若打开失败*/*若正确打开*/*保存操作*/*操作完关闭文件*/*打开文件*/*打开文件进行操作*/*打开失败*/*成功打开*/if(!strcmp(cur-name,name)/*找到该产品*/system(cls);/*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,cu

34、r-numbers,cur-location);voidsave(structproduct*h)FILE*fp;structproduct*cur;fp=fopen(product.txt,wb);if(fp=NULL)printf(t文件打开失败n);return;cur=h;while(cur!=NULL)fwrite(cur,sizeof(structproduct),1,fp);cur=cur-next;fclose(fp);fflush(stdin);/*清除缓存*/system(cls);printf(nt恭喜你已成功保存数据!nn);structproduct*load(str

35、uctproduct*h)structproduct*cur,*temp,*newproduct,product;FILE*fp;fp=fopen(product.txt,rb);if(fp=NULL)printf(t打开失败!n);returnh;if(h!=NULL)cur=h;while(cur!=NULL)temp=cur;cur=cur-next;free(temp);while(fread(&product,sizeof(structproduct),1,fp)!=0)newproduct=(structproduct*)malloc(sizeof(structproduct);*newproduct=product;newproduct-next=NULL;if(h=NULL)temp=h=newproduct;elsetemp-next=newproduct;temp=newproduct;system(cls);printf

温馨提示

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

评论

0/150

提交评论