基于SSM 的图书馆管理系统

基于SSM的图书馆管理系统 概述 基于Spring + Spring MVC + MyBatis的图书馆管理系统,使用Maven进行包管理。主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 环境配置 开发环境:Windows 10,IntelliJ IDEA 运行配置 首先安装Mysql5.7,设置用户名为root,密码为123456,并保证其在运行状态,并执行library.sql文件导入数据。 然后再配置Maven到环境变量中,在源代码目录下运行 # mvn jetty:run 使 阅读详情

1、项目介绍

基于SSM 的图书馆管理系统拥有两个角色,分别为管理员和学生。具体功能如下:

管理员:查看、添加图书,查看添加学生,借还管理,修改密码等

学生:查加检索图书、查看个人信息、查看个人借阅情况、修改密码

2、项目技术

后端框架:SSM(Spring、SpringMVC、Mybatis)

前端框架:bootstrap、jsp

其它:mysql5-8、tomcat8-10、JDK1.8+

3、开发工具

eclipse、idea、myEclipse

4、功能介绍

4.1 登录

image-20220507165945027

管理员和学生读者均可以通过此页面的登录系统,登录模块会自动检测签前端是否完整填写账号和密码,再经过后台数据库查询校验并通过后,会分别登录至不同的操作端。

4.2管理员-学生管理

管理员-读者管理

管理员学生管理模块可以对学生进行查看、编辑、删除等功能。

4.3管理员-图书管理

管理员-图书管理

图书详细信息

管理员-图书管理模块中,管理员可以对图书进行增加、编辑、删除和详情查看等功能,还可以通过图书名字搜索图书,详情可以观看下方视频。管理员读者日志模块同上。

4.4用户学生-图书借阅

用户学生-图书借阅

学生图书查看模块中,可以根据图书名搜索图书,并能查看图书详情和借阅图书。

4.5学生个人借还日志

学生个人借还日志

学生可以通过我的借还日志功能模块查看自己借阅记录。

4.6 ER图

ER图

5、获取方式

关注我的公众号,后台回复关键词 :图书馆3,即可获取

SSM框架的图书管理系统 在磁盘、网络和数据库等方面做出优化,降低数据库查询和页面响应时间,让用户可以快速记录和查询图书信息,提高用户的满意度和信任度。为了方便图书管理员的操作,减少图书管理员的工作量并使其能更有效的管理书库中的图书,实现了传统的图书管理工作的信息化建设。包括读者的借阅申请、借阅记录统计、图书逾期管理、图书续借等。包括图书的增、删、改、查等基本操作,对每一本书籍的基本信息进行管理,包括书名、作者、出版社、价格、库存量等。系统包含了图书的添加、删除、修改、查询等基本功能,满足了用户对图书管理的基本需求。 阅读详情

相关推荐

基于SSM的图书管理系统的设计与实现

摘要随着互联网技术的迅速发展和数字化时代的到来,图书管理系统在各类图书馆、学术机构和企事业单位中发挥着越来越重要的作用。然而,传统的图书管理系统在功能上存在局限性,且难以满足现代化信息管理的需求。因此,探讨基于SSM框架的图书管理系统的设计与实现具有重要的现实意义,旨在提高图书管理效率和用户体验。图书管理系统采用Java技术开发,后台基于SSM框架搭建,数据库选用MySQL。系统实现了以下功能:个人中心、用户管理、图书分类管理、图书信息管理、借书信息管理、还书信息管理、图书评分管理、留言板以及系统管理等。

2301_79097739的博客 970

基于SSM图书管理系统2

1,项目功能:1)用户管理用户包括为用户分配账号,修改密码,用户安全退出功能。此模块只能由系统管理员统一配置,用户不能自行注册,用户密码要进行加密处理。支持excel读者数据的导入。2)图书管理对需要图书进行增删改查操作,要提供完善的检索功能,以便于读者使用该系统进行图书检索,支持excel图书数据导入。3)借还管理每位读者要先交纳100元押金。每位读者最多可以同时借阅2本图书。读者借书后,若在30天内没有看完,则可以续借一次,续借之后若超出30天则进行扣款处罚。每延迟一天扣款1元钱。读者归还图书后,要进行天数清零。图书的借阅状态分为3种,分别是:已借出、已入库、延迟。4)系统管理本系统角色共分为3种:系统管理员、图书馆管理员、读者。由于各个角色的使用功能不一样,所以要加入权限控制使不同的角色登陆系统后所拥有的权限不同。5)出版社管理对出版社进行维护,便于在录入图书信息时进行快速选择。6)系统监控记录登陆用户的登陆时间、推出时间及在系统内进行的所有操作。7)数据分析提供图书种类的数据分析。      适合做毕业设计参考项目。2,涉及技术:SSM框架,Tomcat3,开发环境:IDEA,MySQL数据库4,讲解方式:从环境安装,项目搭建,以及项目介绍等进行讲解5,包含资料:项目源码(含数据库文件),环境安装包,项目文档。

