基于ThinkPHP框架的校园一卡通系统设计与实现

目 录

摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 框架技术 3
1.1.1 Bootstrap 3
1.1.2 ThinkPHP框架 3
1.2 前端技术 4
1.2.1 JavaScript 4
1.2.2 ECharts 4
1.3 B/S架构 4
1.4 数据库技术 5
1.4.1 MySQL 5
1.5 本章小结 6
2 系统分析 7
2.1 功能需求分析 7
2.2 非功能需求分析 8
2.3 用例分析 8
3 系统设计 11
3.1 系统概要设计 11
3.1.1 系统体系结构 11
3.1.2 系统功能结构 11
3.2 系统详细设计 12
3.2.1 数据库设计 12
3.2.2 系统功能设计 15
3.3 本章小结 16
4 系统实现 17
4.1 开发环境 17
4.1.1 用户环境 17
4.1.2 其它要求 17
4.2 开发规范 17
4.2.1 命名规范 17
4.2.2 数据表规范 17
4.2.3 其它规范 17
4.3 系统功能实现 17
4.3.1 系统实现所用技术 17
4.3.2 部分功能效果展示 18
4.4 本章小结 24
5 系统测试 25
5.1 测试计划 25
5.2 登录模块测试 25
5.3 图书馆模块测试 25
5.4 教室租用模块测试 26
5.5 压力测试 26
5.6 本章小结 27
结 论 28
参考文献 29
致 谢 31

摘 要

21世纪信息技术的迅猛发展,标志着人类科技也进入了信息化时代。校园的安全性与学生生活便利性需求也在急剧提高。当今,使用人工管理信息的成本过高,迫切需要使用信息技术化的手段来为降低成本。在这种情况下,通过市场调研得知。传统校园卡功能限制较多,成本较高,丢失后会严重影响学生使用。
为了更好的完善与改进校园一卡通系统,使校园一卡通具备多种功能性。本文设计了一款配套的软件系统,在传统校园一卡通的基础上增加了部分功能,如校园卡的支付模块设计、宿舍考勤模块设计等。后台管理人员通过使用本系统,可以清晰明确的了解学生的行为习惯与归寝时间,根据学生日常喜好,制定学生喜欢的课外活动。从而一定程度上回避晚归寝现象的出现,保证学生可以按时回到寝室确保其安全。本文采用B/S体系架构,选择ThinkPHP框架作为系统的框架支持,该框架的性能好,具有稳定、扩展能力强等特点。本文的数据库采取MySQL作为校园一卡通系统的数据库的支持。前端页面采取ECharts可视化图表技术进行数据展现。
系统经过多层次的、多方面的系统测试。从各大功能模块、系统底层编码进行了严格的规范化处理。最终,校园一卡通系统中各部分功能已基本实现,可以在日后投入实际使用。

关键词:校园一卡通;宿舍考勤; 支付; ThinkPHP

Abstract

The rapid development of information technology in the 21st century marks that human technology has also entered the information age. The security of campus and the convenience of students’ life are also increasing rapidly. Nowadays, the cost of using human management information is too high. There is an urgent need to use information technology to reduce costs. In this case, it is known through market research. The function of traditional campus card is more limited, the cost is higher, the loss will seriously affect the use of students.
In order to better improve the campus card system, so that the campus card has a variety of functions. This paper designs a supporting software system, which adds some functions on the basis of the traditional campus card, such as the design of the payment module of the campus card, the design of the dormitory attendance module and so on. Through the use of this system, the background managers can clearly understand the behavior habits of students and the time of returning to bed. Make extracurricular activities that students like according to their daily preferences. In order to avoid the phenomenon of returning to bed late to a certain extent, to ensure that students can return to the dormitory on time to ensure their safety. In this paper, B/S architecture is adopted, and ThinkPHP framework is selected as the framework support of the system. The performance of the framework is good, and it has the characteristics of stability and strong expansion ability. The database of this paper adopts MySQL 56 as the support of the database of the campus card system. The front-end page adopts ECharts visual chart technology for data display.
The system has been tested in many levels and aspects. From each big function module, the system bottom coding has carried on the strict standardization processing. Finally, the functions of each part of the campus card system have been basically realized and can be put into practical use in the future.

Keywords: Campus card; Dormitory attendance; payment; ThinkPHP

引 言

随着工业革命带来的劳动力大幅度解放,计算机技术也迅猛的发展了起来。计算机技术的高速发展也标志着信息时代的到来,信息时代对传统的教育体系产生了深远的冲击。[1]如今,校园一卡通作为校园生活的一项重要组成部分,也在时刻影响着学生们的日常生活[2]。 “去卡化”这一概念也孕育而生。
所以基于这一概念,需要开发一款符合学生校园日常生活习惯的软件系统[3],为方便学生开发的校园一卡通系统的重要意义分为两大方面。一方面是方便学生缴纳日常生活所需费用、查看图书馆借书情况、图书馆重要公告与教室租用。管理员可以从后台管理系统发布图书馆公告,学生可以阅读图书馆公告,从而得知发布的重要消息。另一方面提高学生使用校园卡的频率,有助于校方跟踪校园内的资金流动[4]。从而了解学生的消费习惯,未来可以通过数据挖掘等手段对这些数据进行分析与跟踪。来了解学生的业余兴趣爱好,开展丰富的校园活动。
该系统着重以方便学生日常生活为第一目标,开发该系统的主要意义可以分为以下二点:
第一点,该系统的主旨是为了方便学生的日常生活。系统将校园卡与生活费用紧密联系在一起。实现与传统校园卡不同的“去卡化”的目的。学生即可跟随时代的潮流,使用学生自己的智能手机进行校园消费生活。不必随身携带IC卡进行校园的身份认证。为学生的出行及日常生活提供了大幅度的便利。
第二点,由于使用校园卡系统,校方可以最大程度上的保证学生校园卡内的资金与学生的隐私安全。[5]避免学生的隐私与资金安全暴露在违法软件中。从而被不法之徒利用学生的隐私信息,进行一些违法的交易。使学生自身暴露在危险之中。
从市场需求上来说,传统的校园卡是使用智能物联网技术的一张IC卡片。这张小巧的IC卡片中存储着学生的隐私信息与资金,校园卡一旦丢失,学生需要到财务处亲自办理挂失手续。在此期间,拾取到该卡的人可以使用IC卡内的资金进行消费,同时学生的信息也存在着隐私泄露风险[6]。面对这种需求的不断增长,结合互联网、Web等先进的技术,急需为实现校园卡“去卡化”这一概念提供了一个经济、高效的系统管理平台。
本文的书写顺序严格按照目录的体系结构进行,遵循由浅到深的体系结构。并且逐步分析、解读系统所实现的功能、采用的技术及系统的使用意图。
本文的第1章介绍系统开发时所使用到的相关技术。其中包括ThinkPHP框架、MySQL数据库;前端使用JavaScript、ECharts、B/S架构、Bootstrap框架技术。详细说明了这些技术的优点与特点,并在本章小结进行了统一概括论述。第2章对系统进行分析。系统分析包括需求分析、非需求分析及用例分析[7],同时根据市场需求分析并结合用例图、用例表进行描述分析。第3章是对系统的概要设计与详细设计,其中包括系统的结构设计、模块设计、数据库设计。结合实体关系图、数据表、时序图、状态图、结构图进行详细叙述。第4章是叙述系统的实现。按照顺序从系统运行所需的用户环境、系统反馈时长、系统开发规范、系统涉及的相关技术及系统实现的功能展示。第5章是对系统的功能测试。包括制定系统的测试计划、对系统进行压力测试与系统测试时使用的测试用例。

