校园活动平台项目(swing+mysql)

校园 活动平台项目(swing+mysql)

 跟着学校工作室学习JAVASE一段时间,我们完成了了工作室的项目。

项目需求:

     一、 蓝点校园活动平台

基本需求:
1、带有登录注册功能
2、管理员
审核活动(决定学生会发布的活动是否通过)
审核学分(决定学生申请的学分是否通过)
指定学生会成员
3、普通用户
申请参加活动
修改自己的信息
申请学分
签到签退
4、学生会
申请发布活动
指定签到员
5、签到员
给其他用户进行签到签退
(以上是系统基础功能,自己有想法可以拓展其他功能)

程序设计思路

一:设计数据库

四张表
在这里插入图片描述

搭建三层架构

1:界面层 (view包)
2: 业务逻辑层 (service 包)
3:数据访问层 (sql 包)
但实际上我面对多个对象,不知道如何搭建业务逻辑,所以对数据的操作全都在数据访问层,造成了大量代码的重复
在这里插入图片描述

实现效果

登入注册
在这里插入图片描述

主界面
在这里插入图片描述

管理员
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

学生

在这里插入图片描述学生
在这里插入图片描述在这里插入图片描述在这里插入图片描述

签到员

在这里插入图片描述在这里插入图片描述在这里插入图片描述
学生会
在这里插入图片描述

代码部分

以普通用户学生为例的代码展示
数据库(MySQL8.0.16)的连接

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public final class JdbcUtil {
	private static String url = "jdbc:mysql://localhost:3306/userinformation?serverTimezone=GMT&characterEncoding=utf8";
	private static String user = "root";
	private static String password = "1234";

	private JdbcUtil() {
	}

	static {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}

	public static Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url, user, password);
	}

	public static void free(ResultSet rs, Statement st, Connection conn) {
		try {
			if (rs != null)
				rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (st != null)
					st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				if (conn != null)
					try {
						conn.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}
			}
		}
	}
}

实体类

package cn.sunshine.jdbc.domain;

public class User {
	private String name;
	private int id;
	private String gener;
	private int credit;
	private String password;
	private String major;
	private String applyactivity;
	private String age;
	private String applycredit;

	private String signinout;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getMajor() {
		return major;
	}

	public void setMajor(String major) {
		this.major = major;
	}

	public String getGener() {
		return gener;
	}

	public void setGener(String gener) {
		this.gener = gener;
	}

	public int getCredit() {
		return credit;
	}

	public void setCredit(int credit) {
		this.credit = credit;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getApplyactivity() {
		return applyactivity;
	}

	public void setApplyactivity(String applyactivity) {
		this.applyactivity = applyactivity;
	}

	public String getApplycredit() {
		return applycredit;
	}

	public void setApplycredit(String applycredit) {
		this.applycredit = applycredit;
	}

	public String getSigninout() {
		return signinout;
	}

	public void setSigninout(String signinout) {
		this.signinout = signinout;
	}

}

dao接口

package cn.sunshine.jdbc.dao;

import cn.sunshine.jdbc.domain.User;

public interface UserDao {
	public void addUser1(User user);// 增加用户(用户注册)

	public void update(User user);// 修改用户信息

	public void delete(User user);// 删除

	public boolean login(String name, String password);// 登入和验证身份

	public void applyactivity(User user);// 用户申请活动

	public void applycredit(User user);// 用户申请学分
	
	public void applycredit1(User user);//管理员审核学分
	

	public void signinout(User user);// 用户申请签到签退
	public void signinout1(User user);// 签到员审核签到签退

}

dao接口实现类

package cn.sunshine.jdbc.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import cn.sunshine.jdbc.dao.JdbcUtil;
import cn.sunshine.jdbc.dao.UserDao;
import cn.sunshine.jdbc.domain.User;

public class UserdaoImpl implements UserDao {
	public boolean login(String name, String password) {
		boolean flag = false;
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		try {
			conn = JdbcUtil.getConnection();
			String sql = "select Name,PASSWORD from user";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while (rs.next()) {
				if (name.equals(rs.getString("Name")) && password.equals(rs.getString("PASSWORD"))) {
					flag = true;
					break;
				}
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);

		} finally {
			JdbcUtil.free(rs, ps, conn);
		}
		return flag;
	}

