餓了么商家后臺管理系統(tǒng)

1.項目概述

1.1.項目演示

  1. 運行 “餓了么商家后臺管理系統(tǒng)” 塔粒,演示應(yīng)用程序效果。

1.2.項目目標

  1. 本項目為課程級貫穿項目中的第一個項目(JDBC項目筐摘、前端項目卒茬、javaWeb項目)。
  2. 本項目完成后咖熟,學(xué)員將能夠使用javaSE+JDBC+MySql技術(shù)開發(fā)基于控制臺的C/S結(jié)構(gòu)應(yīng)用程序圃酵。

1.3.項目中所涉及到相關(guān)知識點

  • 封裝JDBC
  • 封裝DAO
  • 領(lǐng)域模型中的實體類
  • 增刪改查操作
  • 多條件模糊查詢
  • JDBC事務(wù)管理
  • 表的主外鍵關(guān)系

1.4.數(shù)據(jù)庫設(shè)計

1.4.1.DB一覽表

No 表名稱 中文名 說明
1 business 商家表 存儲所有商家信息
2 food 食品表 存儲每個商家所擁有的所有食品信息
3 admin 管理員表 存儲管理員信息

1.5.2.表結(jié)構(gòu)

約束類型標識:
PK:primary key 主鍵
FK:foreign key 外鍵
NN:not null 非空
UQ:unique 唯一索引
AI:auto increment 自增

1.5.2.1.business(商家表)

No 字段名 數(shù)據(jù)類型 size 默認値 約束 說明
1 businessId int PK、AI球恤、NN 商家編號
2 password varchar 20 NN 密碼
3 businessName varchar 40 NN 商家名稱
4 businessAddress varchar 50 商家地址
5 businessExplain varchar 40 商家介紹
6 starPrice decimal (5,2) 0.00 起送費
7 deliveryPrice decimal (5,2) 0.00 配送費

1.5.2.2.food(食品表)

No 字段名 數(shù)據(jù)類型 size 默認値 約束 說明
1 foodId int PK辜昵、AI荸镊、NN 食品編號
2 foodName varchar 30 NN 食品名稱
3 foodExplain varchar 30 食品介紹
4 foodPrice decimal (5,2) NN 食品價格
5 businessId int FK咽斧、NN 所屬商家編號

1.5.2.3.admin(管理員表)

No 字段名 數(shù)據(jù)類型 size 默認値 約束 說明
1 adminId int PK堪置、AI、NN 管理員編號
2 adminName varchar 20 NN张惹、UQ 管理員名稱
3 password varchar 20 NN 密碼

2.項目搭建

2.1.開發(fā)環(huán)境檢查

  1. 開發(fā)工具:SpringToolSuite(STS)
  2. 檢查開發(fā)工具的jdk配置:jdk8
  3. 檢查開發(fā)工具的文件編碼配置:utf-8

2.2.搭建javaWeb工程總體架構(gòu)

2.2.1.工程類型

創(chuàng)建工程類型:java Project

2.2.2.導(dǎo)入jar包

  1. mysql-connector-java-bin.jar

2.2.3.工程目錄結(jié)構(gòu)

4.項目代碼

4.1.領(lǐng)域模型(PO)

4.1.1.Business

package com.neusoft.elm.po;

public class Business {

    private Integer businessId;
    private String password;
    private String businessName;
    private String businessAddress;
    private String businessExplain;
    private Double starPrice;
    private Double deliveryPrice;
    
    @Override
    public String toString() {
        return "\n商家編號:"+this.businessId+
               "\n商家名稱:"+this.businessName+
               "\n商家地址:"+this.businessAddress+
               "\n商家介紹:"+this.businessExplain+
               "\n起送費:¥"+this.starPrice+
               "\n配送費:¥"+this.deliveryPrice+"\n";
    }
    
    //get舀锨、set ... ...
}

4.1.2.Food

package com.neusoft.elm.po;

public class Food {

    private Integer foodId;
    private String foodName;
    private String foodExplain;
    private Double foodPrice;
    private Integer businessId;
    
