问题描述

药店每到月底就要对所售药品进行统计,以方便药店对药品进行有效管理。现对该药店销售的药品进行统计,并按药品的单价、销售量或销售额进行排序。其中每种药品包括:药品编号、药品名称、单价、销售数量和销售额。
一堆废话
很久没有更新博客了,小白刚刚历经考试周的打击,百废待兴,赶紧跑来CSDN和小伙伴们取暖安慰受伤的心灵。近期会陆续写四篇数据结构课设的博客,然后再写两篇编写小游戏的博客,一个是基于Python的飞机大战,另一个是基于C++并在funcode上完成的海底世界游戏。

数据描述

(1)首先定义一个结构体,用来存放每个药品的信息,包括药品编号(int)、药品名称(char)、药品价格(float)、销售量(int)、销售额(sale)

//定义药品信息结构体
typedef struct {int number; //编号 char name[20];  //药品名称 float price ; //价格 int sum;  //销售量 float  sale;//销售额
}Medicine;

(2)再定义一个顺序表,用具有50个元素顺序表来存放50个药品的信息。每个元素分别表示一个药品信息的结构体。

//顺序表存储
typedef struct {Medicine m[Size+1]; //定义结构体数组int length;
}SqList;

程序代码

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#define Size 50
//定义药品信息结构体
typedef struct {int number; //编号 char name[20];  //药品名称 float price ; //价格 int sum;  //销售量 float  sale;//销售额
}Medicine;//顺序表存储
typedef struct {Medicine m[Size+1]; //定义结构体数组int length;
}SqList;//初始化药品信息
void CreatMedicine(SqList &L,int count)
{L.length = 1;for(int i=1;i<count+1;i++){printf("输入第%d个药品信息\n",i);printf ("请输入编号:");scanf("%d",&L.m[i].number);printf ("请输入药品名称:");scanf("%s",L.m[i].name);printf ("请输入价格:");scanf("%f",&L.m[i].price);printf ("请输入销售量:");scanf("%d",&L.m[i].sum);L.m[i].sale = L.m[i].price * L.m[i].sum;L.length++;}FILE *fp;fp=fopen("medicine.txt","w+");for(int i=1;i<L.length;i++){fprintf(fp,"%d %s %f %d %f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);}fclose(fp);
}//按单价进行排序(直接插入排序)
void InsertSort(SqList &L){int i=0;L.length = 0;FILE *fp;fp=fopen("medicine.txt","r+");while(!feof(fp)){fscanf(fp,"%d %s %f %d %f\n",&L.m[i].number,L.m[i].name,&L.m[i].price,&L.m[i].sum,&L.m[i].sale);L.length++;i++;}  L.length--;fclose(fp);for(i=1;i<=L.length;i++){Medicine temp; if(L.m[i].price<L.m[i-1].price){temp=L.m[i];L.m[i]=L.m[i-1];int j;for(j=i-2;temp.price<L.m[j].price;j--){L.m[j+1]=L.m[j];}L.m[j+1]=temp;}}printf("按单价排序为:\n");for(int i=0;i<=L.length;i++){ printf("药品编号:%d  药品名称:%s  药品单价:%f  销售数量:%d  销售额:%f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);}
} //按销售量排序(希尔排序)
void ShellInsert(SqList &L,int dk){for(int i=dk;i<=L.length;i++){Medicine temp; if(L.m[i].sum>L.m[i-dk].sum){  temp = L.m[i];int j;for(j=i-dk;j>=0&&temp.sum>L.m[j].sum;j-=dk)L.m[j+dk] = L.m[j];L.m[j+dk] = temp; }}
}
void ShellSort(SqList &L){int i=0;L.length = 0;FILE *fp;fp=fopen("medicine.txt","r+");while(!feof(fp)){fscanf(fp,"%d %s %f %d %f\n",&L.m[i].number,L.m[i].name,&L.m[i].price,&L.m[i].sum,&L.m[i].sale);L.length++;i++;}L.length--;fclose(fp);for(int i=0;i<=L.length;i++)ShellInsert(L,i);printf("按销售量排序为:\n");for(int i=0;i<=L.length;i++){ printf("药品编号:%d  药品名称:%s  药品单价:%f  销售数量:%d  销售额:%f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);}
}//按销售额排序(冒泡排序)
void BubbleSort(SqList &L){int i=0;L.length = 0;FILE *fp;fp=fopen("medicine.txt","r+");while(!feof(fp)){fscanf(fp,"%d %s %f %d %f\n",&L.m[i].number,L.m[i].name,&L.m[i].price,&L.m[i].sum,&L.m[i].sale);L.length++;i++;}  L.length--;fclose(fp);int flag=1;for(int i=1;i<=L.length&&flag;i++){flag = 0;for(int j=0;j<=L.length-i;j++){Medicine temp;if(L.m[j].sale>L.m[j+1].sale){temp = L.m[j];L.m[j] = L.m[j+1];L.m[j+1] = temp;flag=1;}}}printf("按销售额排序为:\n");
//  printf("药品编号:   药品名称:   药品单价:  销售数量:  销售额:\n");for(int i=0;i<=L.length;i++){ printf("药品编号:%d  药品名称:%s  药品单价:%f  销售数量:%d  销售额:%f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);}
}
//显示
void Show(SqList &L)
{int i=0;L.length = 0;FILE *fp;fp=fopen("medicine.txt","r+");while(!feof(fp)){fscanf(fp,"%d %s %f %d %f\n",&L.m[i].number,L.m[i].name,&L.m[i].price,&L.m[i].sum,&L.m[i].sale);L.length++;i++;}    L.length--;fclose(fp);printf("\n");for(i=0;i<=L.length;i++){printf("%5d%10s%10f%10d  %10f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);                 }
}//添加或修改药品信息
void Add(SqList &L){int i=0;L.length = 0;FILE *fp;fp=fopen("medicine.txt","r+");while(!feof(fp)){fscanf(fp,"%d %s %f %d %f\n",&L.m[i].number,L.m[i].name,&L.m[i].price,&L.m[i].sum,&L.m[i].sale);L.length++;i++;}L.length--;i--;fclose(fp);
//  printf("%d",L.length);int flag = 0;printf("添加药品请输入1,修改药品信息请输入2:");scanf("%d",&flag);if(flag == 1){int k=0; L.length +=1;printf("输入需要添加的药品信息\n",i);printf ("请输入编号:");scanf("%d",&L.m[L.length].number);for(int i=0;i<L.length;i++){if(L.m[i].number==L.m[L.length].number)k=1;}if(k==1){printf("有该药品,添加失败!\n");}else{printf ("请输入药品名称:");scanf("%s",L.m[L.length].name);printf ("请输入价格:");scanf("%f",&L.m[L.length].price);printf ("请输入销售量:");scanf("%d",&L.m[L.length].sum);L.m[L.length].sale = L.m[L.length].price * L.m[L.length].sum;  FILE *fp;fp=fopen("medicine.txt","w+");for(int i=0;i<=L.length;i++){fprintf(fp,"%d %s %f %d %f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);}fclose(fp);for(int i=0;i<=L.length;i++){printf("%5d%10s%10f%10d %10f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);                   }}      }else if(flag == 2){char name[20];printf("请输入需要修改的药品的名称:");scanf("%s",name);int i=0,n;L.length = 0;FILE *fp;fp=fopen("medicine.txt","r+");while(!feof(fp)){fscanf(fp,"%d %s %f %d %f\n",&L.m[i].number,L.m[i].name,&L.m[i].price,&L.m[i].sum,&L.m[i].sale);L.length++;i++;} L.length--;fclose(fp);for(int i=0;i<=L.length;i++){if(strcmp(L.m[i].name,name) == 0){printf ("请输入现在编号:");scanf("%d",&L.m[i].number);printf ("请输入现在药品名称:");scanf("%s",L.m[i].name);printf ("请输入现在价格:");scanf("%f",&L.m[i].price);printf ("请输入新售出数量:");scanf("%d",&n);L.m[i].sum+=n;L.m[i].sale = L.m[i].price * L.m[i].sum;FILE *fp;fp=fopen("medicine.txt","w+");for(int i=0;i<=L.length;i++){fprintf(fp,"%d %s %f %d %f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);}fclose(fp);for(int i=0;i<=L.length;i++){printf("%5d%10s%10f%10d  %10f\n",L.m[i].number,L.m[i].name,L.m[i].price,L.m[i].sum,L.m[i].sale);                    }   }}
//      printf("药品名称不合法!\n");} else{printf("选择不合法!\n");}
}
int main()
{SqList L;//统计药品个数 int count; //定义服务标准位 int service; printf("****************欢迎进入药品销售统计系统*****************");
//  Show(L);printf("\n*********************************************************");while(1){printf("\n***1.初始化药品销售统计系统\t2.按单价对药品进行排序***"); printf("\n***3.按销售量对药品进行排序\t4.按销售额对药品进行排序*");printf("\n***5.添加药品或修改药品信息\t6.退出药品销售统计系统***\n");printf("*********************************************************\n");printf("********************请选择需要的服务:********************\n"); scanf("%d",&service);system("cls");if(service == 1){printf("请输入药品个数:");scanf("%d",&count);CreatMedicine(L,count); Show(L);    }if(service == 2){InsertSort(L);}if(service == 3){ShellSort(L);}if(service == 4){BubbleSort(L);} if(service == 5){Add(L);} if(service == 6){exit(0);}}return 0;
}

测试数据

(1)初始化药品系统(即将药品信息存入文件)
(2)按单价进行排序


(3)按销售量进行排序

(4)按销售额进行排序

(5)添加药品信息

若需要添加药品编号与文件中药品编号相同,添加失败!

修改药品信息

(6)存放药品信息的medicine.txt文件

【数据结构】药品销售系统相关推荐

  1. 计算机毕业设计Java基于的药品销售系统(源码+系统+mysql数据库+lW文档)

    计算机毕业设计Java基于的药品销售系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java基于的药品销售系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S ...

  2. java药品销售系统,基于jsp的药品销售系统-JavaEE实现药品销售系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的药品销售系统, 该项目可用各类java课程设计大作业中, 药品销售系统的系统架构分为前后台两部分, 最终实现在线上 ...

  3. java计算机毕业设计药品销售系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计药品销售系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计药品销售系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈: 项目 ...

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

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

  5. java-php-python-ssm蔬菜水果销售系统计算机毕业设计

    java-php-python-ssm蔬菜水果销售系统计算机毕业设计 java-php-python-ssm蔬菜水果销售系统计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  6. java计算机毕业设计汉服配饰销售系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计汉服配饰销售系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计汉服配饰销售系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  7. JavaWeb商品销售系统的设计与实现

    前言 今天,博主接了一个小任务,开发一款JavaWeb网上点餐系统,此外要将该系统更改为鞋城销售系统,药品销售系统以及茶叶销售系统.话不多说,开干! 客户要求,使用他提供的一套数据库操作工具类,博主看 ...

  8. Java-基于SSM的药品销售管理系统

    项目背景 本论文主要论述了如何使用JAVA语言开发一个药品销售系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述药品销售系统的当 ...

  9. 基于C++实现的药品销售管理系统

    点击获取源码资源 一.课程设计的原始资料及依据 查阅有关资料,进一步理解面向对象程序设计的思想,并利用MFC框架编写一个简单的windows系统.通过本设计可以加深理解使用面向对象程序设计思想开发一个 ...

  10. 基于SSM+VUE的药品销售管理系统的设计与实现

    基于SSM+VUE的药品销售管理系统 研究的背景与意义 随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会.各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合.药店药 ...

最新文章

  1. 元宵节就要到了,花灯要不要来一盏?3D的那种
  2. Microbiome:扩增子检测环境样本单细胞真核生物和寄生虫的新方法
  3. C语言经典例100-将学生成绩写入文件
  4. 运行时常量池在哪里_C++干货系列——从编译期常量谈到constexpr(一)
  5. c语言贪吃蛇游戏完整代码
  6. SAP Spartacus Static Multi-Site Configuration
  7. display:table-cell自适应布局下连续单词字符换行
  8. notepad php源码,GitHub - CharlesKiki/Web-Notepad: 这是一个仿制有道云笔记的原生PHP小玩具。...
  9. oracle 查询数据库表空间大小和剩余空间
  10. mysql 驱动jar包下载_mysql驱动jar包
  11. c 转时间戳php,php日期转时间戳,指定日期转换成时间戳 筋斗云网络
  12. Word基础(三十六)题注与标题样式
  13. Apollo星火计划学习笔记——第六讲上自动驾驶感知基础(I)
  14. pandas生成日期去掉时分秒
  15. [CF1463F]Max Correct Set
  16. 布隆过滤器(Bloom Filter)
  17. Failed to open \EFI\BOOT\MMX64.efi -Not Found
  18. 机器学习学习笔记 --- 标称型数据和数值型数据
  19. 【读书笔记】《牧羊少年奇幻之旅》
  20. Java最小因式分解_Javascript-625-最小因式分解——腾讯面试题库

热门文章

  1. Node-RED系列(二八):基于OPC UA节点与西门子PLC进行通讯
  2. bibili笔试题零钱兑换
  3. 问题解决:如何清除Confluence插件缓存
  4. python--笔记(一)
  5. 【转载】GCC 中的编译器堆栈保护技术
  6. Hibernate数据库方言选择问题
  7. [bzoj3878]奇怪的计算器
  8. 在C++中,用“new”自定义动态数组
  9. 基于KNN的二手车价格预测
  10. STC8G1K08A使用PCA模块红外遥控发射案例