1.1[问题描述]

设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。

1.2[实现提示]

在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。药品编号共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;

代码

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<cstdlib>
using namespace std;
const int MaxSize=10000;
const int n=10;typedef struct node
{char num[10];  /*药品编号*/char name[20]; /*药品名称*/float price;  /*药品单价*/int count;    /*销售数量*/float sale;  /*本药品销售额*/
}DataType;typedef struct
{DataType r[MaxSize];int length;
}SequenList;void Display(SequenList sq){printf("-------------------------------------------------\n");printf("编号:\t名称:\t\t单价:\t数量:\t销售额:\n");for(int i=1;i<=sq.length;i++)printf("%s\t%s\t%.2f\t%d\t%.2f\n",sq.r[i].num,sq.r[i].name,sq.r[i].price,sq.r[i].count,sq.r[i].sale);printf("-------------------------------------------------\n");printf("\n");
}
void Read(SequenList &sq){FILE *fp;char nu[50],na[50];int co;float pr,sa;if((fp=fopen("C:\\ww\\yp.txt","r"))==NULL){printf("文件读取发生错误!\n");return;}sq.length=0;while(!feof(fp)){sq.length++;fscanf(fp,"%s%s%f%d%f",nu,na,&pr,&co,&sa);strcpy(sq.r[sq.length].num,nu);strcpy(sq.r[sq.length].name,na);sq.r[sq.length].price=pr;sq.r[sq.length].count=co;sq.r[sq.length].sale=sa;if(sq.length==n){printf("文件数据已全部导入!\n");printf("当前药品数量为:%d\n",sq.length);Display(sq);break;}}system("pause");system("cls");
}void PMpai(SequenList &sq){printf("对单价进行冒泡排序的结果如下:\n\n");int m=sq.length,flag=1;DataType t;for(int j=1;j<=m;j++){flag=0;for(int i=1;i<=m-j;i++){if(sq.r[i].price>sq.r[i+1].price){flag=1;t=sq.r[i];sq.r[i]=sq.r[i+1];sq.r[i+1]=t;}}if(flag==0)break;}Display(sq);system("pause");system("cls");
}int Partition(SequenList &sq,int low,int high){int pivotkey=sq.r[low].count;sq.r[0]=sq.r[low];while(low<high){while(low<high&&sq.r[high].count>=pivotkey)--high;sq.r[low]=sq.r[high];while(low<high&&sq.r[low].count<=pivotkey)++low;sq.r[high]=sq.r[low];}sq.r[low]=sq.r[0];return low;
}void Qsort(SequenList &sq,int low,int high){int pivoloc;if(low<high){pivoloc=Partition(sq,low,high);Qsort(sq,low,pivoloc-1);Qsort(sq,pivoloc+1,high);}
}void SKpai(SequenList &sq){printf("对销售量进行快速排序结果如下:\n\n");Qsort(sq,1,sq.length);Display(sq);system("pause");system("cls");
}void HeadAdjust(SequenList &sq,int s,int m){DataType rc;rc=sq.r[s];for(int j=2*s;j<=m;j*=2){if(j<m&&sq.r[j].sale<sq.r[j+1].sale)++j;if(rc.sale>=sq.r[j].sale)break;sq.r[s]=sq.r[j];s=j;}sq.r[s]=rc;
}
void CreatHeap(SequenList &sq){for(int i=sq.length/2;i>0;--i)HeadAdjust(sq,i,sq.length);
}
void EDpai(SequenList &sq){CreatHeap(sq);for(int i=sq.length;i>1;--i){DataType x;x=sq.r[1];sq.r[1]=sq.r[i];sq.r[i]=x;HeadAdjust(sq,1,i-1);}printf("对销售额进行堆排序结果如下:\n\n");Display(sq);system("pause");system("cls");
}void Swap(SequenList &sq,int i,int j){DataType t;t=sq.r[i];sq.r[i]=sq.r[j];sq.r[j]=t;
}
void BJpai(SequenList &sq){int a[MaxSize];//字母作为关键字-转化为(0-26)int b[MaxSize];//后面的数字作为关键字for(int i=1;i<=sq.length;i++)a[i]=sq.r[i].num[0]-'A';for(int i=1;i<=sq.length;i++){for(int j=i+1;j<=sq.length;j++){if(a[i]>a[j]){swap(a[i],a[j]);Swap(sq,i,j);}}}for(int i=1;i<=sq.length;i++)b[i]=(sq.r[i].num[1]-'0')*100+(sq.r[i].num[2]-'0')*10+(sq.r[i].num[2]-'0');for(int i=1;i<=sq.length;i++){for(int j=i+1;j<=sq.length;j++){if(a[i]==a[j]&&b[i]>b[j]){swap(b[i],b[j]);Swap(sq,i,j);}}}printf("按照药品编号基数排序后的结果为:\n");Display(sq);system("pause");system("cls");
}int main()
{SequenList sq;while(1){printf("--------药店的药品销售统计系统--------\n\n");printf("        1.读入药品信息.\n");printf("        2.按药品编号排名.\n");printf("        3.按药品单价排名.\n");printf("        4.按药品销售量排名.\n");printf("        5.按药品销售额排名.\n");printf("        6.退出.\n\n");printf("--------------------------------------\n\n");printf("请输入您的选择:\n");int a;scanf("%d",&a);if(a==6){printf("------------------------\n");printf("谢谢使用!欢迎下次光临!\n");printf("------------------------\n");break;}else if(a!=1&&a!=2&&a!=3&&a!=4&&a!=5){printf("您的输入选择不符合要求,请重新输入!\n");system("pause");system("cls");continue;}switch(a){case 1:printf("当前药品的全部信息如下:\n");Read(sq);break;case 2:BJpai(sq);break;case 3:PMpai(sq);break;case 4:SKpai(sq);break;case 5:EDpai(sq);break;}}return 0;
}

