当前位置: 移动技术网 > IT编程>开发语言>Java > Java+Mysql学生管理系统源码

Java+Mysql学生管理系统源码

2019年07月22日  | 移动技术网IT编程  | 我要评论

最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事。闲来无事,也就自己写了一个,不过功能实现的不是很多。 

开发语言:java; 开发环境:mysql, java; 开发工具:eclipse
开发此案例,首先得在电脑上有java开发环境和mysql, java开发环境与mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式: 

此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加、删除、修改。
开发步骤:
 1.在数据库中建表: 

create table stu(
stuid string,
stuname string,
stusex string,
stuage int,
stujg string,
studept sring
);

2.java 代码主要由四个类组成:
test3包含主函数;stumodel用来刷新、呈现数据库;stuadddiag用来实现增添读者功能;stuupdiag是修改学生信息。具体代码如下:
 test3.java:

import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.connection;
import java.sql.driver;
import java.sql.drivermanager;
import java.sql.preparedstatement;
import java.sql.resultset;
import java.sql.statement;

public class test3 extends jframe implements actionlistener {
 //定义一些控件
 jpanel jp1,jp2;
 jlabel jl1,jl2;
 jbutton jb1,jb2,jb3,jb4;
 jtable jt;
 jscrollpane jsp;
 jtextfield jtf;
 stumodel sm; 
 //定义连接数据库的变量
 statement stat = null;
 preparedstatement ps;
 connection ct = null;
 resultset rs = null;
 
 public static void main(string[] args){
 test3 test3 = new test3();
 }
 //构造函数
 public test3(){
 jp1 = new jpanel();
 jtf = new jtextfield(10);
 jb1 = new jbutton("查询");
 jb1.addactionlistener(this);
 jl1 = new jlabel("请输入名字:");
 
 jp1.add(jl1);
 jp1.add(jtf);
 jp1.add(jb1);
 
 jb2 = new jbutton("添加");
 jb2.addactionlistener(this);
 jb3 = new jbutton("修改");
 jb3.addactionlistener(this);
 jb4 = new jbutton("删除");
 jb4.addactionlistener(this);
 
 jp2 = new jpanel();
 jp2.add(jb2);
 jp2.add(jb3);
 jp2.add(jb4);
 
 //创建模型对象
 sm = new stumodel();
 
 
 //初始化
 jt = new jtable(sm);
 
 jsp = new jscrollpane(jt);
 
 //将jsp放入到jframe中
 this.add(jsp);
 this.add(jp1,"north");
 this.add(jp2,"south");
 this.setsize(600, 400);
 //this.setlocation(300, 200);
 this.setdefaultcloseoperation(exit_on_close);
 this.setvisible(true);
 
 }
 public void actionperformed(actionevent arg0) {
 //判断是哪个按钮被点击
 if(arg0.getsource() == jb1){
 system.out.println("用户希望被查询...");
 //因为把对表的数据封装到stumodel中,可以比较简单的完成查询
 string name = this.jtf.gettext().trim();
 //写一个sql语句
 string sql = "select * from stu where stuname = '"+name+"' ";
 //构建一个数据模型类,并更新
 sm = new stumodel(sql);
 //更新jtable
 jt.setmodel(sm);
 
 }
 
 //一、弹出添加界面
 else if(arg0.getsource() == jb2){
 system.out.println("添加...");
 stuadddiag sa = new stuadddiag(this,"添加学生",true);
 
 //重新再获得新的数据模型,
 sm = new stumodel();
 jt.setmodel(sm);
 }else if(arg0.getsource() == jb4){
 //二、删除记录
 //1.得到学生的id
 int rownum = this.jt.getselectedrow();//getselectedrow会返回给用户点中的行
 //如果该用户一行都没有选,就返回-1
 if(rownum == -1){
 //提示
 joptionpane.showmessagedialog(this, "请选中一行");
 return ;
 }
 //得到学术id
 string stuid = (string)sm.getvalueat(rownum, 0);
 system.out.println("id: "+stuid);
 
 //连接数据库,完成删除任务
 try{
 //1.加载驱动
 class.forname("com.mysql.jdbc.driver"); 
 //2.连接数据库
 string url = "jdbc:mysql://localhost:3306/spdb1";
 string user = "root";
 string passwd = "lfdy";
 
 ct = drivermanager.getconnection(url, user, passwd);
 system.out.println("连接成功");
 ps = ct.preparestatement("delete from stu where stuid = ?");
 ps.setstring(1,stuid);
 ps.executeupdate();
  
 }catch(exception e){
 e.printstacktrace();
 }finally{
 try{
 if(rs!= null){
 rs.close();
 rs = null;
  
 }
 if(ps!= null){
 ps.close();
 ps = null;
 }
 if(ct != null){
 ct.close();
 ct = null;
 }
 } catch(exception e){
 e.printstacktrace();
 }
 }
 sm = new stumodel();
 //更新jtable
 jt.setmodel(sm); 
 }else if(arg0.getsource() == jb3){
 system.out.println("11111");
 //三、用户希望修改
 int rownum = this.jt.getselectedrow();
 if(rownum == -1){
 //提示
 joptionpane.showmessagedialog(this, "请选择一行");
 return ;
 }
 //显示对话框
 system.out.println( "12435");
 stuupdiag su = new stuupdiag(this, "修改学术", true, sm, rownum);
 sm = new stumodel();
 jt.setmodel(sm);
 } 
 }
}

