基于javaweb+mysql的jsp+servlet学生成绩管理系统(管理员、教师、学生)(java+jsp+servlet+javabean+mysql+tomcat)

基于javaweb+mysql的jsp+servlet学生成绩管理系统(管理员、教师、学生)(java+jsp+servlet+javabean+mysql+tomcat)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

管理员:个人信息、课程管理、成绩管理、教师管理、学生管理

教师:个人信息、课程管理、成绩管理、学生信息查看

学生:人个信息管理、成绩查询

管理员

教师

学生

技术框架

JSP Servlet MySQL JDBC Tomcat CSS JavaScript bootstrap jquery

基于javaweb+mysql的JSP+Servlet学生成绩管理系统(管理员、教师、学生)(java+jsp+servlet+javabean+mysql+tomcat)

		return dir;
	}
	
	// 以下为服务器端判断客户端浏览器类型的方法  
    private String getBrowser(HttpServletRequest request) {  
        String UserAgent = request.getHeader("USER-AGENT").toLowerCase();  
        if (UserAgent != null) {  
            if (UserAgent.indexOf("msie") >= 0)  
                return "IE";  
            if (UserAgent.indexOf("firefox") >= 0)  
                return "FF";  
            if (UserAgent.indexOf("safari") >= 0)  
                return "SF";  
        }  
        return null;  
    }  

}

public class ServletaddTeacher extends HttpServlet{

	private User user;
	private Teacher teacher;
	private UserServiceImpl userServiceImpl = new UserServiceImpl();
	private TeacherServiceImpl teacherServiceImpl =new TeacherServiceImpl();
	private ServletFindAllTea findTea=new ServletFindAllTea();
				department);
		int rs=teacherServiceImpl.editTea(teacher);
		if(rs>0){
			request.setAttribute("msg", "修改成功!!");
			servletTeacherInfo.doGet(request, response);
		}else{
			request.setAttribute("msg", "修改失败!!");
			request.getRequestDispatcher("teacher/editTeacherInfo.jsp").forward(request, response);
		}
		
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		doGet(request,response);
	}
}

public class ServletTeaSearchScore extends HttpServlet{
	
	private Score score;
	private ScoreServiceImpl scoreServiceImpl=new ScoreServiceImpl();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int pageNo=1;
		int pageCount=1;
		String teaName=(String) request.getSession().getAttribute("username");
		String pageNoStr=request.getParameter("pageNo");
		String pageCountStr=request.getParameter("pageCount");
	

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

public class ServletLogin extends HttpServlet{
	private User user;
	private UserServiceImpl userServiceImpl=new UserServiceImpl();
	
