PHP+mysql高校图书管理系统-计算机毕业设计源码04988

摘 要

进入21世纪以来,信息技术从根本上推动了图书馆的飞速发展,计算机和计算机管理系统已成为图书馆进行图书管理的主要设备和系统。虽然目前很多大型的图书馆已经有一整套比较完善的管理系统,但是在一些中小型的图书馆中,大部分工作仍需手工完成,工作起来效率比较低,不便于动态、及时地调整图书结构。为了更好地适应当前图书馆的管理需求,解决手工管理中存在的弊端,越来越多的中小型图书馆正在逐步向计算机信息化管理转变。高校拥有一个小型图书馆,为全校师生提供一个阅读、学习的空间。近年来,随着生源不断扩大,图书馆的规模也随之扩大,图书数量也相应地大量增加,有关图书的各种信息成倍增加。面对如此庞大的信息量,校领导决定使用一套合理、有效、规范、实用的图书馆管理系统,对校内图书资料进行统一、集中的管理。随着现代化的发展,开发一个图书馆管理系统,其开发宗旨是实现图书管理的系统化、规范化和自动化,达成图书资料集中、统一管理的目标。因此,本次项目的目的就是为高校开发一个高校图书管理系统。

本文主要通过对高校高校图书管理系统的前台和后台管理进行了功能性需求分析,对系统的安全性和可扩展性进行了非功能性需求分析。在详细的需求分析的基础上,根据系统的功能设计确定了数据库结构,实现完整的代码编写。高校高校图书管理系统完成了主要模块的页面设计和功能实现。本文展示了首页页面的实现效果图,并通过代码和页面介绍了用户注册功能、图书分类、图书信息、图书借阅、图书归还、图书续借、新书订购、验收新书、个人管理等功能的实现过程。

关键词:高校图书管理系统;PHP框架;

PHP university library management system

Abstract

Since entering the 21st century, information technology has fundamentally promoted the rapid development of libraries, and computers and computer management systems have become the main equipment and systems for library management. Although many large libraries have a relatively complete set of management systems at present, in some small and medium-sized libraries, most of the work still needs to be done manually, and the work efficiency is relatively low, and it is not convenient to dynamically and timely adjust the book structure. In order to better adapt to the current library management needs and solve the drawbacks of manual management, more and more small and medium-sized libraries are gradually changing to computer information management. The university has a small library, which provides a reading and learning space for all teachers and students. In recent years, with the continuous expansion of the number of students, the scale of the library has also expanded, the number of books has also increased correspondingly, and various information about books has multiplied. Faced with such a huge amount of information, the school leaders decided to use a reasonable, effective, standardized and practical library management system to carry out unified and centralized management of books and materials in the school. With the development of modernization, develop a library management system. Its development purpose is to realize the systematization, standardization and automation of book management, and achieve the goal of centralized and unified management of books and materials. Therefore, the purpose of this project is to develop a college library management system for colleges and universities.

This paper mainly analyzes the functional requirements of the front and back office management of the university library management system, and the non-functional requirements of the security and scalability of the system. On the basis of detailed requirements analysis, the database structure is determined according to the functional design of the system to achieve complete code writing. The university library management system has completed the page design and function realization of the main modules. This article shows the implementation effect of the home page, and introduces the implementation process of user registration function, book classification, book information, book borrowing, book return, book renewal, new book ordering, new book acceptance, personal management and other functions through the code and page.

Key words: College library management system; PHP framework;

目  录

一、 绪论

1.1 研究背景与意义

1.2研究内容

1.3研究现状

二、 开发工具及相关技术介绍

2.1 开发技术

2.2 MVVM模式

2.3 MySQL数据库

2.4 B/S结构

2.5 Thinkphp框架介绍

2.6 Vue.js 主要功能

三、 系统分析

(一) 可行性分析

1. 经济可行性

2. 技术可行性

3. 操作可行性

(二) 系统功能分析和描述

(三) 系统流程分析

添加信息流程

操作流程

删除信息流程

(四) 非功能性需求分析

(五) 业务流程分析

四、 系统设计

(一) 功能模块设计

(二) 数据库设计

1. 概念模型设计

2. 数据库表设计

五、 系统实现

(一) 用户登录的实现

(二) 系统前台主要功能实现

1、用户注册的实现

