数据结构-商品信息管理_第1页
数据结构-商品信息管理_第2页
数据结构-商品信息管理_第3页
数据结构-商品信息管理_第4页
数据结构-商品信息管理_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构上机实验报告年第 学期 第 次上机上机日期:年 月 日班号学号姓名(一)题目:提醒:源代码请联微信xg取购物网站信息管理(必做)(线性表)问题描述设计一个程序,对商铺信息管理,商铺信息包括:商铺编号,商铺名,信誉度(0-5), (商品名称1,价格1,销量1),(商品名称2,价格2,销量2),(商品名称3,价格 3,销量3)。商品名称包括(毛巾,牙刷,牙膏,肥皂,洗发水,沐浴露等6种以上商品),每 个商铺具有其中事先确定若干商品及价格,由文件输入,销量初始为0。基本要求(1)建立一个单向链表存储所有商铺信息(至少30个),以编号为序,编号从1开 始递增,从文件中

2、读取数据,并能将数据存储在文件。商铺信息结点的数据结构自行 设计。(2)可以增、删商铺。增加商铺,编号自动加一,插入链表尾部;删除商铺,以编 号为准,并修改后续结点的编号,保持编号连续性。可增、删商品。(3)查询某一种商品名称,建立一个双向循环链表,结点信息是包含该商品的所有 商铺编号、商铺名、信誉度、商品名称、价格、销量,以信誉度从高至低,并按销量 排序,并逐一显示。(4)购买某一商铺的商品,修改单向链表中商品的信息的销量。(5)建立一个顺序结构,按商品名Hash分配地址,存储当前每种商品总销量并输出。(6)任何的商铺信息变化,实现文件存储。(二)算法思想:增加商铺定义指针P,使其走到链表的

