用Java代码写一个学生成绩管理系统 要求1:带有图形界面。(20%) 要求2:登录时输入用户名密码。(20%) 要求3:能够录入、查询、修改、删除课程。(20%) 要求4:能够录入、查询、修改、删除学生某个课程的成绩。(20%) 要求5:能够持久化。(20%)
时间: 2023-08-11 13:06:05 浏览: 19
好的,以下是一些基本的代码实现思路和步骤,供您参考:
1. 设计数据库表结构,并使用Java连接数据库,实现数据的持久化。可以使用MySQL、Oracle、SQL Server等关系型数据库。示例代码如下:
```java
import java.sql.*;
public class Database {
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private String url = "jdbc:mysql://localhost:3306/student?useSSL=false&serverTimezone=UTC";
private String user = "root";
private String password = "123456";
public Database() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet executeQuery(String sql) {
try {
resultSet = statement.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return resultSet;
}
public boolean executeUpdate(String sql) {
try {
statement.executeUpdate(sql);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public void close() {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
2. 使用Java GUI框架,如Swing或JavaFX,实现图形界面。示例代码如下:
```java
import javax.swing.*;
public class GUI extends JFrame {
private JLabel label;
private JTextField textField;
private JButton button;
public GUI() {
setTitle("学生成绩管理系统");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
label = new JLabel("请输入用户名:");
label.setBounds(100, 100, 120, 30);
add(label);
textField = new JTextField();
textField.setBounds(220, 100, 120, 30);
add(textField);
button = new JButton("登录");
button.setBounds(350, 100, 80, 30);
add(button);
setVisible(true);
}
}
```
3. 实现登录功能,可以使用Java中的JPasswordField类实现密码输入框,并使用JDBC连接数据库进行用户验证。示例代码如下:
```java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
public class LoginGUI extends JFrame {
private JLabel userLabel;
private JLabel passwordLabel;
private JTextField userTextField;
private JPasswordField passwordField;
private JButton loginButton;
private Database database;
public LoginGUI() {
setTitle("学生成绩管理系统 - 登录");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
userLabel = new JLabel("用户名:");
userLabel.setBounds(100, 100, 80, 30);
add(userLabel);
userTextField = new JTextField();
userTextField.setBounds(220, 100, 120, 30);
add(userTextField);
passwordLabel = new JLabel("密码:");
passwordLabel.setBounds(100, 150, 80, 30);
add(passwordLabel);
passwordField = new JPasswordField();
passwordField.setBounds(220, 150, 120, 30);
add(passwordField);
loginButton = new JButton("登录");
loginButton.setBounds(220, 200, 80, 30);
add(loginButton);
database = new Database();
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = userTextField.getText();
String password = new String(passwordField.getPassword());
ResultSet resultSet = database.executeQuery("select * from user where username='" + username + "' and password='" + password + "'");
try {
if (resultSet.next()) {
JOptionPane.showMessageDialog(null, "登录成功!");
dispose();
new MainGUI();
} else {
JOptionPane.showMessageDialog(null, "用户名或密码错误!");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new LoginGUI();
}
}
```
4. 实现录入、查询、修改、删除课程的功能。可以通过输入表单,将数据插入到数据库中;通过查询条件,查询数据库中的数据;通过修改表单,修改数据库中的数据;通过删除操作,删除数据库中的数据。示例代码如下:
```java
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
public class CourseGUI extends JFrame {
private JLabel nameLabel;
private JLabel creditLabel;
private JTextField nameTextField;
private JTextField creditTextField;
private JButton addButton;
private JButton searchButton;
private JButton updateButton;
private JButton deleteButton;
private JTable table;
private DefaultTableModel tableModel;
private JScrollPane scrollPane;
private Database database;
public CourseGUI() {
setTitle("学生成绩管理系统 - 课程管理");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
nameLabel = new JLabel("课程名称:");
nameLabel.setBounds(100, 50, 80, 30);
add(nameLabel);
nameTextField = new JTextField();
nameTextField.setBounds(200, 50, 120, 30);
add(nameTextField);
creditLabel = new JLabel("学分:");
creditLabel.setBounds(350, 50, 80, 30);
add(creditLabel);
creditTextField = new JTextField();
creditTextField.setBounds(450, 50, 80, 30);
add(creditTextField);
addButton = new JButton("添加");
addButton.setBounds(550, 50, 80, 30);
add(addButton);
searchButton = new JButton("查询");
searchButton.setBounds(650, 50, 80, 30);
add(searchButton);
updateButton = new JButton("修改");
updateButton.setBounds(550, 100, 80, 30);
add(updateButton);
deleteButton = new JButton("删除");
deleteButton.setBounds(650, 100, 80, 30);
add(deleteButton);
tableModel = new DefaultTableModel();
tableModel.addColumn("编号");
tableModel.addColumn("课程名称");
tableModel.addColumn("学分");
table = new JTable(tableModel);
scrollPane = new JScrollPane(table);
scrollPane.setBounds(100, 150, 600, 300);
add(scrollPane);
database = new Database();
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameTextField.getText();
String credit = creditTextField.getText();
database.executeUpdate("insert into course (name, credit) values ('" + name + "', " + credit + ")");
JOptionPane.showMessageDialog(null, "添加成功!");
}
});
searchButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameTextField.getText();
tableModel.setRowCount(0);
ResultSet resultSet = database.executeQuery("select * from course where name like '%" + name + "%'");
try {
while (resultSet.next()) {
Object[] rowData = new Object[3];
rowData[0] = resultSet.getInt("id");
rowData[1] = resultSet.getString("name");
rowData[2] = resultSet.getDouble("credit");
tableModel.addRow(rowData);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row >= 0) {
int id = (int) tableModel.getValueAt(row, 0);
String name = (String) tableModel.getValueAt(row, 1);
double credit = (double) tableModel.getValueAt(row, 2);
database.executeUpdate("update course set name='" + name + "', credit=" + credit + " where id=" + id);
JOptionPane.showMessageDialog(null, "修改成功!");
} else {
JOptionPane.showMessageDialog(null, "请选择要修改的数据!");
}
}
});
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
相关推荐











