没有合适的资源?快使用搜索试试~ 我知道了~
数据结构课程设计报告超市商品管理.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 41 浏览量
2023-04-23
09:56:53
上传
评论 1
收藏 298KB DOC 举报
温馨提示
试读
64页
数据结构课程设计报告超市商品管理.doc
资源推荐
资源详情
资源评论
1.需求分析
在某个大型生活服务区内,有三个超市,每个超市中的商品涉及:商品号,商品名称,
商品价格,库存数量,每种商品总数,生产日期等基本信息,假设三个超市的商品信息
分别是用单链 L1,L2, L3 取存储的,请写一个程序实现下列任务规定:
知识点:线性表操作
【任务规定】
1. 当超市有新的商品购入是能添加到单链表中;
2. 能查找出三个超市中具有相同商品名称的商品信息;
3. 在超市商品信息 L1 中删除那些与其他两个超市都有的商品信息;
4. 能修改各超市商品基本信息,如价格等。
5. 能查找比较超市中相同商品的销售情况,能记录每个超市中每种商品的销售量及销售
额。
6. 能输出每个超市的所有商品信息;
【测试数据】自行设定,注意测试将活区删空等特殊情况。
2.概要设计
2.1 必要算法
1.当超市有新的商品购入是添加到单链表中
算法概要:运用单链表的基本操作——插入一个新结点,即分派一个新的储存空间,然
后依次输入结点所含的数据,再插入到原结点的尾部即可。此算法时间复杂
度为 O(1)。
2.查找出三个超市中具有相同商品名称的商品信息
算法概要:1.寻找相同商品名称算法:先比较前两个链表(超市)l1,l2,运用比较字符串
的 strcmp()方法找出两个链表中具有相同的商品名称,然后将两个链表
中具有相同商品名称的商品信息存储到新建链表 fs 中,再比较链表 fs 和
l3,反复上述环节,找出链表 l1,l2,l3 中都具有相同商品名称的商品,将其
商品信息存储在链表 fs 中。此算法时间复杂度为 O(n)。
2.输出相同商品的商品信息:访问 fs 中每个结点中的商品名称,根据商品名
称分别遍历原链表 l1,l2,l3 的商品信息找出原结点,然后将其信息输出。此
算法时间复杂度为 O(n)。
3.在超市商品信息 L1 中删除那些与其他两个超市都有的商品信息
算法概要:一方面运用上述的寻找相同商品名称算法,找出 l1 中那些与其他两个超市都
有的商品名称,再根据其名称遍历链表 l1,找出其结点删除并释放——单链
表的基本操作。此算法时间复杂度为 O(n)。
4 修改各超市商品基本信息,如价格等
算法概要:一方面交互输入需要修改信息的商品号,排除超市中没有的商品后,定位到
改商品的结点,然后选择需要修改的信息,比如价格,库存数量等,或者所
有修改即可修改信息。此算法时间复杂度为 O(1)。
5.查找比较超市中相同商品的销售情况,记录每个超市中每种商品的销售量及销售额。
算法概要:一方面通过寻找相同商品名称算法找出相同的商品,若没有相同商品,则返
回,若有(多个)相同商品,通过交互输入商品号分别定位到 3 个链表中的
相应结点然后输出其销售信息,涉及销售量和销售额,记录每个超市中每种
商品的销售量及销售额是在输出程序中一并输出。此算法时间复杂度为 O(n)。
6.输出每个超市的所有商品信息
算法概要:遍历 3 个链表的所有结点,然后分别输出每个结点的所有信息。此算法时间
复杂度为 O(n)。
2.2 辅助程序
1.单链表存储结构:为 3 个超市分别创建单链表,链表中每个结点具有 7 个数据,分别
是:整型的商品号,字符数组型的商品名称,整型的库存数量,整
型的商品总数,整型的生产日期,整型的销售数量。尚有一个 next
指针。
2.超市商品信息初始化:在每个链表当中交互输入每个结点的所有信息作为超市商品信息
的初始化。
3.销售算法:销售算法为了方便记录销售信息而存在,实现思绪是:输入卖出的商品编号
定位到链表中的相应结点,然后输入销售数量保存但结点中,同时该结点
库存数量相应地减少。此算法时间复杂度为 O(1)。
2.3 主程序
主程序概要:主程序中一方面创建 3 个链表然后初始化,再输出所需的操作信息供选择,
通过交互式输入选择所要进行的操作,直到输入退出程序按钮。
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",&q->gno);
scanf("%s",&q->name);
scanf("%f",&q->price);
scanf("%d",&q->amount);
scanf("%d",&q->date);
q->QuantityInStock=q->amount;
q->sold=0;
printf("购入成功!\n");
//将新结点插入到表尾
q->next=NULL;
while(p!=NULL){
r=p;
p=p->next;
}
r->next=q;
r=r->next;
return head;
}
2.查找出三个超市中具有相同商品名称的商品信息
算法 1:寻找 3 个链表中具有相同商品名称的商品
linklist *findSame(linklist *l1,linklist *l2,linklist *l3) //寻找 3 个链表中具有相同商品名称的商品
剩余63页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3701
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功