stumodel.java: 

/*
 * 这是我的一个stu表的模型
 * 可以把对学生表的操作全都封装到这个类
 */
package com.test2;

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.statement;
import java.util.vector;
import javax.swing.table.*;

public class stumodel extends abstracttablemodel{

 //rowdata存放行数据,columnnames存放列名
 vector rowdata,columnnames;
 
 //定义连接数据库的变量
 statement stat = null;
 connection ct = null;
 resultset rs = null;
 
 //初始化
 public void init(string sql){
 if(sql.equals("")){
 sql = "select * from stu";
 }
 //中间
 //设置列名
 columnnames = new vector();
 columnnames.add("学号");
 columnnames.add("名字");
 columnnames.add("性别");
 columnnames.add("年龄");
 columnnames.add("籍贯");
 columnnames.add("门派");
 
 //rowdata存放多行
 rowdata = new vector();
 
 try{
 //1.加载驱动
 class.forname("com.mysql.jdbc.driver");
 system.out.println("加载成功");
 //2.连接数据库
 //定义几个常量
 string url = "jdbc:mysql://localhost:3306/spdb1";
 string user = "root";
 string passwd = "lfdy";
  
 ct = drivermanager.getconnection(url,user,passwd);
 stat = ct.createstatement();//创建stat对象
 rs = stat.executequery(sql);//查询结果
  
 while(rs.next()){
 vector hang = new vector();
 hang.add(rs.getstring(1));
 hang.add(rs.getstring(2));
 hang.add(rs.getstring(3));
 hang.add(rs.getint(4));
 hang.add(rs.getstring(5));
 hang.add(rs.getstring(6));
 //加入到rowdata中
 rowdata.add(hang);
  
 }
  
 }catch(exception e){
 e.printstacktrace();
 }finally{
 try{
 if(rs!=null){
 rs.close();
 rs = null;
 }
 if(stat != null){
 stat.close();
 stat = null;
 }
 if(ct != null){
 ct.close();
 ct = null;
 }
 }catch(exception e){
 e.printstacktrace();
 }
 }
 }
 
 //增加学生函数
 public void addstu(string sql){
 //根据用户输入的sql语句,完成添加任务
 
 
 
 }
 
 //第二个构造函数,通过传递的sql语句来获得数据模型
 public stumodel(string sql){
 this.init(sql);
 }
 
 //构造函数,用于初始化我的数据模型(表)
 public stumodel(){
 this.init("");
 }
 
 //得到共有多少行
 public int getrowcount() {
 // todo auto-generated method stub
 return this.rowdata.size();
 }

 //得到共有多少列
 public int getcolumncount() {
 // todo auto-generated method stub
 return this.columnnames.size();
 }

 //得到某行某列的数据
 public object getvalueat(int row, int column) {
 // todo auto-generated method stub
 return ((vector)(this.rowdata.get(row))).get(column);
 }
 