    @Override
    public String toString() {
        return "\n食品編號:"+this.foodId+
               "\n食品名稱:"+this.foodName+
               "\n食品介紹:"+this.foodExplain+
               "\n食品價格:"+this.foodPrice+
               "\n所屬商家:"+this.businessId;
    }
    
    //get、set ... ...
}

4.1.3.Admin

package com.neusoft.elm.po;

public class Admin {

    private Integer adminId;
    private String adminName;
    private String password;
    
    //get宛逗、set ... ...
}

4.2.Dao層代碼

4.2.1.Business

package com.neusoft.elm.dao;

import java.util.List;

import com.neusoft.elm.po.Business;

public interface BusinessDao {

    public List<Business> listBusiness(String businessName,String businessAddress);
    public int saveBusiness(String businessName);
    public int removeBusiness(int businessId);
    
    public Business getBusinessByIdByPass(Integer businessId,String password);
    public Business getBusinessById(Integer businessId);
    public int updateBusiness(Business business);
    public int updateBusinessByPassword(Integer businessId,String password);
}
package com.neusoft.elm.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.neusoft.elm.dao.BusinessDao;
import com.neusoft.elm.po.Admin;
import com.neusoft.elm.po.Business;
import com.neusoft.elm.util.DBUtil;

public class BusinessDaoImpl implements BusinessDao{
    
    private Connection con = null;
    private PreparedStatement pst = null;
    private ResultSet rs = null;

    @Override
    public List<Business> listBusiness(String businessName,String businessAddress) {
        List<Business> list = new ArrayList<>();
        StringBuffer sql = new StringBuffer("select * from business where 1=1 ");
        if(businessName!=null&&!businessName.equals("")) {
            sql.append(" and businessName like '%"+businessName+"%' ");
        }
        if(businessAddress!=null&&!businessAddress.equals("")) {
            sql.append(" and businessAddress like '%"+businessAddress+"%' ");
        }
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql.toString());
            rs = pst.executeQuery();
            while(rs.next()) {
                Business business = new Business();
                business.setBusinessId(rs.getInt("businessId"));
                business.setPassword(rs.getString("password"));
                business.setBusinessName(rs.getString("businessName"));
                business.setBusinessAddress(rs.getString("businessAddress"));
                business.setBusinessExplain(rs.getString("businessExplain"));
                business.setStarPrice(rs.getDouble("starPrice"));
                business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
                list.add(business);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, con);
        }
        return list;
    }
    
    @Override
    public int saveBusiness(String businessName) {
        int businessId = 0;
        String sql = "insert into business(businessName,password) values(?,'123')";
        try {
            con = DBUtil.getConnection();
            //設(shè)置返回自增長列值
            pst = con.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
            pst.setString(1, businessName);
            pst.executeUpdate();
            //獲取自增長列值(一行一列)
            rs = pst.getGeneratedKeys();
            if(rs.next()) {
                businessId = rs.getInt(1);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, con);
        }
        return businessId;
    }
    
    @Override
    public int removeBusiness(int businessId) {
        int result = 0;
        String delFootSql = "delete from food where businessId=?";
        String delBusinessSql = "delete from business where businessId=?";
        try {
            con = DBUtil.getConnection();
            //開啟一個事務(wù)
            con.setAutoCommit(false);
            
            pst = con.prepareStatement(delFootSql);
            pst.setInt(1, businessId);
            pst.executeUpdate();
            
            pst = con.prepareStatement(delBusinessSql);
            pst.setInt(1, businessId);
            result = pst.executeUpdate();
            
            con.commit();
        } catch (SQLException e) {
            result = 0;
            try {
                con.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            DBUtil.close(null, pst, con);
        }
        return result;
    }
    
    @Override
    public Business getBusinessByIdByPass(Integer businessId,String password) {
        Business business = null;
        String sql = "select * from business where businessId=? and password=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql.toString());
            pst.setInt(1, businessId);
            pst.setString(2, password);
            rs = pst.executeQuery();
            while(rs.next()) {
                business = new Business();
                business.setBusinessId(rs.getInt("businessId"));
                business.setPassword(rs.getString("password"));
                business.setBusinessName(rs.getString("businessName"));
                business.setBusinessAddress(rs.getString("businessAddress"));
                business.setBusinessExplain(rs.getString("businessExplain"));
                business.setStarPrice(rs.getDouble("starPrice"));
                business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, con);
        }
        return business;
    }
    
    @Override
    public Business getBusinessById(Integer businessId) {
        Business business = null;
        String sql = "select * from business where businessId=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql.toString());
            pst.setInt(1, businessId);
            rs = pst.executeQuery();
            while(rs.next()) {
                business = new Business();
                business.setBusinessId(rs.getInt("businessId"));
                business.setPassword(rs.getString("password"));
                business.setBusinessName(rs.getString("businessName"));
                business.setBusinessAddress(rs.getString("businessAddress"));
                business.setBusinessExplain(rs.getString("businessExplain"));
                business.setStarPrice(rs.getDouble("starPrice"));
                business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, con);
        }
        return business;
    }
    
    @Override
    public int updateBusiness(Business business) {
        int result = 0;
        String sql = "update business set businessName=?,businessAddress=?,businessExplain=?,starPrice=?,deliveryPrice=? where businessId=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setString(1, business.getBusinessName());
            pst.setString(2, business.getBusinessAddress());
            pst.setString(3, business.getBusinessExplain());
            pst.setDouble(4, business.getStarPrice());
            pst.setDouble(5, business.getDeliveryPrice());
            pst.setInt(6, business.getBusinessId());
            result = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, pst, con);
        }
        return result;
    }
    
    @Override
    public int updateBusinessByPassword(Integer businessId,String password) {
        int result = 0;
        String sql = "update business set password=? where businessId=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setString(1, password);
            pst.setInt(2, businessId);
            result = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, pst, con);
        }
        return result;
    }
}

