基于javaweb+mysql的jsp+servlet教务处学生成绩管理系统(java+jsp+bootstrap+servlet+mysql)

基于javaweb+mysql的jsp+servlet教务处学生成绩管理系统(java+jsp+bootstrap+servlet+mysql)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的JSP+Servlet教务处学生成绩管理系统(java+jsp+bootstrap+servlet+mysql)

项目介绍

本项目包含管理员、教师、学生三种角色;

用户角色包含以下功能:

修改密码,查看自己的信息,查看自己的成绩,登录界面等功能。

管理员角色包含以下功能: 修改示例,增删改查学生信息,增删改查教师信息,增删改查课程信息,管理员修改密码等功能。

老师角色包含以下功能: 个人信息查看,修改成绩信息,增加成绩信息,管理学生成绩信息等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:否;

技术栈

JSP+CSS+JavaScript+jquery+bootstrap+servlet+mysql

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中dbconfig.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入http://localhost:8080/ 登录 管理员账号/密码:admin/admin 教师账号/密码: 20194101/123456 学生账号/密码: 202041404237/123456
						major, department, sclass);
				if (flag) {
					request.setAttribute("message",
				} else {
					request.setAttribute("message",
				}
				String pageNum = request.getParameter("pageNum");
				Page page = service.findStudentsRecords(pageNum);
				page.setUrl("/LoginServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/admin_main.jsp")
						.forward(request, response);
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

public class AddCourseServlet extends HttpServlet {
	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Admin admin = (Admin) request.getSession().getAttribute("admin");
}

public class AddScoreServlet extends HttpServlet {

	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Teacher teacher = (Teacher) request.getSession()
				.getAttribute("teacher");
		if (teacher == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);
			if (tname != null && tno != null && cno != null && cname != null
					&& credit != null) {
				Course course = new Course(cno, cname, tno, tname, credit);
				boolean flag = service.updateCourse(course);
				if (flag) {
					request.setAttribute("message",
				} else {
					request.setAttribute("message",
				}
				String pageNum = request.getParameter("pageNum");
				Page page = service.findCoursesRecords(pageNum);
				page.setUrl("/AdminToCourseServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/admin_course.jsp")
						.forward(request, response);
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}


public class AddStuServlet extends HttpServlet {

	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Admin admin = (Admin) request.getSession().getAttribute("admin");
		if (admin == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);

			String sno = request.getParameter("sno");
			String sname = request.getParameter("sname");
			String sex = request.getParameter("sex");
			String password = request.getParameter("password");
			String major = request.getParameter("major");
			String department = request.getParameter("department");
			String sclass = request.getParameter("sclass");
			Student student = new Student(sno, sname, password, sex, major,
					department, sclass);
			boolean flag = false;
			if (sname != null && sno != null && sex != null && password != null
					&& department != null && major != null && sclass != null) {
				flag = service.addStudent(student);
				if (flag) {
					request.setAttribute("message",

				} else {

public class UpdateScoreServlet extends HttpServlet {
	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Teacher teacher = (Teacher) request.getSession()
				.getAttribute("teacher");
		if (teacher == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);

			String sno = request.getParameter("sno");
			String cno = request.getParameter("cno");
				request.getRequestDispatcher("/WEB-INF/admin_main.jsp")
						.forward(request, response);
			} else if ("教师".equals(type)) {
				String username = request.getParameter("username");
				String password = request.getParameter("password");

				teacher = service.queryTeacher(username);
				if (teacher == null) {
					request.setAttribute("message",
					request.getRequestDispatcher("/index.jsp").forward(request,
							response);
					return;
				}
				teacher = service.queryTeacher(username,password);
				if (teacher == null) {
					request.setAttribute("message",
					request.getRequestDispatcher("/index.jsp").forward(request,
							response);
					return;
				}
				request.getSession().setAttribute("teacher", teacher);
				// 此段代码用于防止刷新后的重复提交
				// 时间戳
				String timeStamp = String.valueOf(new java.util.Date().getTime());
				HttpSession session = request.getSession();
				// 创建新令牌值
				String tokenStr = session.getId() + timeStamp;
				// 识别令牌,不合法将中止页面运行
				// 更新令牌
				session.setAttribute("CONTROL_REFRESH", tokenStr);
				// 设置页码
				String pageNum = request.getParameter("pageNum");
				Page page = service.findScoresRecordsByTno(teacher.getTno(), pageNum);
				page.setUrl("/LoginServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/teacher_main.jsp")
						.forward(request, response);
			} else if ("学生".equals(type)) {
				String username = request.getParameter("username");
				String password = request.getParameter("password");
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);

			String sno = request.getParameter("sno");
			String cno = request.getParameter("cno");
			String grade = request.getParameter("grade");
			String get_credit = request.getParameter("get_credit");
			String GPA = request.getParameter("GPA");
			String credit_GPA = request.getParameter("credit_GPA");

			if (sno != null && grade != null && cno != null
					&& get_credit != null && GPA != null && credit_GPA != null) {
				boolean flag = service.updateScore(sno, cno, grade, get_credit,
						GPA, credit_GPA);
				if (flag) {
					request.setAttribute("message",
				} else {
					request.setAttribute("message",
				}
				String pageNum = request.getParameter("pageNum");
				Page page = service.findScoresRecordsByTno(teacher.getTno(),
						pageNum);
				page.setUrl("/LoginServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/teacher_main.jsp")
						.forward(request, response);
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

public class DeleteStuServlet extends HttpServlet {

	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Admin admin = (Admin) request.getSession().getAttribute("admin");
		if (admin == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 此段代码用于防止刷新后的重复提交
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;

public class AddTeaServlet extends HttpServlet {

	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Admin admin = (Admin) request.getSession().getAttribute("admin");
		if (admin == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);
			
			String tno = request.getParameter("tno");
			String tname = request.getParameter("tname");
			String sex = request.getParameter("sex");
			String password = request.getParameter("password");
			String degree = request.getParameter("degree");
			String department = request.getParameter("department");
			String title = request.getParameter("title");
			Teacher teacher = new Teacher(tno, tname, password, sex, department, degree, title);
			boolean flag = false;
			if (tname != null && tno != null && sex != null && password != null
					&& department != null && degree != null && title != null) {

public class UpdateStuServlet extends HttpServlet {

	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Admin admin = (Admin) request.getSession().getAttribute("admin");
		if (admin == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);

			String sname = request.getParameter("sname");
			String sno = request.getParameter("sno");
			String sex = request.getParameter("sex");
			String password = request.getParameter("password");
			String department = request.getParameter("department");
			String major = request.getParameter("major");
			String sclass = request.getParameter("sclass");
			if (sname != null && sno != null && sex != null && password != null
					&& department != null && major != null && sclass != null) {
				boolean flag = service.updateStudent(sno, password, sname, sex,
						major, department, sclass);
				if (flag) {
					request.setAttribute("message",
				} else {
					request.setAttribute("message",
				}
			String sesValue = (String) session.getAttribute("CONTROL_REFRESH");
			System.out.println(sesValue);
			String reqValue = request.getParameter("tokenStr");
			System.out.println(reqValue);
			if (!sesValue.equals(reqValue)) {
				// 设置页码
				String pageNum = request.getParameter("pageNum");
				Page page = service.findTeachersRecords(pageNum);
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/admin_teacher.jsp")
						.forward(request, response);
				return;
			}
			// 更新令牌
			String tno = request.getParameter("tno");
			session.setAttribute("CONTROL_REFRESH", tokenStr);
			boolean flag = service.deleteTeacher(tno);
			if (flag) {
				request.setAttribute("message",
			} else {
				request.setAttribute("message",
			}
			// 设置页码
			String pageNum = request.getParameter("pageNum");
			Page page = service.findTeachersRecords(pageNum);
			request.setAttribute("page", page);
			page.setUrl("/AdminToTeaServlet");
			request.getRequestDispatcher("/WEB-INF/admin_teacher.jsp").forward(request,
					response);
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

		Admin admin = (Admin) request.getSession().getAttribute("admin");
		if (admin == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);

			String tname = request.getParameter("tname");
			String tno = request.getParameter("tno");
			String cno = request.getParameter("cno");
			String cname = request.getParameter("cname");
			String credit = request.getParameter("credit");

			if (tname != null && tno != null && cno != null && cname != null
					&& credit != null) {
				Course course = new Course(cno, cname, tno, tname, credit);
				boolean flag = service.updateCourse(course);
				if (flag) {
					request.setAttribute("message",
				} else {
					request.setAttribute("message",
				}
				String pageNum = request.getParameter("pageNum");
				Page page = service.findCoursesRecords(pageNum);
				page.setUrl("/AdminToCourseServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/admin_course.jsp")
						.forward(request, response);
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 此段代码用于防止刷新后的重复提交
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			String sesValue = (String) session.getAttribute("CONTROL_REFRESH");
			System.out.println(sesValue);
			String reqValue = request.getParameter("tokenStr");
			System.out.println(reqValue);
			if (!sesValue.equals(reqValue)) {
				// 设置页码
				String pageNum = request.getParameter("pageNum");
				Page page = service.findCoursesRecords(pageNum);
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/admin_course.jsp")
						.forward(request, response);
				return;
			}
			// 更新令牌
			String cno = request.getParameter("cno");
			session.setAttribute("CONTROL_REFRESH", tokenStr);
			boolean flag = service.deleteCourse(cno);
			if (flag) {
				request.setAttribute("message",
			} else {
				request.setAttribute("message",
			}
			// 设置页码
			String pageNum = request.getParameter("pageNum");
			Page page = service.findCoursesRecords(pageNum);
			request.setAttribute("page", page);
			page.setUrl("/AdminToCourseServlet");
			request.getRequestDispatcher("/WEB-INF/admin_course.jsp").forward(request,
					response);
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

public class AddTeaServlet extends HttpServlet {

	private BusinessService service = new BusinessServiceImpl();
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/jsp;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		Admin admin = (Admin) request.getSession().getAttribute("admin");
		if (admin == null) {
			request.setAttribute("message",
			request.getRequestDispatcher("/index.jsp").forward(request,
					response);
			return;
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);
		} else {
			// 时间戳
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);
			
			String tno = request.getParameter("tno");
			String tname = request.getParameter("tname");
			String sex = request.getParameter("sex");
			String password = request.getParameter("password");
			String degree = request.getParameter("degree");
			String department = request.getParameter("department");
			String title = request.getParameter("title");
			Teacher teacher = new Teacher(tno, tname, password, sex, department, degree, title);
			boolean flag = false;
			if (tname != null && tno != null && sex != null && password != null
					&& department != null && degree != null && title != null) {
				flag = service.addTeacher(teacher);
				if (flag) {
					request.setAttribute("message",
				}else{
					request.setAttribute("message",
				}
				String pageNum = request.getParameter("pageNum");
				Page page = service.findTeachersRecords(pageNum);
				page.setUrl("/AdminToTeaServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/admin_teacher.jsp")
						.forward(request, response);
			}
		}

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

					request.getRequestDispatcher("/index.jsp").forward(request,
							response);
					return;
				}
				admin = service.queryAdmin(username, password);
				if (admin == null) {
					request.setAttribute("message",
					request.getRequestDispatcher("/index.jsp").forward(request,
							response);
					return;
				}
				request.getSession().setAttribute("admin", admin);
				// 此段代码用于防止刷新后的重复提交
				// 时间戳
				String timeStamp = String.valueOf(new java.util.Date().getTime());
				HttpSession session = request.getSession();
				// 创建新令牌值
				String tokenStr = session.getId() + timeStamp;
				// 识别令牌,不合法将中止页面运行
				// 更新令牌
				session.setAttribute("CONTROL_REFRESH", tokenStr);
				// 设置页码
				String pageNum = request.getParameter("pageNum");
				Page page = service.findStudentsRecords(pageNum);
				page.setUrl("/LoginServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/admin_main.jsp")
						.forward(request, response);
			} else if ("教师".equals(type)) {
				String username = request.getParameter("username");
				String password = request.getParameter("password");

				teacher = service.queryTeacher(username);
				if (teacher == null) {
					request.setAttribute("message",
					request.getRequestDispatcher("/index.jsp").forward(request,
							response);
					return;
				}
				teacher = service.queryTeacher(username,password);
				if (teacher == null) {
					request.setAttribute("message",
					request.getRequestDispatcher("/index.jsp").forward(request,
							response);
					return;
				}
			String timeStamp = String.valueOf(new java.util.Date().getTime());
			HttpSession session = request.getSession();
			// 创建新令牌值
			String tokenStr = session.getId() + timeStamp;
			// 识别令牌,不合法将中止页面运行
			// 更新令牌
			session.setAttribute("CONTROL_REFRESH", tokenStr);

			String sno = request.getParameter("sno");
			String cno = request.getParameter("cno");
			String grade = request.getParameter("grade");
			String get_credit = request.getParameter("get_credit");
			String GPA = request.getParameter("GPA");
			String credit_GPA = request.getParameter("credit_GPA");

			if (sno != null && grade != null && cno != null
					&& get_credit != null && GPA != null && credit_GPA != null) {
				boolean flag = service.updateScore(sno, cno, grade, get_credit,
						GPA, credit_GPA);
				if (flag) {
					request.setAttribute("message",
				} else {
					request.setAttribute("message",
				}
				String pageNum = request.getParameter("pageNum");
				Page page = service.findScoresRecordsByTno(teacher.getTno(),
						pageNum);
				page.setUrl("/LoginServlet");
				request.setAttribute("page", page);
				request.getRequestDispatcher("/WEB-INF/teacher_main.jsp")
						.forward(request, response);
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java毕业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值