使用Java自带的GUI界面工具实现会员积分管理系统
JavaGUI简介
JavaGUI是一个图形界面库,主要用于和用户进行交互,主要有两个核心库,分别是AWT和Swing,AWT需要调用本地系统方法来实现功能,属重量级控件,而Swing是在AWT的基础上,建立的一套图像界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属轻量级组件。
会员积分系统简介
该系统主要是为了对商店的会员用户进行信息管理,同时也对商店的库存信息进行管理。主要包括用户的登录、注册、修改密码功能。分为两个主要的角色,分别是系统管理员和店铺管理员,不同身份的人登录之后显示的页面也是不同的,拥有不同的操作功能,对相关信息进行操作。
项目相关技术介绍
开发工具:IntelliJ IDEA 2020.2.3
数据库:MySQL
开发语言:JAVA
项目难点分析
在本系统的开发过程中可能涉及以下两个难点
- 数据库操作:该项目涉及到数据库的相关操作,使用MySQL的驱动进行数据库的连接,该项目使用的是5.1.25版本的驱动包。主要难点在于对数据库的相关表的操作。
- 图形界面设计:该项目涉及到Java的GUI界面设计,在刚接触到的时候可能会遇到组件不显示的问题,导致一些功能不能实现。
- 数据类型转换:该项目的图形界面操作中,需要获取用户输入的信息或者数字,有些数据需要根据需求进行转换。
项目运行主要功能截图展示
登录功能:
系统管理员登录:系统管理员在输入账号和密码之后选择身份进行登录
登录成功进行提示
个人信息页面:登录成功之后会跳转到个人信息页面,查看相关信息,并进行密码的修改
店铺信息页面:点击左侧标签卡跳转到店铺信息页面,进行相关数据的操作
会员信息页面:该页面中可以修改成为会员所需要的最小的积分数目,以及进行信息的增删改查操作
店铺管理员页面:店铺管理员在登录之后可以看到自己的相关信息
会员信息:该页面中能够对该店铺的会员信息进行增删改查
消费记录:该页面中能够对会员的消费记录进行查看
兑换礼物:会员使用积分可以在该页面中进行相关礼物的兑换
注册界面:用户在登录界面选择注册按钮之后可,输入相关的信息可以进行注册操作
关键代码
数据库工具类:
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 文件的读取,只需要读取一次即可拿到这些数据,使用静态代码块
*/
static{
try {
//读取文件获取值
Properties pro = new Properties();
//获取src路径下的文件的方式--->ClassLoader 类加载器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
// System.out.println(path);
//pro.load(new FileReader("src/jdbc.properties"));
pro.load(new FileReader(path));
//获取数据赋值
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
driver=pro.getProperty("driver");
//注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取链接
* @return 连接对象
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
/**
* 释放资源
* @param stmt
* @param conn
*/
public static void close(Statement stmt, Connection conn){
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
/**
* 释放资源
* @param rs
* @param stmt
* @param conn
*/
public static void close(ResultSet rs, Statement stmt, Connection conn){
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
登录页面代码:
public class Login extends JPanel implements ActionListener,Runnable{
JComboBox<String> list1;
JButton login;
JButton exit;
JButton register;
JTextField username;
JPasswordField password;
static String database;
Connection con;
PreparedStatement pst;
ResultSet rs;
public static String id;
public Login() {
JLabel user_username = new JLabel("用户名");
JLabel user_password = new JLabel("密码");
username =new JTextField(30) ;
password = new JPasswordField(30);
login = new JButton("登录");
exit = new JButton("退出");
register = new JButton("注册");
list1= new JComboBox<String>();
list1.addItem("---请选择您的身份---");
list1.addItem("系统管理员");
list1.addItem("店铺管理员");
setLayout(null);
user_username.setBounds(65,90,40,30);
user_password.setBounds(65,140,40,30);
login.setBounds(100,200,60,40);
exit.setBounds(200,200,60,40);
register.setBounds(300,200,60,40);
username.setBounds(120,100,200,20);
password.setBounds(120,150,200,20);
list1.setBounds(110,250,150,30);
this.add(user_username);
this.add(username);
this.add(user_password);
this.add(password);
this.add(login);
this.add(exit);
this.add(register);
this.add(list1);
//去掉背景点击效果
login.setContentAreaFilled(false);
//去掉聚焦
login.setFocusPainted(false);
login.setBackground(Color.white);
login.addActionListener(this);
//去掉背景点击效果
exit.setContentAreaFilled(false);
//去掉聚焦
exit.setFocusPainted(false);
exit.setBackground(Color.white);
exit.addActionListener(this);
//去掉背景点击效果
register.setContentAreaFilled(false);
//去掉聚焦
register.setFocusPainted(false);
register.setBackground(Color.white);
register.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==login){
String user = username.getText();
char[] word = password.getPassword();
String words = String.valueOf(word);
if (list1.getSelectedItem().toString().equals("系统管理员")){
String database="system_user";
boolean flag = logins(database,user,words);
if (flag) {
JOptionPane.showMessageDialog(this,"登陆成功");
id=user;
// new Thread(new SystemUser()).start();
new SystemUser();
}else {
JOptionPane.showMessageDialog(this,"登陆失败");
}
}
if (list1.getSelectedItem().toString().equals("店铺管理员")){
String database="store_user";
boolean flag = logins(database,user,words);
if (flag) {
JOptionPane.showMessageDialog(this,"登陆成功");
id=user;
// new Thread(new StoreUser()).start();
new StoreUser();
}else {
JOptionPane.showMessageDialog(this,"登陆失败");
}
}
}
if (e.getSource()==register){
registers rs = new registers();
JFrame jf = new JFrame("注册");
jf.getContentPane().add(rs);
jf.setSize(400,500);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jf.setVisible(true);
}
if (e.getSource() == exit) {
System.exit(0);
}
}
public boolean logins(String database, String username, String password){
if (username == null || password == null) {
return false;
}
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
//连接数据库判断是否登陆成功
//获取连接
try {
conn = JDBCUtils.getConnection();
String sql = "select * from "+database+" where username = ? and password = ?";
//获取执行sql的对象
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,username);
pstmt.setString(2,password);
//执行查询,不需要传递sql
rs = pstmt.executeQuery();
//判断 如果有下一行则返回true
return rs.next();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
JDBCUtils.close(rs,pstmt,conn);
}
return false;
}
@Override
public void run() {
Login login = new Login();
JFrame jf = new JFrame("登录");
jf.getContentPane().add(login);
jf.setSize(400, 500);
jf.setDefaultCloseOperation(3);
jf.setVisible(true);
}
}
配置文件:
url=jdbc:mysql:///vip
user=root
password=root
driver=com.mysql.jdbc.Driver
总结
该项目主要是练习Java进行数据库的操作和界面设计,难度不大,因为代码较多(包括数据库创建文件,数据库连接驱动包,全部代码),不方便在这里展示全部,如果有需要可以联系我。