算法与数据结构的商品货架管理课程设计报告(还有程序源代码)

上传人:m**** 文档编号:511807586 上传时间:2023-07-01 格式:DOCX 页数:38 大小:54.25KB
返回 下载 相关 举报
算法与数据结构的商品货架管理课程设计报告(还有程序源代码)_第1页
第1页 / 共38页
算法与数据结构的商品货架管理课程设计报告(还有程序源代码)_第2页
第2页 / 共38页
算法与数据结构的商品货架管理课程设计报告(还有程序源代码)_第3页
第3页 / 共38页
算法与数据结构的商品货架管理课程设计报告(还有程序源代码)_第4页
第4页 / 共38页
算法与数据结构的商品货架管理课程设计报告(还有程序源代码)_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《算法与数据结构的商品货架管理课程设计报告(还有程序源代码)》由会员分享,可在线阅读,更多相关《算法与数据结构的商品货架管理课程设计报告(还有程序源代码)(38页珍藏版)》请在金锄头文库上搜索。

1、44超譬 僂狒H_m 9znc9 出 ZTOZI-loOMOmI當ngffi一、要解决的问题商店货架以栈的方式摆放商品。商品货架可以看成一个栈,栈顶商品的生产 日期最早,栈底商品的生产日期最近。生产日期越接近的越靠栈底,出货时从栈 顶取货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架 上,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越 近的越靠近栈底。请编写程序模拟商品销售,上架倒货架等操作。(设有5种商 品,每种商品至少有商品名和生产日期两个属性)二、算法基本思想描述:一天营业的开始,首先店主要把各个商品货架(栈)上满货物。商店内总共 有5种商品,商品名

2、为:a,b,c,d,e。将每个商品的货架上满货物。接着一天的营业结束了,店主要将今天有销售出去的商品所对应的货架补满。让店 主输入第一种需要补货的商品的商品名和今天销售出去的数量。然后,输入要补 上货架的商品名和生产日期并将要补上货架的商品与在货架上未销售出去的货物进行生产日期的比较。若是要补上货架的货物日期比较早就直接上货架。否则进行倒货再补货,这样就能将日期比较近的放在栈底。用另外申请的一个空栈来 存储倒出的货物。第一种商品补完货后,再问店主是否还有其他商品需要补货。如需补货按第一种商品补货的程序来进行。以此类推进行补货三、设计1.据结构的设计(1)商品信息:typedef structc

3、har b;存储商品名/商品日期年、月、日int year;int month;int day;Data;(2)商品货架(栈)#define max 5typedef structData amax;/O为栈底位置int top;/ 栈顶Stack;(3)商品种类:Stack *s5;/5 种商品2.算法设计:(1)初始化空栈:利用for循环为每个(商品货架)栈申请空间,并进行判断是否有申请到空间, 若没有申请到空间就输出提示空间不足!,若是有申请到空间,top指向栈顶, 初始值为1 ,栈底是0的位置。(2)上货的算法设计:先定义四个变量分别是字符型的kl,整型的k2,k3, k4用来存储商品

4、名和商品的生产日期,再赋值给栈元素的各个属性,即将商品上货。再赋值前先判断 top 是否是最大值,若是就输出提示“栈满”并结束该上货程序。当货物上满后 输出提示表示商品的货架上满了并输出此时货架上货物的数量,利用for循环进 行下一个商品的上货,直至将 5 个商品的货架全部上满。(3)出货(即当天的销售)的算法设计:一天的营业结束了,店主需要为有销售出去的商品进行补货。因此需要知道 是哪个商品有销售出去以及其销售的数量,让店主输入今天有销售出去的一种商 品的商品名,若是店主输入此商店没有的商品名就输出提示,并让店主再次输入 商品名,接着要输入销售的数量,程序要对销售的数量进行判断是否超出了栈的

5、 最大值(即货架上所能容纳货物的最大数量),若是超出输出提示,并请店主再 次输入销售的数量。(4)补货的算法设计:在此子函数中先定义四个变量分别是字符型的k1,整型的k2,k3,k4用 来存储要补上货架的商品名和商品的生产日期,另外再初始化一个空栈L,用来 存储倒出来的货物。将要补上货架的商品的生产日期与在货架上未销售出去的商 品进行比较。若是日期比较早则可直接上货,否则要进行倒货再上货。每入一件 货物都要进行这样的程序。(5)倒货:为避免发生入货直接将商品摆放到货架上,会使生产日期越近的商品越靠近栈顶这样 的事发生,因此需要倒货。将比要补上货架的货物的生产日期要早的货物倒出放入栈L,直 至将

