课程实验报告
课程名称
《Java程序设计》
班级
实验日期
姓名
学号
实验成绩
实验名称
实验6:JDBC的应用
实
验
目
的及
要
求
掌握Java JDBC的使用方法。
实
验
环
境
Win 7 或 Win 10
Jdk1.7或以上版本
Eclipse 4.4或以上版本
MySQL5.7或以上版本
实
验
内
容
利用String、GUI、JDBC等类实现一个信息管理系统(如学籍管理系统、工资管理系统等),编程实现如下功能:
(1)在MySQL数据库中建立一个数据库、表,表中至少设置4个字段;
(2)搭建GUI图形化操作界面;
(3)注册相关事件,在GUI界面上实现数据的增、删、改、查功能;
(4)系统要有一定的数据合法性的检查功能;
(5)体现出是自己的工作量,界面至少显示作者的班级、姓名、学号。
算
法
描
述
及
实
验
步
骤
新建shiyan6包,新建shiyan6类,新建main函数
新建JFrame类GUI,直接拖拽出GUI界面。在每一个需要添加操作的按钮上注册事件,然后分别实现接口事件
建立select类实现查询全部的功能,首先注册驱动,然后建立与数据库某个表的连接,建立SQL语句查询数据库中的所有信息,将查询结果追加储存到StringBuffer类的对象中
建立add类实现添加功能,首先注册驱动,然后建立与数据库某个表的连接,建立预处理语句并利用通配符把从键盘获取的字符串添加到指定SQL语句中,然后对数据库进行添加操作
建立modify类实现修改功能,首先注册驱动,然后建立与数据库某个表的连接,建立预处理语句并利用通配符把从键盘获取的字符串添加到指定SQL语句中,然后对数据库进行修改操作
同理建立delete类实现删除操作,首先注册驱动,然后建立与数据库某个表的连接,建立SQL语句利用通配符对指定学号的信息进行删除
调
试
过
程
及
实
验
结
果
运行界面后:
单击“查询全部”按钮:
添加一条信息:
修改信息:
删除信息:
总
结
本次实验在GUI界面的基础之上对与数据库的连接和数据库的添加、删除、修改等操作进行了考察。数据库的连接有固定的语句较容易理解和掌握,但数据库的修改、添加等操作需要程序员灵活掌握编写。通过本次实验,对于GUI界面的开发和功能的实现我有了进一步的理解,相比上一个计算器的实验这次我感觉操作熟练,很有成就感。还有,以后可以对本实验添加更多的友好性交互提示信息。
附
录
Shiyan6.java
package shiyan6;
public class shiyan6 {
public static void main(String[] args) {
GUI gui=new GUI();
}
}
GUI.java
package shiyan6;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.CardLayout;
import java.awt.Font;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class GUI extends JFrame {
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JTextField textField_5;
private JTextField textField_6;
private JTextField textField_7;
private JTextField textField_8;
private JTextField textField_9;
private JTextField textField_10;
private JTextField textField_11;
private JTextField textField_12;
public GUI() {
getContentPane().setLayout(null);
Font font=new Font("宋体",Font.PLAIN,20);
JTextArea textArea = new JTextArea();
textArea.setBounds(15, 15, 446, 160);
getContentPane().add(textArea);
JButton btnNewButton = new JButton("查询全部");
btnNewButton.setFont(font);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
textArea.setText("");
textArea.setText(""+select.selcetAll());
JOptionPane.showMessageDialog(textArea,"已经显示全部信息");
}
});
btnNewButton.setBounds(501, 95, 123, 29);
getContentPane().add(btnNewButton);
textField = new JTextField();
textField.setBounds(96, 200, 96, 27);
getContentPane().add(textField);
textField.setColumns(10);
JLabel lblNewLabel = new JLabel("学号:");
lblNewLabel.setFont(font);
lblNewLabel.setBounds(36, 203, 71, 21);
getContentPane().add(lblNewLabel);
JLabel label = new JLabel("姓名:");
label.setFont(font);
label.setBounds(240, 203, 63, 21);
getContentPane().add(label);
textField_1 = new JTextField();
textField_1.setColumns(10);
textField_1.setBounds(308, 203, 96, 27);
getContentPane().add(textField_1);
textField_2 = new JTextField();
textField_2.setColumns(10);
textField_2.setBounds(501, 200, 96, 27);
getContentPane().add(textField_2);
textField_3 = new JTextField();
textField_3.setColumns(10);
textField_3.setBounds(96, 240, 96, 27);
getContentPane().add(textField_3);
textField_4 = new JTextField();
textField_4.setColumns(10);
textField_4.setBounds(308, 245, 96, 27);
getContentPane().add(textField_4);
textField_5 = new JTextField();
textField_5.setColumns(10);
textField_5.setBounds(501, 242, 96, 27);
getContentPane().add(textField_5);
JLabel label_1 = new JLabel("性别:");
label_1.setFont(font);
label_1.setBounds(437, 203, 63, 21);
getContentPane().add(label_1);
JLabel label_2 = new JLabel("年龄:");
label_2.setFont(font);
label_2.setBounds(35, 243, 61, 21);
getContentPane().add(label_2);
JLabel label_3 = new JLabel("专业:");
label_3.setFont(font);
label_3.setBounds(240, 243, 63, 21);
getContentPane().add(label_3);
JLabel label_4 = new JLabel("班主任:");
label_4.setFont(font);
label_4.setBounds(419, 243, 81, 21);
getContentPane().add(label_4);
JButton btnNewButton_1 = new JButton("添加");
btnNewButton_1.setFont(font);
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String number=new String(textField.getText());
String name=new String(textField_1.getText());
String sex=new String(textField_2.getText());
String age=new String(textField_3.getText());
String zhuanye=new String(textField_4.getText());
String teacher=new String(textField_5.getText());
JOptionPane.showMessageDialog(getContentPane(),add.addRecord(number, name, sex, age, zhuanye, teacher));
textField.setText("");
textField_1.setText("");
textField_2.setText("");
textField_3.setText("");
textField_4.setText("");
textField_5.setText("");
}
});
btnNewButton_1.setBounds(256, 287, 123, 29);
getContentPane().add(btnNewButton_1);
textField_6 = new JTextField();
textField_6.setBounds(96, 333, 96, 27);
getContentPane().add(textField_6);
textField_6.setColumns(10);
textField_7 = new JTextField();
textField_7.setColumns(10);
textField_7.setBounds(308, 333, 96, 27);
getContentPane().add(textField_7);
textField_8 = new JTextField();
textField_8.setColumns(10);
textField_8.setBounds(501, 333, 96, 27);
getContentPane().add(textField_8);
textField_9 = new JTextField();
textField_9.setColumns(10);
textField_9.setBounds(96, 375, 96, 27);
getContentPane().add(textField_9);
textField_10 = new JTextField();
textField_10.setColumns(10);
textField_10.setBounds(308, 375, 96, 27);
getContentPane().add(textField_10);
textField_11 = new JTextField();
textField_11.setColumns(10);
textField_11.setBounds(501, 375, 96, 27);
getContentPane().add(textField_11);
JLabel label_5 = new JLabel("学号:");
label_5.setFont(font);
label_5.setBounds(36, 336, 60, 21);
getContentPane().add(label_5);
JLabel label_6 = new JLabel("年龄:");
label_6.setFont(font);
label_6.setBounds(36, 378, 60, 21);
getContentPane().add(label_6);
JLabel label_7 = new JLabel("姓名:");
label_7.setFont(font);
label_7.setBounds(227, 336, 67, 21);
getContentPane().add(label_7);
JLabel label_8 = new JLabel("性别:");
label_8.setFont(font);
label_8.setBounds(432, 336, 68, 21);
getContentPane().add(label_8);
JLabel label_9 = new JLabel("专业:");
label_9.setFont(font);
label_9.setBounds(227, 378, 76, 21);
getContentPane().add(label_9);
JLabel label_10 = new JLabel("班主任:");
label_10.setFont(font);
label_10.setBounds(431, 378, 81, 21);
getContentPane().add(label_10);
JButton btnNewButton_2 = new JButton("修改");
btnNewButton_2.setFont(font);
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String number=new String(textField_6.getText());
String name=new String(textField_7.getText());
String sex=new String(textField_8.getText());
String age=new String(textField_9.getText());
String zhuanye=new String(textField_10.getText());
String teacher=new String(textField_11.getText());
JOptionPane.showMessageDialog(getContentPane(),modify.modifyRecord(number, name, sex, age, zhuanye, teacher));
textField_6.setText("");
textField_7.setText("");
textField_8.setText("");
textField_9.setText("");
textField_10.setText("");
textField_11.setText("");
}
});
btnNewButton_2.setBounds(256, 429, 123, 29);
getContentPane().add(btnNewButton_2);
JLabel lblNewLabel_1 = new JLabel("学号:");
lblNewLabel_1.setFont(font);
lblNewLabel_1.setBounds(96, 493, 60, 21);
getContentPane().add(lblNewLabel_1);
textField_12 = new JTextField();
textField_12.setBounds(166, 489, 96, 27);
getContentPane().add(textField_12);
textField_12.setColumns(10);
JButton btnNewButton_3 = new JButton("删除");
btnNewButton_3.setFont(font);
btnNewButton_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s=textField_12.getText();
if(s.equals(""))
JOptionPane.showMessageDialog(getContentPane(), "请输入学号");
else
{
delete.deleteRecord(s);
JOptionPane.showMessageDialog(getContentPane(),"删除成功");
textField_12.setText("");
}
}
});
btnNewButton_3.setBounds(364, 488, 123, 29);
getContentPane().add(btnNewButton_3);
JLabel label_11 = new JLabel("软件171 201707152 杜江");
label_11.setFont(font);
label_11.setBounds(126, 559, 319, 29);
getContentPane().add(label_11);
setVisible(true);
setBounds(100,100,700,700);
}
}
Add.java
package shiyan6;
import java.sql.*;
public class add {
static String addRecord(String number,String name,String sex,String age,String zhuanye,String teacher)
{
String ss=null;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
System.out.println(e);
}
try {
String database="factory";
String table="Student";
String url="jdbc:mysql://localhost:3306/"+database;
String id="root";
String password="1234";
Connection con=DriverManager.getConnection(url, id, password);
String s="INSERT INTO "+table+" VALUES(?,?,?,?,?,?)";
PreparedStatement sql=con.prepareStatement(s);
if(number.equals(""))
{
ss="学号不能为空!!";
}
else
{
sql.setString(1, number);
sql.setString(2, name);
sql.setString(3, sex);
sql.setInt(4, Integer.parseInt(age));
sql.setString(5, zhuanye);
sql.setString(6, teacher);
sql.executeUpdate();
ss="添加成功!";
}
con.close();
}
catch(SQLException e) {
System.out.println(e);
}
return ss;
}
}
Select.java
package shiyan6;
import java.sql.*;
public class select {
static StringBuffer selcetAll()
{
StringBuffer s=new StringBuffer();
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
System.out.println(e);
}
try {
String database="factory";
String table="Student";
String url="jdbc:mysql://localhost:3306/"+database;
String id="root";
String password="1234";
Connection con=DriverManager.getConnection(url,id,password);
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery("SELECT * FROM "+table);
while(rs.next())
{
s.append(rs.getString(1)+" ");
s.append(rs.getString(2)+" ");
s.append(rs.getString(3)+" ");
s.append(rs.getString(4)+" ");
s.append(rs.getString(5)+" ");
s.append(rs.getString(6)+"\n");
}
con.close();
}
catch(SQLException e){
System.out.println(e);
}
return s;
}
}
Delete.java
package shiyan6;
import java.sql.*;
import javax.swing.JOptionPane;
public class delete {
static void deleteRecord(String number)
{
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e) {
System.out.println(e);
}
try {
String database="factory";
String table="Student";
String url="jdbc:mysql://localhost:3306/"+database;
String id="root";
String password="1234";
Connection co=DriverManager.getConnection(url, id, password);
PreparedStatement sql=co.prepareStatement("DELETE FROM "+table+" WHERE 学号=?;");
sql.setString(1, number);
sql.executeUpdate();
co.close();
}
catch(SQLException e){
System.out.println(e);
}
}
}
Modify.java
package shiyan6;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class modify {
static String modifyRecord(String number,String name,String sex,String age,String zhuanye,String teacher)
{
String ss=null;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
System.out.println(e);
}
try {
String database="factory";
String table="Student";
String url="jdbc:mysql://localhost:3306/"+database;
String id="root";
String password="1234";
Connection con=DriverManager.getConnection(url, id, password);
PreparedStatement sql=con.prepareStatement("UPDATE "+table+" SET 姓名=?,性别=?,年龄=?,专业=?,班主任=? WHERE 学号=?;");
if(number.equals(""))
{
ss="学号不能为空!!";
}
else
{
sql.setString(1, name);
sql.setString(2, sex);
sql.setInt(3, Integer.parseInt(age));
sql.setString(4, zhuanye);
sql.setString(5,teacher);
sql.setString(6, number);
sql.executeUpdate();
ss="修改成功!";
}
con.close();
}
catch(SQLException e) {
System.out.println(e);
}
return ss;
}
}
*注意:
--雷同无效,禁止抄袭;
--A4纸单面打印,左侧装订,2个钉;
--以班为单位,各班负责人收齐并按学号由小到大顺序排序后上交;