Java基于控制台的商城完整版(2022.5.27)

package com.oop1.Test;

import java.time.LocalTime;

/*
    订单类
    用于管理用户的订单
    订单类(Order):
    a) 订单号(Pro_id)
    b) 订单总额(Pro_balance)
    c) 订单项列表(Pro_details)
 */
public class Order {

//    private String Pro_id;   // 订单编号(id)
    private final OrderDetails[] Pro_details; // OrderDetails:订单列表类 订单详情列表
    private double Pro_balance; // 订单总额

    // 定义有参构造方法,并且传入订单id
//    public Order(String pro_id){
        this.Pro_id = pro_id;
//        this.Pro_details = new OrderDetails[3];
//    }

    public Order(){
        this.Pro_details = new OrderDetails[3];
    }
    // 生成 getter、setter 方法


//    public String getPro_id() {
//        return Pro_id;
//    }
//
//    public void setPro_id(String pro_id) {
//        Pro_id = pro_id;
//    }

    public double getPro_balance() {
        probAlan();
        return Pro_balance;
    }
    // 定义一个订单总额的方法 probAlan
    public void probAlan() {
        // 定义一个变量用于接收订单总额
        double balance = 0;
        // 使用 for 循环进行输出 小于订单类表的长度
        for (int i = 0; i < Pro_details.length ; i++) {
            // 用数量乘以商品和价格并且赋值给 balance
            balance += Pro_details[i].getNums() * Pro_details[i].getProject().getPro_price();
        }
        // 初始化当前订单列表的值
        this.Pro_balance = balance;
    }

    public void setPro_balance(double pro_balance) {
        Pro_balance = pro_balance;
    }

    public OrderDetails[] getPro_details() {
        return Pro_details;
    }

    public void setPro_details(OrderDetails pro_details,int idx) {
        this.Pro_details[idx] = pro_details;
    }
}
package com.oop1.Test;
/*
    主要编写用户操作订单
 */
public class OrderDemo1 {
    public void testOrder(Order order){

        System.out.println("===================\t商品订单\t===================");
//        Order order1 = new Order(order.getPro_id());
//        for (OrderDetails pro_detail : order.getPro_details()) {
//            System.out.println("订单:"+pro_detail.getProject().getPro_name()+"内容\n");
//            for (String s : pro_detail.getPro_id()) {
//                System.out.println(s);
//            }
//            System.out.println("=========================================================");
//        }

//        System.out.println("订单编号:"+order.getPro_id());
        System.out.println("商品名称\t购买数量\t商品价格\t");
        // 获取订单列表使用 get 方法
        OrderDetails[] details = order.getPro_details();
        // 定义一个空的变量 line 用于接收订单信息
        String line = null;
        for (int i = 0; i < details.length ; ++i) {
            line = details[i].getProject().getPro_name()+"\t"+details[i].getNums()+"\t"+details[i].getProject().getPro_price();
            System.out.println("================\t"+line+"\t==================");
            for (String s : details[i].getPro_id()) {
                System.out.println(s);
            }
        }
        System.out.println("商品总额为:"+order.getPro_balance());
        System.out.println("-------------------------------------------");
    }
}
package com.oop1.Test;

import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/*
    订单详情类   订单项类(OrderItem):
                    a) 商品(Project)
                    b) 购买数量(nums)
    方便用户查询订单
 */
public class OrderDetails {
    // 把那个商品类拿过来进行封装
    private Project project;
    // 定义一个变量,用于存储订单的数量信息
    private int nums;

    private List<String> Pro_id=new ArrayList<>();   // 订单编号(id)



    public List<String> getPro_id() {
        return Pro_id;
    }

//    public void setPro_id(String pro_id) {
//        Pro_id = pro_id;
//    }


    // 定义有参构造,方便传参;并把上边的商品类以及订单信息定义为形参
    public OrderDetails(Project project, int nums) {
        // 并且进行初始化值为动态的
        this.nums = nums;
        this.project = project;

        for (int i = 0; i < nums; i++) {
            this.Pro_id.add(getRandomString(20));
        }
    }

    //length用户要求产生字符串的长度
    public static String getRandomString(int length){
        String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random=new Random();
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<length;i++){
            int number=random.nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }

    // 生成 getter、setter 方法方便调用以及传参
    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    public int getNums() {
        return nums;
    }

    public void setNums(int nums) {
        this.nums = nums;
    }
}
package com.oop1.Test;

/*
    商品类
 */
public class Project {

