简易超市收款系统 <三>
新增功能
可以允许用户客户支付欧元或人民币 系统将自动转兑换为美元
以下是代码
本代码包含两个文件
一个文件是
CashRegister.java
/** * ***********CopyRight************** *-------Powered by QianXunNet----- *-----Version 1.3 2009-01-23----- *----- Design BY NiChao ----- *^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */package chap04;public class CopyOfCashRegister { //申明常量 public static final double quarter_value=0.25; //25美分的货币折合成美元的价值 public static final double half_value=0.5; //50美分 public static final double min_value=0.01; //1美分 //汇率 public static final double rmb_to_dor=0.21; //人民币换美元 public static final double eur_to_dor=1.13; //欧元换美元 private double purchase; //应收金额 private double payment; //实际收取 private double change; //找零 //分类找零 private int change_dollors; private int change_quarter; private int change_half; private int change_min; private int times=0; //用来计数 货物输入次数 //类的方法 public int getTimes() { return times; } //逐次结算总金额 public void recordParchase(double money){ this.purchase=this.purchase+money; this.times++; } //将其他花币兑换成美元 initmoney 原始钱数 kind 兑换种类 public double exchange(double initMoney, int kind){ if(1 == kind) //人民币兑换美元 { return initMoney*rmb_to_dor; } else if(2 == kind) { return initMoney*eur_to_dor; } else return initMoney; //美元换自己 } //接受客户付款 有两种付款方式 //直接付出全部金额 ( 方法重载) public void recordPayment(double payMent){ this.payment=payMent; } public void recordPayment(double dollers,double quarter ,double half ,double min ){ //分别输入客户给的各种货币 美元 四分之美元 半美元 以及1美分的个数 //计算客户支付的总的钱数 payment this.payment=this.payment+dollers+quarter*quarter_value+half*half_value+min*min_value; } //找零方法 public void giveChange(){ this.change=this.payment-this.purchase; //现将找零乘上100 int change_temp =(int) Math.round(this.change*100); //美元数 this.change_dollors=change_temp/100; //1/2美元数 this.change_half=(change_temp-this.change_dollors*100)/50; //1/4美元数 this.change_quarter = (change_temp-this.change_dollors*100-this.change_half*50)/25; //没分数 this.change_min = (change_temp-this.change_dollors*100-this.change_half*50-this.change_quarter*25); } public int getChange_dollors() { return change_dollors; } public void setChange_dollors(int change_dollors) { this.change_dollors = change_dollors; } public int getChange_quarter() { return change_quarter; } public void setChange_quarter(int change_quarter) { this.change_quarter = change_quarter; } public int getChange_half() { return change_half; } public void setChange_half(int change_half) { this.change_half = change_half; } public int getChange_min() { return change_min; } public void setChange_min(int change_min) { this.change_min = change_min; } public double getChange() { return change; } public void setChange(double change) { this.change = change; } }
还有一个文件是
CashRegisterTester.java
/** * ***********CopyRight************** *-------Powered by QianXunNet----- *-----Version 1.3 2009-01-23----- *----- Design BY NiChao ----- *^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */package chap04;import java.io.*;import java.util.*;import chap04.CopyOfCashRegister;public class CopyOfCashRegisterTester { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("----------------简易超市收款系统----------------"); System.out.println("-------------感谢您的使用 祝您工作顺利------------"); System.out.println("输入0开始工作"); Scanner cin=new Scanner(System.in); while(cin.nextInt()==0){ System.out.print("请输入客户购物的总金额……"); CopyOfCashRegister case1 = new CopyOfCashRegister(); int input =1; while(input == 1) { double p =cin.nextDouble(); //输入客户支付的金额 case1.recordParchase(p); System.out.print("input continue? 0:结束 1:继续"); input=cin.nextInt(); } //做出选择 纯美元支付还是美元美分共同支付 System.out.println("总计输入"+case1.getTimes()+"次"); System.out.println("1.多种货币支付 2.单一货币支付"); int a=cin.nextInt(); while(a!=1&&a!=2 ) {System.out.print("选择有误请重新选择……");System.out.println("1.多种货币支付 2.单一货币支付");a=cin.nextInt();} if(1 == a){ System.out.println("请输入各种货币的数量"); System.out.println("美元数: "); double d=cin.nextDouble(); System.out.println("25美分数量: "); double q=cin.nextDouble(); System.out.println("50美分数量: "); double h=cin.nextDouble(); System.out.println("1美分数量: "); double m=cin.nextDouble(); case1.recordPayment(d,q,h,m); } else if( 2== a){ System.out.println("客户选择了单一一种美元: "); System.out.println("请选择你支付的货币种类 1.人民币 2.欧元 3.美元 "); int kind1=cin.nextInt(); System.out.println("请输入客户支付的钱数"); double d1=cin.nextDouble(); double d2=case1.exchange(d1, kind1); case1.recordPayment(d2); System.out.printf("客户支付的钱折合成美元是 %5.2f 美元",d2); } // 找零模块 case1.giveChange(); System.out.println("找零如下:"); System.out.printf("总计找零 %5.2f",case1.getChange()); System.out.println("支付如下 "); System.out.println(case1.getChange_dollors()+"个美元"); System.out.println(case1.getChange_half()+"个1/2美元"); System.out.println(case1.getChange_quarter()+"个1/4美元"); System.out.println(case1.getChange_min()+"个美分"); } } }
运行实例如下
----------------简易超市收款系统----------------
-------------感谢您的使用 祝您工作顺利------------
输入0开始工作
0
请输入客户购物的总金额……45
input continue? 0:结束 1:继续1
23.34
input continue? 0:结束 1:继续0
总计输入2次
1.多种货币支付 2.单一货币支付
2
客户选择了单一一种美元:
请选择你支付的货币种类 1.人民币 2.欧元 3.美元
2
请输入客户支付的钱数
64.88
客户支付的钱折合成美元是 73.31 美元找零如下:
总计找零 4.97支付如下
4个美元
1个1/2美元
1个1/4美元
22个美分
--------------------------