基于java+mysql的swing+mysql学生管理系统java基础gui(java+gui)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于java的Swing+MySQL学生管理系统java基础gui(java+gui)
功能介绍:
学生信息管理,姓名,编号,性别,成绩,学号住址
s_schoolClassJcb = new JComboBox();
JButton button = new JButton("\u67E5\u8BE2");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bookSearchActionPerformed(e);
}
});
button.setIcon(new ImageIcon(StudentManageInterFrm.class.getResource("/images/search.png")));
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(19)
.addComponent(label)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_nameTxt, GroupLayout.PREFERRED_SIZE, 77, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(label_1)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_snTxt, GroupLayout.PREFERRED_SIZE, 74, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(label_2)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_schoolClassJcb, GroupLayout.PREFERRED_SIZE, 78, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(button)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_panel.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(label)
.addComponent(s_nameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_1)
.addComponent(s_snTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_2)
.addComponent(s_schoolClassJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(button))
.addGap(16))
);
panel.setLayout(gl_panel);
studentTable = new JTable();
studentTable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent met) {
studentTableMousePressed(met);
}
schoolClass=new SchoolClass();
schoolClass.setClassName("请选择...");
schoolClass.setId(-1);
this.s_schoolClassJcb.addItem(schoolClass);
}
while(rs.next()){
schoolClass=new SchoolClass();
schoolClass.setClassName(rs.getString("className"));
schoolClass.setId(rs.getInt("id"));
if("search".equals(type)){
this.s_schoolClassJcb.addItem(schoolClass);
}else if("modify".equals(type)){
this.schoolClassJcb.addItem(schoolClass);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 初始化表格数据
* @param book
*/
private void fillTable(Student book){
DefaultTableModel dtm=(DefaultTableModel) studentTable.getModel();
dtm.setRowCount(0); // 设置成0行
Connection con=null;
try{
con=dbUtil.getCon();
ResultSet rs=studentDao.list(con, book);
while(rs.next()){
Vector v=new Vector();
public void setSex(String sex) {
this.sex = sex;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public Integer getClassId() {
return classId;
}
public void setClassId(Integer classId) {
this.classId = classId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getAddress() {
return address;
}
SchoolClassManageInterFrm bookTypeManageInterFrm=new SchoolClassManageInterFrm();
bookTypeManageInterFrm.setVisible(true);
table.add(bookTypeManageInterFrm);
}
});
menuItem_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));
mnNewMenu_1.add(menuItem_1);
JMenu mnNewMenu_2 = new JMenu("学生信息管理");
mnNewMenu_2.setIcon(new ImageIcon(MainFrm.class.getResource("/images/bookManager.png")));
mnNewMenu.add(mnNewMenu_2);
JMenuItem menuItem_2 = new JMenuItem("学生信息添加");
menuItem_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
StudentAddInterFrm bookAddInterFrm=new StudentAddInterFrm();
bookAddInterFrm.setVisible(true);
table.add(bookAddInterFrm);
}
});
menuItem_2.setIcon(new ImageIcon(MainFrm.class.getResource("/images/add.png")));
mnNewMenu_2.add(menuItem_2);
JMenuItem menuItem_3 = new JMenuItem("学生信息整改");
menuItem_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
StudentManageInterFrm bookManageInterFrm=new StudentManageInterFrm();
bookManageInterFrm.setVisible(true);
table.add(bookManageInterFrm);
}
});
menuItem_3.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));
mnNewMenu_2.add(menuItem_3);
JMenuItem menuItem_4 = new JMenuItem("安全退出");
menuItem_4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int result=JOptionPane.showConfirmDialog(null, "是否退出系统");
if(result==0){
* @throws Exception
*/
public ResultSet list(Connection con,SchoolClass schoolClass)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_school_class");
if(StringUtil.isNotEmpty(schoolClass.getClassName())){
sb.append(" and className like '%"+schoolClass.getClassName()+"%'");
}
PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
return pstmt.executeQuery();
}
/**
* 删除班级
* @param con
* @param id
* @return
* @throws Exception
*/
public int delete(Connection con,String id)throws Exception{
String sql="delete from t_school_class where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
return pstmt.executeUpdate();
}
/**
* 更新班级
* @param con
* @param schoolClass
* @return
* @throws Exception
*/
public int update(Connection con,SchoolClass schoolClass)throws Exception{
String sql="update t_school_class set className=?,classDesc=? where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, schoolClass.getClassName());
pstmt.setString(2, schoolClass.getCalssDesc());
pstmt.setInt(3, schoolClass.getId());
return pstmt.executeUpdate();
}
}
/**
* @param con
* @param schoolClass
* @return
* @throws Exception
*/
public int add(Connection con,SchoolClass schoolClass)throws Exception{
String sql="insert into t_school_class values(null,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, schoolClass.getClassName());
System.out.println(schoolClass.getClassName());
pstmt.setString(2, schoolClass.getCalssDesc());
return pstmt.executeUpdate();
}
/**
* 查询班级集合
* @param con
* @param schoolClass
* @return
* @throws Exception
*/
public ResultSet list(Connection con,SchoolClass schoolClass)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_school_class");
if(StringUtil.isNotEmpty(schoolClass.getClassName())){
sb.append(" and className like '%"+schoolClass.getClassName()+"%'");
}
PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
return pstmt.executeQuery();
}
/**
* 删除班级
* @param con
* @param id
* @return
* @throws Exception
*/
public int delete(Connection con,String id)throws Exception{
String sql="delete from t_school_class where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
return pstmt.executeUpdate();
}
/**
* 更新班级
* @param con
* @param schoolClass
/**
* 指定班级下是否存在学生
* @param con
* @param studentTypeId
* @return
* @throws Exception
*/
public boolean existStudentByclassId(Connection con,String classId)throws Exception{
String sql="select * from t_student where classId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, classId);
ResultSet rs=pstmt.executeQuery();
return rs.next();
}
}
/**
* 班级Dao类
*
*/
public class SchoolClassDao {
/**
* 班级添加
* @param con
* @param schoolClass
* @return
* @throws Exception
*/
public int add(Connection con,SchoolClass schoolClass)throws Exception{
String sql="insert into t_school_class values(null,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, schoolClass.getClassName());
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getSn());
pstmt.setString(3, student.getSex());
pstmt.setString(4, student.getDept());
pstmt.setInt(5, student.getClassId());
pstmt.setString(6, student.getAddress());
return pstmt.executeUpdate();
}
/**
* 学生信息查询
* @param con
* @param student
* @return
* @throws Exception
*/
public ResultSet list(Connection con,Student student)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_student b,t_school_class bt where b.classId=bt.id");
if(StringUtil.isNotEmpty(student.getName())){
sb.append(" and b.name like '%"+student.getName()+"%'");
}
if(StringUtil.isNotEmpty(student.getSn())){
sb.append(" and b.sn like '%"+student.getSn()+"%'");
}
if(student.getClassId()!=null && student.getClassId()!=-1){
sb.append(" and b.classId="+student.getClassId());
}
PreparedStatement pstmt=con.prepareStatement(sb.toString());
return pstmt.executeQuery();
}
/**
* 学生信息删除
* @param con
* @param id
* @return
* @throws Exception
*/
public int delete(Connection con,String id)throws Exception{
String sql="delete from t_student where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
return pstmt.executeUpdate();
}
/**
* 学生信息修改
* @param con
* @param student
* @return
/**
* 数据库工具类
*
*/
public class DbUtil {
private String jdbcName = "com.mysql.jdbc.Driver"; // 驱动名称
private String dbUrl = "jdbc:mysql://localhost:3306/project?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull"; // 数据库连接地址
private String dbUserName = "root"; // 用户名,填写你自己的数据库用户名
private String dbPassword = "123456"; // 密码,你自己的用户名密码,这个就是我的,所以我不修改了
/**
* 获取数据库连接
*
* @return
* @throws Exception
*/
public Connection getCon() throws Exception {
Class.forName(jdbcName);
Connection con = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
return con;
}
/**
* 关闭数据库连接
*
* @param con
* @throws Exception
*/
public void closeCon(Connection con) throws Exception {
if (con != null) {
con.close();
}
}
public static void main(String[] args) {
DbUtil dbUtil = new DbUtil();
try {
dbUtil.getCon();
System.out.println("数据库连接成功!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库连接失败");
}
}
this.className = className;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
/**
* 数据库工具类
*
*/
public class DbUtil {
private String jdbcName = "com.mysql.jdbc.Driver"; // 驱动名称
private String dbUrl = "jdbc:mysql://localhost:3306/project?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull"; // 数据库连接地址
private String dbUserName = "root"; // 用户名,填写你自己的数据库用户名
private String dbPassword = "123456"; // 密码,你自己的用户名密码,这个就是我的,所以我不修改了
/**
* 获取数据库连接
*
* @return
* @throws Exception
*/
public Connection getCon() throws Exception {
Class.forName(jdbcName);
Connection con = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
}
if(StringUtil.isEmpty(sn)){
JOptionPane.showMessageDialog(null, "学生信息作者不能为空!");
return;
}
if(StringUtil.isEmpty(dept)){
JOptionPane.showMessageDialog(null, "学生信息价格不能为空!");
return;
}
String sex="";
if(manJrb.isSelected()){
sex="男";
}else if(femaleJrb.isSelected()){
sex="女";
}
SchoolClass schoolClassTmp=(SchoolClass) schoolClassJcb.getSelectedItem();
int scId=schoolClassTmp.getId();
Student book=new Student(Integer.parseInt(id), sname, sn, sex, dept, scId, address);
Connection con=null;
try{
con=dbUtil.getCon();
int addNum=studentDao.update(con, book);
if(addNum==1){
JOptionPane.showMessageDialog(null, "学生信息修改成功!");
resetValue();
this.fillTable(new Student());
}else{
JOptionPane.showMessageDialog(null, "学生信息修改失败!");
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "学生信息修改失败!");
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 重置表单
*/
private void resetValue(){
this.femaleJrb.setSelected(true);
}
this.deptTxt.setText(studentTable.getValueAt(row, 4)+"");
this.addressTxt.setText((String)studentTable.getValueAt(row, 5));
String className=(String)this.studentTable.getValueAt(row, 6);
int n=this.schoolClassJcb.getItemCount();
for(int i=0;i<n;i++){
SchoolClass item=(SchoolClass)this.schoolClassJcb.getItemAt(i);
if(item.getClassName().equals(className)){
this.schoolClassJcb.setSelectedIndex(i);
}
}
}
/**
* 学生信息查询事件处理
* @param e
*/
private void bookSearchActionPerformed(ActionEvent evt) {
String bookName=this.s_nameTxt.getText();
String author=this.s_snTxt.getText();
SchoolClass bookType=(SchoolClass) this.s_schoolClassJcb.getSelectedItem();
int bookTypeId=bookType.getId();
Student book=new Student(bookName,author,bookTypeId);
this.fillTable(book);
}
/**
* 初始化下拉框
* @param type 下拉框类型
*/
private void fillBookType(String type){
Connection con=null;
SchoolClass schoolClass=null;
try{
con=dbUtil.getCon();
ResultSet rs=schoolClassDao.list(con, new SchoolClass());
if("search".equals(type)){
schoolClass=new SchoolClass();
schoolClass.setClassName("请选择...");
schoolClass.setId(-1);
/**
* 初始化表格
* @param schoolClass
*/
private void fillTable(SchoolClass schoolClass){
DefaultTableModel dtm=(DefaultTableModel) schoolClassTable.getModel();
dtm.setRowCount(0); // 设置成0行
Connection con=null;
try{
con=dbUtil.getCon();
ResultSet rs=schoolClassDao.list(con, schoolClass);
while(rs.next()){
Vector v=new Vector();
v.add(rs.getString("id"));
v.add(rs.getString("className"));
v.add(rs.getString("classDesc"));
dtm.addRow(v);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 重置表单
*/
private void resetValue(){
this.idTxt.setText("");
this.classNameTxt.setText("");
this.classDescTxt.setText("");
}
}
/**
* 班级Dao类
*
*/
public class SchoolClassDao {
/**
* 班级添加
* @param con
* @param schoolClass
* @return
* @throws Exception
*/
public int add(Connection con,SchoolClass schoolClass)throws Exception{
String sql="insert into t_school_class values(null,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, schoolClass.getClassName());
System.out.println(schoolClass.getClassName());
pstmt.setString(2, schoolClass.getCalssDesc());
return pstmt.executeUpdate();
}
/**
* 查询班级集合
* @param con
* @param schoolClass
* @return
* @throws Exception
*/
public ResultSet list(Connection con,SchoolClass schoolClass)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_school_class");
if(StringUtil.isNotEmpty(schoolClass.getClassName())){
sb.append(" and className like '%"+schoolClass.getClassName()+"%'");
}
PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
public class LogOnFrm extends JFrame {
private JPanel contentPane;
private JTextField userNameTxt;
private JPasswordField passwordTxt;
private DbUtil dbUtil=new DbUtil();
private UserDao userDao=new UserDao();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LogOnFrm frame = new LogOnFrm();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
.addGap(42))
// .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
// .addComponent(label)
// .addComponent(gradeTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(label_1)
// .addComponent(snTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
);
getContentPane().setLayout(groupLayout);
// 设置文本域边框
addressTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185), 1, false));
fillBookType();
}
/**
* 重置事件处理
* @param e
*/
private void resetValueActionPerformed(ActionEvent e) {
this.resetValue();
}
/**
* 学生添加事件处理
* @param e
*/
private void bookAddActionPerformed(ActionEvent evt) {
String bookName=this.studentTxt.getText();
String author=this.snTxt.getText();
String price=this.deptTxt.getText();
String bookDesc=this.addressTxt.getText();
if(StringUtil.isEmpty(bookName)){
JOptionPane.showMessageDialog(null, "学生姓名不能为空!");
return;
}
if(StringUtil.isEmpty(author)){
JOptionPane.showMessageDialog(null, "学生学号不能为空!");
return;
}
if(StringUtil.isEmpty(price)){
JOptionPane.showMessageDialog(null, "学生学院不能为空!");
return;
}
String sex="";
if(manJrb.isSelected()){
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(femaleJrb))
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(label_5)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(schoolClassJcb, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
.addContainerGap(86, Short.MAX_VALUE))))
);
gl_panel_1.setVerticalGroup(
gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addGap(21)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(lblNewLabel)
.addComponent(idTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_1)
.addComponent(nameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_3)
.addComponent(manJrb)
.addComponent(femaleJrb))
.addGap(18)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(label_4)
.addComponent(deptTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_2)
.addComponent(snTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_5)
.addComponent(schoolClassJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addComponent(label_6)
.addComponent(addressTxt, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED, 20, Short.MAX_VALUE)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(button_1)
.addComponent(button_2)))
);
panel_1.setLayout(gl_panel_1);
JLabel label = new JLabel("学生姓名");
s_nameTxt = new JTextField();
s_nameTxt.setColumns(10);
JLabel label_1 = new JLabel("学生编号");
s_snTxt = new JTextField();
return pstmt.executeUpdate();
}
}
/**
* 学生实体
*
*/
public class Student {
private int id; // 编号
private String name; // 姓名
private String sn; // 学号
private String sex; // 性别
private String dept; // 成绩
private Integer classId; // 班级Id
private String className; // 班级名称
private String address; // 家庭住址
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, String sn, String sex, String dept, Integer calssId, String address) {
super();
this.name = name;
this.sn = sn;
this.sex = sex;
this.dept = dept;
this.classId = calssId;
this.address = address;
}