Java+JDBC學(xué)生信息管理系統(tǒng)

base包下:

package base;

import java.sql.ResultSet;
import java.sql.SQLException;

import dao.AdminDAO;
import dao.StudentDAO;
import util.DBUtil;
import temp.DAO;

public abstract class BaseDAO {
    protected final DBUtil db = DBUtil.getDBUtil();
    protected ResultSet rs;
    private static BaseDAO baseDAO;

    public BaseDAO() {
        init();
    }

    private void init() {
        // buildAbilityDAO();
    }

    // protected abstract void buildAbilityDAO();

    public static synchronized BaseDAO getAbilityDAO(DAO dao) {
        switch (dao) {
        case AdminDAO:
            if (baseDAO == null || baseDAO.getClass() != AdminDAO.class) {
                baseDAO = AdminDAO.getInstance();
            }
            break;
        case StudentDAO:
            if (baseDAO == null || baseDAO.getClass() != StudentDAO.class) {
                baseDAO = StudentDAO.getInstance();
            }
            break;
        default:
            break;
        }
        return baseDAO;
    }

    protected void destroy() {
        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException se) {
            se.printStackTrace();
        } finally {
            db.close();
        }
}
}

dao包下:

package dao;

import java.sql.SQLException;

import base.BaseDAO;

/**
 * 管理員增刪查改
 * @author Administrator
 *
 */
public class AdminDAO extends BaseDAO{
    private static AdminDAO ad = null;

    public static synchronized AdminDAO getInstance() {
        if (ad == null) {
            ad = new AdminDAO();
        }
        return ad;
    }

    public boolean queryForLogin(String username, String password) {
        boolean result = false;
        if (username.length() == 0 || password.length() == 0) {
            return result;
        }
        String sql = "select * from admin where username=? and password=?";
        String[] param = { username, password };
        rs = db.executeQuery(sql, param);
        try {
            if (rs.next()) {
                result = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            destroy();
        }
        return result;
}
}


package dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Student;
import base.BaseDAO;

public class StudentDAO extends BaseDAO{
    private final int fieldNum = 9;
    private final int showNum = 15;
    private static StudentDAO sd = null;

    public static synchronized StudentDAO getInstance() {
        if (sd == null) {
            sd = new StudentDAO();
        }
        return sd;
    }

    // update
    public boolean update(Student stu) {
        boolean result = false;
        if (stu == null) {
            return result;
        }
        try {
            // check
            if (queryBySno(stu.getSno()) == 0) {
                return result;
            }
            // update
            String sql = "update student set sex=?,department=?,email=?,tel=?,hometown=?,mark=? where name=? and sno=?";
            String[] param = { stu.getSex(), stu.getDepartment(), stu.getEmail(), stu.getTel(), stu.getHomeTown(),
                    stu.getMark(), stu.getName(), stu.getSno() };
            int rowCount = db.executeUpdate(sql, param);
            if (rowCount == 1) {
                result = true;
            }
        } catch (SQLException se) {
            se.printStackTrace();
        } finally {
            destroy();
        }
        return result;
    }

    // delete
    public boolean delete(Student stu) {
        boolean result = false;
        if (stu == null) {
            return result;
        }
        String sql = "delete from student where name=? and sno=?";
        String[] param = { stu.getName(), stu.getSno() };
        int rowCount = db.executeUpdate(sql, param);
        if (rowCount == 1) {
            result = true;
        }
        destroy();
        return result;
    }

    // add
    public boolean add(Student stu) {
        boolean result = false;
        if (stu == null) {
            return result;
        }
        try {
            // check
            if (queryBySno(stu.getSno()) == 1) {
                return result;
            }
            // insert
            String sql = "insert into student(name,sno,sex,department,hometown,mark,email,tel) values(?,?,?,?,?,?,?,?)";
            String[] param = { stu.getName(), stu.getSno(), stu.getSex(), stu.getDepartment(), stu.getHomeTown(),
                    stu.getMark(), stu.getEmail(), stu.getTel() };
            if (db.executeUpdate(sql, param) == 1) {
                result = true;
            }
        } catch (SQLException se) {
            se.printStackTrace();
        } finally {
            destroy();
        }
        return result;
    }

