基于Java Web 学生档案管理系统课程设计报告

本文档详细描述了一个学生档案管理系统的开发过程,包括系统设计思想、数据库创建、登录功能实现、数据库连接、学生档案信息的增删改查功能、以及查询和修改功能的实现。系统使用Eclipse、Tomcat和MySQL作为开发工具和数据库,通过JDBC进行数据库操作,实现了用户登录验证、数据录入、查询、修改和删除等功能。
摘要由CSDN通过智能技术生成

1 设计题目

学生档案管理系统

2 开发环境

硬件环境:微机系列,内存在1G以上,软件环境:Microsoft Windows XP

3 开发工具

Eclipse、tomcat、mysql

4 完成时间

2020.12.14-2020.12.22

5 设计思想

5.1 总体流程图

在这里插入图片描述

图1 程序主要功能

5.2 总体设计思想

首先建立数据库,插入学生档案等信息表,然后连接数据库,在然后做出一个登录页面login.jsp,然后在写个登录数据处理程序LoginCheckServlet.java用来处理登录成功后跳转页面,登录成功后通过LOginCheckServlet.Java来跳转到学生档案首页,然后在学生档案首页中放入学生档案首页按钮、录入学生档案按钮、查询学生档案按钮用来跳转页面。

5.3 系统功能总框图

在这里插入图片描述

图2系统功能的总流程图

6 设计过程及设计步骤

6.1 mysql表的创建

①创建一个名称为mydatabase的数据库
CREATE DATABASE mydatabase;
②在该数据库中创建一个stuinfo表

USE mydatabase;
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
 stuNumber INT,
 stuName VARCHAR(40),
 stuSex VARCHAR(40),
 stuAge INT,
 stuMajor VARCHAR(60)
)CHARACTER SET utf8 COLLATE utf8_general_ci;
然后向其中插入1条数据
set names gbk;
INSERT INTO stuinfo VALUES(101012415,'无与信','男',18,'物联网1182');

以下是表中的数据图:
在这里插入图片描述

图3 mySQL表

6.2 登录功能与失败的实现

首先建立login.jsp登录页面、LoginCheckServlet.java处理登录页面的数据、fail.jsp失败页面,以下是具体实现代码:
登录页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录页面< /title>
</head>
<body bgcolor="pink">

	<form  action="LoginCheckServlet" method=post >
			<table align="center">
			     <tr><td>学生档案管理系统 <hr /></td></tr>
			     <hr />
				<tr>
					<td>输入用户名: <hr /></td>
					<td><input type="text" name="name" size="16"></td>
				</tr>
				<tr>
					<td>输 入 密 码: <hr /></td>
					<td><input type="password" name="password" size="18"> <hr /></td>
				</tr>
				<tr>
					<td><input type="submit" value="登录"> <hr /></td>
				</tr>
			</table>
		</form>
</body>
</html>

LoginCheckServlet.Java代码:

package cn.huaxia;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginCheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		String name=request.getParameter("name");
		String password=request.getParameter("password");
		if(name.equals("admin")&&password.equals("123")){
			request.getRequestDispatcher("/index.jsp").forward(request, response);
		}else{
			request.getRequestDispatcher("/fail.jsp").forward(request, response);
		}
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		
		doGet(request, response);
	}
}
失败界面的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="pink" >
 <form  action="login.jsp" method=post>
 <table align="center">
<tr> <td>账户或密码错误,请重新输入!<hr /></td></tr>
 <tr>
					<td><input type="submit" value="重新输入"><hr /></td>
				</tr>
				</table>
				</form>
</body>
</html>

6.3连接数据库
建立JDBCUtils.java在其中加入连接数据库和关闭数据库连接的代码,以下是具体实现函数:

