1. GUI图形化界面版
1.1 项目结构
一般一个项目分为以下几个层次来设计的。
-
util工具层
主要负责一些共同的代码实现,比如获取数据库的连接对象,MD5密码加密类的实现,还有代码中使用的枚举类等。
-
entity实体层
封装数据库表的一个对象层。
-
ui界面层
用来设计界面的。
注意在定义具体层次的时候,使用唯一的包名,包名一般使用域名来定义,比如我们的网站域名是:javawkc.com,那么对应的包名是域名+项目名称+层次名:com.javawkc.qa.service。
项目中所需要的jar包主要有如下几个:
-
mysql-connecter-java.jar
数据库连接驱动包。
1.2 工具类
工具包中的类主要是为了提供代码的复用,在本次项目中用到的工具类有如下几个:
-
DBHelp
主要提供数据库的连接和释放功能。
-
MD5Util
提供密码的加密类。
-
ERole
枚举类,提供用户权限。
-
EStatues
枚举类,提供问题状态。
-
SessionData
用户登录数据共享类。
-
dbconfig.properties文件
数据库连接配置文件,方便后期的连接数据修改。
-
BoundHelp
支持各种屏幕分辨率,在不同屏幕分别率上能正常显示界面。
1.2.1 DBHelp
package com.javawkc.qa.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
/**
* 作 者: 大 华
* 公众号: java微课程
* 描 述: 为初学java的小伙伴提供技术答疑的一个平台
*/
public class DBHelp {
private static String className = null;
private static String url = null;
private static String user = null;
private static String password = null;
static {
try {
Properties pro = new Properties();
pro.load(DBHelp.class.getResourceAsStream("dbconfig.properties"));
className = pro.getProperty("className");
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
Class.forName(className);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConn() {
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void closeConn(Connection conn) {
if (conn != null) {
try {
if (!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
conn = null;
}
}
}
}
1.2.2 MD5Util
package com.javawkc.qa.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 作 者: 大 华
* 公众号: java微课程
* 描 述: 为初学java的小伙伴提供技术答疑的一个平台
*/
public class MD5Util {
public static String getMD5Str(String str) {
try {
byte[] digest = null;
MessageDigest md5 = MessageDigest.getInstance("md5");
md5.update(str.getBytes("utf-8"));
digest = md5.digest();
String md5Str = "";
for (int i = 0; i < digest.length; i++) {
md5Str += Integer.toHexString(digest[i] >> 4 & 0xf);
md5Str += Integer.toHexString(digest[i] & 0xf);
}
return md5Str.toUpperCase();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
1.2.3 ERole
package com.javawkc.qa.util;
/**
* 作 者: 大 华
* 公众号: java微课程
* 描 述: 为初学java的小伙伴提供技术答疑的一个平台
*/
public enum ERole {
CUSTOMER(0, "普通用户"), ADMIN(1, "管理员");
private int value;
private String key;
private ERole(int value, String key) {
this.value = value;
this.key = key;
}
public int getValue() {
return value;
}
public String getKey() {
return key;
}
}
1.2.4 EStatus
package com.javawkc.qa.util;
/**
* 作 者: 大 华
* 公众号: java微课程
* 描 述: 为初学java的小伙伴提供技术答疑的一个平台
*/
public enum EStatues {
REPLYED("已答"), UNREPLY("未答");
private String value;
public String getValue() {
return value;
}
EStatues(String value) {
this.value = value;
}
}
1.2.5 SessionDada
package com.javawkc.qa.util;
import com.javawkc.qa.entity.UserBase;
/**
* 作 者: 大 华
* 公众号: java微课程
* 描 述: 为初学java的小伙伴提供技术答疑的一个平台
*/
public class SessionData {
public static UserBase sessionUserBase ;
}
1.2.6 dbconfig.properties
className=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/qasysdb?characterEncoding=utf8
user=root
password=123456
1.2.7 BoundHelp
package com.javawkc.qa.util;
import java.awt.Dimension;
import java.awt.Toolkit;
/**
* 作 者: 大 华
* 公众号: java微课程
* 描 述: 为初学java的小伙伴提供技术答疑的一个平台
*/
public class BoundHelp {
public static int getX(int value) {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
double x = dim.getWidth();
return (int) (value * (x / 1920d));
}
public static int getY(int value) {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
double y = dim.getHeight();
return (int) (value * (y / 1200d));
}
public static int getSize(int size) {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
double x = dim.getWidth();
double y = dim.getHeight();
return (int) (size * ((x / 1920d + y / 1200d) / 2d));
}
}
1.3 实体类
1.3.1 UserBase
package com.javawkc.qa.entity;
import java.io.Serializable;
import com.javawkc.qa.util.ERole;
/**
* 作 者: 大 华
* 公众号: java微课程
* 描 述: 为初学java的小伙伴提供技术答疑的一个平台
*/
public class UserBase implements Serializable {
private int id;
private String tel;
private String pwd;
private String name;
private int num;
private ERole role;
public ERole getRole() {
return role;
}
public void setRole(ERole role) {
this.role = role;
}
public int