《产品进销存管理系统 课程设计报告书精品资料.doc》由会员分享,可在线阅读,更多相关《产品进销存管理系统 课程设计报告书精品资料.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中北大学数据 结构课 程 设 计 说 明 书学生姓名:宋立群学 号:101080学 院:软件学院专 业:软件开发与测试题 目:产品进销存管理系统指导教师何志英20年月20日(一)设计任务概述针对某一种行业的库房的产品进销存情况进行管理.、采用一定的存储结构对库房的货品及其数量进行分类管理;运用链表进行存储,同时用到指针变量,运用循环存储,对存储产品的信息要用到日期结构体和产品结构体,对存储要用到文件指针以及文件的一些方法的使用。、可以进行产品类的添加、产品的添加、产品数量的添加; 首先要找到链表的指针变量,对指针变量进行修改,然后再进行产品的出入。3、能够查询库房每种产品的总量、进货日期、销出
2、数量、销售时间等; 首先要定义一个查询函数,对产品类的指针变量进行循环查询,再对产品的指针变量进行循环查询,找到产品时,在调用显示产品信息函数,显示查询到的产品的各项信息。(二)本设计所采用的数据运用链表进行存储,同时用到指针变量,循环存储(三)功能模块详细设计3.1详细设计思想1、顺序表挂接链表的抽象定义类型:ADT sqountli 数据对象:D=ai|aiindt,i=1,2,,,n= 数据关系:R=i1,ai|a1,a,i1,2,3,,n 基本操作: ntMontLsr(&L) 操作结果:构造一个空的顺序表挂接链表L。 KndInsert(L,n) 初始条件:顺序表挂接链表L已存在。
3、操作结果:向顺序表挂接链表中添加类产品ProductIse(&L,I,) 初始条件:顺序表挂接链表L已存在且要将产品插入的产品类i已存在 操作结果:向顺序表挂接链表L中的产品类i中添加N种产品PrQuaniy_ad(&,I,e,n) 初始条件:顺序表挂接链表L已存在且需要添加的产品及产品所属的类也存在 操作结果:添加顺序表挂接链表L的产品类i中的产品的数量isit(L,i,) 初始条件:顺序表挂接链表已存在且待查询的产品所属产品类i也存在 操作结果:在顺序表挂接链表L中查询产品的各项信息DsplayList(&L) 初始条件:顺序表挂接链表L已存在 操作结果:现实顺序表挂接链表L的内容3。2核
4、心代码#iludestdi.hcude#efn ok 1define errr 0define ovro0eineSOUNTIK_I_SZE 10fin SMNTLINIMEN10ypedef struct at in year; i mont; nt dy;ate; /日期tpedef tructprdctlode r name3; /产品名称 int otluatiy; 产品总量 dte goodsdate; /进货日期 in sleqniy; /消除数量 dte slestm; /销售时间 strct poducldenxpdut;odctlnode,*plinlist;ypede sr
5、uct kndlnode produclnode *firstprduct; charkndnm30;kdlnode;tyde stuc inlnde kidle; int ength; itlistsi;sqmouin;it IitMountList(smoutnkL) /初始化一个空的顺序表挂接链表L nti; Lilem=(kindnde*)alloc(QMUNTLK_INTIEsizeo(kindlno); if(!.indlm) exit(overfw); L.length=0; Llistsze=SMONTNK_NI_SIZ; or(i0;。istsize;i+) (L。kindl
6、m).fistproduct=NULL; reu ok;/IniMoutitint Kndnsert(sqmtlik &L,int n) /向顺序表挂接链表L中添加N类产品 nt i; kindloe ewase; if(。length+n=L.lstsze) nwbase=(kinlnode*)realc(Lkideem,(L。ise+n)*sizo(ndlnde)); if(!nwbas) exi(overfow); L。kndlm=nwbase; L。listsizen; rintf(需添加的产品类名称:n); for(i=;ina),&(qttlqtty),&(qoodsat)er),
7、&(godsdate).ont),&(qgooddate)a),(q-saesqantiy),&(q-saletime).yr),(qsaltie)。moth),((-slstime)。day); q-nextrct=NULL; (ndeek).fisrdt; for(j1;n;j+) p=(linklist)alloc(izof(rodulnod)); prtf(”输入此产品类所含产品的产品名称、总量、进货日期、销售数量、销售时间:n); cnf(”s dd,%d,%d dd,%d,%d,&(p-pname),&(totalquantty),((-gdsat)。ar),(pgodsda)ot
8、h),(pgoodsdate)。da),(salsantity),&((p-saesime)ear),(p-sasime)。nth),&(p-alestime).da); p-nextpuct=qextproduct; q-etprodut=; q=; els for(=L。indelmk.frtproduct; ;=q-ntproduct) if(!(qetpodt)) reak; pint(需添加产品的名称、总量、进货日期、销售数量、销售时间:n); f(j=0;aquantiy),((p-goodda).ar),(-godsate)mont),(-oodat)a),(psaleuit),
9、((sastie)year),&((p-sestime)month),(-saltime)。day)); pnextpro=q-nxtpduct; q-nextprout=; q=p; eu ok;/ProductsetvoidProQuny_add(sqoutlnk L,charpnnam1,ha pnae,int n) /添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n ii,k; plinklist; fo(i=0;itoalqatity=-oaunity+n; printf(查看添加后产品的各项输出:s d %,,d d %d,d,%dn,ppname,ptoaq
10、niy,(pgodsdat)year,(-gosdate)。monh,(osate).ay,-saesquntiy,(psalesim).year,(psaestime)。month,(p-salestime)day); /oQunity_addvoid ProQuantiy_ubrc(sqmontik&,ha pkndname,cpnae4,it n) /添加顺序表挂接链表L的某产品类中的某产品销出数量,且销出的数量 ini,k; iklit p; o(i=0;isaesqantity+n; printf(查看添加后产品的各项输出:s d d,d,d %d ,d,%dn,pnm,p-tolq
11、nity,(pgodsdae)ea,(goodsde)。mo,(pgoodsdate).dy,psalequantit,(paletie).year,(saesme)。onth,(p-saestim).a); /ProQuanitsubtracvod Visit(sountlin,har pindname3,char na)/在顺序表挂接链表中,查询属于某产品类的某产品的各项信息 in ,k; lkt p; for(i=0;iL.ngth;i+) if(trcmp((。kindelmi).pindnme,pidnam3)!=0) continue; ee rak; if(iosdte).ont
12、h,(p-goodate).dy,p-saqantity,(psaltie).year,(p-saletime)mont,(-letime).day); /Viitvoid DiplayList(sqmonlin &) /显示各产品所属产品类、产品名称、产品总量、进货日期、销售数量、销售时间 inti;linlistp; rntf(”产品类产 品产品总量进 货 日 期销售数量销售时 间n); fo(i=0;iL.length;i+) if(!(。kindelem.firtproduct)) print(%sn”,(。knelemi)。pkindnam); for(p=L.kidelem。fir
13、tproduct;p;p=p-extproduc) printf(%s %s d d,%d,d d ,d,%dn,(L.kinelem).pkindme,pname,p-totalqutiy,(pgoosate).yer,(p-godsdate)。month,(pgodsdate)ay,psalesquatiy,(psalstie)yer,(palestime).moth,(psalestme)。day); /DispayListvoidmnuperatio()/操作菜单 printf(n); pntf(输入所要执行的操作:); pintf(1、产品类添加: n); prinf(”2、产品添加
14、: n); prtf(3、产品数量添加: ”); prnf(、产品售出: ); printf(5、查询产品: n); rinf(”0、退出程序: n”); pnf();/mene_oeratin/*-主程序-/voi mai(void)int odr; int i,n; cara; cha b30; sqmounlin; IntMountLs(); prit(输入时间时请按照“年,月,日”格式输入.); lop: men_oertion(); prinf(”输入命令:”); sanf(%d,&oder); wtch(order) ce 1: print(”需添加产品类的个数:); snf(”d
15、”,); KinIner(L,); rintf(”修改后的产品库存管理表:); DsplayLit(L); go loop; case: prinf(”需添加产品所属产品类的名称:); scnf(s,a); pintf(”需向此产品类添加产品的个数:); anf(”d”,&); PouctInset(L,a,i); prntf(”修改后的产品库存管理表:n”); DislaList(L); goolop; case 3: inf(输入需添加数量的产品所属产品类的名称:); can(”%s”,&); printf(输入需添加数量的产品的名称:”); saf(%,&b); pntf(输入需添加产品
16、的数量:”); canf(%d”,n); PrQanty_add(L,b,); rint(修改后的产品库存管理表:n); isplaLit(); goto oop; case 4: prinf(”输入售出产品所属产品类的名称:); scanf(s,&a); printf(输入售出产品的名称:”); scaf(”s”,&b); printf(”输入售出产品的数量:); nf(”%d,&n); Pruatity_subrct(L,a,b,); prntf(修改后的产品库存管理表:”); DiplayL(L); goto op; cas5: prinf(输入待查询产品所属产品类的名称:”); ca(
17、s”,&a); pritf(”输入待查询产品的名称:”); scan(”s,); Vst(,a,); go lo; case 0: e(); 3.3程序运行结果 程序启动界面。产品类的添加.产品的添加。产品数量的添加。产品售出.产品查询。(四) 课程设计心得,存在问题及解决方法拿到这道题时,我没有选择自己去编写,我想我从来没有编过这么复杂的程序,一定编不成,我选择了上网去查,值得庆幸的是我找到了一部分的程序,然后拷贝上程序在机房运行,发现有许多错误,我就开始一个一个解决问题,其中有些问题是一些符号的丢失,还有头文件的错误运用,还有对一些输入超出程序范围的数据进行修改,才使程序得以继续进行,最后我通过自己和请教同学,最终整个程序得以运行,不过最重要的不是仅仅让程序运行成功,而是了解整个程序的思想设计和功能的实现,然后我开始翻译程序,把每一句都弄的清清楚楚为止,从中我复习了很多知识点,也学到了很多我以前不知道的东西.通过对本系统的开发,我对软件开发过程有了更清楚地了解,首先是问题的定义,需求分析,然后概要设计,详细设计等,让我知道了仅仅学习课本知识是不行的,还得经常去自己设计一些小的项目去发现问题,必须培养动手能力,这样才能既复习了知识点,又可以学会详细的数据结构思想和设计,所以我在以后一定要加强这方面的学习。 13