这篇文章是一个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复制到项目中新建的文件夹里
右击文件选择“构建路径”中的“配置构建路径”然后就可以运行程序了,因为间的表中没有数据,可以先添加数据,然后在执行后面的查询等命令运行界面如下
提示:因为水平问题界面里的表只能显示查询的信息,如果验证其他命令,请在数据库中“刷新”后看表的数据