	public void update(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			String sql = "update user set gener=?, major=?, age=? where name=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, user.getGener());
			ps.setString(2, user.getMajor());
			ps.setString(3, user.getAge());
			ps.setString(4, user.getName());
			int a=ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null,"修改成功");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}
		
	}

	public void delete(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			String sql = "delete from user where id=" + user.getId();
			ps = conn.prepareStatement(sql);

			int a = ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null, "信息修改成功");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}
		

	}

	public void addUser1(User user) {
		// TODO Auto-generated method stub

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			if (user.getName() == null || user.getName().trim().length() <= 0 || user.getPassword() == null
					|| user.getPassword().trim().length() <= 0) {
				JOptionPane.showMessageDialog(null, "请输入用户名或密码");
				return;
			}
			String sql = "insert into user(name,password)values(?,?)";
			ps = conn.prepareStatement(sql);
			ps.setString(1, user.getName());
			ps.setString(2, user.getPassword());
			int a = ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null, "用户注册成功,请登入");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}
	}

	@Override
	public void applyactivity(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			if (user.getName() == null || user.getName().trim().length() <= 0 || user.getApplyactivity() == null
					|| user.getApplyactivity().trim().length() <= 0) {
				JOptionPane.showMessageDialog(null, "请输入用户名或活动名称");
				return;
			}
			String sql = "update user set applyactivity=? where name=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, user.getApplyactivity());
			ps.setString(2, user.getName());

			int a = ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null, "活动申请成功");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}

	}

	@Override
	public void applycredit(User user) {

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			if (user.getName() == null || user.getName().trim().length() <= 0 || user.getApplycredit() == null
					|| user.getApplycredit().trim().length() <= 0) {
				JOptionPane.showMessageDialog(null, "请输入用户名或学分");
				return;
			}
			String sql = "update user set applycredit=? where name=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, user.getApplycredit());
			ps.setString(2, user.getName());
			int a = ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null, "已申请,等待管理员审核");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}

	}

	public void signinout(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			if (user.getName() == null || user.getName().trim().length() <= 0) {
				JOptionPane.showMessageDialog(null, "请输入用户名");
				return;
			}
			String sql = "update user set signinout=? where name=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, user.getSigninout());
			ps.setString(2, user.getName());
			int a = ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null, "已申请,等待签到员审核");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}

	}
	public void signinout1(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			if (user.getName() == null || user.getName().trim().length() <= 0) {
				JOptionPane.showMessageDialog(null, "请输入用户名");
				return;
			}
			String sql = "update user set signinout=? where name=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, user.getSigninout());
			ps.setString(2, user.getName());
			int a = ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null, "已为其签到签退");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}

	}
	@Override
	public void applycredit1(User user) {

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConnection();
			if (user.getName() == null || user.getName().trim().length() <= 0 || user.getApplycredit() == null
					|| user.getApplycredit().trim().length() <= 0) {
				JOptionPane.showMessageDialog(null, "请输入用户名或学分");
				return;
			}
			String sql = "update user set applycredit=? where name=?";
			ps = conn.prepareStatement(sql);
			
			ps.setString(1,user.getApplycredit());
			ps.setString(2, user.getName());
			int a = ps.executeUpdate();
			if (a == 1) {
				JOptionPane.showMessageDialog(null, "已修改成功");
			}
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtil.free(rs, ps, conn);
		}

	}
}

界面部分
学生主界面

package cn.sunshine.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

import javax.swing.JPanel;


