C语言程序设计计算机程序设计.docx
《C语言程序设计计算机程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计计算机程序设计.docx(13页珍藏版)》请在冰点文库上搜索。
C语言程序设计计算机程序设计
C语言程序设计计算机程序设计
计算机技术基础课程设计
C语言
设计报告
题目:
花店经营管理系统
学院:
材料科学与工程学院
专业:
金属材料
班级:
050202班
姓名:
何卓海
指导教师:
设计日期:
2006年1月3日~1月8日
一(选题背景
本例实现了一个花店经营的管理系统,在经营的过程中,必需对花的库存量,销售量,剩余量以及花的种类,单价,颜色,名字等,有系统的管理。
本程序定义了一个结构数组,并运用了一个主函数调用五个函数以实现整个花店的经营和管理。
二(设计思想:
编程思路:
首先在程序开始处,引入了头文件,可以直接调用函数,然后对花的种类和五项命令进行了宏定义,接着枚举类型定义了花的颜色,定义了结构体数组,并且编写了”enter_data()”,”put_data()”,“buy()”,”find()”,”changecmd()”五个子函数,最后在mian函数的内部对各个子函数进行调用,实现综合管理。
三(主要解决问题的方法及技术关键:
1(运用指针定义了五项命令,分别指向五个函数,便于调用。
2(运用了for,if---else---if,while,switch---case用来控制程序的流程。
主函数流程图
开始
系统初始化
接受键盘命令
是判断是否为退出退出(quit)命令
否
命令转换(把字符命令转换为数字命令)
Buy()Put()enter()Find()
Buy()流程图
入口
提示信息
输入花名,价格
选择花的种类和数量
从i=0起,到第i个花开始比较
i++否
是否出现该种花
否
是
输出计算价格是否是最后
一朵花
是
出口返回
Put()流程图
入口
输出花的各项值
否判断
i是
输出花的各项
的值
进行switch,根据所需内
容,选择执行。
输出花的单价和
数量
出口
Enter()流程图
入口
提示信息
判断
i输入花的各项值
否
判断是否有所没有所要选选择的颜色择的颜色
是
输入你选择的颜色
出口
入口
Find()流程图提示信息
输入查找类型
是否按名字查从i=0,到第i个花开始比较
是询否
i++是否有这种花
输出花名,颜色,单价数量
出口是否按价格查从i=0,到第i个花开始比较询是否
是否有这种花i++
输出花名,颜色,单价
数量
出口
从i=0,到第i个花开始比较是否按颜色查询是
否i++
是否有这种花
输出花名,颜色,单
价
出口
,五(程序清单
#include"stdio.h"#include"stdlib.h"#include"string.h"#include"dos.h"#defineSIZE8
#defineCMDSIZE5typedefenum/*枚举类型定义*/{
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].ra
te,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].ra
te,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].ra
te,flower[i].amount);
}
break;
}
}
六(总结、设计结果说明
一(通过本程序的练习,可以让读者了解结构体的定义和函数的调用,对程序中各种语句的运用更加熟练把握。
二(本程序虽然简短,但可以简单地运用到花店的经营管理中,通过这个操作,让花店经营得有条理,方便了顾客,也方便了自己。