 //得到属性名字
 public string getcolumnname(int column) {
 // todo auto-generated method stub
 return (string)this.columnnames.get(column);
 }
}

stuadddiag.java: 

package com.test2;

import javax.swing.jdialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.sql.statement;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.*;

public class stuadddiag extends jdialog implements actionlistener {
 //定义我需要的swing组件
 jlabel jl1,jl2,jl3,jl4,jl5,jl6;
 jtextfield jf1,jf2,jf3,jf4,jf5,jf6;
 jpanel jp1,jp2,jp3;
 jbutton jb1,jb2;
 //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
 public stuadddiag(frame owner,string title, boolean modal){
 //调用父类方法
 super(owner,title,modal);
 
 jl1 = new jlabel("学号");
 jl2 = new jlabel("名字");
 jl3 = new jlabel("性别"); 
 jl4 = new jlabel("年龄");
 jl5 = new jlabel("籍贯");
 jl6 = new jlabel("门派");
 
 jf1 = new jtextfield(10);
 jf2 = new jtextfield(10);
 jf3 = new jtextfield(10);
 jf4 = new jtextfield(10);
 jf5 = new jtextfield(10);
 jf6 = new jtextfield(10);
 
 jb1 = new jbutton("添加");
 jb1.addactionlistener(this);
 jb2 = new jbutton("取消");
 
 jp1 = new jpanel();
 jp2 = new jpanel();
 jp3 = new jpanel();
 
 //设置布局
 jp1.setlayout(new gridlayout(6,1));
 jp2.setlayout(new gridlayout(6,1));
 
 jp3.add(jb1);
 jp3.add(jb2);
 
 jp1.add(jl1);
 jp1.add(jl2);
 jp1.add(jl3);
 jp1.add(jl4);
 jp1.add(jl5);
 jp1.add(jl6);
 
 jp2.add(jf1);
 jp2.add(jf2);
 jp2.add(jf3);
 jp2.add(jf4);
 jp2.add(jf5);
 jp2.add(jf6);
 
 this.add(jp1, borderlayout.west);
 this.add(jp2, borderlayout.center);
 this.add(jp3, borderlayout.south);
 
 this.setsize(300,200);
 this.setvisible(true);
 }
 @override
 public void actionperformed(actionevent e) {
 // todo auto-generated method stub
 if(e.getsource() == jb1){
 connection ct = null;
 preparedstatement pstmt = null;
 resultset rs = null;
 
 try{
 //1.加载驱动
 class.forname("com.mysql.jdbc.driver");
 system.out.println("加载成功");
 //2.连接数据库
 //定义几个常量
 string url = "jdbc:mysql://localhost:3306/spdb1";
 string user = "root";
 string passwd = "lfdy";
 ct = drivermanager.getconnection(url,user,passwd);
 
 //与编译语句对象
 
 string strsql = "insert into stu values(?,?,?,?,?,?)";
 pstmt = ct.preparestatement(strsql);
 
 //给对象赋值
 pstmt.setstring(1,jf1.gettext());
 pstmt.setstring(2,jf2.gettext());
 pstmt.setstring(3,jf3.gettext());
 pstmt.setstring(4,jf4.gettext());
 pstmt.setstring(5,jf5.gettext());
 pstmt.setstring(6,jf6.gettext());
 
 pstmt.executeupdate();
 
 this.dispose();//关闭学生对话框
 
 }catch(exception arg1){
 arg1.printstacktrace();
 }finally{
 try{
 if(rs!=null){
 rs.close();
 rs = null;
  }
 if(pstmt != null){
 pstmt.close();
 pstmt = null;
  }
 if(ct != null){
 ct.close();
 ct = null;
  } 
 }catch(exception arg2){
  arg2.printstacktrace();
 }
 }
 
 }
 
 }
 
 
}

stuupdiag.java: 

package com.test2;
/*
 * 修改学生
 */
import javax.swing.jdialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.sql.statement;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.*;

