一、代码实现
注册界面
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//注册界面
public class AccountApplicationGUI extends JFrame {
private JPanel roleSelectionPanel;
private JButton studentButton;
private JButton teacherButton;
public AccountApplicationGUI() {
setTitle("注册界面");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
roleSelectionPanel = new JPanel();
JLabel label = new JLabel("请选择注册的角色");
label.setIcon(new ImageIcon(AccountApplicationGUI.class.getResource("/image/学生信息.png")));
label.setBounds(57, 35, 147, 31);
label.setHorizontalAlignment(SwingConstants.CENTER);
roleSelectionPanel.add(label);
studentButton = new JButton("学生");
studentButton.setBounds(57, 93, 147, 31);
studentButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showStudentRegistration();
}
});
teacherButton = new JButton("教师");
teacherButton.setBounds(57, 134, 147, 31);
teacherButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showTeacherRegistration();
}
});
roleSelectionPanel.add(studentButton);
roleSelectionPanel.add(teacherButton);
getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
}
private void showStudentRegistration() {
StudentRegistrationGUI studentRegistrationGUI = new StudentRegistrationGUI();
setVisible(false);
studentRegistrationGUI.setVisible(true);
}
private void showTeacherRegistration() {
TeacherRegistrationGUI teacherRegistrationGUI = new TeacherRegistrationGUI();
setVisible(false);
teacherRegistrationGUI.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
AccountApplicationGUI accountGUI = new AccountApplicationGUI();
accountGUI.setVisible(true);
}
});
}
}
class StudentRegistrationGUI extends JFrame {
private JPanel registrationPanel;
private JLabel snoLabel;
private JLabel snameLabel;
private JLabel sageLabel;
private JLabel ssexLabel;
private JLabel smajorLabel;
private JLabel sbirthLabel;
private JLabel phoneNumLabel;
private JLabel emailLabel;
private JLabel sclassLabel;
private JLabel stuPhotoLabel;
private JLabel timeEnrollLabel;
private JLabel dateGraduLabel;
private JTextField snoField;
private JTextField snameField;
private JTextField sageField;
private JTextField ssexField;
private JTextField smajorField;
private JTextField sbirthField;
private JTextField phoneNumField;
private JTextField emailField;
private JTextField sclassField;
private JTextField stuPhotoField;
private JTextField timeEnrollField;
private JTextField dateGraduField;
private JButton confirmButton;
public StudentRegistrationGUI() {
setTitle("学生注册界面");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
registrationPanel = new JPanel();
registrationPanel.setLayout(new GridLayout(7, 2));
snoLabel = new JLabel("学号:");
snoField = new JTextField();
snameLabel = new JLabel("姓名:");
snameField = new JTextField();
sageLabel = new JLabel("年龄:");
sageField = new JTextField();
ssexLabel = new JLabel("性别:");
ssexField = new JTextField();
smajorLabel = new JLabel("专业:");
smajorField = new JTextField();
sbirthLabel = new JLabel("出生日期:");
sbirthField = new JTextField();
phoneNumLabel = new JLabel("电话号码:");
phoneNumField = new JTextField();
emailLabel = new JLabel("邮箱:");
emailField = new JTextField();
sclassLabel = new JLabel("班级:");
sclassField = new JTextField();
stuPhotoLabel = new JLabel("照片:");
stuPhotoField = new JTextField();
timeEnrollLabel = new JLabel("入学时间:");
timeEnrollField = new JTextField();
dateGraduLabel = new JLabel("毕业日期:");
dateGraduField = new JTextField();
registrationPanel.add(snoLabel);
registrationPanel.add(snoField);
registrationPanel.add(snameLabel);
registrationPanel.add(snameField);
registrationPanel.add(sageLabel);
registrationPanel.add(sageField);
registrationPanel.add(ssexLabel);
registrationPanel.add(ssexField);
registrationPanel.add(smajorLabel);
registrationPanel.add(smajorField);
registrationPanel.add(sbirthLabel);
registrationPanel.add(sbirthField);
registrationPanel.add(phoneNumLabel);
registrationPanel.add(phoneNumField);
registrationPanel.add(emailLabel);
registrationPanel.add(emailField);
registrationPanel.add(sclassLabel);
registrationPanel.add(sclassField);
registrationPanel.add(stuPhotoLabel);
registrationPanel.add(stuPhotoField);
registrationPanel.add(timeEnrollLabel);
registrationPanel.add(timeEnrollField);
registrationPanel.add(dateGraduLabel);
registrationPanel.add(dateGraduField);
confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 将信息交给管理员审核
// 检查学生注册界面的字段信息是否为空
if (snoField.getText().isEmpty() ||
snameField.getText().isEmpty() ||
sageField.getText().isEmpty() ||
ssexField.getText().isEmpty() ||
smajorField.getText().isEmpty() ||
sbirthField.getText().isEmpty() ||
phoneNumField.getText().isEmpty() ||
emailField.getText().isEmpty() ||
sclassField.getText().isEmpty() ||
stuPhotoField.getText().isEmpty() ||
timeEnrollField.getText().isEmpty() ||
dateGraduField.getText().isEmpty()) {
// 弹窗提示用户请完善信息
JOptionPane.showMessageDialog(null, "请完善您的信息");
}else
JOptionPane.showMessageDialog(null, "信息已交由管理员审核");
// 在弹窗提示后再弹出一个确认对话框
int result = JOptionPane.showConfirmDialog(null, "审核通过", "确认", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION) {
// 用户点击了确认按钮
// 可以在这里执行相应的操作
} else {
// 用户点击了取消按钮或关闭了对话框
// 可以在这里执行相应的操作
}
}
});
getContentPane().add(registrationPanel, BorderLayout.CENTER);
getContentPane().add(confirmButton, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
}
}
class TeacherRegistrationGUI extends JFrame {
private JPanel registrationPanel;
private JLabel tnoLabel;
private JLabel tnameLabel;
private JLabel tsexLabel;
private JLabel deptLabel;
private JLabel phoneNumLabel;
private JLabel emailLabel;
private JTextField tnoField;
private JTextField tnameField;
private JTextField tsexField;
private JTextField deptField;
private JTextField phoneNumField;
private JTextField emailField;
private JButton confirmButton;
public TeacherRegistrationGUI() {
setTitle("教师注册界面");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
registrationPanel = new JPanel();
registrationPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.insets = new Insets(5, 10, 5, 10);
tnoLabel = new JLabel("教师编号:");
registrationPanel.add(tnoLabel, gbc);
gbc.gridx = 1;
tnoField = new JTextField(15);
registrationPanel.add(tnoField, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
tnameLabel = new JLabel("姓名:");
registrationPanel.add(tnameLabel, gbc);
gbc.gridx = 1;
tnameField = new JTextField(15);
registrationPanel.add(tnameField, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
tsexLabel = new JLabel("性别:");
registrationPanel.add(tsexLabel, gbc);
gbc.gridx = 1;
tsexField = new JTextField(15);
registrationPanel.add(tsexField, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
deptLabel = new JLabel("部门:");
registrationPanel.add(deptLabel, gbc);
gbc.gridx = 1;
deptField = new JTextField(15);
registrationPanel.add(deptField, gbc);
gbc.gridx = 0;
gbc.gridy = 4;
phoneNumLabel = new JLabel("电话号码:");
registrationPanel.add(phoneNumLabel, gbc);
gbc.gridx = 1;
phoneNumField = new JTextField(15);
registrationPanel.add(phoneNumField, gbc);
gbc.gridx = 0;
gbc.gridy = 5;
emailLabel = new JLabel("邮箱:");
registrationPanel.add(emailLabel, gbc);
gbc.gridx = 1;
emailField = new JTextField(15);
registrationPanel.add(emailField, gbc);
confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 将信息交给管理员审核
if (tnoField.getText().isEmpty() ||
tnameField.getText().isEmpty() ||
tsexField.getText().isEmpty() ||
deptField.getText().isEmpty() ||
phoneNumField.getText().isEmpty() ||
emailField.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "请完善您的信息");
} else {
JOptionPane.showMessageDialog(null, "信息已交由管理员审核");
int result = JOptionPane.showConfirmDialog(null, "审核通过", "确认", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION) {
// 用户点击了确认按钮
// 可以在这里执行相应的操作
} else {
// 用户点击了取消按钮或关闭了对话框
// 可以在这里执行相应的操作
}
}
}
});
getContentPane().add(registrationPanel, BorderLayout.CENTER);
getContentPane().add(confirmButton, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
}
public static void main1(String[] args) {
SwingUtilities.invokeLater(() -> {
TeacherRegistrationGUI teacherRegistrationGUI = new TeacherRegistrationGUI();
teacherRegistrationGUI.setVisible(true);
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new AccountApplicationGUI();
}
});
}
}
新用户注册
package ceshi;
public class AdminInfoPage {
public static void openAdminInfoPage() {
// TODO Auto-generated method stub
}
}
课程管理
package ceshi;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.awt.Font;
import java.awt.Color;
import java.awt.Toolkit;
class Course {
private String name;
private List<String> students;
private Map<String, Integer> ratings;
public Course(String name) {
this.name = name;
this.students = new ArrayList<>();
this.ratings = new HashMap<>();
}
public String getName() {
return name;
}
public void addStudent(String studentName) {
students.add(studentName);
}
public void addRating(String studentName, int rating) {
ratings.put(studentName, rating);
}
public List<String> getStudents() {
return students;
}
public double getAverageRating() {
if (ratings.isEmpty()) {
return 0;
}
double sum = 0;
for (int rating : ratings.values()) {
sum += rating;
}
return sum / ratings.size();
}
}
class CourseInfoApp {
private Map<String, Course> courses;
public CourseInfoApp() {
courses = new HashMap<>();
}
public void addCourse(String courseName) {
courses.put(courseName, new Course(courseName));
}
public void enrollStudent(String courseName, String studentName) {
if (courses.containsKey(courseName)) {
courses.get(courseName).addStudent(studentName);
}
}
public void rateCourse(String courseName, String studentName, int rating) {
if (courses.containsKey(courseName)) {
courses.get(courseName).addRating(studentName, rating);
}
}
public List<String> getCourseStudents(String courseName) {
if (courses.containsKey(courseName)) {
return courses.get(courseName).getStudents();
}
return new ArrayList<>();
}
public double getCourseAverageRating(String courseName) {
if (courses.containsKey(courseName)) {
return courses.get(courseName).getAverageRating();
}
return 0;
}
}
public class CourseInfoGUI {
public static void main(String[] args) {
CourseInfoApp app = new CourseInfoApp();
JFrame frame = new JFrame("课程信息系统");
frame.setIconImage(Toolkit.getDefaultToolkit().getImage(CourseInfoGUI.class.getResource("/image/calendar.png")));
frame.setBackground(new Color(0, 255, 255));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(534, 317);
JPanel panel = new JPanel();
panel.setBackground(new Color(0, 255, 255));
frame.getContentPane().add(panel);
JButton addCourseButton = new JButton("添加课程");
addCourseButton.setBounds(215, 5, 117, 41);
addCourseButton.setIcon(new ImageIcon(CourseInfoGUI.class.getResource("/image/empty .png")));
JButton enrollButton = new JButton("添加学生");
enrollButton.setIcon(new ImageIcon(CourseInfoGUI.class.getResource("/image/empty .png")));
enrollButton.setFont(new Font("宋体", Font.PLAIN, 12));
enrollButton.setBounds(212, 56, 120, 31);
JButton rateButton = new JButton("评价课程");
rateButton.setIcon(new ImageIcon(CourseInfoGUI.class.getResource("/image/like.png")));
rateButton.setFont(new Font("宋体", Font.PLAIN, 14));
rateButton.setBounds(23, 136, 126, 25);
JButton showStudentsButton = new JButton("显示学生");
showStudentsButton.setFont(new Font("宋体", Font.PLAIN, 16));
showStudentsButton.setBounds(23, 230, 96, 28);
JButton showRatingButton = new JButton("显示课程平均分");
showRatingButton.setFont(new Font("宋体", Font.PLAIN, 16));
showRatingButton.setBounds(23, 171, 145, 41);
JTextField courseNameField = new JTextField(15);
courseNameField.setBounds(113, 15, 96, 21);
JTextField studentNameField = new JTextField(15);
studentNameField.setBounds(113, 53, 96, 21);
JTextField ratingField = new JTextField(5);
ratingField.setFont(new Font("宋体", Font.PLAIN, 10));
ratingField.setBounds(113, 105, 36, 21);
JTextArea resultArea = new JTextArea(10, 30);
resultArea.setBounds(266, 96, 244, 184);
resultArea.setEditable(false);
addCourseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String courseName = courseNameField.getText();
app.addCourse(courseName);
resultArea.setText("已添加课程:" + courseName);
}
});
enrollButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String courseName = courseNameField.getText();
String studentName = studentNameField.getText();
app.enrollStudent(courseName, studentName);
resultArea.setText(studentName + " 已加入 " + courseName);
}
});
rateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String courseName = courseNameField.getText();
String studentName = studentNameField.getText();
int rating = Integer.parseInt(ratingField.getText());
app.rateCourse(courseName, studentName, rating);
resultArea.setText(studentName + " 为 " + courseName + " 打分:" + rating + " 星");
}
});
showStudentsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String courseName = courseNameField.getText();
List<String> students = app.getCourseStudents(courseName);
resultArea.setText(courseName + " 的学生名单:\n" + String.join("\n", students));
}
});
showRatingButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String courseName = courseNameField.getText();
double averageRating = app.getCourseAverageRating(courseName);
resultArea.setText(courseName + " 的平均分:" + averageRating);
}
});
panel.setLayout(null);
JLabel label = new JLabel("课程名:");
label.setBounds(23, 8, 96, 28);
label.setFont(new Font("宋体", Font.PLAIN, 24));
panel.add(label);
panel.add(courseNameField);
panel.add(addCourseButton);
JLabel label_1 = new JLabel("学生名:");
label_1.setBounds(23, 46, 96, 28);
label_1.setFont(new Font("宋体", Font.PLAIN, 24));
panel.add(label_1);
panel.add(studentNameField);
panel.add(enrollButton);
JLabel label_2 = new JLabel("评分 (1-5):");
label_2.setFont(new Font("宋体", Font.PLAIN, 16));
label_2.setBounds(7, 78, 112, 58);
panel.add(label_2);
panel.add(ratingField);
panel.add(rateButton);
panel.add(showStudentsButton);
panel.add(showRatingButton);
panel.add(resultArea);
frame.setVisible(true);
}
}
录入课程
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
public class CourseManagement extends JFrame {
private JPanel roleSelectionPanel;
private JButton teacherButton;
private JButton studentButton;
private JButton adminButton;
private JComboBox<String> teacherComboBox;
private JComboBox<String> studentComboBox;
private JComboBox<String> courseComboBox;
private HashMap<String, Teacher> teacherMap = new HashMap<>();
private HashMap<String, Student> studentMap = new HashMap<>();
private HashMap<String, Course> courseMap = new HashMap<>();
// 在CourseManagement类中添加calculateNewAttendanceRate方法
private double calculateNewAttendanceRate(int leaveStudentCount) {
// 在这里根据请假学生的数量和总学生人数计算新的出勤率
// 这里你可以使用适当的算法来计算出勤率
// 假设总学生人数为100,你可以这样计算出勤率:(100 - leaveStudentCount) / 100.0 * 100
return (100 - leaveStudentCount) / 100.0 * 100;
}
public CourseManagement() {
setTitle("Course Management");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
roleSelectionPanel = new JPanel();
roleSelectionPanel.setLayout(new GridLayout(4, 1));
JLabel label = new JLabel("请选择角色");
label.setHorizontalAlignment(SwingConstants.CENTER);
roleSelectionPanel.add(label);
teacherButton = new JButton("教师");
teacherButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showTeacherAttendance();
}
});
roleSelectionPanel.add(teacherButton);
studentButton = new JButton("学生");
studentButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showStudentLeaveApplication();
}
});
roleSelectionPanel.add(studentButton);
adminButton = new JButton("管理员");
adminButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showAdminManageCourse();
}
});
roleSelectionPanel.add(adminButton);
getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
}
private void showTeacherAttendance() {
JFrame teacherFrame = new JFrame("教师 - 考勤结果");
teacherFrame.setSize(300, 200);
teacherFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel teacherPanel = new JPanel();
teacherPanel.setLayout(new GridLayout(3, 1)); // Reduced the number of rows
JLabel courseLabel = new JLabel("选择课程:");
courseComboBox = new JComboBox<>(courseMap.keySet().toArray(new String[0]));
JButton queryButton = new JButton("查询");
queryButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedCourse = (String) courseComboBox.getSelectedItem();
// 模拟从数据库或数据源中获取考勤信息,假设有三个学生请假
ArrayList<String> leaveStudents = new ArrayList<>();
leaveStudents.add("学生1 - 学号1 - 请假理由1");
leaveStudents.add("学生2 - 学号2 - 请假理由2");
leaveStudents.add("学生3 - 学号3 - 请假理由3");
if (!leaveStudents.isEmpty()) {
// 构建弹出的消息
StringBuilder messageBuilder = new StringBuilder("考勤结果:出勤率80%\n\n请假学生信息:\n");
for (String leaveStudent : leaveStudents) {
messageBuilder.append(leaveStudent).append("\n");
}
// 弹出消息框显示请假学生信息
JOptionPane.showMessageDialog(teacherFrame, messageBuilder.toString(), "考勤结果", JOptionPane.INFORMATION_MESSAGE);
// 根据请假学生人数调整出勤率,这里你需要根据实际需求修改
double attendanceRate = calculateNewAttendanceRate(leaveStudents.size());
System.out.println("新的出勤率:" + attendanceRate); // 在控制台打印出勤率
} else {
// 如果没有学生请假
JOptionPane.showMessageDialog(teacherFrame, "考勤结果:出勤率100%", "考勤结果", JOptionPane.INFORMATION_MESSAGE);
}
}
});
teacherPanel.add(courseLabel);
teacherPanel.add(courseComboBox);
teacherPanel.add(queryButton);
teacherFrame.add(teacherPanel);
teacherFrame.setVisible(true);
}
// 定义一个类来表示学生请假信息
private class StudentLeaveInfo {
private String name;
private String studentID;
private String reason;
public StudentLeaveInfo(String name, String studentID, String reason) {
this.name = name;
this.studentID = studentID;
this.reason = reason;
}
public String getName() {
return name;
}
public String getStudentID() {
return studentID;
}
public String getReason() {
return reason;
}
}
private void showStudentLeaveApplication() {
JFrame studentFrame = new JFrame("学生 - 请假申请");
studentFrame.setSize(400, 300);
studentFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel studentPanel = new JPanel();
studentPanel.setLayout(new GridLayout(5, 2));
JLabel courseLabel = new JLabel("选择课程:");
JComboBox<String> courseComboBox = new JComboBox<>(courseMap.keySet().toArray(new String[0]));
JLabel nameLabel = new JLabel("姓名:");
JTextField nameField = new JTextField();
JLabel studentIDLabel = new JLabel("学号:");
JTextField studentIDField = new JTextField();
JLabel reasonLabel = new JLabel("请假理由:");
JTextArea reasonArea = new JTextArea();
JButton applyButton = new JButton("确认请假");
applyButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedCourse = (String) courseComboBox.getSelectedItem();
String name = nameField.getText();
String studentID = studentIDField.getText();
String reason = reasonArea.getText();
// 在这里处理请假申请,可以将请假信息存储到数据库或显示在界面上
// 例如:将请假信息显示在对话框中
String message = "请假申请成功\n\n" +
"课程: " + selectedCourse + "\n" +
"姓名: " + name + "\n" +
"学号: " + studentID + "\n" +
"请假理由:\n" + reason;
JOptionPane.showMessageDialog(studentFrame, message, "请假申请成功", JOptionPane.INFORMATION_MESSAGE);
}
});
studentPanel.add(courseLabel);
studentPanel.add(courseComboBox);
studentPanel.add(nameLabel);
studentPanel.add(nameField);
studentPanel.add(studentIDLabel);
studentPanel.add(studentIDField);
studentPanel.add(reasonLabel);
studentPanel.add(new JScrollPane(reasonArea)); // 使用滚动窗格以便显示多行文本
studentPanel.add(applyButton);
studentFrame.add(studentPanel);
studentFrame.setVisible(true);
}
private void showAdminManageCourse() {
JFrame adminFrame = new JFrame("管理员页面");
adminFrame.setSize(300, 200);
adminFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel adminPanel = new JPanel();
adminPanel.setLayout(new GridLayout(6, 2)); // 增加了行数和列数
JLabel nameLabel = new JLabel("教师姓名:");
JTextField teacherNameField = new JTextField(); // 添加了一个文本输入框
JLabel classroomLabel = new JLabel("授课教室:");
JTextField classroomField = new JTextField();
JLabel courseNameLabel = new JLabel("课程名:");
JTextField courseNameField = new JTextField();
JLabel timeLabel = new JLabel("授课时间:");
JTextField timeField = new JTextField();
JButton confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String teacherName = teacherNameField.getText(); // 获取教师姓名输入
String classroom = classroomField.getText();
String courseName = courseNameField.getText();
String time = timeField.getText();
// 在此处验证和处理输入数据
// 将新的课程添加到courseMap
courseMap.put(courseName, new Course()); // 在此,我仅仅用了一个空的Course对象,你可能需要为其提供详细的参数
// 显示成功对话框
JOptionPane.showMessageDialog(adminFrame, "录入成功", "成功", JOptionPane.INFORMATION_MESSAGE);
}
});
adminPanel.add(nameLabel);
adminPanel.add(teacherNameField);
adminPanel.add(classroomLabel);
adminPanel.add(classroomField);
adminPanel.add(courseNameLabel);
adminPanel.add(courseNameField);
adminPanel.add(timeLabel);
adminPanel.add(timeField);
adminPanel.add(confirmButton);
adminFrame.add(adminPanel);
adminFrame.setVisible(true);
}
private class Teacher {
// 教师信息类的定义
// ...
}
private class Student {
// 学生信息类的定义
// ...
}
private class Course {
// 课程信息类的定义
// ...
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CourseManagement().setVisible(true);
}
});
}
}
学生选课
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
//学生选课
public class CourseSelectionSystem extends JFrame {
private JPanel roleSelectionPanel;
private JButton studentButton;
private JButton adminButton;
private ArrayList<String> courses = new ArrayList<>();
public CourseSelectionSystem() {
setTitle("Course Selection System");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
roleSelectionPanel = new JPanel();
roleSelectionPanel.setLayout(new GridLayout(3, 1));
JLabel label = new JLabel("请选择角色");
label.setHorizontalAlignment(SwingConstants.CENTER);
roleSelectionPanel.add(label);
studentButton = new JButton("学生");
studentButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showStudentCourseSelection();
}
});
adminButton = new JButton("管理员");
adminButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showAdminCourseEntry();
}
});
roleSelectionPanel.add(studentButton);
roleSelectionPanel.add(adminButton);
getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
}
private void showStudentCourseSelection() {
JComboBox<String> courseComboBox = new JComboBox<>(courses.toArray(new String[0]));
JTextField nameField = new JTextField(15);
JTextField idField = new JTextField(15);
JPanel studentPanel = new JPanel();
studentPanel.setLayout(new GridLayout(4, 2));
studentPanel.add(new JLabel("选择课程:"));
studentPanel.add(courseComboBox);
studentPanel.add(new JLabel("学生姓名:"));
studentPanel.add(nameField);
studentPanel.add(new JLabel("学生学号:"));
studentPanel.add(idField);
int result = JOptionPane.showConfirmDialog(null, studentPanel, "学生选课", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String selectedCourse = (String) courseComboBox.getSelectedItem();
String studentName = nameField.getText();
String studentId = idField.getText();
// 在实际应用中,可以在这里处理选课逻辑,添加选课记录等操作
JOptionPane.showMessageDialog(null, "选课成功!");
}
}
private void showAdminCourseEntry() {
JTextField courseNameField = new JTextField(20);
JTextField courseNumberField = new JTextField(10);
JPanel adminPanel = new JPanel();
adminPanel.setLayout(new GridLayout(3, 2));
adminPanel.add(new JLabel("课程名:"));
adminPanel.add(courseNameField);
adminPanel.add(new JLabel("课程号:"));
adminPanel.add(courseNumberField);
int result = JOptionPane.showConfirmDialog(null, adminPanel, "管理员录入课程", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String courseName = courseNameField.getText();
String courseNumber = courseNumberField.getText();
courses.add(courseName + " (" + courseNumber + ")");
JOptionPane.showMessageDialog(null, "课程已录入!");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
CourseSelectionSystem courseSelectionSystem = new CourseSelectionSystem();
courseSelectionSystem.setVisible(true);
}
});
}
}
论坛
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
//论坛
public class ForumGUI extends JFrame {
private JTextArea messageTextArea;
private JButton postButton;
private JComboBox<String> userTypeComboBox;
private JButton stickyButton;
private JTextField inputTextField;
private boolean isAdmin = false; // Track the admin status
private ArrayList<Message> messages;
public ForumGUI() {
setBackground(new Color(192, 192, 192));
setIconImage(Toolkit.getDefaultToolkit().getImage(ff.class.getResource("/image/论坛.png")));
setTitle("论坛界面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
messages = new ArrayList<>();
messageTextArea = new JTextArea(10, 30);
messageTextArea.setBackground(new Color(255, 250, 240));
JScrollPane scrollPane = new JScrollPane(messageTextArea);
getContentPane().add(scrollPane, BorderLayout.CENTER);
JPanel inputPanel = new JPanel();
inputPanel.setBackground(new Color(245, 255, 250));
inputPanel.setLayout(new FlowLayout());
inputTextField = new JTextField(20);
JLabel label = new JLabel("留言输入框");
label.setBackground(new Color(255, 215, 0));
inputPanel.add(label);
inputPanel.add(inputTextField);
userTypeComboBox = new JComboBox<>(new String[]{"教师", "学生", "管理员"});
inputPanel.add(userTypeComboBox);
postButton = new JButton("发言");
postButton.setBackground(new Color(255, 215, 0));
postButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
postMessage();
}
});
inputPanel.add(postButton);
getContentPane().add(inputPanel, BorderLayout.NORTH);
JPanel bottomPanel = new JPanel();
bottomPanel.setBackground(new Color(245, 255, 250));
bottomPanel.setLayout(new FlowLayout());
stickyButton = new JButton("置顶消息");
stickyButton.setFont(new Font("宋体", Font.PLAIN, 14));
stickyButton.setIcon(new ImageIcon(ff.class.getResource("/image/speaker.png")));
stickyButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
toggleAdmin(); // Toggle admin status
}
});
bottomPanel.add(stickyButton);
getContentPane().add(bottomPanel, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private void toggleAdmin() {
isAdmin = !isAdmin;
userTypeComboBox.setEnabled(!isAdmin);
}
private void postMessage() {
String userType = (String) userTypeComboBox.getSelectedItem();
String messageText = inputTextField.getText();
if (!messageText.isEmpty()) {
if (isAdmin) {
// Admin's messages are sticky
String stickyMessage = "[管理员] " + messageText;
Message message = new Message("管理员", stickyMessage);
messages.add(0, message);
} else {
Message message = new Message(userType, messageText);
messages.add(message);
}
refreshMessageTextArea();
inputTextField.setText("");
}
}
private void refreshMessageTextArea() {
messageTextArea.setText("");
for (int i = messages.size() - 1; i >= 0; i--) {
Message message = messages.get(i);
messageTextArea.append(message.getFormattedMessage() + "\n");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ForumGUI();
}
});
}
private static class Message {
private String userType;
private String messageText;
public Message(String userType, String messageText) {
this.userType = userType;
this.messageText = messageText;
}
public String getFormattedMessage() {
return "[" + userType + "] " + messageText;
}
}
}
其他
package ceshi;
public class Student {
private Integer sno;
private String sname;
private Integer sage;
private String ssex;
private String smajor;
private String sclass;
public Integer getSno() {
return sno;
}
public String getSname() {
return sname;
}
public Integer getSage() {
return sage;
}
public String getSsex() {
return ssex;
}
public String getSmajor() {
return smajor;
}
public String getSclass() {
return sclass;
}
public void setSno(Integer sno) {
this.sno = sno;
}
public void setSname(String sname) {
this.sname = sname;
}
public void setSage(Integer sage) {
this.sage = sage;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public void setSmajor(String smajor) {
this.smajor = smajor;
}
public void setSclass(String sclass) {
this.sclass = sclass;
}
public Student(Integer sno, String sname, Integer sage, String ssex, String smajor, String sclass) {
this.sno = sno;
this.sname = sname;
this.sage = sage;
this.ssex = ssex;
this.smajor = smajor;
this.sclass = sclass;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student{" +
"sno=" + sno +
", sname='" + sname + '\'' +
", sage=" + sage +
", ssex='" + ssex + '\'' +
", smajor='" + smajor + '\'' +
", sclass='" + sclass + '\'' +
"}";
}
}
数据库连接测试类
package ceshi;
import ceshi.Student;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* 操作数据库的类
*/
public class StudentDb {
//写一个获取mysql数据库连接的函数
/**
* 函数功能:获取数据库连接对象
* @return 返回数据库连接对象
* 使用说明:提前知道获取数据库连接对象时所需要的四大参数
* 1、驱动类的名称(数据库不同,驱动类的名称不同)
* 2、数据库的URL
* 3、使用数据库时的用户名
* 4、用户名对应的密码
* 一定要导入相对应的jar包
*/
private static Connection getConn(){
//第一步:加载驱动类(如果有异常,则抛出异常或者使用try..catch..语句块处理)
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("驱动类加载失败。");
/**
* 这里可能报错:ClassNotFoundException
* 错误原因:可能是驱动类的名称拼写错误,也可能是所需要的jar包没有导入
*/
}
//第二步:获取连接对象
String url = "jdbc:mysql://localhost:3307/xsgl324";
String username = "root";
String password = "1234";
Connection conn = null;
try {
conn = DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("连接对象获取失败。");
}
//返回一个连接对象
return conn;
}
/**
* 函数功能:通过查询语句来获取数据库中的表格信息
* @param sql
* @return 返回一个List对象
* @throws SQLException
*/
public List<Student> getStudent(String sql) throws SQLException {
//查询语句的执行结果为一个表格,即多个学生对象的集合,所有可以创建数组列表对象来存储
List<Student> lst = new ArrayList<Student>();
//获取连接对象
Connection conn = getConn();
try {
//连接对象conn调用createStatement()方法,创建一个执行SQL语句的对象st
Statement st = conn.createStatement();
//执行SQL语句的对象st调用executeQuery()方法,执行查询语句,将查询到的结果返回到一个结果集中
ResultSet rs = st.executeQuery(sql);
//遍历结果集对象
while(rs.next()){
Student stu = new Student();
stu.setSno(rs.getInt("sno"));
stu.setSname(rs.getString("sname"));
stu.setSage(rs.getInt("sage"));
stu.setSsex(rs.getString("ssex"));
stu.setSmajor(rs.getString("smajor"));
stu.setSclass(rs.getString("sclass"));
lst.add(stu);
}
}catch (Exception e){
System.out.println(e.getMessage());
}finally {
//资源使用完之后,如果没有关闭,则需要关闭
if (conn!=null){
conn.close();
}
}
return lst;
}
/**
* 函数功能:对表中数据进行增删改操作
* @param sql
* @return true或者false
* @throws SQLException
*/
public boolean studentUpdate(String sql) throws SQLException {
//获取数据库连接对象
Connection conn = getConn();
try {
//连接对象调用createStatement()方法,创建一个执行SQL语句的对象
Statement st = conn.createStatement();
//执行SQL语句的对象st,调用executeUpdate()方法执行SQL语句,执行结果为int类型,表示受到影响的记录条数
//executeUpdate( )方法可以执行增删改DML语句和创建表、删除表等DDL语句
int cnt = st.executeUpdate(sql);
return cnt>0; //如果有记录受到影响,则表示更新操作成功
}catch (Exception e){
System.out.println(e.getMessage());
return false;
}finally {
if (conn!=null)
conn.close();
}
}
//测试一下
public static void main(String[] args) throws SQLException {
List<Student> lst = new ArrayList<Student>();
lst=(new StudentDb()).getStudent("select * from student");
for (Student stu: lst) {
//调用Student实体类中的toString()方法,将Student对象转换成字符串输出
System.out.println(stu.toString());
}
boolean tf =(new StudentDb()).studentUpdate("update student set sage=24 where sno = 10002");
lst=(new StudentDb()).getStudent("select * from student");
for (Student stu: lst) {
//调用Student实体类中的toString()方法,将Student对象转换成字符串输出
System.out.println(stu.toString());
}
}
}
学生信息界面
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
public class StudentInfoManagement extends JFrame {
private JPanel roleSelectionPanel;
private JButton adminButton;
private JButton studentButton;
private HashMap<String, Student> studentMap = new HashMap<>();
public StudentInfoManagement() {
setTitle("Student Info Management");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
roleSelectionPanel = new JPanel();
roleSelectionPanel.setLayout(new GridLayout(3, 1));
JLabel label = new JLabel("请选择角色");
label.setHorizontalAlignment(SwingConstants.CENTER);
roleSelectionPanel.add(label);
adminButton = new JButton("管理员");
adminButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showAdminStudentEntry();
}
});
studentButton = new JButton("学生");
studentButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showStudentInfoUpdate();
}
});
roleSelectionPanel.add(adminButton);
roleSelectionPanel.add(studentButton);
getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
}
private void showAdminStudentEntry() {
JTextField studentNameField = new JTextField(20);
JTextField studentIdField = new JTextField(10);
JTextField studentMajorField = new JTextField(20);
JTextField studentPhoneNumberField = new JTextField(15);
JPanel adminPanel = new JPanel();
adminPanel.setLayout(new GridLayout(4, 2));
adminPanel.add(new JLabel("学生姓名:"));
adminPanel.add(studentNameField);
adminPanel.add(new JLabel("学生学号:"));
adminPanel.add(studentIdField);
adminPanel.add(new JLabel("学生专业:"));
adminPanel.add(studentMajorField);
adminPanel.add(new JLabel("电话号码:"));
adminPanel.add(studentPhoneNumberField);
int result = JOptionPane.showConfirmDialog(null, adminPanel, "管理员录入学生信息", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String name = studentNameField.getText();
String id = studentIdField.getText();
String major = studentMajorField.getText();
String phoneNumber = studentPhoneNumberField.getText();
Student student = new Student(name, id, major, phoneNumber);
studentMap.put(id, student);
JOptionPane.showMessageDialog(null, "录入成功!");
}
}
private void showStudentInfoUpdate() {
JComboBox<String> studentComboBox = new JComboBox<>(studentMap.keySet().toArray(new String[0]));
JTextField phoneNumberField = new JTextField(15);
JPanel studentPanel = new JPanel();
studentPanel.setLayout(new GridLayout(2, 2));
studentPanel.add(new JLabel("选择学生:"));
studentPanel.add(studentComboBox);
studentPanel.add(new JLabel("新电话号码:"));
studentPanel.add(phoneNumberField);
int result = JOptionPane.showConfirmDialog(null, studentPanel, "学生信息修改", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String selectedStudentId = (String) studentComboBox.getSelectedItem();
Student student = studentMap.get(selectedStudentId);
String newPhoneNumber = phoneNumberField.getText();
student.setPhoneNumber(newPhoneNumber);
JOptionPane.showMessageDialog(null, "修改成功!");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
StudentInfoManagement studentInfoManagement = new StudentInfoManagement();
studentInfoManagement.setVisible(true);
}
});
}
private class Student {
private String name;
private String id;
private String major;
private String phoneNumber;
public Student(String name, String id, String major, String phoneNumber) {
this.name = name;
this.id = id;
this.major = major;
this.phoneNumber = phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
}
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class StudentInfoPage {
// 定义文本字段和按钮
private JTextField nameField;
private JTextField contactField;
private JPasswordField passwordField;
private JButton saveButton;
public static void openStudentInfoPage() {
// 创建JFrame窗口
JFrame studentFrame = new JFrame("学生信息页面");
studentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
studentFrame.setSize(400, 300);
// 创建面板
JPanel panel = new JPanel();
studentFrame.getContentPane().add(panel);
// 设置布局为网格布局
panel.setLayout(new GridLayout(4, 2));
// 添加标签和文本字段
JLabel nameLabel = new JLabel("姓名:");
panel.add(nameLabel);
JTextField nameField = new JTextField();
panel.add(nameField);
JLabel contactLabel = new JLabel("联系信息:");
panel.add(contactLabel);
JTextField contactField = new JTextField();
panel.add(contactField);
JLabel passwordLabel = new JLabel("登录密码:");
panel.add(passwordLabel);
JPasswordField passwordField = new JPasswordField();
panel.add(passwordField);
// 添加保存按钮并注册事件监听器
JButton saveButton = new JButton("保存");
panel.add(saveButton);
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 在这里处理保存按钮的点击事件
String name = nameField.getText();
String contact = contactField.getText();
String password = new String(passwordField.getPassword());
// 执行保存操作,可以调用适当的方法进行数据存储等操作
// 提示保存成功或失败信息
JOptionPane.showMessageDialog(null, "个人信息保存成功!");
}
});
// 显示窗口
studentFrame.setVisible(true);
}
}
登录界面
package ceshi;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import ceshi.AccountApplicationGUI;
import ceshi.zhujiemian;
import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import ceshi.AdminInfoPage;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//登录界面
public class StudentManagementSystem {
protected static final String DB_URL = "jdbc:mysql://localhost:3307/xsgl324";
protected static final String DB_USER = "root";
protected static final String DB_PASSWORD = "1234";
public static void main(String[] args) {
// 创建JFrame窗口
JFrame frame = new JFrame("学生管理系统");
frame.setIconImage(Toolkit.getDefaultToolkit().getImage(StudentManagementSystem.class.getResource("/image/key.png")));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(381, 311);
// 创建用户名标签和文本字段
JLabel usernameLabel = new JLabel("用户名:");
usernameLabel.setBounds(21, 5, 78, 32);
usernameLabel.setIcon(new ImageIcon(StudentManagementSystem.class.getResource("/image/学生信息.png")));
JTextField usernameField = new JTextField(20);
usernameField.setBounds(104, 10, 126, 21);
frame.getContentPane().setLayout(null);
frame.getContentPane().add(usernameLabel);
frame.getContentPane().add(usernameField);
// 创建密码标签和密码字段
JLabel passwordLabel = new JLabel("密码:");
passwordLabel.setIcon(new ImageIcon(StudentManagementSystem.class.getResource("/image/key.png")));
passwordLabel.setBounds(21, 57, 78, 32);
frame.getContentPane().add(passwordLabel);
JPasswordField passwordField_1 = new JPasswordField();
passwordField_1.setBounds(104, 63, 126, 26);
frame.getContentPane().add(passwordField_1);
String[] roles = { "学生", "教师", "管理员" };
JComboBox<String> comboBox = new JComboBox<>(roles);
comboBox.setEditable(true);
comboBox.setBounds(104, 123, 109, 27);
frame.getContentPane().add(comboBox);
// 创建登录按钮
JButton loginButton = new JButton("登录");
loginButton.setBounds(41, 188, 91, 32);
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
String password = new String(passwordField_1.getPassword());
String role = (String) comboBox.getSelectedItem();
handleLogin(username, password, role);
zhujiemian.createAndShowGUI();
}
});
frame.getContentPane().add(loginButton);
// 创建取消按钮
JButton cancelButton = new JButton("取消");
cancelButton.setBounds(225, 188, 91, 32);
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleCancel();
}
});
frame.getContentPane().add(cancelButton);
// 创建注册按钮
JButton registerButton = new JButton("注册");
registerButton.setBounds(135, 232, 78, 32);
registerButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleRegister();
}
});
frame.getContentPane().add(registerButton);
JLabel lblNewLabel = new JLabel("角色:\r\n");
lblNewLabel.setIcon(new ImageIcon(ww.class.getResource("/image/学生信息.png")));
lblNewLabel.setBounds(21, 118, 78, 32);
frame.getContentPane().add(lblNewLabel);
// 显示窗口
frame.setVisible(true);
}
public static void handleLogin(String username, String password, String role) {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
// 连接数据库
connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
System.out.println("成功连接数据库");
// 查询数据库中的用户表,验证用户名、密码和角色是否匹配
String sql = "SELECT * FROM user WHERE username = ? AND password = ? AND role = ?";
statement = connection.prepareStatement(sql);
statement.setString(1, username);
statement.setString(2, password);
statement.setString(3, role);
resultSet = statement.executeQuery();
if (resultSet.next()) {
System.out.println(role + "登录成功");
// 根据角色进行跳转
switch (role) {
case "学生":
zhujiemian.createAndShowGUI(); // 跳转到学生主界面
break;
case "教师":
zhujiemian.createAndShowGUI(); // 跳转到教师主界面
break;
case "管理员":
zhujiemian.createAndShowGUI();
break;
}
} else {
System.out.println("用户名、密码或角色不正确");
}
} catch (SQLException ex) {
System.out.println("登录时发生数据库错误: " + ex.getMessage());
ex.printStackTrace();
} finally {
// 关闭数据库连接等资源
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException ex) {
System.out.println("关闭数据库连接时发生错误: " + ex.getMessage());
ex.printStackTrace();
}
}
}
public static void createAndShowGUI() {
System.out.println("跳转到主界面");
zhujiemian Zhujiemian = new zhujiemian();
Zhujiemian.setVisible(true);
}
public static void handleCancel() {
System.out.println("已取消操作");
}
public static void handleRegister() {
System.out.println("跳转到注册界面");
// 创建 AccountApplicationGUI 实例并显示界面
AccountApplicationGUI accountApplicationGUI = new AccountApplicationGUI();
accountApplicationGUI.setVisible(true);
}
public static void performRegistration(String newUsername, String newPassword, String newRole) {
Connection connection = null;
PreparedStatement statement = null;
try {
// 连接数据库
connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
System.out.println("成功连接数据库");
// 插入新用户信息到user表
String sql = "INSERT INTO user (username, password, role) VALUES (?, ?, ?)";
statement = connection.prepareStatement(sql);
statement.setString(1, newUsername);
statement.setString(2, newPassword);
statement.setString(3, newRole);
int rowsAffected = statement.executeUpdate();
if (rowsAffected > 0) {
System.out.println("注册成功");
} else {
System.out.println("注册失败");
}
} catch (SQLException ex) {
System.out.println("注册时发生数据库错误: " + ex.getMessage());
ex.printStackTrace();
} finally {
// 关闭数据库连接等资源
try {
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException ex) {
System.out.println("关闭数据库连接时发生错误: " + ex.getMessage());
ex.printStackTrace();
}
}
}
}
其他
package ceshi;
public class teacher {
private Integer tno;
private String tname;
private String tsex;
private String dept;
public Integer getTno() {
return tno;
}
public String getTname() {
return tname;
}
public String getTsex() {
return tsex;
}
public String getDept() {
return dept;
}
public void setTno(Integer tno) {
this.tno = tno;
}
public void setSname(String tname) {
this.tname = tname;
}
public void setTsex(String tsex) {
this.tsex = tsex;
}
public void setDept(String dept) {
this.dept = dept;
}
public teacher(Integer tno, String tname, String tsex, String dept) {
this.tno = tno;
this.tname = tname;
this.tsex = tsex;
this.dept = dept;
}
public teacher() {
super();
}
@Override
public String toString() {
return "teacher{" +
"tno=" + tno +
", tname='" + tname + '\'' +
", tsex='" + tsex + '\'' +
",dept='" + dept + '\'' +
"}";
}
}
教师信息界面
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
public class TeacherInfoManagement extends JFrame {
private JPanel roleSelectionPanel;
private JButton adminButton;
private JButton teacherButton;
private HashMap<String, Teacher> teacherMap = new HashMap<>();
public TeacherInfoManagement() {
setTitle("Teacher Info Management");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
roleSelectionPanel = new JPanel();
roleSelectionPanel.setLayout(new GridLayout(3, 1));
JLabel label = new JLabel("请选择角色");
label.setHorizontalAlignment(SwingConstants.CENTER);
roleSelectionPanel.add(label);
adminButton = new JButton("管理员");
adminButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showAdminTeacherEntry();
}
});
teacherButton = new JButton("教师");
teacherButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showTeacherInfoUpdate();
}
});
roleSelectionPanel.add(adminButton);
roleSelectionPanel.add(teacherButton);
getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
}
private void showAdminTeacherEntry() {
JTextField teacherNameField = new JTextField(20);
JTextField teacherIdField = new JTextField(10);
JTextField teacherEmailField = new JTextField(20);
JTextField teacherDepartmentField = new JTextField(20);
JTextField teacherPhoneNumberField = new JTextField(15);
JPanel adminPanel = new JPanel();
adminPanel.setLayout(new GridLayout(5, 2));
adminPanel.add(new JLabel("教师姓名:"));
adminPanel.add(teacherNameField);
adminPanel.add(new JLabel("教师工号:"));
adminPanel.add(teacherIdField);
adminPanel.add(new JLabel("教师邮箱:"));
adminPanel.add(teacherEmailField);
adminPanel.add(new JLabel("教师部门:"));
adminPanel.add(teacherDepartmentField);
adminPanel.add(new JLabel("电话号码:"));
adminPanel.add(teacherPhoneNumberField);
int result = JOptionPane.showConfirmDialog(null, adminPanel, "管理员录入教师信息", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String name = teacherNameField.getText();
String id = teacherIdField.getText();
String email = teacherEmailField.getText();
String department = teacherDepartmentField.getText();
String phoneNumber = teacherPhoneNumberField.getText();
Teacher teacher = new Teacher(name, id, email, department, phoneNumber);
teacherMap.put(id, teacher);
JOptionPane.showMessageDialog(null, "录入成功!");
}
}
private void showTeacherInfoUpdate() {
JComboBox<String> teacherComboBox = new JComboBox<>(teacherMap.keySet().toArray(new String[0]));
JTextField emailField = new JTextField(20);
JTextField phoneNumberField = new JTextField(15);
JPanel teacherPanel = new JPanel();
teacherPanel.setLayout(new GridLayout(3, 2));
teacherPanel.add(new JLabel("选择教师:"));
teacherPanel.add(teacherComboBox);
teacherPanel.add(new JLabel("新邮箱:"));
teacherPanel.add(emailField);
teacherPanel.add(new JLabel("新电话号码:"));
teacherPanel.add(phoneNumberField);
int result = JOptionPane.showConfirmDialog(null, teacherPanel, "教师信息修改", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String selectedTeacherId = (String) teacherComboBox.getSelectedItem();
Teacher teacher = teacherMap.get(selectedTeacherId);
String newEmail = emailField.getText();
String newPhoneNumber = phoneNumberField.getText();
teacher.setEmail(newEmail);
teacher.setPhoneNumber(newPhoneNumber);
JOptionPane.showMessageDialog(null, "修改成功!");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
TeacherInfoManagement teacherInfoManagement = new TeacherInfoManagement();
teacherInfoManagement.setVisible(true);
}
});
}
private class Teacher {
private String name;
private String id;
private String email;
private String department;
private String phoneNumber;
public Teacher(String name, String id, String email, String department, String phoneNumber) {
this.name = name;
this.id = id;
this.email = email;
this.department = department;
this.phoneNumber = phoneNumber;
}
public void setEmail(String email) {
this.email = email;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
}
package ceshi;
public class TeacherInfoPage {
public static void openTeacherInfoPage() {
// TODO Auto-generated method stub
}
}
数据库用户登录账号密码
package ceshi;
public class User {
private String username;
private Integer password;
private String role;
public String userSname() {
return username;
}
public Integer getPassword() {
return password;
}
public String getRole() {
return role;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(Integer password) {
this.password = password;
}
public void setRole(String role) {
this.role=role;
}
public User(String username, Integer password, String role) {
this.username = username;
this.password = password;
this.role = role;
}
public User() {
super();
}
@Override
public String toString() {
return "User{" +
"username=" + username +
",password='" + password + '\'' +
", role='" + role + '\'' +
"}";
}
public String getUsername() {
// TODO Auto-generated method stub
return null;
}
}
package ceshi;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.SwingUtilities;
public class ww {
/**
* @wbp.parser.entryPoint
*/
/**
* @wbp.parser.entryPoint
*/
public static void createAndShowGUI() {
JFrame frame = new JFrame();
frame.setBackground(new Color(128, 255, 255));
frame.setIconImage(Toolkit.getDefaultToolkit().getImage(ww.class.getResource("/image/学生信息.png")));
frame.getContentPane().setEnabled(false);
frame.setTitle("学生信息管理系统");
frame.getContentPane().setBackground(SystemColor.inactiveCaption);
frame.getContentPane().setLayout(new BorderLayout(0, 0));
JPanel optionsPanel = new JPanel();
optionsPanel.setBackground(new Color(240, 240, 240));
frame.getContentPane().add(optionsPanel, BorderLayout.WEST);
optionsPanel.setLayout(new GridLayout(7, 1, 0, 10));
JButton btnNewButton = new JButton("学生信息");
btnNewButton.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton.setIcon(new ImageIcon(ww.class.getResource("/image/学生信息.png")));
optionsPanel.add(btnNewButton);
JButton btnNewButton_1 = new JButton("教师信息");
btnNewButton_1.setIcon(new ImageIcon(ww.class.getResource("/image/教师信息.png")));
btnNewButton_1.setFont(new Font("宋体", Font.PLAIN, 24));
optionsPanel.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("论坛");
btnNewButton_2.setIcon(new ImageIcon(ww.class.getResource("/image/论坛.png")));
btnNewButton_2.setFont(new Font("宋体", Font.PLAIN, 24));
optionsPanel.add(btnNewButton_2);
JButton btnNewButton_3 = new JButton("评价");
btnNewButton_3.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
btnNewButton_3.setFont(new Font("宋体", Font.PLAIN, 24));
optionsPanel.add(btnNewButton_3);
JButton btnNewButton_4 = new JButton("课程信息");
btnNewButton_4.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton_4.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
optionsPanel.add(btnNewButton_4);
JButton btnNewButton_5 = new JButton("选课系统");
btnNewButton_5.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton_5.setIcon(new ImageIcon(ww.class.getResource("/image/cart.png")));
optionsPanel.add(btnNewButton_5);
JButton btnNewButton_6 = new JButton("授课系统");
btnNewButton_6.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton_6.setIcon(new ImageIcon(ww.class.getResource("/image/bell.png")));
optionsPanel.add(btnNewButton_6);
JPanel contentPanel = new JPanel();
contentPanel.setBackground(Color.WHITE);
frame.getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(new BorderLayout(0, 0));
frame.setBounds(100, 100, 784, 531);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
教务系统主界面
package ceshi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class zhujiemian {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGUI());
}
public static void createAndShowGUI() {
JFrame frame = new JFrame();
frame.setBackground(new Color(128, 255, 255));
frame.setIconImage(Toolkit.getDefaultToolkit().getImage(ww.class.getResource("/image/学生信息.png")));
frame.getContentPane().setEnabled(false);
frame.setTitle("学生信息管理系统");
frame.getContentPane().setBackground(SystemColor.inactiveCaption);
frame.getContentPane().setLayout(new BorderLayout(0, 0));
JPanel optionsPanel = new JPanel();
optionsPanel.setBackground(new Color(240, 240, 240));
frame.getContentPane().add(optionsPanel, BorderLayout.WEST);
optionsPanel.setLayout(new GridLayout(7, 1, 0, 10));
JButton btnNewButton = new JButton("学生信息");
btnNewButton.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton.setIcon(new ImageIcon(ww.class.getResource("/image/学生信息.png")));
optionsPanel.add(btnNewButton);
JButton btnNewButton_1 = new JButton("教师信息");
btnNewButton_1.setIcon(new ImageIcon(ww.class.getResource("/image/教师信息.png")));
btnNewButton_1.setFont(new Font("宋体", Font.PLAIN, 24));
optionsPanel.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("论坛");
btnNewButton_2.setIcon(new ImageIcon(ww.class.getResource("/image/论坛.png")));
btnNewButton_2.setFont(new Font("宋体", Font.PLAIN, 24));
optionsPanel.add(btnNewButton_2);
JButton btnNewButton_3 = new JButton("评价");
btnNewButton_3.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
btnNewButton_3.setFont(new Font("宋体", Font.PLAIN, 24));
optionsPanel.add(btnNewButton_3);
JButton btnNewButton_4 = new JButton("课程信息");
btnNewButton_4.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton_4.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
optionsPanel.add(btnNewButton_4);
JButton btnNewButton_5 = new JButton("选课系统");
btnNewButton_5.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton_5.setIcon(new ImageIcon(ww.class.getResource("/image/cart.png")));
optionsPanel.add(btnNewButton_5);
JButton btnNewButton_6 = new JButton("授课系统");
btnNewButton_6.setFont(new Font("宋体", Font.PLAIN, 24));
btnNewButton_6.setIcon(new ImageIcon(ww.class.getResource("/image/bell.png")));
optionsPanel.add(btnNewButton_6);
JPanel contentPanel = new JPanel();
contentPanel.setBackground(Color.WHITE);
frame.getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(new BorderLayout(0, 0));
frame.setBounds(100, 100, 784, 531);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void setVisible(boolean b) {
// TODO Auto-generated method stub
}
}
二、图片资源
三、使用工具
eclipse,MySQL,navicat,eclipse插件Windows builder