ps:其中没有使用基数排序。

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

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

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

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

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

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

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

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

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

  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. 电脑温度检测软件哪个好_一般电脑录音软件哪个好?
  2. Win 7/10 安装Oracle 11g
  3. Linux 802.11 Driver Developer’s Guide
  4. 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容都在这儿
  5. javadoc: 错误 - 格式错误的语言环境名称_ONLYOFFICE 5.6.0 : 这是一个错误修正版本,改进了德语、法语、意大利语、葡萄牙语和俄语的翻译等...
  6. 女朋友当众甩了我一巴掌,我扑上去......
  7. 一辈子的礼物56ay长沙论坛
  8. STM32使用定时器延时
  9. 获取 Transaction Source
  10. 深信服技术认证之Openstack云平台使用入门
  11. 【国产】TASKCTL批量作业调度统一图形监控运维平台
  12. 机器狗变种、磁碟机查杀方法及注意事项
  13. P1125 [NOIP2008 提高组] 笨小猴
  14. mysql localhost可以连接,输入ip地址连接访问被拒绝
  15. 斯托克斯公式(三维中两类曲面和第二类曲线互相转换)
  16. 将模板内容存储到数据库,通过URL访问报表
  17. SEDA(Staged Event-Driven Architecture)
  18. 【树】二叉树的两种非递归遍历方法
  19. 各种编码格式(GB2312,GBK,GB18030,unicode,utf-8)之间的关系
  20. winform直接控制云台_一路随拍,智云SmoothX手机云台试玩,哪怕小白也能轻松上手...

热门文章

  1. 第32天学习打卡(字符流读写文件,字节流读写文件)
  2. vue集成cesium入门教程(1)环境搭建、初始化三维地球
  3. react 中写transform
  4. java图形界面外部类例题_[JAVA_开课吧资源]第四周 图形用户界面程序设计
  5. openshift origin v1.5.0安装
  6. [es7]在往elasticsearch插数据之前,mapping和setting要怎么配置呢?
  7. win10升级后怎么激活office2013?win10系统office2013激活妙招
  8. 终于有人喊出来:一稿多投是作者的合法权利
  9. HSDC和独立生成树相关
  10. js统计页面停留时长