五、药店的药品销售统计系统(排序应用)
[问题描述]
设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
[实现提示]
在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。药品编号共4位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用基数排序法。对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。
药品信息的元素类型定义:
typedef struct node
{ char num[4]; /药品编号/
char name[10]; /药品名称/
float price; /药品单价/
int count; /销售数量/
float sale; /本药品销售额/
}DataType;
存储药品信息的顺序表的定义:
typedef struct
{ DataType r[MaxSize];
int length;
}SequenList;

算法设计
先把文件读取出来,显示其中的信息。冒泡排序:找前两个数的进行比较,若第一个大于第二个,则互换两个位置。两个for循环进行他的排序。快速排序:找到第一个作为枢纽,在最后找到一个比 枢纽小的数放到前面,在前面找到一个比枢纽大的数放到后面,最后high=low的时候循环结束。
堆排序,建立堆,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的记录

算法思想

流程图
int line()
void read()
void write()
void show()//读取文件中的内容,并把内容显示出来
void bubbling_sort()//冒泡排序
void QSort(int low, int high)
void quick_sort()//快速排列
void HeapAdjust(int s, int m)
void Heap_sort()//堆排序
void Swap(int i, int j)//交换的内容
main()主函数

              创建顺序表int InitList(SqList &L)顺序表的基本操作之插入int ListInsert药品单价的排序       药品销售量的排序      药品销售排序(冒泡排序)          (快速排序 )        (堆排序)