4.2.2.Food

package com.neusoft.elm.dao;

import java.util.List;

import com.neusoft.elm.po.Food;

public interface FoodDao {

    public List<Food> listFoodByBusinessId(Integer businessId);
    public int saveFood(Food food);
    public Food getFoodById(Integer foodId);
    public int updateFood(Food food);
    public int removeFood(Integer foodId);
}
package com.neusoft.elm.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.neusoft.elm.dao.FoodDao;
import com.neusoft.elm.po.Food;
import com.neusoft.elm.util.DBUtil;

public class FoodDaoImpl implements FoodDao{
    
    private Connection con = null;
    private PreparedStatement pst = null;
    private ResultSet rs = null;

    @Override
    public List<Food> listFoodByBusinessId(Integer businessId) {
        List<Food> list = new ArrayList<>();
        String sql = "select * from food where businessId=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setInt(1, businessId);
            rs = pst.executeQuery();
            while(rs.next()) {
                Food food = new Food();
                food.setFoodId(rs.getInt("foodId"));
                food.setFoodName(rs.getString("foodName"));
                food.setFoodExplain(rs.getString("foodExplain"));
                food.setFoodPrice(rs.getDouble("foodPrice"));
                food.setBusinessId(rs.getInt("businessId"));
                list.add(food);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, con);
        }
        return list;
    }
    
    @Override
    public int saveFood(Food food) {
        int result = 0;
        String sql = "insert into food values(null,?,?,?,?)";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setString(1, food.getFoodName());
            pst.setString(2, food.getFoodExplain());
            pst.setDouble(3, food.getFoodPrice());
            pst.setInt(4, food.getBusinessId());
            result = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, pst, con);
        }
        return result;
    }
    
    @Override
    public Food getFoodById(Integer foodId) {
        Food food = null;
        String sql = "select * from food where foodId=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setInt(1, foodId);
            rs = pst.executeQuery();
            while(rs.next()) {
                food = new Food();
                food.setFoodId(rs.getInt("foodId"));
                food.setFoodName(rs.getString("foodName"));
                food.setFoodExplain(rs.getString("foodExplain"));
                food.setFoodPrice(rs.getDouble("foodPrice"));
                food.setBusinessId(rs.getInt("businessId"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, con);
        }
        return food;
    }
    
    @Override
    public int updateFood(Food food) {
        int result = 0;
        String sql = "update food set foodName=?,foodExplain=?,foodPrice=? where foodId=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setString(1, food.getFoodName());
            pst.setString(2, food.getFoodExplain());
            pst.setDouble(3, food.getFoodPrice());
            pst.setInt(4, food.getFoodId());
            result = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, pst, con);
        }
        return result;
    }
    
    @Override
    public int removeFood(Integer foodId) {
        int result = 0;
        String sql = "delete from food where foodId=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setInt(1, foodId);
            result = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, pst, con);
        }
        return result;
    }
}