public class stuupdiag extends jdialog implements actionlistener {
 //定义我需要的swing组件
 jlabel jl1,jl2,jl3,jl4,jl5,jl6;
 jtextfield jf1,jf2,jf3,jf4,jf5,jf6;
 jpanel jp1,jp2,jp3;
 jbutton jb1,jb2;
 //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
 public stuupdiag(frame owner,string title, boolean modal,stumodel sm,int rownum){
 //调用父类方法
 super(owner,title,modal);
 
 jl1 = new jlabel("学号");
 
 jl2 = new jlabel("名字");
 
 jl3 = new jlabel("性别"); 
 jl4 = new jlabel("年龄");
 jl5 = new jlabel("籍贯");
 
 
 
 jl6 = new jlabel("门派");
 
 
 jf1 = new jtextfield(10);jf1.settext((sm.getvalueat(rownum, 0)).tostring());
 jf2 = new jtextfield(10);jf2.settext((string)sm.getvalueat(rownum, 1));
 jf3 = new jtextfield(10);jf3.settext(sm.getvalueat(rownum, 2).tostring());
 jf4 = new jtextfield(10);jf4.settext((sm.getvalueat(rownum, 3)).tostring()); 
 jf5 = new jtextfield(10);jf5.settext((string)sm.getvalueat(rownum, 4));
 jf6 = new jtextfield(10);jf6.settext((string)sm.getvalueat(rownum, 5));
 
 jb1 = new jbutton("修改");
 jb1.addactionlistener(this);
 jb2 = new jbutton("取消");
 
 jp1 = new jpanel();
 jp2 = new jpanel();
 jp3 = new jpanel();
 
 //设置布局
 jp1.setlayout(new gridlayout(6,1));
 jp2.setlayout(new gridlayout(6,1));
 
 jp3.add(jb1);
 jp3.add(jb2);
 
 jp1.add(jl1);
 jp1.add(jl2);
 jp1.add(jl3);
 jp1.add(jl4);
 jp1.add(jl5);
 jp1.add(jl6);
 
 jp2.add(jf1);
 jp2.add(jf2);
 jp2.add(jf3);
 jp2.add(jf4);
 jp2.add(jf5);
 jp2.add(jf6);
 
 this.add(jp1, borderlayout.west);
 this.add(jp2, borderlayout.center);
 this.add(jp3, borderlayout.south);
 
 this.setsize(300,200);
 this.setvisible(true);
 }
 @override
 public void actionperformed(actionevent e) {
 // todo auto-generated method stub
 if(e.getsource() == jb1){
 connection ct = null;
 preparedstatement pstmt = null;
 resultset rs = null;
 
 try{
 //1.加载驱动
 class.forname("com.mysql.jdbc.driver");
 system.out.println("加载成功");
 //2.连接数据库
 //定义几个常量
 string url = "jdbc:mysql://localhost:3306/spdb1";
 string user = "root";
 string passwd = "lfdy";
 ct = drivermanager.getconnection(url,user,passwd);
 
 //与编译语句对象
 
 string strsql = "insert into stu values(?,?,?,?,?,?)";
 pstmt = ct.preparestatement(strsql);
 
 //给对象赋值
 pstmt.setstring(1,jf1.gettext());
 pstmt.setstring(2,jf2.gettext());
 pstmt.setstring(3,jf3.gettext());
 pstmt.setstring(4,jf4.gettext());
 pstmt.setstring(5,jf5.gettext());
 pstmt.setstring(6,jf6.gettext());
 
 pstmt.executeupdate();
 
 this.dispose();//关闭学生对话框
 
 }catch(exception arg1){
 arg1.printstacktrace();
 }finally{
 try{
 if(rs!=null){
 rs.close();
 rs = null;
  }
 if(pstmt != null){
 pstmt.close();
 pstmt = null;
  }
 if(ct != null){
 ct.close();
 ct = null;
  } 
 }catch(exception arg2){
  arg2.printstacktrace();
 }
 }
 
 }
 
 }
 
 
}

开发与测试结果:

1.系统主界面:

2.按名字查询:

3.选中一行,删除:

4.选中一行修改:

5.点击添加按钮,进行添加:

后续此系统将继续完善,有疑问和技术交流的,可联系本人:dingyelf@aliyun.com

关于管理系统的更多内容请点击《管理系统专题》进行学习

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网