根据文件编写java程序
时间: 2024-12-22 11:22:21 浏览: 0
要根据提供的《学生成绩管理系统数据库和界面.pdf》文件编写一个Java程序,需要涵盖以下几个主要部分:
### 1. 数据库设计
- **数据库名称**: `student`
- **字符集**: `utf8`
- **排序规则**: `utf8_general_ci`
#### 表结构
1. **`score` 表**
- `id` (INT, 主键, 自增)
- `stuid` (VARCHAR(20), 学号)
- `subject` (VARCHAR(11), 课程)
- `id` (INT, 主键, 自增)
- `stuid` (VARCHAR(20), 学号)
- `password` (VARCHAR(20), 密码)
- `name` (VARCHAR(20), 姓名)
- `gender` (VARCHAR(20), 性别)
- `birthday` (DATE, 出生日期)
3. **`teacher` 表**
- `id` (INT, 主键, 自增)
- `teaid` (VARCHAR(50), 教师工号)
- `password` (VARCHAR(50), 密码)
- `name` (VARCHAR(20), 姓名)
- `course` (VARCHAR(20), 课程)
4. **`admin` 表**
- `id` (INT, 主键, 自增)
- `name` (VARCHAR(20))
- `password` (VARCHAR(20))
### 2. 项目结构
- **根目录**: `E:\workspace\idea\stuSys`
- **子目录**:
- `src`: 源代码目录
#### 源代码目录结构
- `DAO` (数据访问对象接口)
- `AdminDAO.java`
- `ScoreDAO.java`
- `StudentDAO.java`
- `TeacherDAO.java`
- `DAOImpl` (数据访问对象实现类)
- `AdminDAOImpl.java`
- `ScoreDAOImpl.java`
- `StudentDAOImpl.java`
- `TeacherDAOImpl.java`
- `frames` (界面类)
- `LoginFrame.java`
- `MainFrame.java`
- `PersonInfoPanel.java`
- `ScoreInsertTablePanel.java`
- `ScoreQueryTablePanel.java`
- `StuTablePanel.java`
- `util` (工具类)
- `DateUtil.java`
- `DBConnection.java`
- `Regex.java`
- `StuTableModel.java`
- `vo` (值对象)
- `Admin.java`
- `Score.java`
- `Student.java`
- `Teacher.java`
- `stuSys.iml`: 项目配置文件
### 3. 功能模块
- **用户登录**
- 登录界面 (`LoginFrame`)
- 支持学生、教师、管理员三种用户类别
- **学生用户界面**
- 成绩管理
- 课程查询
- 个人信息管理
- 系统退出
- **教师用户界面**
- 成绩管理(添加、更改)
- 课程查询
- 学生信息管理
- 个人信息管理
- 系统退出
- **管理员用户界面**
- 课程管理(添加、修改)
- 成绩管理(添加、更改)
- 学生信息管理
- 教师信息管理
- 个人信息管理
- 系统退出
### 4. 核心代码示例
#### 数据库连接工具类 (`DBConnection.java`)
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static final String URL = "jdbc:mysql://localhost:3306/student";
private static final String USER = "root";
private static final String PASSWORD = "your_password";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
```
#### 数据访问对象接口 (`StudentDAO.java`)
```java
public interface StudentDAO {
boolean addStudent(Student student);
Student getStudentByStuid(String stuid);
List<Student> getAllStudents();
boolean updateStudent(Student student);
boolean deleteStudent(String stuid);
}
```
#### 数据访问对象实现类 (`StudentDAOImpl.java`)
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StudentDAOImpl implements StudentDAO {
@Override
public boolean addStudent(Student student) {
try (Connection conn = DBConnection.getConnection()) {
String sql = "INSERT INTO student (stuid, password, name, gender, birthday) VALUES (?, ?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, student.getStuid());
pstmt.setString(2, student.getPassword());
pstmt.setString(3, student.getName());
pstmt.setString(4, student.getGender());
pstmt.setDate(5, new java.sql.Date(student.getBirthday().getTime()));
return pstmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
// 其他方法类似实现...
}
```
#### 登录界面 (`LoginFrame.java`)
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginFrame extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
private JComboBox<String> userTypeComboBox;
public LoginFrame() {
setTitle("学生成绩管理系统");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 2));
JLabel usernameLabel = new JLabel("用户名:");
usernameField = new JTextField();
JLabel passwordLabel = new JLabel("密码:");
passwordField = new JPasswordField();
JLabel userTypeLabel = new JLabel("用户类别:");
userTypeComboBox = new JComboBox<>(new String[]{"学生", "教师", "管理员"});
JButton loginButton = new JButton("登录");
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
char[] passwordChars = passwordField.getPassword();
String password = new String(passwordChars);
String userType = (String) userTypeComboBox.getSelectedItem();
if ("学生".equals(userType)) {
// 调用StudentDAO进行验证
} else if ("教师".equals(userType)) {
// 调用TeacherDAO进行验证
} else if ("管理员".equals(userType)) {
// 调用AdminDAO进行验证
}
}
});
panel.add(usernameLabel);
panel.add(usernameField);
panel.add(passwordLabel);
panel.add(passwordField);
panel.add(userTypeLabel);
panel.add(userTypeComboBox);
panel.add(loginButton);
add(panel);
setVisible(true);
}
public static void main(String[] args) {
new LoginFrame();
}
}
```
以上是基于提供的PDF文件内容编写的Java程序的基本框架。你可以根据具体需求进一步完善各个功能模块和界面设计。
阅读全文