外卖配送系统完整代码

附录(完整代码)

1.Admin类:

public class Admin {

    private String aID;

    private String account;

    private String apwd;

    public Admin() {

        // TODO Auto-generated constructor stub

    }

    public Admin(String aID, String account, String apwd) {

        super();

        this.aID = aID;

        this.account = account;

        this.apwd = apwd;

    }

    public String getaID() {

        return aID;

    }

    public void setaID(String aID) {

        this.aID = aID;

    }

    public String getAccount() {

        return account;

    }

    public void setAccount(String account) {

        this.account = account;

    }

    public String getApwd() {

        return apwd;

    }

    public void setApwd(String apwd) {

        this.apwd = apwd;

    }

    

    public String toString() {

        return "Admin [aID=" + aID + ", account=" + account + ", apwd=" + apwd + "]";

    }

}

  1. AdminSys类:

import java.time.LocalDate;

import java.time.LocalDateTime;

//import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Scanner;

//import java.util.Set;

public class AdminSys implements DAO<Admin> {

    static Map<String, Admin> map = new HashMap<>();

    //  static Set<String> keys = map.keySet();

    UserSys u = new UserSys();

    OrderSys o = new OrderSys();

    DishesSys d = new DishesSys();

    Scanner sc = new Scanner(System.in);

    /**

     * 添加菜品

     */

    public void addDishes() {

        System.out.println("请输入您要添加的菜品:(按照:菜品ID/菜品名/菜品类型/单价/月销量/总数量)");

        String str = sc.next();

        String[] info = str.split("/");

        //

        if (info.length < 6) {

            System.out.println("输入失败啦,请重新输入!");

            addDishes();

        } else {

            LocalDate dtime = LocalDate.now();

            Dishes t = new Dishes(info[0], info[1], info[2], dtime, Double.parseDouble(info[3]),

                    Integer.parseInt(info[4]), Integer.parseInt(info[5]));

            d.insert(t);

            System.out.println("小主,恭喜你!添加成功了");

        }

    }

    /**

     * 查看所有菜品信息(包含分页功能)

     */

    public void showAllDishes(int pageSize) {

        List<Dishes> list = d.findAll();

        int start = 0;

        //先写一个死循环,进入else后break掉

        while (true) {

            if (list.size() > (pageSize + start)) {

                System.out.println(list.subList(start, pageSize + start));

            } else {

                System.out.println(list.subList(start, list.size()));

                break;

            }

            start = start + pageSize;

        }

    }

    /**

     * 查看指定类别的菜品信息

     *

     */

    public void selecBytypeOfAdmin() {

        System.out.println("请输入您要查询菜品的类别:");

        String typename = sc.next();

        d.selectBytype(typename);

    }

    /**

     * 根据菜品id修改菜品价格

     */

    public void selectByDishesID() {

        System.out.println("请输入您要查询的菜品id:");

        String id = sc.next();

        Dishes dish = d.findById(id);

        if (dish == null) {

            System.out.println("没有当前id的菜品呢");

        } else {

            System.out.println("当前菜品为:" + dish);

            System.out.println("请输入新的菜品单价:");

            double newprice = sc.nextDouble();

            Dishes t = new Dishes(dish.getdID(), dish.getDname(), dish.getDtype(), dish.getDtime(), newprice,

                    dish.getDsales(), dish.getDstocks());

            d.insert(t);

            System.out.println("修改成功" + d.findById(t.getdID()));

        }

    }

    /**

     * 删除指定id的菜品

     *

     *

     */

    public void deleteDishes() {

        System.out.println("请输入您要删除的菜品id");

        String id = sc.next();

        d.delete(id);

        System.out.println("删除成功!!");

    }

    /**

     * 添加客户

     */

    public void addUser() {

        System.out.println("请输入您要添加的用户:按照(id/姓名/性别/密码/送餐地址/手机号)");

        String str = sc.next();

        String[] info = str.split("/");

        if (info.length < 6) {

            System.out.println("您输入的信息有误,请重新输入....");

            addUser();

        } else {

            LocalDateTime utime = LocalDateTime.now();

            u.insert(new User(info[0], info[1], info[2], info[3], info[4], info[5], utime));

            System.out.println("添加成功");

        }

    }