    // query by name
    public String[][] queryByName(String name) {
        String[][] result = null;
        if (name.length() < 0) {
            return result;
        }
        List<Student> stus = new ArrayList<Student>();
        int i = 0;
        String sql = "select * from student where name like ?";
        String[] param = { "%" + name + "%" };
        rs = db.executeQuery(sql, param);
        try {
            while (rs.next()) {
                buildList(rs, stus, i);
                i++;
            }
            if (stus.size() > 0) {
                result = new String[stus.size()][fieldNum];
                for (int j = 0; j < stus.size(); j++) {
                    buildResult(result, stus, j);
                }
            }
        } catch (SQLException se) {
            se.printStackTrace();
        } finally {
            destroy();
        }

        return result;
    }

    // query
    public String[][] list(int pageNum) {
        String[][] result = null;
        if (pageNum < 1) {
            return result;
        }
        List<Student> stus = new ArrayList<Student>();
        int i = 0;
        int beginNum = (pageNum - 1) * showNum;
        String sql = "select * from student limit ?,?";
        Integer[] param = { beginNum, showNum };
        rs = db.executeQuery(sql, param);
        try {
            while (rs.next()) {
                buildList(rs, stus, i);
                i++;
            }
            if (stus.size() > 0) {
                result = new String[stus.size()][fieldNum];
                for (int j = 0; j < stus.size(); j++) {
                    buildResult(result, stus, j);
                }
            }
        } catch (SQLException se) {
            se.printStackTrace();
        } finally {
            destroy();
        }

        return result;
    }

    // 將rs記錄添加到list中
    private void buildList(ResultSet rs, List<Student> list, int i) throws SQLException {
        Student stu = new Student();
        stu.setId(i + 1);
        stu.setName(rs.getString("name"));
        stu.setDepartment(rs.getString("department"));
        stu.setEmail(rs.getString("email"));
        stu.setHomeTown(rs.getString("hometown"));
        stu.setMark(rs.getString("mark"));
        stu.setSex(rs.getString("sex"));
        stu.setSno(rs.getString("sno"));
        stu.setTel(rs.getString("tel"));
        list.add(stu);
    }

    // 將list中記錄添加到二維數(shù)組中
    private void buildResult(String[][] result, List<Student> stus, int j) {
        Student stu = stus.get(j);
        result[j][0] = String.valueOf(stu.getId());
        result[j][1] = stu.getName();
        result[j][2] = stu.getSno();
        result[j][3] = stu.getSex();
        result[j][4] = stu.getDepartment();
        result[j][5] = stu.getHomeTown();
        result[j][6] = stu.getMark();
        result[j][7] = stu.getEmail();
        result[j][8] = stu.getTel();
    }

