《数据结构课程设计报告库存管理系统13784.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告库存管理系统13784.docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计计任务书书2011120012学年第第1学期电子与信信息工程程系计算机机科学与与技术专专业班级级课程设计计名称:数据结结构课程程设计设计题目目:库存存管理系系统完成期限限:自22012年1月2日至20012年1月6日共1周设计依据据、要求求及主要要内容(可可另加附附页):一、设计计目的熟悉各种种数据结结构和运运算,会会使用数数据结构构的基本本操作解解决一些些实际问问题。二、设计计要求 (1)重重视课程程设计环环节,用用严谨、科科学和踏踏实的工工作态度度对待课课程设计计的每一一项任务务;(2)按按照课程程设计的的题目要要求,独独立地完完成各项项任务,严严禁抄袭袭;凡发发现抄袭袭,抄袭袭者
2、与被被抄袭者者皆以零零分计入入本课程程设计成成绩。凡凡发现实实验报告告或源程程序雷同同,涉及及的全部部人员皆皆以零分分计入本本课程设设计成绩绩;(3)学学生在接接受设计计任务后后,首先先要按设设计任务务书的要要求编写写设计进进程表;(4)认认真编写写课程设设计报告告。三、设计计内容1)问题题描述试设计一一库存管管理系统统,产品品信息包包括产品品编号、名名称、价价格、数数量等(产产品编号号不重复复)。2) 基基本要求求该系统应应具有以以下功能能:1、产品品信息录录入功能能(产品信信息用文文件保存存)输输入v2、产品品信息浏浏览功能能输输出v3、产品品入库4、产品品出库5、查询询和排序序功能:l
3、1)按按价格从从大到小小排序l 2)按按名称查查询6、产品品信息删删除、修修改功能能。四、参考考文献1数据结构.王红梅.清华大学出版社2数据结构学习辅导与实验指导.王红梅.清华大学出版社3C+程序设计.钱能.清华大学出版社4C+程序设计试验指导.钱能.清华大学出版社5C+程序设计.谭浩强.清华大学出版社#inccludde#inccludde#inccludde#inccluddeusinng nnameespaace stdd;int couunt=0;classs CCDatta /定义数数据基类类publlic:CDaata();virrtuaal iint Commparre(CCDa
4、tta &)=00;virrtuaal vvoidd Shhow()=00;virrtuaal CDaata();classs CCNodde /定义结结点基类类privvatee:CDaata *pDDataa; /用用于指向向数据类类的指针针CNoode *pNNextt; /用用于指向向链表的的后向指指针publlic:voiid IInpuutDaata(CDaata *pddataa)ppDatta=ppdatta; /输输入数据据voiid SShowwNodde()pDDataa-SShoww();/打打印一个个节点的的数据CDaata *GeetDaata()rretuurn
5、pDaata;friiendd cllasss CLListt; /定义义链表类类为基类类;classs CCLisstCNoode *pHHeadd; /链表表头结点点指针publlic:CLiist()ppHeaad=00; CLListt()DelleteeLisst();voiid AAddNNodee(CNNodee *ppnodde); /在在首部添添加结点点CNoode *DeeletteNoode(CNoode *); /删删除一个个指定的的结点,返返回该结结点的指指针CNoode *Seearcch(CCDatta &); /查找一一个指定定的数据据,返回回该数据据所在的的结
6、点在在链表的的指针,未未找到返返回0boool IIsExxistt(CDDataa &);voiid SShowwLisst(); /打印整整个链表表voiid DDeleeteLListt(); /删除整整个链表表CNoode *GeetLiistHHeadd()retturnn pHHeadd; /返回回链表首首结点CNoode *GeetLiistNNexttNodde(CCNodde *pnoode); /返返回链表表指定结结点的下下一个结结点;CNodde *CLiist:GeetLiistNNexttNodde(CCNodde *pnoode) /返回回链表指指定结点点的下一一个
7、结点点 CNoode *p11=pnnodee; retturnn p11-ppNexxt;voidd CLListt:AAddNNodee(CNNodee *ppnodde) /在首首部添加加结点if (pHHeadd=00) /如果果是空链链表,插插入的结结点是唯唯一的结结点pHHeadd=pnnodee;pnnodee-ppNexxt=00;reeturrn;elsse /否否则,插插入到链链表首部部pnnodee-ppNexxt=ppHeaad;pHHeadd=pnnodee;CNodde *CLiist:DeeletteNoode(CNoode *pnnodee) /删删除一个个指定
8、的的结点,返返回该结结点的指指针CNoode *p11,*pp2;p1=pHeead; /指向向首结点点whiile(p1!=pnnodee&pp1-pNeext!=0) /寻找要要删除的的结点p22=p11;p11=p11-ppNexxt; /结结点p22始终在在p1的的后面if (p11=ppHeaad) /如如果要删删除的是是首结点点pHHeadd=pHHeadd-ppNexxt; /将首首结点后后移reeturrn ppnodde;p2-pNNextt=p11-ppNexxt; /p1指指向被删删除的结结点,将将p2结结点与pp1后面面的结点点连接起起来retturnn pnnodee
9、;CNodde *CLiist:Seearcch(CCDatta &datta) /查找找一个指指定的数数据,返返回指针针,若未未找到返返回0CNoode *p11=pHHeadd;whiile(p1) /从从头结点点开始查查找iff (pp1-pDaata-Coompaare(datta)=0)rretuurn p1; /找到后后返回结结点指针针p11=p11-ppNexxt;retturnn 0; /搜索索完找不不到,返返回空指指针0voidd CLListt:SShowwLisst() /打印印整个链链表CNoode *p11=pHHeadd;whiile(p1)p11-ppDatta-
10、Shoow();p11=p11-ppNexxt;voidd CLListt:DDeleeteLListt() /删除除整个链链表结点点CNoode *p11,*pp2;p1=pHeead;whiile(p1)deelette pp1-pDaata;p22=p11;p11=p11-ppNexxt;deelette pp2;classs RRepoosittoryy:puubliic CCDatta /库存为为记录,为为数据基基类的公公有派生生类privvatee :chaar sszNaame20; /库库存中数数据:商商品名、商商品数量量和入库库时间unssignned intt szzNum
11、mberr;chaar sszTiime20;chaar sszN;CLiist ShLListt;publlic:Repposiitorry(); /构造造函数Repposiitorry(ccharr *nnamee,innt nnumbber,chaar *timme);voiid SSetRRecoord(chaar *namme, intt nuumbeer,ccharr *ttimee); /输输入数据据函数intt Coompaare(CDaata &); /比比较函数数,比较较商品名名voiid SShoww();voiid AAddRRecoord();voiid DDispp
12、layy();voiid LLookkUpRRecoord();voiid DDeleeteRRecoord();voiid MModiifyRRecoord();voiid SSaveeToFFilee();voiid OOperratee(sttrinng &strrChooicee);voiid RReaddFroomFiile();voiid OOutpput();Repoosittoryy:RRepoosittoryy()strrcpyy(szzNamme,0);szNNumbber=0;strrcpyy(szzTimme,0);Repoosittoryy:RRepoosittory
13、y(chhar *naame,intt nuumbeer,ccharr *ttimee)strrcpyy(szzNamme,nnamee);szNNumbber=nummberr;strrcpyy(szzTimme,ttimee);szNN=naame0;voidd Reepossitoory:SeetReecorrd(ccharr *nnamee, iint nummberr,chhar *tiime) /输入数数据函数数strrcpyy(szzNamme,nnamee);szNNumbber=nummberr;strrcpyy(szzTimme,ttimee);szNN=naame0;in
14、t Repposiitorry:Commparre(CCDatta &datta) /比较商商品名Repposiitorry &temmp=(Repposiitorry &)daata;reeturrn sstrccmp(szNNamee,teemp.szNNamee);voidd Reepossitoory:Shhow() /打打印一个个结点的的数据couutsettw(115)szzNammesettw(115)szzNummberrssetww(155)szTTimeeeendll;voidd Reepossitoory:AdddReecorrd() /将将记录添添加到链链表中CNood
15、e *pNNodee;Repposiitorry *pShh;chaar sszNaame20,szzTimme220;unssignned intt szzNummberr;couutsszNaame;whiile(strrcmpp(szzNamme,0)cooutszTTimee;cooutszNNumbber;pSSh=nnew Repposiitorry; /生成成新的数数据累对对象pSSh-SettReccordd(szzNamme,sszNuumbeer,sszTiime); /数据据类对象象赋值pNNodee=neew CCNodde; /生成成新的结结点pNNodee-IInp
16、uutDaata(pShh); /结点点插入链链表ShhLisst.AAddNNodee(pNNodee);coountt+;cooutszNNamee;couutenddlenddl;voidd Reepossitoory:Diispllay() /显示全全部链表表数据couut当前前操作共共有coountt条新商商品的添添加纪录录。nnn;couut目前前库存共共有商品品信息记记录是:nn;couutsettiossflaags(ioss_baase:leeft)ssetww(155)商品品名seetw(15)商品数数量seetw(15)入库时时间enndlenndl;ShLListt.S
17、hhowLListt();couutenddlenddl;sysstemm(ppausse);sysstemm(ccls);voidd Reepossitoory:LoookUUpReecorrd() / 按按照商品品名查找找CNoode *pLLookk;chaar sszNaame20;couutsszNaame;whiile (sttrcmmp(sszNaame,0)Reepossitoory sh(szNNamee,0,0); /生生成结点点pLLookk=ShhLisst.SSearrch(sh); /查找指指定结点点的数据据iff (ppLoook)ccoutt在库存存商品信信息记
18、录录中找到到商品:szNNamee,内容容是:eendll;ccouttssetww(155)商品品名seetw(15)商品数数量seetw(15)入库时时间ShoowNoode();ellse ccoutt在库存存商品信信息记录录中找不不到商品品:szzNamme。eendll;cooutszNNamee;couutenddlenddl;voidd Reepossitoory:DeeletteReecorrd() /在在链表中中删除指指定的结结点的数数据CNoode *pLLookk;chaar sszNaame20;couutsszNaame;whiile(strrcmpp(szzNamm
19、e,0)Reepossitoory sh(szNNamee,0,0);pLLookk=ShhLisst.SSearrch(sh);iff (ppLoook) /删除除时应先先查找出出结点ccoutt在库存存商品信信息记录录中找到到商品:szNNamee,内容容是:eendll;ccouttssetww(155)商品品名seetw(15)商品数数量seetw(15)入库时时间ShoowNoode();ccouttokk;iif (ok=YY|ok=yy)ShLListt.DeeletteNoode(pLoook);couutszNNamee的信息息记录删删除成功功!enndl;delletee
20、pLLookk;couunt-;eelsee iff(okk=N|okk=n)couutszNNamee的信息息记录删删除失败败!enndl;ellseccoutt在库存存商品信信息记录录中找不不到商品品:szzNamme。eendll;cooutszNNamee;couutenddlenddl;voidd Reepossitoory:MoodiffyReecorrd() /修改商商品记录录CNoode *pLLookk;Repposiitorry *pShh;chaar sszNaame20,szzTimme220;unssignned intt szzNummberr;couutsszNa
21、ame;whiile(strrcmpp(szzNamme,0) Reepossitoory sh(szNNamee,0,0);pLLookk=ShhLisst.SSearrch(sh);iff (ppLoook) /修改改时应先先查找出出结点ccoutt在库存存商品信信息记录录中找到到商品:szNNamee,内容容是:eendll;ccouttssetww(155)商品品名seetw(15)商品数数量seetw(15)入库时时间ShoowNoode();ccoutt-下下面开始始修改-enndlszzNamme;ccouttszzNummberr;ccouttszzTimme;ccouttok
22、k;iif (ok=YY|ok=yy)pShh=neew RRepoosittoryy;pShh-SSetRRecoord(szNNamee,szzNummberr,szzTimme);pLoook-InnputtDatta(ppSh);couutszNNamee的信息息记录修修改成功功!enndl;eelsee iff(okk=N|okk=n) couutszNNamee的信息息记录修修改失败败!enndl;ellseccoutt 在库库存商品品信息记记录中找找不到sszNaame,enddl; cooutszNNamee;voidd Reepossitoory:Ouutpuut()CNoo
23、de *pLLookk;Repposiitorry *pShh;chaar sszNaame20;unssignned intt szzNummberr;couutsszNaame;whiile(strrcmpp(szzNamme,0) Reepossitoory sh(szNNamee,0,0);pLLookk=ShhLisst.SSearrch(sh);iff (ppLoook) /修改改时应先先查找出出结点ppSh=(Reepossitoory *)ppLoook-GettDatta();ccoutt在库存存商品信信息记录录中找到到商品:szNNamee,内容容是:eendll;ccou
24、ttssetww(155)商品品名seetw(15)商品数数量seetw(15)入库时时间ShoowNoode();iif (0=pShh-sszNuumbeer)couut该商商品缺货货,请及及时补充充!enndl;eelseecouutsszNuumbeer;couutook;if(ok=YY|ok=yy)if(pShh-sszNuumbeer=szNNumbber)couutszNNamee您要求求的商品品数量大大于仓库库中的数数量,故故全部输输出szNNumbber 个商品品sszNuumbeer=00;elssepShh-sszNuumbeer-=szNNumbber;couutsz
25、NNamee您已取取出 sszNuumbeer 个个商品eendll;couutszNNamee成功取取出!eendll;elsse if(ok=NN|ok=nn)couutszNNamee您取消消了该操操作enndl;ellseccoutt 在库库存商品品信息记记录中找找不到sszNaame,enddl;cooutszNNamee;voidd Reepossitoory:SaaveTToFiile() /将链表表中的数数据保存存在文件件中ofsstreeam outtfille(repposiitorry.ddat,ioos:binnaryy);if(! ooutffilee)cooutGG
26、etDDataa(); /返回结结点指向向的数据据域指针针ouutfiile.wriite(chhar *)ppSh,sizzeoff(Reepossitoory); /将数据据域写入入文件pnnodee=ShhLisst.GGetLListtNexxtNoode(pnoode); / 取取下一结结点的指指针outtfille.cclosse();voidd Reepossitoory:ReeadFFrommFille() /在程程序开始始先查找找有无数数据文件件,找到到后读取取文件数数据ifsstreeam inffilee(rrepoosittoryy.daat,ioss:bbinaary
27、);if(! iinfiile)cooutIInpuutDaata(pShh); /数据据域对象象内容生生成结点点ShhLisst.AAddNNodee(pNNodee); /将将结点加加入链表表ShLListt.DeeletteNoode(pNoode); /由于于文件多多读一次次,所以以将首结结点删除除inffilee.cllosee();voidd Reepossitoory:Opperaate(strringg &sstrCChoiice) /根根据主菜菜单选项项进行操操作if (sttrChhoicce=1)AdddReecorrd();elsse iif (strrChooicee
28、=2)Diispllay();elsse iif (strrChooicee=3)LoookUUpReecorrd();elsse iif (strrChooicee=4)DeeletteReecorrd();elsse iif(sstrCChoiice=55)MoodiffyReecorrd();elsse iif(sstrCChoiice=66)Ouutpuut();elsse iif (strrChooicee=0)SaaveTToFiile();elsse ccoutt对不起起,您的的输入有有误,请请重新输输入您的的选择: ;voidd maain()Repposiitorry rre
29、poosittoryy;couut*nnn;couut欢迎进进入库存存管理系系统nn; couut*nnn;repposiitorry.RReaddFroomFiile(); /从文文件中输输入数据据strringg sttrChhoicce; /接受受主菜单单选项docoout【欢欢迎进入入系统菜菜单】:nnnn;coout .添加新新商品信信息记录录nn;coout .显示库库存中商商品信息息记录内内容nnn;coout .根据商商品名查查询库存存中商品品信息记记录nnn;coout .根据商商品名删删除库存存中商品品信息记记录nnn;coout .根据商商品名修修改库存存中商品品信息记记录nnn;coout .商品出出库nnn;coout .退出系系统nnnn;cooutstrrChooicee;syysteem(clss);reepossitoory.Opeeratte(sstrCChoiice);whhilee(sttrChhoicce!=0);couut*nn;couut -*欢迎再再次使用用库存管管理系统统*- nn; couut*nn;sysstemm(ppausse);221