2、图书公告的实现

3、图书资讯的实现

4、图书信息的实现

(三) 系统后台主要功能实现

1. 人员管理的实现

2. 图书资讯管理的实现

3. 新书订购管理的实现

六、 系统测试

6.1测试定义及目的

6.2性能测试

6.3测试模块

6.4测试结果

七、 总结与展望

参考文献

致谢

1.1 研究背景与意义

随着电子计算机和通信技术的发展,人类已经逐渐地进入信息化社会。图书馆管理也从人工文本操作发展到了计算机自动化操作。虽然,当前的图书馆大部分都在使用计算机来进行管理,但是,仍有很多的学校图书馆和书店的高校图书管理系统只能进行一些基本的图书借阅等功能操作,在及时性、有效性等方面有所欠缺。

针对目前普遍的高校图书管理系统存在的功能不全、操作复杂、系统要求高等一系列问题,设想一款操作简单、高效率的高校图书管理系统。基于目前很多高校图书管理系统只能在服务器上操作问题,有必要建立一个高校图书管理系统有效的支持WEB服务,以使图书管理工作规范化、系统化、程序化,提高信息处理的速度和准确性,并且能通过Internet能够及时、准确修改图书情况。本系统的设计有效的支持WEB访问,使得资源利用最大化,用户只需通过浏览器就可以实现操作,并且该操作灵活简单。此设计的目标在于开发一个功能齐全,操作简单明了的图书馆借阅系统。

实现图书馆对外借书、还书的简易操作,提高图书馆对最频繁工作的效率;实现图书馆对外所藏图书的按类别、书名等多方面的查询,最大的方便读者和图书馆工作人员对所需图书的查询;建立图书馆外借读者数据库,方便工作人员对读者进行有效管理;实现图书馆对新书入库,旧书封存的简单处理,并且建立书籍档案,方便进货,整体提高图书管理的效率。

1.2研究内容

高校图书管理系统的开发及实现,所需要的工作内容:

(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。

(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,高校图书管理系统的开发使用PHP框架,数据库进行系统的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成系统的实现。

(3)确定好系统使用的技术,进行在线确认系统所划分的用户角色,并且根据用户角色划分确定所要设计的功能模块,对于高校图书管理系统的设计主要划分别为管理员和读者用户角色,并所使用的功能模块也相应不同,但是系统的数据库实现的内容是交互的,用户可以随时根据自己的需求进行信息搜索,对于系统工作人员可以根据自己的分管内容进行在线信息的处理及操作,管理员获取到所有用户的详细数据信息,并根据需求进行第一时间处理解决。

(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。

1.3研究现状

随着计算机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。二十一世纪是信息的时代,所以信息的交换和信息流通显得的特别重要。为使信息能及时快速的流通,因此,使用计算机来管理图书成为必然,并且通过Internet来管理图书也成为主流。目前,中小型以及大型图书馆、书店等均开始使用各种系统管理软件来辅助管理图书,但是大多数的高校图书管理系统都是只能够进行一些基本的图书借还功能,还存在一些缺陷。例如:图书借阅到期后,将直接记为未归还,并开始计算超期罚款,而读者或许还并不知道已经超期,而导致要缴纳大量的罚款。

 2.1 开发技术

本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于php的Thinkphp框架进行开发。

前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。

后端部分:采用Thinkphp作为开发框架,同时集成Redis等相关技术。

2.2 MVVM模式

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频视频3D动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

2.3 MySQL数据库

科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的高校图书管理系统也需要这项技术的支持。

用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。

2.4 B/S结构

B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。

2.5 Thinkphp框架介绍

ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。 [1] 

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySqlPgSQLSqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。

作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。

 2.6 Vue.js 主要功能

Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。

本系统将在经济、技术、操作这三个角度上进行可行性分析。

  1. 经济可行性

整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。

  1. 技术可行性

技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于php语言,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用Mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。

  1. 操作可行性

高校图书管理系统的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用php技术开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。

使用高校图书管理系统的分为管理员和用户、员工、普通管理者四个权限模块。

管理员所能使用的功能主要有:后台首页、个人资料、网站管理(轮播图、图书公告)人员管理(管理员、读者用户)、内容管理(图书资讯、资讯分类)、模块管理(图书分类、图书信息、图书借阅、图书归还、图书续借、新书订购、验收新书)、个人管理等功能模块。

读者用户可以实现首页、图书公告、图书资讯、个人账户、个人收藏、图书信息等功能模块。

管理人员用例图如下所示。

图1 管理员用例图

读者用户用例图如下所示。

图2 读者用户用例图

添加信息流程

添加信息,编号系统使用自动编号模式,没有用户填写,用户添加信息输入信息,系统将自动确认的信息和数据,验证的成功是有效的信息添加到数据库,信息无效,重新输入信息。添加信息流程如图3-3所示。

图3添加信息流程图

操作流程

用户想进入系统,首先进入系统登录界面,通过正确的用户名、密码,选择登录类型登录,系统会检查登录信息,信息正确,然后输入相应的功能界面,提示信息错误,登录失败。系统操作流程如图3-4所示。

4操作流程图

删除信息流程

用户选择要删除的信息并单击Delete按钮。系统提示是否删除信息。如果用户想要删除信息,系统将删除信息。系统数据库删除信息。删除信息流程图如图3-5所示。

5 删除信息流程图

随着用户量的增加,系统可能会需要同时服务上千上万个页面,服务器需要同时响应大量用户的操作,这就要求系统需要有良好的可扩展性,否则系统会出现延迟,卡顿甚至服务器崩溃的问题。高扩展性可以使软件保持旺盛的生命力,同时也能够使系统更好的适应用户增加、提高性能需求、增加应用功能等改变。

系统中保存了大量用户和管理员的个人信息,因此,保证系统服务器和数据安全是在开发过程中需要考虑的重要问题。安全性包括服务器安全、操作系统安全、数据库安全、程序代码安全以及用户个人信息和支付安全等,系统可以通过采用防火墙技术、加密技术、认证技术等来增强其安全性,只有一个健壮安全的系统才能具有长久的生命力。

高校图书管理系统的前台中,图书借阅模块和图书归还模块进行数据交互,前台的功能主要包括图书资讯模块、图书信息模块等。

高校图书管理系统的后台中,管理员对用户在前台提交申请产生的数据进行处理,以满足用户的需求。前台系统和后台系统有数据交互,整个系统各个部分相互独立又密不可分。后台的功能主要包括后台首页、个人资料、网站管理(轮播图、图书公告)人员管理(管理员、读者用户)、内容管理(图书资讯、资讯分类)、模块管理(图书分类、图书信息、图书借阅、图书归还、图书续借、新书订购、验收新书)、个人管理等功能模块。

通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。

图4系统功能结构图

  1. 概念模型设计

概念设计包括实体和联系两部分,如该系统中,用户是一个实体,其属性包括用户 ID 标识、用户名、密码、电话、地址等属性。联系是指实体之间有意义的关联,包括一对一、一对多、多对多三种类型。

(1)管理员实体属性图如下图5所示

图5管理员实体属性图

(4) 用户注册实体属性如下图4-5所示

图4-5用户注册实体属性图

图5系统E-R图

连接数据库的文件在Resources 文件夹下的application.yml文件,代码如下:

class AccessToken extends Base

{

    protected $table = 'access_token';                //数据表名

    protected $table_id = 'token';             //数据表名

    protected $validate = 'AccessToken';             //数据表名

    protected $model;

    public function __construct(){

        $this->model = new Model();

    }

}

  1. 数据库表设计

数据库表是设计和实现系统的一个重要基础。以下列出了小郑米粉店几个重要的数据库表。

  • 表acceptance_of_new_book (验收新书)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

acceptance_of_new_book_id

int

10

0

N

Y

验收新书ID

2

book_number

varchar

64

0

Y

N

图书编号

3

book_name

varchar

64

0

Y

N

图书名称

4

book_type

varchar

64

0

Y

N

图书类型

5

book_cover

varchar

255

0

Y

N

图书封面

6

order_quantity

varchar

64

0

Y

N

订购数量

7

book_price

varchar

64

0

Y

N

图书价格

8

press

varchar

64

0

Y

N

出版社

9

book_author

varchar

64

0

Y

N

图书作者

10

book_introduction

text

65535

0

Y

N

图书简介

11

acceptance_personnel

varchar

64

0

Y

N

验收人员

12

acceptance_phase

varchar

64

0

Y

N

验收状态

13

acceptance_remarks

text

65535

0

Y

N

验收备注

14

recommend

int

10

0

N

N

0

智能推荐

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

  • 表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

  • 表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

  • 表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

varchar

500

0

Y

N

添加字段:

14

field_set

varchar

500

0

Y

N

修改字段:

15

field_get

varchar

500

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

  • 表book_borrowing (图书借阅)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

book_borrowing_id

int

10

0

N

Y

图书借阅ID

2

book_number

varchar

64

0

Y

N

图书编号

3

book_name

varchar

64

0

Y

N

图书名称

4

book_type

varchar

64

0

Y

N

图书类型

5

book_author

varchar

64

0

Y

N

图书作者

6

book_cover

varchar

255

0

Y

N

图书封面

7

borrowed_quantity

int

10

0

Y

N

0

借阅数量

8

borrowing_user

int

10

0

Y

N

0

借阅用户

9

borrowing_date

date

10

0

Y

N

借阅日期

10

borrowing_days

varchar

64

0

Y

N

借阅天数

11

recommend

int

10

0

N

N

0

智能推荐

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表book_classification (图书分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

book_classification_id

int

10

0

N

Y

图书分类ID

2

book_category

varchar

64

0

Y

N

图书类别

3

recommend

int

10

0

N

N

0

智能推荐

4

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表book_information (图书信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

book_information_id

int

10

0

N

Y

图书信息ID

2

book_number

varchar

64

0

Y

N

图书编号

3

book_name

varchar

64

0

Y

N

图书名称

4

book_type

varchar

64

0

Y

N

图书类型

5

book_cover

varchar

255

0

Y

N

图书封面

6

number_of_books

varchar

64

0

Y

N

图书数量

7

book_price

varchar

64

0

Y

N

图书价格

8

press

varchar

64

0

Y

N

出版社

9

book_author

varchar

64

0

Y

N

图书作者

10

book_introduction

text

65535

0

Y

N

图书简介

11

hits

int

10

0

N

N

0

点击数

12

praise_len

int

10

0

N

N

0

点赞数

13

recommend

int

10

0

N

N

0

智能推荐

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表book_renewal (图书续借)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

book_renewal_id

int

10

0

N

Y

图书续借ID

2

book_number

varchar

64

0

Y

N

图书编号

3

borrowing_user

int

10

0

Y

N

0

借阅用户

4

book_name

varchar

64

0

Y

N

图书名称

5

book_type

varchar

64

0

Y

N

图书类型

6

book_author

varchar

64

0

Y

N

图书作者

7

book_cover

varchar

255

0

Y

N

图书封面

8

borrowed_quantity

varchar

64

0

Y

N

借阅数量

9

renewal_date

date

10

0

Y

N

续借日期

10

renewal_days

varchar

64

0

Y

N

续借天数

11

recommend

int

10

0

N

N

0

智能推荐

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表book_return (图书归还)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

book_return_id

int

10

0

N

Y

图书归还ID

2

book_number

varchar

64

0

Y

N

图书编号

3

book_name

varchar

64

0

Y

N

图书名称

4

book_type

varchar

64

0

Y

N

图书类型

5

book_cover

varchar

255

0

Y

N

图书封面

6

book_author

varchar

64

0

Y

N

图书作者

7

borrowing_user

int

10

0

Y

N

0

借阅用户

8

return_date

date

10

0

Y

N

归还日期

9

return_quantity

varchar

64

0

Y

N

归还数量

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

  • 表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

  • 表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

  • 表new_book_order (新书订购)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

new_book_order_id

int

10

0

N

Y

新书订购ID

2

book_number

varchar

64

0

Y

N

图书编号

3

book_name

varchar

64

0

Y

N

图书名称

4

book_type

varchar

64

0

Y

N

图书类型

5

book_cover

varchar

255

0

Y

N

图书封面

6

order_quantity

varchar

64

0

Y

N

订购数量

7

book_price

varchar

64

0

Y

N

图书价格

8

press

varchar

64

0

Y

N

出版社

9

book_author

varchar

64

0

Y

N

图书作者

10

book_introduction

text

65535

0

Y

N

图书简介

11

recommend

int

10

0

N

N

0

智能推荐

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

  • 表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

  • 表reader_user (读者用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

reader_user_id

int

10

0

N

Y

读者用户ID

2

reader_no

varchar

64

0

Y

N

读者编号

3

readers_name

varchar

64

0

Y

N

读者姓名

4

gender_of_readers

varchar

64

0

Y

N

读者性别

5

student_id_card

varchar

64

0

Y

N

学生证

6

examine_state

varchar

16

0

N

N

已通过

审核状态

7

recommend

int

10

0

N

N

0

智能推荐

8

user_id

int

10

0

N

N

0

用户ID

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

  • 表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

  • 表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

  • 表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

用户注册完成后,点击“登陆”进入到登陆页面,输入用户名和密码,点击“登陆”按钮,对用户名和密码进行验证,根据传入的用户名和密码在数据库中是否能查询到一条用户信息,若不能返回用户信息则登陆失败,页面提示用户名或密码错误。

登录界面如下图所示。

图5-1登录界面

用户登录的关键代码如下。

public function login()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->login($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

public function login($request=[],$table_name = ''){

        $username = $request['username'];

        $password = $request['password'];

        $bol = $this->where(['username'=>$username])->find();

        if ($bol){

            $password = md5($password);

            if ($request['password']==$bol['password']) {

                //添加token信息

                $access_token['create_time'] = date('Y-m-d H:i:s');

                $access_token['update_time'] = date('Y-m-d H:i:s');

$access_token['info'] = json_encode($bol);

                // $access_token['info'] = $bol;

                $access_token['token'] = md5(date('Y-m-d H:i:s'));

                $bol_token = Db::name('AccessToken')->insert($access_token);

                if ($bol_token){

                    $data['obj'] = $bol;

                    $data['obj']['token'] = $access_token['token'];

                    return ['result' => $data];

                }else{

                    return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];

                }

            } else {

                return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];

            }

        }else{

            return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];

        }

    }

1、用户注册的实现

用户进入系统首页后,点击“注册”链接进入到注册页面,按照页面提示输入用户名密码和手机号,页面进行表单验证,验证输入的用户名和账号是否合法,表单验证通过后,点击“立即注册”按钮,利用 Ajax 技术,对用户名和账号实现页面无刷新验证,检测数据库中是否已经存在该用户名,若数据库中不存在,则注册成功,注册成功后,自动跳转到登录页面。

用户注册界面如下所示。

           

图5-3用户注册界面

用户注册的关键代码如下。

public function register()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');

            $request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->register($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

public function register($request=[],$table_name = ''){

        $username = $request['username'];

        $bol = $this->where(['username'=>$username])->find();

        if (!$bol){

            $result = self::allowField(true)->save($request);

            if ($result) {

                return ['result' => 1];

            } else {

                return ['error' => ['code' => 3000, 'message' => '注册失败']];

            }

        }else{

            return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];

        }

    }

2、图书公告的实现

图书公告页面可查看管理员发布的图书公告详细信息,如下图所示。 

图5-4图书公告页面

3图书资讯实现

系统首页提供了图书资讯浏览功能,用户在输入框内输入图书资讯信息关键字,点击提交按钮,系统将用户输入的关键字传递到后台。首先创建一个实体类 PageBean,该实体类的属性包括页码 pageCode、每页记录数 pageSize、总记录数 totalRecord 和一个 List 集合 beanList,用循环将录入到的结果分页展示。

图书资讯界面如下图所示。

图5-5图书资讯界面

  1. 图书信息的实现

点击“图书信息”按钮,在该页面可查看图书的所有信息,可对喜欢的图书进行收藏、点赞、评论和借阅相应的操作。

图5-5图书信息界面

  1. 人员管理的实现

管理员对系统用户的管理,在管理员管理实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,使用sql命令更新密码。

读者用户管理界面如下图所示。

5-6读者用户管理界面

  1. 图书资讯的实现

管理员在图书资讯这一栏查看标签、标题、分类、描述封面图书等详细信息。可根据需要进行查询、重置、添加删除等相应的操作。

图书资讯界面如下图所示。

图5-7图书资讯界面

  1. 新书订购的实现

管理员在后台管理界面点击到所有新书订购列表,可以搜索当前所有新书订购信息,调用搜索全部图书名称的请求,向数据库的新书订购表搜索当前所有新书订购并将新书订购信息以对象的形式层层返回到新书订购列表界面,显示出当前所有新书订购信息。同时可以删除过期新书订购,确认已有新书订购。

新书订购界面如下图所示。

图5-8新书订购界面

6.1测试定义及目的

关于系统实现的测试,英文名称是System TEST,简称ST,ST是使用完整其系统的各种功能多次、多案例、多环境测试,这是ST的简单描述。ST可以证明该功能对系统的要求是否得到满足以及是否有效。

对于系统开发的实现,不管开发过程多么努力,在系统运行的时候多少都会出现一些错误信息,所以为了系统的安全性及提高系统的使用率及给用户带来更好的体验,系统在完成之前,一定要进行一遍系统的测试,再完美的程序也会有漏洞,再细心的技术开发员也会有疏忽的时候,所以对于程序的测试是必须要做的一步。通过系统测试找到系统存在的问题,并根据问题的原因进行在线解决问题,如果找不到解决问题的办法可以进行通过咨询指导老师或者通过同学帮忙,一定将问题找出,否则将会出现更多的错误。所以程序出现错误时不可避免,系统测试虽然耗时费力,但是为了确保后期系统的长期使用,必须要进行系统测试,问题解决完成后还要再一步测试,直到没有任何问题后方可进行使用。

6.2性能测试

任何一款程序开发成功后都必须通过软件测试,它是保障软件稳定运行的前提。测试最主要的一步就是性能测试,性能测试内容如下:

(1)对于测试的速度有一定的要求,速度必须快,而且对于测试出来的错误问题一定以最快的速度进行处理解决,并且进行再次测试,保证整个系统运行的安全性。

(2)在系统测试的时候要将测试所用到的测试计划和测试报告保管好,方便后期系统的运行使用后的整体维护操作。

(3)软件测试整个过程中的聚类现象应优先考虑。

(4)对于整体系统测试,不要用自己的思想去认可整个系统,而是从公正的角度的进行对系统进行认可,是否符系统的整合应用。

6.3测试模块

测试系统是最新的Windows 10系统,通过对系统实现的功能模块进行每个功能模块的操作测试,查看每个用户的功能模块所对应的权限信息是否可以操作并且数据信息更新一致。

测试需求

测试重点

是否达成需求

结果

用户登录

输入账号密码

需求达成

通过

用户注册

创建新的账号密码

需求达成

通过

登录失败

输入错误账号密码

需求达成

通过

修改信息

修改成功

需求达成

通过

添加信息管理

增删查改

需求达成

通过

回复管理

增删查改

需求达成

通过

搜索查询管理

增删查改

需求达成

通过

                                                                                                                                                       

系统测试方面,我们通常运用的是白盒测试以及黑盒测试这两种方法。白盒测试是指在了解系统内部工作流程的前提下,可以根据需求规范验证系统内部操作是否能够正常运行的测试;而黑盒测试指的是,倘若知道了这个系统的全部功能,可以进行测试检测系统中的每一个功能是否满足正常使用。

为了方便用户使用“高校图书管理系统”,以及尽可能少的减少系统测试错误的发生,我们对该系统进行了相对应的测试。

对该系统的全部的功能界面进行测试,简单来说,就是我们输入一些数据并且对其进行提交,之后我们查看每个页面的反馈,检测页面的相关功能可不可以完全实现。

6.4测试结果

测试评估的结果是高校图书管理系统满足要求中的所有功能,处理大多数错误条件,修复大多数错误并通过测试。高校图书管理系统的基本功能都是可行的,不管是系统里面的功能还是界面的设计都是可值得推广宣传的。

经过这几个月的设计和开发,“基于php高校图书管理系统”已经完成了,其功能符合设计需求,能够完成用户的注册、会员用户的个人信息、图书资讯、图书资讯、图书信息和管理员的图书分类、图书信息、图书借阅、图书归还、图书续借、新书订购、验收新书等功能。经过最后的使用,证明系统完全具有可行性与可扩充性。

在系统的分析阶段,主要是分析系统的需求,理解系统要完成的基本功能,找出系统的用例(Use Case)和角色(Actor),画出系统的用例模型图,用例模型是此后系统建模的基础。在用例的基础上分析顺序图和协作图,得到系统的所有对象,然后建立对象模型。抽象出系统的类,并将系统中联系紧密的类划分为若干个包,画出包图。有了这些基础,就可以将系统划分为小单元功能模块。

整个过程中,我必须认可UML统一建模语言,它让我很清晰的知道自己想做什么,想实现什么,对系统后面的代码编写起到决定性的帮助,同时经过本次系统的设计与实现,让我积累了很多经验,提高了编写程序的能力,为以后的学习和工作打下了坚实的基础。

由于时间有限,本系统还有待继续完善和改进,因此需要进一步进行分析和修改,以使其更加完善! 

参考文献

[1]林立.数据驱动的高校图书馆管理系统构建——以闽江学院智慧图书馆管理系统为例[J].兰台内外,2023(01):7-9.

[2]孙大成.高校图书馆管理系统的分析与设计[J].科技资讯,2022,20(11):202-204.DOI:10.16661/j.cnki.1672-3791.2112-5042-6957.

[3]王周军.数据挖掘技术在高校图书馆管理系统中的应用与开发[J].信息记录材料,2020,21(06):168-169.DOI:10.16009/j.cnki.cn13-1295/tq.2020.06.102.

[4]赵倩.云环境下高校图书馆智慧管理系统模型构建与功能实现[J].才智,2020(14):245.

[5]陈彦海.高校图书馆管理系统数据分析——以西安培华学院为例[J].传媒论坛,2020,3(09):101-102.

[6]罗学勤,简绍勇,袁彬,蒋胜魁.高校图书馆管理系统的分析与设计[J].计算机产品与流通,2020(05):251-252.

[7]华强.数据挖掘在高校图书馆管理系统中的应用[J].信息技术与信息化,2019(09):116-118.

[8]Noor Asaduzzaman,Sharif Md.. A Java based University Library Management System[J]. International Journal of Computer Applications,2018,180(29).

[9]姜印. 图书馆管理信息系统中数据挖掘技术的应用研究[C]//.《教师教学能力发展研究》科研成果集(第十五卷).,2018:356-359.

[10]吴芳. 基于B/S架构的某高校图书馆管理系统的设计与实现[D].厦门大学,2017.

[11]李庆云.高校图书馆管理系统的分析与设计[J].科技资讯,2017,15(09):11-12.DOI:10.16661/j.cnki.1672-3791.2017.09.011.

[12]鄢鸿桢.高校图书馆管理系统的现状及发展趋势[J].信息记录材料,2017,18(01):178-180.DOI:10.16009/j.cnki.cn13-1295/tq.2017.01.122.

[13]李顺花.高校图书馆管理系统的发展趋势探讨[J].科技资讯,2016,14(29):175+177.DOI:10.16661/j.cnki.1672-3791.2016.29.175.

[14]方玉林.浅析高校图书馆管理系统的实现[J].中国管理信息化,2016,19(13):190-191.

[15]李筠.高校图书馆管理系统的开发与设计研究[J].中国市场,2016(18):115-116.DOI:10.13939/j.cnki.zgsc.2016.18.115.

[16]Li Juan Wang. Cloud-Based University Library Management System[J]. Applied Mechanics and Materials,2014,2935(484-485).

[17]AS Faki,PM Ogedebe. Use Case Modelling of Bingham University Library Management System[J]. West African Journal of Industrial and Academic Research,2014,10.

[18]谢艳芳. 高校图书馆管理系统的设计与实现[D].上海交通大学,2011.

[19]徐丽媛. 高校图书馆管理系统的个性化服务的设计与实现[D].黑龙江大学,2010.

[20]杨霞,唐德合. 谈高校图书馆随书光盘的计算机管理模式[C]//.广西计算机学会2009年年会论文集.,2009:221-225.

致谢

时光飞逝,转眼间我在学校的这些年生活即将结束,回顾这几年的学习生活,收获良多,既有幸福也有难过,学校生活的结束对于我来说也是一个新的开始。论文即将完成,在此,我心中有许多想要感谢的人。首先感谢我的导师,不仅在学习研究方面加以指导,也在生活和为人处世上给予帮助。还要感谢授课老师,你们严谨的学术精神和积极向上的工作态度都在激励我的成长和进步。感谢多年来一直生活在一起的室友,谢谢你们多年来的陪伴和照顾。最后,要感谢各位论文评审老师,感谢您们在百忙之中抽空评阅本论文并给出宝贵的意见和建议。

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值