    /**

     * 查看客户列表

     */

    public void findUser() {

        List<User> userlist = u.findAll();

        for (User user : userlist) {

            System.out.println(user);

        }

    }

    /**

     * 根据id查找指定用户

     */

    public User findUserByid(String id) {

        return u.findById(id);

    }

    /**

     * 删除指定id的客户

     */

    public void deleteUserByAdmin() {

        System.out.println("请输入您要删除的id:");

        String id = sc.next();

        u.delete(id);

    }

    /**

     * 订单列表显示

     */

    public void showAllOrder() {

        List<Order> allOrder = o.findAll();

        for (Order order : allOrder) {

            System.out.println(order);

        }

    }

    /**

     * 根据订单id修改订单状态

     */

    public void changeOrderValue() {

        System.out.println("请输入您要修改状态的订单id");

        String id = sc.next();

        Order order = o.findById(id);

        if (order == null) {

            System.out.println("没有当前id的订单,请检查输入");

        } else {

            System.out.println("已找到当前id订单" + order);

            System.out.println("请输入您要修改的状态:0:未支付 1:已支付 2:配送中 3:已完成");

            int value = sc.nextInt();

            Order t = new Order(order.getOrderID(), order.getUtime(), order.getDishes(), order.getOrdernum(),

                    order.getuID(), order.getOrderprice(), value);

            o.insert(t);

            System.out.println("修改成功了!!!");

        }

    }

    /**

     * 显示所有菜品(按菜品销量从高到低排序输出)

     */

    public void showAllDishesByUser() {

        List<Dishes> list = d.findAll();

        Collections.sort(list, (p1, p2) -> p1.getDsales() - p2.getDsales());

        System.out.println(list);

    }

    /**

     * 点餐(输入菜品id和购买数量)

     */

    public void shopDishes(User user) {

        showAllDishesByUser();

        System.out.println("请输入您要购买的id和数量:按照(id/数量)");

        String str = sc.next();

        String[] info = str.split("/");

        // 判断输入是否符合要求,不符合则要求重新输入

        if (info.length < 2) {

            System.out.println("输入有误,请重新输入:");

            shopDishes(user);

        } else {

            LocalDateTime l = LocalDateTime.now();

            // String orderID, LocalDateTime utime, Dishes dishes, int ordernum, String uID,

            // Double orderprice,int orderValue

            Order t = new Order(info[0], l, d.findById(info[0]), Integer.parseInt(info[1]), user.getuID(),

                    o.findById(info[0]).getOrderprice(), o.findById(info[0]).getOrderValue());

            o.insert(t);

            System.out.println("订单已生成!!!" + o.findById(info[0]));

        }

    }

    /**

     * 根据菜品类别显示所有菜品

     */

    public void ShowOfTypeByUser() {

        System.out.println("请输入您要查找的类别:");

        String str = sc.next();

        System.out.println(d.findByType(str));

    }

    /**

     * 查看所有订单(当前登录用户的)

     */

    public void showAllOrderByUser(User user) {

        List<Order> list = o.findByuId(user.getuID());

        for (Order order : list) {

            System.out.println(order);

        }

    }

    /**

     * 修改密码(当前登录用户的)

     */

    public void changePwdByUser(User user) {

        u.changepwd(user.getuID());

        System.out.println("修改成功!!");

    }

    /**

     * 个人信息显示

     */

    public void showByUser(User user) {

        User findById = u.findById(user.getuID());

        System.out.println(findById);

    }

    //删除管理员

    @Override

    public void delete(String id) {

    }

    //添加管理员

    @Override

    public void insert(Admin t) {

        // TODO Auto-generated method stub

    }

    //通过id即账号查找管理员

    @Override

    public Admin findById(String id) {

        return map.get(id);

    }

    //显示所有管理员