package cn.huaxia;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
	// 加载驱动,并建立数据库连接
	public static Connection getConnection() throws SQLException,ClassNotFoundException {
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydatabase";
		String username = "root";
		String password = "476142";
		Connection conn = DriverManager.getConnection(url, username,password);
		return conn;
	}
	// 关闭数据库连接,释放资源
	public static void release(Statement stmt, Connection conn) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stmt = null;
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			conn = null;
		}
	}
	public static void release(ResultSet rs, Statement stmt,Connection conn){
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			rs = null;
		}
		release(stmt, conn);
	}
}

6.4添加、删除、修改、查询学生档案信息
建立StulnfoDao.java。在其中加入连接数据库的代码,由于连接数库的代码封装好了,所有直接用了就行(conn=JDBCUtils.getConnection(); )
以下是添加、删除、修改、查询学生档案信息的具体代码:

package cn.huaxia;

import java.sql.*;
import java.util.*;

public class StuInfoDao {
	//添加学生信息的操作
	public int insert(StuInfo stuinfo){
		Connection conn=null;
		PreparedStatement prestmt=null;
		try{
			int stuNumber=stuinfo.getStuNumber();
			String stuName=stuinfo.getStuName();
			String stuSex=stuinfo.getStuSex();
			int stuAge=stuinfo.getStuAge();
			String stuMajor=stuinfo.getStuMajor();
			//获得与数据库的连接
			conn=JDBCUtils.getConnection();			
			//SQL语句
			String sql="insert into stuinfo VALUES(?,?,?,?,?)";
			prestmt=conn.prepareStatement(sql);
			prestmt.setInt(1,stuNumber);
			prestmt.setString(2,stuName);
			prestmt.setString(3,stuSex);
			prestmt.setInt(4,stuAge);
			prestmt.setString(5,stuMajor);
			int number=prestmt.executeUpdate();
			return number;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtils.release(prestmt,conn);
		}
		return -1;
	}
	//删除学生信息的操作
	public int deleteById(String id){
		Connection conn=null;
		Statement stmt=null;
		try{
			//获得与数据库的连接
			conn=JDBCUtils.getConnection();
			stmt=conn.createStatement();
			//SQL语句
			String sql="delete from stuinfo where stuNumber="+id;
			int number=stmt.executeUpdate(sql);
			return number;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtils.release(stmt,conn);
		}
		return -1;
	}
	//修改学生信息的操作
	public int update(StuInfo stuinfo){
		Connection conn=null;
		PreparedStatement prestmt=null;
		try{
			int stuNumber=stuinfo.getStuNumber();
			String stuName=stuinfo.getStuName();
			String stuSex=stuinfo.getStuSex();
			int stuAge=stuinfo.getStuAge();
			String stuMajor=stuinfo.getStuMajor();
			//获得与数据库的连接
			conn=JDBCUtils.getConnection();			
			//SQL语句
			String sql="update stuinfo set stuName=?,stuSex=?,stuAge=?,stuMajor=? where stuNumber="+stuNumber;
			prestmt=conn.prepareStatement(sql);			
			prestmt.setString(1,stuName);
			prestmt.setString(2,stuSex);
			prestmt.setInt(3,stuAge);
			prestmt.setString(4,stuMajor);
			int number=prestmt.executeUpdate();
			return number;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtils.release(prestmt,conn);
		}
		return -1;
	}
	//查询所有的学生信息的操作
	public ArrayList<StuInfo> findAll(){
		Connection conn=null;
		Statement stmt=null;
		ResultSet rs=null;
		ArrayList<StuInfo> list=new ArrayList<StuInfo>();
		try{
			//获得与数据库的连接
			conn=JDBCUtils.getConnection();
			stmt=conn.createStatement();
			//SQL语句
			String sql="select * from stuinfo";
			rs=stmt.executeQuery(sql);
			//处理结果集
			while(rs.next()){
				StuInfo stuinfo=new StuInfo();
				stuinfo.setStuNumber(rs.getInt("stuNumber"));
				stuinfo.setStuName(rs.getString("stuName"));
				stuinfo.setStuSex(rs.getString("stuSex"));
				stuinfo.setStuAge(rs.getInt("stuAge"));
				stuinfo.setStuMajor(rs.getString("stuMajor"));
				list.add(stuinfo);
			}
			return list;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtils.release(rs,stmt,conn);
		}		
		return null;				
	}
	//根据学号查询学生信息的操作
	public ArrayList<StuInfo> findById(int stuNumber){
		Connection conn=null;
		Statement stmt=null;
		ResultSet rs=null;
		ArrayList<StuInfo> list=new ArrayList<StuInfo>();
		try{
			//获得与数据库的连接
			conn=JDBCUtils.getConnection();
			stmt=conn.createStatement();
			//SQL语句
			String sql="select * from stuinfo where stuNumber="+stuNumber;
			rs=stmt.executeQuery(sql);
			//处理结果集
			while(rs.next()){
				StuInfo stuinfo=new StuInfo();
				stuinfo.setStuNumber(rs.getInt("stuNumber"));
				stuinfo.setStuName(rs.getString("stuName"));
				stuinfo.setStuSex(rs.getString("stuSex"));
				stuinfo.setStuAge(rs.getInt("stuAge"));
				stuinfo.setStuMajor(rs.getString("stuMajor"));
				list.add(stuinfo);
			}
			return list;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtils.release(rs,stmt,conn);
		}		
		return null;					
	}
	//根据姓名查询学生信息的操作
	public ArrayList<StuInfo> findByName(String stuName){
		Connection conn=null;
		Statement stmt=null;
		ResultSet rs=null;
		ArrayList<StuInfo> list=new ArrayList<StuInfo>();
		try{
			//获得与数据库的连接
			conn=JDBCUtils.getConnection();
			stmt=conn.createStatement();
			//SQL语句
			String sql="select * from stuinfo where stuName='"+stuName+"'";
			rs=stmt.executeQuery(sql);
			//处理结果集
			while(rs.next()){
				StuInfo stuinfo=new StuInfo();
				stuinfo.setStuNumber(rs.getInt("stuNumber"));
				stuinfo.setStuName(rs.getString("stuName"));
				stuinfo.setStuSex(rs.getString("stuSex"));
				stuinfo.setStuAge(rs.getInt("stuAge"));
				stuinfo.setStuMajor(rs.getString("stuMajor"));
				list.add(stuinfo);
			}
			return list;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtils.release(rs,stmt,conn);
		}		
		return null;				
	}
}

