摘 要
随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,图书管理当然也不例外。图书管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结,得出系统中存在的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为今后开发类似系统提供了借鉴和帮助。
图书管理系统主要功能模块包括首页,轮播图管理,网站公告管理,资源管理(图书资讯,资讯分类),系统用户(管理员,注册用户),模块管理(图书分类,图书信息,图书借阅,图书归还)等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求。
关键词:图书管理系统;PHP;Thinkphp
PHP Book Management System
Abstract
With the rapid development of science and technology, all aspects of society and industries are striving to integrate with modern advanced technology and improve their own advantages through technological means. Library management is no exception. The book management system is a management system built with practical application as the development background, using software engineering principles and development methods, and Java technology. The entire development process starts with a requirement analysis of the software system to determine its main functions. Then proceed with the overall and detailed design of the system. The overall design mainly includes system functional design, system overall structure design, system data structure design, and system security design; The detailed design mainly includes the implementation of system database access, the specific implementation of main functional modules, and the key code for module implementation. Finally, functional testing was conducted on the system, and the test results were analyzed and summarized to identify the shortcomings and areas for improvement in the system. This provided convenience for future system maintenance and also provided reference and assistance for the development of similar systems in the future.
The main functional modules of the book management system include homepage, carousel map management, website announcement management, resource management (book information, information classification), system users (administrators, registered users), module management (book classification, book information, book borrowing, book return), etc. The object-oriented development model is adopted for software development and hardware installation, which can well meet the actual needs of use.
Key words: Library management system; PHP;Thinkphp
目录
摘 要
Abstract
第一章 绪论
1.1 课题研究背景
1.2研究现状
1.3研究方法
第二章 相关技术
2.1 开发技术
2.1.1 MVVM模式
2.1.2 B/S框架
2.1.3 PHP介绍
2.1.4 Mysql数据库
第三章 图书管理系统分析
3.1 可行性分析
3.1.1 技术可行性分析
3.1.2 经济可行性分析
3.2 系统需求分析
3.2.1 功能性需求分析
3.2.2 非功能性分析
3.3 系统用例分析
第四章 系统总体设计
4.1 系统模块设计
4.2 数据库设计
4.3.1 数据库概念结构设计
4.2.2 数据库逻辑结构设计
第五章 系统实现
5.1登录模块的实现
5.2管理员功能模块
5.3注册用户功能模块
第六章 系统测试
6.1测试目的
6.2测试过程
6.3测试结果
结论
参考文献
致 谢
1.1课题研究背景
随着计算机行业的迅猛发展,各种信息和只是迅速呈现爆炸式地增长,信息处理已经成为困扰很多行业的大问题。计算机技术和现代通讯技术的发展与成熟,使信息处理得到发展。计算机的优越性体现在高效率、高安全性、快捷简便。对在庞大数据信息的处理、分类、更新方面发挥的优势更为明显。
图书管理信息技术的发展得益于计算机信息技术的进步,随着信息技术支持平台的广泛应用,目前国内许多大型图书馆已将人工输入图书信息替代为模块化信息处理,大量的数据化、信息化处理技术的成功应用典范为图书管理信息技术的全面应用奠定了坚实基础。
根据图书管理信息技术特点和经验分析,图书管理信息技术的数据化处理整合是实现图书管理信息化的前提和最根本有效的技术手段。对一个大型图书管理信息平台而言,以最简洁处理信息平台、最迅捷的处理方式为用户提供服务是基本追求目标。所谓“快捷化处理”,对图书数据信息处理的要求为:简单、实用、高效。即以最简单的信息简化模式、最经济的信息化平台布置、最低的运转过程消耗、最迅捷的处理周期获得最优的信息处理结构。而通过网络化的信息技术处理计算对图书管理系统的不断优化改进则是实现这一目标的最可靠有效的方式。
1.2研究现状
我国图书管理技术起步于上世纪80年代初期,当时利用磁带开展联机检索服务,20世纪90年代以后,随着我国信息网络建设的快速发展,计算机网络也日渐成熟,各类专业广域网纷纷建成并投入使用。南京汇文、北邮MELINETS等国内较有影响的几个大型自动化系统就是当时研发并投入运营的。进入新世纪,国内众多研究者对图书管理系统功能、结构、发展趋势等进行了研发和开发。
国外早在上个世纪初就对图书信息的管理进行大量的研究,受当时条件和技术的制约,主要是采用条目是管理方式。上世纪550年代美国海军首先进行了单元词匹配检索的研究。1958年,卢恩开创自动分类、自动标引、信息检索等图书信息管理理念。1964年,卢恩研发了第一代图书管理系统,大幅提高了图书信息管理的效率与准确性,避免了因人工输入带来的误差。20世纪70年代,以编目系统为基础的第二代图书借阅管理系统出现。90年代中后期,随着互联网技术的成熟和Windows界面的广泛应用,国外自动化图书管理系统研究蓬勃发展。到20世纪90年代末,随着知识经济时代的到来,个人电脑迅速普及,数据库技术、客户/服务器技术的不断升级,第三代图书管理系统应运而生,使得全部信息数据在操作系统下实现操控处理。进入21世纪,图书管理系统理论和计算机技术的成功结合,信息化技术在管理方面大显身手,模块化、可视化、信息化等技术的一体化技术实现成为可能并广泛应用,各种图书管理系统模块别大量的开发应用,专业化的图书管理系统已经得到了普及。
首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定是基于Mysql数据库,在php的Thinkphp框架设计的基础上实现,设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。
2.1 开发技术
本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。后端部分:采用Thinkphp框架,运用phpstudy 集成开发工具。
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的新特性糅合进去,以应对客户日益复杂的需求变化。
MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点。低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。可测试。界面素来是比较难于测试的,测试可以针对ViewModel来写。
B/S架构采取浏览器请求,服务器响应的工作模式。用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
PHP是一种面向对象的程序设计语言,类是PHP程序的基本组成单元,类中又包含了属性和方法,在类中又可以创建无数个对象。类中包含的主要成员是字段和方法,字段是指一种数据变量,方法是指对字段进行操作的集合,包括给其他变量赋值、调用方法等。PHP代码都是编写在类体中,类体中的每个数据项都可以看作是一个对象,PHP不支持类的多重继承,但可以支持接口的多重继承,并且支持类和接口的实现。由于PHP通常在网络环境中使用,所以PHP提供了一个防止代码恶意攻击的安全机制,同时,PHP具有强类型机制、自动收集垃圾和异常处理等特性,这些都是PHP语言健壮性的重要保证。
1、PHP语言具有如下特点:
(1)PHP 结合 C、Java、Perl 以及自创的新语法形成了自己独特的语法。
(2)PHP可以更快速的执行动态网页,当然这只是相对于CGI或者Perl来说,PHP可以在HTML文档中嵌入程序,而且去执行,另外PHP能够实现CGI的所有功能,因此说明PHP具有很强大的功能。
(3)大部分当下流行的数据库和操作系统PHP语言都能够支持。
(4)PHP语言的最重要特点就是可以让C、C++进行扩展
2、PHP语言具有如下优势:
(1)开放源代码:事实上PHP的所有源代码都可以得到。
(2)免费性:PHP是开源代码并且免费
(3)快捷性:PHP对于初学者来说,它不止编辑简单可以嵌入与HTML语言中,而且对于程序开发和运行也是非常快速的,并且非常容易掌握。
(4)跨平台性强:PHP是可以在服务器运行的脚本语言,所以在UNIX、Android、Mac OS、WINDOWS等操作平台上都可以运行。
(5)效率高:PHP对系统资源的消耗相当少,所以它的效率高。
(6)图像处理:PHP不止是可以使用GD2对图像进行处理,而且他还可以完成对图像的创建。
(7)面向对象:php4、php5对于PHP在面向对象上,有了许多的改进,PHP语言开发大型商业程序也是可以胜任的。
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的图书管理系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对图书管理系统后台数据进行存储操作。
3.1 可行性分析
3.1.1 技术可行性分析
从开发工具来看,由于图书管理系统是基于PHP的,因此有很多开发工具都可以进行开发,这些功能强大的开发工具可以给我来设计图书管理系统带来非常大的方便。
从图书管理系统的本身技术来说,对于我来开发一个图书管理系统这个毕设是不费事的。图书管理系统的开发可以简单的分为前台端、后台端开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。后台管理使用PHP的Thinkphp架构开发,数据库使用mysql,因此为我在开发图书管理系统这个毕设上省去了很多多余代码,这给我的毕设项目编写带来了极大的便利。综上所述,从技术层面来看开发图书管理系统是可行的。
从用户体验来看,市面上很多被广泛使用的系统案例可以让我来参考,因此我可以综合它们的页面交互设计的优点,基于我的毕设项目特点来进行改版,最后达到令用户满意的页面交互体验。综上所述,从技术层面来看开发图书管理系统是可行的。
3.1.2 经济可行性分析
从图书管理系统的开发成本来看,图书管理系统的设计和开发都是我自己完成的,没有其他成本上的开销。
从图书管理系统的维护成本来看,图书管理系统的开发遵循一套完整的代码编写规范,并且图书管理系统的结构设计非常灵活,遵循高内聚低耦合的原则,因此易于维护和迭代开发。
在图书管理系统上线之后,上线前期我会根据真实需求来调查,对使用我开发的图书管理系统来制定一套符合的使用费。系统运行稳定后我会将推广范围到其他的校园当中,其他校园可以使用我的图书管理系统,只需要缴纳一点点的定金,我会给他们引入广告投资和自营业务。
综合以上的分析,图书管理系统所带来的经济效益将会带来极大的收益。并且随着我的推广,来使用我开发的图书管理系统的市场将越来越大,图书管理系统带来的利润也就越来越多。因此,从经济层面来看开发图书管理系统的是可行的。
3.2 系统需求分析
3.2.1 功能性需求分析
图书管理系统需要满足的需求有以下几个:
1.信息获取方便,用户可在网页上快速浏览到新的信息
2.查看图书详情等。
3.注册登录,需要吸引用户,即通过注册来提高用户的存留率。
4.修改用户信息,可以修改用户密码或者用户名等一些个性化操作。
5.管理员功能,管理员可以对用户或者图书信息、借阅信息等进行管理。
6.系统安全,操作简便,不过于复杂。
7.系统可以稳定运行,不存在卡顿等问题造成用户反感。
3.2.2 非功能性分析
图书管理系统的非功能性需求比如图书管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表3-1图书管理系统非功能需求表
安全性 |
主要指图书管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 |
可靠性是指图书管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 |
性能是影响图书管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 |
比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 |
用户只要跟着图书管理系统的页面展示内容进行操作,就可以了。 |
可维护性 |
图书管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3 系统用例分析
根据上一节功能分析,可以得出系统的用例,用户角色用例如图2.1所示。
图3.1 图书管理系统中用户角色用例图
图书管理系统的管理员是维护整个图书管理系统中一系列数据流程,管理员角色用例如图2.2所示。
图3.2 图书管理系统管理员角色用例图
4.1 系统模块设计
根据第二章中图书管理系统的功能分析可知,图书管理系统中整体功能模块图如图4.1所示,
图4.1 图书管理系统功能模块图
4.2 数据库设计
4.3.1 数据库概念结构设计
下面是整个图书管理系统中主要的数据库表总E-R实体关系图。
图4.2 图书管理系统总E-R关系图
4.2.2 数据库逻辑结构设计
通过上一小节中图书管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表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 |
text |
65535 |
0 |
Y |
N |
添加字段: |
|
14 |
field_set |
text |
65535 |
0 |
Y |
N |
修改字段: |
|
15 |
field_get |
text |
65535 |
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 |
borrowing_form_number |
varchar |
64 |
0 |
Y |
N |
借阅单号 |
|
3 |
book_number |
varchar |
64 |
0 |
Y |
N |
图书编号 |
|
4 |
book_name |
varchar |
64 |
0 |
Y |
N |
图书名称 |
|
5 |
stock |
varchar |
64 |
0 |
Y |
N |
库存 |
|
6 |
user |
int |
10 |
0 |
Y |
N |
0 |
用户 |
7 |
borrowed_quantity |
int |
10 |
0 |
Y |
N |
0 |
借阅数量 |
8 |
borrowing_days |
varchar |
64 |
0 |
Y |
N |
借阅天数 |
|
9 |
contact_number |
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 |
更新时间 |
表book_classification (图书分类)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
book_classification_id |
int |
10 |
0 |
N |
Y |
图书分类ID |
|
2 |
book_categories |
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_categories |
varchar |
64 |
0 |
Y |
N |
图书类别 |
|
5 |
cover |
varchar |
255 |
0 |
Y |
N |
封面 |
|
6 |
stock |
int |
10 |
0 |
Y |
N |
0 |
库存 |
7 |
author |
varchar |
64 |
0 |
Y |
N |
作者 |
|
8 |
press |
varchar |
64 |
0 |
Y |
N |
出版社 |
|
9 |
book_introduction |
text |
65535 |
0 |
Y |
N |
图书介绍 |
|
10 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
11 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
12 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
13 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
14 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表book_return (图书归还)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
book_return_id |
int |
10 |
0 |
N |
Y |
图书归还ID |
|
2 |
borrowing_form_number |
varchar |
64 |
0 |
Y |
N |
借阅单号 |
|
3 |
book_number |
varchar |
64 |
0 |
Y |
N |
图书编号 |
|
4 |
book_name |
varchar |
64 |
0 |
Y |
N |
图书名称 |
|
5 |
user |
int |
10 |
0 |
Y |
N |
0 |
用户 |
6 |
borrowed_quantity |
varchar |
64 |
0 |
Y |
N |
借阅数量 |
|
7 |
return_time |
datetime |
19 |
0 |
Y |
N |
归还时间 |
|
8 |
return_remarks |
text |
65535 |
0 |
Y |
N |
归还备注 |
|
9 |
examine_state |
varchar |
16 |
0 |
N |
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: |
表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已取消 |
表registered_users (注册用户)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
registered_users_id |
int |
10 |
0 |
N |
Y |
注册用户ID |
|
2 |
gender |
varchar |
64 |
0 |
Y |
N |
性别 |
|
3 |
age |
varchar |
64 |
0 |
Y |
N |
年龄 |
|
4 |
full_name |
varchar |
64 |
0 |
Y |
N |
姓名 |
|
5 |
examine_state |
varchar |
16 |
0 |
N |
N |
已通过 |
审核状态 |
6 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
7 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户ID |
8 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
9 |
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 |
|
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 |
更新时间: |
系统的登录窗口是用户的入口,用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。
登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后发送登录请求,调用src下的mainctrl类的dopost方法来验证。
用户登录模块的IPO如下所示:
输入:用户名和密码。
处理:
1)检测用户输入的账号、密码是否正确及在数据库已对应存在。
2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。
3)根据用户名,将其显示在系统首页上。
输出:是否成功的信息。
登录流程图如下所示。
图5-1登录流程图
系统登录界面如下所示。
图5-2系统登录界面
系统呈现出一种简洁大方的首页:界面简约、鳞次栉比,用户能轻车熟路的使用。出于对系统使用群体广泛的顾虑,应有良好性能的后台。
管理员登录进入图书管理系统可以查看:后台首页,轮播图管理,网站公告管理,资源管理(图书资讯,资讯分类),系统用户(管理员,注册用户),模块管理(图书分类,图书信息,图书借阅,图书归还)等内容,如下图所示。
图5-3管理员功能界面图
系统用户,在此页面可以查看用户名、昵称、姓名、性别,年龄等信息,并可根据需要进行添加、重置或删除操作,如下图所示。
图5-4用户管理界面图
图书资讯,在此页面可以维护管理图书资讯,包括标题,封面图,文章分类,标签等信息,并可根据需要进行添加、重置或删除操作,如下图所示。
图5-5图书资讯界面图
图书信息,在管理页面中可以查看图书编号,图书名称,类型, 封图,库存,作者,出版社等信息,并可根据需要进行添加、重置或删除操作,如下图所示。
图5-6图书信息管理界面图
图5-7图书信息添加界面图
图书归还,在此管理页面可以查看、维护管理图书归还信息,包括借阅单号,图书编号,名称,用户,借阅数量,归还时间等信息,并可根据需要进行添加、重置、删除或审核操作,如下图所示。
图5-8图书归还管理界面图
图5-9图书归还审核界面图
注册用户登录进入图书管理系统可以查看首页,网站公告,图书资讯,图书信息,我的(我的账户,我的收藏,个人中心),图书借阅,图书归还等内容,如下图所示。
图5-10注册用户功能界面图
图书资讯,可以通过筛选,排序,局部搜索等方式查找图书资讯,在详情页面可以进行点赞,收藏,评论等操作,如下图所示。
图5-11图书资讯列表界面图
图5-12图书资讯详情界面图
图书信息,用户可以通过关键字搜索,类别选择,排序等方式查找图书信息,在详情页面可以进行点赞,收藏,评论,借阅等操作,如下图所示。
图5-13图书信息列表界面图
图5-14图书信息详情界面图
图5-15图书借阅界面图
图书归还,用户归还图书时可以在后台填写归还信息,等待管理员审批,如下图所示。
图5-16图书归还界面图
在对该系统进行完详细设计和编码之后,就要对图书管理系统方案的程序进行测试,检测程序是否运行无误,反复进行测试和修改,使之最后成为完整的软件,满足用户的需求,实现预期的功能。
在软件的测试过程中,通常测试人员需要针对不同的功能模块设计多种测试用例。通过测试用例能够及时发现代码业务逻辑上是否与真实的业务逻辑相对应,及时发现代码上或逻辑上的缺陷,以此来来完善系统,提高软件产品的质量,使软件具有良好的用户体验。
登录测试用例表如下所示。
表6-1登录测试用例
测试性能 |
用户或操作员登录系统 |
||
用例目的 |
测试用户或操作员登录系统时功能是否正常 |
||
前提条件 |
进入用户登录页面或操作员登录页面 |
||
输入条件 |
预期输出 |
实际情况 |
|
各项信息不予填写,直接点击登陆按钮 |
不允许登录,提示填写账号相关信息 |
一致 |
|
填写错误的登录名或密码后点击登录系统 |
提示用户名或密码错误,要求重新填写进行登录 |
一致 |
|
填写与验证码信息不一致的信息 |
系统显示出提示信息,表明验证码错误,要求重新填写 |
一致 |
表6-2用户管理测试用例
测试性能 |
注册用户相关信息管理功能 |
||
用例目的 |
测试系统操作者对注册用户相关信息进行管理的功能是否正常 |
||
前提条件 |
登录系统进入相关管理页面 |
||
输入条件 |
预期输出 |
实际情况 |
|
进入注册用户管理界面,点击“录入”按钮,填写所有必填项,点击提交 |
提示“录入成功”,并返回查询界面 |
一致 |
|
进入注册用户管理界面,点击“录入”按钮,未填写一个或者多个必填项,点击提交 |
提示“录入失败”,请填写必填项 |
一致 |
|
进入注册用户管理界面,选择要修改的一条数据,点击该条数据后面的“修改”按钮 |
节目跳转至修改界面 |
一致 |
|
在修改界面,修改可修改项后,点击“提交”按钮 |
提示“修改成功”,并返回查询界面 |
一致 |
|
进入注册用户管理界面,点击某条数据后面的删除按钮 |
提示“是否要删除该数据”,如果用户点击“确定”按钮,则成功删除该条数据,并提示“删除成功”,之后返回查询界面 |
一致 |
经过对此系统的测试,得出该系统足以满足用户日常需求,在功能项目和操作等方面也能满足操作员对于其他用户的管理。但是,还有很多功能有待添加,这个系统仅能满足大部分的需求,还需要对此系统的功能更进一步的完善,这样使用起来才能更加的完美。
至此,图书管理系统的设计开发已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Thinkphp、PHP技术、MYSQL,这些技术都是在以前的学习中学到过,但是实践较少。其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
[1]Shadmehri Mehran,Abedanzadeh Amir,Shafii Mohammad Behshad,Ghasempour Roghayeh,Mohsenzadeh Milad. Development and economic evaluation of a CPVT system with PHP cooling; An experimental study[J]. Energy Conversion and Management,2023,283.
[2]何辉娟.基于大数据的智能图书管理系统的研究与设计[J].电子技术与软件工程,2023(06):222-225.
[3]Irfan Ali Kandhro, Fayyaz Ali, Asif Ali Wagan, Iqra Tabassum M. Ali, Farhan Afzal. Safe and secure: an automated library management system for monitoring book rotation using face recognition[J]. International Journal of Electronic Security and Digital Forensics,2023,15(3).
[4]Shi Yuqing. Application of FCM Clustering Algorithm in Digital Library Management System[J]. Electronics,2022,11(23).
[5]刘源昭,陈伟,曹俊杰,李鹏宇,李英杰,许一靖,孙浩铭.基于SSM架构的图书管理系统[J].山西电子技术,2022(03):61-63+76.
[6]卿莉,刘鹏飞,彭光含.高校智慧图书信息管理系统架构设计[J].大众科技,2022,24(04):27-30.
[7]张俊,潘文军.攀枝花学院图书管理系统的设计与实现[J].电脑知识与技术,2022,18(10):63-64.DOI:10.14004/j.cnki.ckt.2022.0786.
[8]Wu Daiwen. The Application and Management System of Scientific Research Projects Based on PHP and MySQL[J]. Journal of Interconnection Networks,2022,22(Supp02).
[9]王佳珺.基于Java的校园图书管理系统程序设计[J].电脑知识与技术,2022,18(08):60-61+64.DOI:10.14004/j.cnki.ckt.2022.0480.
[10]孙婷婷,邱宏.基于图书管理系统在中小型图书馆使用的思考[J].信息记录材料,2022,23(01):89-91.DOI:10.16009/j.cnki.cn13-1295/tq.2022.01.035.
[11]陈明雪,赵勇,周小丽,邓思风.基于Node.js和Bootstrap的图书管理系统设计与研究[J].现代信息科技,2021,5(24):12-15.DOI:10.19850/j.cnki.2096-4706.2021.24.004.
[12]林辉.基于Java Web的渭南市大荔县图书管理系统的设计与实现[J].电子设计工程,2021,29(24):155-158+163.DOI:10.14022/j.issn1674-6236.2021.24.032.
[13]尹慧,段华琼.基于C语言的图书管理系统的设计与实现[J].信息与电脑(理论版),2021,33(23):116-118.
[14]胡素娟.基于Java图书管理系统的设计与实现[J].信息记录材料,2021,22(12):161-163.DOI:10.16009/j.cnki.cn13-1295/tq.2021.12.044.
[15]管峰,陈昌.北京天文馆图书管理系统的设计与实现[J].内蒙古科技与经济,2021(21):69-70.
[16]李敏.条形码技术在高校图书信息管理系统中的运用[J].信息记录材料,2021,22(11):194-195.DOI:10.16009/j.cnki.cn13-1295/tq.2021.11.091.
[17]刘雍,王哲河,焦赛美,杨波.基于C语言的图书管理系统设计研究[J].信息与电脑(理论版),2021,33(20):87-89.
[18]黄波.基于PHP+MySQL图书管理系统设计与实现[J].信息与电脑(理论版),2021,33(19):124-126.
[19]叶淑然.图书管理信息系统的设计与实现[J].电子技术与软件工程,2021(16):182-183.
[20]Vijayasarveswari V.,Chyin Lim Jia,Wafi N. M.,Iszaidy I.. Development of E-Healthcare Management System using PHP, Javascript and Cascading Style Sheets[J]. Journal of Physics: Conference Series,2021,1962(1).
时间过的很快,不知不觉,在大学的学习生活即将结束。毕业之际,我真诚地向帮助过我的老师、家人、同学、朋友们表达感谢。首先要感谢的是我的母校。感谢母校给了我美好的生活和优越的学习环境,使我能学到了很多知识,也不断的变得优秀;感谢家人在这四年期间一直给与我的爱和无条件的支持,让我没有后顾之忧地完成学业;感谢任课老师们给我鼓励和认可,让我有信心去做好每一件事情;感谢同学们的帮助,让我的大学生活更有意义。在此次毕业设计的实现过程中, 我得到了老师们的耐心指导让我顺利完成了该设计。从最初的选题和开题开始,老师就给予我很多帮助,他们认真负责的态度、丰富的教学经验让我学到了很多。
同时也要感谢我敬爱的班主任和实训课程的老师,他们在各个方面都教给了我丰富的经验,在面对各种困难时如何处理。因为今年的特殊性,老师们不仅在学习中给我以精心的指导,同时还在其它方面给予我观关怀,指导老师不辞辛苦的为大家录制视频和一遍遍讲解让我心怀感激之情。在此,我真诚的感恩、感谢我的指导教师们。
还要感谢实习期间不厌其烦教导我鼓励我的技术师傅,他指导了我各个方面的技巧,尤其是编程方面,迄今我的很多技巧和编写规范都有赖于他的指导、纠正。
最后还要特别感谢身边的各位同学们,一直支持鼓励我,无论何时何种境况。我很荣幸获得同学们的帮助,也很开心能够和大家共度大学四年的时光。最后的最后,再次发自肺腑的感谢所有帮助过我的人。
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-