6、要补上货架的货物入货,则可再把栈L内的货物再放回原栈。(6)将货架上摆放的货物打印出来:补货完成后,要将各个商品栈内的货物的商品名以及其生产日期打印出来,这样可以检验补货时是否有将日期比较近的放在栈底。(7)模块结构及功能:1) int main(void)/主程序2) Stack *initstack()/初始化空栈3) Stack *onput(Stack *S)/上货4) void *outpush(Stack *S)/出货5) void backstack(Stack *S,int x)/补货6) Stack *outstack(Stack *S,Stack *L)/倒货7) void

7、 Print(Stack *S)/打印商品栈内货物信息(8)主要模块算法描述:上货:Stack *onput(Stack *S)int j;char k1;储存商品名int k2,k3,k4;储存商品生产日期年、月、日for(j=0;jtop二二max-1) 判断栈满printf(栈满! n);栈满不能入栈return S;S-top+;printf(栈数d ,S-top);打印货物所在的栈数/输入商品名和生产日期fflush(stdin);/清除缓存区scanf(%c %d/%d/%d,&k1,&k2,&k3,&k4); 输入商品信息S-aS-top.b=k1;S-aS-top.year=k

8、2;S-aS-top.month=k3;S-aS-top.day=k4;printf(该商品的货架满了! n);printf(此时该商品的货架上共有d个商品nn,S-top+1);return S;出货:/出货void *outpush(Stack *S)printf(请店主输入今天。这个商品销售出去的数量:S-aS-top.b);int x,i;fflush(stdin);/清除缓存区dofflush(stdin);scanf(%d,&x);if(xmax)printf(该货架上没有这么多商品!请重输! n);while(xmax);for(i=1;itop-;printf(此时c这个商品的

9、货架的数量剩下 %d件需要补上货架的数量为 %dnn,S-aS-top.b,S-top+1,x);/补货backstack(S,x);补货:/补货 void backstack(Stack *S,int x)Iint i,ii;int temp;char k1;储存商品名int k2,k3,k4;储存生产日期分别对应年月日Stack *L;L二initstack();重新申请一个空栈用来倒货时存放货物printf(请输入要补上货架的商品名(一个字符)空一格并输入该商品生产日 期(年/月/日)每上货一件以回车键结束:n);for(i=1;itop=-1)此时货架上无商品可以直接上货S-top+;

10、S-aS-top.b=k1;S-aS-top.year=k2;S-aS-top.month=k3;xIHqdol 人+dol 人s)18邑呼呂、联赵虽呂联赵、念關色卅忙曲相、(e? Nol人se人s V 2)七 ors-亠 益01人s=up% -只馬叵址呂坛吾)41u_d u=u i 比 p%e1超亠ttuE-寸MHAep.Nol 人ses(;:=U-Ldol 人S6363I-I人:=dol 人s 丄一)O4) s- 亠亍duu一 益01人s=up% -只馬叵址呂坛吾)41u_d u=u i 比 p%e1超亠ttuE-寸MHAep.Nol 人ses冷 IHUOLUdol 人sesif(k2二二

11、S-aS-top.year)若生产年份要补上货架的与货架上的一样则比较月份if(k3aS-top.month) /若生产月份要补上货的比货架上的早则直接上货S-top+;S-aS-top.b=k1;S-aS-top.year=k2;S-aS-top.month=k3;S-aS-top.day=k4;printf(补货成功第d件! n,i);printf(此时的栈顶数为:%dn,S-top);temp=1;if(temp=1)break;elseif(k3 =S-aS-top.month)/若生产月份要补上货架的与货架上的一样则比较生产当天日期if(k4v二S-aS-top.day)若生产当天日

12、期要补上货的比货架上的早或是相同则直接上货否则要倒货重新上货架S-top+;S-aS-top.b=k1;S-aS-top.year=k2;S-aS-top.month=k3;S-aS-top.day=k4;printf(补货成功第d件! n,i);printf(此时的栈顶数为:dn,S-top);temp=1;if(temp=1)break;else/倒货L=outstack(S,L);else/倒货L=outstack(S,L);的近if(k2S-aS-top.year)/此时生产年份要补上货架的比货架上L=outstack(S,L);倒货if(temp=0)S-top+;S-aS-top.b=k1;S-aS-top.year=k2;S-aS-top.month=k3;S-aS-top.day=k4;printf(补货成功第d件! n,i);printf(此时的栈顶数为:%dn,S-top);while(L-top-1)将存储在L栈中的商品上架S-top+;S-aS-top=L-aL-top-;L=initstack();printf(补货完成! nn);Print(S);倒货:/倒货Stack *outstack(Stack *S,Stack *L)L-top+;L-aL-top=S-aS-top;S-top-;printf(此时的栈顶数为:%dn,S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号