    @Override

    public List<Admin> findAll() {

        // TODO Auto-generated method stub

        return null;

    }

    //先设置系统默认数据

    public void addMessage() {

        map.put("qwl", new Admin("10086", "qwl", "123456"));

        LocalDate time = LocalDate.now();

        Dishes d1 = new Dishes("1", "红烧猪蹄", "肉类", time, 12.5, 20, 30);

        d.insert(d1);

        Dishes d2 = new Dishes("2", "鸡公煲", "肉类", time, 21.5, 30, 20);

        d.insert(d2);

        Dishes d3 = new Dishes("3", "麻辣香锅", "火锅类", time, 30, 5, 10);

        d.insert(d3);

        Dishes d4 = new Dishes("4", "水煮肉片", "肉类", time, 15, 12, 15);

        d.insert(d4);

        Dishes d5 = new Dishes("5", "水果沙拉", "水果类", time, 6, 70, 60);

        d.insert(d5);

        // String orderID, LocalDateTime utime, Dishes dishes, int ordernum, String uID,

        // Double orderprice,int orderValue

        LocalDateTime localdatetime = LocalDateTime.now();

        Order o1 = new Order("1", localdatetime, d1, 10, "1001", 60.0, 1);

        o.insert(o1);

        Order o2 = new Order("2", localdatetime, d2, 5, "1002", 50.0, 10);

        o.insert(o2);

        Order o3 = new Order("3", localdatetime, d3, 5, "1003", 40.0, 5);

        o.insert(o3);

        Order o4 = new Order("4", localdatetime, d4, 5, "1004", 30.0, 6);

        o.insert(o4);

        Order o5 = new Order("5", localdatetime, d5, 5, "1005", 20.0, 8);

        o.insert(o5);

        // String uID, String uname, String usex, String upwd, String uadress, String

        // utel, LocalDateTime utime

        User u1 = new User("1001", "张三", "男", "123456", "湖北", "13545286487", localdatetime);

        u.insert(u1);

        User u2 = new User("1002", "李四", "男", "234567", "湖南", "15927948976", localdatetime);

        u.insert(u2);

        User u3 = new User("1003", "王五", "男", "345678", "江苏", "15927986854", localdatetime);

        u.insert(u3);

        User u4 = new User("1004", "刘柳", "女", "456789", "浙江", "18771580860", localdatetime);

        u.insert(u4);

        User u5 = new User("1005", "赵琦", "女", "567890", "新疆", "18771580750", localdatetime);

        u.insert(u5);

    }

}

  1. Dishes类

import java.time.LocalDate;

public class Dishes {

    private String dID;

    private String dname;

    private String dtype;

    private LocalDate dtime;

    private double price;

    private int dsales;

    private int dstocks;

    public Dishes() {

        // TODO Auto-generated constructor stub

    }

    public Dishes(String dID, String dname, String dtype, LocalDate dtime, double price, int dsales, int dstocks) {

        super();

        this.dID = dID;

        this.dname = dname;

        this.dtype = dtype;

        this.dtime = dtime;

        this.price = price;

        this.dsales = dsales;

        this.dstocks = dstocks;

    }

    public String getdID() {

        return dID;

    }

    public void setdID(String dID) {

        this.dID = dID;

    }

    public String getDname() {

        return dname;

    }

    public void setDname(String dname) {

        this.dname = dname;

    }

    public String getDtype() {

        return dtype;

    }

    public void setDtype(String dtype) {

        this.dtype = dtype;

    }

    public LocalDate getDtime() {

        return dtime;

    }

    public void setDtime(LocalDate dtime) {

        this.dtime = dtime;

    }

    public double getPrice() {

        return price;

    }

    public void setPrice(double price) {

        this.price = price;

    }

    public int getDsales() {

        return dsales;

    }

    public void setDsales(int dsales) {

        this.dsales = dsales;

    }

    public int getDstocks() {

        return dstocks;

    }

    public void setDstocks(int dstocks) {

        this.dstocks = dstocks;

    }