3、尾部,进行插入结点即可。Status ListInsert_L(LinkList L,int num)FILE *fp , *fp1;fp = fopen(increase.txt”,r”);fp1 = fopen(change.txt”,w”);while(num )LinkList p = L;int j = 0;while(p&j next;j+;LinkList S;MallocList_L(S);S-shop.num = ListLength_L(L) + 1;fscanf(fp,%s%d”,S-shop.shopname,&S-shop.credit);for(j = 0;j ne

4、xt = S;S-next = NULL;p = L-next;while(p)fprintf(fp1,%d %s %d ”,p-shop.num,p-shop.shopname,p-shop.credit);for(j = 0;j modityj.tradename,p-modityj.price,p-modityj.sal e);fprintf(fp1,n);p = p-next;fclose(fp);fclose(fp1);return OK;删除商铺与单向链表的删除一样,删除节点,如果被删除结点后面还有结点,则进行左移。Status ListDelete_L(LinkList L,in

5、t i)LinkList p,q;P=L;int j = 0;while(p&jnext;j+;if(!(p-next) return ERROR;q=p-next;p-next=q-next;free(q);p = L;for(j = 0;j next;p-shop.num = j + 1;p = L-next;FILE *fp;fp = fopen(change.txt”,w”);while(p)fprintf(fp,%d %s %d ”,p-shop.num,p-shop.shopname,p-shop.credit);for(j = 0;j modityj.tradename,p-mo

6、dityj.price,p-modityj.sal e);fprintf(fp,n);p = p-next;fclose(fp);return OK;查询商品对存有商品的双向循环链表进行排序操作,在按商铺信用从高到低的前提下,按照查询该商品销 量从高到低进行排序。然后依次输出每个结点即可。Status SortList_DL(DuLinkList &L,int n) int i, j;Shop e1, e2;int length = ListLength_DL(L);DuLinkList p;for(i = 0; i next;for(j = 0; j Dshop;e2 = p-next-Ds

7、hop;if (e1.credit Dshop = e2;p-next-Dshop = e1;if(e1.credit = e2.credit)if(modityn.sale Dshop = e2;p-next-Dshop = e1;p = p-next;Status FindCommodity(DuLinkList &DL)int n , num;while(1)printf(请输入您要查找的商品名称:1.towel 2.toothbrush 3.toothpaste 4.soap5.shampoo 6.bodywashn);char name15 = 0;scanf(%s”,name);n

8、um = Hash(name,19);if(num =5|num=10|num=14|num=12|num=13|num=4)break;elseprintf(没有此商品,请重新输入! n);continue;switch(num)case 5:n = 0;break;case 10:n = 1;break;case 14:n = 2;break;case 12:n = 3;break;case 13:n = 4;break;case 4:n = 5;break;SortList_DL(DL,n);printf(您所查找的商品信息如下:nn);TListTraverse_DL(DL,n,TVi

9、sit_DL);return OK;购买商品输入要购买的商店(即找到对应结点),购买需要购买的物品,修改该结点的值域(即修改该物品 销量)Status BuyCommodity(LinkList &L)int num , n , j;printf(请输入您想购物商店的序号(1%d): n”,ListLength_L(L);scanf(%d”,&num);LinkList p = L;while(1)L = L-next;if(L-shop.num = num) break;while(1)printf(请输入您想购买的商品名称:1.towel 2.toothbrush 3.toothpaste

10、 4.soapshampoo 6.bodywashn);char name15 = 0;scanf(%s”,name);num = Hash(name,19);if(num =5|num=10|num=14|num=12|num=13|num=4)break;elseprintf(没有此商品,请重新输入! n);continue;switch(num)case 5:n = 0;break;case 10:n = 1;break;case 14:n = 2;break;case 12:n = 3;break;case 13:n = 4;break;case 4:n = 5;break;L-mod

11、ityn.sale +;FILE *fp;fp = fopen(change.txt”,w”);L = p-next;while(L!=NULL)fprintf(fp,%d %s %d ”,L-shop.num,L-shop.shopname,L-shop.credit);for(j = 0;j modityj.tradename,L-modityj.price,L-modityj.sal e);fprintf(fp,n);L = L-next;fclose(fp);printf(恭喜您!购买成功! n);5.查询商品销量将每种商品销量存入顺序表中,依据哈希表分配地址,哈希表根据每种商品的名称

12、ASC11码mod19 作为关键字构造哈希表。输入商品名称,输出对应顺序表结点的值即可。Status InitList_Sq(SqList &L,LinkList &L1)L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int);if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;int i , j , count;int n = ListLength_L(L1);LinkList p;for(i = 0;i next;for(j = 0;j modityi.sale;p = p-n

13、ext;switch(i)case 0: strcpy(name, towel);break;case 1: strcpy(name, toothbrush);break;case 2: strcpy(name, toothpaste) ;break;case 3: strcpy(name, soap);break;case 4: strcpy(name, shampoo);break;case 5: strcpy(name, bodywash);break;int num = Hash(name,19);L.elemnum = count;return OK;Status DestroyLi

14、st_Sq(SqList &L)free(L.elem);L.elem = NULL;return OK;Status SaleCommodity(SqList L)printf(请输入您想要查询销量的商品名称:1.towel 2.toothbrush 3.toothpaste 4.soap 5.shampoo 6.bodywashn);char name15 = 0;scanf(%s”,name);int i = Hash(name,19);printf(%s 销量为:,name);printf(%d”,L.elemi);printf(n);return OK;运行结果以及结果分析:增加商铺

15、(原先有30个商铺)增加商铺删除商铺看而商品购买商品查询商品销量0.退出请输入您的选择:1请输入需要增加商铺的数量:1宙侦商孺后所有商浦信息如下:高孺序喜:1高铺藤:A商铺信用:5商品名祢:towel商品价格:1商品销量:0商品名称:toothbrush商品价格:1商品销量:0 商品名称:toothpaste商品价格:1商品销量:0 商品名称:soap商品价格:1商品销量:0 商品名祢:shampoo商品价格:1商品销量:0 商品名称:bodywash商品价格:1商品销量:0号称称称称称称 序名名名名名名 铺品品品品品品 商商商商商商商:2商铺名称:B商铺信用:5:towel商品彳介格:2商品

16、销量:0:toothbrush商品价格:2商品销量:toothpaste商品价格:2商品销量:soap商品价格:。商品销量:0:shampoo商品价格:2商品销量:0:bodywash商品价格:2商品销量: 商铺序号:3商铺名称:C商铺信用:5 商品名称:towel商品价格:3商品销量:0 商品名称:toothpaste商品价格:28商品销量:0 商品名称:soap商品价格:28商品销量:0 商品名称:shampoo商品价格:28商品销量:0 商品名祢:bodywash商品价格:28商品销量:0商铺序号:29商铺名称:C1商铺信用:1 商品名称:towel商品价格:29商品销量:0 商品名称:

17、toothbrush商品价格:29商品销量:0 商品名祢:toothpaste商品价格:29商品销量:0 商品名祢:soap商品价格:29商品销量:0 商品名称:shampoo商品价格:29商品销量:0 商品名称:bodywash商品价格:29商品销量:0商铺序号:30商铺名称:D1商铺信用:1 商品名祢:towel商品价格:30商品销量:0 商品名称:toothbrush商品价格:30商品销量:0 商品名#toothpaste商品价格:30商品销量:0 商品名称:soap商品价格:30商品销量:0 商品名称:shampoo商品价格:30商品销量:0 商品名称:bodywash商品价格:30商

18、品销量:0商铺序号:31商铺名称:E1商铺信用:0 商品名称:towel商品价格:31蔺品销量:0 商品名#: toothbrush商品价格:31商品销量:0 商品名称:toothpaste商品价格:31商品销量:0 商品名稀:soap商品价格:31商品销量:0 商品名称:shampoo商品价格:31商品销量:0 商品名称:bodywash商品价格:31商品销量:0删除商铺L增加商铺删除商铺香商商品购买商品查询商品销量 0,退出请输入您的选择:2请输入您想要删除商铺的编号:1删除商铺后所有商铺信息如下:高福序喜:1高铺名徐:B商铺信用:5商品名祢:towel商品价格:2商品销量:0商品名称:t

19、oothbrush商品价格:2商品销量:0商品名称:toothpaste商品价格:2商品销量:0商品名祢:soap商品价格:2商品销量:0商品名称:shampoo商品价格:2商品销量:0商品名称:bodywash商品价格:2商品销量:0商铺序号:2商铺名称:C商铺信用:5商品名祢:towel商品价格:3商品销量:0商品名称:toothbrush商品价格:3商品销量:0商品名称:toothpaste商品价格:3商品销量:0商品名祢:soap商品价格:3商品销量:0商品名称:shampoo商品价格:3商品销量:0 商品名称:bodywash商品价格:3商品销量:0商铺序号:3商铺名称:D商铺信用:

20、5冏品名称:towel 商品价格:4 商品销量:0商品名称:toothbrush商品价格:28商品销量:0商品名称:toothpaste商品价格:28商品销量:0 商品名称:soap商品价格:28商品销量:0 商品名称:shampoo商品价格:28商品销最:0 商品名称:bodywash商品价格:28商品销最:0商铺序号:28商铺名称:C1商铺信用:1商品名祢:towel商品侨格:29商品销量:0商品名称:toothbrush商品价格:29商品销量:0商品名称:toothpaste商品价格:29商品销量:0 商品名称:soap商品价格:29商品销量:0 商品名称:shampoo商品价格:29商

21、品销量:0 商品名称:bodywash商品价格:29商品销量:0商铺序号:29商铺名称:D1商铺信用:1商品名祢:towel商品价格:30商品销量:0商品名称:toothbrush商品价格:30商品销量:0商品名称:toothpaste商品价格:30商品销量:0商品名称:soap商品价格:30商品销量:0商品名称:shampoo商品价格:30商品销量:0商品名称:bodywash商品价格:30商品销量:0商铺序号:30商铺名称:E1商铺信用:0商品名祢:towel商品价格:31商品销量:0商品名称:toothbrush商品价格:31商品销量:0商品名称:toothpaste商品价格:31商品销

22、量:0商品名称:soap商品价格:31商品销量:0商品名称:shampoo商品价格:31商品销量:0 商品名称:bodywash商品价格:31商品销量:0查询商品*卜 育*量 销 铺铺品品品 商商商商商 加除询买询出 增删查购查退 L.0.青输入燃的选辱3青输入您要查找的商品名称:L towel 2. toothbrush 3. toothpaste 4. soap 5. shampoo 6. bodywash owgI茶所查找的商品信息如下:荀铺序号:1商品名称:B商铺信用:5荀品名株:towel商品彳介格:2商品辛肖量:0商铺序号:2商品名称:C商铺信用:5荀品茗称:towel商品价格:3商品错量:0荀铺序号:3商品名称:D商铺信用:5荀品名娠:towei商品价格:4商品清量:0荀铺序号:4商品名称:E商铺信用:5商品茗称:towel商品价格:5商品错量:0荀铺序号:5商品名称:F商铺信用:5商品名称:towei商品价格:6商品清量:0 直铺序号:21商品名称:V商铺信用:2 商品名称:towel商品价格:22商品销量:0商铺序号:22商品名称:W商铺信用:2商品名祢:towel商品价格:23商品销量:0商铺序号:23商品名称:X商铺信用:2商品名祢:towel商品价格:24商品销量:0商铺序号:24商品名称:Y商铺信用:1商品名祢:towel商品价

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论