c语言自动售货机实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计

课程名称 C 语言高级程序设计学院xxx

小组成员1XXX

小组成员2XXX

小组成员3XXX

任课教师XXX

2016——2017学年第1学期

一.所选题目与要求

自动售货机

问题情景:

分析学校教学楼自动售货机的功能,设计一个自动售货系统。

功能要求:

1. 系统能提供所售商品的清单(编号,名称,单价,数量)

2. 客户输入商品编号及购买数量,系统显示应付的金额,输入客户实付的钱数,系统计算应找的钱数系统如果没有足够的库存或零钱时,现实应返还客户已付的金额。(不考虑用支付宝付款的情况)

3. 可增加商品种类,增加商品库存,查询商品库存,查询商品销售量及销售额。

成果要求:

通过网络教学平台中的“研究型教学”建立分组,每组2-3人,通过小组讨论,确定每人的分工,并确定系统设计方案。

各小组成员在网络教学平台上进行讨论、并完成最终的报告,整个过程作为小组及个人工作评价的重要依据。

各小组成员根据系统设计方案分模块进行编程,在系统各模块编码完成后集成调试,并最终完成整个系统的测试。

根据下面的报告模板完成综合实验总结报告,并打印成纸质报告,作为大作业课程结束时上交。

附:综合实验总结报告应包含的内容:

1. 系统功能说明

2. 程序结构

程序结构说明

重要数据说明

函数清单

/* 每个函数的书写格式 */

函数名:所在文件名

函数功能

参数说明

算法描述或程序代码

3. 系统运行结果

4. 系统设计难点及其解决方法

5. 不足之处

6. 人员分工说明

二.问题分析及算法设计

主函数

void main() //主函数模块

{

do{

system("pause");

show(); //显示屏幕函数,商品清单

loop1:printf("现在你有%.1f元\n你可以选择商品序号开始选购或按0 退出\n",M);

input(); //输入函数

if(M-goods[n-1].price>v) {t=0;printf("对不起,售货机没有足够的零钱了\n谢谢光临!退还%.1f元\n",M);break;} //判断售货机是否有足够的零钱,0表无if(n==0){ //确认用户是选择离开还是买东西开始购买

t=1;

change(M);} //找零函数

else {

loop2:sell(n,M,1,1); //购买函数

if(A==0)//货没有了怎么办

input(); //输入函数………………………………………………………………………..

if(n==0) //没货离开

change(M); //找钱函数

else //继续购买其它商品

{

……………………………………………

goto loop2;返回至购买函数

} //else

} //if

else if(B==0)//没钱了怎么办

{

…………………………………..

if(m1==0) //离开

change(M);返回至找零函数

else //加钱

{

…………………………………………..

goto loop1;返回至再次购买

} //else

} //else if

else//有钱又有货,继续选

goto loop1;返回至购买程序

} //else

}while(1);

} //main

结构体定义

struct goods//定义物品清单

{

int number;

char name[10];

float price;

int quantity;

}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶",4,5},{5,"雪碧",2.5,5},

{6,"矿泉水",2,5},{7,"椰子汁",2.5,5},{8,"格瓦斯",3,5}};

struct money//定义钱的种类,数量用于记录找零的某值张数

{

float moneys;

int mount;

}money[2]={{1,0},{0.5,0}};

被调用的函数

float show() //显示模块--屏幕

{

……………………………

}

int input() //输入模块

{

…………………………..

}

}

int sell(int n,float m,int a,int b) //出售模块n为序号,m钱,

{

……………………………

if(goods[i].quantity>0) //表示有货

{

………………………………..

}

else

A=0; //表示没货了

}

else

B=0; //表示没钱了

if(M==0) B=0;//判断出钱已用光

return(a);

return(b);

}

void change(float m) //找钱模块

{

……………………………

switch(a){

case 1花光…………………………………….

case 2:找零……………………………………………………………………………}

}

三.程序源代码

#include

#include

float M;//M为投入的钱数

int A=1,B=1,t; //A为数量标记,B为金钱标记,1表示有,0表示没有,t用于标记售货机是否能完成退款

int i,n,v=100; //i用于循环显示商品列表,n用于记录输入的货号,v用于保存售货机内可以找零的钱数,初设为v=100

//结构体定义

struct goods //定义物品清单

{

int number;

char name[10];

float price;

int quantity;

}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶

相关文档
最新文档