    // query by sno
    private int queryBySno(String sno) throws SQLException {
        int result = 0;
        if ("".equals(sno) || sno == null) {
            return result;
        }
        String checkSql = "select * from student where sno=?";
        String[] checkParam = { sno };
        rs = db.executeQuery(checkSql, checkParam);
        if (rs.next()) {
            result = 1;
        }
        return result;
}
}

model包下:

package model;

public class Admin {
    private int id;
    private String name;
    private String username;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
    
}


package model;

public class Student {
    private int id;
    private String sno;//學(xué)號
    private String name;
    private String sex;
    private String department;//院系
    private String homeTown;//籍貫
    private String mark; 
    private String email;
    private String tel;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getSno() {
        return sno;
    }
    public void setSno(String sno) {
        this.sno = sno;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
    public String getHomeTown() {
        return homeTown;
    }
    public void setHomeTown(String homeTown) {
        this.homeTown = homeTown;
    }
    public String getMark() {
        return mark;
    }
    public void setMark(String mark) {
        this.mark = mark;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    
    
}

run包下:

package run;

import view.LoginView;

public class Main {

    public static void main(String[] args) {
        // TODO 自動(dòng)生成的方法存根
        new LoginView();
    }

}

temp包下:

package temp;

/**
 * 常量
 * @author Administrator
 *
 */
public class AppConstants {
    //jdbc
    public static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncodeing=UTF-8";
    public static final String JDBC_USERNAME = "root";
    public static final String JDBC_PASSWORD = "123456";
    public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";

    // student field
    public static final String STUDENT_NAME = "姓名";
    public static final String STUDENT_SNO = "學(xué)號";
    public static final String STUDENT_SEX = "性別";
    public static final String STUDENT_DEPARTMETN = "院系";
    public static final String STUDENT_HOMETOWN = "籍貫";
    public static final String STUDENT_EMAIL = "電子郵件";
    public static final String STUDENT_TEL = "聯(lián)系方式";
    public static final String STUDENT_MARK = "學(xué)分";

    // login view
    public static final String LOGIN_TITLE = "登錄界面";
    public static final String LOGIN_USERNAME = "用戶名";
    public static final String LOGIN_PASSWORD = "密碼";
    public static final String LOGIN = "登錄";
    public static final String RESET = "重置";

    // main view
    public static final String MAINVIEW_TITLE = "學(xué)生信息管理系統(tǒng)";
    public static final String MAINVIEW_PAGENUM_JLABEL_DI = "第 ";
    public static final String MAINVIEW_PAGENUM_JLABEL_YE = "/99 頁";
    public static final String MAINVIEW_FIND_JLABEL = "查詢結(jié)果";
    public static final String MAINVIEW_FIRST = "首頁";
    public static final String MAINVIEW_LAST = "末頁";
    public static final String MAINVIEW_PRE = "上一頁";
    public static final String MAINVIEW_NEXT = "下一頁";
    public static final String PARAM_FIND_CONDITION = "";
    public static final String PARAM_FIND = "查找";
    public static final String PARAM_ADD = "添加";
    public static final String PARAM_DELETE = "刪除";
    public static final String PARAM_UPDATE = "更新";

    // add view
    public static final String ADDVIEW_TITLE = "添加學(xué)生信息";
    public static final String ADDVIEW_ADDBUTTON = "添加";
    public static final String EXITBUTTON = "退出";

    // delete view
    public static final String DELETEVIEW_TITLE = "刪除學(xué)生信息";
    public static final String DELETEVIEW_DELETEBUTTON = "刪除";

    // update view
    public static final String UPDATEVIEW_TITLE = "更新學(xué)生信息";
    public static final String UPDATEVIEW_UPDATEBUTTON = "更新";

}


package temp;

/**
 * 定制枚舉類型
 * @author Administrator
 *
 */
public enum DAO {
    AdminDAO,StudentDAO;
}

util包下:

package util;

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

import temp.AppConstants;

public class DBUtil {
    private static DBUtil db;

    private Connection conn;
    private PreparedStatement ps;
    private ResultSet rs;

    private DBUtil() {

    }

    public static DBUtil getDBUtil() {
        if (db == null) {
            db = new DBUtil();
        }
        return db;
    }

    public int executeUpdate(String sql) {
        int result = -1;
        if (getConn() == null) {
            return result;
        }
        try {
            ps = conn.prepareStatement(sql);
            result = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }

    public int executeUpdate(String sql, Object[] obj) {
        int result = -1;
        if (getConn() == null) {
            return result;
        }
        try {
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < obj.length; i++) {
                ps.setObject(i + 1, obj[i]);
            }
            result = ps.executeUpdate();
            close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }

    public ResultSet executeQuery(String sql) {
        if (getConn() == null) {
            return null;
        }
        try {
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }

    public ResultSet executeQuery(String sql, Object[] obj) {
        if (getConn() == null) {
            return null;
        }
        try {
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < obj.length; i++) {
                ps.setObject(i + 1, obj[i]);
            }
            rs = ps.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return rs;
    }

    private Connection getConn() {
        try {
            if (conn == null || conn.isClosed()) {
                Class.forName(AppConstants.JDBC_DRIVER);
                conn = DriverManager.getConnection(AppConstants.JDBC_URL, AppConstants.JDBC_USERNAME,
                        temp.AppConstants.JDBC_PASSWORD);
            }
        } catch (ClassNotFoundException e) {
            System.out.println("jdbc driver is not found.");
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public void close() {
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
}
}

view包下:

package view;

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

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

import base.BaseDAO;
import dao.StudentDAO;
import model.Student;
import temp.AppConstants;
import temp.DAO;



/**
 * 添加學(xué)生
 * @author Administrator
 *
 */
public class AddView extends JFrame{

    private static final long serialVersionUID = 2411072805644479176L;
    
    private JPanel jPanelCenter, jPanelSouth;
    private JButton addButton, exitButton;
    private JTextField name, sno, department, hometown, mark, email, tel, sex;

    public AddView() {
        init();
    }

    private void init() {
        setTitle(AppConstants.ADDVIEW_TITLE);
        // center panel
        jPanelCenter = new JPanel();
        jPanelCenter.setLayout(new GridLayout(9, 2));
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));
        name = new JTextField();
        jPanelCenter.add(name);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));
        sno = new JTextField();
        jPanelCenter.add(sno);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));
        sex = new JTextField();
        jPanelCenter.add(sex);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));
        department = new JTextField();
        jPanelCenter.add(department);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));
        hometown = new JTextField();
        jPanelCenter.add(hometown);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));
        mark = new JTextField();
        jPanelCenter.add(mark);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));
        email = new JTextField();
        jPanelCenter.add(email);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));
        tel = new JTextField();
        jPanelCenter.add(tel);
        jPanelCenter.add(new JLabel("-------------------------------------------------"));
        jPanelCenter.add(new JLabel("-------------------------------------------------"));

        // south panel
        jPanelSouth = new JPanel();
        jPanelSouth.setLayout(new GridLayout(1, 2));
        addButton = new JButton(AppConstants.ADDVIEW_ADDBUTTON);
        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (check()) {
                    Student stu = new Student();
                    buildStudent(stu);
                    boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).add(stu);
                    if (isSuccess) {
                        setEmpty();
                        if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {
                            MainView.currPageNum = 1;
                        }
                        String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))
                                .list(MainView.currPageNum);
                        MainView.initJTable(MainView.jTable, result);
                    }
                }
            }
        });
        jPanelSouth.add(addButton);
        exitButton = new JButton(AppConstants.EXITBUTTON);
        exitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });
        jPanelSouth.add(exitButton);

        this.add(jPanelCenter, BorderLayout.CENTER);
        this.add(jPanelSouth, BorderLayout.SOUTH);

        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setBounds(470, 200, 400, 270);
        setResizable(false);
        setVisible(true);
    }

    private boolean check() {
        boolean result = false;
        if ("".equals(name.getText()) || "".equals(sno.getText()) || "".equals(department.getText())
                || "".equals(sex.getText()) || "".equals(mark.getText()) || "".equals(tel.getText())
                || "".equals(email.getText()) || "".equals(hometown.getText())) {
            return result;
        } else {
            result = true;
        }
        return result;
    }

    private void buildStudent(Student stu) {
        stu.setDepartment(department.getText());
        stu.setEmail(email.getText());
        stu.setHomeTown(hometown.getText());
        stu.setMark(mark.getText());
        stu.setName(name.getText());
        stu.setSno(sno.getText());
        stu.setTel(tel.getText());
        stu.setSex(sex.getText());
    }

    private void setEmpty() {
        name.setText("");
        sno.setText("");
        department.setText("");
        sex.setText("");
        email.setText("");
        hometown.setText("");
        tel.setText("");
        mark.setText("");
}
}
package view;

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

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

