计算机技术基础课程设计
C语言 设计报告
题目:花店经营管理系统
一.选题背景
本例实现了一个花店经营的管理系统,在经营的过程中,
必需对花的库存量,销售量,剩余量以及花的种类,单价,颜色,名字等,有系统的管理。本程序定义了一个结构数组,并运用了一个主函数调用五个函数以实现整个花店的经营和管理。
二.设计思想:
编程思路:首先在程序开始处,引入了头文件,可以直
接调用函数,然后对花的种类和五项命令进行了宏定义,接着枚举类型定义了花的颜色,定义了结构体数组,并且编写了”enter_data()”,”put_data()”,“buy()”,”find()”,”changecmd()”五个子函数,最后在mian函数的内部对各个子函数进行调用,实现综合管理。
三.主要解决问题的方法及技术关键:
1.运用指针定义了五项命令,分别指向五个函数,便于
学习参考
word格式 整理版
调用。
2.运用了for, if---else---if, while, switch---case用来控制程序的流程。
主函数流程图
开 始
系统初始化 接受键盘命令 判断是否为 (quit)命令 否 是 退 出退 出 命令转换(把字符命令转换为数字命令) Buy() Put() enter() Find() 学习参考 word格式 整理版
Buy()流程图
学习参考
word格式 整理版
入 口 提 示 信 息 输入花名,价格 选择花的种类和数量 从i=0起,到第i个花开始比较 i++ 否 是否出现该种花 否 是 是否是最后一朵花 是 输出计算价格 返 回 出 口
Put()流程图
学习参考
word格式 整理版
入 口
输出花的各项值
判 断 i 输出花的各项 的值 进行switch,根据所需内 容,选择执行。 输出花的单价和 数量 出 口 Enter()流程图 学习参考 否 word格式 整理版 入 口 提示信息 判 断 i word格式 整理版 入 口 提 示 信 息 Find()流程图 输入查找类型 是否按名字查询 从i=0,到第i个花开始比较 是否 是否有这种花 i++ 输出花名,颜色,单价数量 出 口 是否按价格查询 从i=0,到第i个花开始比较 是 i++ 否 是否有这种花 输出花名,颜色,单价出 口 从i=0,到第i个花开始比较 是否按颜色查询 是i++ 否 是否有这种花 输出花名,颜色,单出 口 学习参考 word格式 整理版 , 五.程序清单 #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[]={\"buy\ /*定义了5项命令的指针类型*/ 学习参考 word格式 整理版 void enter_data(FLOWER flower[]); /*定义库存输入函数*/ float buy(FLOWER flower[]); /*定义销售函数*/ void put_data(FLOWER flower[]); /*定义库存输出函数*/ void findflower(FLOWER flower[]);/*定义查询函数*/ int changecmd(char cmd[]);/*定义命令解释函数*/ void main() { FLOWER 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 flower[i].rate=0; flower[i].amount=0; flower[i].color=white; } printf(\"花店经营管理系统\\n\"); 学习参考 word格式 整理版 printf(\"\\nYou can input 'buy','look','put','help','find':\\n\"); while(1) /*命令转换,把字符转换为数字*/ { scanf(\"%s\ 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; case 1: price=buy(flower); if(price==0) printf(\"\\nSorry,buy error\"); else printf(\"\\n OK,Please pay money %f \\n\ break; case 2: 学习参考 word格式 整理版 enter_data(flower); break; case 3: put_data(flower); break; case 4: findflower(flower); break; case 5: printf(\"\\nYoucaninput 'buy','look','put','help','find':\\n\"); break; } } } /*命令解释函数*/ /*该函数处理接收到的命令 通过与命令数组里的预定义命令比较 返回命令在数组中的位置*/ int changecmd(char cmd[]) { int i=0; 学习参考 word格式 整理版 for(i=0;i /*库存输入函数*/ /*该函数接受键盘输入 把输入数据与库存对应*/ void enter_data(FLOWER flower[]) { int i,flag; for(i=0;i 学习参考 word格式 整理版 while(flag) /*接受用户选择的颜色*/ { printf(\"0->red\1->white\2->yellow\3->purple\4->orante\\n\"); printf(\"Please choose a color:\\n\"); scanf(\"%d\ if(flower[i].color>=0&&flower[i].color<=4) flag=0; else printf(\"Not have this color\\n\"); } } } /*输出现有库存的鲜花数据的函数定义*/ void put_data(FLOWER flower[]) { int i; printf(\"\\nName Color Rate Amount\\n\"); for(i=0;i word格式 整理版 { printf(\"%-12s\ switch(flower[i].color) { case red: printf(\"%-8s\ break; case white: printf(\"%-8s\ break; case yellow: printf(\"%-8s\ break; case purple: printf(\"%-8s\ break; case orange: printf(\"%-8s\ break; } printf(\"%-10.2f%-10d\\n\ 学习参考 word格式 整理版 ; } } /*询问用户购买的鲜花的种类和株的数量,计算总的价格的函数定义*/ 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\ flag=1; while(flag) /*客户购买花的情况*/ { printf(\"0->red\1->white\2->yellow\3->purple\4->orant 学习参考 word格式 整理版 e\\n\"); printf(\"Please choose a color:\\n\"); scanf(\"%d\ if(color>=0&&color<=4) flag=0; else printf(\"Not have this color\\n\"); } printf(\"Please amount you want to buy:\\n\"); /*输出需要的花的数量*/ scanf(\"%d\ for(i=0;i if(i==SIZE) { printf(\"\\nNot fount the flower you buy\\n\"); 学习参考 word格式 整理版 /*没有要买的花*/ price=0; } else if(flower[i].amount flower[i].amount=flower[i].amount-amount; price=flower[i].rate*amount; /*找到,剩余数量够,可以买花,并计算总价格*/ } return price; } /*对于库存鲜花的的查询方式的定义*/ void findflower(FLOWER flower[]) { int i,rcmd; 学习参考 word格式 整理版 char name[20]; float rate; COLOR color; printf(\"Please choose a number :\\n\");/*输出查询的方式*/ printf(\"0->find as name\ 1->find as rate \ 2->find as color\\n\"); scanf(\"%d\ switch(rcmd) { case 0: /*按花名查询*/ printf(\"In put a flower name:\\n\"); scanf(\"%s\ for(i=0;i printf(\"%s\%d\%f\%d\\n\,flower[i].rate,flower[i].amount); } break; case 1: /*按数量查询*/ printf(\"In put a flower rate:\\n\"); 学习参考 word格式 整理版 scanf(\"%f\ for(i=0;i printf(\"%s\%d\%f\%d\\n\,flower[i].rate,flower[i].amount); } break; case 2: /*按颜色查询*/ printf(\"In put a flower color:\\n\"); scanf(\"%d\ for(i=0;i printf(\"%s\%d\%f\%d\\n\,flower[i].rate,flower[i].amount); } break; } } 学习参考 word格式 整理版 六.总结、设计结果说明 一.通过本程序的练习,可以让读者了解结构体的定义和函数 的调用,对程序中各种语句的运用更加熟练把握。 二.本程序虽然简短,但可以简单地运用到花店的经营管理中, 通过这个操作,让花店经营得有条理,方便了顾客,也方便了自己。 学习参考 word格式 整理版 学习参考 因篇幅问题不能全部显示,请点此查看更多更全内容