	public void doGet(HttpServletRequest request,HttpServletResponse response)
		throws ServletException,IOException{
		String num=request.getParameter("ID");
		String pwd=request.getParameter("pwd");
		int roleID=Integer.parseInt(request.getParameter("role")); 
		user=new User(num,pwd,roleID);
		User rs=userServiceImpl.login(user);
		if(rs.getUserName()!=null){
			if(rs.getUserNum().equals(user.getUserNum())){
				if(rs.getPassword().equals(user.getPassword())){
					if(rs.getRoleID()==user.getRoleID()){
						if(rs.getRoleID()==2){
							request.getSession().setAttribute("username", rs.getUserName());
							request.getSession().setAttribute("usernum", rs.getUserNum());
							request.getRequestDispatcher("admin/admin.jsp").forward(request, response);
						}else if(rs.getRoleID()==1){
							request.getSession().setAttribute("username", rs.getUserName());
							request.getSession().setAttribute("usernum", rs.getUserNum());
							request.getRequestDispatcher("teacher/teacher.jsp").forward(request, response);
						}else if(rs.getRoleID()==0){
							request.getSession().setAttribute("username", rs.getUserName());
							request.getSession().setAttribute("usernum", rs.getUserNum());
							request.getRequestDispatcher("student/student.jsp").forward(request, response);
						}
					}else{
			selectOne.doGet(request, response);
			//request.getRequestDispatcher("admin/editCourse.jsp").forward(request, response);
		}
		
	}

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

public class ServletRegistersStudent extends HttpServlet{
	
	private User user;
	private Student student;
	private UserServiceImpl userServiceImpl = new UserServiceImpl();
	private StudentServiceImpl studentServiceImpl =new StudentServiceImpl();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String stuNum = request.getParameter("stuNum");
		String stuName = request.getParameter("stuName");
		String pwd = request.getParameter("password");
		String stuSex = request.getParameter("stuSex");
public class ServletTeaSearchScore extends HttpServlet{
	
	private Score score;
	private ScoreServiceImpl scoreServiceImpl=new ScoreServiceImpl();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int pageNo=1;
		int pageCount=1;
		String teaName=(String) request.getSession().getAttribute("username");
		String pageNoStr=request.getParameter("pageNo");
		String pageCountStr=request.getParameter("pageCount");
	
		
		if(pageNoStr!=null){
			pageNo=Integer.parseInt(pageNoStr);
		}
		if(pageCountStr!=null){
			pageCount=Integer.parseInt(pageCountStr);
		}
		String stuNum=request.getParameter("stuNum");
		String stuName=request.getParameter("stuName");
		String stuClass=request.getParameter("stuClass");
		score=new Score();
		score.setStuNum(stuNum);
		score.setStuName(stuName);
		score.setStuClass(stuClass);
		PageBean list=scoreServiceImpl.selectTeaScore(pageNo, pageCount, teaName,score);
		request.setAttribute("list", list);
		request.setAttribute("score", score);
		request.getRequestDispatcher("teacher/stuTeaScore.jsp").forward(request, response);
	}

}

			//列出该目录下的所有文件和目录
			File files[]=file.listFiles();
			//遍历files数组
			for(File f:files){
				//递归
				listFile(f,fileNameMap);
			}
		}else{
			/**
             * 处理文件名,上传后的文件是以uuid_文件名的形式去重新命名的,去除文件名的uuid_部分
                file.getName().indexOf("_")检索字符串中第一次出现"_"字符的位置,
                	如果文件名类似于:9349249849-88343-8344_阿_凡_达.avi
                	那么file.getName().substring(file.getName().indexOf("_")+1)
                	处理之后就可以得到阿_凡_达.avi部分
             */
			String realName=file.getName().substring(file.getName().indexOf("_")+1);
			 //file.getName()得到的是文件的原始名称,这个名称是唯一的,因此可以作为key,realName是处理过后的名称,有可能会重复
			fileNameMap.put(file.getName(), realName);

		}
		
	}

}

			file.mkdirs();
		}
		return dir;

	}
	
	private String makeFileName(String fileName) {
		// 为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
		return UUID.randomUUID().toString() + "_" + fileName;

	}

}

public class ServletDownloadFile extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");*/
		//得到要下载的文件名
}

public class ServletEditTeacherInfo extends HttpServlet{

	private Teacher teacher;
	private TeacherServiceImpl teacherServiceImpl=new TeacherServiceImpl();
	private ServletTeacherInfo servletTeacherInfo=new ServletTeacherInfo();
	
