数据结构课程设计报告-超市商品管理.doc
《数据结构课程设计报告-超市商品管理.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告-超市商品管理.doc(33页珍藏版)》请在咨信网上搜索。
1、1。需求分析在某个大型生活服务区内,有三个超市,每个超市中的商品包括:商品号,商品名称,商品价格,库存数量,每种商品总数,生产日期等基本信息,假设三个超市的商品信息分别是用单链L1,L2,L3取存储的,请写一个程序实现下列任务要求:知识点:线性表操作【任务要求】1. 当超市有新的商品购入是能添加到单链表中;2. 能查找出三个超市中具有相同商品名称的商品信息;3. 在超市商品信息L1中删除那些与其他两个超市都有的商品信息;4. 能修改各超市商品基本信息,如价格等。5. 能查找比较超市中相同商品的销售情况,能统计每个超市中每种商品的销售量及销售额。6. 能输出每个超市的所有商品信息;【测试数据】自
2、行设定,注意测试将活区删空等特殊情况。2。概要设计2。1必要算法1.当超市有新的商品购入是添加到单链表中算法概要:运用单链表的基本操作插入一个新结点,即分配一个新的储存空间,然后依次输入结点所含的数据,再插入到原结点的尾部即可。此算法时间复杂度为O(1).2.查找出三个超市中具有相同商品名称的商品信息算法概要:1.寻找相同商品名称算法:先比较前两个链表(超市)l1,l2,运用比较字符串的strcmp()方法找出两个链表中含有相同的商品名称,然后将两个链表中具有相同商品名称的商品信息存储到新建链表fs中,再比较链表fs和l3,重复上述步骤,找出链表l1,l2,l3中都具有相同商品名称的商品,将其
3、商品信息存储在链表fs中。此算法时间复杂度为O(n)。2。输出相同商品的商品信息:访问fs中每个结点中的商品名称,根据商品名称分别遍历原链表l1,l2,l3的商品信息找出原结点,然后将其信息输出。此算法时间复杂度为O(n)。3。在超市商品信息L1中删除那些与其他两个超市都有的商品信息算法概要:首先运用上述的寻找相同商品名称算法,找出l1中那些与其他两个超市都有的商品名称,再根据其名称遍历链表l1,找出其结点删除并释放单链表的基本操作。此算法时间复杂度为O(n)。4修改各超市商品基本信息,如价格等算法概要:首先交互输入需要修改信息的商品号,排除超市中没有的商品后,定位到改商品的结点,然后选择需要
4、修改的信息,比如价格,库存数量等,或者全部修改即可修改信息.此算法时间复杂度为O(1)。5。查找比较超市中相同商品的销售情况,统计每个超市中每种商品的销售量及销售额。算法概要:首先通过寻找相同商品名称算法找出相同的商品,若没有相同商品,则返回,若有(多个)相同商品,通过交互输入商品号分别定位到3个链表中的相应结点然后输出其销售信息,包括销售量和销售额,统计每个超市中每种商品的销售量及销售额是在输出程序中一并输出。此算法时间复杂度为O(n).6.输出每个超市的所有商品信息算法概要:遍历3个链表的所有结点,然后分别输出每个结点的所有信息。此算法时间复杂度为O(n)。2.2辅助程序1.单链表存储结构
5、:为3个超市分别创建单链表,链表中每个结点含有7个数据,分别是:整型的商品号,字符数组型的商品名称,整型的库存数量,整型的商品总数,整型的生产日期,整型的销售数量。还有一个next指针.2.超市商品信息初始化:在每个链表当中交互输入每个结点的所有信息作为超市商品信息的初始化.3。销售算法:销售算法为了方便统计销售信息而存在,实现思路是:输入卖出的商品编号定位到链表中的相应结点,然后输入销售数量保存但结点中,同时该结点库存数量相应地减少.此算法时间复杂度为O(1)。2。3主程序主程序概要:主程序中首先创建3个链表然后初始化,再输出所需的操作信息供选择,通过交互式输入选择所要进行的操作,直到输入退
6、出程序按钮。1. 详细设计3。1必要算法1。当超市有新的商品购入时添加到单链表中linklist *purchase(linklist l,int s) /超市有新的商品购入是添加到单链表中 linklist *p,*q,r,*head;int n;head=l;r=l;p=l-next;/输入购入商品的基本信息 q=(linklist )malloc(sizeof(linklist));printf(”请依次输入超市%d此次购入新商品的商品号、商品名称、(出售)价格、购入量、生产日期:n”,s);scanf(d”,qgno);scanf(”%s,&q-name);scanf(f”,qpric
7、e);scanf(%d”,&qamount);scanf(%d”,q-date);q-QuantityInStock=q-amount;qsold=0;printf(”购入成功!n”); /将新结点插入到表尾 qnext=NULL;while(p!=NULL)r=p;p=pnext;r-next=q;r=r-next;return head;2。查找出三个超市中具有相同商品名称的商品信息算法1:寻找3个链表中具有相同商品名称的商品linklist findSame(linklist l1,linklist l2,linklist l3) /寻找3个链表中具有相同商品名称的商品 linklist
8、 *p1=l1next,*p2,p3,fs,q,*p;fs=(linklist )malloc(sizeof(linklist); /分配一个新的存储空间用来保存相同商品的信息 fs-next=NULL;q=fs;int flag;/寻找l1,l2中具有相同商品名称的商品 while(p1)p2=l2next;while(p2)flag=strcmp(p1name,p2name);if(flag=0)p=(linklist *)malloc(sizeof(linklist);strcpy(p-name,p1name);p-next=NULL;qnext=p;q=q-next;p2=p2next
9、;p1=p1next;/寻找l2,l3中具有相同商品名称的商品 p=fs;while(pnext)p3=l3;while(p3next)flag=strcmp(pnextname,p3nextname);if(flag=0) break;if(p3-next=NULL)q=pnext;pnext=q-next;p3=p3next;p=p-next;return fs;算法2:输出3个链表中具有相同商品名称的商品信息void outputSame(linklist *l1,linklist l2,linklist l3) /输出3个链表中具有相同商品名称的商品信息 linklist p1=l1-
10、next,p2=l2next,*p3=l3next,*fs,p;int flag;fs=findSame(l1,l2,l3);p=fsnext;printf(*3个超市中具有相同名称的商品信息*n);while(p)/遍历链表l1while(p1)flag=strcmp(p1name,p-name);if(flag=0)printf(” 商品号t商品名称t商品价格t库存数量t商品总数t售出数量t生产日期n”);printf(超市1: dt stt5。2ftt dtt %dtt dtt%dn, p1gno,p1-name,p1price,p1QuantityInStock,p1-amount,p
11、1amountp1QuantityInStock,p1date);p1=p1next;/遍历链表l2while(p2)flag=strcmp(p2name,p-name);if(flag=0)printf(”超市2: %dt stt%5。2ftt dtt dtt %dttdn, p2gno,p2name,p2price,p2-QuantityInStock,p2amount,p2amountp2-QuantityInStock,p2date);p2=p2-next;/遍历链表l3while(p3)flag=strcmp(p3-name,pname);if(flag=0)printf(超市3:
12、dt stt5。2ftt dtt dtt %dttdn”, p3gno,p3-name,p3-price,p3QuantityInStock,p3amount,p3-amount-p3-QuantityInStock,p3date);p3=p3next;p=p-next;3。在超市商品信息L1中删除那些与其他两个超市都有的商品信息void delSame(linklist l1,linklist *l2,linklist l3) /L1中删除那些与其他两个超市都有的商品信息int flag;linklist p,s,q,*fs;fs=findSame(l1,l2,l3);p=fs;while(
13、pnext)q=l1;while(qnext)flag=strcmp(q-next-name,p-next-name);if(flag=0)s=qnext;qnext=s-next;free(s);printf(”n成功删除超市1中与其他两个超市都有的商品信息!”);return;q=q-next;p=p-next;4.能修改各超市商品基本信息,如价格等void update(linklist l) /修改商品信息 linklist *p=l,q=l,s=l-next; int gno,m,price,QuantityInStock,amount,date,n=0,location=0,fla
14、g=0; if (l=NULL) /链表为空 printf(”链表为空!n”); return; printf(请输入需要修改价格的商品号:”); scanf(”d,gno);while(s)if(s-gno=gno)flag=1;s=snext;if(!flag) /找不到此商品 printf(”没有此商品!n”);return; while(qgno!=gno)location+;q=qnext;printf(”请选择需要修改的商品信息:n”);printf(1.商品价格 2。库存数量 3.商品总数 4。生产日期 5。全部修改n”);/选择需要修改的信息 scanf(”d,m);switc
15、h(m)case 1:printf(”请输入新的价格:);scanf(”d”,&price);while (p) if (location=n) pprice=price; return; else p=p-next; n+; break;case 2:printf(”请输入新的库存数量:”);scanf(”d”,&QuantityInStock);while (p) if (location=n) p-QuantityInStock=QuantityInStock; return; else p=pnext; n+; break;case 3:printf(请输入新的商品总数:);scanf
16、(%d”,&amount);while (p) if (location=n) p-amount=amount; return; else p=p-next; n+; break;case 4:printf(”请输入新的生产日期:);scanf(%d,date);while (p) if (location=n) pdate=date; return; else p=p-next; n+; break;case 5:printf(”请输入新的价格:”);scanf(”d,&price);printf(”请输入新的库存数量:);scanf(d”,&QuantityInStock);printf(
17、请输入新的生产日期:);scanf(”%d”,date);printf(请输入新的商品总数:);scanf(d”,&date);while (p) if (location=n) pprice=price; pQuantityInStock=QuantityInStock; p-amount=amount;p-date=date; return; else p=pnext; n+; break; 5。查找比较超市中相同商品的销售情况void soldInformation(linklist *l1,linklist l2,linklist *l3) /查找比较超市中相同商品的销售情况linkl
18、ist q1=l1,*p1=l1,q2=l2,p2=l2,*q3=l3,*p3=l3,*s; int gno,n1=0,location1=0,n2=0,location2=0,n3=0,location3=0; s=findSame(l1,l2,l3); if(s-next=NULL) printf(”3个超市没有相同商品!”);return; printf(请输入需要查询销售信息的商品号:”); scanf(”%d”,gno); while(q1-gno!=gno)location1+;q1=q1-next;/遍历l1 while (p1) if (location1=n1) while(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 超市 商品 管理
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。