1.项目概述

1.1.项目演示

  1. 运行 “饿了么商家后台管理系统” ,演示应用程序效果。

    1.2.项目目标

  2. 本项目为课程级贯穿项目中的第一个项目(JDBC项目、前端项目、javaWeb项目)。

  3. 本项目完成后,学员将能够使用javaSE+JDBC+MySql技术开发基于控制台的C/S结构应用程序。

    1.3.项目中所涉及到相关知识点

  • 封装JDBC
  • 封装DAO
  • 领域模型中的实体类
  • 增删改查操作
  • 多条件模糊查询
  • JDBC事务管理
  • 表的主外键关系

    1.4.数据库设计

    1.4.1.DB一览表

    | No | 表名称 | 中文名 | 说明 | | :—- | :—- | :—- | :—- | | 1 | business | 商家表 | 存储所有商家信息 | | 2 | food | 食品表 | 存储每个商家所拥有的所有食品信息 | | 3 | admin | 管理员表 | 存储管理员信息 |

1.5.2.表结构

约束类型标识: PK:primary key 主键 FK:foreign key 外键 NN:not null 非空 UQ:unique 唯一索引 AI:auto increment 自增

1.5.2.1.business(商家表)

No 字段名 数据类型 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 字段名 数据类型 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 字段名 数据类型 size 默认値 约束 说明
1 adminId int PK、AI、NN 管理员编号
2 adminName varchar 20 NN、UQ 管理员名称
3 password varchar 20 NN 密码

2.项目搭建

