本系统主要是为学校的教师和学生提供一个便捷的学生成绩管理系统,它可以帮助教师轻松的管理学生的成绩,学生可以更加方便的查看自己的成绩。
该系统主要功能包括:
1. 教师可以登录系统,添加学生信息,添加学生成绩,删除学生成绩,修改学生成绩,查看学生成绩,查看学生信息,发布成绩通知等功能;
2. 学生可以登录系统,查看自己的成绩,查看成绩通知等功能;
3. 系统还提供教师统计学生成绩的功能,可以根据学生的成绩,统计出学生的成绩等级,以及学生的总体情况等;
本系统将为学校提供一个安全、高效的学生成绩管理系统,以方便教师和学生查看、管理学生成绩。
创建的是普通java项目,连接数据库需要把对应的mysql驱动放在项目文件中
其他的都差不多
就不废话了,记得该数据库的密码,下面是代码
package com.Studentsmanagement;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ScoreManagementUI {
public static void main(String[] args) {
// 创建一个窗口
JFrame frame = new JFrame("学生成绩管理系统");
// 设置默认关闭操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口大小
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
// 创建一个容器
Container container = frame.getContentPane();
// 设置容器布局
container.setLayout(new BorderLayout());
// 创建一个面板
JPanel panel = new JPanel();
// 设置面板布局
panel.setLayout(new GridLayout(3, 2));
// 创建一个标签
JLabel label1 = new JLabel("身份:");
// 创建一个下拉框
String[] identity = new String[]{"教师", "学生"};
JComboBox comboBox = new JComboBox(identity);
// 创建一个标签
JLabel label2 = new JLabel("账号:");
// 创建一个文本框
JTextField Account = new JTextField();
// 创建一个标签
JLabel label3 = new JLabel("密码:");
// 创建一个文本框
JPasswordField passwordField = new JPasswordField();
// 创建一个按钮
JButton button = new JButton("登录");
// 将控件添加到面板中
panel.add(label1);
panel.add(comboBox);
panel.add(label2);
panel.add(Account);
panel.add(label3);
panel.add(passwordField);
// 将面板添加到容器中
container.add(panel, BorderLayout.CENTER);
container.add(button, BorderLayout.SOUTH);
// 给按钮添加事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取身份
String identity = comboBox.getSelectedItem().toString();
// 获取账号
String account = Account.getText();
// 获取密码
String password = String.valueOf(passwordField.getPassword());
// 判断账号密码是否正确
if (identity.equals("教师") && account.equals("teacher") && password.equals("123456")) {
// 如果账号密码正确,则弹出登录成功的提示
JOptionPane.showMessageDialog(frame, "登录成功!");
// 关闭当前窗口
frame.dispose();
// 打开教师管理系统
TeacherManagementSystem teacherManagementSystem = new TeacherManagementSystem();
teacherManagementSystem.teacherManagementSystem();
} else if (identity.equals("学生") && account.equals("student") && password.equals("123456")) {
// 如果账号密码正确,则弹出登录成功的提示
JOptionPane.showMessageDialog(frame, "登录成功!");
// 关闭当前窗口
frame.dispose();
// 打开学生管理系统
StudentManagementSystem studentManagementSystem = new StudentManagementSystem();
studentManagementSystem.studentManagementSystem();
} else {
// 如果账号密码错误,则弹出登录失败的提示
JOptionPane.showMessageDialog(frame, "登录失败!请检查账号密码是否正确");
}
}
});
// 设置窗口可见
frame.setVisible(true);
}
}
class TeacherManagementSystem {
public static void teacherManagementSystem() {
// 创建一个窗口
JFrame frame = new JFrame("教师管理系统");
// 设置默认关闭操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口大小
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
// 创建一个容器
Container container = frame.getContentPane();
// 设置容器布局
container.setLayout(new BorderLayout());
// 创建一个面板
JPanel panel = new JPanel();
// 设置面板布局
panel.setLayout(new GridLayout(5, 1));
// 创建四个按钮
JButton button1 = new JButton("录入成绩");
JButton button2 = new JButton("修改成绩");
JButton button3 = new JButton("统计成绩");
JButton button5 = new JButton("删除成绩");
JButton button4 = new JButton("退出系统");
// 将控件添加到面板中
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button5);
panel.add(button4);
// 将面板添加到容器中
container.add(panel, BorderLayout.CENTER);
// 给按钮添加事件
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 打开录入成绩的窗口
ScoreSystem SSym = new ScoreSystem();
SSym.InputScore();
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 打开修改成绩的窗口
ScoreSystem SSym = new ScoreSystem();
SSym.modifyScore();
}
});
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 打开统计成绩
ScoreSystem SSym = new ScoreSystem();
SSym.statisticalscores();
}
});
button4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 退出
System.exit(0);
}
});
button5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 删除成绩
ScoreSystem SSym = new ScoreSystem();
SSym.deletescore();
}
});
// 设置窗口可见
frame.setVisible(true);
}
}
//学生类
class StudentManagementSystem {
public static void studentManagementSystem() {
// 创建一个窗口
JFrame frame = new JFrame("学生页面");
// 设置默认关闭操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口大小
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
// 创建一个容器
Container container = frame.getContentPane();
// 设置容器布局
container.setLayout(new BorderLayout());
// 创建一个面板
JPanel panel = new JPanel();
// 设置面板布局
panel.setLayout(new GridLayout(4, 1));
// 创建四个按钮
JButton button3 = new JButton("统计成绩");
JButton button4 = new JButton("退出系统");
// 将控件添加到面板中
panel.add(button3);
panel.add(button4);
// 将面板添加到容器中
container.add(panel, BorderLayout.CENTER);
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 打开统计成绩
ScoreSystem SSym = new ScoreSystem();
SSym.statisticalscores();
}
});
button4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 退出
System.exit(0);
}
});
// 设置窗口可见
frame.setVisible(true);
}
}
package com.Studentsmanagement;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class ScoreSystem {
// 打开录入成绩的窗口
public void InputScore() {
// 创建一个窗口
JFrame frame = new JFrame("成绩录入页");
// 设置默认关闭操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口大小
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
// 创建一个容器
Container container = frame.getContentPane();
// 设置容器布局
container.setLayout(new BorderLayout());
// 创建一个面板
JPanel panel = new JPanel();
// 设置面板布局
panel.setLayout(new GridLayout(7, 2));
// 创建一个标签
JLabel label0 = new JLabel("id:");
// 创建一个文本框
JTextField idBox = new JTextField();
// 创建一个标签
JLabel label1 = new JLabel("学生姓名:");
// 创建一个文本框
JTextField StuNameBox = new JTextField();
// 创建一个标签
JLabel label2 = new JLabel("学生学号:");
// 创建一个文本框
JTextField StuNoBox = new JTextField();
// 创建一个标签
JLabel label3 = new JLabel("学生年龄:");
JTextField StuageBox = new JTextField();
JLabel label4 = new JLabel("课程名称:");
JTextField CourseBox = new JTextField();
JLabel label5 = new JLabel("学生成绩:");
JTextField scoreBox = new JTextField();
JButton button = new JButton("保存");
JButton button2 = new JButton("返回");
// 将控件添加到面板中
panel.add(label0);
panel.add(idBox);
panel.add(label1);
panel.add(StuNameBox);
panel.add(label2);
panel.add(StuNoBox);
panel.add(label3);
panel.add(StuageBox);
panel.add(label4);
panel.add(CourseBox);
panel.add(label5);
panel.add(scoreBox);
panel.add(button);
panel.add(button2);
// 将面板添加到容器中
container.add(panel, BorderLayout.CENTER);
// 给按钮添加事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取学生姓名,学生学号,学生年龄,学生课程名称,学生成绩
String id = idBox.getText();
String Stuname = StuNameBox.getText();
String StuNo = StuNoBox.getText();
String Stuage = StuageBox.getText();
String Course = CourseBox.getText();
String Score = scoreBox.getText();
String type;
// 判断学号是否正确
type = "input";
String inputjudge = sqlconnect(id,Stuname,StuNo,Stuage,Course,Score,type);
if(StuNo.length() == 12 & inputjudge.equals("True"))
JOptionPane.showMessageDialog(frame, "录入成功!");
else {
JOptionPane.showMessageDialog(frame, "录入失败!请检查学号是否正确或者id重叠");
}
}
});
// 给按钮添加事件
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
// 设置窗口可见
frame.setVisible(true);
}
//打开修改成绩窗口
public void modifyScore() {
JFrame frame = new JFrame("修改成绩页");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
// 创建一个容器
Container container = frame.getContentPane();
// 设置容器布局
container.setLayout(new BorderLayout());
// 创建一个面板 输入学生姓名、学号、课程号、成绩
JPanel panel = new JPanel();
// 设置面板布局
panel.setLayout(new GridLayout(5, 2));
// 创建一个标签
JLabel label2 = new JLabel("学生学号:");
// 创建一个文本框
JTextField StuNoBox = new JTextField();
// 创建一个标签
JLabel label4 = new JLabel("课程名称:");
// 创建一个文本框
JTextField courseBox = new JTextField();
// 创建一个标签
JLabel label5 = new JLabel("学生成绩:");
// 创建一个文本框
JTextField scoreBox = new JTextField();
// 创建一个按钮
JButton button = new JButton("保存");
JButton button2 = new JButton("返回");
// 将控件添加到面板中
panel.add(label2);
panel.add(StuNoBox);
panel.add(label4);
panel.add(courseBox);
panel.add(label5);
panel.add(scoreBox);
panel.add(button);
panel.add(button2);
// 将面板添加到容器中
container.add(panel, BorderLayout.CENTER);
// 给按钮添加事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取学生学号
String StuNo = StuNoBox.getText();
// 获取任课老师
String Course = courseBox.getText();
// 获取学生科任老师
String Score = scoreBox.getText();
String type = "update";
String inputjudge = sqlconnect("","",StuNo,"",Course,Score,type);
if(inputjudge.equals("True"))
JOptionPane.showMessageDialog(frame, "修改成功!");
else {
JOptionPane.showMessageDialog(frame, "修改失败!输入学号不正确或未录入");
}
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
// 设置窗口可见
frame.setVisible(true);
}
public void statisticalscores(){
// 创建一个窗口
JFrame frame = new JFrame("成绩统计页");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
// 创建一个容器
Container container = frame.getContentPane();
// 设置容器布局
container.setLayout(new BorderLayout());
// 创建一个面板 输入学号或课程,查询学生成绩
JPanel panel = new JPanel();
// 设置面板布局
panel.setLayout(new GridLayout(5, 2));
// 创建一个标签
JLabel label2 = new JLabel("学生学号:");
// 创建一个文本框
JTextField StuNoBox = new JTextField();
// 创建一个按钮
JButton button = new JButton("查询");
JButton button2 = new JButton("返回");
// 将控件添加到面板中
panel.add(label2);
panel.add(StuNoBox);
panel.add(button);
panel.add(button2);
// 将面板添加到容器中
container.add(panel, BorderLayout.CENTER);
// 给按钮添加事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取学生学号
String StuNo = StuNoBox.getText();
String type = "count";
String inputjudge = sqlconnect("","",StuNo,"","","",type);
if(inputjudge.equals("False"))
JOptionPane.showMessageDialog(frame, "查询失败!输入学号不正确或未录入!");
else{
JOptionPane.showMessageDialog(frame, inputjudge);
}
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
// 设置窗口可见
frame.setVisible(true);
}
public void deletescore(){
// 创建一个窗口
JFrame frame = new JFrame("成绩删除页");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
// 创建一个容器
Container container = frame.getContentPane();
// 设置容器布局
container.setLayout(new BorderLayout());
// 创建一个面板 输入学号或课程,查询学生成绩
JPanel panel = new JPanel();
// 设置面板布局
panel.setLayout(new GridLayout(5, 2));
// 创建一个标签
JLabel label2 = new JLabel("学生学号:");
// 创建一个文本框
JTextField StuNoBox = new JTextField();
// 创建一个按钮
JButton button = new JButton("删除");
JButton button2 = new JButton("返回");
// 将控件添加到面板中
panel.add(label2);
panel.add(StuNoBox);
panel.add(button);
panel.add(button2);
// 将面板添加到容器中
container.add(panel, BorderLayout.CENTER);
// 给按钮添加事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取学生学号
String StuNo = StuNoBox.getText();
String type = "delete";
String inputjudge = sqlconnect("","",StuNo,"","","",type);
if(inputjudge.equals("True"))
JOptionPane.showMessageDialog(frame, "删除成功!");
else{
JOptionPane.showMessageDialog(frame, "删除失败!输入学号不正确或未录入!");
}
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
// 设置窗口可见
frame.setVisible(true);
}
public static String sqlconnect(String id,String Stuname, String StuNo, String Stuage, String Course, String Score, String type){
Connection con;
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
String user = "root";
String password = ;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
if (!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
Statement statement = con.createStatement();
//新建表
String sql = "CREATE TABLE IF NOT EXISTS student(" +
"id char(10) primary key," +
"StuNo char(20) not null," +
"StuName varchar(20) not null," +
"StuAge int not null," +
"Course varchar(20) not null," +
"score int not null);";
statement.executeUpdate(sql);
System.out.println("Create table student successfully");
if(type.equals("input")){
try{
//插入数据
sql = "insert into student(id,StuNo,StuName,StuAge,Course,score) values("+id+","+StuNo+",'"+Stuname+"',"+Stuage+",'"+Course+"',"+Score+");";
statement.executeUpdate(sql);
System.out.println("Insert data successfully");
return "True";
}catch (SQLIntegrityConstraintViolationException e) {
System.out.println("Sorry,This student number already exists!");
e.printStackTrace();
return "False";
}
}
else if(type.equals("update")){
//学号,课,成绩,先查后改
try{
//查数据
sql = "SELECT * FROM student WHERE StuNo LIKE '%"+ StuNo +"%' AND Course LIKE '%"+ Course +"%';";
ResultSet rs = statement.executeQuery(sql);
while(rs.next()){
String stuno = rs.getString("StuNo");
String course = rs.getString("Course");
if(stuno.equals(StuNo) & course.equals(Course)){
sql = "UPDATE student SET Score="+Score+" WHERE StuNo="+StuNo+" AND Course='"+Course+"';";
statement.executeUpdate(sql);
return "True";
}else{
return "False";
}
}
}catch (SQLIntegrityConstraintViolationException e) {
System.out.println("Sorry,This student number already exists!");
e.printStackTrace();
return "False";
}
}else if(type.equals("count")){
//学号,课,先查
try{
//查数据
sql = "SELECT * FROM student WHERE StuNo LIKE '%"+ StuNo +"%';";
ResultSet rs = statement.executeQuery(sql);
String rsoutput = "";
String[] rslist = new String[10];
int i = 0;int number = 0;
while(rs.next()){
i+=1;
rsoutput += rs.getString("id") + " " +
rs.getString("StuNo") + " " +
rs.getString("StuName") + " " +
rs.getString("StuAge") + " " +
rs.getString("Course") + " " +
rs.getString("score")+ "\n";
rslist[0] = rs.getString("StuName");
rslist[i] = rs.getString("score");
}
for(int j=1;j<rslist.length;j++){
if(rslist[j]!=null){
number += Integer.parseInt(rslist[j]);
}
}
rsoutput = rsoutput + rslist[0] + "同学的总分为"+ number + "\n";
if(rslist[0]==null){
return "False";
}else{
return rsoutput;
}
}catch (SQLIntegrityConstraintViolationException e) {
System.out.println("Sorry,This student number already exists!");
e.printStackTrace();
return "False";
}catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}else if(type.equals("delete")){
//学号,课,先查
try{
//查数据
sql = "delete from Student where StuNo = "+StuNo+";";
statement.executeUpdate(sql);
return "True";
}catch (SQLIntegrityConstraintViolationException e) {
System.out.println("Sorry,This student number already exists!");
e.printStackTrace();
return "False";
}catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
else if(type.equals("exit")){
System.exit(0);
}
statement.close();
con.close();
} catch (ClassNotFoundException e) {
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
return "False";
} catch (SQLException e) {
e.printStackTrace();
return "False";
} catch (Exception e) {
e.printStackTrace();
return "False";
}
return "False";
}
}