1、计算机技术基础课程设计 C语言 设计报告 题目:花店经营管理系统 一.选题背景 本例实现了一个花店经营的管理系统,在经营的过程中,必需对花的库存量,销售量,剩余量以及花的种类,单价,颜色,名字等,有系统的管理。本程序定义了一个结构数组,并运用了一个主函数调用五个函数以实现整个花店的经营和管理。 二.设计思想: 编程思路:首先在程序开始处,引入了头文件,可以直接调用函数,然后对花的种类和五项命令进行了宏定义,接着枚举类型定义了花的颜色,定义了结构体数组,并且编写了”enter_data()”,”put_data()”,“buy()”,”find()”,”ch
2、angecmd()”五个子函数,最后在mian函数的内部对各个子函数进行调用,实现综合管理。 三.主要解决问题的方法及技术关键: 1.运用指针定义了五项命令,分别指向五个函数,便于调用。 2.运用了for, if---else---if, while, switch---case用来控制程序的流程。 主函数流程图 开 始
3、 系统初始化 退 出 判断是否为 (quit)命令 接受键盘命令 退 出 Buy() enter() Find() 命令转换(把字符命令转换为数字命令) 是 Put() 否 Buy()流程图 否 是 是 入 口 提 示 信 息 输入花名,价格 选择花的种类和数量 从i=0起,到
4、第i个花开始比较
是否出现该种花
输出计算价格
出 口
是否是最后一朵花
返 回
i++
否
Put()流程图
入 口
输出花的各项值
否
判 断
i 5、判 断
i 6、include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "dos.h"
#define SIZE 8
#define CMDSIZE 5
typedef enum /*枚举类型定义*/
{
red,white,yellow,purple,orange
}COLOR;
typedef struct /*结构体定义*/
{
char name[20];
COLOR color;
float rate;
int amount;
}FLOWER;
char *Dcmd 7、[]={"buy","put","look","find","help"};
/*定义了5项命令的指针类型*/
void enter_data(FLOWER flower[]); /*定义库存输入函数*/
float buy(FLOWER flower[]); /*定义销售函数*/
void put_data(FLOWER flower[]); /*定义库存输出函数*/
void findflower(FLOWER flower[]);/*定义查询函数*/
int changecmd(char cmd[]);/*定义命令解释函数*/
void main()
{
F 8、LOWER flower[SIZE];
float price;
char cmd[5]={'\0','\0','\0','\0','\0'};
char exits[5]="quit";
int recmd=0;
int i;
for(i=0;i 9、rintf("\nYou can input 'buy','look','put','help','find':\n");
while(1) /*命令转换,把字符转换为数字*/
{
scanf("%s",cmd);
if(strcmp(cmd,exits)==0)
exit(1);
recmd=changecmd(cmd);
switch(recmd)
{
case 0:
printf("a bad command please input a corrcet cmd \n"); /*输入了错误信息的提示*/
break; 10、
case 1:
price=buy(flower);
if(price==0)
printf("\nSorry,buy error");
else
printf("\n OK,Please pay money %f \n",price);
break;
case 2:
enter_data(flower);
break;
case 3:
put_data(flower);
break;
case 4:
findflower(flower);
break;
case 11、 5:
printf("\nYoucaninput 'buy','look','put','help','find':\n");
break;
}
}
}
/*命令解释函数*/
/*该函数处理接收到的命令 通过与命令数组里的预定义命令比较 返回命令在数组中的位置*/
int changecmd(char cmd[])
{
int i=0;
for(i=0;i 12、/*该函数接受键盘输入 把输入数据与库存对应*/
void enter_data(FLOWER flower[])
{
int i,flag;
for(i=0;i 13、n");
scanf("%d",&flower[i].amount);
flag=1;
while(flag) /*接受用户选择的颜色*/
{
printf("0->red\t1->white\t2->yellow\t3->purple\t4->orante\n");
printf("Please choose a color:\n");
scanf("%d",&flower[i].color);
if(flower[i].color>=0&&flower[i].color<=4)
flag=0;
else
p 14、rintf("Not have this color\n");
}
}
}
/*输出现有库存的鲜花数据的函数定义*/
void put_data(FLOWER flower[])
{
int i;
printf("\nName Color Rate Amount\n");
for(i=0;i 15、 break;
case white:
printf("%-8s","white");
break;
case yellow:
printf("%-8s","yellow");
break;
case purple:
printf("%-8s","purple");
break;
case orange:
printf("%-8s","orange");
break;
}
printf("%-10.2f%-10d\n",flower[i].rate,flower[i].amount);
16、}
}
/*询问用户购买的鲜花的种类和株的数量,计算总的价格的函数定义*/
float buy(FLOWER flower[])
{
int i;
char name[20];
COLOR color;
float rate,price;
int amount,flag;
printf("\nPlease enter name and rate you want to buy:\n");
/*输出需要的鲜花的名字和价格*/
scanf("%s%f",name,&rate);
flag=1;
while(flag) /*客户购买花的情况*/ 17、
{
printf("0->red\t1->white\t2->yellow\t3->purple\t4->orante\n");
printf("Please choose a color:\n");
scanf("%d",&color);
if(color>=0&&color<=4)
flag=0;
else
printf("Not have this color\n");
}
printf("Please amount you want to buy:\n");
/*输出需要的花的数量*/
scanf("%d",&amo 18、unt);
for(i=0;i 19、ought\n");
price=0;
}
else
{
flower[i].amount=flower[i].amount-amount;
price=flower[i].rate*amount; /*找到,剩余数量够,可以买花,并计算总价格*/
}
return price;
}
/*对于库存鲜花的的查询方式的定义*/
void findflower(FLOWER flower[])
{
int i,rcmd;
char name[20];
float rate;
COLOR color;
printf("Plea 20、se choose a number :\n");/*输出查询的方式*/
printf("0->find as name\t 1->find as rate \t 2->find as color\n");
scanf("%d",&rcmd);
switch(rcmd)
{
case 0: /*按花名查询*/
printf("In put a flower name:\n");
scanf("%s",name);
for(i=0;i 21、d\t%f\t%d\n",flower[i].name,flower[i].color,flower[i].rate,flower[i].amount);
}
break;
case 1: /*按数量查询*/
printf("In put a flower rate:\n");
scanf("%f",&rate);
for(i=0;i 22、].rate,flower[i].amount);
}
break;
case 2: /*按颜色查询*/
printf("In put a flower color:\n");
scanf("%d",&color);
for(i=0;i






