用JAVA 图形界面GUI,MySQL创建学生信息管理系统,详细步骤

这篇文章是一个Java新手写的一个相对来说比较简单的程序,只要掌握基本的Java中图形界面设计(GUI)和Java(MYSQL)数据库(基本上看书和一些教学视频就能懂),让你清晰明了的看懂这个程序,由于是一个新手所写,有的地方注释不明了,请自行体会和百度。

应用到的软件:MYSQL sever ,Navicate for MYSQL,java ,eclipe
程序中所用到的控件:java书中的图形界面设计章节
程序中用到的SQL:Java书中的Java数据库程序设计章节
你也可以运行下面的代码;
1.首先要需要建一个数据库,再建一个名为data1的表,建表代码:

create table student(
sno varchar(20) primary key,
sname varchar(20),
sgender varchar(20),
sage varchar(20)),
sclass varchar(20));


2打开eclipse新建一个名为w的项目,其中建一个名为geng的包,在其中建一个名为tt的类在类中添加如下代码

package geng;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import java.awt.event.*;

public class tt extends JFrame{
GridBagLayout gb1=new GridBagLayout();//网格包布局管理器
GridBagConstraints gbc=new GridBagConstraints();
JLabel label1;//声明控件
JButton button1,button2,button3,button4;
DefaultTableModel model;
JRadioButton rb1,rb2;
ButtonGroup group1;
JTable table;
JLabel name1;
JTextField textname1,textname2,textname3,textname4;
public tt()//创建窗体及布局
{
	super("学生信息管理系统");
	setSize(500,500);
	Container c1=getContentPane();//获取窗格并更改控件
	label1=new JLabel("姓名:");
	button1=new JButton("增加");
	String[] colnames = { "学号", "姓名", "性别", "年龄", "班级", };   //在窗体中创建有colnames列5行的表格      
	model = new DefaultTableModel(colnames, 5);      //在窗体中创建有colnames列5行的表格 
	table = new JTable(model);        //在窗体中创建有colnames列5行的表格 
	c1.setLayout(gb1);
	
	rb1=new JRadioButton("男",true);//创建
	rb2=new JRadioButton("女");
	group1=new ButtonGroup();
	group1.add(rb1);
	group1.add(rb2);
	
	JLabel label2=new JLabel("学号:");
	JLabel label3=new JLabel("年龄:");
	JLabel label4=new JLabel("班级:");
	
	
	JScrollPane jp1=new JScrollPane(table);//滚动面板
	
	gbc.gridx=1;//第一列   将面板通过布局管理器放在窗体的一行一列
	gbc.gridy=1;//第一行
	gbc.gridheight=1;
	gbc.gridwidth=4;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=1;//Y方向上有弹性
	gbc.fill=GridBagConstraints.BOTH;//填充满
    gbc.anchor=GridBagConstraints.CENTER;//居于中间位置上
	gb1.setConstraints(jp1,gbc);
	c1.add(jp1);
	
	gbc.gridx=1;//第一列  学号
	gbc.gridy=2;//第2行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(label2,gbc);
	c1.add(label2);
	
    textname1=new JTextField();
	
	gbc.gridx=2;//第2列  文本框
	gbc.gridy=2;//第2行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(textname1,gbc);
	c1.add(textname1);
	
	gbc.gridx=3;//第3列姓名
	gbc.gridy=2;//第2行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(label1,gbc);
	c1.add(label1);
	
    textname2=new JTextField();
	
	gbc.gridx=4;//4列文本框
	gbc.gridy=2;//2行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(textname2,gbc);
	c1.add(textname2);
	
	gbc.gridx=1;//第1列年龄
	gbc.gridy=3;//第3行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(label3,gbc);
	c1.add(label3);
	
    textname3=new JTextField();
	
	gbc.gridx=2;//2l  文本框
	gbc.gridy=3;//3h
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(textname3,gbc);
	c1.add(textname3);
	
	gbc.gridx=3;//第3列年龄
	gbc.gridy=3;//第3行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(label4,gbc);
	c1.add(label4);
	
    textname4=new JTextField();
	
	gbc.gridx=4;//2l    文本框
	gbc.gridy=3;//3h
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(textname4,gbc);
	c1.add(textname4);
	
	
	gbc.gridx=1;//第1列  男
	gbc.gridy=4;//第4行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(rb1,gbc);
	c1.add(rb1);
	
	
	gbc.gridx=2;//第2列   女
	gbc.gridy=4;//第4行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(rb2,gbc);
	c1.add(rb2);
	
	
	gbc.gridx=1;//第1列 “增加”按钮
	gbc.gridy=5;//第5行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(button1,gbc);
	c1.add(button1);
	button1.addActionListener(new MyActionListener());
	
	button2=new JButton("删除");
	gbc.gridx=2;//第2列
	gbc.gridy=5;//第5行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(button2,gbc);
	c1.add(button2);
	button2.addActionListener(new MyActionListener());
	
	
	button3=new JButton("查询");
	gbc.gridx=3;//第3列
	gbc.gridy=5;//第5行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(button3,gbc);
	c1.add(button3);
	button3.addActionListener(new MyActionListener());

	
	button4=new JButton("修改");
	gbc.gridx=4;//第4列
	gbc.gridy=5;//第5行
	gbc.gridheight=1;
	gbc.gridwidth=1;
	gbc.weightx=1;//权重   弹性
	gbc.weighty=0;
	gb1.setConstraints(button4,gbc);
	c1.add(button4);
	button4.addActionListener(new MyActionListener());
	
	
	
	
	
	
	setVisible(true);
}




