还剩19页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
中北大学数据结构课程设计说明书学生姓名宋立群学号学院软件学院专业软件开发与测试题目产品进销存管理系统指导教师何志英年月日20111220plinklist p;fori=0;iL.length;i++{ifstrcmpL.kindelem[i].pkindname,pkindnamel!=0continue;else break;}if iL.length{forp=L.kindelem[i].firstproduct;p!=NULL;p=p-nextproduct{k=strcmpp-pname,pnamel;if k==0{p-totalquantity=p-totalquantity+n;printf,z查看添加后产品的I各项输出%s%d%d,%d,%d%d%d,%d,%d\n〃,p-pname,p-totalquantity,p-goodsdate.year,p-goodsdate.month,p-goodsdate.day,p-salesqu antity,p-salestime.year,p-salestime.month,p-salestime.day;}//ProQuantity_add voidProQuantity_subtractsqmountlink L,char pkindname4[],charpname4[],int n{〃添加次序表挂接链表L肚I某产品类中的J某产品销出数量,且销出日勺数量nint i,k;plinklist p;fori=0;iL.length;i++{ifstrcmpL.kindelem[i].pkindname,pkindname4!=0continue;else break;if iL.length{for p=L.kindelem[i].firstproduct;p!=NULL;p=p-nextproduct{k=strcmpp-pname,pname4;if k==0{p-salesquantity=p-salesquantity+n;printf,/查看添加后产品日勺各项输出%s%d%d,%d,%d%d%d,%d,%d\n〃,p-pname,p-totalquantity,p-goodsdate.year,p-goodsdate.month,p-goodsdate.day,p-salesqu antity,p-salestime.year,p-salestime.month,p-salestime.day;}//ProQuant ity_subtractvoid Visitsqmountlink L,char pkindname3[],char pname3[]{〃在次序表挂接链表L中,查询属于某产品类的某产品的I各项信息int i,k;plinklist p;fori=0;iL.length;i++{ifstrcmpL.kindelem[i].pkindname,pkindname3!=0continue;elsebreak;}if iL.length{for p=L.kindelem[i].firstproduct;p!=NULL;p=p-nextproduct{k=strcmpp-pname,pname3;if k==0break;}ifk!=0printf(〃此产品不存在:\n〃);else{printf〃输出待查询产品的各项信息\n〃;printf〃产品类★产品★产品总量★进货日期★销售数量★销售时间\n〃;printf zz%s%s%d%d,%d,%d%d%d,%d,%d\n〃,L.kindelem[i].pkindname,p-pname,p-totalquantity,p-goodsdate.year,p-good sdate,month,p-goodsdate.day,p-salesquantity,p-salestime.year,p-salestime.month,p-salestime.day;}//Visitvoid DisplayListsqmountlink L{〃显示各产品所属产品类、产品名称、产品总量、进货日期、销售数量、销售时间int i;plinklist p;printf〃产品类★产品★产品总量★进货日期★销售数量★销售时间\n〃;fori=0;iL.length;i++{if!L.kindelem[i].firstproductprintf〃%s\n〃,L.kindelem[i].pkindname;forp=L.kindelem[i].firstproduct;p;p=p-nextproductprintf/z%s%s%d%d,%d,%d%d%d,%d,%d\n,z,L.kindelem[i].pkindname,p-pname,p-totalquantity,p-goodsdate.year,p-goods date.month,p-goodsdate.day,p-salesquantity,p-salestime.year,p-salestime.month,p-salestime.day;}}//DisplayList voidmenu_operation{〃操作菜单printf〃1\n〃;printf rI输入所要执行日勺操作I\n〃;printf,|1产品类添加|\n〃;printf,z|
2、产品添加|\n;printf C|
3、产品数量添加|\n〃;printf|
4、产品售出|\n;printf,z|
5、查询产品|\n;printf,z|
0、退出程序|\n;printf/z11\n〃;}//mene_operation主程序void mainvoid{int order;int i,n;char a
[30];char b
[30];sqmountlink L;InitMountListL;printf〃☆输入时间时请按照“年,月,日”格式输入.☆、、;loop:menu operation;printf输入命令”;scanf级d〃,order;switchorder{printf〃需添加产品类的个数〃;scanf〃%d〃,i;Kindinsert L,i;printf〃修改后的产品库存管理表\n〃;DisplayList L;goto loop;printf(〃需添加产品所属产品类的名称〃);scanf(〃%s〃,a);printf(〃需向此产品类添加产品的个数〃);scanf(〃%d〃,i);Productinsert(L,a,i);printf(〃修改后的产品库存管理表\n〃);DisplayList(L);goto loop;printf(〃输入需添加数量的产品所属产品类的名称〃);scanf(级s〃,a);printf(〃输入需添加数量的)产品的名称〃);scanf(〃%s〃,b);printf(〃输入需添加产品日勺数量〃);scanf(〃%d〃,n);ProQuant ity_add(L,a,b,n);printf(〃修改后的产品库存管理表\n〃);DisplayList(L);goto loop;printf(〃输入售出产品所属产品类的名称〃);scanf(〃如〃,a);printf〃输入售出产品日勺名称〃;scanf〃%s〃,b;printf〃输入售出产品的数量〃;scanf〃%d〃,n;ProQuantity_subtract L,a,b,n;printf〃修改后日勺产品库存管理表\n〃;DisplayListL;goto loop;printf〃输入待查询产品所属产品类的名称〃;scanf〃%s〃,a;printf〃输入待查询产品日勺名称〃;scanf〃%s〃,b;Visit L,a,b;goto loop;case0:exit0;}
3.3程序运行成果程序启动界面☆输入时间时请按照“年,月,日”咯式输入历总好添力品品加量添一丁品品出品数力询出序缪售产产炉产产产程查退京入命令.产品类的I添加
0.
5.
4.
3.
2.1t;;.un Hrf附加忝八・・、、弟添加巨岳品序耕类添整产程售品品品口凿出产产产查退刖、、、、、、添何丁加产品量的类类口口加产品出助产产品品产的人产品加售加大序添查询添产输需年需退出产产的十后程够类日期★销售数量★销售时间输入命令:改品修产靶人京令口力一丁2力添作需靛输产品恭僚加产品的个数输入此产属产品类的名称操卜》1加添加a岳品序配kind品美防含产品的产品名称、口类添整产程样品总量、进货日期、销售数量、销售时间:品品口凿出产20product产产2查01退1,12,17152011,12,18修改后的产品库存管理表产品类★产品★产品总量★进货日期★销售数量★销售时间20kind product
2011.12,
1.7152011,12,18输入所藜奄的操作:、1声品类添加产品添加、2产品薮量添加:、3产品售出查询、4产品退出程序、0II人命令ik:ybTiv-A0t5-
4132.
12.
3.
4.
5.
0.0AL
4.
(一)设计任务概述针对某一种行业的库房的产品进销存状况进行管理
1、采用一定的存储构造对库房的货品及其数量进行分类管理;运用链表进行存储,同步用到指针变量,运用循环存储,对存储产品的信息要用到日期构造体和产品构造体,对存储要用到文献指针以及文献的某些措施欧I使用
2、可以进行产品类的添加、产品的添加、产品数量日勺添加;首先要找到链表的指针变量,对指针变量进行修改,然后再进行产品的出入
3、可以查询库房每种产品的总量、进货日期、销出数量、销售时间等;首先要定义一种查询函数,对产品类的指针变量进行循环查询,再对产品的指针变量进行循环查询,找到产品时,在调用显示产品信息函数,显示查询到的产品的各项信息
(二)本设计所采用的数据运用链表进行存储,同步用到指针变量,循环存储
(三)功能模块详细设计
3.1详细设计思想
1、次序表挂接链表欧I抽象定义类型ADT sqmountlink{产品数量的添加输入所整我的操作:工、声品类添加、产品添加:
2、产品数量添加
3、产品售出
4、查询产品5昼量数的产量数的产品产的数出品产的各库翼152011,12,18品存管售时间12,
18、退由程停0常后加除一所信・・类・添丁的产品加加力力产入品★加添量产人品加数深出产入品拿后售品修查询尊产产序产品退看出塞产程改黑产品售出输画图近的操作:、声品类添加
1、产品添加:
2、产品数量添加
3、产品售出
4、查询产品5人詹出产库的皆品输产输人出品」存篁类勺名称产人加输音・项产入的输果后品凿管理看支查改后河产品的堡」羹户402011,12,17302011,12,18修类★品产品品数产产品★、货产期★销售数量★销售时间品工302011,12,18输酒要执迁的操作:工、产品类添加、产品添加:
2、产品数量添加
3、产品售出
4、查询产品5ki1,
2.3,45,
15.20to dUCt产品举知操作产品辕加产品数曰查品、售退询产出输程序八刖产麻射产品查询入言旬,品所属产品类的名称:查入询产品的名称查询产kind入product品的各项信息★产品★产品总出量★进货品日期★销售数量★销售时间product402011-
12.17302011,12,18查品数富操作退品售如口询产爵□」出程口望一产惬酎产品举产品辕
(四)课程设计心得,存在问题及处理措施拿到这道题时,我没有选择自己去编写,我想我历来没有编过这样复杂的程序,一定编不成,我选择了上网去查,值得庆幸的是我找到了一部分的程序,然后拷贝上程序在机房运行,发既有许多错误,我就开始一种一种处理问题,其中有些问题是某些符号的丢失,尚有头文献的错误运用,尚有对某些输入超过程序范围的数据进行修改,才使程序得以继续进行,最终我通过自己和请教同学,最终整个程序得以运行,不过最重要的不是仅仅让程序运行成功,而是理解整个程序的思想设计和功能区I实现,然后我开始翻译程序,把每一句都弄日勺清清晰楚为止,从中我复习了诸多知识点,也学到了诸多我此前不懂得的东西通过对本系统的开发,我对软件开发过程有了更清晰地理解,首先是问题的定义,需求分析,然后概要设计,详细设计等,r2,0f:_®:s:*]:ta:nu.••让我懂得了仅仅学习书本知识是不行的J,还得常常去自己设计某些小欧I项目去发现问题,必须培养动手能力,这样才能既复习了知识点,又可以学会详细的数据构造思想和设计,因此我在后来一定要加强这方面的学习数据对象D={ai|ai Gkindlist,i=l,2,n,n=0}数据关系R={ai-l,ai|ai-l,aieD,i=l,2,3,•••,n基本操作InitMountLisrL操作成果构造一种空的次序表挂接链表LKindinsertL,n初始条件次序表挂接链表L已存在操作成果向次序表挂接链表L中添加N类产品Productinsert L,I,n初始条件次序表挂接链表L已存在且要将产品插入的产品类i已存在操作成果向次序表挂接链表L中的产品类i中添加N种产品ProQuantity_add L,I,e,n初始条件次序表挂接链表L已存在且需要添加的产品及产品所属日勺类也存在操作成果添加次序表挂接链表L的产品类i中的I产品e的数量Visit L,i,e初始条件次序表挂接链表L已存在且待查询的产品所属产品类i也存在操作成果在次序表挂接链表L中查询产品e时各项信息DisplayListL初始条件次序表挂接链表L已存在操作成果现实次序表挂接链表L的|内容
3.2关键代码#includestdio.h#includestdlib.h#includestring.h#define ok1#define error0#define overflow0ttdefine SQMOUNTLINK_INIT_SIZE100ttdefine SQMOUNTLINKINCREMENT10typedef structdate{int year;int month;int day;}date;〃日期typedef struct productlnode{char pname
[30];〃产品名称int totalquantity;〃产品总量date salestime;〃销售时间date goodsdate;〃进货日期int salesquantity;〃消除数量structproductlnode*nextproduct;}productlnode,*plinklist;typedef structkindlnode{productlnode irstproduct;char pkindname
[30];}kindlnode;typedef structkindlnode*kindelem;int length;int listsize;}sqmountlink;int InitMountListsqmountlink L{〃初始化一种空的次序表挂接链表L int i;L.kindelem=kindlnode*mallocSQMOUNTLINK_INIT_SIZE*sizeof kindlnode;if!L.kindelem exitoverflow;L.length=0;L.listsize=SQMOUNTLINK INITSIZE;fori=0;iL.listsize;i++{L.kindelem[i].firstproduct=NULL;return ok;}//InitMountListint KindinsertsqmountlinkL,int n{〃向次序表挂接链表L中添加N类产品inti;kindlnode*newbase;ifL.length+n=L.listsize{newbase=kindlnode*reallocL.kindelem,L.listsize+n*sizeofkindlnod e;if!newbase exitoverflow;L.kindelem=newbase;L.listsize+=n;printf〃需添加的产品类名称\n〃;fori=0;in;i++{scanf〃%s〃,L・kindelem[L・length],pkindname;L.kindelem[L.length].firstproduct=NULL;L.length++;return ok;}//KindInsertint ProductInsert sqmountlinkL,char pkindname2[],int n{〃向次序表挂接链表L的I某产品类中添加N个产品plinklist p,q;int k,j;fork=0;kL.length;k++{if strcmpL.kindelem[k].pkindname,pkindname2!=0continue;elsebreak;}if L.kindelem[k].firstproduct==NULL{q=plinklistmalloc sizeofproductlnode;printf〃输入此产品类所含产品的产品名称、总量、进货日期、销售数量、销售时间\n〃;scanf/z%s%d%d,%d,%d%d%d,%d,%d/z,q-pname,q-totalquantity,q-goodsdate.year,q-goodsdate.month,q-goodsdate.day,q-salesquantity,q-salestime.year,q-salestime.month,q-salestime.day;q-nextproduct=NULL;L.kindelem[k].firstproduct=q;forj=l;jn;j++{p=plinklistmallocsizeofproductlnode;printf〃输入此产品类所含产品的产品名称、总量、进货日期、销售数量、销售时间\n〃;\scanf/z%s%d%d,%d,%d%d%d,%d,%d,z,p-pname,p-totalquantity,p-goodsdate.year,p-goodsdate.month,p-goodsdate.day,p-salesquantity,p-salestime.year,p-salestime.month,p-salestime.day;p-nextproduct=q-nextproduct;q-nextproduct=p;q=P;}else forq=L.kindelem[k].firstproduct;;q=q-nextproduct{if!q-nextproductbreak;printf〃需添加产品日勺名称、总量、进货日期、销售数量、销售时间八n〃;forj=0;jn;j++{p=plinklistmallocsizeofproductlnode;scanf//%s%d%d,%d,%d%d%d,%d,%dz/,p-pname,p-totalquantity,p-goodsdate.year,p-goodsdate.month,p-goodsdate.day,p-salesquantity,p-salestime.year,p-salestime.month,p-salestime.day;p-nextproduct=q-nextproduct;q-nextproduct=p;q=p;}return ok;}//Productinsertvoid ProQuantity_add sqmountlinkL,char pkindnamel[],char pnamel[],int n{〃添加次序表挂接链表L的I某产品类中的某产品的总量,且需添加的产品总量为nint i,k;。