	public void doGet(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		String teaNum=request.getParameter("teaNum");
		String teaName = request.getParameter("teaName");
		String teaSex = request.getParameter("teaSex");
		int teaAge = Integer.parseInt(request.getParameter("teaAge"));
		String teaCourse = request.getParameter("teaCourse");
		String major = request.getParameter("major");
		String department = request.getParameter("department");
		teacher = new Teacher(teaNum, teaName, teaSex, teaAge, teaCourse, major,
				department);
		int rs=teacherServiceImpl.editTea(teacher);
		if(rs>0){
			request.setAttribute("msg", "修改成功!!");
			servletTeacherInfo.doGet(request, response);
		}else{
			request.setAttribute("msg", "修改失败!!");
			request.getRequestDispatcher("teacher/editTeacherInfo.jsp").forward(request, response);
		}
		
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int pageNo=1;
		int pageCount=1;
		String pageNoStr=request.getParameter("pageNo");
		String pageCountStr=request.getParameter("pageCount");
		if(pageNoStr!=null){
			pageNo=Integer.parseInt(pageNoStr);
		}
		if(pageCountStr!=null){
			pageCount=Integer.parseInt(pageCountStr);
		}
		String stuNum=request.getParameter("stuNum");
		String courseName=request.getParameter("cosName");
		String stuName=request.getParameter("stuName");
		String stuClass=request.getParameter("stuClass");
		String major=request.getParameter("major");
		/*if(stuNum==""){
			stuNum=null;
		}
		if(courseName==""){
			courseName=null;
		}
		if(stuName==""){
			stuName=null;
		}
		if(stuClass==""){
			stuClass=null;
		}
		if(major==""){
			major=null;
		}*/
		double scoreGrade=0;
		
		score=new Score( stuNum,  stuName,  stuClass,
				 courseName,  scoreGrade,  major);
		PageBean rs=scoreServiceImpl.selectStuScore(pageNo, pageCount, score);
		request.setAttribute("list", rs);
		request.setAttribute("score", score);
		request.getRequestDispatcher("admin/selectblurScore.jsp").forward(request, response);
	}

}


	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//获取上传文件的目录
		String uploadFilePath=this.getServletContext().getRealPath("/WEB-INF/upload");
		//存储要下载的文件名
		Map<String,String> fileNameMap=new HashMap<String, String>();
		/*
		 * 递归遍历filepath目录下的所有文件和目录,将文件的文件名存储到map集合中
		 */
		//file既可以代表一个文件也可以代表一个目录
		listFile(new File(uploadFilePath),fileNameMap);
		//将map集合发送到listFile.jsp页面进行显示
		request.setAttribute("fileNameMap", fileNameMap);
		request.getRequestDispatcher("admin/fileList.jsp").forward(request, response);
	}

	private void listFile(File file, Map<String, String> fileNameMap) {
		//如果file代表的不是一个文件,而是一个目录
		if(!file.isFile()){
			//列出该目录下的所有文件和目录
			File files[]=file.listFiles();
			//遍历files数组
			for(File f:files){
				//递归
				listFile(f,fileNameMap);
			}
		}else{
			/**
             * 处理文件名,上传后的文件是以uuid_文件名的形式去重新命名的,去除文件名的uuid_部分
                file.getName().indexOf("_")检索字符串中第一次出现"_"字符的位置,
                	如果文件名类似于:9349249849-88343-8344_阿_凡_达.avi
                	那么file.getName().substring(file.getName().indexOf("_")+1)
                	处理之后就可以得到阿_凡_达.avi部分
             */
			String realName=file.getName().substring(file.getName().indexOf("_")+1);
			 //file.getName()得到的是文件的原始名称,这个名称是唯一的,因此可以作为key,realName是处理过后的名称,有可能会重复
			fileNameMap.put(file.getName(), realName);

		}
		
	}

}

		String teaNum=request.getParameter("teaNum");
		String teaName = request.getParameter("teaName");
		String teaSex = request.getParameter("teaSex");
		int teaAge = Integer.parseInt(request.getParameter("teaAge"));
		String teaCourse = request.getParameter("teaCourse");
		String major = request.getParameter("major");
		String department = request.getParameter("department");
		teacher = new Teacher(teaNum, teaName, teaSex, teaAge, teaCourse, major,
				department);
		int rs=teacherServiceImpl.editTea(teacher);
		if(rs>0){
			request.setAttribute("msg", "修改成功!!");
			servletTeacherInfo.doGet(request, response);
		}else{
			request.setAttribute("msg", "修改失败!!");
			request.getRequestDispatcher("teacher/editTeacherInfo.jsp").forward(request, response);
		}
		
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		doGet(request,response);
	}
}

public class ServletTeaSearchScore extends HttpServlet{
	
	private Score score;
	private ScoreServiceImpl scoreServiceImpl=new ScoreServiceImpl();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}


public class ServletaddStudent extends HttpServlet {