    private String Pro_id;   // 商品编号(id)
    private String Pro_name;   // 商品名称
    private double Pro_price;  // 商品价格
    private int Pro_quantity;  // 商品数量
    private int Pro_pno; // 存储编号
    // 创建有参构造方便传参调用
    public Project(int pro_pno,String pro_id,String pro_name,double pro_price,int pro_quantity){
        this.Pro_id = pro_id;
        this.Pro_name = pro_name;
        this.Pro_price = pro_price;
        this.Pro_quantity = pro_quantity;
        this.Pro_pno = pro_pno;
    }
    // 生成 getter、setter方法方便调用以及传参
    public String getPro_id() {
        return Pro_id;
    }

    public void setPro_id(String pro_id) {
        Pro_id = pro_id;
    }

    public String getPro_name() {
        return Pro_name;
    }

    public void setPro_name(String pro_name) {
        Pro_name = pro_name;
    }

    public double getPro_price() {
        return Pro_price;
    }

    public void setPro_price(double pro_price) {
        Pro_price = pro_price;
    }

    public int getPro_quantity() {
        return Pro_quantity;
    }

    public void setPro_quantity(int pro_quantity) {
        Pro_quantity = pro_quantity;
    }

    public int getPro_pno() {
        return Pro_pno;
    }

    public void setPro_pno(int pro_pno) {
        Pro_pno = pro_pno;
    }

    @Override
    public String toString() {
        return "Project{" +
                "Pro_id='" + Pro_id + '\'' +
                ", Pro_name='" + Pro_name + '\'' +
                ", Pro_price=" + Pro_price +
                ", Pro_quantity=" + Pro_quantity +
                ", Pro_pno=" + Pro_pno +
                '}';
    }
}
package com.oop1.Test;

import com.sun.org.apache.xpath.internal.operations.Or;

import java.time.LocalTime;
import java.util.Scanner;

/*
   购买商品
 */
public class ProjectDemo1 {

    public void testProject(Project[] projects, Order orders) {

        Scanner scanner = new Scanner(System.in);
        OrderDetails orderDetails = null;
//        orders= new Order("Pro_id-" + LocalTime.now().toString());
//        Order order = new Order("Pro_id-" + LocalTime.now().toString());

        for (int i = 0; i < projects.length; i++) {
            System.out.print("请选择需要购买的商品编号:");
            int bno = scanner.nextInt();
            if (bno > projects.length) {
                System.out.println("商品不存在");
                i--;
                continue;  //
            }
            System.out.print("购买数量:");
            int num = scanner.nextInt();

            if (num > projects[bno - 1].getPro_quantity()) {
                System.out.println("数量不足");
                i--;
                continue;
            }
//            减少数量
            projects[bno - 1].setPro_quantity(projects[bno - 1].getPro_quantity()-num);
            orderDetails = new OrderDetails(projects[bno - 1], num);
            orders.setPro_details(orderDetails, i);
            System.out.println("请继续购买图书...");
        }
//        scanner.close();
    }
}
package com.oop1.Test;

import java.util.ArrayList;
import java.util.List;

/*
   商品类
 */
public class ProjectDemo2 {
    public void project(Project[] project){
//        List<Project> list = new ArrayList<>();
//        list.add(new Project(1,"100001","iphone13",5999.0,10));
//        list.add(new Project(2,"100002","iphone13pro",7999.0,10));
//        list.add(new Project(3,"100003","iphone13proMax",9999.0,10));
        project[0] = new Project(1,"100001","iphone13",5999.0,10);
        project[1] = new Project(2,"100002","iphone13pro",7999.0,10);
        project[2] = new Project(3,"100003","iphone13proMax",9999.0,10);
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println();
//        }
        System.out.println("===================\t图书\t===================");
        System.out.println("编号\t\nBST\t名称\t价格\t库存");
        String li = null;
        for (int i = 0; i < project.length ; ++i) {
            li = project[i].getPro_pno() + "\t" + project[i].getPro_id() + "\t"
                    + project[i].getPro_name() + "\t" + project[i].getPro_price()
                    + "\t" + project[i].getPro_quantity();
            System.out.println(li);

        }
        System.out.println("==================================");
    }
}
package com.oop1.Test;

/*
   商品类
 */