    public String toString() {

        return "Dishes [菜品id:" + dID + ", 菜品名:" + dname + ", 菜品类型:" + dtype + ", 上架时间:" + dtime + ", 单价:" + price

                + ", 月销量:" + dsales + ", 总数量:" + dstocks + "]";

    }

}

  1. DishesSys类

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Objects;

import java.util.Set;

public class DishesSys implements DAO<Dishes> {

    // 建立一个菜品的map集合,其中菜品的id为map的键,整个菜品对象为map的值

    static Map<String, Dishes> dishesmap = new HashMap<>();

    Set<String> keys = dishesmap.keySet();

    /**

     * 添加菜品

     */

    public void insert(Dishes t) {

        dishesmap.put(t.getdID(), t);

    }

    /**

     * 通过id来寻找菜品

     */

    @Override

    public Dishes findById(String id) {

        if (dishesmap.get(id) == null) {

            return null;

        } else {

            return dishesmap.get(id);

        }

    }

    /**

     * 根据菜品类型查找菜品

     */

    public List<Dishes> findByType(String type) {

        List<Dishes> list = new ArrayList<>();

        for (String key : keys) {

            if (Objects.equals(type, dishesmap.get(key).getDtype())) {

                list.add(dishesmap.get(key));

            }

        }

        return list;

    }

    /**

     * 查询所有菜品

     */

    public List<Dishes> findAll() {

        List<Dishes> list = new ArrayList<>();

        for (String str : keys) {

            list.add(dishesmap.get(str));

        }

        return list;

    }

    public void selectBytype(String typename) {

        int count = 0;

        for (String key : keys) {

            if (Objects.equals(dishesmap.get(key).getDtype(), typename)) {

                System.out.println(dishesmap.get(key));

                count++;

            }

        }

        if (count == 0) {

            System.out.println("没有当前类别的菜品!");

        }

    }

    /**

     * 删除指定id菜品

     */

    @Override

    public void delete(String id) {

        if (dishesmap.get(id) == null) {

            System.out.println("输入id错误...");

        } else {

            dishesmap.remove(id);

        }

    }

}

  1. Menu类

import java.util.Objects;

import java.util.Scanner;

public class Menu {

    static AdminSys admin = new AdminSys();

    Scanner sc = new Scanner(System.in);

    public void showMenu() {

        admin.addMessage();

        System.out.println("即将进入菜单");

        adminMenu();

        User user = new User();

        userMenu(user);

        String str = sc.next();

        String[] info = str.split("/");

        if (info.length < 2) {

            showMenu();

        } else {

            if (admin.findById(info[0]) != null && Objects.equals(admin.findById(info[0]).getApwd(), info[1])) {

                adminMenu();

            } else if

            (admin.findUserByid(info[0]) != null && Objects.equals(info[1], admin.findUserByid(info[0]).getUpwd())) {

            } else {

                System.out.println("输入有误,请重新输入....");

                showMenu();

            }

        }

    }

    public void userMenu(User user) {

        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("请输入您要进行的操作:");

        String n = sc.next();

        switch (n) {

            case "1":

                admin.shopDishes(user);

                userMenu(user);

                break;

            case "2":

                admin.ShowOfTypeByUser();

                userMenu(user);

                break;

            case "3":

                admin.showAllOrderByUser(user);

                userMenu(user);

                break;

            case "4":

                admin.changePwdByUser(user);

                userMenu(user);

                break;

            case "5":

                admin.showByUser(user);

                userMenu(user);

                break;

            case "6":

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

                System.exit(0);

            default:

                System.out.println("");

                userMenu(user);

        }

    }

