You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
text1/src/service/impl/StudentServiceImpl.java

197 lines
6.3 KiB

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<Student> findStudentByPage(String _currentPage, String _rows, Map<String, String[]> condition) {
// 转换当前页和每页记录数
int currentPage = Integer.parseInt(_currentPage);
int rows = Integer.parseInt(_rows);
// 创建新的 PageBean 对象
PageBean<Student> pb = new PageBean<Student>();
// 设置分页参数
pb.setCurrentPage(currentPage);
pb.setRows(rows);
// 查询总记录数并设置到 PageBean
int totalCount = dao.findTotalCount(condition);
pb.setTotalCount(totalCount);
// 计算开始记录的索引
int start = (currentPage - 1) * rows;
List<Student> 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<Student> 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<SelectCourse> findAllSelectCourse(String studentid) {
return dao.findAllSelectCourse(studentid); // 调用 DAO 层方法获取该学生的选课信息
}
/**
* 查询所有可选课程。
*
* @return 返回所有可选课程的列表。
*/
@Override
public List<Course> 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<SelectCourse> findSelectCourseAllStudent() {
return dao.findSelectCourseAllStudent(); // 调用 DAO 层方法获取所有学生的选课信息
}
}