一、购物系统程序终章
/* 以Java开发规范来修改的Pay类 */ import java.util.Scanner; public class MyPay extends MyOrder{ //私有化所有属性 private String username; private double money; //生成无参构造函数 public MyPay() { //直接super(),调用父类的构造器 super(); } //生成有参构造函数,参数为账户名称username,账户余额money public MyPay(String username, double money) { this.username = username; this.money = money; } //用户输入账户名称和账户余额 public void myinput(){ Scanner scanner = new Scanner(System.in); System.out.println("请您输入付款帐户名称:"); this.username=scanner.next(); System.out.println("请您输入付款帐户余额:"); try{ this.money=scanner.nextDouble(); }catch(Exception e){ this.money=100; } } //重写Order中的pay_order方法 @Override public void pay_order(){ //实现支付的逻辑,判断当前的余额比订单大还是比订单小 if(this.money>this.getTotal()){ this.money=this.money-this.getTotal(); System.out.println("您购买成功!"); System.out.println(this.getName()); System.out.println(this.getPrice()); System.out.println(this.getNum()); System.out.println(this.getPeisong()); System.out.println(this.getTotal()); }else{ System.out.println("您购买失败!"); } } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } }
/* 以Java开发规范来修改的Order类 */ public class MyOrder extends MyGoods{ //只有私有成员变量total private double total=0; //订单关闭的状态 private boolean status=true; //生成无参构造函数 public MyOrder() { super(); } @Override protected final void make_order(double total){ //make_order方法生成定单,当前定单关闭 this.status=false; //产生定单号,定单号规定8位整数 long order_id=(int)(Math.random()*10000000+10000000); //立即购买的total有初始值为0,不立即购买的初始值是和值,和值来自于购物车的结果 if(this.total==0.0){ this.total=this.getNum()*this.getPrice(); }else{ this.total=total; } //格式化,保留两位小数 this.total=Double.parseDouble(String.format("%.2f",this.total)); //重写pay_order()方法 this.pay_order(); } protected void pay_order(){ //这个方法没有实现 } public double getTotal() { return total; } public boolean isStatus() { return status; } public void setStatus(boolean status) { this.status = status; } }
/* 以Java开发规范来修改的MyGoods类 */ import java.util.Scanner; public class MyGoods { //所有变量全部私有private private String name; private double price; private int num; private String peisong; private String small_pic; //产生无参构造函数 public MyGoods() { } //产生有参构造函数 public MyGoods(String name, double price, int num,String peisong) { this.name = name; this.price = price; this.num = num; this.peisong = peisong; } public void show(MyCart mycart){ //显示商品 System.out.println(this.name); System.out.println(this.price); System.out.println(this.num); System.out.println(this.peisong); //用户调整数量 System.out.println("请您输入购买商品的数量:"); Scanner scanner=new Scanner(System.in); //判断输入数据是否正确 while(true){ try{ //输入的数据传递给this.num this.num=scanner.nextInt(); //退出循环 break; }catch(Exception e){ System.out.println("输入有误!请重新输入!"); } } System.out.println("————————————————————————————————"); System.out.println("1——————————立即购买"); System.out.println("2——————————加入购物车"); System.out.println("————————————————————————————————"); System.out.println("请选择您的购买意向,输入序号"); try{ int no=scanner.nextInt(); switch(no){ case 1: this.buy(); break; case 2: this.addcar(mycart); break; } }catch(Exception e) { //默认方法 this.buy(); } } //立即购买的方法 public void buy(){ System.out.println("您购买了这个商品!"); //调用Order订单类的make_order()方法,重写 this.make_order(0.0); } //加入购物车的方法 public void addcar(MyCart mycart){ mycart.addCart(this); System.out.println("您已经把商品加入购物车!"); } protected void make_order(double total){ } public String getName(){ return this.name; } public void setName(String name) { this.name=name; } public String getPeisong() { return peisong; } public void setPeisong(String peisong) { this.peisong = peisong; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getSmall_pic() { return small_pic; } public void setSmall_pic(String small_pic) { this.small_pic = small_pic; } @Override public String toString() { return "MyGoods{" + "name='" + name + '\'' + ", price=" + price + ", num=" + num + ", peisong=" + peisong + '\'' + ", small_pic='" + small_pic + '\'' + '}'; } }
/* 购物车的类 */ import java.util.Scanner; public class MyCart { //私有化属性 private MyPay[] carts=new MyPay[5]; //做getter和setter方法 public MyPay[] getCart() { return carts; } //生成订单的功能 public void createOrder(){ System.out.println("现在是否生成订单?(y/n)"); Scanner scanner=new Scanner(System.in); //用户输入y或n String answer=scanner.next(); //用户输入的内容是y还是n,字母考虑大小写 if(answer.toLowerCase().equals("y")){ //求价格总和,求1-100的和 ,和值定义在循环外 double sum=0; //记录商品的索引 int index=0; for(MyPay mygood:carts){ if(mygood!=null){ sum+=mygood.getNum()*mygood.getPrice(); index++; } } //调用订单类的make_order方法 carts[index].make_order(sum); }else{ } } public void addCart(MyGoods cart) { for(int i=0;i<5;i++){ if (carts[i]==null){ carts[i]=(MyPay)cart; //发现一个数据的商品为空,加入后直接退出循环,后面的商品不需要判空 break; } } //当加入购物车结束后,需要判断是否进行订单关闭的结算 this.createOrder(); } }
/* 商品构模块首页 开发者:wx 版本:v1.3 */ import java.util.Scanner; public class MyPage { public static void main(String[] args) { MyPay[] mypays=new MyPay[5]; //名称数组 String[] names= {"伤寒论张仲景正版原著中医书籍大全白话彩图典藏版", "鬼谷子狼道墨菲定律断舍离说话技巧", "红岩书正版", "镜花缘 李汝珍著 ", "读心术正版心理学书" }; //价格数组 Double[] prices= {9.8,178.0,21.6,18.9,8.8}; //配送数组 String[] peisongs= {"江苏南京至北京市昌平区", "河北廊坊至北京市昌平区", "河北廊坊至北京市昌平区", "天猫优仓天津1仓至北京市昌平区", "北京至北京市昌平区" }; //实例化购物车 MyCart mycart=new MyCart(); //显示商品列表的菜单 System.out.println("————————————————————————————————"); System.out.println(" 幸运购物系统"); System.out.println(" 版本:v1.3"); System.out.println("————————————————————————————————"); for(int i=0;i<5;i++){ mypays[i]=new MyPay(); mypays[i].setName(names[i]); mypays[i].setPrice(prices[i]); mypays[i].setPeisong(peisongs[i]); mypays[i].setNum(1); print_goods(i+1,mypays[i].getName(),mypays[i].getPrice()); } System.out.println("————————————————————————————————"); //接收用户输入 Scanner scanner = new Scanner(System.in); //接收回车 scanner.nextLine(); //提示用户登录 System.out.println("请您进行用户登录!"); mypays[0].myinput(); for(int j=1;j<5;j++){ mypays[j].setUsername(mypays[0].getUsername()); mypays[j].setMoney(mypays[0].getMoney()); } int no=1; do{ //try——catch防止报错 System.out.println("请您输入购买商品的编号:"); try{ no=scanner.nextInt(); mypays[no-1].show(mycart); }catch(Exception e){ System.out.println("输入有误!请重新输入!"); } } while(mypays[no-1].isStatus()); //主类打印购物车mycart中其它商品,使用增强for for(MyPay mygood:mycart.getCart()){ if(mygood!=null){ System.out.println(mygood.getName()); System.out.println(mygood.getPrice()); System.out.println(mygood.getNum()); System.out.println(mygood.getPeisong()); } } } public static void print_goods(int i,String name,double price){ System.out.println( i+"-"+name+"\t"+price); } }
二、运行结果
需要完整版资源请访问博主个人码云地址:JavaSS: Java实训