import base.BaseDAO;
import model.Student;
import dao.StudentDAO;
import temp.AppConstants;
import temp.DAO;



/**
 * 刪除學(xué)生
 * @author Administrator
 *
 */
public class DeleteView extends JFrame{

    /**
     * 添加已生成的串行版本標(biāo)識
     */
    private static final long serialVersionUID = 501541272051379470L;
    
    private JPanel jPanelCenter, jPanelSouth;
    private JButton deleteButton, exitButton;
    private JTextField name, sno; // 根據(jù)姓名+學(xué)號刪除學(xué)生

    public DeleteView() {
        init();
    }

    private void init() {
        setTitle(AppConstants.DELETEVIEW_TITLE);
        // center panel
        jPanelCenter = new JPanel();
        jPanelCenter.setLayout(new GridLayout(3, 2));
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));
        name = new JTextField();
        jPanelCenter.add(name);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));
        sno = new JTextField();
        jPanelCenter.add(sno);
        jPanelCenter.add(new JLabel("-------------------------------------------------"));
        jPanelCenter.add(new JLabel("-------------------------------------------------"));

        // south panel
        jPanelSouth = new JPanel();
        jPanelSouth.setLayout(new GridLayout(1, 2));
        deleteButton = new JButton(AppConstants.DELETEVIEW_DELETEBUTTON);
        deleteButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (check()) {
                    Student stu = new Student();
                    buildStudent(stu);
                    boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).delete(stu);
                    if (isSuccess) {
                        setEmpty();
                        if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {
                            MainView.currPageNum = 1;
                        }
                        String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))
                                .list(MainView.currPageNum);
                        MainView.initJTable(MainView.jTable, result);
                    }
                }
            }
        });
        jPanelSouth.add(deleteButton);
        exitButton = new JButton(AppConstants.EXITBUTTON);
        exitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });
        jPanelSouth.add(exitButton);

        this.add(jPanelCenter, BorderLayout.CENTER);
        this.add(jPanelSouth, BorderLayout.SOUTH);

        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setBounds(470, 250, 400, 130);
        setResizable(false);
        setVisible(true);
    }

    private boolean check() {
        boolean result = false;
        if ("".equals(name.getText()) || "".equals(sno.getText())) {
            return result;
        } else {
            result = true;
        }
        return result;
    }

    private void buildStudent(Student stu) {
        stu.setName(name.getText());
        stu.setSno(sno.getText());
    }

    private void setEmpty() {
        name.setText("");
        sno.setText("");
}
}
package view;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

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 base.BaseDAO;
import dao.AdminDAO;
import temp.AppConstants;
import temp.DAO;



