为一个花店编写一个库存管理程序,花点库存的花用花的名称、颜色、单价和株的数量来表示。
要求:
(1)说明一个结构数组,存储库存的鲜花数据。
(2)编写一个函数input_data(),输入现有的鲜花数据,读取数据时,向用户提供一个可以选择颜色的菜单,供用户选择。颜色使用枚举值表示。
(3)编写一个函数buy(),向用户询问需要购买的鲜花的种类和株的数量,计算总价格,并从库存中减去用户购买的花的数量,返回总价格。
(4)编写主函数调用上述函数。
enum color{
red,yellow,purple,white
};
struct Flower{
char name[20];
enum color a;
int money;
int num;
};
int main(){
void input_data(struct Flower *f,int *a);
void output_data(struct Flower *f,int size);
int buy(struct Flower *f,int size);
struct Flower f[20];
int price,size=0;
input_data(f,&size);
output_data(f,size);
price=buy(f,size);
printf("总价格为:%d",price);
return 0;
}
void input_data(struct Flower *f,int *a){
int i=0;
do{
printf("输入姓名:");
scanf("%s",(f+i)->name);
printf("请选择颜色:\n");
printf("0----red\n");
printf("1----yellow\n");
printf("2----purple\n");
printf("3----white\n");
scanf("%d",&(f+i)->a);
printf("输入价格:");
scanf("%d",&(f+i)->money);
printf("输入数量:");
scanf("%d",&(f+i)->num);
(*a)++;
}while((f+i)->money!=0&&(f+i++)->num!=0);
}
void output_data(struct Flower *f,int size){
int i;
for(i=0;i<size-1;i++){
printf("%s\t",(f+i)->name);
switch((f+i)->a){
case 0:printf("red\t");break;
case 1:printf("yellow\t");break;
case 2:printf("purple\t");break;
case 3:printf("white\t");break;
}
printf("%d\t",(f+i)->money);
printf("%d\n",(f+i)->num);
}
}
int buy(struct Flower *f,int size){
int price,i;
struct Flower k;
printf("购买花的种类:");
printf("0----red\n");
printf("1----yellow\n");
printf("2----purple\n");
printf("3----white\n");
scanf("%d",&k.a);
printf("要购买的数量:");
scanf("%d",&k.num);
for(i=0;i<size-1;i++){
if(k.a==(f+i)->a){
price=(f+i)->money*k.num;
(f+i)->num=(f+i)->num-k.num;
break;
}
}
output_data(f,size);
return price;
}
运行结果:
这段代码还是比较简单的,大家直接运行就好,没有什么太大的问题,也可以根据需要在必要的地方进行修改~