Java学习:集合练习

本文介绍了使用Java集合和面向对象编程实现的两个系统:吃货联盟订餐系统和图书管理系统。系统分别包含了菜单类、订餐类、图书类以及各自的方法和测试类,展示了集合在实际应用中的运用。
摘要由CSDN通过智能技术生成

一.吃货联盟系统(集合+面向对象)

1.系统的菜单类

public class Menu {
    private String dishNames;	            //菜品名称
    private double prices ;					//菜品单价
    private int praiseNums;					//点赞数


    public Menu(String dishNames, double prices, int praiseNums) {
        this.dishNames = dishNames;
        this.prices = prices;
        this.praiseNums = praiseNums;
    }

    public Menu() {
    }

    public String getDishNames() {
        return dishNames;
    }

    public void setDishNames(String dishNames) {
        this.dishNames = dishNames;
    }

    public double getPrices() {
        return prices;
    }

    public void setPrices(double prices) {
        this.prices = prices;
    }

    public int getPraiseNums() {
        return praiseNums;
    }

    public void setPraiseNums(int praiseNums) {
        this.praiseNums = praiseNums;
    }
}

2.系统的订餐类

public class Order {
    private String names;//保存订餐人姓名
    private String dishMegs;// 保存所选菜品名
    private int dishNums;// 保存所选菜品份数
    private int times;// 保存送餐时间
    private String addresse;// 保存送餐地址
    private int states;// 保存订单状态:0表示已预订,1表示已完成
    private double sumPrices;// 保存订单的总金额

    public Order() {
    }

    public Order(String names, String dishMegs, int dishNums, int times, String addresse, int states, double sumPrices) {
        this.names = names;
        this.dishMegs = dishMegs;
        this.dishNums = dishNums;
        this.times = times;
        this.addresse = addresse;
        this.states = states;
        this.sumPrices = sumPrices;
    }


    public String getNames() {
        return names;
    }

    public void setNames(String names) {
        this.names = names;
    }

    public String getDishMegs() {
        return dishMegs;
    }

    public void setDishMegs(String dishMegs) {
        this.dishMegs = dishMegs;
    }

    public int getDishNums() {
        return dishNums;
    }

    public void setDishNums(int dishNums) {
        this.dishNums = dishNums;
    }

    public int getTimes() {
        return times;
    }

    public void setTimes(int times) {
        this.times = times;
    }

    public String getAddresse() {
        return addresse;
    }

    public void setAddresse(String addresse) {
        this.addresse = addresse;
    }

    public int getStates() {
        return states;
    }

    public void setStates(int states) {
        this.states = states;
    }

    public double getSumPrices() {
        return sumPrices;
    }

    public void setSumPrices(double sumPrices) {
        this.sumPrices = sumPrices;
    }

}

3.系统的方法类

import java.util.ArrayList;
import java.util.Scanner;

public class Method {


    public Method() {
    }

    Scanner sc = new Scanner(System.in);