6.5 建立insert.Jsp和insertServlet.java
建立这两个文件用来跳转连接到StulnfoDao.java用来实现学生档案录入功能,以下是具体代码。
insert.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>insert</title>
</head>
<body align="center" bgcolor="#E6E6E6">
	<h3 align="center">录入学生档案</h3>
	<hr />
	<form action="/student/InsertServlet" method="post">
		<table align="center">
			<tr>
				<td>学号</td>
				<td><input type="text" name="stuNumber"></td>
			</tr>
			<tr>
				<td>姓名</td>
				<td><input type="text" name="stuName"></td>
			</tr>
			<tr>
				<td>性别</td>
				<td><input type="text" name="stuSex"></td>
			</tr>
			<tr>
				<td>年龄</td>
				<td><input type="text" name="stuAge"></td>
			</tr>
			<tr>
				<td>专业</td>
				<td><input type="text" name="stuMajor"></td>
			</tr>
			<tr align="center">
				<td colspan="2"><input type="submit" value="提交"><input type="reset" value="复位"></td>
			</tr>
		</table>
	</form>
</body>
</html>
InsertServlet.java代码:
package cn.huaxia;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InsertServlet extends HttpServlet {	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String stuNumber=request.getParameter("stuNumber");
		String stuName=request.getParameter("stuName");
		String stuSex=request.getParameter("stuSex");
		String stuAge=request.getParameter("stuAge");
		String stuMajor=request.getParameter("stuMajor");
		StuInfo stuinfo=new StuInfo();
		stuinfo.setStuNumber(Integer.parseInt(stuNumber));
		stuinfo.setStuName(stuName);
		stuinfo.setStuSex(stuSex);
		stuinfo.setStuAge(Integer.parseInt(stuAge));
		stuinfo.setStuMajor(stuMajor);
		StuInfoDao stuinfodao=new StuInfoDao();
		stuinfodao.insert(stuinfo);
		request.getRequestDispatcher("/list.jsp").forward(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);}}

