外卖点餐零碎的实现

实体类的编写

(1)菜品类(菜品id,菜品名,菜品类型,上架工夫,单价,月销售,总数量)

import java.util.Date;public class Menu {    private String mid;    private String name;    private String type;    private Date dateIssued;    private double price;    private int monthlySales;    private int totalQuantity;    public Menu() {        super();        // TODO Auto-generated constructor stub    }    public Menu(String mid, String name, String type, Date dateIssued, double price, int monthlySales, int totalQuantity) {        super();        this.mid = mid;        this.name = name;        this.type = type;        this.dateIssued = dateIssued;        this.price = price;        this.monthlySales = monthlySales;        this.totalQuantity = totalQuantity;    }    public String getMid() {        return mid;    }    public void setMid(String mid) {        this.mid = mid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getType() {        return type;    }    public void setType(String type) {        this.type = type;    }    public Date getDateIssued() {        return dateIssued;    }    public void setDateIssued(Date dateIssued) {        this.dateIssued = dateIssued;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    public int getMonthlySales() {        return monthlySales;    }    public void setMonthlySales(int monthlySales) {        this.monthlySales = monthlySales;    }    public int getTotalQuantity() {        return totalQuantity;    }    public void setTotalQuantity(int totalQuantity) {        this.totalQuantity = totalQuantity;    }    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + ((dateIssued == null) ? 0 : dateIssued.hashCode());        result = prime * result + ((mid == null) ? 0 : mid.hashCode());        result = prime * result + monthlySales;        result = prime * result + ((name == null) ? 0 : name.hashCode());        long temp;        temp = Double.doubleToLongBits(price);        result = prime * result + (int) (temp ^ (temp >>> 32));        result = prime * result + totalQuantity;        result = prime * result + ((type == null) ? 0 : type.hashCode());        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Menu other = (Menu) obj;        if (dateIssued == null) {            if (other.dateIssued != null)                return false;        } else if (!dateIssued.equals(other.dateIssued))            return false;        if (mid == null) {            if (other.mid != null)                return false;        } else if (!mid.equals(other.mid))            return false;        if (monthlySales != other.monthlySales)            return false;        if (name == null) {            if (other.name != null)                return false;        } else if (!name.equals(other.name))            return false;        if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price))            return false;        if (totalQuantity != other.totalQuantity)            return false;        if (type == null) {            if (other.type != null)                return false;        } else if (!type.equals(other.type))            return false;        return true;    }    @Override    public String toString() {        return "Menu [mid=" + mid + ", name=" + name + ", type=" + type + ", dateIssued=" + dateIssued + ", price="                + price + ", monthlySales=" + monthlySales + ", totalQuantity=" + totalQuantity + "]";    }}
import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;import java.util.Set;import java.util.stream.Collectors;public class MenuManager implements DAO<Menu> {    static Map<String, Menu> map = new HashMap<String, Menu>();    static {        map.put("01", new Menu("01", "邹蹄", "垃圾食品", new Date(2020,10,12), 200, 1200, 500));        map.put("02", new Menu("02", "邹腰子", "垃圾食品", new Date(2020,9,22), 30, 1000, 20));        map.put("03", new Menu("03", "邹大肠", "垃圾食品", new Date(2020,10,23), 88.8, 900, 1000));        map.put("04", new Menu("04", "邹肉", "垃圾食品", new Date(2020,1,1), 99.99, 10, 8829));        map.put("05", new Menu("05", "邹头", "垃圾食品", new Date(2020,7,7), 3300, 20000, 4287));        map.put("06", new Menu("06", "邹鞭", "补品", new Date(), 998, 999999, 9999));    }    @Override    public void insert(Menu menu) {        map.put(menu.getMid(), menu);    }    @Override    public Menu findById(String id) {        return map.get(id);    }    //显示所有菜品(按菜品销量从高到低排序输入)    @Override    public List findAll() {        List<Entry<String,Menu>> list = map.entrySet().stream()                      .sorted((p1,p2) -> p2.getValue().getMonthlySales() - p1.getValue().getMonthlySales())                      .collect(Collectors.toList());        return list;    }    @Override    public void delete(String id) {        map.remove(id);    }    /**     * 查看指定类别的菜品信息     * @param type 菜品类别     * @return     */    public List<Menu> findByType(String type) {        List<Menu> list = map.entrySet().stream()                      .filter(p -> p.getValue().getType().equals(type))                      .map(p -> p.getValue())                      .collect(Collectors.toList());        return list;    }    //依据菜品id批改菜品价格    public void replacePrice(String mid, double price) {        map.replace(mid, new Menu(mid, map.get(mid).getName(), map.get(mid).getType(), map.get(mid).getDateIssued(), price, map.get(mid).getMonthlySales(), map.get(mid).getTotalQuantity()));    }    //依据菜品id查问菜品价格    public double showPrice(String mid) {        return map.get(mid).getPrice();    }    //依据菜品类别显示所有菜品    public void showType() {        map.entrySet().stream()                      .sorted((p1,p2) -> p1.getValue().getType().compareTo(p2.getValue().getType()))                      .collect(Collectors.toList())                      .forEach(System.out::println);    }    //依据菜品id批改菜品数量    public void replaceTotalQuantity(String mid, int totalQuantity) {        map.replace(mid, new Menu(mid, map.get(mid).getName(), map.get(mid).getType(), map.get(mid).getDateIssued(), map.get(mid).getPrice(), map.get(mid).getMonthlySales(), map.get(mid).getTotalQuantity() - totalQuantity));    }}

管理员类(管理员id,账号,明码)

public class Administrator {    private String aid;    private String account;    private String password;    public Administrator() {        super();        // TODO Auto-generated constructor stub    }    public Administrator(String aid, String account, String password) {        super();        this.aid = aid;        this.account = account;        this.password = password;    }    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + ((account == null) ? 0 : account.hashCode());        result = prime * result + ((aid == null) ? 0 : aid.hashCode());        result = prime * result + ((password == null) ? 0 : password.hashCode());        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Administrator other = (Administrator) obj;        if (account == null) {            if (other.account != null)                return false;        } else if (!account.equals(other.account))            return false;        if (aid == null) {            if (other.aid != null)                return false;        } else if (!aid.equals(other.aid))            return false;        if (password == null) {            if (other.password != null)                return false;        } else if (!password.equals(other.password))            return false;        return true;    }    @Override    public String toString() {        return "Administrator [aid=" + aid + ", account=" + account + ", password=" + password + "]";    }    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 getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}
import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.stream.Collectors;public class AdministratorManager implements DAO<Administrator> {    static Map<String, Administrator> map = new HashMap<String, Administrator>();    static {        map.put("admin", new Administrator("admin", "admin123", "12345"));    }    public void insert(Administrator t) {        map.put(t.getAid(), t);    }    @Override    public Administrator findById(String id) {        return map.get(id);    }    @Override    public List<Administrator> findAll() {        List<Administrator> list = map.entrySet().stream()                  .map(e -> e.getValue())                  .collect(Collectors.toList());        return list;    }    @Override    public void delete(String id) {        map.remove(id);    }}

客户类(客户id,客户名,性别,明码,送餐地址,手机号,创立工夫)

import java.util.Date;public class Client {    private String cid;    private String name;    private String sex;    private String password;    private String address;    private String phone;    private Date creationTime;    public Client() {        super();        // TODO Auto-generated constructor stub    }    public Client(String cid, String name, String sex, String password, String address, String phone, Date creationTime) {        super();        this.cid = cid;        this.name = name;        this.sex = sex;        this.password = password;        this.address = address;        this.phone = phone;        this.creationTime = creationTime;    }    public String getCid() {        return cid;    }    public void setCid(String cid) {        this.cid = cid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    public Date getCreationTime() {        return creationTime;    }    public void setCreationTime(Date creationTime) {        this.creationTime = creationTime;    }    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + ((address == null) ? 0 : address.hashCode());        result = prime * result + ((cid == null) ? 0 : cid.hashCode());        result = prime * result + ((creationTime == null) ? 0 : creationTime.hashCode());        result = prime * result + ((name == null) ? 0 : name.hashCode());        result = prime * result + ((password == null) ? 0 : password.hashCode());        result = prime * result + ((phone == null) ? 0 : phone.hashCode());        result = prime * result + ((sex == null) ? 0 : sex.hashCode());        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Client other = (Client) obj;        if (address == null) {            if (other.address != null)                return false;        } else if (!address.equals(other.address))            return false;        if (cid == null) {            if (other.cid != null)                return false;        } else if (!cid.equals(other.cid))            return false;        if (creationTime == null) {            if (other.creationTime != null)                return false;        } else if (!creationTime.equals(other.creationTime))            return false;        if (name == null) {            if (other.name != null)                return false;        } else if (!name.equals(other.name))            return false;        if (password == null) {            if (other.password != null)                return false;        } else if (!password.equals(other.password))            return false;        if (phone == null) {            if (other.phone != null)                return false;        } else if (!phone.equals(other.phone))            return false;        if (sex == null) {            if (other.sex != null)                return false;        } else if (!sex.equals(other.sex))            return false;        return true;    }    @Override    public String toString() {        return "Client [cid=" + cid + ", name=" + name + ", sex=" + sex + ", password=" + password + ", address="                + address + ", phone=" + phone + ", creationTime=" + creationTime + "]";    }}
import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java.util.stream.Collectors;public class ClientManager implements DAO<Client> {    static Map<String, Client> map = new HashMap<String, Client>();    static {        map.put("abc123", new Client("abc123", "张三", "男", "12345", "光谷金融港27栋9楼", "10086", new Date()));    }    @Override    public void insert(Client t) {        map.put(t.getCid(), t);    }    @Override    public Client findById(String id) {        return map.get(id);    }    @Override    public List<Client> findAll() {        List<Client> list = map.entrySet().stream()                      .map(e -> e.getValue())                      .collect(Collectors.toList());        return list;    }    @Override    public void delete(String id) {        map.remove(id);    }    //批改明码    public void replacePassword(Client client, String password) {        client.setPassword(password);        map.replace(client.getCid(), client);    }}

订单类(订单号,订单创立工夫,菜品id,购买数,客户id,总价格,订单状态)

import java.util.Date;public class Indent {    private String no;    private Date creationTime;    private String mid;    private int buyNumber;    private String cid;    private double totalPrice;    private int orderStatus;    public Indent() {        super();        // TODO Auto-generated constructor stub    }    public Indent(String no, Date creationTime, String mid, int buyNumber, String cid, double totalPrice,            int orderStatus) {        super();        this.no = no;        this.creationTime = creationTime;        this.mid = mid;        this.buyNumber = buyNumber;        this.cid = cid;        this.totalPrice = totalPrice;        this.orderStatus = orderStatus;    }    public String getNo() {        return no;    }    public void setNo(String no) {        this.no = no;    }    public Date getCreationTime() {        return creationTime;    }    public void setCreationTime(Date creationTime) {        this.creationTime = creationTime;    }    public String getMid() {        return mid;    }    public void setMid(String mid) {        this.mid = mid;    }    public int getBuyNumber() {        return buyNumber;    }    public void setBuyNumber(int buyNumber) {        this.buyNumber = buyNumber;    }    public String getCid() {        return cid;    }    public void setCid(String cid) {        this.cid = cid;    }    public double getTotalPrice() {        return totalPrice;    }    public void setTotalPrice(double totalPrice) {        this.totalPrice = totalPrice;    }    public int getOrderStatus() {        return orderStatus;    }    public void setOrderStatus(int orderStatus) {        this.orderStatus = orderStatus;    }    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + buyNumber;        result = prime * result + ((cid == null) ? 0 : cid.hashCode());        result = prime * result + ((creationTime == null) ? 0 : creationTime.hashCode());        result = prime * result + ((mid == null) ? 0 : mid.hashCode());        result = prime * result + ((no == null) ? 0 : no.hashCode());        result = prime * result + orderStatus;        long temp;        temp = Double.doubleToLongBits(totalPrice);        result = prime * result + (int) (temp ^ (temp >>> 32));        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Indent other = (Indent) obj;        if (buyNumber != other.buyNumber)            return false;        if (cid == null) {            if (other.cid != null)                return false;        } else if (!cid.equals(other.cid))            return false;        if (creationTime == null) {            if (other.creationTime != null)                return false;        } else if (!creationTime.equals(other.creationTime))            return false;        if (mid == null) {            if (other.mid != null)                return false;        } else if (!mid.equals(other.mid))            return false;        if (no == null) {            if (other.no != null)                return false;        } else if (!no.equals(other.no))            return false;        if (orderStatus != other.orderStatus)            return false;        if (Double.doubleToLongBits(totalPrice) != Double.doubleToLongBits(other.totalPrice))            return false;        return true;    }    @Override    public String toString() {        return "Indent [no=" + no + ", creationTime=" + creationTime + ", mid=" + mid + ", buyNumber=" + buyNumber                + ", cid=" + cid + ", totalPrice=" + totalPrice + ", orderStatus=" + orderStatus + "]";    }}
import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.stream.Collectors;public class IndentManager implements DAO<Indent> {    static Map<String, Indent> map = new HashMap<String, Indent>();    @Override    public void insert(Indent t) {        map.put(t.getNo(), t);    }    @Override    public Indent findById(String id) {        return map.get(id);    }    @Override    public List<Indent> findAll() {        List<Indent> list = map.entrySet().stream()                      .map(e -> e.getValue())                      .collect(Collectors.toList());        return list;    }    @Override    public void delete(String no) {        map.remove(no);    }    //依据id批改订单状态(0:未领取 1:已领取 2:配送中 3:已实现)    public void replaceOrderStatus(String no, int orderStatus) {        map.replace(no, new Indent(map.get(no).getNo(), map.get(no).getCreationTime(), map.get(no).getMid(), map.get(no).getBuyNumber(), map.get(no).getCid(), map.get(no).getTotalPrice(), orderStatus));    }    //查看以后登录客户的所有订单    public void showIndent(String cid) {        map.entrySet().stream()                      .filter(p -> p.getValue().getCid().equals(cid))                      .collect(Collectors.toList())                      .forEach(System.out::println);    }}

主体实现

import java.util.Date;import java.util.List;import java.util.Scanner;public class MySystem {    static MenuManager menu = new MenuManager();    static ClientManager client = new ClientManager();    static IndentManager indent = new IndentManager();    public static void p(Object s) {        System.out.println(s);    }    public static void administratorPanel() {        p("\t管理员零碎面板\t");        p("\t①增加菜品\t");        p("\t②查看所有菜品信息(蕴含分页性能)\t");        p("\t③查看指定类别的菜品信息\t");        p("\t④依据菜品id批改菜品价格\t");        p("\t⑤删除指定id的菜品\t");        p("\t⑥增加客户\t");        p("\t⑦查看客户列表\t");        p("\t⑧删除指定id的客户\t");        p("\t⑨订单列表显示\t");        p("\t⑩依据订单id批改订单状态\t");        p("\t⑪退出\t");        p("请输出数字1~11,别离应用相应的性能");        Scanner sc = new Scanner(System.in);        switch (sc.nextInt()) {        case 1:            p("请依照程序输出:菜品id/菜品名/菜品类型/上架工夫/单价/月销售/总数量");            menu.insert(new Menu(sc.next(), sc.next(), sc.next(), new Date(), sc.nextDouble(), sc.nextInt(), sc.nextInt()));            administratorPanel();            break;        case 2:            p("请输出须要查问的页数");            int pageNow = sc.nextInt();            p("请输出须要查问的页面数据条数");            int pageSize = sc.nextInt();            List<Menu> list = menu.findAll();            list.stream()                .skip((pageNow - 1) * pageSize)                .limit(pageSize)                .forEach(System.out::println);            administratorPanel();            break;        case 3:            p("请输出菜品类别");            String type = sc.nextLine();            menu.findByType(type).stream()                                 .forEach(System.out::println);            administratorPanel();            break;        case 4:            p("请输出菜品id和批改后的菜品价格");            String mid = sc.next();            double price = sc.nextDouble();            menu.replacePrice(mid, price);            administratorPanel();            break;        case 5:            p("请输出要删除菜品的id");            String mid2 = sc.next();            menu.delete(mid2);            administratorPanel();            break;        case 6:            p("增加客户,请依照程序输出客户信息:客户id,客户名,性别,明码,送餐地址,手机号,创立工夫");            client.insert(new Client(sc.next(), sc.next(), sc.next(), sc.next(), sc.next(), sc.next(), new Date()));            administratorPanel();            break;        case 7:            List<Client> clientList = client.findAll();            for (Client c : clientList) {                System.out.println(c);            }            administratorPanel();            break;        case 8:            p("请输出要删除客户的id");            String cid = sc.next();            client.delete(cid);            administratorPanel();            break;        case 9:            List<Indent> indentList = indent.findAll();            for (Indent i : indentList) {                System.out.println(i);            }            administratorPanel();            break;        case 10:            p("请依据订单id批改订单状态orderStatus");            p("请输出订单id");            String no = sc.next();            p("请输出要批改的订单状态(0:未领取 1:已领取 2:配送中 3:已实现)");            int orderStatus = sc.nextInt();            indent.replaceOrderStatus(no, orderStatus);            administratorPanel();            break;        case 11:            login();            break;        default:            administratorPanel();            break;        }    }    public static void clientPanel(Client c) {        p("\t用户零碎面板\t");        p("\t①显示所有菜品(按菜品销量从高到低排序输入)\t");        p("\t②依据菜品类别显示所有菜品\t");        p("\t③查看所有订单(以后登录用户的)\t");        p("\t④批改明码(以后登录用户的)\t");        p("\t⑤个人信息显示\t");        p("\t⑥退出登录\t");        p("请输出数字1~6,别离应用相应的性能");        MenuManager menu = new MenuManager();        Scanner sc = new Scanner(System.in);        switch (sc.nextInt()) {        case 1:            //显示所有菜品(按菜品销量从高到低排序输入)            menu.findAll().stream()                          .forEach(System.out::println);            p("请输出菜品id");            String mid = sc.next();            p("请输出购买数量");            int buyNumber = sc.nextInt();            //批改菜品总数            menu.replaceTotalQuantity(mid, buyNumber);            //查问菜品价格            double price = menu.showPrice(mid);            indent.insert(new Indent(c.getCid()+mid, new Date(), mid, buyNumber, c.getCid(), price * buyNumber, 0));            clientPanel(c);            break;        case 2:            menu.showType();            clientPanel(c);            break;        case 3:            indent.showIndent(c.getCid());            clientPanel(c);            break;        case 4:            System.out.println("请输出批改后的明码");            String password = sc.next();            client.replacePassword(c, password);            clientPanel(c);            break;        case 5:            System.out.println(c.toString());            clientPanel(c);            break;        case 6:            login();            break;        default :            clientPanel(c);        }    }    public static void login() {        AdministratorManager am = new AdministratorManager();        ClientManager cm = new ClientManager();        Scanner sc = new Scanner(System.in);        p("请输出id");        String id = sc.nextLine();        p("请输出明码");        String password = sc.nextLine();        if(am.map.get(id) != null && am.map.get(id).getPassword().equals(password)) {            p("管理员登录胜利");            administratorPanel();        } else if(cm.map.get(id) != null && cm.map.get(id).getPassword().equals(password)) {            p("客户登录胜利");            clientPanel(cm.map.get(id));        } else {            p("登录失败,请从新登录");            login();        }    }    public static void main(String[] args) {        login();    }}

最初

欢送关注公众号:前程有光,支付一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java外围知识点总结!这些材料的内容都是面试时面试官必问的知识点,篇章包含了很多知识点,其中包含了有基础知识、Java汇合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。