public class ProjectDemo3 {
    //获取库存
    public void inventory(Project[] project){
//        List<Project> list = new ArrayList<>();
//        list.add(new Project(1,"100001","iphone13",5999.0,10));
//        list.add(new Project(2,"100002","iphone13pro",7999.0,10));
//        list.add(new Project(3,"100003","iphone13proMax",9999.0,10));
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println();
//        }
        System.out.println("===================\t图书\t===================");
        System.out.println("编号\t\nBST\t名称\t价格\t库存");
        String li = null;
        for (int i = 0; i < project.length ; ++i) {
            li = project[i].getPro_pno() + "\t" + project[i].getPro_id() + "\t"
                    + project[i].getPro_name() + "\t" + project[i].getPro_price()
                    + "\t" + project[i].getPro_quantity();
            System.out.println(li);

        }
        System.out.println("==================================");
    }
}
package com.oop1.Test;

import java.util.Objects;
import java.util.Scanner;

public class ProjectDemo4 {

    public void selectId(Order order) {
        Scanner scanner = new Scanner(System.in);
        String s=null;

        while (!Objects.equals(s, "0")){
            Boolean is=false;
            System.out.println("输入订单号进行查询 输入0退出...");
            s = scanner.next();
            for (OrderDetails pro_detail : order.getPro_details()) {
                for (String s1 : pro_detail.getPro_id()) {
                    if(s.equals(s1)){
//                        System.out.println("===================\t图书\t===================");
//                        System.out.println("编号\t\nBST\t名称\t价格\t库存");
                        System.out.println("找到商品:"+pro_detail.getProject().getPro_name());

                        is=true;
                        break;
                    }
                }
            }
            if(!is){
                System.out.println("未查询到");
            }
        }

    }
}
package com.oop1.Test;

import com.sun.org.apache.xpath.internal.operations.Or;

import java.time.LocalTime;
import java.util.Scanner;

public class TestProjectApplication {
    // 商品测试类
    public static void main(String[] args) {
        Project[] projects = new Project[3];
        Order order=new Order();
//        project(projects);
//        Order order = testProject(projects);
//        testOrder(order);
        ProjectDemo2 projectDemo2 = new ProjectDemo2();
        projectDemo2.project(projects);
        ProjectDemo1 projectDemo1 = new ProjectDemo1();
        projectDemo1.testProject(projects,order);
        ProjectDemo3 projectDemo3 = new ProjectDemo3();
        projectDemo3.inventory(projects);

        OrderDemo1 orderDemo1=new OrderDemo1();
        orderDemo1.testOrder(order);
        ProjectDemo4 projectDemo4 = new ProjectDemo4();
        projectDemo4.selectId(order);
        projects.clone();

    }

//    public static void testOrder(Order order){
//        System.out.println("===================\t商品订单\t===================");
//        System.out.println("订单编号:"+order.getPro_id());
//        System.out.println("商品名称\t购买数量\t商品价格\t");
//        // 获取订单列表使用 get 方法
//        OrderDetails[] details = order.getPro_details();
//        // 定义一个空的变量 line 用于接收订单信息
//        String line = null;
//        for (int i = 0; i < details.length ; ++i) {
//            line = details[i].getProject().getPro_name()+"\t"+details[i].getNums()+"\t"+details[i].getProject().getPro_price();
//            System.out.println(line);
//        }
//        System.out.println("商品总额为:"+order.getPro_balance());
//        System.out.println("-------------------------------------------");
//    }
//
//    public static Order testProject(Project[] projects){
//
//        Scanner scanner = new Scanner(System.in);
//        OrderDetails orderDetails = null;
//        Order order = new Order("Pro_id-"+ LocalTime.now().toString());
//        for (int i = 0; i < projects.length ; i++) {
//            System.out.print("请选择需要购买的商品编号:");
//            int bno = scanner.nextInt();
//            System.out.print("购买数量:");
//            int num = scanner.nextInt();
//            orderDetails = new OrderDetails(projects[bno-1],num);
//            order.setPro_details(orderDetails,i);
//            System.out.println("请继续购买图书...");
//        }
//        scanner.close();
//        return order;
//    }
//
//    public static void project(Project[] project){
//        project[0] = new Project(1,"100001","iphone13",5999.0,12);
//        project[1] = new Project(2,"100002","iphone13pro",7999.0,10);
//        project[2] = new Project(3,"100003","iphone13proMax",9999.0,122);
//        System.out.println("===================\t图书\t===================");
//        System.out.println("编号\t\nBST\t名称\t价格\t库存");
//        String li = null;
//        for (int i = 0; i < project.length ; ++i) {
//            li = project[i].getPro_pno() + "\t" + project[i].getPro_id() + "\t"
//                    + project[i].getPro_name() + "\t" + project[i].getPro_price()
//                    + "\t" + project[i].getPro_quantity();
//            System.out.println(li);
//
//        }
//        System.out.println("==================================");
//    }


}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值