    public void adminMenu() {

        System.out.println("=========欢迎您尊贵的管理员=======");

        System.out.println("====【1】添加菜品===============");

        System.out.println("====【2】查看所有菜品信息显示=======");

        System.out.println("====【3】查看指定类别的菜品信息=====");

        System.out.println("====【4】根据菜品id修改菜品价格=====");

        System.out.println("====【5】删除指定id的菜品=========");

        System.out.println("====【6】添加客户================");

        System.out.println("====【7】查看客户列表=============");

        System.out.println("====【8】删除指定id的用户==========");

        System.out.println("====【9】订单列表显示=============");

        System.out.println("====【10】根据订单id修改订单状态====");

        System.out.println("====【11】退出=================");

        String m = sc.next();

        switch (m) {

            case "1":

                admin.addDishes();

                adminMenu();

                break;

            case "2":

                System.out.println("请输入您需要每行显示多少数据:");

                int pageSize = sc.nextInt();

                admin.showAllDishes(pageSize);

                adminMenu();

                break;

            case "3":

                admin.selecBytypeOfAdmin();

                adminMenu();

                break;

            case "4":

                admin.selectByDishesID();

                adminMenu();

                break;

            case "5":

                admin.deleteDishes();

                adminMenu();

                break;

            case "6":

                admin.addUser();

                adminMenu();

                break;

            case "7":

                admin.findUser();

                adminMenu();

                break;

            case "8":

                admin.deleteUserByAdmin();

                adminMenu();

                break;

            case "9":

                admin.showAllOrder();

                adminMenu();

                break;

            case "10":

                admin.changeOrderValue();

                adminMenu();

                break;

            case "11":

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

                break;

            default:

                System.out.println("输入错误,请重新输入:");

                adminMenu();

        }

    }

}

  1. Order类

import java.time.LocalDateTime;

public class Order {

    private String OrderID;

    private LocalDateTime utime;

    private Dishes dishes;

    private int Ordernum;

    private String uID;

    private Double Orderprice;

    private int OrderValue;

    public Order() {

        // TODO Auto-generated constructor stub

    }

    public Order(String orderID, LocalDateTime utime, Dishes dishes, int ordernum, String uID, Double orderprice,

                 int orderValue) {

        super();

        OrderID = orderID;

        this.utime = utime;

        this.dishes = dishes;

        Ordernum = ordernum;

        this.uID = uID;

        Orderprice = orderprice;

        OrderValue = orderValue;

    }

    public String getOrderID() {

        return OrderID;

    }

    public void setOrderID(String orderID) {

        OrderID = orderID;

    }

    public LocalDateTime getUtime() {

        return utime;

    }

    public void setUtime(LocalDateTime utime) {

        this.utime = utime;

    }

    public Double getOrderprice() {

        return Orderprice;

    }

    public void setOrderprice(Double orderprice) {

        Orderprice = orderprice;

    }

    public Dishes getDishes() {

        return dishes;

    }

    public void setDishes(Dishes dishes) {

        this.dishes = dishes;

    }

    public int getOrdernum() {

        return Ordernum;

    }

    public void setOrdernum(int ordernum) {

        Ordernum = ordernum;

    }

    public String getuID() {

        return uID;

    }

    public void setuID(String uID) {

        this.uID = uID;

    }

    public int getOrderValue() {

        return OrderValue;

    }

    public void setOrderValue(int orderValue) {

        OrderValue = orderValue;

    }

  

    public String toString() {

        return "Order [OrderID=" + OrderID + ", utime=" + utime + ", dishes=" + dishes + ", Ordernum=" + Ordernum

                + ", uID=" + uID + ", Orderprice=" + Orderprice + ", OrderValue=" + OrderValue + "]";

    }

}

7.OrderSys类

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Objects;

import java.util.Set;

public class OrderSys implements DAO<Order> {

    static Map<String, Order> ordermap = new HashMap<>();

    static List<Order> orderlist = new ArrayList<>();

    /**

     * 新增订单

     */

    public void insert(Order t) {

        ordermap.put(t.getOrderID(), t);

    }

    /**

     * 通过订单id查找订单

     */

   

    public Order findById(String id) {

        if (ordermap.get(id) == null) {

            return null;

        } else {

            return ordermap.get(id);

        }

    }

    /**

     * 通过用户id查询用户的所有订单,并返回一个list集合

     *

     *

     */