1 相关技术

1.1 框架技术
1.1.1 Bootstrap
Bootstrap是将HTML、CSS、JavaScript相结合在一起使用的前端框架模板技术。该模板技术加强了三种技术的优点,也大幅度降低了三种技术的使用门槛。这样的一款前端框架,为软件的网页开发工作奠定了基础。使网页制作所需要的周期大幅度缩减。同时消除了网页之间的兼容性差、不易扩展与升级等问题。
Bootstrap的最大特点就使响应式网页布局。可根据使用者的设备大小进行自适应调节。减少了开发者对不同浏览器与设备兼容性的忧虑。并且Bootstrap拥有大量的精美模板,保证了页面风格的整体美观度。同时Bootstrap可以随意使用已经设计好的CSS文件与JS文件。通过自由组合CSS文件与JS文件做出全新的动画效果。
Bootstrap框架采用栅格布局技术、响应式应用技术、表格应用技术等对前端页面进行设计。这样可以保证前后端交互的统一性与协调性。
1.1.2 ThinkPHP框架
ThinkPHP框架是一款开发速度快、框架结构简单,基于MVC设计模式与面向对象的轻量级PHP开发框架。该框架准许开源的原则,免费并时刻保持更新来完善框架内容。ThinkPHP框架秉承着简洁、实用的设计原则, 使ThinkPHP框架具有高度的易用性、扩展性的特点。
ThinkPHP框架具有很强的兼容性。ThinkPHP框架是一款性能优秀的基于XML的编译型模板引擎。同时该框架还支持多种类型的模板标签,它吸收了传统的JSP标签库的思想。
ThinkPHP框架还具备很强的扩展性。通过安装不同的驱动插件还可以多种第三方模板引擎。比如Smarty、EaseTemplate、TmplateLite、Smart等。
ThinkPHP也采用三层架构模式,分为表现层、业务层与数据层。符合MVC的编程思想。大幅度提高了代码的可重用性,保持各模块之间的独立性,避免影响到其他模块的正常进行。
ThinkPHP最大的优点就是拥有丰富的文档资料。该框架由国内团队进行编写,框架的编写思路上大体保持一致。并且文档拥有大量的注释易于学习和理解。
1.2 前端技术
1.2.1 JavaScript
JavaScript于1995年的Netscape公司设计的成。随着其多年的发展与扩展,JavaScript于2012年已支持全部浏览器。
JavaScript是一种具有函数优先的轻量级。解释型或即时编译型的高级编程语言。其已经被广泛使用在Web应用开发当中。常用来为网页添加五花八门的动态效果功能。与HTML形成密不可分的关系。通过在HTML中嵌入自身代码,从而实现人机交互的效果。
JavaScript分为三大部分ECMAScript,文档对象模型、浏览器对象模型。他们分别处理JavaScript中的语法与对象、处理HTML页面的内容、与浏览器进行交互。
1.2.2 ECharts
ECharts,是一款基于JavaScript 实现的可视化图表库。ECharts功能强大,支持在多平台、多领域进行可视化数据展示工作。市场上的浏览器都可流畅运行。ECharts底层架构采用的是矢量图形库 ZRender。该图形库提供的图形直观、且与用户的交互感强,用户可以根据自己的需求及需要调整可视化图表的样式及内容。
ECharts 提供了许多经常会使用的图形。比如常见的折线图、柱状图、散点图、饼图等图表数据。ECharts也经常被使用于地理数据的可视化的描述。其包含地图、热力图、线图。他们可以精确描述关系数据。并且ECharts具有很好的兼容性,支持多种图与图之间的混合运用。
ECharts将数据库中的数据以丰富多彩的图形的方式,形成可视化的数据图表。可视化的数据显示更加符合用户的使用习惯,更加符合人性化、以人为本的设计原则。
ECharts经常与流行的前端模板进行相互结合,比较常见的就是与Bootstrap模板、Layui模板相互结合使用。
1.3 B/S架构
B/S架构即浏览器与服务器架构模式,B/S架构是随着WEB技术发展中出现的一种网络架构。该架构最大的优点就是不需要在客户机上安装相应的软件系统,属于对C/S架构体系的一种改进。通过在服务器上安装Oracle、MySQL、SQLServer、NoSQL等主流服务器软件。将系统功能实现的核心部分集中部署到服务器上。这种架构体系结构,大幅度的降低了软件系统的维护与开发成本。用户只需要在设备上使用Firefox、Google等浏览器即可进行操作,用户操作的数据会同步保留在服务器里。
B/S架构的每个节点都分布在网络上,B/S架构分为浏览器端、服务器端和中间件,通过它们之间的链接和交互来完成系统的功能任务。三个层次的划分是从逻辑上分的,在实际应用中多根据实际物理网络进行不同的物理划分。
浏览器端:即用户使用的浏览器,是用户操作系统的接口,用户通过浏览器界面向服务器端发出请求,并对服务器端返回的结果进行处理并展示,通过界面可以将系统的逻辑功能更好的表现出来。
服务器端:提供数据服务,操作数据,然后把结果返回中间层,结果显示在系统界面上。
中间件:这是运行在浏览器和服务器之间的。这层主要完成系统逻辑,实现具体的功能,接受用户的请求并把这些请求传送给服务器,然后将服务器的结果返回给用户,浏览器端和服务器端需要交互的信息是通过中间件完成的。[8]
1.4 数据库技术
1.4.1 MySQL
MySQL是一款关系型数据库管理系统。如今性能强大、复杂、安全级别越高的数据库有很多种。比如Oracle、SQLServer、NoSQL等。然而MySQL数据库并不是最完美的那个,但MySQL是当今中小型企业的中流砥柱。其中一个重要原因就是MySQL是一款开源的数据库系统,其功能简洁明了。易于操作人员理解与使用。并且拥有全球各地的开发者进行维护与完善。
MySQL包含的索引功能有普通索引、唯一索引、主键索引。索引功能虽然会占用部分存储空间与计算空间。但是,有效的索引就好比数据库的地图,可以快速精确的定位到数据存储的单元。从而提高了数据库检索的效率。[9]
作为一款全球广泛使用的数据库系统,其具有很强的容灾功能。由于机房断电、人为失误等危险发生时,可以进行数据回滚。保证数据的安全性。这对开发人员无疑是一份安全保障。
1.5 本章小结
本章主要介绍了本文系统所使用的核心技术,从Bootstrap、ThinkPHP、MySQL、JavaScript、ECharts、B/S架构体系逐一进行了分析与介绍。将所选用的技术功能的优点及自身的特点进行了详细的描述。这些描述可以更加清晰直观的了解系统的组成。
并且分析了选用这些技术的理由。比如,Bootstrap模板就具备大量的HTML、CSS、JavaScript的基础内容。可以使开发者快速进行网页的开发与布局。不用从0开始对页面进行设计。
ThinkPHP框架具备易使用、兼容性高等特色。ThinkPHP框架在保持着这身的独有的处理机制的特点,同时还兼容多个开发平台。使开发者可以在不同的开发平台完成自己所需的软件开发任务。同时ThinkPHP框架更新速度快,框架自身的漏洞能够及时反馈并修复更新。
ECharts可视化图表使系统的数据更加直观的可以观察到。从而易于使用者进行理解系统功能。ECharts同时具备多种不同的可视化模式,开发人员可以根据需求自行调节。具有很高的自由度。
系统选用B/S架构的最大优点就使可以减轻用户端的压力。用户无需安装软件即可登陆系统进行操作。借助服务器的高效数据处理能力,服务器将数据经过逻辑处理后统一发送给用户。这样可以有效减少数据传递所消耗的时间。