/**
 * 登錄界面
 * @author Administrator
 *
 */
public class LoginView extends JFrame{

    private static final long serialVersionUID = -4972101784603327025L;
    
    private JPanel jPanelCenter, jPanelSouth;
    private JTextField username;
    private JPasswordField password;
    private JButton loginButton, resetButton;

    public LoginView() {
        init();
    }

    private void init() {
        this.setTitle("Login");

        jPanelCenter = new JPanel();
        jPanelCenter.setLayout(new GridLayout(3, 2));
        jPanelCenter.add(new JLabel(AppConstants.LOGIN_USERNAME));
        username = new JTextField();
        jPanelCenter.add(username);
        jPanelCenter.add(new JLabel(AppConstants.LOGIN_PASSWORD));
        password = new JPasswordField();
        // enter key listener
        password.addKeyListener(new LoginListener());
        jPanelCenter.add(password);
        jPanelCenter.add(new JLabel("----------------------------------------------"));
        jPanelCenter.add(new JLabel("----------------------------------------------"));

        jPanelSouth = new JPanel();
        jPanelSouth.setLayout(new GridLayout(1, 2));
        loginButton = new JButton(AppConstants.LOGIN);
        loginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                check();
            }
        });
        jPanelSouth.add(loginButton);
        resetButton = new JButton(AppConstants.RESET);
        resetButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                username.setText("");
                password.setText("");
            }
        });
        jPanelSouth.add(resetButton);

        this.add(jPanelCenter, BorderLayout.CENTER);
        this.add(jPanelSouth, BorderLayout.SOUTH);

        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        this.setBounds(450, 250, 375, 140);
        this.setResizable(false);
        this.setVisible(true);
    }

    private class LoginListener extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                check();
            }
        }
    }

    private void check() {
        AdminDAO adminDAO = (AdminDAO) BaseDAO.getAbilityDAO(DAO.AdminDAO);
        if (adminDAO.queryForLogin(username.getText(), String.valueOf(password.getPassword()))) {
            dispose();
            new MainView();
        } else {
            username.setText("");
            password.setText("");
        }
}
}
package view;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import dao.StudentDAO;
import base.BaseDAO;
import temp.AppConstants;
import temp.DAO;