	private User user;
	private Student student;
	private UserServiceImpl userServiceImpl = new UserServiceImpl();
	private StudentServiceImpl studentServiceImpl =new StudentServiceImpl();
	private ServletFindAllStu findStu=new ServletFindAllStu();

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String stuNum = request.getParameter("stuNum");
		String stuName = request.getParameter("stuName");
		String pwd = request.getParameter("password");
		String stuSex = request.getParameter("stuSex");
		int stuAge = Integer.parseInt(request.getParameter("stuAge"));
		String stuClass = request.getParameter("stuClass");
		String major = request.getParameter("major");
		String department = request.getParameter("department");
		String phone = request.getParameter("phone");
		int roleID = Integer.parseInt(request.getParameter("role"));
		user = new User(stuNum, stuName, pwd, phone, roleID);
		student = new Student(stuNum, stuName, stuSex, stuAge, stuClass, major,
				department);
		//验证是否存在该学生
		User rs=userServiceImpl.login(user);
		if(rs.getUserID()==0){
			int rsUser=userServiceImpl.addUser(user);
			int rsStu=studentServiceImpl.addStu(student);
			if(rsStu>0 && rsUser>0){
				request.setAttribute("msg", "添加成功!!");
				findStu.doGet(request, response);
				
				/*List list=studentDaoImpl.findAll();
				request.setAttribute("list", list);
				request.getRequestDispatcher("admin/studentAllInfo.jsp").forward(request, response);*/
			}else{
				request.setAttribute("msg", "添加失败!!");
				request.getRequestDispatcher("admin/addStudent.jsp").forward(request, response);
			}
		}else{
			request.setAttribute("msg", "该学号已存在,请重新录入!!");
			request.getRequestDispatcher("admin/addStudent.jsp").forward(request, response);
		}
		

	}

public class ServletaddCourse extends HttpServlet{
	
	private Course course;
	private ServletFindAllCos servletFindAllCos=new ServletFindAllCos();
	private CourseServiceImpl courseServiceImpl=new CourseServiceImpl();
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String courseName = request.getParameter("courseName");
		int courseCredit = Integer.parseInt(request.getParameter("courseCredit"));
		int courseHours = Integer.parseInt(request.getParameter("courseHours"));
		String courseTea = request.getParameter("courseTea");
		String coDate = request.getParameter("courseDate");
		Date courseDate=null;
		try {
			 courseDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("courseDate"));
		} catch (ParseException e) {
			
			e.printStackTrace();
		} 
		
	//	System.out.println(courseDate);
		course=new Course(courseName,courseCredit,courseHours,courseTea,courseDate);
		//new Course( courseName,  courseCredit,  courseHours,
		//		 courseTea,  courseDate);
		//验证是否存在该教师课程
		Course cos=courseServiceImpl.selectOneCos(course);
		}
		if(stuName==""){
			stuName=null;
		}
		if(stuClass==""){
			stuClass=null;
		}
		if(major==""){
			major=null;
		}*/
		double scoreGrade=0;
		
		score=new Score( stuNum,  stuName,  stuClass,
				 courseName,  scoreGrade,  major);
		PageBean rs=scoreServiceImpl.selectStuScore(pageNo, pageCount, score);
		request.setAttribute("list", rs);
		request.setAttribute("score", score);
		request.getRequestDispatcher("admin/selectblurScore.jsp").forward(request, response);
	}

}

public class ServletEditUser extends HttpServlet{
	
	private User user;
	private ServletFindAllUser servletFindAllUser=new ServletFindAllUser();
	private UserServiceImpl userServiceImpl=new UserServiceImpl();
	
	public void doGet(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		String userNum=request.getParameter("userNum");
		String userName=request.getParameter("userName");
		String pwd=request.getParameter("password");
		String phone=request.getParameter("phone");
		int roleID=Integer.parseInt(request.getParameter("roleID"));
			request.setAttribute("msg", "修改失败!!");
			request.getRequestDispatcher("admin/editStudent.jsp").forward(request, response);
		}
		
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		doGet(request,response);
	}
}

public class ServletEditTea extends HttpServlet{

	private Teacher teacher;
	private TeacherServiceImpl teacherServiceImpl=new TeacherServiceImpl();
	private ServletFindAllTea findTea=new ServletFindAllTea();
	
