计算机技术基础c语言课程设计 花店经营管理系统 2.docx
《计算机技术基础c语言课程设计 花店经营管理系统 2.docx》由会员分享,可在线阅读,更多相关《计算机技术基础c语言课程设计 花店经营管理系统 2.docx(12页珍藏版)》请在冰豆网上搜索。
计算机技术基础c语言课程设计花店经营管理系统2
计算机技术基础课程设计
C语言
设计报告
题目:
花店经营管理系统
一.选题背景
本例实现了一个花店经营的管理系统,在经营的过程中,必需对花的库存量,销售量,剩余量以及花的种类,单价,颜色,名字等,有系统的管理。
本程序定义了一个结构数组,并运用了一个主函数调用五个函数以实现整个花店的经营和管理。
二.设计思想:
编程思路:
首先在程序开始处,引入了头文件,可以直接调用函数,然后对花的种类和五项命令进行了宏定义,接着枚举类型定义了花的颜色,定义了结构体数组,并且编写了”enter_data()”,”put_data()”,“buy()”,”find()”,”changecmd()”五个子函数,最后在mian函数的内部对各个子函数进行调用,实现综合管理。
三.主要解决问题的方法及技术关键:
1.运用指针定义了五项命令,分别指向五个函数,便于调用。
2.运用了for,if---else---if,while,switch---case用来控制程序的流程。
主函数流程图
是
否
Buy()流程图
Put()流程图
Enter()流程图
,
五.程序清单
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"dos.h"
#defineSIZE8
#defineCMDSIZE5
typedefenum/*枚举类型定义*/
{
red,white,yellow,purple,orange
}COLOR;
typedefstruct/*结构体定义*/
{
charname[20];
COLORcolor;
floatrate;
intamount;
}FLOWER;
char*Dcmd[]={"buy","put","look","find","help"};
/*定义了5项命令的指针类型*/
voidenter_data(FLOWERflower[]);/*定义库存输入函数*/
floatbuy(FLOWERflower[]);/*定义销售函数*/
voidput_data(FLOWERflower[]);/*定义库存输出函数*/
voidfindflower(FLOWERflower[]);/*定义查询函数*/
intchangecmd(charcmd[]);/*定义命令解释函数*/
voidmain()
{
FLOWERflower[SIZE];
floatprice;
charcmd[5]={'\0','\0','\0','\0','\0'};
charexits[5]="quit";
intrecmd=0;
inti;
for(i=0;i{
memset(flower[i].name,0,20);/*成员设置,各类型初始化*/
flower[i].rate=0;
flower[i].amount=0;
flower[i].color=white;
}
printf("花店经营管理系统\n");
printf("\nYoucaninput'buy','look','put','help','find':
\n");
while
(1)/*命令转换,把字符转换为数字*/
{
scanf("%s",cmd);
if(strcmp(cmd,exits)==0)
exit
(1);
recmd=changecmd(cmd);
switch(recmd)
{
case0:
printf("abadcommandpleaseinputacorrcetcmd\n");/*输入了错误信息的提示*/
break;
case1:
price=buy(flower);
if(price==0)
printf("\nSorry,buyerror");
else
printf("\nOK,Pleasepaymoney%f\n",price);
break;
case2:
enter_data(flower);
break;
case3:
put_data(flower);
break;
case4:
findflower(flower);
break;
case5:
printf("\nYoucaninput'buy','look','put','help','find':
\n");
break;
}
}
}
/*命令解释函数*/
/*该函数处理接收到的命令通过与命令数组里的预定义命令比较返回命令在数组中的位置*/
intchangecmd(charcmd[])
{
inti=0;
for(i=0;i{
if(strcmp(cmd,Dcmd[i])==0)
returni+1;
}
return0;
}
/*库存输入函数*/
/*该函数接受键盘输入把输入数据与库存对应*/
voidenter_data(FLOWERflower[])
{
inti,flag;
for(i=0;i{
printf("Pleaseentertheflowers:
\n");
printf("Flowernameis:
\n");
scanf("%s",flower[i].name);
printf("Flowerrateis:
\n");
scanf("%f",&flower[i].rate);
printf("Floweramountis:
\n");
scanf("%d",&flower[i].amount);
flag=1;
while(flag)/*接受用户选择的颜色*/
{
printf("0->red\t1->white\t2->yellow\t3->purple\t4->orante\n");
printf("Pleasechooseacolor:
\n");
scanf("%d",&flower[i].color);
if(flower[i].color>=0&&flower[i].color<=4)
flag=0;
else
printf("Nothavethiscolor\n");
}
}
}
/*输出现有库存的鲜花数据的函数定义*/
voidput_data(FLOWERflower[])
{
inti;
printf("\nNameColorRateAmount\n");
for(i=0;i{
printf("%-12s",flower[i].name);
switch(flower[i].color)
{
casered:
printf("%-8s","red");
break;
casewhite:
printf("%-8s","white");
break;
caseyellow:
printf("%-8s","yellow");
break;
casepurple:
printf("%-8s","purple");
break;
caseorange:
printf("%-8s","orange");
break;
}
printf("%-10.2f%-10d\n",flower[i].rate,flower[i].amount);
}
}
/*询问用户购买的鲜花的种类和株的数量,计算总的价格的函数定义*/
floatbuy(FLOWERflower[])
{
inti;
charname[20];
COLORcolor;
floatrate,price;
intamount,flag;
printf("\nPleaseenternameandrateyouwanttobuy:
\n");
/*输出需要的鲜花的名字和价格*/
scanf("%s%f",name,&rate);
flag=1;
while(flag)/*客户购买花的情况*/
{
printf("0->red\t1->white\t2->yellow\t3->purple\t4->orante\n");
printf("Pleasechooseacolor:
\n");
scanf("%d",&color);
if(color>=0&&color<=4)
flag=0;
else
printf("Nothavethiscolor\n");
}
printf("Pleaseamountyouwanttobuy:
\n");
/*输出需要的花的数量*/
scanf("%d",&amount);
for(i=0;i{
if(flower[i].rate==rate&&strcmp(flower[i].name,name)==0&&flower[i].color==color)
break;
}
if(i==SIZE)
{
printf("\nNotfountthefloweryoubuy\n");
/*没有要买的花*/
price=0;
}
elseif(flower[i].amount{
printf("\nAmountnotenought\n");
price=0;
}
else
{
flower[i].amount=flower[i].amount-amount;
price=flower[i].rate*amount;/*找到,剩余数量够,可以买花,并计算总价格*/
}
returnprice;
}
/*对于库存鲜花的的查询方式的定义*/
voidfindflower(FLOWERflower[])
{
inti,rcmd;
charname[20];
floatrate;
COLORcolor;
printf("Pleasechooseanumber:
\n");/*输出查询的方式*/
printf("0->findasname\t1->findasrate\t2->findascolor\n");
scanf("%d",&rcmd);
switch(rcmd)
{
case0:
/*按花名查询*/
printf("Inputaflowername:
\n");
scanf("%s",name);
for(i=0;i{
if(flower[i].name==name)
printf("%s\t%d\t%f\t%d\n",flower[i].name,flower[i].color,flower[i].rate,flower[i].amount);
}
break;
case1:
/*按数量查询*/
printf("Inputaflowerrate:
\n");
scanf("%f",&rate);
for(i=0;i{
if(flower[i].rate==rate)
printf("%s\t%d\t%f\t%d\n",flower[i].name,flower[i].color,flower[i].rate,flower[i].amount);
}
break;
case2:
/*按颜色查询*/
printf("Inputaflowercolor:
\n");
scanf("%d",&color);
for(i=0;i{
if(flower[i].color==color)
printf("%s\t%d\t%f\t%d\n",flower[i].name,flower[i].color,flower[i].rate,flower[i].amount);
}
break;
}
}
六.总结、设计结果说明
一.通过本程序的练习,可以让读者了解结构体的定义和函数的调用,对程序中各种语句的运用更加熟练把握。
二.本程序虽然简短,但可以简单地运用到花店的经营管理中,通过这个操作,让花店经营得有条理,方便了顾客,也方便了自己。