基于ssm框架开发的图书馆管理系统

基于ssm(springmvc+spring+mybatis)框架开发的图书馆借阅系统,后台采用ssm框架,数据库采用mysql数据库。 其功能详情如下:

myzzymmyz的博客 1847

基于SSM的图书管理系统

一、系统简介 该项目是基于Java的SSM框架实现的图书管理系统 二、技术实现 1.后台框架:Spring、SpringMVC、MyBatis、Ajax 2.UI界面:BootStrap 3.数据库:MySQL 5.7 4.加密:md5+随机盐 运行环境: JDK 8 IntelliJ IDEA Tomcat 9.0 MySQL 5.7 三、系统功能 系统共分为三种用户: 1.普通用户 书籍列表显示、书籍借阅、书籍归还, 2.管理员 用户...

SayBlog 2万+

基于SSM框架的图书馆管理系统实战

SSM项目是Java开发者在Web应用开发中常用的框架组合,指的是Spring、SpringMVC和MyBatis三个框架的整合。Spring负责业务对象的生命周期管理,SpringMVC负责处理Web层的请求映射与数据展示,而MyBatis则专注于数据库交互的SQL映射。SSM项目因其灵活性、高效性和轻量级特性,成为了Java Web应用开发中不可或缺的技术栈。

weixin_42584758的博客 1074

SSM框架实现的图书馆管理系统实战项目源码

随着互联网技术的不断发展,前端开发已经成为了构建现代Web应用不可或缺的一部分。前端技术不仅涉及到网页的视觉表现,更是用户体验(UX)和用户界面(UI)设计的重要组成部分。

weixin_36073714的博客 1078

ssm图书馆管理系统

2.1 JSP技术JSP是一种跨平台的网页技术,最终实现网页的动态效果,与ASP技术类似,都是在HTML中混合一些程序的相关代码,运用语言引擎来执行代码,JSP能够实现与管理员的交互,方便管理员的使用。JSP技术具有诸多优点,可以忽略所使用的平台,实现仅需一次编写就能够到处运行使用,而且还具有很好的安全性和多平台支持的特性,能够在任何平台的任何环境中进行开发,进行系统部署和环境扩展。

qq_1406299528的博客 1112

从虚拟机到双系统:手把手教你为Gromacs搭建最强Linux环境(含WSL2、Ubuntu22.04配置)

本文详细指导如何在Windows系统下为Gromacs分子动力学模拟搭建高性能Linux环境,涵盖WSL2和Ubuntu22.04双系统配置。通过对比虚拟机、WSL2和原生Linux的性能数据,提供GPU加速、内存优化等实用技巧,帮助科研人员提升计算效率。

weixin_30861797的博客 270

SSM情缘图书馆管理系统

基于SSM的情缘图书馆管理系统。SSM框架,适合java初学者。 主要功能包括: 图书编目管理:图书编目、编目维护; 图书信息管理:图书录入、图书信息; 图书借阅管理:借阅图书、借阅信息、归还、续借; 读者管理:办证、读者信息、读者类别、证件操作; 系统管理:权限信息、用户权限;

2301_81678984的博客 451

从零开始:用Python实现AlphaZero五子棋AI(附完整代码)

本文详细介绍了如何从零开始使用Python实现AlphaZero五子棋AI。通过工程化实践,逐步构建蒙特卡洛树搜索(MCTS)、轻量化残差网络(ResNet)以及自博弈训练循环,并提供完整可运行的代码。文章旨在帮助开发者绕过复杂理论,聚焦实战,最终打造一个能够自我学习与对弈的智能体,是深度强化学习在游戏AI领域的一次完整项目实战。

weixin_29081703的博客 415

四参数与七参数坐标转换含义及区别

一.前言 不同坐标系,其椭球体的长半径,短半径和扁率是不同的。比如我们常用的四种坐标系北京54、西安80、WGS84、CGCS2000所对应的椭球体,它们的椭球体参数就各不相同。而不同空间直角坐标系之间的转换一般通过七参数或者四参数来实现坐标转换。 二.四参数转换 两个不同的二维平面直角坐标系之间转换通常使用四参数模型,四参数适合小范围测区的空间坐标转换,相对于七参数转换的优势在于只需要2个公共已知点就能进行转换,操作简单。 在该模型中有四个未知参数,即: (1)两个坐标平...

尘海折柳的博客 1万+

基于ssm图书馆管理系统

以往的图书馆管理事务处理主要使用的是传统的人工管理方式,这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点,长期的人工管理模式会产生大量的文本借书与文本数据,这对事务的查询、更新以及维护带来不少困难。随着互联网时代的到来,现如今网络的覆盖率已近非常的全面,现在人们对网络的需求也越来越高,为了减轻管理人员的工作负担,提高管理人员的工作效率,因此通过网络平台创建一个便捷高效的图书馆管理来优化管理业务。通过本网站,用户可以在线查看相关信息可以说图书馆管理是偏向实际应用的网站。

qiufangtaowvnyyidtf的博客 1100