public class StudentView extends JFrame implements ActionListener {
	public JButton activity = new JButton("活动申请");
	public JButton information = new JButton("信息修改");
	public JButton credit = new JButton("学分申请");
	public JButton inout = new JButton("签到签退");
	private JPanel student = new JPanel();
	 ImageIcon background = new ImageIcon("E:\\7.jpg");
	    JLabel label = new JLabel(background);
	public StudentView() {
		label.setBounds(0, 0, background.getIconWidth(), background.getIconHeight());
		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
        JPanel jp = (JPanel) this.getContentPane();
        
        /*
         * JPanel对象才可以调用setOpaque(false);设置是否透明
         */
        
        jp.setOpaque(false);
        student.setOpaque(false);
		student.setLayout(null);
		activity.setBounds(80, 20, 120, 40);
		information.setBounds(80, 60, 120, 40);
		credit.setBounds(80, 100, 120, 40);
		inout.setBounds(80, 140, 120, 40);

		student.add(activity);
		student.add(credit);
		student.add(information);
		student.add(inout);

		activity.addActionListener(this);
		information.addActionListener(this);
		credit.addActionListener(this);
		inout.addActionListener(this);

		super.setTitle("菜单");
		super.add(student);
		super.setSize(350, 250);
		super.setLocation(300, 400);
		super.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == activity) {
			this.dispose();
			new StudentApplySignView();

		} else if (e.getSource() == information) {
			this.dispose();
			new studentupdateView();
		} else if (e.getSource() == credit) {
			this.dispose();
			new StudentApplySignView();

		} else if (e.getSource() == inout) {
			this.dispose();
			new StudentApplySignView();

		}
	}
	public static void main(String[] args) {

		new StudentView ();
	}
}

信息修改界面

package cn.sunshine.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import cn.sunshine.jdbc.dao.UserDao;
import cn.sunshine.jdbc.dao.impl.UserdaoImpl;
import cn.sunshine.jdbc.domain.User;

public class studentupdateView extends JFrame implements ActionListener {
	private JPanel pan = new JPanel();
	private JLabel namelab = new JLabel("用户名");
	private JLabel generlab = new JLabel("性别");
	private JLabel majorlab = new JLabel("专业");
	private JLabel agelab = new JLabel("年龄");

	private JTextField nametext = new JTextField();
	private JTextField genertext = new JTextField();
	private JTextField majortext = new JTextField();
	private JTextField agetext = new JTextField();

	public JButton button = new JButton("确认修改");
	 ImageIcon background = new ImageIcon("E:\\4.jpeg");
	    JLabel label = new JLabel(background);
	public studentupdateView() {
		label.setBounds(0, 0, background.getIconWidth(), background.getIconHeight());
		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
        JPanel jp = (JPanel) this.getContentPane();
        
        /*
         * JPanel对象才可以调用setOpaque(false);设置是否透明
         */
        
        jp.setOpaque(false);
        pan.setOpaque(false);
		pan.setLayout(null);
		namelab.setBounds(20, 20, 60, 30);
		generlab.setBounds(20, 50, 60, 30);
		majorlab.setBounds(20, 80, 60, 30);
		agelab.setBounds(20, 110, 60, 30);
		nametext.setBounds(90, 20, 140, 30);
		genertext.setBounds(90, 50, 140, 30);
		majortext.setBounds(90, 80, 140, 30);
		agetext.setBounds(90, 110, 140, 30);
		button.setBounds(100, 140, 90, 30);

		pan.add(namelab);
		pan.add(nametext);
		pan.add(agelab);
		pan.add(agetext);
		pan.add(majorlab);
		pan.add(majortext);
		pan.add(generlab);
		pan.add(genertext);
		pan.add(button);

		button.addActionListener(this);

		super.setTitle("信息修改");
		super.add(pan);

		super.setSize(350, 250);
		super.setLocation(300, 400);
		super.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == button) {
			update();

		}
	}

	private void update() {
		String name = this.nametext.getText().trim();
		String gener = this.genertext.getText().trim();
		String major = this.majortext.getText().trim();
		String age = this.agetext.getText().trim();
		User user = new User();
		user.setName(name);
		user.setGener(gener);
		user.setMajor(major);
		user.setAge(age);
		UserDao userdao = new UserdaoImpl();
		userdao.update(user);

	}
}

签到签退,活动报名,学分申请界面