    //初始化信息
    public void csh(ArrayList<Order> order, ArrayList<Menu> menu) {

        Order order1 = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);
        Order order2 = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);
        //将元素录入到order集合中
        order.add(order1);
        order.add(order2);


        Menu menu1 = new Menu("红烧带鱼", 40, 0);
        Menu menu2 = new Menu("鱼香肉丝", 20, 0);
        Menu menu3 = new Menu("时令鲜蔬", 10, 0);
        //将元素录入到menu集合中
        menu.add(menu1);
        menu.add(menu2);
        menu.add(menu3);

    }

    //功能菜单
    public void gncd() {
        System.out.println("************************");
        System.out.println("1、我要订餐");
        System.out.println("2、查看餐袋");
        System.out.println("3、签收订单");
        System.out.println("4、删除订单");
        System.out.println("5、我要点赞");
        System.out.println("6、退出系统");
        System.out.println("************************");
        System.out.print("请选择:");
    }

    //循环控制
    public void loopKZ(ArrayList<Order> order, ArrayList<Menu> menu) {
        int num = 1;// 用户输入0返回主菜单否则退出系统
        boolean isExit = false;// 标记用户是否退出系统,true为退出
        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎使用“吃货联盟订餐系统”");
        // 循环控制用户输入选择并执行
        do {
            gncd();
            num = sc.nextInt();

            switch (num) {
                case 1://我要订餐
                    CustomerOrders(order, menu);

                    break;
                case 2://查看餐袋
                    show(order);

                    break;
                case 3:// 签收订单
                    signIn(order);
                    break;
                case 4:// 删除订单
                    delete(order);

                    break;
                case 5:// 我要点赞
                    wellReceived(menu);
                    break;
                case 6:
                    isExit = true;
                    break;
            }
            num = loop(isExit, num);
        } while (num == 0);
    }

    //判断是否循环
    public int loop(boolean isExit, int num) {
        int x = num;
        if (!isExit) {
            System.out.print("输入0返回:");
            x = sc.nextInt();
        }
        return x;
    }

    //显示菜品信息
    public void showMenu(ArrayList<Menu> menu) {
        System.out.println("序号" + "\t" + "菜名" + "\t\t\t" + "单价" + "\t\t" + "点赞数");
        for (int j = 0; j < menu.size(); j++) {
            System.out.println((j + 1) + "\t" + menu.get(j).getDishNames() + "\t\t" + menu.get(j).getPrices() + "元" + "\t" + menu.get(j).getPraiseNums());
        }
    }

    //订餐功能
    public void CustomerOrders(ArrayList<Order> order, ArrayList<Menu> menu) {
        System.out.println("***我要订餐***");
        boolean isAdd = false;
        for (int i = 0; i < order.size(); i++) {
            showMenu(menu);
            System.out.print("请输入订餐人姓名:");
            String name = sc.next();
            System.out.print("请选择您要点的菜品编号:");
            int chooseDish = sc.nextInt();
//                if (chooseDish+1>3){
//                    break;
//                }
            //保存所选择的菜名
            String dishMeg = menu.get(chooseDish - 1).getDishNames();
            System.out.print("请选择您需要的份数:");
            int number = sc.nextInt();
            System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
            int time = sc.nextInt();
            while (time < 10 || time > 20) {
                System.out.print("您的输入有误,请输入10-20间的整数");
                time = sc.nextInt();
            }
            System.out.print("请输入送餐地址:");
            String address = sc.next();


            // 默认可以预定,不用写订单状态
            System.out.println("订餐成功!");
            System.out.println("您定的是:" + menu.get(chooseDish - 1).getDishNames() + number + "份");
            System.out.println("送餐时间:" + time + "点");
            double sumPrice = menu.get(chooseDish - 1).getPrices() * number;// 计算餐费
            double sendMoney = (sumPrice >= 50) ? 0 : 5;// 计算送餐费
            System.out.println("餐费:" + sumPrice + "元," + "送餐费" + sendMoney + "元," + "总计:"
                    + (sumPrice + sendMoney) + "元。");

            //将客户输入信息录入订单中

            Order order3 = new Order(name, dishMeg, number, time, address, 0, sumPrice);
            break;

        }

    }


    //查看餐袋

    public void show(ArrayList<Order> order) {
        System.out.println("***查看餐袋***");
        System.out.println("序号\t订餐人\t餐品名称\t餐品数量\t送餐时间\t送餐地址\t总金额\t订单状态");
        for (int i = 0; i < order.size(); i++) {
            if (order.get(i) != null) {
                String state = (order.get(i).getStates() == 0) ? "已预订" : "已完成";
                System.out.println((i + 1) + "\t" + order.get(i).getNames() + "\t\t" + order.get(i).getDishMegs() + "\t" + order.get(i).getDishMegs() + "份"
                        + "\t" + order.get(i).getTimes() + "\t" + order.get(i).getAddresse() + "\t\t" + order.get(i).getSumPrices() + "元" + "\t" + state);

            }
        }
    }

    // 签收订单
    public void signIn(ArrayList<Order> order) {
        System.out.println("***签收订单***");
        System.out.print("请选择要签收的订单序号:");
        int sign = sc.nextInt();
        if (order.get(sign - 1) == null && sign < order.size()) {
            System.out.println("未找到订单信息");
        } else if (order.get(sign - 1).getStates() == 0 && sign < order.size() && sign > 0) {
            order.get(sign - 1).setStates(1);
            System.out.println("订单签收成功!");
        } else if (order.get(sign - 1).getStates() == 1 && sign < order.size() && sign > 0) {
            System.out.println("您选择的订单已完成签收,不能再次签收!");
        }

    }

    // 删除订单

    public void delete(ArrayList<Order> order) {
        System.out.println("***删除订单***");
        System.out.print("请输入要删除的订单序号:");
        int delID = sc.nextInt();
        if ( delID >order.size()|| delID < 1) {
            System.out.println("未找到订单信息");
        } else if (delID<= order.size() && delID-1 > 0 && order.get(delID - 1).getStates() == 1) {
            order.remove(delID-1);
            show(order);
            System.out.println("删除订单成功!");
        } else if (order.get(delID - 1).getStates() == 0) {
            System.out.println("您选择的订单未签收,不能删除!");
        }
    }

    //菜品点赞
    public void wellReceived(ArrayList<Menu> menu) {
        System.out.println("***我要点赞***");
        showMenu(menu);
        System.out.print("请选择您要点赞的菜品序号:");
        int number = sc.nextInt();
        if (number > menu.size() || number < 0) {
            System.out.println("输入错误");
        } else {
            menu.get(number - 1).setPraiseNums(menu.get(number - 1).getPraiseNums() + 1);
            System.out.println("点赞成功");
        }
    }

    public void end() {
        System.out.println("谢谢惠顾,欢迎您再次使用!");
        sc.close();
    }


}

