目录
学生社团管理系统(Java+Swing+mysql)
写在前面:
作为一个计本专业大二的学生,单凭学校开设的几门专业课,学到的知识是零散的,不实操的话很难有提升,是不足以我们去完成哪怕一个小小的项目的,所以我们不得不自己去学习和尝试。
正好我们这学期在学习Java和数据库这两门课,由此开始萌生要开始一个小小的尝试将两个知识应用到实际当中,于是我选择制作一个简单的学生社团活动管理系统(作为两个协会的部长,平时为社团活动没有少操心)。在这个系统的制作过程中不断巩固了自己的Java学习(Java中的异常处理,Java swing,JDBC等)和数据库的实际应用(虽然我们这学期学习的是SQL serve 但MySQL也是大同小异)下面开始进入正题吧!
首先学习安装了MySQL,是通过这篇教程来安装和配置的嘿嘿MySQL安装教程,然后再找了一个MySQL的可视化应用程序,可以用Navicat(是一只猫),但由于正版要收费作为学生党就没有去费脑筋了,就找了一个口碑不错的免费软件,DBeaver(是一只海狸),可以直接在Microsoft Store里面免费下载。
然后就开始大概规划这个系统需要的功能,登录注册功能得有吧,然后就是社团和社团活动的增删改查功能得有吧(十分简单的功能)。
写了一个简单的文档,完成了数据库的设计包括了系统需求分析,各部分具有的功能,绘制了管理系统结构图,数据流DFD图,数据字典,概念设计E-R图等,并进行逻辑设计(关系模式),物理设计(基本表的存储结构)以及数据库的实现。
下面展示文档内部分内容:
根据需求分析的输入描绘的社团活动管理系统结构图如下:
社团活动管理功能模块图
用户(社团管理员)登录社团活动管理系统DFD图:
社团管理员登录社团活动管理系统DFD图
其中活动信息的数据字典如下:
概念设计(E-R图)
文档内容暂时就展示这么多吧,下面就开始制作阶段:
制作阶段
首先以我的能力还是很难一个一个字的去想去敲代码的,我当然还是借鉴了一些大佬的开发规范和一些源码,在这个过程中也是收获很多很多。
那么就开始吧!
开始之前还是按照规范乖乖建好Dao,Model,Util,View,文件夹。
Dao用来执行数据库与窗体系统程序之间的数据交互;
Model用来创建各实体;
Util用来保存各种工具方法,如JDBC和后面经常会用到的判断输入文本内容是否为空的方法;
View用来实现窗体各部分功能以及可视化的布局;
登录界面:
部分代码:
//创建登录界面的frame
public LoginView() {
setFont(new Font("仿宋", Font.PLAIN, 20));
setResizable(false);
setTitle("那就先登录吧!");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 473, 336);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setBackground(Color.ORANGE);
JLabel lblNewLabel = new JLabel("社团活动管理系统");
lblNewLabel.setIcon(new ImageIcon(LoginView.class.getResource("/images/logo.png")));
lblNewLabel.setFont(new Font("宋体", Font.BOLD, 12));
JLabel lblNewLabel_1 = new JLabel("用户名:");
lblNewLabel_1.setIcon(new ImageIcon(LoginView.class.getResource("/images/userName.png")));
JLabel lblNewLabel_2 = new JLabel("密 码:");
lblNewLabel_2.setIcon(new ImageIcon(LoginView.class.getResource("/images/password.png")));
JButton btnNewButton = new JButton("登录");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loginAction(e);
}
});
btnNewButton.setIcon(new ImageIcon(LoginView.class.getResource("/images/login.png")));
JButton btnNewButton_1 = new JButton("重置");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultAction(e);
}
});
btnNewButton_1.setIcon(new ImageIcon(LoginView.class.getResource("/images/reset.png")));
userName = new JTextField();
userName.setColumns(10);
userPassword = new JPasswordField();
JButton btnNewButton_2 = new JButton("注册");
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
RegisterUser registerUser=new RegisterUser();
registerUser.setVisible(true);
}
});
btnNewButton_2.setIcon(new ImageIcon(LoginView.class.getResource("/images/me.png")));
GroupLayout gl_contentPane = new GroupLayout(contentPane);
注册界面:
部分代码:
//注册界面
public RegisterUser() {
setTitle("那就先注册吧!");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 509, 437);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setBackground(Color.YELLOW);
JLabel lblNewLabel = new JLabel("开始注册");
lblNewLabel.setFont(new Font("仿宋", Font.BOLD, 27));
lblNewLabel.setIcon(new ImageIcon(RegisterUser.class.getResource("/images/logo.png")));
JLabel lblNewLabel_1 = new JLabel("用 户 名:");
name = new JTextField();
name.setColumns(10);
JLabel lblNewLabel_2 = new JLabel("密 码:");
JLabel lblNewLabel_3 = new JLabel("验 证 码:");
verification = new JTextField();
verification.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
ComperPassword(e);
}
});
verification.setText("");
verification.setColumns(10);
JLabel lblNewLabel_4 = new JLabel("");
JLabel lblNewLabel_5 = new JLabel("确认密码:");
JButton btnNewButton = new JButton("注册");
系统主界面对社团的管理:
对活动的管理:
添加活动功能部分代码:
public Addact() {
setTitle("活动添加");
setIconifiable(true);
setClosable(true);
setBounds(100, 100, 500, 501);
JLabel lblNewLabel = new JLabel("活动名称:");
actName = new JTextField();
actName.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("活动负责人:");
leadername = new JTextField();
leadername.setColumns(10);
JLabel lblNewLabel_2 = new JLabel("负责人性别:");
JLabel lblNewLabel_3 = new JLabel("活动时间:");
actTime = new JTextField();
actTime.setColumns(10);
JLabel lblNewLabel_4 = new JLabel("社团名称:");
JLabel lblNewLabel_5 = new JLabel("活动描述:");
actDesc = new JTextArea();
JButton btnNewButton = new JButton("添加");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addActAction(e);
}
});
btnNewButton.setIcon(new ImageIcon(Addact.class.getResource("/images/add.png")));
JButton btnNewButton_1 = new JButton("重置");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
reset();
}
});
btnNewButton_1.setIcon(new ImageIcon(Addact.class.getResource("/images/reset.png")));
man = new JRadioButton("男");
man.setSelected(true);
buttonGroup.add(man);
woman = new JRadioButton("女");
buttonGroup.add(woman);
actType = new JComboBox();
GroupLayout groupLayout = new GroupLayout(getContentPane());
总之,虽然完成这个小小的窗体程序花费了我挺多时间吧,但最后感觉还是很值得的,在这个过程中我也在不断学习,不断进步,嗯,还是很开心的!