零基础小白自学java-问答系统项目实现-javase swing版本(二)

在这里插入图片描述

1. GUI图形化界面版

1.1 项目结构

一般一个项目分为以下几个层次来设计的。

  • util工具层

    主要负责一些共同的代码实现,比如获取数据库的连接对象,MD5密码加密类的实现,还有代码中使用的枚举类等。

  • entity实体层

    封装数据库表的一个对象层。

  • ui界面层

    用来设计界面的。

注意在定义具体层次的时候,使用唯一的包名,包名一般使用域名来定义,比如我们的网站域名是:javawkc.com,那么对应的包名是域名+项目名称+层次名:com.javawkc.qa.service。

在这里插入图片描述
项目中所需要的jar包主要有如下几个:

  • mysql-connecter-java.jar

    数据库连接驱动包。

在这里插入图片描述

1.2 工具类

工具包中的类主要是为了提供代码的复用,在本次项目中用到的工具类有如下几个:

在这里插入图片描述

  1. DBHelp

    主要提供数据库的连接和释放功能。

  2. MD5Util

    提供密码的加密类。

  3. ERole

    枚举类,提供用户权限。

  4. EStatues

    枚举类,提供问题状态。

  5. SessionData

    用户登录数据共享类。

  6. dbconfig.properties文件

    数据库连接配置文件,方便后期的连接数据修改。

  7. 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 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值