河北联合大学饮料自动售货机程序设计书Word下载.docx
《河北联合大学饮料自动售货机程序设计书Word下载.docx》由会员分享,可在线阅读,更多相关《河北联合大学饮料自动售货机程序设计书Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
2.课程设计任务与要求
3.课程设计说明书
4.课程设计成果
5.程序调试过程
6.设计问题的不足和改进方案
7.课程设计心得
8.参考文献
1.课程设计目的
《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。
目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2.课程设计任务与要求:
要求:
本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、编程简练,程序功能齐全,能正确运行
4、说明书、流程图要清楚
5、课题完成后必须按要求提交课程设计报告
任务:
将自己选择题目的任务要求简单填写在此处。
基本要求:
(1)本售货机只接受10元、5元、2元、1元和0.5元的纸币和硬币。
(2)顾客一次只能投入一种上述金额的纸币或硬币,当用户重复投入时货币金额的累加。
(3)销售的饮料包括5种:
可口可乐(2元)、百事可乐(2元)、橙汁(3元)、咖啡(5元)、纯净水(1.5元)。
(4)系统通过必要的提示信息,提示用户完成相应的操作。
(5)若顾客所购买的饮料已经售完,提示用户完成相应的操作。
(6)完成一次售货后,系统自动进行结算找零。
3.创新要求
在基本要求达到后,可以进行创新设计。
(1)更改程序,实现一次购买多种商品的功能。
(2)对于自动售货机的商家而言,还应该有一个交互的界面,可以让商家来更改自动售货机中货物的品种、单价、数量等信息。
3.课程设计说明书
概要设计
在主函数中,首先定义了一个DrinkMachine类(自动售货机类)的对象dri,并未显
式地定义MoneyCounter类和GoodsInfo类的对象。
但是在DrinkMachine类中含有MoneyCounter类和GoodsInfo类的数据成员。
然后设计一个两重循环,外循环的持续条件是顾客继续购买,内循环的持续条件是顾客继续重复投币,即顾客可以反复投币,直至投够为止。
当顾客购买成功或不再继续购买时,流程中止。
程序流程如图所示
模块说明:
模块结构图
详细设计
总体流程图:
4.课程设计成果
程序源代码,运行结果(可用屏幕抓图的方法说明)(五号,宋体)(多页)
#include<
iostream>
string>
#include<
stdlib.h>
usingnamespacestd;
classmoneycounter//钱币类
{
public:
moneycounter()//初始化
{
input_money=0.0;
}
~moneycounter(){}
voidgetmoney();
//提示顾客投币
floatmoney_from_buyer();
//投币金额
voidclear();
//清空,准备下一轮投币
private:
floatinput_money;
//顾客投入的金额
};
classgoodsinfo//商品类
goodsinfo()
name="
"
;
price=0.0;
total=0;
~goodsinfo(){}
voidset_goods(string,float,int);
stringgoods_name();
floatgoods_price();
intgoods_number();
stringname;
floatprice;
inttotal;
classdrinkmachine//售货机类
drinkmachine();
~drinkmachine(){}
voidshowchoices();
//显示饮料信息
voidinputmoney();
//获取顾客投入的钱币
boolgoodsitem(int);
//检查饮料的状态
voidreturn_allmoney();
//返回钱数
voidreturn_money();
voiddeal_money(intselect);
moneycountermoneyctr;
goodsinfov_goods[5];
staticfloatchange;
voidmoneycounter:
:
getmoney()
floatmoney;
cout<
<
endl<
请投入钱币。
endl;
cin>
>
money;
input_money+=money;
change=input_money;
您投入的金额是"
input_money<
元。
}
floatmoneycounter:
money_from_buyer()
returninput_money;
voidgoodsinfo:
set_goods(stringn,floatp,intnum)
name=n;
price=p;
total=num;
stringgoodsinfo:
goods_name()
returnname;
floatgoodsinfo:
goods_price()
returnprice;
intgoodsinfo:
goods_number()
returntotal;
drinkmachine:
drinkmachine()
v_goods[0].set_goods("
橙汁"
3,20);
v_goods[1].set_goods("
咖啡"
5,0);
v_goods[2].set_goods("
纯净水"
1.5,20);
v_goods[3].set_goods("
可口可乐"
2,30);
v_goods[4].set_goods("
百事可乐"
2,28);
voiddrinkmachine:
showchoices()
请选择商品代码"
for(inti=0;
i<
5;
i++)
cout<
"
v_goods[i].goods_name()<
v_goods[i].goods_price()<
元"
5退款并且退出"
inputmoney()
本机只接受10元、5元、2元、1元和0.5元的纸币和硬币。
moneyctr.getmoney();
booldrinkmachine:
goodsitem(intselect)
intnumber=v_goods[select].goods_number();
if(number>
0)
if(moneyctr.money_from_buyer()>
=v_goods[select].goods_price())
floatchange=moneyctr.money_from_buyer()-v_goods[select].goods_price();
returntrue;
else
{
cout<
您投入的金额不足!
returnfalse;
}
您选择的饮料已售完!
returnfalse;
returnfalse;
deal_money(intselect)
change-=v_goods[select].goods_price();
if(change<
0)
您的余额不足!
change+=v_goods[select].goods_price();
return_allmoney()
退款"
moneyctr.money_from_buyer()<
return;
return_money()
找零"
change<
//***************************************************************************************
voidmain()
drinkmachinedri;
stringbuf;
boolgo_on(true),cash_on(true),got_it(true);
booljudge=true;
intcount=0;
====================欢迎使用本自动售货机====================="
while(go_on)
while(cash_on&
&
judge)
dri.inputmoney();
继续投币吗?
(y/n)"
buf;
if(buf=="
n"
)
cash_on=false;
break;
dri.showchoices();
intselect=atoi(buf.c_str());
if(select==5)
if(count==0)
{
dri.return_allmoney();
}
else
dri.return_money();
go_on=false;
else
got_it=dri.goodsitem(select);
judge=false;
if(got_it)
dri.deal_money(select);
cout<
需要其他饮料吗?
if(buf=="
y"
cash_on=true;
go_on=true;
dri.return_money();
cout<
请在出口处拿取您选择的饮料。
go_on=false;
谢谢,再见!
5.程序调试过程
6.设计问题的不足和改进方案
实现一次购买多种商品的功能。
7.课程设计心得
首先通过这次的编程实习很好的帮助我复习巩固了大一一年来所学的C++的所有基础知识,通过对这些知识的综合应用加深了我对这些知识的理解,当然也让我牢牢的掌握了很多C++知识。
其次在变这个系统程序的过程中我也遇到了很多问题,但通过复习、自学解决了很大一部分,因此该实习很好的提升了我的综合能力,还有极少的一部分难题或者想不通的地方都通过与同学的交流学习解决了,从这个角度来说这个实习还提升了我与人交流的能力。
综上所述,这个实习让我受益匪浅。
8.参考文献
VisuslC++2005入门经典(美IvorHorton著)