帮我写一个利用javagui和jdbc来实现学生成绩查询的代码,要求输入学号能查到该学生的成绩,并写出mysql中的具体代码实现
时间: 2024-03-09 11:49:54 浏览: 55
好的,以下是利用 Java GUI 和 JDBC 实现学生成绩查询的代码:
```java
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
public class ScoreQuery extends JFrame implements ActionListener {
JLabel label1, label2;
JTextField text1;
JPasswordField text2;
JButton button1, button2;
public ScoreQuery() {
super("学生成绩查询系统");
setLayout(new GridLayout(3, 2));
label1 = new JLabel("学号:");
add(label1);
text1 = new JTextField(10);
add(text1);
label2 = new JLabel("密码:");
add(label2);
text2 = new JPasswordField(10);
add(text2);
button1 = new JButton("查询");
add(button1);
button1.addActionListener(this);
button2 = new JButton("退出");
add(button2);
button2.addActionListener(this);
setSize(300, 150);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1) {
String sno = text1.getText();
String password = text2.getText();
if (sno.equals("") || password.equals("")) {
JOptionPane.showMessageDialog(this, "请输入学号和密码!");
} else {
String url = "jdbc:mysql://localhost:3306/test";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "root";
try {
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, pass);
Statement stmt = con.createStatement();
String sql = "select * from score where sno='" + sno + "' and password='" + password + "'";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
JOptionPane.showMessageDialog(this, "您的成绩为:" + rs.getString("score"));
} else {
JOptionPane.showMessageDialog(this, "学号或密码错误!");
}
rs.close();
stmt.close();
con.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else if (e.getSource() == button2) {
dispose();
}
}
public static void main(String[] args) {
new ScoreQuery();
}
}
```
以上代码实现了一个简单的 GUI 界面,包括学号和密码的输入框,查询和退出按钮。当用户点击查询按钮时,程序会连接 MySQL 数据库,根据输入的学号和密码查询对应的成绩,然后弹出消息框显示查询结果。
下面是 MySQL 数据库中的具体代码实现:
```sql
-- 创建数据库
CREATE DATABASE test;
-- 选择该数据库
USE test;
-- 创建学生信息表
CREATE TABLE student (
sno VARCHAR(10) PRIMARY KEY,
sname VARCHAR(20) NOT NULL,
sex VARCHAR(2) NOT NULL,
age INT NOT NULL
);
-- 插入学生信息
INSERT INTO student VALUES ('1001', '张三', '男', 20);
INSERT INTO student VALUES ('1002', '李四', '女', 21);
INSERT INTO student VALUES ('1003', '王五', '男', 22);
-- 创建学生成绩表
CREATE TABLE score (
sno VARCHAR(10) PRIMARY KEY,
password VARCHAR(20) NOT NULL,
score INT NOT NULL,
FOREIGN KEY (sno) REFERENCES student(sno)
);
-- 插入学生成绩
INSERT INTO score VALUES ('1001', '123456', 80);
INSERT INTO score VALUES ('1002', '234567', 90);
INSERT INTO score VALUES ('1003', '345678', 85);
```
以上代码创建了一个名为 test 的数据库,其中包含了两个表:student 表用于存储学生信息,score 表用于存储学生成绩。在 score 表中,sno 字段与 student 表中的 sno 字段构成了外键关系,保证了学生成绩的正确性。
阅读全文