4.2.3.Admin

package com.neusoft.elm.dao;

import com.neusoft.elm.po.Admin;

public interface AdminDao {

    public Admin getAdminByNameByPass(String adminName,String password);
}
package com.neusoft.elm.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.neusoft.elm.dao.AdminDao;
import com.neusoft.elm.po.Admin;
import com.neusoft.elm.util.DBUtil;

public class AdminDaoImpl implements AdminDao{
    
    private Connection con = null;
    private PreparedStatement pst = null;
    private ResultSet rs = null;

    @Override
    public Admin getAdminByNameByPass(String adminName, String password) {
        Admin admin = null;
        String sql = "select * from admin where adminName=? and password=?";
        try {
            con = DBUtil.getConnection();
            pst = con.prepareStatement(sql);
            pst.setString(1, adminName);
            pst.setString(2, password);
            rs = pst.executeQuery();
            while(rs.next()) {
                admin = new Admin();
                admin.setAdminId(rs.getInt("adminId"));
                admin.setAdminName(rs.getString("adminName"));
                admin.setPassword(rs.getString("password"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, con);
        }
        return admin;
    }
}

4.3.View層代碼

4.3.1.Business

package com.neusoft.elm.view;

import com.neusoft.elm.po.Business;

public interface BusinessView {

    public void listBusinessAll();
    public void listBusiness();
    public void saveBusiness();
    public void removeBusiness();
    
    public Business login();
    public void showBusiness(Integer businessId);
    public void editBusiness(Integer businessId);
    public void updateBusinessByPassword(Integer businessId);
}
package com.neusoft.elm.view.impl;

import java.util.List;
import java.util.Scanner;

import com.neusoft.elm.dao.BusinessDao;
import com.neusoft.elm.dao.impl.BusinessDaoImpl;
import com.neusoft.elm.po.Business;
import com.neusoft.elm.view.BusinessView;

public class BusinessViewImpl implements BusinessView{
    
    private Scanner input = new Scanner(System.in);

    @Override
    public void listBusinessAll() {
        BusinessDao dao = new BusinessDaoImpl();
        List<Business> list = dao.listBusiness(null,null);
        System.out.println("商家編號\t商家名稱\t商家地址\t商家介紹\t起送費\t配送費");
        for(Business b : list) {
            System.out.println(b.getBusinessId()+"\t"+b.getBusinessName()+"\t"+b.getBusinessAddress()+"\t"+b.getBusinessExplain()+"\t"+b.getStarPrice()+"\t"+b.getDeliveryPrice());
        }
    }
    
    @Override
    public void listBusiness() {
        String businessName = "";
        String businessAddress = "";
        
        String inputStr = "";
        System.out.println("是否需要輸入商家名稱關(guān)鍵詞(y/n):");
        inputStr = input.next();
        if(inputStr.equals("y")) {
            System.out.println("請輸入商家名稱關(guān)鍵詞:");
            businessName = input.next();
        }
        
        System.out.println("是否需要輸入商家地址關(guān)鍵詞(y/n):");
        inputStr = input.next();
        if(inputStr.equals("y")) {
            System.out.println("請輸入商家地址關(guān)鍵詞:");
            businessAddress = input.next();
        }
        
        BusinessDao dao = new BusinessDaoImpl();
        List<Business> list = dao.listBusiness(businessName, businessAddress);
        System.out.println("商家編號\t商家名稱\t商家地址\t商家介紹\t起送費\t配送費");
        for(Business b : list) {
            System.out.println(b.getBusinessId()+"\t"+b.getBusinessName()+"\t"+b.getBusinessAddress()+"\t"+b.getBusinessExplain()+"\t"+b.getStarPrice()+"\t"+b.getDeliveryPrice());
        }
    }
    
    @Override
    public void saveBusiness() {
        System.out.println("請輸入商家名稱:");
        String businessName = input.next();
        BusinessDao dao = new BusinessDaoImpl();
        int businessId = dao.saveBusiness(businessName);
        if(businessId>0) {
            System.out.println("新建商家成功坎匿!商家編號為:"+businessId);
        }else {
            System.out.println("新建商家失敗雷激!");
        }
    }
    
    @Override
    public void removeBusiness() {
        System.out.println("請輸入商家編號:");
        int businessId = input.nextInt();
        
        BusinessDao dao = new BusinessDaoImpl();
        System.out.println("確認要刪除嗎(y/n):");
        if(input.next().equals("y")) {
            int result = dao.removeBusiness(businessId);
            if(result==1) {
                System.out.println("刪除商家成功替蔬!");
            }else {
                System.out.println("刪除商家失敗屎暇!");
            }
        }
    }
    
    @Override
    public Business login() {
        System.out.println("請輸入商家編號:");
        int businessId = input.nextInt();
        System.out.println("請輸入密碼:");
        String password = input.next();
        
        BusinessDao dao = new BusinessDaoImpl();
        return dao.getBusinessByIdByPass(businessId, password);
    }
    
    @Override
    public void showBusiness(Integer businessId) {
        BusinessDao dao = new BusinessDaoImpl();
        Business business = dao.getBusinessById(businessId);
        System.out.println(business);
    }
    
    @Override
    public void editBusiness(Integer businessId) {
        //先將商家信息查詢出來顯示承桥,然后用戶才能更新
        BusinessDao dao = new BusinessDaoImpl();
        Business business = dao.getBusinessById(businessId);
        System.out.println(business);
        
        String inputStr = "";
        System.out.println("是否修改商家名稱(y/n):");
        inputStr = input.next();
        if(inputStr.equals("y")) {
            System.out.println("請輸入新的商家名稱:");
            business.setBusinessName(input.next());
        }
        
        System.out.println("是否修改商家地址(y/n):");
        inputStr = input.next();
        if(inputStr.equals("y")) {
            System.out.println("請輸入新的商家地址:");
            business.setBusinessAddress(input.next());
        }
        
        System.out.println("是否修改商家介紹(y/n):");
        inputStr = input.next();
        if(inputStr.equals("y")) {
            System.out.println("請輸入新的商家介紹:");
            business.setBusinessExplain(input.next());
        }
        
        System.out.println("是否修改起送費(y/n):");
        inputStr = input.next();
        if(inputStr.equals("y")) {
            System.out.println("請輸入新的起送費:");
            business.setStarPrice(input.nextDouble());
        }
        
        System.out.println("是否修改配送費(y/n):");
        inputStr = input.next();
        if(inputStr.equals("y")) {
            System.out.println("請輸入新的配送費:");
            business.setDeliveryPrice(input.nextDouble());
        }
        
        int result = dao.updateBusiness(business);
        if(result>0) {
            System.out.println("\n修改商家信息成功!\n");
        }else {
            System.out.println("\n修改商家信息失敻俊凶异!\n");
        }
    }
    
    @Override
    public void updateBusinessByPassword(Integer businessId) {
        BusinessDao dao = new BusinessDaoImpl();
        Business business = dao.getBusinessById(businessId);
        
        System.out.println("\n請輸入舊密碼:");
        String oldPass = input.next();
        System.out.println("\n請輸入新密碼:");
        String password = input.next();
        System.out.println("\n請再次輸入新密碼:");
        String beginPassword = input.next();
        
        if(!business.getPassword().equals(oldPass)) {
            System.out.println("\n舊密碼輸入錯誤!");
        }else if(!password.equals(beginPassword)) {
            System.out.println("\n兩次輸入密碼不一致挤巡!");
        }else {
            int result = dao.updateBusinessByPassword(businessId, password);
            if(result>0) {
                System.out.println("\n修改密碼成功剩彬!");
            }else {
                System.out.println("\n修改密碼失敗矿卑!");
            }
        }
    }
}

4.3.2.Food

package com.neusoft.elm.view;

import java.util.List;

import com.neusoft.elm.po.Food;

public interface FoodView {

    public List<Food> showFoodList(Integer businessId);
    public void saveFood(Integer businessId);
    public void updateFood(Integer businessId);
    public void removeFood(Integer businessId);
}
package com.neusoft.elm.view.impl;

import java.util.List;
import java.util.Scanner;

import com.neusoft.elm.dao.FoodDao;
import com.neusoft.elm.dao.impl.FoodDaoImpl;
import com.neusoft.elm.po.Food;
import com.neusoft.elm.view.FoodView;

public class FoodViewImpl implements FoodView{
    
    private Scanner input = new Scanner(System.in);

    @Override
    public List<Food> showFoodList(Integer businessId) {
        FoodDao dao = new FoodDaoImpl();
        List<Food> list = dao.listFoodByBusinessId(businessId);
        System.out.println("食品編號\t食品名稱\t食品介紹\t食品價格");
        for(Food food : list) {
            System.out.println(food.getFoodId()+"\t"+food.getFoodName()+"\t"+food.getFoodExplain()+"\t"+food.getFoodPrice());
        }
        return list;
    }
    
    @Override
    public void saveFood(Integer businessId) {
        Food food = new Food();
        System.out.println("請輸入食品名稱:");
        food.setFoodName(input.next());
        System.out.println("請輸入食品介紹:");
        food.setFoodExplain(input.next());
        System.out.println("請輸入食品價格:");
        food.setFoodPrice(input.nextDouble());
        food.setBusinessId(businessId);
        
        FoodDao dao = new FoodDaoImpl();
        int result = dao.saveFood(food);
        if(result>0) {
            System.out.println("\n新增食品成功喉恋!\n");
        }else {
            System.out.println("\n新增食品失敗母廷!\n");
        }
    }
    
    @Override
    public void updateFood(Integer businessId) {
        FoodDao dao = new FoodDaoImpl();
        List<Food> list = showFoodList(businessId);
        
        if(list.size()==0) {
            System.out.println("沒有任何食品瀑晒!");
        }else {
            System.out.println("請選擇要更新的食品編號:");
            int foodId = input.nextInt();
            Food food = dao.getFoodById(foodId);
            System.out.println(food);
            
            String inputStr = "";
            System.out.println("是否更新食品名稱(y/n):");
            inputStr = input.next();
            if(inputStr.equals("y")) {
                System.out.println("請輸入新的食品名稱:");
                food.setFoodName(input.next());
            }
            
            System.out.println("是否更新食品介紹(y/n):");
            inputStr = input.next();
            if(inputStr.equals("y")) {
                System.out.println("請輸入新的食品介紹:");
                food.setFoodExplain(input.next());
            }
            
            System.out.println("是否更新食品價格(y/n):");
            inputStr = input.next();
            if(inputStr.equals("y")) {
                System.out.println("請輸入新的食品價格:");
                food.setFoodPrice(input.nextDouble());
            }
            
            int result = dao.updateFood(food);
            if(result>0) {
                System.out.println("\n修改食品成功!\n");
            }else {
                System.out.println("\n修改食品失斉且狻苔悦!\n");
            }
        }
    }
    
    @Override
    public void removeFood(Integer businessId) {
        FoodDao dao = new FoodDaoImpl();
        List<Food> list = showFoodList(businessId);
        
        if(list.size()==0) {
            System.out.println("沒有任何食品!");
        }else {
            System.out.println("請選擇要刪除的食品編號:");
            int foodId = input.nextInt();
            
            System.out.println("確認要刪除嗎(y/n):");
            if(input.next().equals("y")) {
                int result = dao.removeFood(foodId);
                if(result>0) {
                    System.out.println("\n刪除食品成功椎咧!\n");
                }else {
                    System.out.println("\n刪除食品失斁料辍!\n");
                }
            }
        }
    }
}

4.3.3.Admin

package com.neusoft.elm.view;

import com.neusoft.elm.po.Admin;

public interface AdminView {

    public Admin login();
}
package com.neusoft.elm.view.impl;

import java.util.Scanner;

import com.neusoft.elm.dao.AdminDao;
import com.neusoft.elm.dao.impl.AdminDaoImpl;
import com.neusoft.elm.po.Admin;
import com.neusoft.elm.view.AdminView;

public class AdminViewImpl implements AdminView{
    
    private Scanner input = new Scanner(System.in);

    @Override
    public Admin login() {
        System.out.println("請輸入管理員名稱:");
        String adminName = input.next();
        System.out.println("請輸入密碼:");
        String password = input.next();
        
        AdminDao dao = new AdminDaoImpl();
        return dao.getAdminByNameByPass(adminName, password);
    }
}

4.4.程序入口

4.4.1.管理員入口

package com.neusoft.elm;

import java.util.Scanner;

import com.neusoft.elm.po.Admin;
import com.neusoft.elm.view.AdminView;
import com.neusoft.elm.view.BusinessView;
import com.neusoft.elm.view.impl.AdminViewImpl;
import com.neusoft.elm.view.impl.BusinessViewImpl;

public class ElmAdminEntry {

    public void work() {
        Scanner input = new Scanner(System.in);
        
        System.out.println("---------------------------------------------------------");
        System.out.println("|\t\t\t 餓了么后臺管理系統(tǒng)  \t\t\t|");
        System.out.println("---------------------------------------------------------");
        
        AdminView adminView = new AdminViewImpl();
        BusinessView businessView = new BusinessViewImpl();
        Admin admin = adminView.login();
        
        //登錄
        if(admin!=null) {
            int menu = 0;
            while(menu!=5) {
                //輸出主菜單
                System.out.println("\n========= 1.所有商家列表=2.搜索商家=3.新建商家=4.刪除商家=5.退出系統(tǒng) =========");
                System.out.println("請輸入你的選擇:");
                menu = input.nextInt();
                switch(menu) {
                    case 1:
                        businessView.listBusinessAll();
                        break;
                    case 2:
                        businessView.listBusiness();
                        break;
                    case 3:
                        businessView.saveBusiness();
                        break;
                    case 4:
                        businessView.removeBusiness();
                        break;
                    case 5:
                        System.out.println("------------------------歡迎下次光臨餓了么后臺管理系統(tǒng)-----------------------");
                        break;  
                    default:
                        System.out.println("沒有這個選項勤讽!\n");
                        break;
                }
            }
            
        }else {
            System.out.println("\n管理員名稱或密碼輸入錯誤!\n");
        }
    }
    
    public static void main(String[] args) {
        new ElmAdminEntry().work();
    }

}

4.4.2.商家入口

package com.neusoft.elm;

import java.util.Scanner;

import com.neusoft.elm.po.Business;
import com.neusoft.elm.view.BusinessView;
import com.neusoft.elm.view.FoodView;
import com.neusoft.elm.view.impl.BusinessViewImpl;
import com.neusoft.elm.view.impl.FoodViewImpl;

public class ElmBusinessEntry {

    public void work() {
        Scanner input = new Scanner(System.in);
        
        System.out.println("---------------------------------------------------------");
        System.out.println("|\t\t\t 餓了么后臺管理系統(tǒng)  \t\t\t|");
        System.out.println("---------------------------------------------------------");
        
        BusinessView businessView = new BusinessViewImpl();
        
        //商家登錄
        Business business = businessView.login();
        
        if(business!=null) {
            int menu = 0;
            while(menu!=5) {
                //輸出一級菜單
                System.out.println("\n======= 一級菜單(商家管理)1.查看商家信息=2.修改商家信息=3.更新密碼=4.所屬商品管理=5.退出系統(tǒng)=======");
                System.out.println("請輸入你的選擇:");
                menu = input.nextInt();
                
                switch(menu) {
                    case 1:
                        businessView.showBusiness(business.getBusinessId());
                        break;
                    case 2:
                        businessView.editBusiness(business.getBusinessId());
                        break;
                    case 3:
                        businessView.updateBusinessByPassword(business.getBusinessId());
                        break;
                    case 4:
                        foodManager(business.getBusinessId());
                        break;
                    case 5:
                        System.out.println("------------------------歡迎下次光臨餓了么后臺管理系統(tǒng)-----------------------");
                        break;  
                    default:
                        System.out.println("沒有這個選項蟋座!\n");
                        break;
                }
            }
        }else {
            System.out.println("商家編號或密碼輸入錯誤!");
        }
        
    }
    
    private void foodManager(int businessId) {
        Scanner input = new Scanner(System.in);
        
        FoodView foodView = new FoodViewImpl();
        
        int menu = 0;
        while(menu!=5) {
            //輸出二級菜單
            System.out.println("\n======= 二級菜單(食品管理)1.查看食品列表=2.新增食品=3.修改食品=4.刪除食品=5.返回一級菜單 =======");
            System.out.println("請輸入你的選擇:");
            menu = input.nextInt();
            
            switch(menu) {
                case 1:
                    foodView.showFoodList(businessId);
                    break;
                case 2:
                    foodView.saveFood(businessId);
                    break;
                case 3:
                    foodView.updateFood(businessId);
                    break;
                case 4:
                    foodView.removeFood(businessId);
                    break;
                case 5:
                    break;  
                default:
                    System.out.println("沒有這個選項脚牍!\n");
                    break;
            }
        }
    }
    
    public static void main(String[] args) {
        new ElmBusinessEntry().work();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末向臀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诸狭,更是在濱河造成了極大的恐慌券膀,老刑警劉巖君纫,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芹彬,居然都是意外死亡蓄髓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門舒帮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來会喝,“玉大人,你說我怎么就攤上這事玩郊≈矗” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵译红,是天一觀的道長蔚万。 經(jīng)常有香客問我,道長临庇,這世上最難降的妖魔是什么反璃? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮假夺,結(jié)果婚禮上淮蜈,老公的妹妹穿的比我還像新娘。我一直安慰自己已卷,他們只是感情好梧田,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侧蘸,像睡著了一般裁眯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讳癌,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天穿稳,我揣著相機與錄音,去河邊找鬼晌坤。 笑死逢艘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的骤菠。 我是一名探鬼主播它改,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼商乎!你這毒婦竟也來了央拖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鲜戒,沒想到半個月后专控,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡袍啡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年踩官,在試婚紗的時候發(fā)現(xiàn)自己被綠了却桶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片境输。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖颖系,靈堂內(nèi)的尸體忽然破棺而出嗅剖,到底是詐尸還是另有隱情,我是刑警寧澤嘁扼,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布信粮,位于F島的核電站,受9級特大地震影響趁啸,放射性物質(zhì)發(fā)生泄漏强缘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一不傅、第九天 我趴在偏房一處隱蔽的房頂上張望旅掂。 院中可真熱鬧,春花似錦访娶、人聲如沸商虐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秘车。三九已至,卻和暖如春劫哼,著一層夾襖步出監(jiān)牢的瞬間叮趴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工权烧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疫向,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓豪嚎,卻偏偏與公主長得像搔驼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子侈询,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354