/**
 * 首頁
 * @author Administrator
 *
 */
public class MainView extends JFrame{

    /**
     * 添加已生成的串行版本標(biāo)識
     */
    private static final long serialVersionUID = 6313156717813295316L;
    
    private final int maxPageNum = 99;

    private JPanel jPanelNorth, jPanelSouth, jPanelCenter;
    private JButton jButtonFirst, jButtonLast, jButtonNext, jButtonPre, jButtonAdd, jButtonDelete, jButtonUpdate,
            jButtonFind;
    private JLabel currPageNumJLabel;
    private JTextField condition;
    public static JTable jTable;
    private JScrollPane jScrollPane;
    private DefaultTableModel myTableModel;

    public static String[] column = { "id", AppConstants.STUDENT_NAME, AppConstants.STUDENT_SNO,
            AppConstants.STUDENT_SEX, AppConstants.STUDENT_DEPARTMETN, AppConstants.STUDENT_HOMETOWN,
            AppConstants.STUDENT_MARK, AppConstants.STUDENT_EMAIL, AppConstants.STUDENT_TEL };
    public static int currPageNum = 1;

    public MainView() {
        init();
    }

    private void init() {
        setTitle(AppConstants.MAINVIEW_TITLE);

        // north panel
        jPanelNorth = new JPanel();
        jPanelNorth.setLayout(new GridLayout(1, 5));
        condition = new JTextField(AppConstants.PARAM_FIND_CONDITION);
        condition.addKeyListener(new FindListener());
        jPanelNorth.add(condition);
        // query by name
        jButtonFind = new JButton(AppConstants.PARAM_FIND);
        jButtonFind.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                find();
            }
        });
        jButtonFind.addKeyListener(new FindListener());
        // add
        jPanelNorth.add(jButtonFind);
        jButtonAdd = new JButton(AppConstants.PARAM_ADD);
        jButtonAdd.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new AddView();
            }
        });
        jPanelNorth.add(jButtonAdd);
        // delete
        jButtonDelete = new JButton(AppConstants.PARAM_DELETE);
        jButtonDelete.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new DeleteView();
            }
        });
        jPanelNorth.add(jButtonDelete);
        // update
        jButtonUpdate = new JButton(AppConstants.PARAM_UPDATE);
        jButtonUpdate.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new UpdateView();
            }
        });
        jPanelNorth.add(jButtonUpdate);

        // center panel
        jPanelCenter = new JPanel();
        jPanelCenter.setLayout(new GridLayout(1, 1));

        // init jTable
        String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);
        myTableModel = new DefaultTableModel(result, column);
        jTable = new JTable(myTableModel);
        DefaultTableCellRenderer cr = new DefaultTableCellRenderer();
        cr.setHorizontalAlignment(JLabel.CENTER);
        jTable.setDefaultRenderer(Object.class, cr);
        initJTable(jTable, result);

        jScrollPane = new JScrollPane(jTable);
        jPanelCenter.add(jScrollPane);

        // south panel
        jPanelSouth = new JPanel();
        jPanelSouth.setLayout(new GridLayout(1, 5));

        jButtonFirst = new JButton(AppConstants.MAINVIEW_FIRST);
        jButtonFirst.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                currPageNum = 1;
                String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);
                initJTable(jTable, result);
                currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum
                        + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);
            }
        });
        jButtonPre = new JButton(AppConstants.MAINVIEW_PRE);
        jButtonPre.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                currPageNum--;
                if (currPageNum <= 0) {
                    currPageNum = 1;
                }
                String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);
                initJTable(jTable, result);
                currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum
                        + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);
            }
        });
        jButtonNext = new JButton(AppConstants.MAINVIEW_NEXT);
        jButtonNext.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                currPageNum++;
                if (currPageNum > maxPageNum) {
                    currPageNum = maxPageNum;
                }
                String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);
                initJTable(jTable, result);
                currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum
                        + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);
            }
        });
        jButtonLast = new JButton(AppConstants.MAINVIEW_LAST);
        jButtonLast.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                currPageNum = maxPageNum;
                String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);
                initJTable(jTable, result);
                currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum
                        + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);
            }
        });

        currPageNumJLabel = new JLabel(
                AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);
        currPageNumJLabel.setHorizontalAlignment(JLabel.CENTER);

        jPanelSouth.add(jButtonFirst);
        jPanelSouth.add(jButtonPre);
        jPanelSouth.add(currPageNumJLabel);
        jPanelSouth.add(jButtonNext);
        jPanelSouth.add(jButtonLast);

        this.add(jPanelNorth, BorderLayout.NORTH);
        this.add(jPanelCenter, BorderLayout.CENTER);
        this.add(jPanelSouth, BorderLayout.SOUTH);

        setBounds(400, 200, 750, 340);
        setResizable(false);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setVisible(true);
    }

    public static void initJTable(JTable jTable, String[][] result) {
        ((DefaultTableModel) jTable.getModel()).setDataVector(result, column);
        jTable.setRowHeight(20);
        TableColumn firsetColumn = jTable.getColumnModel().getColumn(0);
        firsetColumn.setPreferredWidth(30);
        firsetColumn.setMaxWidth(30);
        firsetColumn.setMinWidth(30);
        TableColumn secondColumn = jTable.getColumnModel().getColumn(1);
        secondColumn.setPreferredWidth(60);
        secondColumn.setMaxWidth(60);
        secondColumn.setMinWidth(60);
        TableColumn thirdColumn = jTable.getColumnModel().getColumn(2);
        thirdColumn.setPreferredWidth(90);
        thirdColumn.setMaxWidth(90);
        thirdColumn.setMinWidth(90);
        TableColumn fourthColumn = jTable.getColumnModel().getColumn(3);
        fourthColumn.setPreferredWidth(30);
        fourthColumn.setMaxWidth(30);
        fourthColumn.setMinWidth(30);
        TableColumn seventhColumn = jTable.getColumnModel().getColumn(6);
        seventhColumn.setPreferredWidth(30);
        seventhColumn.setMaxWidth(30);
        seventhColumn.setMinWidth(30);
        TableColumn ninthColumn = jTable.getColumnModel().getColumn(8);
        ninthColumn.setPreferredWidth(90);
        ninthColumn.setMaxWidth(90);
        ninthColumn.setMinWidth(90);
    }

    private class FindListener extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                find();
            }
        }
    }

    private void find() {
        currPageNum = 0;
        String param = condition.getText();
        if ("".equals(param) || param == null) {
            initJTable(MainView.jTable, null);
            currPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);
            return;
        }
        String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).queryByName(param);
        condition.setText("");
        initJTable(MainView.jTable, result);
        currPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);
}
}
package view;

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

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