4.系统的测试类

    public static void main(String[] args) {
        ArrayList<Menu> menu=new ArrayList<>();
        ArrayList<Order> order=new ArrayList<>();

        //功能对象
        Method method = new Method();
        method.csh(order,menu);
        // 实现菜单切换
        method.loopKZ(order,menu);
        //结束控制
        method.end();
    }

二.图书管理系统(集合+面向对象)

1.系统的图书类


public class BookInformation {
    // 图书相关信息,最多只能存储6个图书信息
    String name; // 图书名称
    int state; // 借阅状态,0:可借阅 ;1:已借出
    int date ; // 借出日期
    int count; // 借出次数

    public BookInformation(String name, int state, int date, int count) {
        this.name = name;
        this.state = state;
        this.date = date;
        this.count = count;
    }

    public BookInformation() {
    }

    public String getName() {
        return name;
    }

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

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public int getDate() {
        return date;
    }

    public void setDate(int date) {
        this.date = date;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}

2.图书管理系统的方法类

import java.util.ArrayList;
import java.util.Scanner;

public class Method {

    Scanner input = new Scanner(System.in);

    //循环
    public void loopZong(ArrayList<BookInformation> book) {
        boolean flag = true;
        int num = -1;
        // 循环操作
        do {
            // 输出欢迎菜单
            cd();
            int choose = input.nextInt();
            switch (choose) {
                case 1:
                    //新增图书
                    addBook(book);
                    break;

                case 2:
                    showBook(book);
                    // 查看图书

                    break;

                case 3:
                    delete(book);
                    showBook(book);
                    // 删除图书
                    break;
                case 4:
                    // 借出图书
                    lend(book);
                    break;
                case 5:
                    // 归还图书
                    returnBook(book);
                    break;
                case 6:
                    // 退出图书
                    flag = false;
                    break;
                default:
                    flag = false;
                    break;
            }
            num = end(flag, num);
        } while (num == 0);

        System.out.println("谢谢使用!");

    }

    //菜单
    public void cd() {
        System.out.println("欢迎使用迷你图书管理器");
        System.out.println("-------------------------");
        System.out.println("1.新增图书");
        System.out.println("2.查看图书");
        System.out.println("3.删除图书");
        System.out.println("4.借出图书");
        System.out.println("5.归还图书");
        System.out.println("6.退出图书");
        System.out.println("-------------------------");

        System.out.println("请选择:");
    }

    public void info(ArrayList<BookInformation> list) {
        // 初始化第一本本图书
        BookInformation book1 = new BookInformation("罗马假日", 1, 1, 15);

        // 初始化第二本图书
        BookInformation book2 = new BookInformation("白雪公主", 0, 0, 12);

        // 初始化第三本图书
        BookInformation book3 = new BookInformation("葫芦兄弟", 0, 0, 30);


        //将元素放入集合中
        list.add(book1);
        list.add(book2);
        list.add(book3);
    }

    //新增图书

    public void addBook(ArrayList<BookInformation> book) {
        System.out.println("-->新增图书\n");
        System.out.println("请输入增加的图书名:");
        String BookName = input.next();

        // 判断添加书的书名是否重复
        boolean flag2 = false;

        // 循环查找图书馆里的可存放书的地方

        for (int i = 0; i < book.size(); i++) {
            if (book.get(i).getName().equals(BookName)) {
                System.out.println("该书已上架");
                flag2=true;
                break;
            }
        }
        if (!flag2) {
            BookInformation addBook = new BookInformation();
            addBook.setName(BookName);
            book.add(addBook);
            System.out.println("新增《" + BookName + "》成功!");
        }

        System.out.println("*****************************************");
    }