	public void doGet(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		String teaNum=request.getParameter("teaNum");
		String teaName = request.getParameter("teaName");
		String teaSex = request.getParameter("teaSex");
		int teaAge = Integer.parseInt(request.getParameter("teaAge"));
		String teaCourse = request.getParameter("teaCourse");
		String major = request.getParameter("major");
		String department = request.getParameter("department");
		teacher = new Teacher(teaNum, teaName, teaSex, teaAge, teaCourse, major,
				department);
		int rs=teacherServiceImpl.editTea(teacher);
		if(rs>0){
			request.setAttribute("msg", "修改成功!!");
			findTea.doGet(request, response);
		}else{
			request.setAttribute("msg", "修改失败!!");
			request.getRequestDispatcher("admin/editTeacher.jsp").forward(request, response);

				// 消息提醒
				String message = "";
				try {
					// 使用Apache文件上传组件处理文件上传步骤
					// 1、创建一个DiskFileItemFactory工厂
					DiskFileItemFactory factory = new DiskFileItemFactory();

					// 设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
					factory.setSizeThreshold(1024 * 100); // 设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB

					// 设置上传时的临时保存目录
					factory.setRepository(tempFile);

					// 2,创建一个文件上传解析器
					ServletFileUpload upLoad = new ServletFileUpload(factory);

					// 解决上传文件中文乱码
					upLoad.setHeaderEncoding("utf-8");

					// 3、判断提交上来的数据是否是上传表单的数据
					if (!ServletFileUpload.isMultipartContent(request)) {

						// 按照传统方式获取数据
						return;
					}
					// 设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
					upLoad.setFileSizeMax(1024 * 1024);

					// 设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
					upLoad.setSizeMax(1024 * 1024 * 10);

					// 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,
					// 每一个FileItem对应一个Form表单的输入项

				
					List<FileItem> list = upLoad.parseRequest(request);
					// List<FileItem> list=upLoad.parseRequest(request);
					// 如果fileitem中封装的是普通输入项的数据
					for (FileItem item : list) {
						if (item.isFormField()) {
							String name = item.getFieldName();
							/*// 解决普通输入项的数据中文乱码
							String value = item.getString("utf-8");
							System.out.println(name + "=" + value);*/

		}
		
	}

}

public class ServletaddCourse extends HttpServlet{
	
	private Course course;
	private ServletFindAllCos servletFindAllCos=new ServletFindAllCos();
	private CourseServiceImpl courseServiceImpl=new CourseServiceImpl();
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String courseName = request.getParameter("courseName");
		int courseCredit = Integer.parseInt(request.getParameter("courseCredit"));
		int courseHours = Integer.parseInt(request.getParameter("courseHours"));
		String courseTea = request.getParameter("courseTea");
		String coDate = request.getParameter("courseDate");
		Date courseDate=null;
		try {
			 courseDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("courseDate"));
		} catch (ParseException e) {
			
			e.printStackTrace();
		//得到要下载的文件
		File file=new File(path+"\\"+fileName);
		//如果文件不存在
		if(!file.exists()){
			request.setAttribute("message", "文件不存在!!!");
			request.getRequestDispatcher("admin/fileLoadFail.jsp").forward(request, response);
			return ;
		}
		 
		/*
		 String realname = fileName.substring(fileName.indexOf("_")+1);
	        //设置响应头,控制浏览器下载该文件
	        response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
		*/
		//处理文件名
		String realName=fileName.substring(fileName.indexOf("_")+1);
		
		if ("FF".equals(getBrowser(request))) {  
            // 针对火狐浏览器处理方式不一样了  
			realName = new String(realName.getBytes("UTF-8"),  
                    "iso-8859-1") ;  
        }  
		else{
			realName=URLEncoder.encode(realName, "utf-8");
		}
	
		//设置响应头,控制浏览器下载该文件
		response.setHeader("content-disposition", "attachment;fileName="+realName);
	
		//读取要下载的文件,保存到文件输入流
		FileInputStream fis=new FileInputStream(path+"\\"+fileName);
		//创建输出流
		OutputStream os=response.getOutputStream();
		//创建缓冲区
		byte buffer[]=new byte[1024];
		int len=0;
		//循环将输入流中的内容读取到缓冲区当中
		while((len=fis.read(buffer))>0){
			os.write(buffer, 0, len);
		}
		
	
		fis.close();

请添加图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值