import base.BaseDAO;
import dao.StudentDAO;
import model.Student;
import temp.AppConstants;
import temp.DAO;



/**
 * 更新學(xué)生信息
 * @author Administrator
 *
 */
public class UpdateView extends JFrame{

    /**
     * 添加已生成的串行版本標(biāo)識
     */
    private static final long serialVersionUID = -1259286514124919662L;
    
    private JPanel jPanelCenter, jPanelSouth;
    private JButton updateButton, exitButton;
    private JTextField name, sno, department, hometown, mark, email, tel, sex;

    public UpdateView() {
        init();
    }

    private void init() {
        setTitle(AppConstants.UPDATEVIEW_TITLE);
        // center panel
        jPanelCenter = new JPanel();
        jPanelCenter.setLayout(new GridLayout(9, 2));
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));
        name = new JTextField();
        jPanelCenter.add(name);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));
        sno = new JTextField();
        jPanelCenter.add(sno);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));
        sex = new JTextField();
        jPanelCenter.add(sex);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));
        department = new JTextField();
        jPanelCenter.add(department);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));
        hometown = new JTextField();
        jPanelCenter.add(hometown);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));
        mark = new JTextField();
        jPanelCenter.add(mark);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));
        email = new JTextField();
        jPanelCenter.add(email);
        jPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));
        tel = new JTextField();
        jPanelCenter.add(tel);
        jPanelCenter.add(new JLabel("-------------------------------------------------"));
        jPanelCenter.add(new JLabel("-------------------------------------------------"));

        // south panel
        jPanelSouth = new JPanel();
        jPanelSouth.setLayout(new GridLayout(1, 2));
        updateButton = new JButton(AppConstants.UPDATEVIEW_UPDATEBUTTON);
        updateButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (check()) {
                    Student stu = new Student();
                    buildStudent(stu);
                    boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).update(stu);
                    if (isSuccess) {
                        setEmpty();
                        if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {
                            MainView.currPageNum = 1;
                        }
                        String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))
                                .list(MainView.currPageNum);
                        MainView.initJTable(MainView.jTable, result);
                    }
                }
            }
        });
        jPanelSouth.add(updateButton);
        exitButton = new JButton(AppConstants.EXITBUTTON);
        exitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });
        jPanelSouth.add(exitButton);

        this.add(jPanelCenter, BorderLayout.CENTER);
        this.add(jPanelSouth, BorderLayout.SOUTH);

        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setBounds(470, 200, 400, 270);
        setResizable(false);
        setVisible(true);
    }

    private boolean check() {
        boolean result = false;
        if ("".equals(name.getText()) || "".equals(sno.getText()) || "".equals(department.getText())
                || "".equals(sex.getText()) || "".equals(mark.getText()) || "".equals(tel.getText())
                || "".equals(email.getText()) || "".equals(hometown.getText())) {
            return result;
        } else {
            result = true;
        }
        return result;
    }

    private void buildStudent(Student stu) {
        stu.setDepartment(department.getText());
        stu.setEmail(email.getText());
        stu.setHomeTown(hometown.getText());
        stu.setMark(mark.getText());
        stu.setName(name.getText());
        stu.setSno(sno.getText());
        stu.setTel(tel.getText());
        stu.setSex(sex.getText());
    }

    private void setEmpty() {
        name.setText("");
        sno.setText("");
        department.setText("");
        sex.setText("");
        email.setText("");
        hometown.setText("");
        tel.setText("");
        mark.setText("");
}
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末余素,一起剝皮案震驚了整個(gè)濱河市垦写,隨后出現(xiàn)的幾起案子谢翎,更是在濱河造成了極大的恐慌沾谜,老刑警劉巖伶授,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涮因,死亡現(xiàn)場離奇詭異拒迅,居然都是意外死亡沥寥,警方通過查閱死者的電腦和手機(jī)颤练,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門既忆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嗦玖,你說我怎么就攤上這事患雇。” “怎么了宇挫?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵苛吱,是天一觀的道長。 經(jīng)常有香客問我器瘪,道長翠储,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任橡疼,我火速辦了婚禮援所,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘欣除。我一直安慰自己住拭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布历帚。 她就那樣靜靜地躺著滔岳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挽牢。 梳的紋絲不亂的頭發(fā)上谱煤,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音卓研,去河邊找鬼趴俘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奏赘,可吹牛的內(nèi)容都是我干的寥闪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼磨淌,長吁一口氣:“原來是場噩夢啊……” “哼疲憋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梁只,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缚柳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后搪锣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秋忙,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年构舟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灰追。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狗超,死狀恐怖弹澎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情努咐,我是刑警寧澤苦蒿,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站渗稍,受9級特大地震影響佩迟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竿屹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一音五、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧羔沙,春花似錦躺涝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诗充,卻和暖如春苍蔬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝴蜓。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工碟绑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俺猿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓格仲,卻偏偏與公主長得像押袍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子凯肋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容