数据结构课设--5药店的药品销售统计系统(排序应用)

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

[问题描述]

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

[实现提示]

在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。药品编号共4位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用基数排序法。对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。

药品信息的元素类型定义:

typedef structnode

{ charnum[4];     /*药品编号*/

  char name[10];   /*药品名称*/

  float price;     /*药品单价*/

  int count;      /*销售数量*/

  float sale;      /*本药品销售额*/

 }DataType;

存储药品信息的顺序表的定义:

typedef struct

{ DataTyper[MaxSize]; 

  int length;

}SequenList;

一、算法设计

    1.本次程序一共需要采用4种排序方法,其中感觉最麻烦的就是桶排序(基数排序)和堆排序了。采用桶排序的时候一共开出来26个队列,0~9算是10个。字母的话可以通过减去ASCⅡ码来实现。例如’A’-’A’就变成了整形当中的0,一直到’Z’-’A’。堆排序中采用的是构造大顶堆。这样,每次还换完成之后,把最大值当道最后一个位置。整个排序做完,那么就是按照从小到大的顺序排列的了。对于文件的导入和存储采用的是ifstream和ofstream,txt文档来保存,简化程序。

各个函数的调用关系如下图所示:

 

main()

 

mainjiemian()           kaobei()       line()

 

read()

write()

math_sort()

en_queue()

init_queue()

empty_queue()

de_queue()

bubble_sort()

heap_sort()

Swap

()

quick_sort()

partion()

jieshu()

 

display()

display()

shift()

display()

 

display()

 

mainjiemian()

 

 

    2.本程序中包含16个模块

(1)主函数:intmain();

(2)基数排序:math_sort(Sequnenlist* l);

(3)从队列中取出:Datatypede_queue(Linkqueue * q);

(4)药品进队:voiden_queue(Linkqueue * q, Datatype x);

(5)判断队列是否为空:boolempty_queue(Linkqueue * q);

(6)初始化队列:voidinit_queue(Linkqueue * q);

(7)快速排序:voidquick_sort(Sequnenlist * l, int low, int high);

           int partion(Sequnenlist * l, int low, int high);

           void Swap(Sequnenlist * l, int i, int j);

(8)冒泡排序:voidbubble_sort(Sequnenlist * l);

(9)堆排序:voidheap_sort(Sequnenlist * l);

              void shift(Sequnenlist * l, inti, int m);

(10)拷贝数据:copy(Sequnenlist* l, int i, int j);

(11)结束界面:voidjieshu();

  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值