zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java实验报告:实验一 基于控制台的购书系统

JAVA系统 基于 实验 控制台 实验报告
2023-09-27 14:28:32 时间

注:博主为初学java,此实验报告代码仅供参考,如有错误,还望指正。

水平有限,仅供参考






实验目的及要求
1.理解和掌握面向对象的设计程序
2.会用类图进行面向对象设计
3.掌握封装的实现及好处
4.包和访问控制修饰符的使用
实验内容

1.输出所有图书的信息:包括每本书的编号,书名,单价,库存
2.顾客购买书:根据提示输入图书编号来购买书,并根据提示输入购买书的数量
3.购买完毕后输出顾客的订单信息:包括订单号,订单明细,订单总额

BuyBooksSystem.java

package com.taor;
import java.util.ArrayList; // 引入 ArrayList 类
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.InputMismatchException;

// ...

class Book {
    // 图书编号
    private String number;
    // 图书名称
    private String name;
    // 图书单价
    private int price;
    // 库存数量
    private int stockNumber;

    public Book() {
        super();
    }

    public Book(String number, String name, int price, int stockNumber) {
        super();
        this.number = number;
        this.name = name;
        this.price = price;
        this.stockNumber = stockNumber;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getStockNumber() {
        return stockNumber;
    }

    public void setStockNumber(int stockNumber) {
        this.stockNumber = stockNumber;
    }

    @Override
    public String toString() {
        return "编号:" + number + " 书名:" + name + " 价格:" + price + " 库存量:" + stockNumber;
    }

}




    //Order.java
class Order {
    // 订单号
    private long OrderNumber;
    // 订单细节:书本编号、书本名字、单价
    private String OrderInfo;
    // 订单总额
    private int OrderSum;
    // 订单日期
    private String OrderData;

    public Order() {
        super();
    }

    public Order(long orderNumber, String orderInfo, int orderSum, String orderData) {
        super();
        OrderNumber = orderNumber;
        OrderInfo = orderInfo;
        OrderSum = orderSum;
        OrderData = orderData;
    }

    public long getOrderNumber() {
        return OrderNumber;
    }

    public void setOrderNumber(long orderNumber) {
        OrderNumber = orderNumber;
    }

    public String getOrderInfo() {
        return OrderInfo;
    }

    public void setOrderInfo(String orderInfo) {
        OrderInfo = orderInfo;
    }

    public int getOrderSum() {
        return OrderSum;
    }

    public void setOrderSum(int orderSum) {
        OrderSum = orderSum;
    }

    public String getOrderData() {
        return OrderData;
    }

    public void setOrderData(String orderData) {
        OrderData = orderData;
    }

    @Override
    public String toString() {
        return "个人订单" + " " + "订单编号:" + OrderNumber + " " + OrderInfo + " " + "图书总价:" + OrderSum
                + " " + "创建时间:" + OrderData;
    }
}






public class BuyBooksSystem {
    ArrayList<Book> list = new ArrayList<Book>();
    //存放书本信息
    Book[] arrBook = new Book[20];          // 书籍不超过20,在InputBookInfo()函数中添加书籍
    //存放订单信息
    Order[] arrOrder = new Order[20];       // 订单不能超过20,createOrder()自动生成订单
    //订单量
    int cnt = 0;
// ................................................................ 主程序..........................................//
    public static void main(String[] args) {
        BuyBooksSystem pbs = new BuyBooksSystem();
        //存入图书信息
        pbs.InputBookInfo();
        //购书系统主页面
        pbs.mainPage();
    }

    /**
     * 购书系统主页面
     */
    public void mainPage(){
        Scanner sc = new Scanner(System.in);
        for(int i = 0; i < 100; i++){
            System.out.println("*****************************");
            System.out.println("\t通理工购书系统");
            System.out.println("\t1.图书信息");
            System.out.println("\t2.购买图书");
            System.out.println("\t3.订单信息");
            System.out.println("\t4.退出系统");
            System.out.print("\t请选择你需要的业务:");
            try{
                int number = sc.nextInt();
                switch (number) {
                    case 1:
                        //输出图书信息
                        bookInfo();
                        break;
                    case 2:
                        //购买图书
                        bookBought();
                        break;
                    case 3:
                        lookOrder();
                        break;
                    case 4:
                        System.out.println("\n\n\n\n退出成功!");
                        return;
                    default:
                        System.out.println("\n\n\n\n\n\n\n\n请输入正确的数字!");
                        break;
                }
            }catch(InputMismatchException e){
                System.out.println("\n\n\n\n\n\n\n\n输入有误,请重新输入!");
                sc = new Scanner(System.in);
            }
        }
    }



