现要为某一个销售部门编写一个程序管理约100种商品。要求设计一个结构体类型来描述商品,每种商品包括商品编号(如A001)、商品名称、商品销售量和商品销售额等信息,并编写以下函数···········

原题:现要为某一个销售部门编写一个程序管理约100种商品。要求设计一个结构体类型来描述商品,每种商品包括商品编号(如A001)、商品名称、商品销售量和商品销售额等信息,并编写以下函数:
1.编写一个函数输入所有商品的信息
2.编写一个函数对商品进行排序,排序规则如下:首先按照商品销售额排降序;如果商品销售额相同,则再按照商品销售量排升序
3.编写一个函数将所有商品信息保存到一个二进制文件中
4.编写一个函数读取二进制文件中的所有商品信息
5.编写一个函数search_no(char *pNo),根据商品编号(pNo)查找商品。查找规则如下:如果pNo为NULL,则表示没有指定商品编号,否则查找指定商品编号的商品并输出
6.编写一个函数search_values(double count ,double amount),根据商品数量(count)和金额(amount)来查找数量小于等于count且金额大于等于amount的商品。例如,search_values(10,2600)查找数量小于等于10,金额大于等于2600的商品,并且输出找到的所有商品
7.编写主函数调用上述函数
说明:除了这些函数之外,还可以有其他的函数。

话不多说,开工!

首先设计一个结构体类型描述商品

struct commodity{
   
   
	char GoodsNumber[10];//商品编号
	char GoodsName[21];//商品名称
	double GoodsCount;//商品数量
	double GoodsAmount;//商品金额
	int SalesNumber;//商品销售量
	int SalesVolume;//商品销售额
}goods[120];//初始化一个足够大的结构体数组

1.第一个函数:编写一个函数输入所有商品的信息

void Enter_Product_Information(struct commodity goods[],int n){
   
   
	int i;
	for(i=0;i<n;i++){
   
   //可以实现对n个商品的信息进行输入
		printf("请输入商品的编号:\n");
		scanf("%s",&goods[i].GoodsNumber);
		printf("请输入商品的名称:\n");
		scanf("%s",&goods[i].GoodsName);
		printf("请输入商品的数量:\n");
		scanf("%lf",&goods[i].GoodsCount);
		printf("请输入商品的金额:\n");
		scanf("%lf",&goods[i].GoodsAmount);
		printf("请输入商品的销售量:\n");
		scanf("%d",&goods[i].SalesNumber);
		printf("请输入商品的销售额:\n");
		scanf("%d",&goods[i].SalesVolume);
	}
}

2.编写一个函数对商品进行排序,排序规则如下:首先按照商品销售额排降序;如果商品销售额相同,则再按照商品销售量排升序

void Commodity_Ranking(struct commodity goods[],int n){
   
   
	int i,j;
	struct commodity *p[n];//定义一个指针数组
    for(i=0;i<n;i++)
    {
   
   
        p[i]=&goods[i];//使每个指针指向一个结构体数组元素 
    }
    struct commodity *temp; 
    for(i=0;i<n-1;i++)//冒泡排序 
        for(j=0;j<n-i-1;j++){
   
   
            if((p[j]->SalesVolume)<(p[j+1]->SalesVolume))
            {
   
   
                temp=p[j+1];//交换两结构体在结构体数组中的位置 
                p[j+1]=p[j];
                p[j]=temp;
            }
            if((p[j]->SalesVolume)==(p[j+1]->SalesVolume)){
   
   
            	if((p[j]->SalesNumber)>(p[j+1]->SalesNumber)){
   
   
            		temp=p[j+1];
                	p[j+1]=p[j];
                	p[j]=temp;
				}
			}
        }
    printf("商品排名:\n");
    for(i=0;i<n;i++){
   
   
    	printf("第%d名:%s\n",i+1,p[i]->GoodsName);
	}
}

3.编写一个函数将所有商品信息保存到一个二进制文件中

void Save(char *GoodsName,int n){
   
   
	FILE *fp;
	int i,k,count;
	if((fp=fopen(GoodsName,"wb"))==NULL){
   
   
		printf("cannot open file\n");
		exit(0);//需要stdlib.h头文件 
	}
	for(i=0;i<n;i++)
		if(fwrite(&goods[i],sizeof(struct commodity),1,fp)==0)
			k++;
		if(fwrite(&goods[i],sizeof
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值