药品销售统计系统

药品销售统计系统

原创,有疑问提问就行,写的太过简单,易懂。

//药品管理系统 
#include<stdio.h>
#include<stdlib.h>
#define MAX 20
typedef struct store{
 	char score[MAX]; //编号  几种药品 
 	char name[MAX];  
	int price;	//单价  
	int num;	//销售量 
	int sale;	//销售额  
}sto;
typedef struct{
	sto r[MAX];
	int length;
}List;
//向文件中输入信息; 
void Insert(List &l){ 
	FILE *fp;
	if((fp=fopen("medicine","w"))==NULL){
		printf("打开失败!\n");
		exit(0);
	}
	printf("请输入要统计药品的数量:\n");
	scanf("%d",&l.length);
	for(int i=1;i<=l.length;i++){   //从下标为1开始存储 
		printf("请输入药品编号,名称,单价,销售数量:\n");
		scanf("%s %s %d %d",l.r[i].score,l.r[i].name,&l.r[i].price,&l.r[i].num);//int 类型还是出了问题
		l.r[i].sale=l.r[i].price*l.r[i].num; //销售额 
		fprintf(fp,"%s %s %d %d %d\n",l.r[i].score,l.r[i].name,l.r[i].price,l.r[i].num,l.r[i].sale);//把信息写入到文件中。 
		getchar();// 
	}
	fclose(fp);
}
//遍历
void Out(List l){
	FILE *fp;
	if((fp=fopen("medicine","r"))==NULL){
		printf("无法打开文件!\n");
		exit(0);
	}
	printf("编号	名称	单价	销售数量 	 销售额");
	for(int i=1;i<=l.length;i++){
		printf("\n");
		fscanf(fp,"%s %s %d %d %d",l.r[i].score,l.r[i].name,&l.r[i].price,&l.r[i].num,&l.r[i].sale); //从studata文件中把信息读出来
		fprintf(stdout,"%s%9s%10d%10d%11d\n",l.r[i].score,l.r[i].name,l.r[i].price,l.r[i].num,l.r[i].sale);// 把读出来的信息输出到显示器上
	}
	fclose(fp);
}
//插入排序 单价 	 哨兵,与有序区的比较,从后往前比较,从无序区放在有序区, 
void Sortprice(List &l){
	int i,j;
	for(i=2;i<=l.length;i++){
		if((l.r[i].price)<(l.r[i-1].price)){
	 		l.r[0].price=l.r[i].price;
	 		l.r[i].price=l.r[i-1].price;
	 		for(j=i-2;l.r[0].price<l.r[j].price;j--){
	 			l.r[j+1].price=l.r[j].price;
			}
			l.r[j+1].price=l.r[0].price;
		}
	}	
	printf("====================药品单价直接插入排序为:======================\n");
	for(int i=1;i<=l.length;i++){
		printf("%d ",l.r[i].price); 
	}
	printf("\n");
}
//冒泡排序 药品销量 
void Sortnum(List &l){  //第一趟,比较n-1次,把最大的放在最后一个位置 第二趟 ,比较再减一次 
	int flag=1;	
	for(int i=1;i<l.length&&flag;i++){
		flag=0;
		for(int j=1;j<=l.length-i;j++){
			if(l.r[j].num>l.r[j+1].num){
				l.r[0].num=l.r[j].num;
				l.r[j].num=l.r[j+1].num;
				l.r[j+1].num=l.r[0].num;
				flag=1;
			}
		}
	}
	printf("====================药品销售量冒泡排序为:======================\n");
	for(int i=1;i<=l.length;i++){
		printf("%d ",l.r[i].num); 
	}
	printf("\n");
}
//简单选择排序 销售额 
void Sortsale(List &l){			//第一趟 i=1,找最小的放在i=1的位置,第二趟i=2,再一次放 
	for(int i=1;i<l.length;i++){
		int k=i;
		for(int j=i+1;j<=l.length;j++){ 
			if(l.r[k].sale>l.r[j].sale)
				k=j;
		}
		if(i!=k){
			l.r[0].sale=l.r[i].sale;
			l.r[i].sale=l.r[k].sale;
			l.r[k].sale=l.r[0].sale;
		}
	}
	printf("====================药品销售额简单选择排序为:======================\n");
	for(int i=1;i<=l.length;i++){
		printf("%d ",l.r[i].sale); 
	}
	printf("\n");
} 
int main()
{
	List l;
	Insert(l);
	Out(l);
	Sortprice(l);
	Sortnum(l);
	Sortsale(l);
	return 0;
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值