2.1.开发环境检查

  1. 开发工具:SpringToolSuite(STS)
  2. 检查开发工具的jdk配置:jdk8
  3. 检查开发工具的文件编码配置:utf-8

    2.2.搭建javaWeb工程总体架构

    2.2.1.工程类型

    创建工程类型:java Project

    2.2.2.导入jar包

  4. mysql-connector-java-bin.jar

    2.2.3.工程目录结构

    JavaSE-项目实战课件 - 图1

    4.项目代码

    4.1.领域模型(PO)

    4.1.1.Business

    1. package com.neusoft.elm.po;
    2. public class Business {
    3. private Integer businessId;
    4. private String password;
    5. private String businessName;
    6. private String businessAddress;
    7. private String businessExplain;
    8. private Double starPrice;
    9. private Double deliveryPrice;
    10. @Override
    11. public String toString() {
    12. return "\n商家编号:"+this.businessId+
    13. "\n商家名称:"+this.businessName+
    14. "\n商家地址:"+this.businessAddress+
    15. "\n商家介绍:"+this.businessExplain+
    16. "\n起送费:¥"+this.starPrice+
    17. "\n配送费:¥"+this.deliveryPrice+"\n";
    18. }
    19. //get、set ... ...
    20. }

    4.1.2.Food

    1. package com.neusoft.elm.po;
    2. public class Food {
    3. private Integer foodId;
    4. private String foodName;
    5. private String foodExplain;
    6. private Double foodPrice;
    7. private Integer businessId;
    8. @Override
    9. public String toString() {
    10. return "\n食品编号:"+this.foodId+
    11. "\n食品名称:"+this.foodName+
    12. "\n食品介绍:"+this.foodExplain+
    13. "\n食品价格:"+this.foodPrice+
    14. "\n所属商家:"+this.businessId;
    15. }
    16. //get、set ... ...
    17. }

    4.1.3.Admin

    1. package com.neusoft.elm.po;
    2. public class Admin {
    3. private Integer adminId;
    4. private String adminName;
    5. private String password;
    6. //get、set ... ...
    7. }

    4.2.Dao层代码

    4.2.1.Business

    1. package com.neusoft.elm.dao;
    2. import java.util.List;
    3. import com.neusoft.elm.po.Business;
    4. public interface BusinessDao {
    5. public List<Business> listBusiness(String businessName,String businessAddress);
    6. public int saveBusiness(String businessName);
    7. public int removeBusiness(int businessId);
    8. public Business getBusinessByIdByPass(Integer businessId,String password);
    9. public Business getBusinessById(Integer businessId);
    10. public int updateBusiness(Business business);
    11. public int updateBusinessByPassword(Integer businessId,String password);
    12. }
    1. package com.neusoft.elm.dao.impl;
    2. import java.sql.Connection;
    3. import java.sql.PreparedStatement;
    4. import java.sql.ResultSet;
    5. import java.sql.SQLException;
    6. import java.util.ArrayList;
    7. import java.util.List;
    8. import com.neusoft.elm.dao.BusinessDao;
    9. import com.neusoft.elm.po.Admin;
    10. import com.neusoft.elm.po.Business;
    11. import com.neusoft.elm.util.DBUtil;
    12. public class BusinessDaoImpl implements BusinessDao{
    13. private Connection con = null;
    14. private PreparedStatement pst = null;
    15. private ResultSet rs = null;
    16. @Override
    17. public List<Business> listBusiness(String businessName,String businessAddress) {
    18. List<Business> list = new ArrayList<>();
    19. StringBuffer sql = new StringBuffer("select * from business where 1=1 ");
    20. if(businessName!=null&&!businessName.equals("")) {
    21. sql.append(" and businessName like '%"+businessName+"%' ");
    22. }
    23. if(businessAddress!=null&&!businessAddress.equals("")) {
    24. sql.append(" and businessAddress like '%"+businessAddress+"%' ");
    25. }
    26. try {
    27. con = DBUtil.getConnection();
    28. pst = con.prepareStatement(sql.toString());
    29. rs = pst.executeQuery();
    30. while(rs.next()) {
    31. Business business = new Business();
    32. business.setBusinessId(rs.getInt("businessId"));
    33. business.setPassword(rs.getString("password"));
    34. business.setBusinessName(rs.getString("businessName"));
    35. business.setBusinessAddress(rs.getString("businessAddress"));
    36. business.setBusinessExplain(rs.getString("businessExplain"));
    37. business.setStarPrice(rs.getDouble("starPrice"));
    38. business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
    39. list.add(business);
    40. }
    41. } catch (SQLException e) {
    42. e.printStackTrace();
    43. } finally {
    44. DBUtil.close(rs, pst, con);
    45. }
    46. return list;
    47. }
    48. @Override
    49. public int saveBusiness(String businessName) {
    50. int businessId = 0;
    51. String sql = "insert into business(businessName,password) values(?,'123')";
    52. try {
    53. con = DBUtil.getConnection();
    54. //设置返回自增长列值
    55. pst = con.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
    56. pst.setString(1, businessName);
    57. pst.executeUpdate();
    58. //获取自增长列值(一行一列)
    59. rs = pst.getGeneratedKeys();
    60. if(rs.next()) {
    61. businessId = rs.getInt(1);
    62. }
    63. } catch (SQLException e) {
    64. e.printStackTrace();
    65. } finally {
    66. DBUtil.close(rs, pst, con);
    67. }
    68. return businessId;
    69. }
    70. @Override
    71. public int removeBusiness(int businessId) {
    72. int result = 0;
    73. String delFootSql = "delete from food where businessId=?";
    74. String delBusinessSql = "delete from business where businessId=?";
    75. try {
    76. con = DBUtil.getConnection();
    77. //开启一个事务
    78. con.setAutoCommit(false);
    79. pst = con.prepareStatement(delFootSql);
    80. pst.setInt(1, businessId);
    81. pst.executeUpdate();
    82. pst = con.prepareStatement(delBusinessSql);
    83. pst.setInt(1, businessId);
    84. result = pst.executeUpdate();
    85. con.commit();
    86. } catch (SQLException e) {
    87. result = 0;
    88. try {
    89. con.rollback();
    90. } catch (SQLException e1) {
    91. e1.printStackTrace();
    92. }
    93. e.printStackTrace();
    94. } finally {
    95. DBUtil.close(null, pst, con);
    96. }
    97. return result;
    98. }
    99. @Override
    100. public Business getBusinessByIdByPass(Integer businessId,String password) {
    101. Business business = null;
    102. String sql = "select * from business where businessId=? and password=?";
    103. try {
    104. con = DBUtil.getConnection();
    105. pst = con.prepareStatement(sql.toString());
    106. pst.setInt(1, businessId);
    107. pst.setString(2, password);
    108. rs = pst.executeQuery();
    109. while(rs.next()) {
    110. business = new Business();
    111. business.setBusinessId(rs.getInt("businessId"));
    112. business.setPassword(rs.getString("password"));
    113. business.setBusinessName(rs.getString("businessName"));
    114. business.setBusinessAddress(rs.getString("businessAddress"));
    115. business.setBusinessExplain(rs.getString("businessExplain"));
    116. business.setStarPrice(rs.getDouble("starPrice"));
    117. business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
    118. }
    119. } catch (SQLException e) {
    120. e.printStackTrace();
    121. } finally {
    122. DBUtil.close(rs, pst, con);
    123. }
    124. return business;
    125. }
    126. @Override
    127. public Business getBusinessById(Integer businessId) {
    128. Business business = null;
    129. String sql = "select * from business where businessId=?";
    130. try {
    131. con = DBUtil.getConnection();
    132. pst = con.prepareStatement(sql.toString());
    133. pst.setInt(1, businessId);
    134. rs = pst.executeQuery();
    135. while(rs.next()) {
    136. business = new Business();
    137. business.setBusinessId(rs.getInt("businessId"));
    138. business.setPassword(rs.getString("password"));
    139. business.setBusinessName(rs.getString("businessName"));
    140. business.setBusinessAddress(rs.getString("businessAddress"));
    141. business.setBusinessExplain(rs.getString("businessExplain"));
    142. business.setStarPrice(rs.getDouble("starPrice"));
    143. business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
    144. }
    145. } catch (SQLException e) {
    146. e.printStackTrace();
    147. } finally {
    148. DBUtil.close(rs, pst, con);
    149. }
    150. return business;
    151. }
    152. @Override
    153. public int updateBusiness(Business business) {
    154. int result = 0;
    155. String sql = "update business set businessName=?,businessAddress=?,businessExplain=?,starPrice=?,deliveryPrice=? where businessId=?";
    156. try {
    157. con = DBUtil.getConnection();
    158. pst = con.prepareStatement(sql);
    159. pst.setString(1, business.getBusinessName());
    160. pst.setString(2, business.getBusinessAddress());
    161. pst.setString(3, business.getBusinessExplain());
    162. pst.setDouble(4, business.getStarPrice());
    163. pst.setDouble(5, business.getDeliveryPrice());
    164. pst.setInt(6, business.getBusinessId());
    165. result = pst.executeUpdate();
    166. } catch (SQLException e) {
    167. e.printStackTrace();
    168. } finally {
    169. DBUtil.close(null, pst, con);
    170. }
    171. return result;
    172. }
    173. @Override
    174. public int updateBusinessByPassword(Integer businessId,String password) {
    175. int result = 0;
    176. String sql = "update business set password=? where businessId=?";
    177. try {
    178. con = DBUtil.getConnection();
    179. pst = con.prepareStatement(sql);
    180. pst.setString(1, password);
    181. pst.setInt(2, businessId);
    182. result = pst.executeUpdate();
    183. } catch (SQLException e) {
    184. e.printStackTrace();
    185. } finally {
    186. DBUtil.close(null, pst, con);
    187. }
    188. return result;
    189. }
    190. }

    4.2.2.Food

    1. package com.neusoft.elm.dao;
    2. import java.util.List;
    3. import com.neusoft.elm.po.Food;
    4. public interface FoodDao {
    5. public List<Food> listFoodByBusinessId(Integer businessId);
    6. public int saveFood(Food food);
    7. public Food getFoodById(Integer foodId);
    8. public int updateFood(Food food);
    9. public int removeFood(Integer foodId);
    10. }
    1. package com.neusoft.elm.dao.impl;
    2. import java.sql.Connection;
    3. import java.sql.PreparedStatement;
    4. import java.sql.ResultSet;
    5. import java.sql.SQLException;
    6. import java.util.ArrayList;
    7. import java.util.List;
    8. import com.neusoft.elm.dao.FoodDao;
    9. import com.neusoft.elm.po.Food;
    10. import com.neusoft.elm.util.DBUtil;
    11. public class FoodDaoImpl implements FoodDao{
    12. private Connection con = null;
    13. private PreparedStatement pst = null;
    14. private ResultSet rs = null;
    15. @Override
    16. public List<Food> listFoodByBusinessId(Integer businessId) {
    17. List<Food> list = new ArrayList<>();
    18. String sql = "select * from food where businessId=?";
    19. try {
    20. con = DBUtil.getConnection();
    21. pst = con.prepareStatement(sql);
    22. pst.setInt(1, businessId);
    23. rs = pst.executeQuery();
    24. while(rs.next()) {
    25. Food food = new Food();
    26. food.setFoodId(rs.getInt("foodId"));
    27. food.setFoodName(rs.getString("foodName"));
    28. food.setFoodExplain(rs.getString("foodExplain"));
    29. food.setFoodPrice(rs.getDouble("foodPrice"));
    30. food.setBusinessId(rs.getInt("businessId"));
    31. list.add(food);
    32. }
    33. } catch (SQLException e) {
    34. e.printStackTrace();
    35. } finally {
    36. DBUtil.close(rs, pst, con);
    37. }
    38. return list;
    39. }
    40. @Override
    41. public int saveFood(Food food) {
    42. int result = 0;
    43. String sql = "insert into food values(null,?,?,?,?)";
    44. try {
    45. con = DBUtil.getConnection();
    46. pst = con.prepareStatement(sql);
    47. pst.setString(1, food.getFoodName());
    48. pst.setString(2, food.getFoodExplain());
    49. pst.setDouble(3, food.getFoodPrice());
    50. pst.setInt(4, food.getBusinessId());
    51. result = pst.executeUpdate();
    52. } catch (SQLException e) {
    53. e.printStackTrace();
    54. } finally {
    55. DBUtil.close(null, pst, con);
    56. }
    57. return result;
    58. }
    59. @Override
    60. public Food getFoodById(Integer foodId) {
    61. Food food = null;
    62. String sql = "select * from food where foodId=?";
    63. try {
    64. con = DBUtil.getConnection();
    65. pst = con.prepareStatement(sql);
    66. pst.setInt(1, foodId);
    67. rs = pst.executeQuery();
    68. while(rs.next()) {
    69. food = new Food();
    70. food.setFoodId(rs.getInt("foodId"));
    71. food.setFoodName(rs.getString("foodName"));
    72. food.setFoodExplain(rs.getString("foodExplain"));
    73. food.setFoodPrice(rs.getDouble("foodPrice"));
    74. food.setBusinessId(rs.getInt("businessId"));
    75. }
    76. } catch (SQLException e) {
    77. e.printStackTrace();
    78. } finally {
    79. DBUtil.close(rs, pst, con);
    80. }
    81. return food;
    82. }
    83. @Override
    84. public int updateFood(Food food) {
    85. int result = 0;
    86. String sql = "update food set foodName=?,foodExplain=?,foodPrice=? where foodId=?";
    87. try {
    88. con = DBUtil.getConnection();
    89. pst = con.prepareStatement(sql);
    90. pst.setString(1, food.getFoodName());
    91. pst.setString(2, food.getFoodExplain());
    92. pst.setDouble(3, food.getFoodPrice());
    93. pst.setInt(4, food.getFoodId());
    94. result = pst.executeUpdate();
    95. } catch (SQLException e) {
    96. e.printStackTrace();
    97. } finally {
    98. DBUtil.close(null, pst, con);
    99. }
    100. return result;
    101. }
    102. @Override
    103. public int removeFood(Integer foodId) {
    104. int result = 0;
    105. String sql = "delete from food where foodId=?";
    106. try {
    107. con = DBUtil.getConnection();
    108. pst = con.prepareStatement(sql);
    109. pst.setInt(1, foodId);
    110. result = pst.executeUpdate();
    111. } catch (SQLException e) {
    112. e.printStackTrace();
    113. } finally {
    114. DBUtil.close(null, pst, con);
    115. }
    116. return result;
    117. }
    118. }

    4.2.3.Admin

    1. package com.neusoft.elm.dao;
    2. import com.neusoft.elm.po.Admin;
    3. public interface AdminDao {
    4. public Admin getAdminByNameByPass(String adminName,String password);
    5. }
    1. package com.neusoft.elm.dao.impl;
    2. import java.sql.Connection;
    3. import java.sql.PreparedStatement;
    4. import java.sql.ResultSet;
    5. import java.sql.SQLException;
    6. import com.neusoft.elm.dao.AdminDao;
    7. import com.neusoft.elm.po.Admin;
    8. import com.neusoft.elm.util.DBUtil;
    9. public class AdminDaoImpl implements AdminDao{
    10. private Connection con = null;
    11. private PreparedStatement pst = null;
    12. private ResultSet rs = null;
    13. @Override
    14. public Admin getAdminByNameByPass(String adminName, String password) {
    15. Admin admin = null;
    16. String sql = "select * from admin where adminName=? and password=?";
    17. try {
    18. con = DBUtil.getConnection();
    19. pst = con.prepareStatement(sql);
    20. pst.setString(1, adminName);
    21. pst.setString(2, password);
    22. rs = pst.executeQuery();
    23. while(rs.next()) {
    24. admin = new Admin();
    25. admin.setAdminId(rs.getInt("adminId"));
    26. admin.setAdminName(rs.getString("adminName"));
    27. admin.setPassword(rs.getString("password"));
    28. }
    29. } catch (SQLException e) {
    30. e.printStackTrace();
    31. } finally {
    32. DBUtil.close(rs, pst, con);
    33. }
    34. return admin;
    35. }
    36. }

    4.3.View层代码

    4.3.1.Business

    1. package com.neusoft.elm.view;
    2. import com.neusoft.elm.po.Business;
    3. public interface BusinessView {
    4. public void listBusinessAll();
    5. public void listBusiness();
    6. public void saveBusiness();
    7. public void removeBusiness();
    8. public Business login();
    9. public void showBusiness(Integer businessId);
    10. public void editBusiness(Integer businessId);
    11. public void updateBusinessByPassword(Integer businessId);
    12. }
    1. package com.neusoft.elm.view.impl;
    2. import java.util.List;
    3. import java.util.Scanner;
    4. import com.neusoft.elm.dao.BusinessDao;
    5. import com.neusoft.elm.dao.impl.BusinessDaoImpl;
    6. import com.neusoft.elm.po.Business;
    7. import com.neusoft.elm.view.BusinessView;
    8. public class BusinessViewImpl implements BusinessView{
    9. private Scanner input = new Scanner(System.in);
    10. @Override
    11. public void listBusinessAll() {
    12. BusinessDao dao = new BusinessDaoImpl();
    13. List<Business> list = dao.listBusiness(null,null);
    14. System.out.println("商家编号\t商家名称\t商家地址\t商家介绍\t起送费\t配送费");
    15. for(Business b : list) {
    16. System.out.println(b.getBusinessId()+"\t"+b.getBusinessName()+"\t"+b.getBusinessAddress()+"\t"+b.getBusinessExplain()+"\t"+b.getStarPrice()+"\t"+b.getDeliveryPrice());
    17. }
    18. }
    19. @Override
    20. public void listBusiness() {
    21. String businessName = "";
    22. String businessAddress = "";
    23. String inputStr = "";
    24. System.out.println("是否需要输入商家名称关键词(y/n):");
    25. inputStr = input.next();
    26. if(inputStr.equals("y")) {
    27. System.out.println("请输入商家名称关键词:");
    28. businessName = input.next();
    29. }
    30. System.out.println("是否需要输入商家地址关键词(y/n):");
    31. inputStr = input.next();
    32. if(inputStr.equals("y")) {
    33. System.out.println("请输入商家地址关键词:");
    34. businessAddress = input.next();
    35. }
    36. BusinessDao dao = new BusinessDaoImpl();
    37. List<Business> list = dao.listBusiness(businessName, businessAddress);
    38. System.out.println("商家编号\t商家名称\t商家地址\t商家介绍\t起送费\t配送费");
    39. for(Business b : list) {
    40. System.out.println(b.getBusinessId()+"\t"+b.getBusinessName()+"\t"+b.getBusinessAddress()+"\t"+b.getBusinessExplain()+"\t"+b.getStarPrice()+"\t"+b.getDeliveryPrice());
    41. }
    42. }
    43. @Override
    44. public void saveBusiness() {
    45. System.out.println("请输入商家名称:");
    46. String businessName = input.next();
    47. BusinessDao dao = new BusinessDaoImpl();
    48. int businessId = dao.saveBusiness(businessName);
    49. if(businessId>0) {
    50. System.out.println("新建商家成功!商家编号为:"+businessId);
    51. }else {
    52. System.out.println("新建商家失败!");
    53. }
    54. }
    55. @Override
    56. public void removeBusiness() {
    57. System.out.println("请输入商家编号:");
    58. int businessId = input.nextInt();
    59. BusinessDao dao = new BusinessDaoImpl();
    60. System.out.println("确认要删除吗(y/n):");
    61. if(input.next().equals("y")) {
    62. int result = dao.removeBusiness(businessId);
    63. if(result==1) {
    64. System.out.println("删除商家成功!");
    65. }else {
    66. System.out.println("删除商家失败!");
    67. }
    68. }
    69. }
    70. @Override
    71. public Business login() {
    72. System.out.println("请输入商家编号:");
    73. int businessId = input.nextInt();
    74. System.out.println("请输入密码:");
    75. String password = input.next();
    76. BusinessDao dao = new BusinessDaoImpl();
    77. return dao.getBusinessByIdByPass(businessId, password);
    78. }
    79. @Override
    80. public void showBusiness(Integer businessId) {
    81. BusinessDao dao = new BusinessDaoImpl();
    82. Business business = dao.getBusinessById(businessId);
    83. System.out.println(business);
    84. }
    85. @Override
    86. public void editBusiness(Integer businessId) {
    87. //先将商家信息查询出来显示,然后用户才能更新
    88. BusinessDao dao = new BusinessDaoImpl();
    89. Business business = dao.getBusinessById(businessId);
    90. System.out.println(business);
    91. String inputStr = "";
    92. System.out.println("是否修改商家名称(y/n):");
    93. inputStr = input.next();
    94. if(inputStr.equals("y")) {
    95. System.out.println("请输入新的商家名称:");
    96. business.setBusinessName(input.next());
    97. }
    98. System.out.println("是否修改商家地址(y/n):");
    99. inputStr = input.next();
    100. if(inputStr.equals("y")) {
    101. System.out.println("请输入新的商家地址:");
    102. business.setBusinessAddress(input.next());
    103. }
    104. System.out.println("是否修改商家介绍(y/n):");
    105. inputStr = input.next();
    106. if(inputStr.equals("y")) {
    107. System.out.println("请输入新的商家介绍:");
    108. business.setBusinessExplain(input.next());
    109. }
    110. System.out.println("是否修改起送费(y/n):");
    111. inputStr = input.next();
    112. if(inputStr.equals("y")) {
    113. System.out.println("请输入新的起送费:");
    114. business.setStarPrice(input.nextDouble());
    115. }
    116. System.out.println("是否修改配送费(y/n):");
    117. inputStr = input.next();
    118. if(inputStr.equals("y")) {
    119. System.out.println("请输入新的配送费:");
    120. business.setDeliveryPrice(input.nextDouble());
    121. }
    122. int result = dao.updateBusiness(business);
    123. if(result>0) {
    124. System.out.println("\n修改商家信息成功!\n");
    125. }else {
    126. System.out.println("\n修改商家信息失败!\n");
    127. }
    128. }
    129. @Override
    130. public void updateBusinessByPassword(Integer businessId) {
    131. BusinessDao dao = new BusinessDaoImpl();
    132. Business business = dao.getBusinessById(businessId);
    133. System.out.println("\n请输入旧密码:");
    134. String oldPass = input.next();
    135. System.out.println("\n请输入新密码:");
    136. String password = input.next();
    137. System.out.println("\n请再次输入新密码:");
    138. String beginPassword = input.next();
    139. if(!business.getPassword().equals(oldPass)) {
    140. System.out.println("\n旧密码输入错误!");
    141. }else if(!password.equals(beginPassword)) {
    142. System.out.println("\n两次输入密码不一致!");
    143. }else {
    144. int result = dao.updateBusinessByPassword(businessId, password);
    145. if(result>0) {
    146. System.out.println("\n修改密码成功!");
    147. }else {
    148. System.out.println("\n修改密码失败!");
    149. }
    150. }
    151. }
    152. }

    4.3.2.Food

    1. package com.neusoft.elm.view;
    2. import java.util.List;
    3. import com.neusoft.elm.po.Food;
    4. public interface FoodView {
    5. public List<Food> showFoodList(Integer businessId);
    6. public void saveFood(Integer businessId);
    7. public void updateFood(Integer businessId);
    8. public void removeFood(Integer businessId);
    9. }
    1. package com.neusoft.elm.view.impl;
    2. import java.util.List;
    3. import java.util.Scanner;
    4. import com.neusoft.elm.dao.FoodDao;
    5. import com.neusoft.elm.dao.impl.FoodDaoImpl;
    6. import com.neusoft.elm.po.Food;
    7. import com.neusoft.elm.view.FoodView;
    8. public class FoodViewImpl implements FoodView{
    9. private Scanner input = new Scanner(System.in);
    10. @Override
    11. public List<Food> showFoodList(Integer businessId) {
    12. FoodDao dao = new FoodDaoImpl();
    13. List<Food> list = dao.listFoodByBusinessId(businessId);
    14. System.out.println("食品编号\t食品名称\t食品介绍\t食品价格");
    15. for(Food food : list) {
    16. System.out.println(food.getFoodId()+"\t"+food.getFoodName()+"\t"+food.getFoodExplain()+"\t"+food.getFoodPrice());
    17. }
    18. return list;
    19. }
    20. @Override
    21. public void saveFood(Integer businessId) {
    22. Food food = new Food();
    23. System.out.println("请输入食品名称:");
    24. food.setFoodName(input.next());
    25. System.out.println("请输入食品介绍:");
    26. food.setFoodExplain(input.next());
    27. System.out.println("请输入食品价格:");
    28. food.setFoodPrice(input.nextDouble());
    29. food.setBusinessId(businessId);
    30. FoodDao dao = new FoodDaoImpl();
    31. int result = dao.saveFood(food);
    32. if(result>0) {
    33. System.out.println("\n新增食品成功!\n");
    34. }else {
    35. System.out.println("\n新增食品失败!\n");
    36. }
    37. }
    38. @Override
    39. public void updateFood(Integer businessId) {
    40. FoodDao dao = new FoodDaoImpl();
    41. List<Food> list = showFoodList(businessId);
    42. if(list.size()==0) {
    43. System.out.println("没有任何食品!");
    44. }else {
    45. System.out.println("请选择要更新的食品编号:");
    46. int foodId = input.nextInt();
    47. Food food = dao.getFoodById(foodId);
    48. System.out.println(food);
    49. String inputStr = "";
    50. System.out.println("是否更新食品名称(y/n):");
    51. inputStr = input.next();
    52. if(inputStr.equals("y")) {
    53. System.out.println("请输入新的食品名称:");
    54. food.setFoodName(input.next());
    55. }
    56. System.out.println("是否更新食品介绍(y/n):");
    57. inputStr = input.next();
    58. if(inputStr.equals("y")) {
    59. System.out.println("请输入新的食品介绍:");
    60. food.setFoodExplain(input.next());
    61. }
    62. System.out.println("是否更新食品价格(y/n):");
    63. inputStr = input.next();
    64. if(inputStr.equals("y")) {
    65. System.out.println("请输入新的食品价格:");
    66. food.setFoodPrice(input.nextDouble());
    67. }
    68. int result = dao.updateFood(food);
    69. if(result>0) {
    70. System.out.println("\n修改食品成功!\n");
    71. }else {
    72. System.out.println("\n修改食品失败!\n");
    73. }
    74. }
    75. }
    76. @Override
    77. public void removeFood(Integer businessId) {
    78. FoodDao dao = new FoodDaoImpl();
    79. List<Food> list = showFoodList(businessId);
    80. if(list.size()==0) {
    81. System.out.println("没有任何食品!");
    82. }else {
    83. System.out.println("请选择要删除的食品编号:");
    84. int foodId = input.nextInt();
    85. System.out.println("确认要删除吗(y/n):");
    86. if(input.next().equals("y")) {
    87. int result = dao.removeFood(foodId);
    88. if(result>0) {
    89. System.out.println("\n删除食品成功!\n");
    90. }else {
    91. System.out.println("\n删除食品失败!\n");
    92. }
    93. }
    94. }
    95. }
    96. }

    4.3.3.Admin

    1. package com.neusoft.elm.view;
    2. import com.neusoft.elm.po.Admin;
    3. public interface AdminView {
    4. public Admin login();
    5. }
    1. package com.neusoft.elm.view.impl;
    2. import java.util.Scanner;
    3. import com.neusoft.elm.dao.AdminDao;
    4. import com.neusoft.elm.dao.impl.AdminDaoImpl;
    5. import com.neusoft.elm.po.Admin;
    6. import com.neusoft.elm.view.AdminView;
    7. public class AdminViewImpl implements AdminView{
    8. private Scanner input = new Scanner(System.in);
    9. @Override
    10. public Admin login() {
    11. System.out.println("请输入管理员名称:");
    12. String adminName = input.next();
    13. System.out.println("请输入密码:");
    14. String password = input.next();
    15. AdminDao dao = new AdminDaoImpl();
    16. return dao.getAdminByNameByPass(adminName, password);
    17. }
    18. }

    4.4.程序入口

    4.4.1.管理员入口

    1. package com.neusoft.elm;
    2. import java.util.Scanner;
    3. import com.neusoft.elm.po.Admin;
    4. import com.neusoft.elm.view.AdminView;
    5. import com.neusoft.elm.view.BusinessView;
    6. import com.neusoft.elm.view.impl.AdminViewImpl;
    7. import com.neusoft.elm.view.impl.BusinessViewImpl;
    8. public class ElmAdminEntry {
    9. public void work() {
    10. Scanner input = new Scanner(System.in);
    11. System.out.println("---------------------------------------------------------");
    12. System.out.println("|\t\t\t 饿了么后台管理系统 \t\t\t|");
    13. System.out.println("---------------------------------------------------------");
    14. AdminView adminView = new AdminViewImpl();
    15. BusinessView businessView = new BusinessViewImpl();
    16. Admin admin = adminView.login();
    17. //登录
    18. if(admin!=null) {
    19. int menu = 0;
    20. while(menu!=5) {
    21. //输出主菜单
    22. System.out.println("\n========= 1.所有商家列表=2.搜索商家=3.新建商家=4.删除商家=5.退出系统 =========");
    23. System.out.println("请输入你的选择:");
    24. menu = input.nextInt();
    25. switch(menu) {
    26. case 1:
    27. businessView.listBusinessAll();
    28. break;
    29. case 2:
    30. businessView.listBusiness();
    31. break;
    32. case 3:
    33. businessView.saveBusiness();
    34. break;
    35. case 4:
    36. businessView.removeBusiness();
    37. break;
    38. case 5:
    39. System.out.println("------------------------欢迎下次光临饿了么后台管理系统-----------------------");
    40. break;
    41. default:
    42. System.out.println("没有这个选项!\n");
    43. break;
    44. }
    45. }
    46. }else {
    47. System.out.println("\n管理员名称或密码输入错误!\n");
    48. }
    49. }
    50. public static void main(String[] args) {
    51. new ElmAdminEntry().work();
    52. }
    53. }

    4.4.2.商家入口

    1. package com.neusoft.elm;
    2. import java.util.Scanner;
    3. import com.neusoft.elm.po.Business;
    4. import com.neusoft.elm.view.BusinessView;
    5. import com.neusoft.elm.view.FoodView;
    6. import com.neusoft.elm.view.impl.BusinessViewImpl;
    7. import com.neusoft.elm.view.impl.FoodViewImpl;
    8. public class ElmBusinessEntry {
    9. public void work() {
    10. Scanner input = new Scanner(System.in);
    11. System.out.println("---------------------------------------------------------");
    12. System.out.println("|\t\t\t 饿了么后台管理系统 \t\t\t|");
    13. System.out.println("---------------------------------------------------------");
    14. BusinessView businessView = new BusinessViewImpl();
    15. //商家登录
    16. Business business = businessView.login();
    17. if(business!=null) {
    18. int menu = 0;
    19. while(menu!=5) {
    20. //输出一级菜单
    21. System.out.println("\n======= 一级菜单(商家管理)1.查看商家信息=2.修改商家信息=3.更新密码=4.所属商品管理=5.退出系统=======");
    22. System.out.println("请输入你的选择:");
    23. menu = input.nextInt();
    24. switch(menu) {
    25. case 1:
    26. businessView.showBusiness(business.getBusinessId());
    27. break;
    28. case 2:
    29. businessView.editBusiness(business.getBusinessId());
    30. break;
    31. case 3:
    32. businessView.updateBusinessByPassword(business.getBusinessId());
    33. break;
    34. case 4:
    35. foodManager(business.getBusinessId());
    36. break;
    37. case 5:
    38. System.out.println("------------------------欢迎下次光临饿了么后台管理系统-----------------------");
    39. break;
    40. default:
    41. System.out.println("没有这个选项!\n");
    42. break;
    43. }
    44. }
    45. }else {
    46. System.out.println("商家编号或密码输入错误!");
    47. }
    48. }
    49. private void foodManager(int businessId) {
    50. Scanner input = new Scanner(System.in);
    51. FoodView foodView = new FoodViewImpl();
    52. int menu = 0;
    53. while(menu!=5) {
    54. //输出二级菜单
    55. System.out.println("\n======= 二级菜单(食品管理)1.查看食品列表=2.新增食品=3.修改食品=4.删除食品=5.返回一级菜单 =======");
    56. System.out.println("请输入你的选择:");
    57. menu = input.nextInt();
    58. switch(menu) {
    59. case 1:
    60. foodView.showFoodList(businessId);
    61. break;
    62. case 2:
    63. foodView.saveFood(businessId);
    64. break;
    65. case 3:
    66. foodView.updateFood(businessId);
    67. break;
    68. case 4:
    69. foodView.removeFood(businessId);
    70. break;
    71. case 5:
    72. break;
    73. default:
    74. System.out.println("没有这个选项!\n");
    75. break;
    76. }
    77. }
    78. }
    79. public static void main(String[] args) {
    80. new ElmBusinessEntry().work();
    81. }
    82. }