学生成绩管理系统(逻辑清楚-简单实用)

这篇具有很好参考价值的文章主要介绍了学生成绩管理系统(逻辑清楚-简单实用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、需求分析

1.1、需求分析概述

需求分析是我们在软件开发中的重要环节,是软件开发的第一步也是最基础的环节,这将决定我们所实现的目标以及系统的各个组成部分、各部分的任务职能、以及使用到的数据结构、各个部门之间的组成关系和数据流程,为我们的系统设计打下基础。

1.2、学生管理系统需求分析

1、实现数据的录入(INSERT)、删除(DELETE)、修改(UPDATE)、查找(SELECT)。

2、根据学生姓名查询信息

3、更新学生的班级

4、根据班级编号查询学生信息

5、根据学生id删除学生信息

6、插入学生分数记录

7、修改学生成绩

8、删除学生成绩

9、删除成绩

10、根据班级id查询所有学生的成绩

11、根据班级名称查询班级信息

2、设计思路

1、将数据库中的Student、Classes、Course、Score四张表封装为实体类

2、设计三种Classes、Score、Student对象的工具类,工具类的主要工作就是与数据库进行交互,实现录入(INSERT)、删除(DELETE)、修改(UPDATE)、查找(SELECT)四种操作。

3、主函数实现界面的修饰,根据我们的需求实现对某个对象的具体操作,界面的功能主要是通过调用我们所实现的工具类进行完成操作,所以说,界面能实现哪些功能取决于我们能够在工具类中所能实现哪些功能

2.1、流程图

根据上述系统功能的分析,按照结构化程序设计的要求,得到系统的结构图,如下图所示

学生成绩管理系统(逻辑清楚-简单实用)

 3、详细设计

3.1、设计四张表的实体类

Classes表

学生成绩管理系统(逻辑清楚-简单实用)


public class Classes {
    private int id;
    private String name;
    private String desc;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

Course表

学生成绩管理系统(逻辑清楚-简单实用)


public class Course {
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private int id;
    private String name;
}

Score表

学生成绩管理系统(逻辑清楚-简单实用)


import java.math.BigDecimal;

public class Score {
    private int id;
    private BigDecimal score;
    private int studentId;
    private int courseId;
    private Student student;
    private Course course;


    public Student getStudent() {
        return student;
    }

    @Override
    public String toString() {
        return "Score{" +
                "id=" + id +
                ", score=" + score +
                ", studentId=" + studentId +
                ", courseId=" + courseId +
                '}';
    }

    public void setStudent(Student student) {
        this.student = student;
    }

    public Course getCourse() {
        return course;
    }

    public void setCourse(Course course) {
        this.course = course;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public BigDecimal getScore() {
        return score;
    }

    public void setScore(BigDecimal score) {
        this.score = score;
    }

    public int getStudentId() {
        return studentId;
    }

    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

    public int getCourseId() {
        return courseId;
    }

    public void setCourseId(int courseId) {
        this.courseId = courseId;
    }
}

Student表

学生成绩管理系统(逻辑清楚-简单实用)


public class Student {
    private int id;
    private int sn;
    private String name;
    private String mail;
    private int classId;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getSn() {
        return sn;
    }

    public void setSn(int sn) {
        this.sn = sn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    public int getClassId() {
        return classId;
    }

    public void setClassId(int classId) {
        this.classId = classId;
    }
}

上述四张表在我之前的博客都有创建过,想要了解的可以去看看这所用到的四张表https://blog.csdn.net/m0_53714343/article/details/13105454

3.2、连接数据库的工具类

调用连接数据库工具类,就可以连接到自己的数据库,调用连接数据库之后如何释放资源,关闭连接等方法。


import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtil {
    //定义要返回的对象
    private static DataSource dataSource;
    //关于数据源的配置项
    private static final String URL="jdbc:mysql://localhost:3306/java_4?characterEncoding=utf8&useSSL=false";
    private static final String USER="root";
    private static final String PassWord="qwb251635..";
    //在使用之前要初始化dataSource,写在static静态代码块中让类在加载JVM的时候就完成初始化操作
    static{
        //设置配置参数
        MysqlDataSource mysqlDataSource=new MysqlDataSource();
        mysqlDataSource.setURL(URL);
        mysqlDataSource.setUser(USER);
        mysqlDataSource.setPassword(PassWord);
        dataSource=mysqlDataSource;
    }
    //不允许外部创建这个类的实例,也就是不允许new这个对象
    private DBUtil(){
    };
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
    public static void close(ResultSet resultSet, Statement statement, Connection connection){
        if (resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

3.3、实现三种与数据库交互的工具类

ClassesDao工具类


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class ClassesDao {
    /**
     * 根据班级名称查询班级信息
     * @param className 班级名称
     * @return 班级信息
     */
    public Classes selectByName(String className){
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet resultSet=null;


        try {
            //获取连接对象
            connection= DBUtil.getConnection();
            //构建sql语句
            String sql="select id,name,`desc` from classes where name=?";
            //获取预处理对象
            statement = connection.prepareStatement(sql);
            //将占位符替换为真实值
            statement.setString(1, className);
            //执行sql并获取返回结果
            resultSet=statement.executeQuery();
            //处理返回结果,构造最终返回对象
            Classes result=null;
            if(resultSet.next()){
                if(result==null){
                    result=new Classes();
                }
                //设置属性的值
                result.setId(resultSet.getInt(1));
                result.setName(resultSet.getString(2));
                result.setDesc(resultSet.getString(3));
            }
            //返回结果
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            //释放资源,关闭连接
            DBUtil.close(resultSet,statement,connection);
        }
        //返回结果
        return null;
    }
}

ScoreDao工具类


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 ScoreDao {
    /**
     * 插入学生分数记录
     *
     * @param score
     */
    public void insert(Score score) {
        Connection connection = null;
        PreparedStatement statement = null;
        try {
            //获取连接对象
            connection = DBUtil.getConnection();
            //构造sql语句
            String sql = "insert into score values(?,?,?)";
            //获取预处理对象
            statement = connection.prepareStatement(sql);
            //替换占位符
            statement.setBigDecimal(1, score.getScore());
            statement.setInt(2, score.getStudentId());
            statement.setInt(3, score.getCourseId());
            //执行sql语句,并获取返回结果
            int result = statement.executeUpdate();
            if (result > 0) {
                System.out.println("添加学生信息成功!!!");
            } else {
                System.out.println("执行指令失败!!!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源,关闭连接
            DBUtil.close(null, statement, connection);
        }
    }

    /**
     * 修改学生成绩
     *
     * @param score
     */
    public void update(Score score) {
        Connection connection = null;
        PreparedStatement statement = null;
        try {
            //获取数据库连接对象
            connection = DBUtil.getConnection();
            //构造sql语句
            String sql = "update score set score=? where student_id=? and course_id=?";
            //获取预处理对象
            statement = connection.prepareStatement(sql);
            //替换占位符
            statement.setBigDecimal(1, score.getScore());
            statement.setInt(2, score.getStudentId());
            statement.setInt(3, score.getCourseId());
            //执行sql语句
            int result = statement.executeUpdate();
            if (result > 0) {
                System.out.println("修改学生成绩成功!!!");
            } else {
                System.out.println("执行指令失败!!!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, statement, connection);
        }
    }

    /**
     * 删除学生成绩
     *
     * @param score
     */
    public void delete(Score score) {
        Connection connection = null;
        PreparedStatement statement = null;
        try {
            //获取数据库连接对象
            connection = DBUtil.getConnection();
            //构造sql语句
            String sql = "delete from score where student_id=? and course_id=?";
            //获取预处理对象
            statement = connection.prepareStatement(sql);
            //替换占位符
            statement.setInt(1, score.getStudentId());
            statement.setInt(2, score.getCourseId());
            //执行sql语句
            int result = statement.executeUpdate();
            if (result > 0) {
                System.out.println("删除成功, studentId = " + score.getStudentId() + ", classesId = " + score.getCourseId() + ".");
            } else {
                System.out.println("执行指令失败!!!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, statement, connection);
        }
    }
    /**
     * 删除成绩
     * @param studentId 学生编号
     * @param courseId 课程编号
     */
    public void deleteByStudentIdAndClassesId (int studentId, int courseId) {
        Connection connection = null;
        PreparedStatement statement = null;

        try {
            // 获取数据库连接
            connection = DBUtil.getConnection();
            // 定义SQL语句
            String sql = "delete from score where student_id = ? and course_id = ?";
            // 获取预处理对象
            statement = connection.prepareStatement(sql);
            // 替换占位符
            statement.setInt(1, studentId);
            statement.setInt(2, courseId);
            // 执行SQL获取结果
            int result = statement.executeUpdate();
            if (result > 0) {
                System.out.println("删除成功, studentId = " + studentId + ", classesId = " + courseId + ".");
            } else {
                System.out.println("删除失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 根据班级id查询所有学生的成绩
     *
     * @param classesId
     * @return
     */
    public List<Score> selectByClassesId(int classesId) {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        //返回结果
        List<Score> result = null;
        try {
            connection = DBUtil.getConnection();
            //构造sql语句
            String sql = "select s.score,s.student_id,s.course_id,stu.id,stu.sn,stu.name,co.id,co.name from classes c,student stu,Course co,score s where c.id=stu.classes_id and stu.id=s.student_id and s.course_id=co.id and c.id=?";
            //执行sql语句
            connection.prepareStatement(sql);
            //替换占位符
            statement.setInt(1, classesId);
            //获取返回结果集
            resultSet = statement.executeQuery();
            if (resultSet.next()) {
                if (result == null) {
                    result = new ArrayList<>();
                }
                //构建Score对象
                Score score = new Score();
                score.setScore(resultSet.getBigDecimal(1));
                score.setStudentId(resultSet.getInt(2));
                score.setCourseId(resultSet.getInt(3));
                //关联学生对象
                Student student = new Student();
                student.setId(resultSet.getInt(4));
                student.setSn(resultSet.getInt(5));
                student.setName(resultSet.getString(6));
                score.setStudent(student);
                // 关联课程对象
                Course course = new Course();
                course.setId(resultSet.getInt(7));
                course.setName(resultSet.getString(8));
                score.setCourse(course);
                // 加入到返回的结果集合
                result.add(score);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            DBUtil.close(resultSet,statement,connection);
        }
        return result;
    }
}

StudentDao工具类


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 StudentDao {
    /**
     * 新增学生信息
     * @param student
     * @return
     */
    public int insert(Student student){
        Connection connection=null;
        PreparedStatement statement=null;
        int result=0;
        try {
            //建立数据库连接
            connection= DBUtil.getConnection();
            //构造SQL语句
            String sql="insert into student (sn,name,qq_mail,classes_id) values(?,?,?,?)";
            //获取预处理对象
            statement=connection.prepareStatement(sql);
            //替换占位符
            statement.setInt(1,student.getSn());
            statement.setString(2, student.getName());
            statement.setString(3, student.getMail());
            statement.setInt(4,student.getClassId());
            //执行sql语句,返回结果
            result=statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DBUtil.close(null,statement,connection);
        }
        return result;
    }

    /**
     * 根据学生姓名查询信息
     * @param name
     * @return
     */
    public List<Student> selectByName(String name){
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet resultSet=null;
        List<Student> result=null;
        try {
            //建立数据库连接
            connection=DBUtil.getConnection();
            //构造sql语句
            String sql="select * from student where name=?";
            //获取预处理对象
            statement=connection.prepareStatement(sql);
            //替换占位符
            statement.setString(1,name);
            resultSet = statement.executeQuery();
            while(resultSet.next()){
                //第一次进来时先判断集合是否为空,为空就创建一个
                if(result==null){
                    result=new ArrayList<>();
                }
                //构造学生对象
                Student student=new Student();
                student.setId(resultSet.getInt(1));
                student.setSn(resultSet.getInt(2));
                student.setName(resultSet.getString(3));
                student.setMail(resultSet.getString(4));
                student.setClassId(resultSet.getInt(5));
                //把学生对象加入集合中
                result.add(student);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DBUtil.close(resultSet,statement,connection);
        }
        //返回查询结果
        return result;
    }

    /**
     * 更新学生的班级
     * @param studentId 学生班级号
     * @param classesId 班级编号
     * @return
     */
    public int updateClassId(int studentId,int classesId){
        Connection connection=null;
        PreparedStatement statement=null;
        int result=0;
        try {
            //建立连接
            connection=DBUtil.getConnection();
            //构建sql语句
            String sql="update student set classes_id=? where id=?";
            //获取预处理对象
            statement=connection.prepareStatement(sql);
            //替换占位符
            statement.setInt(1,classesId);
            statement.setInt(2,studentId);
            //执行sql并返回结果
            result =statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DBUtil.close(null,statement,connection);
        }
        return result;
    }

    /**
     * 根据班级编号查询学生信息
     * @param classesId
     * @return
     */
    public List<Student> selectByClassId(int classesId){
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet resultSet=null;
        List<Student> result=null;
        try {
            //建立数据库连接
            connection=DBUtil.getConnection();
            //构造sql语句
            String sql="select * from student where classes_id=?";
            //获取预处理对象
            statement=connection.prepareStatement(sql);
            //替换占位符
            statement.setInt(1,classesId);
            //执行sql语句,并返回结果
            resultSet=statement.executeQuery();
            while(resultSet.next()){
                //判断返回数据集是否为空
                if(result==null){
                    result =new ArrayList<>();
                }
                //创建学生对象
                Student student=new Student();
                student.setId(resultSet.getInt(1));
                student.setSn(resultSet.getInt(2));
                student.setName(resultSet.getString(3));
                student.setMail(resultSet.getString(4));
                student.setClassId(resultSet.getInt(5));
                //把学生对象加入集合中
                result.add(student);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DBUtil.close(resultSet,statement,connection);
        }
        //返回结果集
        return result;
    }

    /**
     * 根据学生id删除学生信息
     * @param id
     * @return
     */
    public int deleteId(int id){
        Connection connection=null;
        PreparedStatement statement=null;
        int result = 0;
        try {
            //连接数据库
            connection=DBUtil.getConnection();
            //构建sql语句
            String sql="delete from student where id=?";
            //获取预处理对象
            statement= connection.prepareStatement(sql);
            //替换占位符
            statement.setInt(1,id);
            //执行sql,并获取返回结果
            result=statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //返回受影响的行数
        return result;
    }
}

4、实现的界面功能

4.1、指定某个班级新增一位同学


import Dao.Text01.ClassesDao;
import Dao.Text01.StudentDao;
import Model.Text01.Classes;
import Model.Text01.Student;

import java.text.MessageFormat;
import java.util.Scanner;

/**
 * 指定某个班级新增一位同学
 */
public class Exe_01 {
    //按照逻辑顺序一步一步实现功能,遇到需要的数据库操作去工具包Dao中去调用即可
    //先分析需求实现步骤,把能够用到的sql操作语句都实现了
    //最后处理用户交互问题
    public static void main(String[] args) {
        while(true){
            Scanner sc=new Scanner(System.in);
            //1、先让用户输入班级名称
            System.out.println("请输入班级名称:");
            String className=sc.next();
            //根据班级名称去数据库中查询班级编号
            ClassesDao classesDao=new ClassesDao();
            Classes classes= classesDao.selectByName(className);
            //修改错误信息出现的异常
            if(classes==null){
                System.out.println("你要找的班级名称不存在"+className);
                return;
            }
            //处理打印信息
            String classInfo= MessageFormat.format("班级编号:{0}\t班级名称:{1}\t",classes.getId(),classes.getName());
            System.out.println(classInfo);
            //录入学生信息
            System.out.println("============录入学生信息===========");
            System.out.println("请输入学号:");
            int sn=sc.nextInt();
            System.out.println("请输入姓名:");
            String name=sc.next();
            System.out.println("请输入邮箱:");
            String mail=sc.next();
            System.out.println("请输入班级学号:");
            int classes_id=sc.nextInt();
            //将上面获取到的信息封装成学生类
            Student student=new Student();
            student.setSn(sn);
            student.setName(name);
            student.setMail(mail);
            student.setClassId(classes_id);
            //把这个学生对象添加到数据库中
            StudentDao studentDao=new StudentDao();
            int result=studentDao.insert(student);
            //result是数据库返回了更改的行数
            if(result>0){
                System.out.println("新增学生成功!!!"+student.getName());
            }else{
                System.out.println("新增学生失败!!!");
            }
        }
    }
}

4.2、修改指定学生的班级


import Dao.Text01.StudentDao;
import Model.Text01.Student;

import java.text.MessageFormat;
import java.util.List;
import java.util.Scanner;

/**
 * 修改指定学生的班级
 */
public class Exe_02 {
    public static void main(String[] args) {
        //1、先要获取某个同学的信息
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入学生的姓名:");
            String studentName = sc.next();
            //2、根据学生姓名获取详细信息
            StudentDao studentDao = new StudentDao();
            List<Student> students = studentDao.selectByName(studentName);
            //判断获取到的信息是否为空
            if (students == null) {
                System.out.println("非常抱歉,没有找到对应的学生信息:" + studentName);
            }
            //循环打印学生信息
            for (Student student : students) {
                String info = MessageFormat.format("编号:{0}\t| 学号:{1}\t| 姓名:{2}\t| 邮箱:{3}\t| 班级编号:{4}",
                        student.getId(), student.getSn(), student.getName(), student.getMail(), student.getClassId());
                System.out.println(info);
            }
            //获取目标班级的编号
            System.out.println("请输入要调班的学生编号:");
            int studentId = sc.nextInt();
            System.out.println("请输入要调入的目标班级编号:");
            int classesId = sc.nextInt();
            //调用StudentDao工具包中的Update方法,更新学生班级
            int result = studentDao.updateClassId(studentId, classesId);
            if (result > 0) {
                System.out.println("学生调班成功");
            } else {
                System.out.println("调班失败!!");
            }
        }
    }
}

4.3、根据班级名称查询这个班级所有学生


import Dao.Text01.ClassesDao;
import Dao.Text01.StudentDao;
import Model.Text01.Classes;
import Model.Text01.Student;

import java.text.MessageFormat;
import java.util.List;
import java.util.Scanner;

/**
 * 根据班级名称查询这个班级所有学生
 */
public class Exe_03 {
    public static void main(String[] args) {
        while(true){
            Scanner sc=new Scanner(System.in);
            //1、让用户输入班级名称
            System.out.println("请输入班级名称:");
            String className=sc.next();
            //2、根据班级名称去数据库中查询班级编号
            ClassesDao classesDao=new ClassesDao();
            Classes classes=classesDao.selectByName(className);
            //3.修改错误信息出现的空指针异常
            if (classes == null) {
                System.out.println("你要找的班级不存在" + className);
                return;
            }
            //4、获取对应班级的所有学生
            StudentDao studentDao=new StudentDao();
            List<Student> students=studentDao.selectByClassId(classes.getId());
            //5、判断是否为空
            if(students==null){
                System.out.println("没有找到对应班级的学生信息"+className);
            }
            //6、打印结果集
            for (Student student:students) {
                String Info= MessageFormat.format("编号:{0}\t| 学号:{1}\t| 姓名:{2}\t| 邮箱:{3}\t| 班级编号:{4}",
                        student.getId(), student.getSn(), student.getName(), student.getMail(), student.getClassId());
                System.out.println(Info);
            }
        }
    }
}

4.4、删除某个同学的信息


import Dao.Text01.StudentDao;
import Model.Text01.Student;

import java.text.MessageFormat;
import java.util.List;
import java.util.Scanner;

/**
 * 删除某个同学的信息
 */
public class Exe_04 {
    public static void main(String[] args) {
        //先要获取某个同学的信息
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入学生姓名:");
            String studentName = sc.next();
            //校验是否为空
            if (studentName == null || studentName.equals("")) {
                System.out.println("输入学生姓名为空");
                continue;
            }
            //根据学生姓名获取详细信息
            StudentDao studentDao = new StudentDao();
            List<Student> students = studentDao.selectByName(studentName);
            //判断获取学生数据集是否为空
            if (students == null) {
                System.out.println("非常抱歉,没有找到对应的学生信息:studentName" + studentName);
                continue;
            }
            //打印结果集
            for (Student student : students) {
                String Info = MessageFormat.format("编号:{0}\t| 学号:{1}\t| 姓名:{2}\t| 邮箱:{3}\t| 班级编号:{4}",
                        student.getId(), student.getSn(), student.getName(), student.getMail(), student.getClassId());
                System.out.println(Info);
            }
            //让用户输入要删除的学生编号
            System.out.println("请输入要删除的学生编号:");
            int studentId = sc.nextInt();
            int result = studentDao.deleteId(studentId);
            //result是数据库返回的一个更改行数
            if (result > 0) {
                System.out.println("删除学生信息成功!!,id="+studentId+"name ="+studentName);
            } else {
                System.out.println("删除学生信息失败!!,id="+studentId+"name ="+studentName);
            }
        }
    }
}

4.5、修改学生的成绩


import Dao.Text01.ScoreDao;
import Model.Text01.Score;

import java.math.BigDecimal;
import java.util.Scanner;

/**
 * 修改学生的成绩
 */
public class Exe_05 {
    public static void main(String[] args) {
        System.out.println("添加学生成绩");
        System.out.println("==============================");

        while (true) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入学生编号:");
            int studentId = scanner.nextInt();
            System.out.println("请输入课程编号:");
            int courseId = scanner.nextInt();
            System.out.println("请输入分数:");
            BigDecimal score = new BigDecimal(scanner.next());
            // 打印日志
            System.out.println(studentId + "-" + courseId + "-" + score);
            // 构建Score对象
            Score scoreObj = new Score();
            scoreObj.setScore(score);
            scoreObj.setStudentId(studentId);
            scoreObj.setCourseId(courseId);
            // 调和ScoreDao完成插入操作
            ScoreDao scoreDao = new ScoreDao();
            scoreDao.insert(scoreObj);
        }
    }
}

4.6、修改学生的成绩


import Dao.Text01.ScoreDao;
import Model.Text01.Score;

import java.math.BigDecimal;
import java.util.Scanner;

/**
 * 修改学生的成绩
 */
public class Exe_06 {
    public static void main(String[] args) {
        System.out.println("=========== 修改学生成绩 ==========");

        while (true) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入学生Id:");
            int studentId = scanner.nextInt();
            System.out.println("请输入课程Id");
            int courseId = scanner.nextInt();
            System.out.println("请输入成绩:");
            BigDecimal score = new BigDecimal(scanner.next());
            // 调用DAO的更新方法
            Score scoreObj = new Score();
            scoreObj.setScore(score);
            scoreObj.setStudentId(studentId);
            scoreObj.setCourseId(courseId);
            // 执行更新
            ScoreDao scoreDao = new ScoreDao();
            scoreDao.update(scoreObj);
        }
    }
}

4.7、删除某个同学的成绩


import Dao.Text01.ScoreDao;

import java.util.Scanner;

/**
 * 删除某个同学的成绩
 */
public class Exe_07 {
    public static void main(String[] args) {
        System.out.println("============== 删除学生的成绩 ==============");
        while (true) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入学生编号:");
            int studentId = scanner.nextInt();
            System.out.println("请输入课程编号:");
            int courseId = scanner.nextInt();

            // 调用Dao中的删除方法
            ScoreDao scoreDao = new ScoreDao();
            scoreDao.deleteByStudentIdAndClassesId(studentId, courseId);
        }
    }
}

4.8、查询指定班级同学的成绩


public class Exe_08 {
    public static void main(String[] args) {
        System.out.println("=========== 查询指定班级同学的成绩 ===========");
        while (true) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入班级名称:");
            String classesName = scanner.next();
            // 获取班级信息
            ClassesDao classesDao = new ClassesDao();
            Classes classes = classesDao.selectByName(classesName);
            if (classes == null) {
                System.out.println("指定的班级不存在,请检查。班级名 = " + classesName);
                break;
            }
            // 调用ScoreDao查询结果
            ScoreDao scoreDao = new ScoreDao();
            List<Score> scores = scoreDao.selectByClassesId(classes.getId());
            if (scores == null) {
                System.out.println("没有找到班级为:" + classes.getName() + " 的成绩信息.");
                break;
            }
            for (Score score : scores) {
                String str = MessageFormat.format("班级:{0} | 学号:{1} | 姓名:{2} \t| 分数:{3} | 课程:{4}",
                        classes.getName(),
                        score.getStudent().getSn(),
                        score.getStudent().getName(),
                        score.getScore(),
                        score.getCourse().getName());
                System.out.println(str);
            }
            System.out.println("==========================================================");
        }
    }
}

5、总结

我所做的课题学生成绩管理系统部分功能基本完成。其功能基本符合的用户要求,能够对学生成绩的基本信息进行查询、修改、添加、删除。
 文章来源地址https://www.toymoban.com/news/detail-483597.html

到了这里,关于学生成绩管理系统(逻辑清楚-简单实用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生成绩管理系统 002

    学生成绩管理系统  *****************学生成绩管理系统***************** 1、成绩添加 2、成绩输出 3、成绩查询 4、成绩统计 5、成绩排名 6、成绩删除 7、成绩修改 8、成绩按学号排序 0、退出系统 ************************************************** 请选择功能:1 ******************1、成绩添加*********

    2023年04月27日
    浏览(40)
  • Python学生成绩管理系统

    根据项目要求,学生系统成绩管理系统应该具备以下几个功能: (1)系统的登录与注册: (2)学生成绩添加: (3)学生成绩修改: (4)学生成绩删除: (5)学生成绩查询: (6)学生成绩排序及显示: (7)系统退出: 系统主要功能分为三大模块,分别为:系统的登录

    2024年02月03日
    浏览(61)
  • JAVA学生成绩管理系统

    只写了最基本的增删改查,其中可能会有一些没考虑到的地方。结尾有完整代码 首先是main方法 然后是菜单和欢迎页面 1:添加学生信息 2:删除学生信息 3:修改学生信息 4:查询单个学生信息 5:列出所有学生信息 用到的其他方法: 完整发一下代码: 学生类: StudentSystem类

    2024年02月12日
    浏览(47)
  • Java——学生成绩管理系统

    一、项目简介 学生管理系统是一种基于计算机技术实现的学生信息管理工具,能够方便地对学生信息进行录入、查询、修改和删除。该项目采用 Java 语言编写,使用 Spring MVC 框架和 MySQL 数据库,实现了以上所述的主要功能,该学生管理系统可以应用于学校、培训机构、教育

    2024年02月08日
    浏览(42)
  • 学生成绩管理系统——C

    任务描述 相关知识 系统介绍 设计思想 功能描述 功能设计 成绩录入 计算分数 计算每门课程的总分和平均分 成绩排序 选择函数功能排出名次表 成绩查找 按姓名查询学生排名及其考试成绩代码 统计百分比 对每门课程分别统计每个类别的人数以及所占的百分比代码 成绩显示

    2024年02月09日
    浏览(41)
  • java学生成绩管理信息系统

    学生成绩管理信息系统是一个基于Java Swing的桌面应用程序,旨在方便学校、老师和学生对学生成绩进行管理和查询。本文档将提供系统的详细说明,包括系统特性、使用方法和技术实现。 添加学生信息:录入学生基本信息,包括学号、姓名、班级等。 编辑学生信息:修改学

    2024年01月18日
    浏览(49)
  • Java设计学生成绩管理系统

    1.1 题目与要求 设计一个学生成绩排名系统 实现以下功能: (1) 具备对成绩的管理功能(添加、删除、排序); (2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等); (3) 具备按学号、姓名查询成绩的功能; (4) 具备处理解决学号重复问题 ; 备注:成绩记录以下

    2024年02月09日
    浏览(51)
  • 学生成绩管理系统(C++实现)

    实现学生成绩管理系统: 学生信息包括:学号、姓名、性别、年龄、班级等信息。除了包括学生所有信息外,还包括专业、英语、程序设计和高等数学等课程。 设计一程序能够对学生成绩进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。用

    2024年02月05日
    浏览(46)
  • 【期末课程设计】学生成绩管理系统

    因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c  2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h   前言: 学生成绩管理系统含教师登录入口和学生登录入口,可实现学生信息的添加,删

    2024年02月16日
    浏览(38)
  • 【学生成绩管理系统----C语言】

    还在为期末程序设计而烦恼吗,不要担心,大师帮你安利一波完整的的管理系统代码,对你有帮助记得加关注噢! 文章目录 一、学生成绩管理系统是什么? 二、信息管理的七个模块 1.Step one 2.Step Two  3.Step Three 4.Step four 5.Step five 6.Step Six 7.Next 总结        学生信息管理系统

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包