2 系统分析

2.1 功能需求分析
本系统是一款针对学生日常生活所设计的系统。通过亲身使用及市场调研与观察,深入了解与挖掘了其中关系模式及特点[10]。最后系统划分为两种身份,即学生身份与管理员身份。
根据不同身份,不同身份的账号可以访问不同的使用主界面。为不同需求的人群提供不一样的服务。并由系统管理员统一进行信息管理与处理。保证整个系统的协调统一,让整个系统平台建设变得更加简洁、结构化。
由校方使用系统进行统一管理,可以确保学生在校园卡中的资金安全与学生隐私安全。保证学生隐私不会因为信息泄露而遭受损失。最大程度上满足校方与学生管理与生活的需要,从而实现校园一卡通去卡化[11]。
系统为管理人员提供的功能。管理员账号不能通过注册模块进行注册。需要通过Admin管理员(主管理员)通过后台管理员信息管理进行添加、删除、修改、查询管理员信息。保证系统的管理层面的协调性、统一性,避免出现数据错乱等现象。[12]其他管理员们可以通过后台带的管理员操作日志来判断其他管理员对系统后台进行的操作。管理员需要可以管理图书馆、宿舍、空闲教室的信息、学生信息。
图书馆信息管理是指管理员可以发布图书馆公告与修改图书馆开放时间。管理员可以发布图书馆公告通知想要前往图书馆学习的学生,及时准确的发布图书馆当前的情况信息,实现信息的高速传递。
宿舍信息管理可以有效观察到宿舍学生的归寝情况与请假情况。管理员通过归寝信息,可以精准快速的确定哪些宿舍楼的同学请假和晚归寝室同学的数量。与宿舍管理者进行联络。确保学生的在校安全。
空闲教室信息管理是指管理员可以对教室的情况进行管理。学生可以通过申请空闲教室来进行自习。当紧急事件需要占用教室时,管理员可以强制修改教室的占用状态。为需要借用教室自习的同学提前提供消息,节约了学生寻找教室的时间。
管理员可以通过后台系统对学生信息进行增加、删除、修改与查询的操作。通过学生的姓名、电话、所在宿舍楼进行信息的管理。可以清理无用账号,也可以帮助学生修改信息。
系统为学生提供的功能。新用户需要通过注册模块注册新账号。按照要求输入账号、密码、手机号、性别、所在宿舍楼等信息,即可成功注册学生信息。再通过登录模块,选择对应的身份信息进入到学生主页面。学生主页面包含宿舍归寝签到、消费充值、教室租用、请假申请。
学生通过调用百度地图来定位自身所在位置与学校的地理位置信息进行比较。如果当学生的定位位置信息与学校的地理位置信息误差不超过5°。即可视为归寝签到成功。为了实现去卡化的概念,在线消费充值是必不可缺的[13]。由于目前微信、支付宝并不面向个人开放支付接口,所以本系统采用余额的方式进行充值与消费。
学生可以通过该模块进行购物消费、日常餐饮与缴纳水电费等。管理后台会对学生的消费情况进行统计,便于研究学生的消费习惯与财务统计。学生可以通过系统查询教室占用情况,根据学生需要可以通过系统申请空闲教室进行自习。
学生可以通过系统查看图书馆公告,以便第一时间获得图书馆的开闭关信息,合理安排自身时间。也可以系统发出请假申请,在富文本里填写自己的请假原因。管理员可以通过后台系统查看学生的请假原因。
2.2 非功能需求分析
非功能性需求是指本系统可以满足大部分学生的日常生活需要,使用方便、快捷。为了提供用户的体验度,本系统设计了许多提示用来提示用户该操作为错误操作,请勿这样操作。
界面需求方面是指系统需要保持一个明确的主题色调,每个模块之前需要使用其他颜色统一的颜色进行提示,保持页面的整洁美观。确保系统不会对使用者造成不良的心理抵触情绪。尽可能的保持管理员端与学生端界面统一一致。系统需要具备一定的可扩展性与兼容性。[14]
2.3 用例分析
本文系统涉及到后台管理界面与学生端界面。[15]均可以驱动不同身份模式下的功能用例的常规功能。此外,学生与管理人员均需要通过登录模块进行登录。系统会根据输入的账号、密码与选择不同的身份进行身份验证判断。当管理员通过登录模块,正确进行操作后。方可进入到后台管理界面。管理员可以对管理员信息、宿舍信息、图书馆信息、教室信息、学生请假信息、学生信息、支付记录进行相应的管理与查看。如图2.1所示:
在这里插入图片描述

图2.1 后台管理模块用例图
在管理员的7个功能中,后台管理人员可以在管理员、宿舍、图书馆、教室、支付记录、学生请假信息、学生等功能中扩展出增加删除修改查询功能。其中宿舍归寝信息、学生请假信息、支付记录只可进行查看,不可进行删除、增加与修改的操作。如表2.1所示:
表2.1 管理员用例关系表
用例名称 用例关系 用例名称
管理员增删改查 包含 管理员信息操作
宿舍归寝信息查看 包含 信息查看操作
发布图书馆公告 包含 信息发布操作
查看公告详情 包含 信息查看操作
修改图书馆开放时间 包含 信息修改操作
教室信息搜索 扩展 信息搜索操作
教室占用状态修改 包含 信息修改操作
支付记录查看 包含 信息查看操作
学生请假信息查看 包含 信息查看操作
学生信息增删改查 包含 学生信息操作
当学生通过登录模块,输入学生的账号、密码与正确选择学生身份进行操作后。方可进入到学生使用界面。学生可以在系统中使用宿舍归寝签到、消费充值、教室租用、申请请假功能。如图2.2:
在这里插入图片描述