6.6 学生查询的实现

建立query.jsp和QuerySerlet.java文件用来实现页面的显示和连接stuinfoDao.java文件,实现学生查询功能,以下是具体代码:
Query.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查询学生信息</title>
</head>
<body align="center" bgcolor="#E6E6E6">
	<h3 align="center">查询学生信息</h3>
	<hr />
	<p align="center">请输入学号或者姓名</p>
	<form action="/student/QueryServlet" method="post">
		<table align="center">
			<tr>
				<td>学号</td>
				<td><input type="text" name="stuNumber"></td>
			</tr>
			<tr>
				<td>姓名</td>
				<td><input type="text" name="stuName"></td>
			</tr>
			<tr align="center">
				<td colspan="2"><input type="submit" value="查询"><input type="reset" value="复位"></td>
			</tr>			
		</table>
	</form>
</body>
</html>

QureySerlet.java代码:

package cn.huaxia;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class QueryServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		ArrayList<StuInfo> list=null;
		String stuNumber=request.getParameter("stuNumber");
		String stuName=request.getParameter("stuName");
		StuInfoDao stuinfodao=new StuInfoDao();		
		if(!stuNumber.isEmpty()){
			list=stuinfodao.findById(Integer.parseInt(stuNumber));
		}else if(!stuName.isEmpty()){
			list=stuinfodao.findByName(stuName);
		}
		request.setAttribute("list", list);		
		request.getRequestDispatcher("/list.jsp").forward(request, response);
	}

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

}

6.7 修改学生信息的实现

建立update.jSp和updateServlet.java文件,实现页面的显示和连接主函数stuinfoDao.java,用来实现修改学生信息,以下是具体代码:
update.jSp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.sql.*" import="cn.huaxia.*" import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body align="center" bgcolor="#E6E6E6">
	<h3 align="center">更新学生信息</h3>
	<hr />
	<form action="/student/UpdateServlet" method="post">
		<%
			ArrayList<StuInfo> list=null;
			String id=request.getParameter("stuNumber");
			if(id!=null){
				StuInfoDao stuinfodao=new StuInfoDao();
				list=stuinfodao.findById(Integer.parseInt(id));
			}			
			String stuNumber="";
			String stuName="";
			String stuSex="";
			String stuAge="";
			String stuMajor="";
			if(list!=null)
			{
				stuNumber=Integer.toString(list.get(0).getStuNumber());
				stuName=list.get(0).getStuName();
				stuSex=list.get(0).getStuSex();
				stuAge=Integer.toString(list.get(0).getStuAge());
				stuMajor=list.get(0).getStuMajor();
			}
		%>
		<table align="center">
			<tr>
				<td>学号</td>
				<td><input type="text" name="stuNumber" value="<%=stuNumber %>" readonly="true"}></td>
			</tr>
			<tr>
				<td>姓名</td>
				<td><input type="text" name="stuName" value="<%=stuName %>"></td>
			</tr>
			<tr>
				<td>性别</td>
				<td colspan="2"><input type="text" name="stuSex" value="<%=stuSex %>"></td>
			</tr>
			<tr>
				<td>年龄</td>
				<td><input type="text" name="stuAge" value="<%=stuAge %>"></td>
			</tr>
			<tr>
				<td>专业</td>
				<td><input type="text" name="stuMajor" value="<%=stuMajor %>"></td>
			</tr>
			<tr align="center">
				<td colspan="2"><input type="submit" value="更新"><input type="reset" value="复位"></td>
			</tr>
		</table>
	</form>