    /**
     * 存入图书信息
     */
    public void InputBookInfo(){

        Book book1 = new Book("0001","红楼梦",298,999);
        Book book2 = new Book("0002","西游记",49,999);
        Book book3 = new Book("0003","三国演义",98,999);
        Book book4 = new Book("0004","水浒传",128,999);
        Book book5 = new Book("0005","鲁滨逊漂流记",68,999);

        arrBook[0] = book1;
        arrBook[1] = book2;
        arrBook[2] = book3;
        arrBook[3] = book4;
        arrBook[4] = book5;

        list.add(arrBook[0]);
        list.add(arrBook[1]);
        list.add(arrBook[2]);
        list.add(arrBook[3]);
        list.add(arrBook[4]);


    }

    /**
     * 输出图书信息
     */
    public void bookInfo(){
        System.out.println("\n\n\n\n\n\n\n\n");
        for(int i = 0; i < list.size(); i++){
            if(list.get(i) != null){
                System.out.println(list.get(i));
            }
        }
    }

    /**
     * 购买图书
     */
    public void bookBought(){
        int flag = 0;  // 没买到书
        Scanner sc = new Scanner(System.in);
        while(flag == 0) {
            System.out.print("请输入您需要购买的图书编号:(输入 q 退出购买界面) ");
            String number = sc.next();
            if(number.equals("q"))       // 按q退出购买
            {
                System.out.println("\n\n\n\n\n\n\n\n");
                break;
            }
            if(number.length() == 4){  // 判断输入是否为正确的书号
                for (int n = 0; n < list.size(); n++){
                    if(number.equals(arrBook[n].getNumber()))
                    {
                        flag = 1;   // 找到
                        break;
                    }
                }
            }
            if(number.length() != 4 || flag == 0) {
                System.out.println("输入错误,请输入正确的图书编号");
                sc = new Scanner(System.in);
                continue;
            }

            for(int j = 0; j < list.size(); j++){
                if(number.equals(arrBook[j].getNumber())){
                    System.out.println(arrBook[j]);
                    System.out.print("请输入您需要购买的数量:");
                    int boughtNumber = sc.nextInt();
                    //当库存数量大于需要购买数量的时候可以购买
                    if(arrBook[j].getStockNumber() > boughtNumber && arrBook[j].getStockNumber() > 0){
                        //修改库存
                        arrBook[j].setStockNumber(arrBook[j].getStockNumber() - boughtNumber);
                        //生成订单
                        createOrder(cnt++,arrBook[j],boughtNumber);
                        break;
                    }else{
                        System.out.println("超过可购买数量!请重新购买!");
                        break;
                    }
                }
            }

        }
    }

    /**
     * 生成订单
     */
    public void createOrder(int i,Book arr,int boughtNumber){

        long orderNumber = i + 10001;
        int OrderSum = arr.getPrice() * boughtNumber;
        SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String OrderData = date.format(new Date());
        String OrderInfo = "图书编号:" + arr.getNumber() + " "+ "图书名:" + arr.getName() + " " + "图书价格:" + arr.getPrice();
        Order order = new Order(orderNumber,OrderInfo,OrderSum,OrderData);
        arrOrder[i] = order;
        System.out.println("订单已提交!");
        System.out.println("订单号:" + orderNumber + " " + OrderInfo + " " + "订单金额:" + OrderSum + " " + "订单生成时间:" + OrderData);
    }

    /**
     * 查看订单
     */
    public void lookOrder(){
        for(int i = 0; i < cnt; i++){
            if(arrOrder[i] != null){
                System.out.println(arrOrder[i]);
            }
        }
    }

};