课程设计——自动售货机C++

课程设计——自动售货机C++

2010-05-28 19:47:52 阅读58 评论1 字号:

            课程设计的主要内容

题目描述:自动售货机可以售出ABC三种商品,价格分别为2元、3元、6元。顾客可投入面值不超过10元钱币购买商品,自动售货机吐出商品,并且找给用户零钱,设零钱的面值分别为1元、2元和5元。如果商品用完,或者无法找零,则给出用户一个提示:商品已售完,并且退还钱币。为了避免流失顾客,希望你的售货机能够尽可能地给用户找零。为了调查用户的喜好,希望得到三种商品的每日消费数据,并由此来调整货柜中三种货物的存贮量。

其中,商品属性包括:商品代码、商品名、商品单价、商品总量、商品库存量

货币属性包括:货币面值、货币数量

题目要求:编写一个自动售货机系统。实现以下功能:
库存查询:检索当前三种商品的储存量。
销售查询:分别统计今天每种商品的销售量和销售额。
货币查询:统计所有不同面值的货币数目及总金额数,检验货币总金额是否与总销售额一致。

销售界面:顾客投入钱币(总面值不超过10元),选择商品,获得商品和零钱;或者直接显示错误并退还钱币。

为以上各项功能设置一个菜单,顾客只能执行库存查询和购买商品两项功能,销售查询、货币查询必须是持有密码的管理员才能操作。

主要知识点:结构体,结构体数组、函数

难点:找零算法。程序的找零算法应该合理,应优先找给大额的零钞,不够再找给小额零钞。