</body>
</html>
UpdateServlet.java代码:
package cn.huaxia;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UpdateServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String stuNumber=request.getParameter("stuNumber");
		String stuName=request.getParameter("stuName");
		String stuSex=request.getParameter("stuSex");
		String stuAge=request.getParameter("stuAge");
		String stuMajor=request.getParameter("stuMajor");
		StuInfo stuinfo=new StuInfo();
		stuinfo.setStuNumber(Integer.parseInt(stuNumber));
		stuinfo.setStuName(stuName);
		stuinfo.setStuSex(stuSex);
		stuinfo.setStuAge(Integer.parseInt(stuAge));
		stuinfo.setStuMajor(stuMajor);
		StuInfoDao stuinfodao=new StuInfoDao();
		stuinfodao.update(stuinfo);
		request.getRequestDispatcher("/list.jsp").forward(request, response);
	}

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

}

6.8删除学生信息的实现
建立DeleteServlet.Java文件,在其中输入具体删除代码:

 package cn.huaxia;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DeleteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String stuNumber=request.getParameter("stuNumber");
		//String stuNumber="1007";
		StuInfoDao stuinfodao=new StuInfoDao();
		stuinfodao.deleteById(stuNumber);
		request.getRequestDispatcher("/list.jsp").forward(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
                    


7 测试运行
每个网站都会有登录界面,而我的学生档案管理系统也用上了登录页面,以下是登录页面:
在这里插入图片描述

图 4登录页面
在这里插入图片描述

图5 输入管理员账号

输入账号后进入学生档案管理系统,以下是学生档案管理页面:
在这里插入图片描述

                         图6 学生档案管理首页

进入学生档案管理首页后,点击右边的录入学生档案按钮就会进入录入学生档案系统,
以下是它的运行截图:
在这里插入图片描述

                        图7学生档案录入截图

在这里插入图片描述

              图8 录入学生档案页面

录入完成之后,点击回到学生档案首页就回看到录入的信息:
在这里插入图片描述

                        图9 学生档案管理首页

学生这么多,想要一个一个的看,眼睛会看不过来的,所以用到了查询,以下是查询的截图:
在这里插入图片描述

                        图10 查询学生档案页面

输入学生学号,然后点击查询就可以看到学号相同的学生档案:
在这里插入图片描述

                  图11 输入学生学号

在这里插入图片描述

                           图12 查询结果

至此还加入了修改学生档案的功能,以下是修改学生档案的页面
在这里插入图片描述

             图13 修改学生专业页面

在这里插入图片描述

                    图14 修改后的页面

需要打包源码的同学可以私信我

1 概述 -------------------------------------------------------4 2总体设计 ----------------------- --------------------------------4 2.1 需求: ------------------------------------------------------ 4 2.2选择的软件解决方案,简单介绍优点及软件学院要求 ------ 4 2.3系统中的模块构成、分工、关系、主控模块(要求界面)----- 4 2.4具体系统功能需求描述 --------------------------------------------------- 5 2.5数据库设计 -------------------------------------------------- 6 2.6影响性能 ------------------------------------------------- 12 2.7系统构架 -------------------------------------------------- 12 3登陆模块的开发 -------------------------------------------------- 13 3.1简易登陆流程 -------------------------------------------------- 13 3.2登陆系统总体构架 -------------------------------------------------- 17 3.3 班主任班级课程录入功能 --------------------------------------------------- 18 3.4模块的主要函数构架 ---------------------------------------------------- 22 4遇到的问题及解决方法 ----------------------------------------------------- 22 5小结 ----------------------------------------------------- 23 5.1系统评价 ---------------------------------------------------- 23 5.2设计体会 --------------------------------------------------- 24 6致谢 --------------------------------------------------- 24 7参考文献 -------------------------- 24 8附录 --------------------------------------------------- 24
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

black job

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

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

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

打赏作者

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

抵扣说明:

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

余额充值