图2.2 学生端模块用例图
在学生可使用的功能中,学生可以进行宿舍归寝签到、对校园卡账户进行充值与消费、申请占用哪间教室、填写请假理由功能。通过不同功能的组合,从而达到便于学生生活的目的。其中教室被占用后,只能让管理员取消其占用状态。如表2.2所示:
表2.2 学生用例关系表
用例名称 用例关系 用例名称
请假申请 包含 信息添加操作
申请教室租用 包含 信息查询操作
教室占用情况查询 扩展 信息查询操作
余额查询 扩展 信息查询操作
余额充值与消费 包含 信息修改操作
学生位置查询 包含 信息查询操作
归寝签到 包含 信息修改操作
查看图书馆公告 依赖 信息查询操作
2.4 本章小结
本章主要讲述了学校与学生对该管理系统的需求分析、非功能性需求及用例描述。系统中以管理员与学生的不同使用视角访问使用该系统。所有的操作都必须通过登录模块的身份验证功能,才能正确的进入对应身份的主页面。从而为不同用户提供不一样的服务功能。并且介绍了系统的非功能性需求,非功能性需求最大程度上保证了用户的使用体验感,确保用户可以在不同的操作系统上使用该系统。提高了用户的留存率与黏稠度。

3 系统设计

3.1 系统概要设计
本系统的设计灵感最初来自于宿舍缴纳水电费需要前往学校的POSS进行刷卡缴纳。由于POSS机距离宿舍较远,路程耗费时间过长。为了让学生可以节约这部分时间,从而设计出校园一卡通系统。
本系统从实际需求进行分析后,结合多方面因素,将系统从宏观上分为管理员端与学生端两大部分。管理员端能够对学生、宿舍、图书馆等信息进行管理,满足了校园信息管理的基本需求。学生端能够缴纳水电费、购物消费等,满足了学生的日常生活所需。从而达到校园一卡通去卡化的目的及效果。
3.1.1 系统体系结构
校园一卡通系统体系结构分为4层,分别为表现层、控制层、业务逻辑层、数据访问层。 [16]
第一层表现层,包括用户方面使用到的浏览器、设备版本型号、硬件、软件等。本系统前端为Bootstrap模板、JavaScript、ECharts结合使用。可以清晰直观观察到页面的变化与数据变化情况。
第二层为控制层,该层主要处理模块中的ID信息,用于处理批量删除数据、条件查询等信息。分别独立控制这些数据信息,有效提高各个功能的强度与独立性。
第三层业务逻辑层,通过接收控制层提供的数据信息,并进行业务逻辑处理。将处理后的结果发送给表现层与数据访问层。
第四层数据访问层,主要是用来接受业务逻辑层的处理结果和对MySQL数据库的访问操作以及持久化框架[17]。
3.1.2 系统功能结构
根据系统功能需求,将校园一卡通系统划分为后台管理模块与学生端模块两大部分[18]。后台管理模块包括操作记录显示功能、管理员信息管理功能、图书馆信息管理功能、教室信息管理功能、支付记录查看功能、学生信息管理功能、学生请假信息查看功能。
学生端模块内可以分为宿舍归寝签到功能、消费充值功能、教室租用功能、请假申请功能、图书馆公告查看功能。总体结构功能图如图3.1所示:
在这里插入图片描述

图3.1 总体功能结构图
3.2 系统详细设计
3.2.1 数据库设计
本项目设计了20张数据表,包含学生信息表、宿舍楼信息表、管理员信息表、图书馆信息表等多张数据表。其中数据库包含3个多对多关系,11个外键信息,15个一对多关系。数据库的实体关系图[19]如图3.2所示。
数据库的逻辑结构设计如表3.1至3.8所示,本文选择了一些系统中较为重要的表进行了介绍。分别介绍了每张表包含多少个字段,每个字段的类型与限制条件。并简单介绍了每张数据表的功能及部分数据表之间的联系关系[20]。
如表3.1中有3个字段,adminid整形字段、adminname字符串字段、adminpassword整形字段。该表主要是为了保存管理员信息,当需要添加新的管理员信息时,都会将新的管理员账号、密码及身份添加到该表中。管理员的账号只能通过后台管理员进行添加,无法通过系统的注册模块进行账号注册。避免了管理员身份出现混乱的情况。
在这里插入图片描述

图3.2 系统实体关系图
表3.1 管理员信息表
字段名 类型 约束 描述
adminid Int(11) PK、NN、AI 序号
adminname Varchar(45) Not null 管理员用户名
adminpassword Int(11) Not null 管理员密码
表中有8个字段,所有字段不允许为空。userid为自增长且不允许为空。当用户通过注册模块进行注册操作可以访问该用户数据表。hosteid外键与hoste表相互联系,确定学生的宿舍楼。用户数据表如表3.2所示:
表3.2 用户信息表
字段名 类型 约束 描述
Userid Int(11) PK、NN、AI 序号
username Varchar(45) Not null 用户名
password Int(11) Not null 用户密码
sex Int(11) Not null 性别
phone Int(11) Not null 手机号
user_balance DECIMAL(10,2) Not null 余额
hosteid Int(11) Not null 宿舍楼外键
student_name Varchar(45) Not null 学生真实姓名
表中有4个字段,所有字段不允许为空。student_msgid为自增长且不允许为空。当学生通过请假申请模块发出请假理由,会访问请假信息数据表。数据表如表3.3所示:
表3.3 学生请假信息表
字段名 类型 约束 描述
student_msgid Int(11) PK、NN、AI 序号
student_name Varchar(45) Not null 请假学生姓名
student_time Int(11) Not null 请假时间
msg Varchar(45) Not null 请假内容
表中3个字段,所有字段不允许为空。Library_msgid为自增长且不允许为空。当管理员发布图书馆公告或学生查看图书馆公告,会访问该数据表。数据表如表3.4所示:
表3.4 图书馆公告信息表
字段名 类型 约束 描述
Library_msgid Int(11) PK、NN、AI 序号
msg Text Not null 公告内容
Library_msg Varchar(45) Not null 公告标题
表中有3个字段,所有字段不允许为空。classroomid为自增长且不允许为空。当学生通过教室租用模块发出租用申请的时候,先会访问教室信息数据表。数据表如表3.5所示:
表3.5 教室信息表
字段名 类型 约束 描述
classroomid Int(11) PK、NN、AI 序号
classroom_name Varchar(45) Not null 空闲教室名称
classroom_state Int(11) Not null 教室状态
表中有4个字段,所有字段不允许为空。user_classroomid为自增长且不允许为空。其中classroomid与userid分别是classroom表与user表的外键。当学生申请租用教室时和管理员修改占用教室状态时,会访问该数据表。数据表如表3.6所示:
表3.6 教室与学生关系表
字段名 类型 约束 描述
user_classroomid Int(11) PK、NN、AI 序号
classroomid Int(11) Not null 空闲教室外键 id
userid Int(11) Not null 学生外键
state Int(11) Not null 状态
表中有5个字段,所有字段不允许为空。daily_recordid为自增长且不允许为空。其中adminid是admin表的外键。当管理员进行操作时,都会将操作内容添加到该表中。数据表如表3.7所示:
表3.7 操作日志表
字段名 类型 约束 描述
daily_recordid Int(11) PK、NN、AI 序号
adminid Int(11) Not null 管理员操作的ID
op_type Varchart(45) Not null 操作类型
op_time Int(11) Not null 时间戳
msg Varchart(45) Not null 内容
表中有6个字段,所有字段不允许为空。hosteid为自增长且不允许为空。宿舍信息表会根据学生归寝签到情况进行统计信息。当管理员查看归寝信息时,会访问该数据表。数据表如表3.8所示:
表3.8 宿舍信息表
字段名 类型 约束 描述
hosteid Int(11) PK、NN、AI 序号
hostename Varchar(45) Not null 宿舍楼名称
hostenumber Int(11) Not null 宿舍楼编号
student_later Int(11) Not null 晚归寝人数
school_student Int(11) Not null 在校生人数
student_leave Int(11) Not null 学生请假人数
3.2.2 系统功能设计
宿舍考勤模块是指通过调用百度地图API接口与学生设备的定位功能。得到学生自身所在位置与学校位置进行对比并签到的模块。
该模块主要用于统计学生是否出现晚归寝的事件。学生通过登录模块,正确选择身份后。进入学生主页面,点击左侧的“宿舍归寝签到”进入宿舍考勤模块。
首先,需要开启学生设备中的定位功能。在通过调用百度地图API中的浏览器定位功能[21]将学生的地理位置在地图上标记出来。并将学生的经纬度存储到数据库中。通过查询数据库中存储的学校的经纬度进行比对。如果学校与学生的经纬度的误差范围在5°以内,系统会修改学生的归寝状态。学生归寝具有拥有2种状态。分别是“归寝成功”,“归寝失败”这俩种状态。宿舍考勤模块状态图如图3.3所示:
在这里插入图片描述