以下部分是算法:

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <cstdlib>
using namespace std;
const string mima="880716";
struct hb
{  int mianzhi;
   int gesh;
};
struct hw
{  int dm[16];
   int danjia;
   int chuliang;
  char mingzi[20];
};
struct jizi
{  struct hb hbi[4];
   struct hw hwu[3];
}chushi,shouhou;
void chushihua()

  ifstream fin;
  fin.open("初始化.txt");
  strcpy(chushi.hwu[0].mingzi,"kele");
  strcpy(chushi.hwu[1].mingzi,"pijiu");
  strcpy(chushi.hwu[2].mingzi,"mianbao");
  for(int i=0;i<4;i++)
  {  fin>>chushi.hbi[i].mianzhi>>chushi.hbi[i].gesh;
     fin>>chushi.hwu[i].dm[16]>>chushi.hwu[i].danjia>>chushi.hwu[i].chuliang;
  }
  shouhou=chushi;
}
void zhaoling(int qianshu,int danjia)
{  int lingqian;
   lingqian=qianshu-danjia;
   cout<<lingqian;
   shouhou.hbi[2].gesh-=lingqian/5;
   lingqian=lingqian%5;
   shouhou.hbi[1].gesh-=lingqian/2;
   lingqian=lingqian%2;
   shouhou.hbi[0].gesh-=lingqian;
}
void qianshugbn(int qianshu,int danjia)

 for(int i=0;i<4;i++)
    shouhou.hbi[i].gesh=chushi.hbi[i].gesh;
    zhaoling(qianshu,danjia);
 shouhou.hbi[3].gesh+=qianshu/10;
 qianshu=qianshu%10;
 shouhou.hbi[2].gesh+=qianshu/5;
    qianshu=qianshu%5;
    shouhou.hbi[1].gesh+=qianshu/2;
    qianshu=qianshu%2;
    shouhou.hbi[0].gesh+=qianshu;
  
}
void xiaoshou()
{   int qianshu;
    int j;
 string ch;
 cout<<"\n\t *******************************************************";
 cout<<"\n\n\t\t\t\t请投币!\n";
 cout<<"\n\t\t\t\t您的金额:";
   cin>>qianshu;
 if(qianshu>10)
  do{
    cout<<"\n\t\t\t\t请重新投币!\n";
   cout<<"\n\t\t\t\t您的金额:";
         cin>>qianshu;
  }while(qianshu>10);
 cout<<"\n\t\t\t\t请选择商品!\n";
 cout<<"\n\t\t\t\t1."<<chushi.hwu[0].mingzi<<"\n\n\t\t\t\t2."
  <<chushi.hwu[1].mingzi<<endl<<endl<<"\t\t\t\t3."
  <<chushi.hwu[2].mingzi<<endl;
 cout<<"\n\t\t\t\t您要购买商品序号:";
 cin>>j;
    cout<<"\n\t\t\t\t确认请按确认键!\n\n\n\n\n\n";
    cout<<"\t ********************************************************";
  cout<<"\n\t\t\t\t"<<"欢迎光临!";
    cin.get();
 cin.ignore(1000,'\n');
    system("cls");
   cout<<"\n\t *******************************************************";
    if(qianshu>=chushi.hwu[j-1].danjia)
   { cout<<"\n\t\t\t\t交易成功!"<<endl<<"\n\t\t\t\t您购买的商品为:"
         <<chushi.hwu[j-1].mingzi<<endl
      <<"\n\t\t\t\t找零:¥";
     qianshugbn(qianshu,chushi.hwu[j-1].danjia);
     cout<<endl<<"\n\t\t\t\t谢谢惠顾!";
  shouhou.hwu[j-1].chuliang=shouhou.hwu[j-1].chuliang-1;
   }
  else
   cout<<"\n\t\t\t\t你所投的金额不足!"<<endl<<"\n\t\t\t\t返回请按任意键!";
     cout<<"\n\n\n\n\n\n\n\n\n"<<"\t";
  cout<<" ********************************************************";
  cout<<"\n\t\t\t\t"<<"欢迎光临!";
  cin.get();
}
void chaxun()
{  string ch;
    int i,m;
 cout.setf(ios::left);
    cout<<"\n\t *******************************************************";
 cout<<"\n\t\t\t\t请选择查询种类!"<<endl
       <<"\n\t\t\t\t1.查看商品存储" <<endl
    <<"\n\t\t\t\t2.管理员操作"<<endl;
    cout<<"\n\t\t\t\t您选择的操作序号为:";
 cin>>i;
     cout<<"\n\t\t\t\t确认请按确认键!";
     cout<<"\n\n\n\n\n\n\n\n\n"<<"\t";
  cout<<" ********************************************************";
  cout<<"\n\t\t\t\t"<<"欢迎光临!";
   getline(cin,ch);
      system("cls");
     cout<<"\n\t  ************************************************************\n";
 switch(i)
 {  case 1: cout<<"\n\t\t\t\t售货机中现存商品量为:";
            for(m=0;m<3;m++)
        cout<<"\n\t\t\t\t"<<shouhou.hwu[m].mingzi<<"  "<<shouhou.hwu[m].chuliang<<"  "<<endl;
      cout<<"\n\t\t\t\t返回请按确认键!";
             break;
    case 2: cout<<"\n\t\t\t\t输入密码:";
               cin.get();
         cin>>ch;
         if(ch==mima)
      { cout<<"\t\t货物销售情况:"<<endl;
        cout<<"\n\t\t\t商品名称\t\t"<<"销售量\n\n";
        for(int i=0;i<3;i++)
     {
            cout<<"\t\t\t"<<chushi.hwu[i].mingzi<<"\t\t\t  "
           <<(chushi.hwu[i].chuliang-shouhou.hwu[i].chuliang)<<endl;
     }
       cout<<"\n\t\t资金情况:"<<endl;
    cout<<"\n\t售前:面值\t\t总数\t售后:面值\t\t总数\n\n";
       for(i=0;i<4;i++)
    { cout<<"\t\t"<<chushi.hbi[i].mianzhi<<"\t\t"<<chushi.hbi[i].gesh;
         cout<<"\t\t"<<chushi.hbi[i].mianzhi<<"\t\t"<<shouhou.hbi[i].gesh<<endl;
    }
    cout<<"\n\n\t";
    cout<<" ********************************************************************";
             cout<<"\n\t\t\t\t  "<<"欢迎光临!";
      }
         else
        cout<<"\n\t\t\t\t您的输入有误!\n\n\t\t\t\t返回请按确认键!";
       default:
       break;
 }
   
      getline(cin,ch);
 
}
int main()
{   int i;
    string ch;
    chushihua();
 int constr=1;
    while(constr)
 {  cout<<"\n\t**************************************************\n";
    cout<<"\n\t\t\t请选择服务!"<<endl<<"\n\t\t\t1.购买商品"
     <<endl<<"\n\t\t\t2.查询"<<endl;
    cout<<"\n\t\t\t您选择的操作序号为:";
   cin>>i;
   cout<<"\n\t\t\t确认请按确认键!";
     cout<<"\n\n\n\n\n\n"<<"\t";
  cout<<"***************************************************";
  cout<<"\n\t\t\t"<<"欢迎光临!";
   getline(cin,ch);
      system("cls");
    switch(i)
    {
       case 1:xiaoshou();break;
       case 2:chaxun();break;
    default: constr= 0; break;
    }
  system("cls");
  }
   return 0;
}

至于初始化嘛,这里就不给了,需要的人自己设置吧~!

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【课程设计——自动售货机C++】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——