c语言药店管理系统的前提报告,数据结构(C语言)课设5——药店的药品销售统计系统...
数据结构(C语言)课设5——药店的药品销售统计系统
题目描述:
你在一个L药品店当一名仓库管理员,马上就要放寒假回家过年了,L药店对这一年的销售情况做了统计,但这看起来太杂乱无章了。因此,你需要对这些数据进行整理,使他们看起来并不那么糟糕。“哦,我的天,是谁把阿莫新林放在了这?它应该放在那边的!最好在移动前用蒂花之秀先洗洗手,这样会显得更庄重些”。所以说,你需要将它们进行排序,这样就会看起来好看。但是,L店长是个冷漠的人,他一语“从小到大”,便拂袖而去,并没有说要对什么属性进行排序。(啧,真麻烦!)这意味着你要分别按照各个属性进行从小到大排序,这些属性分别为“药品编号”(num),“药品名称”(name),“药品单价”(price),“药品销售数量”(count),“药品销售额”(sale=price*count)。
以下分别为五种排序算法:
插入排序
选择排序
冒泡排序
堆排序
快速排序
#include
#include
#include
using namespace std;
#define MAX 100
typedef struct node
{
char Num[5];//编号
char Name[11];//名称
double Price;//单价
int Count;//销售数量
double sale;
}Medicine;
typedef struct
{
Medicine y[MAX];
int length;
}SequenList;
void cinInfo(SequenList &S, int n)//输入信息
{
for(int i = 1; i <= n; i++)
{
cin>>S.y[i].Num;
cin>>S.y[i].Name;
cin>>S.y[i].Price;
cin>>S.y[i].Count;
S.y[i].sale = S.y[i].Price * S.y[i].Count;
}
S.length = n;
}
void print(SequenList &S)
{
for(int i = 1; i <= S.length; i++)
{
printf("%s\t%s\t%.1lf\t%d\t%.1lf\n", S.y[i].Num, S.y[i].Name, S.y[i].Price, S.y[i].Count, S.y[i].sale);
}
cout <
}
void InsertSort(SequenList &S)//插入排序 编号
{
int i, j;
for(i = 2; i <= S.length; ++i)
{
if(strcmp(S.y[i - 1].Num, S.y[i].Num) > 0)
{
S.y[0] = S.y[i];//将S.y[i]赋给S.y[0] 作为监视哨
S.y[i] = S.y[i - 1];//S.y[i]小于S.y[i-1],则将比较后较大的向后移
for(j = i - 2; strcmp(S.y[j].Num, S.y[0].Num) > 0; --j)
S.y[j+1] = S.y[j];
S.y[j + 1] = S.y[0];
}
}
print(S);
}
void SelectSort(SequenList &S)//选择 名称
{
int i, j, k;
Medicine t;
for(i = 1; i < S.length; ++i)
{
k = i;
for(j = i + 1; j <= S.length; ++j)
{
if(strcmp(S.y[k].Name, S.y[j].Name) > 0)//将k指向最小的
{
k = j;
}
}
if(k != i)
{
t = S.y[i];
S.y[i] = S.y[k];
S.y[k] = t;
}
}
print(S);
}
void BubbleSort(SequenList &S)//冒泡 单价
{
Medicine t;
int l = S.length - 1;
bool flag = false;
while(l > 0 && flag == false)
{
flag = true;
for(int j = 1; j <= l; j++)
{
if(S.y[j].Price > S.y[j + 1].Price)
{
flag = false;
t = S.y[j];
S.y[j] = S.y[j + 1];
S.y[j + 1] = t;
}
}
l--;
}
print(S);
}
void HeapAdjust(SequenList &S, int s, int k)
{
Medicine m = S.y[s];//保存根结点信息
for(int j = 2*s; j <= k; j *= 2)//沿着值较大的孩子结点向下筛选
{
if(j < k && S.y[j].Count < S.y[j + 1].Count) j++;
if(m.Count >= S.y[j].Count) break;//若根结点值大于孩子结点,根结点应是s的值
S.y[s] = S.y[j];//否则根结点应该在j上,一直更新根结点,
s = j;
}
S.y[s] = m;
}
void CreateHeap(SequenList &S)//初建大根堆
{
int n = S.length;
for(int i = n/2; i > 0; i--)
{
HeapAdjust(S, i, n);
}
}
void HeapSort(SequenList &S)//堆排 数量
{
CreateHeap(S);
Medicine m;
for(int i = S.length; i > 1; i--)
{
m = S.y[1];
S.y[1] = S.y[i];
S.y[i] = m;
HeapAdjust(S, 1, i - 1);
}
print(S);
}
int Partition(SequenList &S, int low, int high) {//1 n
S.y[0] = S.y[low];
int pivotkey = S.y[low].sale;
while(low < high) {
while(low < high && S.y[high].sale >= pivotkey) high--;
S.y[low] = S.y[high];
while(low < high && S.y[low].sale <= pivotkey) low++;
S.y[high] = S.y[low];
}
S.y[low] = S.y[0];
return low;
}
void QuickSort(SequenList &S, int low, int high) { //快速排序算法——药品销售e
if(low < high) {
int pivotloc = Partition(S, low, high);
QuickSort(S, low, pivotloc - 1);
QuickSort(S, pivotloc + 1, high);
}
}
int main()
{
SequenList S;
int n;
cin>>n;
cinInfo(S, n);
InsertSort(S); //编号
SelectSort(S); //名称
BubbleSort(S); //单价
HeapSort(S); //数量
QuickSort(S, 1, n); //销售额
print(S);
return 0;
}
小颖子_Ly
发布了6 篇原创文章 · 获赞 0 · 访问量 11
私信
关注
标签:课设,int,void,C语言,high,low,print,SequenList,数据结构
来源: https://blog.csdn.net/qq_46043634/article/details/103949213
c语言药店管理系统的前提报告,数据结构(C语言)课设5——药店的药品销售统计系统...相关推荐
- 五、药店的药品销售统计系统(排序应用)
五.药店的药品销售统计系统(排序应用) [问题描述] 设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号.单价.销售量或销售额做出排名. [实现提示] 在本设计中,首先从数据文件中 ...
- 课设-药店的药品销售统计系统(排序应用)
药店的药品销售统计系统(排序应用) 1.问题描述 [题目描述] 你在一个L药品店当一名仓库管理员,马上就要放寒假回家过年了,L药店对这一年的销售情况做了统计,但这看起来太杂乱无章了.因此,你需要对这些 ...
- 药店的药品销售统计系统的设计与实现
药店的药品销售统计系统的设计与实现 问题描述:设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号.单价.销售量或销售额做出排名. 1.基本要求, (1)药品的信息包括:药品编号. ...
- 药店的药品销售统计系统(排序应用)
1.1[问题描述] 设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号.单价.销售量或销售额做出排名. 1.2[实现提示] 在本设计中,首先从数据文件中读出各药品的信息记录,存储在 ...
- 数据结构c语言版朱战立报告,数据结构(C语言版)
本书是Sedgewick彻底修订和重写的C算法系列的第一本.全书分为四部分,共16章.第一部分"基础知识"(第1-2章)介绍基本算法分析原理.第二部分"数据结构" ...
- 药店的药品销售统计系统
#include <iostream> #include <algorithm>using namespace std; #define MAXSIZE 1000 typede ...
- c语言课程设计北京电子工业出版社,c语言图书管理系统课程设计报告
c语言图书管理系统课程设计报告 五.小节: 在这一个星期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性.将理论和实践结合在一起,用先进的计算机工具方便人们的生活.C语言程序的编写首先 ...
- c语言课程设计图书管理系统报告,C语言图书管理系统课程设计报告[1]
C语言图书管理系统课程设计报告[1] 第三章 图书管理系统的设计与实现3.1 系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅.还书的平台.根据系统 ...
- 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告
<C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...
最新文章
- 三阶魔方还原步骤图_(六)最简单的三阶魔方入门教程——顶面还原
- JAVA SE学习day_12:集合的排序、队列、栈结构
- C#技术分享【PDF转换成图片——13种方案】
- Flink 广播变量
- 大数据:互联网大规模数据挖掘与分布式处理
- java mybatis 返回map_mybatis返回map集合的格式是什么?mybatis返回map集合实例
- nccloud开发环境搭建_VS Code 搭建开发环境
- js基础知识汇总13
- SSM框架原理流程及使用方法
- C语言学习中遇到的问题和解决方法
- 怎么学好高中数学高一数学学习方法有哪些
- Unity实现将图片上传到服务器功能
- 知乎App加密流量分析初探
- SpiceyPy-内核与时间尺度转换
- Android之头像图片变圆形
- 施耐德plc使用施耐德触摸屏设置
- 用java实现判断回文
- 1. 计算机网络概述
- 萌新面试经,赶紧来看看!
- JVM知识整理----基础和垃圾处理
热门文章
- iQOO7/iQOO8、iQOO8Pro/iQOO9、iQOO9Pro密码忘记怎么解锁?如何刷机解锁删除屏幕和账号密码?
- 2020G1工业锅炉司炉模拟考试及G1工业锅炉司炉模拟考试软件
- python爬虫Pragmatic系列IV
- ASP.NET Core教程【二】从保存数据看Razor Page的特有属性与服务端验证
- SQLite数据库及在Android开发中的基本使用
- 第一章、架设服务器前的准备工作
- 【机器学习】pd.get_dummies()
- 如何签约支付宝单笔转账接口!
- php获取客户mac地址吗,如何在php与js中分别获取客户度mac地址
- 5G中的物联网技术与未来演进方向,路在何方?