这里写代码片
#include "stdafx.h"#include<stdio.h>
#include<cstdio>
#include<string>
#include<cstring>
#include<string.h>
#include<vector>
#include<algorithm>
#include<queue>
#include<stack>
#include<math.h>
#include<cmath>
#include<iomanip>
#include<stdlib.h>
#include<list>
#include<map>
#include<fstream>
#include<iostream>
using namespace std;
#define MAXSIZE 100
int N = 0;
typedef struct node   /*药品信息的元素定义*/
{string num;       /*药品编号*/string name;      /*药品名称*/float price;      /*药品单价*/int count;       /*销售数量*/float sale;       /*本药品销售额*/
}Datatype;
typedef struct        /*存储药品信息的顺序表的定义*/
{Datatype r[MAXSIZE + 1];int length;
}Sequnenlist;
Sequnenlist *l = new Sequnenlist;
int line()
{//获取文件中的药品种数  int len = 0;string str;ifstream file1("drug.txt");while (file1){getline(file1, str);//每次读取一行  if (str.length()>4) //长度4是随便写的,代表本行有数据  len++; //记录药品种类数  }return len;
}
void show()
{//输出  cout << "====序号=====编号=====名称=====单价=====销售量=====销售额====" << endl;for (int i = 1; i <= N; i++)cout << "    [" << i << "]   "<< setw(7) << l->r[i].num<< setw(10) << l->r[i].name<< setw(8) << l->r[i].price<< setw(9) << l->r[i].count<< setw(12) << l->r[i].sale<< endl;
}
void read()
{//读文件  ifstream ofile;string nu;string na;float pr;int co;float sa;ofile.open("drug.txt", ios::in);if (ofile.is_open()){for (int i = 1; i <= N; i++){ofile >> nu >> na >> pr >> co >> sa;l->r[i].num = nu;l->r[i].name = na;l->r[i].price = pr;l->r[i].count = co;l->r[i].sale = sa;if (i == N){cout << "文件导入成功。=^_^=" << endl;cout << "药品种类数:" << i << endl;show();}}}elsecout << "文件打开失败" << endl;
}
void write()
{//写文件  ofstream ifile("drug_1.txt");for (int i = 1; i <= N; i++){ifile << l->r[i].num << "   "<< l->r[i].name << "   "<< l->r[i].price << "   "<< l->r[i].count << "   "<< l->r[i].sale << endl;}show();cout << "药品全部导出到文件 “drug_1.txt”" << endl;
}
int Partition(int low, int high)//快排
{//一趟比较,返回枢纽所在位置  l->r[0] = l->r[low];//将枢纽key暂存在r[0]  int pivotkey = l->r[0].count;while (low<high){while (low<high&&l->r[high].count >= pivotkey)--high;l->r[low] = l->r[high];//将比枢纽小的移到低端  while (low<high&&l->r[low].count <= pivotkey)++low;l->r[high] = l->r[low];//将比枢纽大的移到高端  }l->r[low] = l->r[0];return low;//返回枢纽位置
}
void QSort(int low, int high)
{if (low<high){int pivotloc = Partition(low, high);//将序列一分为二QSort(low, pivotloc - 1);//对低子表进行递归排序QSort(pivotloc + 1, high);//对高子表进行递归排序}
}
void quick_sort()
{//销售量快排  cout << "按销售量从小到大(快排):" << endl << endl;QSort(1, l->length);//书上276 对顺序表整体排序show();
}
void Swap(int i, int j)
{//交换第i和第j个药品  l->r[MAXSIZE].count = l->r[i].count;l->r[MAXSIZE].name = l->r[i].name;l->r[MAXSIZE].num = l->r[i].num;l->r[MAXSIZE].price = l->r[i].price;l->r[MAXSIZE].sale = l->r[i].sale;l->r[i].count = l->r[j].count;l->r[i].name = l->r[j].name;l->r[i].num = l->r[j].num;l->r[i].price = l->r[j].price;l->r[i].sale = l->r[j].sale;l->r[j].count = l->r[MAXSIZE].count;l->r[j].name = l->r[MAXSIZE].name;l->r[j].num = l->r[MAXSIZE].num;l->r[j].price = l->r[MAXSIZE].price;l->r[j].sale = l->r[MAXSIZE].sale;
}
void bubbling_sort()
{//单价排序冒泡排序法  cout << "按单价从小到大(冒泡排序):" << endl << endl;for (int i = 1; i <= N - 1; i++)//从第一个开始相邻的两个比较  价格从小到大排序for (int j = i + 1; j <= N; j++)if (l->r[i].price>l->r[j].price)Swap(i, j);show();
}
void HeapAdjust(int s, int m)
{//堆排序筛选算法  Datatype rc;rc.count = l->r[s].count;rc.name = l->r[s].name;rc.num = l->r[s].num;rc.price = l->r[s].price;rc.sale = l->r[s].sale;for (int j = 2 * s; j <= m; j *= 2){//沿key较大的孩子节点向下筛选  if ((j<m) && l->r[j].sale<l->r[j + 1].sale) ++j;//j为key较大的记录的下标  if (rc.sale >= l->r[j].sale) break;//rc应插入在位置s上  l->r[s].count = l->r[j].count;l->r[s].name = l->r[j].name;l->r[s].num = l->r[j].num;l->r[s].price = l->r[j].price;l->r[s].sale = l->r[j].sale;s = j;}l->r[s].count = rc.count;l->r[s].name = rc.name;l->r[s].num = rc.num;l->r[s].price = rc.price;l->r[s].sale = rc.sale;
}
void Heap_sort()
{//销售额的排序堆排序法  cout << "按销售额从小到大(堆排序):" << endl << endl;for (int i = l->length / 2; i >= 1; i--)HeapAdjust(i, l->length);for (int i = l->length; i>1; i--){Swap(1, i);//将堆顶记录和当前未经排序子序列中  //的最后一个记录交换  HeapAdjust(1, i - 1);//将l->r[1~i-1]重新调整为大顶堆  }show();
}
void menu()
{//菜单  cout << endl;cout << "           ◆-------◆---------◆---------◆-------◆" << endl;cout << "                       药品信息管理系统               " << endl;cout << "           ◇                                      ◇" << endl;cout << "                       1、导入药品信息               " << endl;cout << "           ◇          2、导出药品信息             ◇" << endl;cout << "                       3、单价排序                   " << endl;cout << "           ◇          4、销售额排序               ◇" << endl;cout << "                       5、销售量排序                 " << endl;cout << "           ◇          6、退出管理系统             ◇" << endl;cout << "                                                     " << endl;cout << "           ◇                                      ◇" << endl;cout << "           ◆-------◆---------◆---------◆-------◆" << endl;cout << endl << endl << "请选择功能:";
}
void exit()
{//退出  cout << endl;cout << "           ◆-------◆---------◆---------◆-------◆" << endl;cout << endl;cout << "           ◇           感谢您的使用!=^_^=        ◇" << endl;cout << endl;cout << "           ◆-------◆---------◆---------◆-------◆" << endl;cout << endl;
}
int main()
{int n;system("color 37");l->length = N = line() - 1;while (1){system("cls");menu();cin >> n;switch (n){case 1:{system("cls");read();system("pause");break;}case 2:{system("cls");write();system("pause");break;}case 3:{system("cls");bubbling_sort();system("pause");break;}case 4:{system("cls");Heap_sort();system("pause");break;}case 5:{system("cls");quick_sort();system("pause");break;}case 6:{system("cls");exit();return 0;}default:{cin.clear();cin.sync();cout << "输入有误,请重新输入!" << endl;system("pause");break;}}}return 0;
}

五、药店的药品销售统计系统(排序应用)相关推荐

  1. 课设-药店的药品销售统计系统(排序应用)

    药店的药品销售统计系统(排序应用) 1.问题描述 [题目描述] 你在一个L药品店当一名仓库管理员,马上就要放寒假回家过年了,L药店对这一年的销售情况做了统计,但这看起来太杂乱无章了.因此,你需要对这些 ...

  2. 药店的药品销售统计系统(排序应用)

    1.1[问题描述] 设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号.单价.销售量或销售额做出排名. 1.2[实现提示] 在本设计中,首先从数据文件中读出各药品的信息记录,存储在 ...

  3. c语言药店管理系统的前提报告,数据结构(C语言)课设5——药店的药品销售统计系统...

    数据结构(C语言)课设5--药店的药品销售统计系统 题目描述: 你在一个L药品店当一名仓库管理员,马上就要放寒假回家过年了,L药店对这一年的销售情况做了统计,但这看起来太杂乱无章了.因此,你需要对这些 ...

  4. 药店的药品销售统计系统的设计与实现

     药店的药品销售统计系统的设计与实现 问题描述:设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号.单价.销售量或销售额做出排名. 1.基本要求, (1)药品的信息包括:药品编号. ...

  5. 药店的药品销售统计系统

    #include <iostream> #include <algorithm>using namespace std; #define MAXSIZE 1000 typede ...

  6. 药品销售管理系统 系统开发 PB9.0

    忙了两周,终于可以初步搞定了,虽然还有好多东西没考虑周到.但起码能执行基本的业务操作了.待以后再修改了.. <管理信息系统> 课程设计 说 明 书 摘要 这次做的药品销售管理系统是在学习完 ...

  7. 基于python的服装销售统计系统

    20004 波司登服装销售统计系统 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段内容后打开百度网 ...

  8. java药品销售系统_Java网上药店、药品销售系统

    该系统基于SSH框架,数据库使用了MySQL. 需要源码请加QQ507833548(加Q备注:网上药店) 其他Java毕业设计汇总:https://github.com/broccolik/biyes ...

  9. 商品销售统计系统java_IMS: 基于Java实现的InventoryManagementSystem进销存管理系统

    IMS-进销存管理系统 基于 Java 实现的进销存管理系统(Inventory Management System) 项目结构 系统功能设计 进货管理(Stock-In) 进货入库(StockIn) ...

最新文章

  1. python能实现excel什么功能_Python pandas对excel的操作实现示例
  2. db2 删除索引_MySQL 选错索引的原因是什么?
  3. micropython 实时音频传输_在线实时合唱的实现原理与难点是什么?
  4. Discuz论坛 带数据整站打包
  5. 阿里云CentOS-7.2安装mysql
  6. 零元学Expression Blend 4 - Chapter 7 什麽?影片不再是印象中的方框框!!!看Blend 4如何把影片镶入字里...
  7. threejs 反锯齿,raser,特效发光
  8. 单片机按键“消抖”的思考
  9. 解决无法打开虚拟机的方法
  10. 【Android】Scrollview返回顶部,快速返回顶部的功能实现,详解代码。
  11. 2021龙小丽高考成绩查询,学霸高考672分,家长强令复读考清华,分数出来全家人失望...
  12. e站host地址_ip地址基础入门知识
  13. 基于stm32风力摆控制系统(电赛获得省一)
  14. l10n php download,在PHP,WordPress,phpMyAdmin,C,i18n,L10n等双下划线?
  15. 最后一天购书优惠!好书必买,不容错过!
  16. ubuntu 轻量级图片编辑软件
  17. python标准库不需要导入即可使用其中的所有对象和方法_Python程序设计-中国大学mooc-题库零氪...
  18. J2SE总结(持续更新)--hxx_jmr
  19. sql-DbContext
  20. 2016奇虎360校园招聘编程题目

热门文章

  1. 触摸屏是如何诞生的,它又是如何影响和改变着我们的生活?
  2. 【信号分解】基于LMD算法和ELMD算法实现管道泄漏信号处理附matlab代码
  3. js 阿拉伯数字转化为中文数字
  4. 卡丹尔算法(max subarray problem)
  5. Office for Mac 2021 正式版发布,版本 16.53
  6. 直接调用python3.6(做一个软连接)
  7. 【已解决】Mac版Office的Excel无法保存文件到本地 - 保存按钮是灰色的
  8. 马拉松入门必备基础知识
  9. Matlab笔记:Matlab function生成C代码并运行
  10. ios16屏蔽系统更新