package service.impl; import dao.StudentDao; // 导入 StudentDao 接口,操作学生数据。 import dao.impl.StudentDaoImpl; // 导入 StudentDaoImpl 类,实际的学生数据访问实现。 import domain.Course; // 导入 Course 类,表示课程信息。 import domain.PageBean; // 导入 PageBean 类,表示分页对象。 import domain.SelectCourse; // 导入 SelectCourse 类,表示选课信息。 import domain.Student; // 导入 Student 类,表示学生信息。 import service.StudentService; // 导入 StudentService 接口,定义学生服务层的业务逻辑。 import java.util.List; import java.util.Map; /** * StudentServiceImpl 类实现了 StudentService 接口,负责学生相关业务逻辑的处理。 * 该类通过调用 StudentDao 实现与数据库的交互,提供了学生登录、注册、信息更新、分页查询等功能。 */ public class StudentServiceImpl implements StudentService { private StudentDao dao = new StudentDaoImpl(); // 实例化 StudentDaoImpl 对象,用于操作学生数据。 /** * 分页查询学生信息。 * * @param _currentPage 当前页码。 * @param _rows 每页显示的记录数。 * @param condition 查询条件,包含多个条件的 Map。 * @return 返回封装了学生信息的 PageBean 对象。 */ @Override public PageBean findStudentByPage(String _currentPage, String _rows, Map condition) { // 转换当前页和每页记录数 int currentPage = Integer.parseInt(_currentPage); int rows = Integer.parseInt(_rows); // 创建新的 PageBean 对象 PageBean pb = new PageBean(); // 设置分页参数 pb.setCurrentPage(currentPage); pb.setRows(rows); // 查询总记录数并设置到 PageBean int totalCount = dao.findTotalCount(condition); pb.setTotalCount(totalCount); // 计算开始记录的索引 int start = (currentPage - 1) * rows; List list = dao.findByPage(start, rows, condition); // 查询分页数据 pb.setList(list); // 计算总页码 int totalPage = (totalCount % rows) == 0 ? totalCount / rows : (totalCount / rows) + 1; pb.setTotalPage(totalPage); return pb; } /** * 查询所有学生信息。 * * @return 返回所有学生的列表。 */ @Override public List findAll() { return dao.findAll(); // 调用 DAO 层的 findAll 方法获取所有学生信息 } /** * 学生登录验证。 * * @param student 学生对象,包含学生 ID 和密码。 * @return 如果验证通过,返回学生信息;否则返回 null。 */ @Override public Student login(Student student) { return dao.findStudentidAndPassword(student.getS_id(), student.getS_password()); // 调用 DAO 层方法进行登录验证 } /** * 根据学生 ID 查询学生信息。 * * @param student 学生对象,包含学生 ID。 * @return 返回指定学生的详细信息。 */ @Override public Student findStudentById(Student student) { return dao.findStudentById(student.getS_id()); // 调用 DAO 层方法根据学生 ID 查询学生信息 } /** * 学生注册。 * * @param student 学生对象,包含学生注册所需的所有信息。 */ @Override public void register(Student student) { dao.addStudent(student); // 调用 DAO 层方法注册学生 } /** * 更新学生信息。 * * @param student 学生对象,包含更新后的信息。 */ @Override public void updateInfo(Student student) { dao.updateInfo(student); // 调用 DAO 层方法更新学生信息 } /** * 更新学生密码。 * * @param studentid 学生 ID。 * @param newpassword 新密码。 */ @Override public void updatePassword(String studentid, String newpassword) { dao.updatePassword(studentid, newpassword); // 调用 DAO 层方法更新学生密码 } /** * 根据学生 ID 查询该学生选修的所有课程。 * * @param studentid 学生 ID。 * @return 返回该学生选修的所有课程信息。 */ @Override public List findAllSelectCourse(String studentid) { return dao.findAllSelectCourse(studentid); // 调用 DAO 层方法获取该学生的选课信息 } /** * 查询所有可选课程。 * * @return 返回所有可选课程的列表。 */ @Override public List findAllOptionalCourse() { return dao.findAllOptionalCourse(); // 调用 DAO 层方法获取所有可选课程信息 } /** * 学生选课。 * * @param studentid 学生 ID。 * @param courseid 课程 ID。 */ @Override public void addSelectCourse(String studentid, String courseid) { dao.addSelectCourse(studentid, courseid); // 调用 DAO 层方法进行选课 } /** * 删除学生信息。 * * @param studentid 学生 ID。 */ @Override public void deleteStudentById(String studentid) { dao.deleteStudentById(studentid); // 调用 DAO 层方法删除指定学生 } /** * 批量删除学生信息。 * * @param sids 学生 ID 数组,包含多个学生 ID。 */ @Override public void deleteSelectStudent(String[] sids) { if (sids != null && sids.length > 0) { for (String sid : sids) { dao.deleteStudentById(sid); // 调用 DAO 层方法批量删除学生 } } } /** * 添加学生的完整信息。 * * @param updateStudent 学生对象,包含完整的学生信息。 */ @Override public void addStudentAllInfo(Student updateStudent) { dao.addStudentAllInfo(updateStudent); // 调用 DAO 层方法添加学生的完整信息 } /** * 查询所有学生选课信息。 * * @return 返回所有学生的选课信息。 */ @Override public List findSelectCourseAllStudent() { return dao.findSelectCourseAllStudent(); // 调用 DAO 层方法获取所有学生的选课信息 } }