    //查看图书
    public void showBook(ArrayList<BookInformation> book) {
        System.out.println("-->查看图书\n");
        System.out.println("序号\t状态\t\t名称\t\t借出日期\t借出次数");
        for (int i = 0; i < book.size(); i++) {
                // 三目运算符
                String BookState = (book.get(i).getState() == 0) ? "可借阅" : "已借出";
                String dateStr = (book.get(i).getDate() == 0) ? "" : (book.get(i).getDate() + "日");
                System.out.println(
                        (i + 1) + "\t" + BookState + "\t" + book.get(i).getName() + "\t" + dateStr + "\t\t" + book.get(i).getCount() + "次");

        }
        System.out.println("*****************************************");
    }

    // 删除图书

    public void delete(ArrayList<BookInformation> book) {
        System.out.println("-->删除图书\n");
        System.out.println("请输入要删除图书的名称:");
        String delete = input.next();
        boolean flag3 = false;
        for (int i =0; i <book.size(); i++) {
                if (book.get(i).getName().equals(delete) && book.get(i).getState() == 0) {
                    flag3=true;
                    book.remove(i);
                    System.out.println("删除成功");
                    break;
                } else if (book.get(i).getName().equals(delete) && book.get(i).getState() == 1) {
                    flag3 = true;
                    System.out.println("该图书已被借出,目前无法删除!");

                }
            }
        if (!flag3) {
            System.out.println("没有找到匹配信息!");
        }

    }





    // 借出图书

    public void lend(ArrayList<BookInformation> book) {
        System.out.println("-->借出图书\n");
        System.out.print("请输入图书名称:");
        String want = input.next(); // 要借出的图书名称

        for (int i = 0; i < book.size(); i++) {
            if (book.get(i).getName().equals(want) && book.get(i).getState() == 0) {
                book.get(i).setState(1);//修改书籍状态为已借出
                System.out.print("请输入借出日期:");
                book.get(i).setDate(input.nextInt());
                while (book.get(i).getDate() < 1 || book.get(i).getDate() > 31) { // 当输入借出的日期不满足1-31时
                    System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
                    book.get(i).setDate(input.nextInt());
                }
                System.out.println("借出《" + want + "》成功!");
                book.get(i).setCount(book.get(i).getCount() + 1);

                break;

            } else if (book.get(i).getName().equals(want) && book.get(i).getState() == 1) {
                System.out.println("《" + want + "》已被借出!");
                break;
            } else {

            }
            if (i == book.size() - 1) {
                System.out.println("未找到所需的图书");
                System.out.println("*****************************************");
            }


        }
    }

    // 归还图书
    public void returnBook(ArrayList<BookInformation> book) {
        System.out.println("-->归还图书\n");
        int charge = 0; // 租金
        System.out.print("请输入归还图书名称:");
        String want = input.next();
        for (int i = 0; i < book.size(); i++) {
            if (book.get(i).getName().equals(want) && book.get(i).getState() == 1) {
                book.get(i).setState(0);//修改书籍状态为可借阅
                System.out.print("请输入归还日期:");
                int redate = input.nextInt();
                while (book.get(i).getDate() < 1 || book.get(i).getDate() > 31) { // 当输入借出的日期不满足1-31时
                    if (redate < book.get(i).getDate()) {
                        System.out.println("归还日期不能小于借出日期,请重新输入:");
                    } else {
                        System.out.println("一个月只有31天,请重新输入:");
                    }
                    redate = input.nextInt();
                }
                charge = redate -book.get(i).getDate();
                System.out.println("\n归还《" + want + "》成功!");
                System.out.println("借出日期为:" + book.get(i).getDate() + "日");
                System.out.println("归还日期为:" + redate + "日");
                System.out.println("应付租金(元):" + charge);
                book.get(i).setDate(0);
                break;
            } else if (book.get(i).getName().equals(want) && book.get(i).getState() == 1) {
                System.out.println("该图书尚未借出,无法进行归还操作!");
                break;
            }
            if (i == book.size()) {
                System.out.println("未找到需要归还的图书");
                System.out.println("*****************************************");
                break;
            }
        }
    }


    public int end(boolean flag, int num) {
        int x = num;

        if (flag) {
            System.out.println("输入0返回:");
            x = input.nextInt();
            return x;
        } else {
            return x;
        }
    }
}

3.图书管理系统的测试类

    public static void main(String[] args) {
        //创建集合


        ArrayList<BookInformation> list=new ArrayList();

        // 图书相关信息,最多只能存储6个图书信息

        Method method=new Method();
        method.info(list);
        method.loopZong(list);

    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值