package cn.sunshine.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import javax.swing.JTextField;

import cn.sunshine.jdbc.dao.UserDao;
import cn.sunshine.jdbc.dao.impl.UserdaoImpl;
import cn.sunshine.jdbc.domain.User;

public class StudentApplySignView extends JFrame implements ActionListener {
	private JPanel pan = new JPanel();
	private JLabel namelab = new JLabel("用户名");
	private JLabel activitylab = new JLabel("活动名称");
	private JLabel creditlab = new JLabel("学分申请");
	private JTextField nametext = new JTextField();
	private JTextField activitytext = new JTextField();
	private JTextField credittext = new JTextField();

	public JButton apply1 = new JButton("申请活动");
	public JButton apply2 = new JButton("申请学分");

	public JButton in = new JButton("签到");
	public JButton out = new JButton("签退");
	ImageIcon background = new ImageIcon("E:\\9.jpg");
    JLabel label = new JLabel(background);
	public StudentApplySignView() {
		label.setBounds(0, 0, background.getIconWidth(), background.getIconHeight());
		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
        JPanel jp = (JPanel) this.getContentPane();
        
        /*
         * JPanel对象才可以调用setOpaque(false);设置是否透明
         */
        
        jp.setOpaque(false);
        pan.setOpaque(false);
		pan.setLayout(null);
		namelab.setBounds(20, 20, 60, 30);
		activitylab.setBounds(20, 60, 60, 30);
		creditlab.setBounds(20, 100, 60, 30);
		nametext.setBounds(70, 20, 140, 30);
		activitytext.setBounds(70, 60, 140, 30);
		credittext.setBounds(70, 100, 140, 30);
		in.setBounds(30, 140, 60, 30);
		out.setBounds(100, 140, 60, 30);
		apply2.setBounds(20, 170, 100, 30);
		apply1.setBounds(150, 170, 100, 30);
		pan.add(activitylab);
		pan.add(activitytext);
		pan.add(apply1);
		pan.add(creditlab);
		pan.add(credittext);
		pan.add(in);
		pan.add(out);
		pan.add(namelab);
		pan.add(nametext);
		pan.add(apply2);
		apply1.addActionListener(this);
		apply2.addActionListener(this);
		in.addActionListener(this);
		out.addActionListener(this);
		super.setTitle("申请和签到");
		super.add(pan);
		super.setSize(350, 250);
		super.setLocation(300, 400);
		super.setVisible(true);

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == in) {
			inout();
		} else if (e.getSource() == out) {
			inout();
		} else if (e.getSource() == apply1) {
			apply1();
		} else if (e.getSource() == apply2) {
			apply2();
		}

	}

	private void inout() {
		// TODO Auto-generated method stub
		String name = this.nametext.getText().trim();
		User user = new User();
		user.setName(name);
		user.setSigninout("等待审核中");
		UserDao userdao = new UserdaoImpl();
		userdao.signinout(user);

	}

	private void apply1() {
		String name = this.nametext.getText().trim();
		String activity = this.activitytext.getText().trim();
		User user = new User();
		user.setApplyactivity(activity);
		user.setName(name);
		UserDao userdao = new UserdaoImpl();
		userdao.applyactivity(user);

	}

	private void apply2() {
		String name = this.nametext.getText().trim();
		String credit = this.credittext.getText().trim();
		User user = new User();
		user.setApplycredit("等待审核中");
		user.setName(name);
		UserDao userdao = new UserdaoImpl();
		userdao.applycredit(user);

	}

}

感想

虽然是一个小项目,但做出来还是很有成就感的。作为一名初学者,在做项目的时候,一个问题困扰了很久,突然间知道怎么解决的时候真的很美好,而且当你发现自己解决了一些问题,自己感觉进步的时候也很会很开心。作为很喜欢很喜欢鬼怪的女生,所以界面背景用了鬼怪的照片。
最后我相信学习JAVA的钱途,我也相信通过学习,我也能到达一定的高度,那时候看到现在绞尽脑汁写出的代码就像看到现在看1+1这样简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值