欢迎来到天天文库
浏览记录
ID:38499193
大小:123.50 KB
页数:15页
时间:2019-06-13
《算法与数据结构的商品货架管理课程设计报告(还有程序源代码)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、福建工程学院课程设计课程:算法与数据结构题目:商品货架管理专业:计算机类班级:1102座号:3110307201姓名:郑桂萍2012年6月26日一、要解决的问题商店货架以栈的方式摆放商品。商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。生产日期越接近的越靠栈底,出货时从栈顶取货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架上,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越近的越靠近栈底。请编写程序模拟商品销售,上架倒货架等操作。(设有5种商品,每种商品
2、至少有商品名和生产日期两个属性)二、算法基本思想描述:一天营业的开始,首先店主要把各个商品货架(栈)上满货物。商店内总共有5种商品,商品名为:a,b,c,d,e。一一将每个商品的货架上满货物。接着一天的营业结束了,店主要将今天有销售出去的商品所对应的货架补满。让店主输入第一种需要补货的商品的商品名和今天销售出去的数量。然后,输入要补上货架的商品名和生产日期并将要补上货架的商品与在货架上未销售出去的货物进行生产日期的比较。若是要补上货架的货物日期比较早就直接上货架。否则进行倒货再补货,这样就能将日期比较近的放在栈底
3、。用另外申请的一个空栈来存储倒出的货物。第一种商品补完货后,再问店主是否还有其他商品需要补货。如需补货按第一种商品补货的程序来进行。以此类推进行补货。三、设计1.数据结构的设计(1)商品信息:typedefstruct{charb;//存储商品名//商品日期年、月、日intyear;intmonth;intday;}Data;(2)商品货架(栈)#definemax5typedefstruct{Dataa[max];//0为栈底位置inttop;//栈顶}Stack;(3)商品种类:Stack*s[5];//5种
4、商品2.算法设计:(1)初始化空栈:利用for循环为每个(商品货架)栈申请空间,并进行判断是否有申请到空间,若没有申请到空间就输出提示“空间不足!”,若是有申请到空间,top指向栈顶,初始值为-1,栈底是0的位置。(2)上货的算法设计:先定义四个变量分别是字符型的k1,整型的k2,k3,k4用来存储商品名和商品的生产日期,再赋值给栈元素的各个属性,即将商品上货。再赋值前先判断top是否是最大值,若是就输出提示“栈满”并结束该上货程序。当货物上满后输出提示表示商品的货架上满了并输出此时货架上货物的数量,利用for循
5、环进行下一个商品的上货,直至将5个商品的货架全部上满。(3)出货(即当天的销售)的算法设计:一天的营业结束了,店主需要为有销售出去的商品进行补货。因此需要知道是哪个商品有销售出去以及其销售的数量,让店主输入今天有销售出去的一种商品的商品名,若是店主输入此商店没有的商品名就输出提示,并让店主再次输入商品名,接着要输入销售的数量,程序要对销售的数量进行判断是否超出了栈的最大值(即货架上所能容纳货物的最大数量),若是超出输出提示,并请店主再次输入销售的数量。(4)补货的算法设计:在此子函数中先定义四个变量分别是字符型的
6、k1,整型的k2,k3,k4用来存储要补上货架的商品名和商品的生产日期,另外再初始化一个空栈L,用来存储倒出来的货物。将要补上货架的商品的生产日期与在货架上未销售出去的商品进行比较。若是日期比较早则可直接上货,否则要进行倒货再上货。每入一件货物都要进行这样的程序。(5)倒货:为避免发生入货直接将商品摆放到货架上,会使生产日期越近的商品越靠近栈顶这样的事发生,因此需要倒货。将比要补上货架的货物的生产日期要早的货物倒出放入栈L,直至将要补上货架的货物入货,则可再把栈L内的货物再放回原栈。(6)将货架上摆放的货物打印出
7、来:补货完成后,要将各个商品栈内的货物的商品名以及其生产日期打印出来,这样可以检验补货时是否有将日期比较近的放在栈底。(7)模块结构及功能:1)intmain(void)//主程序2)Stack*initstack()//初始化空栈3)Stack*onput(Stack*S)//上货4)void*outpush(Stack*S)//出货5)voidbackstack(Stack*S,intx)//补货6)Stack*outstack(Stack*S,Stack*L)//倒货7)voidPrint(Stack*S)
8、//打印商品栈内货物信息(8)主要模块算法描述:上货:Stack*onput(Stack*S){intj;chark1;//储存商品名intk2,k3,k4;//储存商品生产日期年、月、日for(j=0;jtop==max-1)//判断栈满{printf("栈满!");//栈满不能入栈returnS;}S->top++;printf("
此文档下载收益归作者所有