【processing】创意编程

首先接到这个作业的时候,我是很崩溃的,我是真的不会画画QAQ,还画自己,这也太难了,于是我决定!还是祸害我爱豆吧!于是我从微博太太那里找了个图临摹 下面是太太的图 先给太太道歉!都是为了作业! 然后我画出来是这样子的 还可以!!!没有特别丑!(虽然也不是特别像吧) 但是画这个真是画死我了,下面贴上代码吧,没啥特殊的就是各种贝塞尔曲线各种圆各种线 //face stroke(70,27,11...

qq_25700571的博客 1267

065基于SSM的图书馆管理系统的设计与实现【附源码】

大家好,最近在网上又找到了一个学习项目,在此写一篇博文记录一下,在java项目的专栏中我会持 续的更新在网上获取到的java学习项目,这个专栏是我的项目收集专栏吧。在博文中我也会陆续的加入项目的演示视频,读者也可以直接通过视频进行观看项目的功能。 本次项目名:050基于SSM的图书馆管理系统的设计与实现 实现技术:后台框架:Spring、SpringMVC、MyBatis UI界面:JSP、jQuery 、BootStrap ...

zyz博客 1525

ADS仿真功率放大器实例学习笔记

ADS仿真功率放大器实例学习笔记

qq_36521926的博客 1万+

第六节 LLaVA模型数据处理源码解读(input_ids/labels/attention_mask/image,上篇)

本篇文章直接介绍llava模型数据加工部分,整体结构说明llava多模态模型输入数据格式,其中包含input_ids/labels/attention_mask与image格式,并给出对应代码位置与整个数据加工流程。最重要,通过debug给出数据解释与代码解读,也通过一个真实数据给出模型输入格式说明。当你阅读完此篇文章,绝对透彻理解llava数据加工过程与内容。显然,一篇博客是无法呈现整个数据细节,我将继续下篇博客呈现数据细节处理。result = input.ne(3) # torch.ne函数调用。

weixin_38252409的博客 3193

基于SSM的图书馆管理系统运行部署教程

我这里使用的是DataGrip , 你使用navicat或者其他工具,甚至原生的命令都可以。删除多余无用的文件,之前上传的时候忘记删了,留下以下4个就足够了。浏览器也会自动访问项目首页,如果没有那你自己打开浏览器,访问。找到对应的sql文件,看你自己的位置 , 点击OK 即可。检查修改mysql配置信息,改成你自己的用户名和密码。项目打包,因为是Tomcat部署,所以是war包。最后在services中就能看到Tomcat了。登录功能,数据库admin表中存的是用户信息。重启项目,中文乱码问题解决。

weixin_44796239的博客 883

模拟量输入功能块 S_ITR(Easy系列PLC完整ST源代码)

IN Input INT 输入数字量 1IN ISH INT 输入数字量上限 2IN ISL INT 输入数字量下限 3IN OSH REAL 输出工程量上限 4IN OSL REAL 输出工程量下限 5OUT OUTPUT REAL 输出工程量 6VAR temp1 REAL 临时变量1 7VAR temp2 REAL 临时变量2 8。

RXXW_Dor的博客 716

基于ssm图书馆管理系统源码和论文

基于ssm图书馆管理系统源码和论文

weixin_2630663675的博客 1275

Lumerical 教程,包含作者个人理解及相关设计案例 (目前共计184篇,持续更新中)

4138。

u011699626的博客 1616

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于ssm的图书馆管理系统 毕业设计源码42886

本文以JAVA为开发技术,实现了一个基于ssm图书馆管理系统。基于ssm图书馆管理系统的主要使用者分为管理员和读者,读者:个人资料(个人信息、修改密码)、图书借阅、图书归还、图书预约; 管理员:首页、个人资料(个人信息、修改密码)、公共管理(轮播图、网站公告)、用户管理(管理员、读者用户)、信息管理(图书资讯、资讯分类)、图书分类、图书信息、图书借阅、图书归还、图书预约等功能。

FYKJ_2010的博客 601

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2025年毕设ssm图书馆管理系统论文+源码

在研究过程中,可能遇到的困难和问题主要包括:SSM框架的深入理解和应用、图书馆业务流程的复杂性、系统性能的优化以及用户体验的提升等。本研究将围绕SSM图书馆管理系统的设计与开发展开,系统功能包括但不限于用户管理(包括读者和管理员)、图书信息管理(包括图书的详细信息、库存状态等)、类型管理(对图书进行分类管理)、借阅信息管理(记录借阅历史、借阅状态等)、还书信息管理(记录还书时间、是否逾期等)、罚款信息管理(对逾期未还图书进行罚款处理)、荐购信息管理(读者可以提交荐购信息,管理员进行审核和处理)等核心模块。

nodejs毕设程序源码 1099

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 图书馆管理系统
下一篇: 基于SSM的图书馆管理系统
java王不二
博客等级 码龄4年 2578粉丝 535原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

java王不二

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

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

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

打赏作者

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

抵扣说明:

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

余额充值