    public List<Order> findByuId(String uid) {

        List<Order> list = new ArrayList<>();

        Set<String> keys = ordermap.keySet();

        for (String key : keys) {

            if (Objects.equals(uid, ordermap.get(key).getuID())) {

                list.add(ordermap.get(key));

            }

        }

        return list;

    }

    /**

     * 显示所有订单

     */

    public List<Order> findAll() {

        Set<String> keys = ordermap.keySet();

        for (String key : keys) {

            orderlist.add(ordermap.get(key));

        }

        return orderlist;

    }

    /**

     * 待完成功能,删除订单

     */

    public void delete(String id) {

        // TODO Auto-generated method stub

    }

}

  1. User类

import java.time.LocalDateTime;

public class User {

    private String uID;

    private String uname;

    private String usex;

    private String upwd;

    private String uadress;

    private String utel;

    private LocalDateTime utime;

    public User() {

        // TODO Auto-generated constructor stub

    }

    public User(String uID, String uname, String usex, String upwd, String uadress, String utel, LocalDateTime utime) {

        super();

        this.uID = uID;

        this.uname = uname;

        this.usex = usex;

        this.upwd = upwd;

        this.uadress = uadress;

        this.utel = utel;

        this.utime = utime;

    }

    public String getuID() {

        return uID;

    }

    public void setuID(String uID) {

        this.uID = uID;

    }

    public String getUname() {

        return uname;

    }

    public void setUname(String uname) {

        this.uname = uname;

    }

    public String getUsex() {

        return usex;

    }

    public void setUsex(String usex) {

        this.usex = usex;

    }

    public String getUpwd() {

        return upwd;

    }

    public void setUpwd(String upwd) {

        this.upwd = upwd;

    }

    public String getUadress() {

        return uadress;

    }

    public void setUadress(String uadress) {

        this.uadress = uadress;

    }

    public String getUtel() {

        return utel;

    }

    public void setUtel(String utel) {

        this.utel = utel;

    }

    public LocalDateTime getUtime() {

        return utime;

    }

    public void setUtime(LocalDateTime utime) {

        this.utime = utime;

    }

    @Override

    public String toString() {

        return "User [uID=" + uID + ", uname=" + uname + ", usex=" + usex + ", upwd=" + upwd + ", uadress=" + uadress

                + ", utel=" + utel + ", utime=" + utime + "]";

    }

}

  1. UserSys类

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Scanner;

import java.util.Set;

//客户id,客户名,性别,密码,送餐地址,手机号,创建时间

public class UserSys implements DAO<User> {

    static Map<String, User> usermap = new HashMap<>();

    List<User> list = new ArrayList<>();

    Scanner sc = new Scanner(System.in);

    /**

     * 添加客户

     */

    public void insert(User t) {

        usermap.put(t.getuID(), t);

    }

    /**

     * 查看客户列表

     */

    public List<User> findAll() {

        Set<String> keys = usermap.keySet();

        for (String str : keys) {

            list.add(usermap.get(str));

        }

        return list;

    }

    /**

     * 删除指定id的客户

     */

    public void delete(String id) {

        if (usermap.get(id) == null) {

            System.out.println("没有当前id的客户");

        } else {

            System.out.println(usermap.get(id) + "已删除!!!");

            usermap.remove(id);

        }

    }

    /**

     * 修改密码(当前登录用户的)

     */

    public void changepwd(String id) {

        User user = findById(id);

        System.out.println("请输入新密码:");

        String str = sc.next();

        User t = new User(user.getuID(), user.getUname(), user.getUsex(), str, user.getUadress(), user.getUtel(),

                user.getUtime());

        usermap.put(id, t);

    }

    /**

     * 通过id查找对应客户

     */

  

    public User findById(String id) {

        if (usermap.get(id) == null) {

            return null;

        } else {

            return usermap.get(id);

        }

    }

}

  1. Tset类

import java.awt.*;

public class Test {

    public static void main(String[] args) {

        Menu m = new Menu();

        m.showMenu();

    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值