图3.3 宿舍考勤模块状态图
学生支付模块是指学生使用账户里的余额进行校园消费[22]。学生通过登录模块,正确选择身份后。进入学生主页面,点击左侧的“消费与充值”进入到支付模块中。学生购买商品,系统会先查询出账户余额与商品的价格,并将他们进行比对。如果学生购买超出余额的商品,会提示“余额不足”。支付模块的UML时序图如图3.4所示:
在这里插入图片描述

图3.4 支付模块UML时序图
3.3 本章小结
本章主要描述了系统的整体设计思路,系统的设计理念以及重要的数据表结构设计。本章主要介绍了系统的部分功能模块,如宿舍考勤模块、学生支付模块。并利用状态图、时序图进行模块功能的辅助说明。从而将模块功能表述出来。

4 系统实现

4.1 开发环境
4.1.1 用户环境
服务器硬件方面CPU要求I5处理器及以上,运行内存要求不低于512MB;硬盘要求不低于30GB;服务器端的操作系统使用的Windows10;数据库服务器要求使用MySQL,使用MySQLWorkbench进行操作。服务器端浏览器要求使用Firefox与Google浏览器。系统软件框架使用ThinkPHP。
4.1.2 其它要求
对于系统访问容量的要求包括系统要求支持的并发用户数不小于20,不大于100;服务器给予的响应时间方面,复杂功能响应时间小于等于400毫秒;简单功能的响应时间小于等于200毫秒。
4.2 开发规范
4.2.1 命名规范
所有名称中不能使用汉字,并且需要具有对应的含义;方法、属性、类名需符合驼峰式的命名规范。类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致。类名和类文件名保持一致,统一采用驼峰法命名(首字母大写)。[23]类库、函数文件统一以.php为后缀。
4.2.2 数据表规范
数据库命名要求一切表明、字段全部小写且不允许出现汉字;数据库每一张表都必须拥有id字段;数据库任何表id字段必须是自增且唯一的。
4.2.3 其它规范
代码的所有缩进都要使用Tab键,而不是使用空格键;if条件语句{与if同行;后端代码需要添加注释来说明代码意图。包括单行注释、多行注释等。导入扩展库的时候要按照ThinkPHP框架导入规范。
4.3 系统功能实现
4.3.1 系统实现所用技术
本系统采用Bootstrap模板作为前端框架模板,Bootstrap模板为系统的前端开发提供了HTML骨架与CSS样式。为系统开发节约了时间。系统在管理员主界面采用ECharts图表技术进行可视化数据展示。通过编写JavaScript脚本用来接收后台赋予页面的数据并导入ECharts中。
系统后端采用ThinkPHP框架进行开发。在开发过程中采用MVC的设计模式。利用控制器Controller来控制视图View[24]。本系统经常使用到框架中的$this->assign、input()方法。这两种方法分别被使用于对页面进行赋值处理与表单值的接收。使用DB包中的DB方法来对MySQL数据库进行操作。实现多表查询、复合查询等操作功能。
通过百度地图API接口获取学生的地理位置[25],再将学生的地理位置信息与数据库中的学校位置信息对比。由于地图定位存在精度误差,参考博客、网站等JS文件的方法对地图定位进行一定程度上的精度修正。尽可能的保持精度误差不会远远偏离目标地理位置。
4.3.2 部分功能效果展示
首先,管理员需要通过登录模块进行身份验证进入系统管理平台。管理员在登录模块界面选择“管理员”身份进行登录操作。管理员正确的其账号和密码。点击“登录后”,将输入的数据发送给后台登录模块。通过查询数据库数据与逻辑运算处理后,管理员可以进入系统的管理员主页面。如果管理员的账号、密码、身份与数据库中的数据不符合。提示账号、密码、身份错误,并重新跳转到登录模块。
系统的登录界面采用黑白作为主要配色。登录界面如图4.1。
为了更加直观的描述登录模块的功能,绘制了系统登录模块的流程图。登录模块流程图如图4.2所示。
在这里插入图片描述

图4.1 登录界面
在这里插入图片描述

图4.2 登录模块流程图
public function loginopt(){
$username = input(‘username’);
$password = input(‘password’);
$Card = input(‘card’);
//根据用户名,从数据库中查询存储的信息
d a t a = D b : : n a m e ( " u s e r " ) − > w h e r e ( ′ u s e r n a m e ′ , ′ = ′ , data = Db::name("user")->where('username','=', data=Db::name("user")>where(username,=,username)->find();
a d m i n d a t a = D b : : n a m e ( " a d m i n " ) − > w h e r e ( ′ a d m i n n a m e ′ , ′ = ′ , admindata = Db::name("admin")->where('adminname','=', admindata=Db::name("admin")>where(adminname,=,username)->find();
if($username != null && KaTeX parse error: Expected '}', got 'EOF' at end of input: …否为空 if(Card ==1){
if ($data[‘username’] == $username && $data[‘password’] == $password && d a t a [ ′ i d c a r d ′ ] = = data['idcard'] == data[idcard]==Card) { //用户重定向到用户页 //成功后并给予提示
$this->success(‘恭喜,用户登录成功’,‘Index/Studentindex’);
}else{
KaTeX parse error: Expected 'EOF', got '}' at position 57: …); }̲ }elsei…Card ==2){
if($admindata[‘adminname’] == $username && $admindata[‘adminpassword’] == $password && a d m i n d a t a [ ′ i d c a r d ′ ] = = admindata['idcard'] == admindata[idcard]==Card){
//重定向到管理员
$this->success(‘恭喜,管理员登录成功’,‘Index/index’);
}else{
$this->error(‘所选身份不符合,请重新选择’,‘Login/login’);
}
}
}else{
$this->error(‘请填写用户名和密码信息’,‘Login/login’);
}
}
在后台管理平台主界面利用ECharts图表技术,可以清晰直观的观察到学生与其他管理的数据。管理后台主页包括对晚归寝、空闲教室数量、在校生人数、请假人数的统计。还包括管理员的操作日志,学生生活费消费统计与校园服务类的消费统计如图4.3所示:
在这里插入图片描述

图4.3 后台管理界面
管理员通过左侧的导航栏,点击左侧的“图书馆管理”即可进入图书馆管理模块。图书馆管理模块包含图书馆公告与图书馆开放时间管理。管理员点击“发布公告”,进入发布公告页面。如图4.4所示。当图书馆成功发布后,在图书馆公告页面会显示出最近发布的公告内容。点击“查看详情”即可查看刚才所发布的内容。如图4.5所示。
在这里插入图片描述

图4.4 发布公告
在这里插入图片描述

图4.5 查看公告详情
发布公告核心代码:
public function libarymsg_insert(){
//发布公告
$arr=Db::name(“libary”)->select();
t h i s − > a s s i g n ( ′ t y p e ′ , this->assign('type', this>assign(type,arr);
//接收富文本文字内容
if(request()->isPost()){
$msg=input(‘content’);
m s g 1 = msg1 = msg1=msg;
$libaryname = input(‘typename’);
$libarymsg = input(‘libarymsg’);
$data = [
‘msg’ => $msg1,
‘libary_name’ => $libaryname,
‘libary_msg’ => l i b a r y m s g , ] ; i f ( libarymsg, ]; if( libarymsg,];if(data != null){
r e s u l t = D b : : n a m e ( ′ l i b a r y m s g ′ ) − > i n s e r t ( result = Db::name('libary_msg')->insert( result=Db::name(libarymsg)>insert(data);
if($result != true){
$this->error(‘发生错误’,‘Libarymsg/Libarymsg_insert’);
}else{
$this->success(‘添加公告成功’,‘Libarymsg/libarymsg’);
}
}
}
return $this->fetch(‘Libarymsg_insert’);
}
查看公告核心代码:
public function Libarymsg_details(){
//详细公告
$passid =input();
//获得id
t h i s − > a s s i g n ( ′ p a s s i d ′ , this->assign('passid', this>assign(passid,passid[0]);
r e s u l t = D b : : n a m e ( ′ l i b a r y m s g ′ ) − > w h e r e ( ′ l i b a r y m s g i d ′ , ′ = ′ , result = Db::name('libary_msg')->where('libary_msgid','=', result=Db::name(libarymsg)>where(libarymsgid,=,passid[0])->find();
t h i s − > a s s i g n ( ′ c o n t e n t 1 ′ , this->assign('content1', this>assign(content1,result[‘msg’]);
return $this->fetch(‘Libarymsg_details’);
}
管理员点击左侧的导航栏进入图书馆管理模块,点击“图书馆开放管理”进入到图书馆开放时间管理功能中,如图4.6。点击“更新开馆闭馆时间”,进入到修改时间页面,如图4.7。利用时间控件即可完成对图书馆开闭馆时间的修改。
在这里插入图片描述

图4.6 图书馆开放时间管理
在这里插入图片描述

图4.7 修改时间页面
管理员通过点击左侧的导航栏进入“教室租用模块”。管理员可以看到所有教室信息和是否被学生占用。通过下方的搜索栏,即可完成对特定教室的修改。如图4.8所示。通过点击更改,即可修改该教室的占用状态。如图4.9所示。修改教室状态的流程图,如图4.10所示。
在这里插入图片描述

图4.8 教室查询与管理
在这里插入图片描述

图4.9 修改教室状态
在这里插入图片描述

图4.10 修改教室流程图
学生通过登录模块,正确选择身份信息进入到“学生主页面”。通过点击左侧的导航栏的“消费充值”。从学生主页面进入到“支付购买页面”。学生主页面如图4.11所示:
在这里插入图片描述

图4.11 学生主页面
学生在支付购买页面,可以对已有的商品进行购买。支付购买页面会显示正在售卖的商品价格、商品名称、商品描述等信息。学生通过点击对应的“购买”按钮。即可完成对对应商品的购买。学生主页面如图4.12所示:
在这里插入图片描述

图4.12 支付购买页面
学生点击”充值”按钮后,会弹出一个小窗口。学生可以在小窗口中输入要给校园卡充值的金额。如图4.13所示:
在这里插入图片描述

图4.13 充值页面
4.4 本章小结
本章主要描述了系统的开发环境、运行环境、开发项目的要求及规范。介绍了项目使用ThinkPHP框架经常使用的内置方法,ECharts、MySQL与百度地图API的使用过程。同时使用流程图辅助描述了登录模块与教室租用模块的使用操作流程,并将系统的功能演示体现了出来。

5 系统测试

5.1 测试计划
本系统的测试计划将分为三阶段,为了保证测试的精确性与普遍性,在每个阶段抽取带有代表性的功能模块,进行随机抽样测试。可以保证测试的数据具有最直观的表现。
选取登录模块进行测试,在后台管理功能选取图书馆模块进行测试,学生端选择教室租用模块进行测试。使用PHPUnit测试工具进行测试。
5.2 登录模块测试
该模块一共分为三种阶段进行测试。第一阶段是测试人员输入正确的账号密码,但没有选择正确的身份情况。观察提示的错误信息与实际页面展示效果。第二阶段是测试人员输入错误的账号密码,身份选择正确的情况。观察提示的错误信息与实际页面展示效果。第三阶段是测试人员正确输入账号密码与身份选择正确。观察是否进入了对应学生的学生端主页面。测试用例如表5.1所示:
表5.1 登录测试用例
用例编号 操作 测试用例 预期结果 实际结果
1 输入学生账号密码正确,
但身份选择错误。 用户名:b7707609
密码:123456
身份:管理员 登录失败 提示“身份选择不正确”
2 输入学生账号密码错误,但身份选择正确。 用户名:1234
密码:234566
身份:学生 登录失败 提示“账号或密码错误”
3 输入学生账号密码正确,但身份选择正确。 用户名:b7707609
密码:123456
身份:学生 登录成功 成功登录到学生主页面
4 任意输入账号密码、任意选择身份。 用户名:sda123
密码:4123
身份:管理员 登录失败 提示“账号或密码错误”
5.3 图书馆模块测试
按照测试计划测试人员分别登录学生账号与管理员账号。在后台管理界面发布图书馆公告与修改图书馆开放时间。测试通过富文本的形式进行图书馆公告的发布,测试时间控件能否对开放时间进行修改。学生端进入图书馆模块来查看不同图书馆的开放时间与发布的公告详情。并根据测试情况,编写了测试用例。如表5.2:
表5.2 图书馆模块测试用例
用例编号 操作 测试用例 预期结果 实际结果
1 富文本框中输入发布的公告内容。 发布公告:测试公告 发布成功 公告发布成功
2 在时间控件中修改开闭馆时间。 修改开闭馆时间为:9:00-18:00 修改成功 开闭馆时间变为9:00-18:00
3 查看图书馆时间与发布公告内容。 查看信息是否显示正确、无误 显示正确 时间、富文本显示正确
5.4 教室租用模块测试
按照测试计划测试人员分别登录学生账号与管理员账号。在后台管理界面对教书租用情况进行修改。学生端进入教室租用模块来对空闲教室进行申请占用。测试用例如表5.3:
表 5.3 教室租用模块测试用例
用例编号 操作 测试用例 预期结果 实际结果
1 改变当前教室被占用状态 状态更改为空闲、占用 成功修改状态 修改教室成功
2 对空闲教室进行申请占用 对教室进行申请 成功占用教室 占用教室成功
5.5 压力测试
本文压力测试使用的是Apache自带的AB工具进行测试。根据不同的使用环境,设置同时每次100名同学并发登录系统进行操作,观察服务器压力情况。由图5.1测试结果可知,本系统可以承担近55200名同学同时进行操作。满足学校可以承担的用户访问数量。
在这里插入图片描述

图5.1 AB工具进行压力测试
5.6 本章小结
本章主要描述了系统功能实现后对系统功能的测试操作。以测试用例的形式进行展示。其中测试的功能点为各个模块随机抽取的3个功能点,分别为登录功能、图书馆管理功能、教室租用功能。系统的抗压能力已达到预期设计要求,能够满足日常生活所需。

结 论

校园一卡通系统是改进传统校园卡的起着重要作用,在传统校园卡基础上配备了准确的、快速的软件系统。对于改善和了解学生的日常生活有重要的意义。为此,本文针对改进传统校园卡,实现去卡化的重要概念,根据市场需求,编码实现了校园一卡通系统。
本文率先介绍了系统使用的相关技术,从Bootstrap、ThinkPHP框架等技术进行介绍。随后针对功能性需求、非功能性需求及相关用例进行了分析。并利用用例图、用例表进行辅助说明。根据需求分析的结果,将系统的功能模块进行展开说明,辅以实体关系图、时序图等进行说明。最终,对系统进行了模块测试与压力测试。保证系统可以稳定、流畅的满足高校业务需求。
本文系统所采用的ThinkPHP框架 、ECharts等技术保证了系统具有可视化、易维护的优势。通过大量的测试结果显示,本系统设计具有合理性。
本系统的设计与实现有效的降低了校园的学生信息管理成本,方便了学生的生活所需,增强了学校对学生日常行为的了解。本文系统还存在一定的不足。比如学生模块存在地图定位的细节问题,这是将来需要进一步完善的工作。

致 谢

有人说,大学的时光是匆匆流逝的时光。论文书写完的这一刻,意味着又走过了一个人生的里程碑。这四年的时光是我人生中精彩又深刻的经历。在这里不仅学习到了许多专业知识与实用的技能。美好的时光总是过的很快,眨眼间我就从刚参加完军训的新生变成走向毕业典礼舞台的毕业生。
这篇论文就是大学生活的结点,在此感谢我的指导老师,李朋老师和王凤伟老师的细心指导。老师们从论文课题的选择、课题的可行性分析、技术支持、论文修改等方面。为了我提供了许多宝贵的修改建议。在老师们的细心指导下,稳扎稳打的完成了这次毕业设计。
同时也要感谢身边的同学、老师和朋友作为我的测试用户,为我提供了宝贵的测试数据。同时不厌其烦的为我测试查找系统当中的不足之处。
毕业设计这个过程不仅让我学习到了很多编程方面的知识,还积累了很多编程经验。由于第一次做毕业设计项目,还有许多不足之处。我会在今后不断改正。在此感谢所有帮助、指导我的人。

参考文献

[1]熊健辉,金路锋.校园一卡通在数字化校园建设中的作用[J].黑龙江科学,2018,9(16):136-137
[2]王西平.基于一卡通大数据对学生行为分析与研究[J].计算机产品与流通,2018(07):176
[3]崔楠楠.数字化校园下的一卡通系统建设探讨[J].才智,2019(26):214
[4]崔媛媛.校园一卡通在高校数字化校园建设中的应用[J].信息记录材料,2019,20(06):169-170
[5]刘强.校园一卡通存在的风险及防范措施[J].船舶职业教育,2019,7(05):84-85
[6]王文珏.校园一卡通系统介绍及优缺点[J].电脑知识与技术,2019,15(32):49-50
[7]梁康,张雪超,高杨.校园一卡通系统的方案设计与管理[J].中国新通信,2019,21(05):77
[8]武强. 基于B/S三层架构下的基层连队管理信息系统的设计与实现[D].长春工业大学,2018
[9]陈年飞,王麒森,王志勃.MySQL数据库中关于索引的研究[J].信息与电脑(理论版),2019(05):175-176
[10]王小娟,黄协,张成.基于数字化校园的校园一卡通构建[J].中国新通信,2017,19(01):122-123
[11]潘仙梅,梁斌,袁媛.高校校园一卡通去卡化趋势分析与展望[J].赤峰学院学报(自然科学版),2019,35(03):166-168
[12]丁洁,贾应炜,苏兴龙,郇林.校园一卡通数据挖掘分析设计与应用[J].自动化技术与应用,2020,39(02):132-137
[13]姚丽.基于校园一卡通建设的高校财务管理问题研究[J].北方经贸,2018(10):83-84
[14]冯乐.虚拟校园卡在高校一卡通系统中的应用与分析[J].价值工程,2018,37(35):198-199
[15]张文增,曾艳丽.基于物联网的校园一卡通的设计[J].电子技术与软件工程,2019(24):13-14
[16]吴昊,刘东旭.数字化校园一卡通系统设计[J].无线互联科技,2018,15(10):58-60
[17]王思沫,汪志龙,谭雨晴,阮庭珅,蒋峰.基于APP端智能校园一卡通系统的设计[J].现代电子技术,2018,41(16):55-58+63
[18]赵子墨.校园一卡通的完善与改革分析[J].中国新通信,2018,20(24):128
[19]Jun Zheng, Jundong Tang, Jiansheng Gao. The Architecture and Application of the Financial Pay Cost Based on the Platform of Campus Card System. 2012, 1:422-427
[20]庞金香.校园一卡通的财务管理管理与研究[J].科技与创新,2018(14):111-112
[21]郁葱.虚拟校园卡助力教育信息化2.0[J].中国新通信,2019,21(21):78
[22]左婷,费杰福.校园一卡通充值与支付变革[J].数字通信世界,2019(11):152
[23]Dingyi Zhuang, Siyu Hao, Der-Horng Lee, et al. From compound word to metropolitan station: Semantic similarity analysis using smart card data. 2020, 114:322-337
[24]Mohamed Mohandes, Mohamed Deriche, Muhammad T. Abuelma’atti, et al. Preference-based smart parking system in a university campus. 2019, 13(2):417-423
[25]Heng Zhang, Qiming Liu. Research and Analysis of Campus Card Consumption Behavior. 2019, 8(4):575-588

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

202441读书笔记|《笠翁对韵》—— 金菡萏,玉芙蓉,酒晕微酡琼杏颊,香尘浅印玉莲双

202441读书笔记|《笠翁对韵》——金菡萏,玉芙蓉,酒晕微酡琼杏颊,香尘浅印玉莲双 《作家榜名著:笠翁对韵》作者李渔,霍俊明。是所有词句都有注音的一本书,轻松学不认识的字,非常朗朗上口的对偶词…

PromptBreeder---针对特定领域演化和发展提示词的方法

原文地址:promptbreeder-evolves-adapts-prompts-for-a-given-domain 论文地址:https://arxiv.org/pdf/2309.16797.pdf 2023 年 10 月 6 日 提示方法分为两大类 硬提示是由人工精心设计的文本提示,包含离散的输入令牌;其缺点…

【Linux】gcc与make、makefile

文章目录 1 gcc/g1.1 预处理1.2 编译1.3 汇编1.4 链接1.4.1 静态链接1.4.2 动态链接 2 make和makefile2.1 依赖关系2.2 依赖方法2.3 伪目标 3 总结 1 gcc/g 当我们创建一个文件,并向里面写入代码,此时,我们该如何使我们的代码能够运行起来呢&…

html--心花怒放

代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Canvas 绘制一个❤</title><link rel"shortcut icon" href"../../assets/images/icon/favicon.ico" type"ima…

C#实现快速排序算法

C#实现快速排序算法 以下是C#中的快速排序算法实现示例&#xff1a; using System;class QuickSort {// 快速排序入口函数public static void Sort(int[] array){QuickSortRecursive(array, 0, array.Length - 1);}// 递归函数实现快速排序private static void QuickSortRecu…

ubuntu自带屏幕截图功能

目录 简介开始截屏步骤1.打开截屏软件2.选择区域3.截图 快捷键 录屏方法11.开始录屏2.停止录屏 方法2 补充说明 简介 试了好多开源跨平台截图软件&#xff0c;但是在ubuntu上都或多或少存在问题。ubuntu有自带的截图软件。打算把ubuntu自带的截图软件用起来。 顺便说一下我使…

B端系统升级,登录页必在升级之列,不容置疑。

进行B端界面升级时&#xff0c;首先升级登录页有以下几个原因&#xff1a; 用户体验&#xff1a;登录页是用户进入系统的第一个页面&#xff0c;用户首先接触到的界面。通过升级登录页&#xff0c;可以提升用户的第一印象&#xff0c;增强用户对系统的信任感和好感度&#xff…

Android Studio编译及调试知识

文章目录 Android Studio编译kotlin项目Android Studio编译Java和kotlin混合项目的过程gradle打印详细错误信息&#xff0c;类似这种工具的使用Android apk 从你的代码到APK打包的过程&#xff0c;APK安装到你的Android手机上的过程&#xff0c;最后安装好的形态&#xff0c;以…

简单形状点云轮廓点排序(旋转角)

1、背景介绍 很多边缘提取算法提取的边缘点为无序点云&#xff0c;如下图所示&#xff0c;无序点云不利于后续各种应用&#xff0c;比如根据边缘计算点云面积、点云轮廓线规则化等。若对点云进行排序&#xff0c;则可以进行上述引用。但实际上&#xff0c;点云形状错综复杂&…

Dubbo 和 Zookeeper 的关系

Dubbo 和 Zookeeper 的关系 Zookeeper的作用 zookeeper用来注册服务和进行负载均衡&#xff0c;哪一个服务由哪一个机器来提供必需让调用者知道&#xff0c;简 单来说就是ip地址和服务名称的对应关系。当然也可以通过硬编码的方式把这种对应关系在调用方 业务代码中实现&#…

AVL树讲解

AVL树 1. 概念2. AVL节点的定义3. AVL树插入3.1 旋转 4.AVL树的验证 1. 概念 AVL树是一种自平衡二叉搜索树。它的每个节点的左子树和右子树的高度差&#xff08;平衡因子&#xff0c;我们这里按右子树高度减左子树高度&#xff09;的绝对值不超过1。AVL的左子树和右子树都是AV…

MIT6.5840(6.824)Lab2总结(Raft)

MIT6.5840&#xff08;原MIT6.824&#xff09;Lab2总结&#xff08;Raft&#xff09; 资源分享&#xff1a; 官网地址&#xff1a;http://nil.csail.mit.edu/6.5840/2023/ Raft论文地址&#xff1a;http://nil.csail.mit.edu/6.5840/2023/papers/raft-extended.pdf 官方学生…

Web Servlet

目录 1 简介2 创建Servlet项目并成功发布运行3 新加Servlet步骤4 Servlet项目练习5 Servlet运行原理6 操作 HTTP Request头的方法(部分方法示例)7 操作 HTTP Response头的方法(部分方法示例)8 两种重定向(页面跳转)方法9 Cookie9.1 Cookie工作原理9.2 cookie构成9.3 Servlet 操…

axios的详细使用

目录 axios&#xff1a;现代前端开发的HTTP客户端王者 一、axios简介 二、axios的基本用法 1. 安装axios 2. 发起GET请求 3. 发起POST请求 三、axios的高级特性 1. 拦截器 2. 取消请求 3. 自动转换JSON数据 四、axios在前端开发中的应用 五、总结 axios&#xff1a…

【JS】判断是否安装了某个Chrome插件

前提 manifest.json 清单 下文均以manifest.json v3介绍。 因为Chrome官方文档中明确说明&#xff0c;v2已经弃用了。 ID 由于浏览器的安全策略&#xff0c;以下方法均在「已知扩展程序 ID」 的前提下才可实现。 获取扩展程序ID 进入扩展程序管理页&#xff0c;找到对应插…

Python基本数据类型之散列类型详解

前言&#xff1a; python的基本数据类型可以分为三类&#xff1a;数值类型、序列类型、散列类型&#xff0c;本文主要介绍散列类型。 一、散列类型 散列类型&#xff1a;内部元素无序&#xff0c;不能通过下标取值 1&#xff09;字典&#xff08;dict&#xff09;&#xff…

【DIY】电子制作创意作品:有趣的激光竖琴

在上海世博会的伊朗馆&#xff0c;我看到了一架没有琴弦的竖琴&#xff0c;那是众多参观者公认的伊朗馆里最有趣的展品&#xff01;参观者只要伸手穿过那架通体黑色的竖琴&#xff0c;音调就会被“奏响”。没有琴弦怎么奏响&#xff1f;工作人员为我们揭示了秘密——他按了一下…

Spring Boot搭建入门

Spring Boot简介 Spring Boot是对Spring进行的高度封装&#xff0c;是对Spring应用开发的高度简化版&#xff0c;是Spring技术栈的综合整合&#xff0c;是J2EE的一站式解决方案。想要精通Spring Boot的前提是需要熟悉Spring整套技术栈原理与内容。 Spring Boot的优点&#xf…

指针篇章-(冒泡排序详解)

冒泡排序 图解 tmp图解 内容图解 每次循环的次数减少 for循环详解 冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的数列&#xff0c; 一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。 遍历数列的工作是重复地进行直到没有再需要交换&…

Double和Float类

Double类 功能&#xff1a;实现对Double基本型数据的类包 构造方法&#xff1a; (double num) double Value()方法&#xff1a;返回对象中的double型数据。 Float类 功能&#xff1a;实现对float基本型数据的类包装。 构造方法&#xff1a; (float num) Float Value()方法…