目录
一、数据库方面
二、jdbc配置文件
三、JDBC工具类
三、Users类
四、功能实现类
五、运行结果
一、数据库方面
USE foodmenu;
DROP TABLE IF EXISTS menu7;
CREATE TABLE menu7(num INT PRIMARY KEY,TypeDishes VARCHAR(255))CHARSET=utf8;
INSERT INTO menu7(num,TypeDishes) VALUES(1,'炒饭'),(2,'盖饭'),(3,'面食'),(4,'饮料');
USE foodmenu;
DROP TABLE IF EXISTS menu8;
CREATE TABLE menu8(num INT,Dishes VARCHAR(255)
)CHARSET=utf8;
INSERT INTO menu8(num,Dishes) VALUES(101,'蛋炒饭'),(102,'青椒炒肉丝'),(103,'鱼香肉丝');
USE foodmenu;
DROP TABLE IF EXISTS menu9;
CREATE TABLE menu9(num INT ,Dishes VARCHAR(255)
)CHARSET=utf8;
INSERT INTO menu9(num,Dishes) VALUES(111,'宫保鸡丁'),(112,'土豆肉丝'),(113,'怪味鸭');
USE foodmenu;
DROP TABLE IF EXISTS menu10;
CREATE TABLE menu10(num INT ,Dishes VARCHAR(255)
)CHARSET=utf8;
INSERT INTO menu10(num,Dishes) VALUES(121,'重庆小面'),(122,'牛肉面'),(123,'杂酱面');
USE foodmenu;
DROP TABLE IF EXISTS menu11;
CREATE TABLE menu11(num INT ,Dishes VARCHAR(255)
)CHARSET=utf8;
INSERT INTO menu11(num,Dishes) VALUES(131,'元气森林'),(132,'冰红茶'),(133,'可乐');
二、jdbc配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/foodmenu
user=root
password=123456
三、JDBC工具类
package com.xh.jdbc.menu2;import java.sql.*;
import java.util.ResourceBundle;/*** JDBC工具类*/
public class DBUtil {//静态变量,类加载时执行//属性资源文件绑定private static ResourceBundle bundle = ResourceBundle.getBundle("resources.jdbc1");//根据属性配置文件key获取valueprivate static String driver = bundle.getString("driver");private static String url = bundle.getString("url");private static String user = bundle.getString("user");private static String password = bundle.getString("password");static {//注册驱动,只需要注册一次就够了,放在静态代码块中,DBUtil类加载时执行try {Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 获取数据库连接对象* @return conn 连接对象* @throws SQLException*/public static Connection getConnection()throws SQLException{Connection conn = DriverManager.getConnection(url,user,password);return conn;}/*** 释放资源* @param conn 连接对象* @param ps 数据库操作对象* @param rs 结果集对象*/public static void close(Connection conn, Statement ps, ResultSet rs){if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (ps != null) {try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}
三、Users类
package com.mcr.jdbc.menu.tests;
/*用户类*/
public class Users {private String tel;//手机号码private String name;//用户名private String password;//用户密码public Users() {}public Users(String tel, String name, String password) {this.tel = tel;this.name = name;this.password = password;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
四、功能实现类
package com.xh.jdbc.tests;import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.*;//订单系统
public class MenuSystem {public static void main(String[] args) {ArrayList<Users> users = new ArrayList<>();startMenu(users,new Scanner(System.in));}//首页操作界面public static void startMenu(ArrayList<Users> users,Scanner scanner) {while(true){System.out.println("请输入您需要的操作:1[登录] 2[注册] 3[退出]");int num = scanner.nextInt();switch (num){case 1:login(users,scanner);break;case 2:register(users,scanner);break;case 3:System.out.println("已退出系统!");System.exit(0);default:System.out.println("您输入有误!");}}}//登录public static void login(ArrayList<Users> users,Scanner scanner) {if (users.size() == 0){System.out.println("当前无用户,请注册!");System.out.println("--=已跳转到首页=--");return;}while(true){System.out.println("请输入手机号码:");String tel = scanner.next();Users user = getUserByTel(tel,users);if(user != null){while (true){System.out.println("请输入密码:");String password = scanner.next();if (user.getPassword().equals(password)){System.out.println("欢迎\""+user.getName()+"\"用户登录成功!");operateMenu(user,users,scanner);}else{System.out.println("密码输入错误!");}}}else {System.out.println("当前系统没有该账户用户!");}}}//注册public static void register(ArrayList<Users> users,Scanner scanner) {System.out.println("--=欢迎注册=--");System.out.println("请输入用户名:");String name = scanner.next();String password = "";while (true){System.out.println("请输入密码:");password = scanner.next();System.out.println("请再次输入密码:");String okPassword = scanner.next();if (password.equals(okPassword)){break;}else {System.out.println("~两次密码不一致,请重新输入~");}}while (true){System.out.println("请输入手机号码:");String tel = scanner.next();if (tel.length() == 11){Users user = new Users(tel,name,password);users.add(user);System.out.println("[注册成功]");System.out.println("您的账号为:"+user.getTel());System.out.println("~已跳转到首页,请登录~");break;}else {System.out.println("输入号码有误!");}}}//操作界面public static void operateMenu(Users user,ArrayList<Users> users,Scanner scanner){System.out.println("请输入您想要的操作:1[销户] 2[查询菜品] 3[注销] 4[点菜]");int num = scanner.nextInt();while(true){switch (num){case 1:users.remove(user);System.out.println("销户成功");startMenu(users,scanner);return;case 2:queryMenu(scanner);operateMenu(user,users,scanner);break;case 3:System.out.println("注销成功!");startMenu(users,scanner);return;case 4:orderMeals(scanner);operateMenu(user,users,scanner);break;default:System.out.println("您输入有误!");}}}//查询菜品public static void queryMenu(Scanner scanner){Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {//1.注册驱动//2.获取连接conn = DBUtil.getConnection();//将自动提交机制修改为手动提交conn.setAutoCommit(false);//开启事务//3.获取预编译的数据库操作对象String sql = "select * from menu7 ";ps = conn.prepareStatement(sql);//4.执行SQL语句rs = ps.executeQuery();//5.处理结果集System.out.println("序号 菜品分类");System.out.println("--------------------");while (rs.next()){System.out.print(" "+rs.getInt("num")+" ");System.out.print(" "+rs.getString("TypeDishes"));System.out.println();}System.out.println("--------------------");conn.commit();while(true) {System.out.println("请输入菜品分类序号:[5退出]");int num = scanner.nextInt();switch (num) {case 1://炒饭String sql1 = "select num,Dishes from menu8 ";ps = conn.prepareStatement(sql1);rs = ps.executeQuery();System.out.println("序号 菜品");System.out.println("--------------------");while (rs.next()){System.out.print(rs.getInt("num")+" ");System.out.print(rs.getString("Dishes"));System.out.println();}System.out.println("--------------------");conn.commit();break;case 2://盖饭String sql2 = "select num,Dishes from menu9 ";ps = conn.prepareStatement(sql2);rs = ps.executeQuery();System.out.println("序号 菜品");System.out.println("--------------------");while (rs.next()){System.out.print(rs.getInt("num")+" ");System.out.print(rs.getString("Dishes"));System.out.println();}System.out.println("--------------------");conn.commit();break;case 3://面食String sql3 = "select num,Dishes from menu10 ";ps = conn.prepareStatement(sql3);rs = ps.executeQuery();System.out.println("序号 菜品");System.out.println("--------------------");while (rs.next()){System.out.print(rs.getInt("num")+" ");System.out.print(rs.getString("Dishes"));System.out.println();}System.out.println("--------------------");conn.commit();break;case 4://饮料String sql4 = "select num,Dishes from menu11 ";ps = conn.prepareStatement(sql4);rs = ps.executeQuery();System.out.println("序号 菜品");System.out.println("--------------------");while (rs.next()){System.out.print(rs.getInt("num")+" ");System.out.print(rs.getString("Dishes"));System.out.println();}System.out.println("--------------------");conn.commit();break;case 5:System.out.println("已退出,请订单");return;default:System.out.println("输入有误!");break;}}}catch (Exception e){if (conn != null){try {conn.rollback();} catch (SQLException ex) {ex.printStackTrace();}}e.printStackTrace();}finally {//6.释放资源DBUtil.close(conn,ps,rs);}}//订单public static void orderMeals(Scanner scanner){System.out.println("请输入预定的菜品序号:");int num = scanner.nextInt();System.out.println("订单成功");creatOrderNum();System.out.println("~请继续操作~");}//判断账号是否重复public static Users getUserByTel(String tel,ArrayList<Users> users){for (int i = 0; i < users.size(); i++) {Users user = users.get(i);if(user.getTel().equals(tel)){return user;}}return null;}//生成随机单号public static void creatOrderNum(){while(true){String code ="H";Random r = new Random();for (int i = 0; i < 10; i++) {code += r.nextInt(10);}System.out.println("你的单号是:"+code);break;}}
}