 public static void main(String args[])
 {
	 new tt();
	 
 }
 private class MyActionListener implements ActionListener{
		
 	public void actionPerformed(ActionEvent e){
 		
 	if(e.getSource()==button1)	//插入
 		{
 		String sno1=textname1.getText().trim();
 		String sname1=textname2.getText().trim();
 		String sgender1="";
 		if(rb1.isSelected())
 			sgender1="男";
 		else if(rb2.isSelected())
 			sgender1="女";
 		String sage1=textname3.getText().trim();
 		String sclass1=textname4.getText().trim();
 		System.out.println(sno1+" "+sname1+" "+sgender1+" "+sage1+" "+sclass1);
 		 String driver = "org.gjt.mm.mysql.Driver";
 		    //定义MySQL数据库的联接地址
 		    String url = "jdbc:mysql://localhost:3306/data1?characterEncoding=UTF8";
 		    //声明联接类
 		    Connection conn = null;
 		    try{
 		      //使用JDBC技术创建数据库联接
 		      Class.forName(driver);
 		      //使用DriverManager类的getConnection()方法建立联接,第一个字符参数定义用户名,
 		      //第二个字符参数定义密码
 		      conn = DriverManager.getConnection(url, "root", "root");
 		      if(conn != null){
 		        System.out.println("已经连接了sias1数据库.");
 		      }
 		      Statement stmt=conn.createStatement();
 		      String sql1="insert into student values('"  +sno1+
 		               "','"+sname1+ "','"+sgender1+ "','"+
 		                sage1+"','"+sclass1+ "')";
 		      System.out.println(sql1);
 		       int a= stmt.executeUpdate(sql1);
 		      if(a==1)  System.out.println("insert sucess!");
 		    }catch(Exception ex){
 		      ex.printStackTrace();
 		    }
 		    try{
 		      //关闭数据库联接类
 		      conn.close();
 		    }catch(Exception ex){
 		      ex.printStackTrace();
 		    }
 		
 		    
 		}//if
 	else if(e.getSource()==button2)//删除
	{
		String sno=textname1.getText().trim();//得到要删除的姓名
		
		String driver = "org.gjt.mm.mysql.Driver";
	    //定义MySQL数据库的联接地址
	    String url = "jdbc:mysql://localhost:3306/data1?characterEncoding=UTF8";
	    //声明联接类
	    Connection conn = null;
	    try{
	      //使用JDBC技术创建数据库联接
	      Class.forName(driver);
	      //使用DriverManager类的getConnection()方法建立联接,第一个字符参数定义用户名,
	      //第二个字符参数定义密码
	      conn = DriverManager.getConnection(url, "root", "root");
	      if(conn != null){
	        System.out.println("已经连接了sias1数据库.");
	      }
	      Statement stmt=conn.createStatement();
	      String sql1="delete from student where sno='"+sno+"'";
	      System.out.println(sql1);
	       int a= stmt.executeUpdate(sql1);
	      if(a==1)  System.out.println("delete sucess!");
	    }catch(Exception ex){
	      ex.printStackTrace();
	    }
	    try{
	      //关闭数据库联接类
	      conn.close();
	    }catch(Exception ex){
	      ex.printStackTrace();
	    }
		
	}//else  delete
 	else if(e.getSource()==button3)	//查询
	{
	  String sno=textname1.getText().trim();
		
	  String driver = "org.gjt.mm.mysql.Driver";
	    //定义MySQL数据库的联接地址
	    String url = "jdbc:mysql://localhost:3306/data1?characterEncoding=UTF8";
	    //声明联接类
	    Connection conn = null;
	    try{
	      //使用JDBC技术创建数据库联接
	      Class.forName(driver);
	      //使用DriverManager类的getConnection()方法建立联接,第一个字符参数定义用户名,
	      //第二个字符参数定义密码
	      conn = DriverManager.getConnection(url, "root", "root");
	      if(conn != null){
	        System.out.println("已经连接了sias1数据库.");
	      }
	      Statement stmt=conn.createStatement();
	      String sql1="select *  from student where sno='"+sno+"'";
	      System.out.println(sql1);
	      // int a= stmt.executeUpdate(sql1);
	             ResultSet rs=   stmt.executeQuery(sql1);
	     if(rs.next())
	     {  String sno2=rs.getString(1);
	        String sname2=rs.getString(2);
	    	 String sgender2=rs.getString(3);
	    	 String sage2=rs.getString(4);
	    	 String sclass2=rs.getString(5);
	    	System.out.println(sno2+" "+sname2+" "+sgender2+" "+sage2+" "+sclass2);
	    	table.setValueAt(sno2, 0, 0);			将查询得到的数据放在窗体中的表中
	    	table.setValueAt(sname2, 0, 1);			
	    	table.setValueAt(sgender2, 0, 2);			
	    	table.setValueAt(sage2, 0, 3);			
	    	table.setValueAt(sclass2, 0, 4);			将查询得到的数据放在窗体中的表中
	    	

	    	
       
	     }
	             
	             
	    }catch(Exception ex){
	      ex.printStackTrace();
	    }
	    try{
	      //关闭数据库联接类
	      conn.close();
	    }catch(Exception ex){
	      ex.printStackTrace();
	    }
	  
	  
	}//查询
 	//修改:先输入一个人的名字,查询出他的信息,并显示在界面上。更改界面上部分信息后(不要更改姓名,更新到数据库,	
	else if(e.getSource()==button4)
	{
		String sno1=textname1.getText().trim();
		String sname1=textname2.getText().trim();
		String sage1=textname3.getText().trim();
		String sclass1=textname4.getText().trim();
		
		String sgender1="";
if(rb1.isSelected())
	sgender1="男";
else if(rb2.isSelected())
	sgender1="女";


System.out.println(sno1+" "+sname1+" "+sgender1+" "+sage1+" "+sclass1);
 String driver = "org.gjt.mm.mysql.Driver";
    //定义MySQL数据库的联接地址
    String url = "jdbc:mysql://localhost:3306/data1?characterEncoding=UTF8";
    //声明联接类
    Connection conn = null;
    try{
      //使用JDBC技术创建数据库联接
      Class.forName(driver);
      //使用DriverManager类的getConnection()方法建立联接,第一个字符参数定义用户名,
      //第二个字符参数定义密码
      conn = DriverManager.getConnection(url, "root", "root");
      if(conn != null){
        System.out.println("已经连接了sias1数据库.");
      }
      Statement stmt=conn.createStatement();
//      String sql1="insert into student values('"  +sno1+
//               "','"+sname1+ "','"+sgender1+ "','"+
//                sage1+"','"+sclass1+ "')";
      
      String sql1="update student set sname='"+sname1+"',sgender='"+sgender1+"',sage='"+sage1
    		     +"',sclass='"+sclass1+"' where sno='"+sno1+"'";
      System.out.println(sql1);
       int a= stmt.executeUpdate(sql1);
      if(a==1)  System.out.println("update sucess!");
    }catch(Exception ex){
      ex.printStackTrace();
    }
    try{
      //关闭数据库联接类
      conn.close();
    }catch(Exception ex){
      ex.printStackTrace();
    }

    
		
		
		
		
		
	}
		
		
	}//监听器的函数
	
	
}//监听器类

}//类

 

 

3.再在w项目里新建一个文件夹下载一个https://pan.baidu.com/s/16RzJsN5ZsYSeOuFU_RIqrA将其中的mysql-connector-java-5.1.41-bin.jar复制到项目中新建的文件夹里

右击文件选择“构建路径”中的“配置构建路径”然后就可以运行程序了,因为间的表中没有数据,可以先添加数据,然后在执行后面的查询等命令运行界面如下

提示:因为水平问题界面里的表只能显示查询的信息,如果验证其他命令,请在数据库中“刷新”后看表的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值