c语言自动售货机实验报告_c语言第五章实验报告

其他范文 时间:2020-02-27 11:49:36 收藏本文下载本文
【www.daodoc.com - 其他范文】

c语言自动售货机实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言第五章实验报告”。

课程设计

课程名称

C语言高级程序设计

xxx XXX XXX XXX XXX

小组成员1

小组成员2

小组成员3

任课教师

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(intn,floatm,inta,int b)//出售模块n为序号,m钱,{ ……………………………

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

{ ………………………………..}

else

}

} else A=0;//表示没货了

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用于标记售货机是否能完成退款

inti,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,“奶茶”,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()//显示模块--屏幕 { system(“pause”);putch('n');for(i=0;i

printf(“

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|n”);

printf(“

|%d%8s%7.1f元...剩余%7d|n”,goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(“

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n”);printf(“购买东西前,请投入money!(支持1元,5元,10元和20元)n《温馨提示,投入money过多可能无法完成退币》n”);scanf(“%f”,&M);return M;}

int input()//输入模块 { for(;;){ scanf(“%d”,&n);if(n8)

printf(“输入错误,请重新输入商品序号开始选购或按 0 退出n”);else {return n;break;} } } int sell(intn,floatm,inta,int b)//出售模块

n为序号,m钱,{

inti=0;while(n!=goods[i].number)i++;if(m>=goods[i].price){if(goods[i].quantity>0)

{goods[i].quantity--;

M=m-goods[i].price;

for(i=0;i

printf(“

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|n”);

printf(“

|%d%8s%7.1f元...剩余%7d|n”,goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);}

printf(“

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n”);

printf(“你的商品 %d %s 已经出货了n”,goods[n-1].number,goods[n-1].name);

}

else

A=0;//表示没货了

} else

B=0;//表示钱了

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

return(a);return(b);}

void change(float m)/钱模块 { inti,a;//用于辅助输出

if(m==0)a=1;if(m!=0.0&&t!=1)a=2;switch(a){

case 1:printf(“钱用光了哦n谢谢光临!”);break;case 2:{for(i=0;i

if(money[i].moneys

{m=m-money[i].moneys;

money[i].mount++;

i--;}//继续检索当前的面额是否符合条件,才会有相同面值出现

printf(“

谢谢光临!n找零n”);

for(i=0;i

if(money[i].mount>0)

printf(“%d张%.1f元tn”,money[i].mount,money[i].moneys);m=0;M=0;};

money[0].mount=0;break;

} }

void main()

//主函数模块 { do{ int t=1;

//用于标记售货机是否能完成退款,1表能

float m1;

//m1用于记录用户再次加的钱

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)//货没有了怎么办

{printf(“可惜了,商品 %d 已卖完了n你还有 %.1f元n你可以买其它商品(直接输入商品序号)或按 0 离开n”,n,M);

input();//输入函数

if(n==0)

change(M);/钱函数

else

{A=1;

B=1;//要将标记归位

goto loop2;} //else

}

//if

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

{printf(“噢,,没钱了,你可以继续投入money购买,或按 0 离开n”);scanf(“%f”,&m1);if(m1==0)

change(M);else

{M=M+m1;

A=1;

B=1;//标记要归位

goto loop1;} //else } //else if

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

goto loop1;} //else }while(1);} //main 四. 系统功能及运行效果图

一,系统提供商品清单,并提示购买前投入money

二,如果用户投入的money过多,售货机无足够硬币完成退币,10

动退还用户已付金额

三,用户投入money购买,确定购买商品后,系统显示如下

四,如果不想继续购买,则按0退出,系统自动完成找零

五,想继续购买,则直接输入商品序号,当商品已售完时,系统自

动提示如下

六,若不想退出,则可以继续购买其它商品,直到剩余钱不足时

七,想继续购买,则直接加钱后购买,钱全部花完时,系统提示如

五. 研究总结

1.研究过程

接到研究型学习任务后,我们三个同学组成了小组进行探究。首先我们先详细分析讨论了整个系统需要完成的功能细节,并考虑了实现的方法。一开始我们的方法不够优化,我们通过查阅一些资料,得到了新的方法,拓宽了思路,并且再次进行了讨论。讨论完毕后进行了组员的分工,大家在一周内进行了代码的编写和模块化调试,最后所有模块合在一起进行了总的调试。调试过程中又发现了不少问题,我们又一一加以修改,最后形成了现在这个较为完善的程序。

2.小组分工

王宗德—组长,编写主程序,排版,划分模块,负责调试合成整个代码等。何硕—负责收集资料,负责部分子模块程序的编写,撰写实验报告。刘泳—检查程序错误及部分程序设计,完善实验报告。

3.收获

经过本次研究型学习任务,我们小组深刻意识到了分工合作的重要性。大家在探究过程中各司其职,相互帮助。除此以外,我们也加深了对课上所学知识的理解,比如字符串、数组与指针、结构体使用等。我们意识到实践是提高知识水平和专业技能的重要途径。

自动售货机

摘要:本设计利用通讯领域的前沿技术GPRS网络,采用能够实现远程测控的GPRS模块,以实现自动售货机的远程管理。 关键词:自动售货机;MDB;GPRS;SIM300C引言: 自动售货是20世纪70年代在日......

软件工程_自动售货机

自动售货机信息1101 施敏宇 18号下面是自动售货机系统的需求陈述,试建立它的对象模型、动态模型和功能模型: 自动售货机系统是一种无人售货系统。售货时,顾客把硬币投入机器的......

自动售货机渊源

自动售货机:不容忽视的销售方式如今,自动售货机由于随处可见,似乎被人们所忽视。客观上讲,它是一种起源较早的无店铺销售方式。看似可以和路边电话亭等归为一类的自动售货机,曾帮......

软件工程课程设计(自动售货机)

《软件工程》课程设计报告 一、问题描述(一)关于自动售货机自动售货机像磁卡电话、银行柜员机一样,以方便、新颖、文明、昼夜服务等特点,成为发达国家不可缺少的便民配套设施。......

自动售货机合作协议书

自动售货机合作协议书甲方: 乙方:本着平等互利、友好协商的原则,甲、乙双方根据《中华人民共和国合同法》、《食品安全法》及其相关规定,就自动售货机合作项目达成如下协议:一、......

下载c语言自动售货机实验报告word格式文档
下载c语言自动售货机实验报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文