前面我们学习万javase之后,进行了一个基础项目的练习(JavaSE 基础项目练习 - 尼古拉斯·银的文章 - 知乎 https://zhuanlan.zhihu.com/p/613120340)。 现阶段,学习完mysql以及使用JDBC去操作数据库之后,那么就可以将以前数据持久化保存在文件中的步骤进行优化了,因为前面文章已经描述了思路和项目要求,那么就直接上代码了。 一、准备阶段1.连接池配置文件url=jdbc:mysql://localhost:3306/jdbc
username=root
password=123456
driverClassName=com.mysql.cj.jdbc.Driver2.导入Druid依赖和MySQL依赖 3.jdbc数据库建立store表示存储数据的商品库,user表示存储用户登陆信息的。 二、代码实现1.main程序public class Main {
//主程序
public static void main(String[] args) {
/**
* 首先进行用户登陆
*/
boolean b = userLogin();
if (b) {
/**
* 操作商品维护模块
*/
operateModule();
}
}
}2.用户登陆模块public class UserLogin {
private static Scanner scanner = new Scanner(System.in);
/**
* 验证用户登陆的工具类
*/
public static boolean userLogin() {
Connection conn = getConn();
String sql = "select * from user where user_name = ? and password = ?";
PreparedStatement statement = null;
ResultSet resultSet = null;
//每天有5次登陆机会
int count = 5;
boolean empty = true;
boolean isLogin = false;
try {
statement = conn.prepareStatement(sql);
/**
* 进行登陆验证
*/
do {
System.out.println("------------欢迎来到十指波超市------------");
System.out.println("请先登陆超市账户:");
System.out.println("请输入用户名:");
String user_name = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
statement.setString(1, user_name);
statement.setString(2, password);
resultSet = statement.executeQuery();
if (resultSet.next()) {
System.out.println("登陆成功");
empty = false;
isLogin = true;
} else {
count--;
System.out.println("用户名或密码错误,今天还有" + count + "次重新输入机会");
}
if (count == 0) {
System.out.println("今日登陆次数用尽,请24小时之后再试!!!");
break;
}
} while (empty);
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
closeResources(conn, statement, resultSet);
}
return isLogin;
}
}3.商品操作模块public class OperateModule {
private static Scanner scanner = new Scanner(System.in);
/**
* 用户操作模块工具
*/
public static void operateModule() {
String code = "-1";
while (!code.equals("9")) {
System.out.println("-----------------------------------------------------------");
System.out.println("|0-添加| |1-删除| |2-修改| |3-列表| |4-入库| |5-出库| |9-退出系统|");
System.out.println("-----------------------------------------------------------");
System.out.println("请输入操作模块:");
code = scanner.nextLine();
switch (code) {
case "0":
add();
break;
case "1":
remove();
break;
case "2":
update();
break;
case "3":
show();
break;
case "4":
putInStorage();
break;
case "5":
outOfStorage();
break;
case "9":
System.out.println("退出系统");
break;
default:
System.out.println("输入错误");
}
}
}
/**
* 添加商品
*/
public static void add() {
try {
Thread.sleep(10L);
/**
* 提醒用户输入添加的商品编码
*/
System.out.println("请输入添加的商品编码:");
String idCode = scanner.nextLine();
String sqlQuery = "select number from store where idCode = ?";
int oldNumber = queryCount(getConn(), sqlQuery, Integer.parseInt(idCode));
if (oldNumber != -1) {
System.out.println("该商品已存在,请输入添加数量:");
String addNum = scanner.nextLine();
String sqlUpdate = "update store set number = ? where idCode = ?";
updateUtil(getConn(), sqlUpdate, Integer.parseInt(addNum) + oldNumber, idCode);
} else {
System.out.println("仓库中没有该商品!");
System.out.println("是否添加此商品(Y/N)?");
String s = scanner.nextLine();
if (s.equalsIgnoreCase("Y")) {
System.out.print("请输入添加的商品名称:");
String name = scanner.nextLine();
System.out.print("请输入添加的商品价格:");
String price = scanner.nextLine();
System.out.print("请输入添加的商品数量:");
String number = scanner.nextLine();
String sql = "insert into store(name,price,number) values(?,?,?)";
updateUtil(getConn(), sql, name, Double.parseDouble(price), Integer.parseInt(number));
System.out.println("添加成功!");
}
}
System.out.println("是否继续添加数据(Y/N):");
String sc = scanner.nextLine();
if (sc.equalsIgnoreCase("Y")) {
add();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 更新仓库
*/
public static void update() {
if (isEmpty()) {
/**
* 提醒用户输入修改的商品编码
*/
System.out.print("请输入修改的商品编码:");
int idCode = Integer.parseInt(scanner.nextLine());
if (isEmpty(idCode)) {
/**
* 提醒用户输入修改的商品类型
*/
System.out.println("请输入修改的商品类型(1:商品名称,2:商品价格,3:商品数量):");
int storeType = Integer.parseInt(scanner.nextLine());
String sqlUpdate = null;
Connection conn = getConn();
while (true) {
if (storeType == 1) {
sqlUpdate = "update store set name = ? where idCode = ?";
System.out.println("请输入修改后的商品名称:");
String newName = scanner.nextLine();
updateUtil(conn, sqlUpdate, newName, idCode);
System.out.println("修改成功");
break;
} else if (storeType == 2) {
sqlUpdate = "update store set price = ? where idCode = ?";
System.out.println("请输入修改后的商品价格:");
double newPrice = Double.parseDouble(scanner.nextLine());
updateUtil(conn, sqlUpdate, newPrice, idCode);
System.out.println("修改成功");
break;
} else if (storeType == 3) {
sqlUpdate = "update store set number = ? where idCode = ?";
System.out.println("请输入修改后的商品数量:");
Integer newNumber = Integer.parseInt(scanner.nextLine());
updateUtil(conn, sqlUpdate, newNumber, idCode);
System.out.println("修改成功");
break;
} else {
System.out.println("输入有误,请重新输入数字:");
}
}
} else {
System.out.println("仓库中无此商品,无法修改。");
}
} else {
System.out.println("仓库为空,请先添加商品。");
}
}
/**
* 删除商品
*/
public static void remove() {
/**
* 仓库不空的情况下才能删除商品
*/
if (isEmpty()) {
/**
* 提醒用户输入删除的商品编码
*/
System.out.println("请输入删除的商品编码:");
int idCode = Integer.parseInt(scanner.nextLine());
if (isEmpty(idCode)) {
String sqlDelete = "delete from store where idCode = ?";
updateUtil(getConn(), sqlDelete, idCode);
System.out.println("已成功删除");
} else {
System.out.println("仓库中无此商品,无法删除");
}
} else {
System.out.println("仓库为空,请先添加商品。");
}
}
/**
* 展示仓库信息
*/
public static void show() {
String sql = "select * from store";
List stores = queryUtil(getConn(), sql, Store.class);
if (isEmpty()) {
System.out.println("----------------------------------------------");
System.out.println(" XXX商店 ");
System.out.println("----------------------------------------------");
System.out.println(" 商品编号 商品名称 商品价格 商品数量 ");
System.out.println("----------------------------------------------");
for (Store store : stores) {
System.out.printf("| %s %s %f %d ", store.getIdCode(), store.getName(), store.getPrice(), store.getNumber());
System.out.println();
}
System.out.println("----------------------------------------------");
} else {
System.out.println("仓库为空,请先添加商品。");
}
}
/**
* 入库
*/
public static void putInStorage() {
System.out.println("请输入入库商品编码:");
int idCode = Integer.parseInt(scanner.nextLine());
String sql = "select number from store where idCode = ?";
int number = queryCount(getConn(), sql, idCode);
if (number != -1) {
System.out.println("请输入入库数量");
int addNumber = Integer.parseInt(scanner.nextLine());
String sqlUpdate = "update store set number = ? where idCode = ?";
updateUtil(getConn(), sqlUpdate, (number + addNumber), idCode);
int newNumber = queryCount(getConn(), sql, idCode);
System.out.println("入库前商品数量为:" + number + " ,入库后商品数量为:" + newNumber);
} else {
System.out.println("仓库中无此商品,无法入库,请先添加该商品。");
}
}
/**
* 出库
*/
public static void outOfStorage() {
System.out.println("请输入出库商品编码:");
int idCode = Integer.parseInt(scanner.nextLine());
String sql = "select number from store where idCode = ? ";
if (isEmpty(idCode)) {
int number = queryCount(getConn(), sql, idCode);
System.out.println("当前商品数量为:" + number + ",最大可出库数量为:" + number);
System.out.println("请输入商品出库数量");
int outOfNumber = Integer.parseInt(scanner.nextLine());
if ((number - outOfNumber) |