引言
今天,我们来学习一下如何用java写一个简单的系统(后续内容包括网络连接、数据库连接、json字符串编码、爬虫、数据增删改查、线程处理等等)会不间断更新,首先是环境配置要求,我们需要在maven库中下载4个包,分别是Jsoup、Gson、JXL、mysql用于字符串解析、数据库连接以及excel操作。
用户登录
新建一个 java 项目,在 src 文件中新建4个包,分别是dao(功能函数包)、ui(用户显示包)、util(用户连接包)、vo(信息数据包)。
dao
实现用户名查询功能,所有信息为用户名、密码、姓名、角色。
ui
主函数实现登录功能,并显示当前时间。
util
JDBC数据库连接。
vo
表为用户表,包含4个变量,用户名、密码、姓名、角色。
数据库代码
MySQL 的官方网站的网址是:www.mysql.com,进入主页后选择 download,进入下载页面,可以选择解压版(MySQL Community Server)或者安装版(MySQL Installer for Windows),建议下载安装版。
下载完成后,可以选择可视化软件帮助我们,这里选用了 mysql 官方的图形管理工具 workbench。我们创建一个 database 名为 sale,然后在sale数据库下创建表,名为tuser,添加两条用户信息。
java实现数据库连接
MySQL 中的数据库驱动程序路径为 com.mysql.jdbc.Driver,开发常用的连接 MySQL 的地址字符串为: jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8,
驱动加载
获取链接
这里红框 sale 是数据库的名称。
关闭资源
MySQL 中的数据库驱动程序路径数据库操作完毕之后需要关闭连接以释放资源。
结果演示
完整代码
dao—UserDAO
package dao;
import util.DBUtil;
import vo.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
public static User queryName(String userName) {
//获取链接
Connection con = DBUtil.getConnection();
//创建语句
String sql = "select * from t_yonghu where yonghuming = ?";
PreparedStatement pst = null;
User user = null;
try {
pst = con.prepareStatement(sql);
//执行语句
pst.setString(1,userName);
ResultSet rs = pst.executeQuery();
//处理结果 将rs存放在user对象中
if(rs.next()) {
user = new User();
user.setUserName(rs.getString("yonghuming"));
user.setPassword(rs.getString("mima"));
user.setChrName(rs.getString("xingming"));
user.setRole(rs.getString("juese"));
}
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
//释放资源
DBUtil.close(con,pst);
}
return user;
}
}
ui—Driver
package ui;
import dao.UserDAO;
import vo.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Driver {
public static void main(String[] args) {
System.out.println("欢迎使用超市超市收银系统,请登录");
for(int i=0;i<3;i++) {
System.out.println("输入用户名:");
Scanner scanner = new Scanner(System.in);
String userName = scanner.nextLine();
String chrName = null;
System.out.println("输入密码:");
String password = scanner.nextLine();
//按用户名查询用户信息
User user = UserDAO.queryName(userName);
boolean success = false;
if (user != null) {
if (user.getPassword().equals(password)) {
success = true;
chrName = user.getChrName(); // 获取登录用户的 chrName
}
}
//当前时间显示
SimpleDateFormat formatter= new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
Date date = new Date(System.currentTimeMillis());
if(success) {
System.out.println("欢迎使用超市超市收银系统\n");
System.out.println("当前收银员:"+chrName+",当前时间:"+formatter.format(date));
} else {
System.out.println("输入有误,请重新输入");
}
if (i == 2) {
System.out.println("最多尝试三次");
System.exit(0);
}
}
}
}
util—DBUtil
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DBUtil {
//驱动加载,只需执行一次
static{
String driveName = "com.mysql.cj.jdbc.Driver";
try {
Class.forName(driveName);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
//获取链接
public static Connection getConnection(){
String url = "jdbc:mysql://localhost:3306/sale?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String password = "123456";
Connection con = null;
try {
con = DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
throw new RuntimeException(e);
}
return con;
}
//关闭资源
public static void close(Connection con, PreparedStatement pst){
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if(pst!=null) {
try {
pst.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
vo—User
package vo;
public class User {
private String userName;
private String password;
private String chrName;
private String role;
public User() {
}
public User(String userName, String password, String chrName, String role) {
this.userName = userName;
this.password = password;
this.chrName = chrName;
this.role = role;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getChrName() {
return chrName;
}
public void setChrName(String chrName) {
this.chrName = chrName;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
数据库—mysql
CREATE DATABASE sale;
USE sale;
DROP TABLE IF EXISTS `t_yonghu`;
CREATE TABLE `t_yonghu` (
`yonghuming` varchar(255) NOT NULL,
`mima` varchar(255) DEFAULT NULL,
`xingming` varchar(255) DEFAULT NULL,
`juese` varchar(255) DEFAULT NULL,
PRIMARY KEY (`yonghuming`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
select * from t_yonghu;
INSERT INTO `t_yonghu` VALUES ('mk', 'mk123', '明空', '管理员');
INSERT INTO `t_yonghu` VALUES ('jx', 'jx123', '瑾熙', '收银员');