php志愿者协会报名系统
摘 要
近年来,伴随志愿者事业蓬勃发展,运用信息化技术帮助志愿者协会报名工作的计划提上了日程。
在大量分析、调研国内外现状的基础上,文章进行了详细的系统需求分析,将系统分为用户管理、培训安排、排班信息、考核信息、报名信息、项目信息等功能,开发了志愿者协会报名系统。根据功能划分,文章进行了系统整体设计,进而实现该管理系统应具有的功能。
文章确定该管理系统的架构,主要采用B/S 架构和Thinkphp平台进行设计开发,以php为语言工具、mysql为数据库,实现系统的功能。其中,B/S架构突破了地域限制,客户端更加简化; mysql具有较强的稳定性和安全性。因此,此管理系统应用范围广,安全系数高,适用于高校志愿者的管理。志愿者协会报名运用此系统可以进行有效的管理,替代以往的人工管理,减少了人员劳动与资源浪费。同时,使整个协会报名的管理更加协调,行之有效,避免出现错误,节约了时间。
关键词:志愿者协会报名系统;php语言;
PHP Volunteer Association registration system
Abstract
In recent years, with the vigorous development of the volunteer cause, the plan of using information technology to help the volunteer association sign up has been put on the agenda.
Based on a large number of analysis and investigation of the current situation at home and abroad, this paper makes a detailed system demand analysis, divides the system into user management, training arrangement, scheduling information, assessment information, registration information, project information and other functions, and develops the Volunteer Association registration system. According to the function division, this paper designs the whole system, and then realizes the functions that the management system should have.
This paper determines the architecture of the management system, mainly using B / S architecture and ThinkPHP platform for design and development, using PHP as the language tool and mysql as the database to realize the functions of the system. Among them, the B / S architecture breaks through the regional restrictions, and the client is more simplified; Mysql has strong stability and security. Therefore, this management system has a wide range of applications and high safety factor. It is suitable for the management of college volunteers. The application of this system can effectively manage the volunteer association, replace the previous manual management, and reduce the waste of Personnel Labor and resources. At the same time, it makes the registration management of the whole association more coordinated and effective, avoids mistakes and saves time.
Key words: Volunteer Association registration system; php language;
目 录
1.1研究背景
追溯到19世纪初,志愿服务事业便已开始,它的前身为西方处于宗教信仰的慈善活动"。在中国,根据团中央统计,至2000年6月,全国志愿者已提供无偿近亿次无偿社会服务。目前,志愿者活动已成为青年参与范围较广、程度较深、知名度较高的,具有自发性质的公益性活动。
志愿者协会组织奉行和倡导无私奉献、互帮互助、共同进步、团结友爱的志愿者精神,组织热衷于在校大学生志愿者,积极开展各类公益服务活动,引领互帮互助,互敬互爱的社会风尚,协助政府和社会做好精神文明建设工作。高校成立的大学青年志愿者协会在公益服务、扶贫支教、大型体育赛事、社区建设等发挥了重要作用,随着志愿者协会队伍的不断壮大,志愿者服务过程中出现了不少问题,尤其是志愿者管理方面存在诸多问题,如志愿者的招募,管理,活动分配等。如何有效管理志愿者队伍,使其充分发挥其应有的作用,这已经成为了志愿者管理部门的首要问题。
1.2开发的目的与意义
全国大部分高校青年志愿者协会从成立至今,普遍使用传统的人工方式进行相关事务的管理,众多的信息全部采用人工方式记录在纸上,一方面不方便保管、查看以及人员之间的交流和沟通,使信息传递发生滞后,阻碍了协会的良好发展;另一方面,浪费了大量人力物力的同时也消耗了大量时间和资源。为解决以上传统人工管理的诸多不便,本系统对志愿者协会的人员、文件公告、经费和活动进行了系统化、信息化、智能化的管理。
(1)立足志愿者协会原有志愿者管理体系,结合青年志愿者协会管理人员的管理需求,提出一套可适用于志愿者协会报名管理工作的业务流程模型,完善志愿服务活动流程。
(2)编制一套实用的志愿者协会报名管理信息系统,并在实际工作中加以应用,实现对志愿者、志愿服务活动的全面、全程管理,在实际运行中采集数据,进行统计和分析。
通过设计志愿者协会报名管理系统,运作新的志愿者管理体系,可以满足青年志愿者协会中管理人员在用户管理、培训安排、排班信息、考核信息、报名信息、项目信息等工作,提高工作的效率,减轻志愿者协会报名系统人员的工作负担。
1.3研究内容
志愿者协会报名系统的开发及实现,所需要的工作内容:
(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。
(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,志愿者协会报名系统的开发使用php技术,数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成志愿者协会报名系统的实现。
(3)确定好系统使用的技术,进行在线确认系统所划分的用户角色,并且根据用户角色划分确定所要设计的功能模块,对于志愿者协会报名系统的设计主要划分别为管理员和用户角色,并所使用的功能模块也相应不同,但是系统的数据库实现的内容是交互的,用户可以随时根据自己的需求进行课程信息,对于系统工作人员可以根据自己的分管内容进行在线信息的处理及操作,管理员获取到所有用户的详细数据信息,并根据需求进行第一时间处理解决。
(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。
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),有几大优点
1.2.1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
1.2.2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
1.2.3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
1.2.4. 可测试。界面素来是比较难于测试的,测试可以针对ViewModel来写。
2.3 B/S体系结构介绍
我们在利用Java来开发系统时通常采用的软件就是Myeclipse,它是用来设计Java, JavaEE的Eclipse插件的调集,采取了 Myeclipse大部分可以实现对Mysql的数据库和Javaee的研究和开发。用了Myeclipse很大的便利了开发人员,系统开发的进度也会得到一些提高。B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。
2.4 B/S体系工作原理
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由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以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
2.6JavaScript 运行模式
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
1.8.1是一种解释性脚本语言(代码不进行预编译)。
1.8.2主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
1.8.3可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
1.8.4跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
1.8.5 JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
3.1需求分析
任何一个项目在开发研究前,都需要对研发系统本身的需求做一个认真的分析,市场的调研是不可忽视的,从实际场景中确定使用人员的功能需求,从而明确目标,对整个系统的开发有一个更加准确的定位,在这个章节,需要对系统的性能分析,业务流程分析,和数据等进行分析,志愿者协会报名系统的整体界面简单,功能完善。
需求的可行性是分析和讨论发达的系统能达到什么样的要求。开发的系统平台是否符合之前的要求。只有在预先评估系统的开发中,才能在系统开发和实施之前完成需求。如果您不具备开发一个功能不合格的系统的可行性,那就是开发失败。开发系统是否有用,可以完成之前讨论过的需求,以下分析了志愿者协会报名系统的实际需求。
系统设计需要从用户和管理员的实际需求开始,以了解他们需要实施哪些功能以及他们可以包括哪些管理工作。
考虑到志愿者协会报名系统设计的特点,应满足几个要求:
(1)它可以通过网络开展志愿者协会报名系统信息管理工作,促进对志愿者协会报名系统信息管理。
(2)学习方法变得更加多样化,管理更加标准化;
(3)它提供了一个免费的渠道,以确保数据的实时有效沟通。
3.2可行性分析
本次设计基于B/S 模式下,运用php技术采用的是MySQL数据库和phpstorm实现,总体的可行性共分为以下三个方面。
3.2.1技术可行性分析
所谓的技术可行性就是在限定时间,前期拟定的功能能否被满足。在开发设计上是否会遇上解决不了的问题。做完的项目能否被很好地应用,如果存在缺点在后期的维护上是否存在很大的难度。在对这个系统评估后,认定已存在的技术能达成目标。用Java技术来实现动态的页面,嵌入低依赖性的设计模式,灵活的数据库,配合稳定的服务器,整个系统的运行效率大大提升。由此可见,在技术层面达成目标不是非非之想。
3.2.2经济可行性分析
在项目上使用的工具大部分都是是当下流行开源免费的,所以在开发前期,开发时用于项目的经费将会大大降低,不会让开发该软件在项目启动期受到经费的影响,所以经济上还是可行的。尽量用最少的花费去满足用户的需求。省下经费用于人工费,以及设备费用。将在无纸化,高效率的道路上越走越远。
3.2.3操作可行性分析
本系统实现功能的操作很简单,普通手机的常见配置就可以运行本软件,并且只要粗通电脑使用的基本常识就可以流畅的使用本软件。手机具备连接互联网的能力,并且可以正常访问系统,并不需要操作者有什么高超的能力,只需了解业务流程,并且按照专业知识进行正确操作即可,所以志愿者协会报名系统具备操作可行性。
3.3 性能分析
对于性能分析,与传统的管理方式相比,传统的管理方式是使用人工通过用纸和笔进行数据信息的统计和管理,并且这种方式对于存储和查找某一数据信息都比较麻烦,随着计算机网络的到来,这种传统的方法很难适应当下社会的发展,不仅降低人们的办事效率,而且还需要很多的人力和物力,对于使用的时间和所要花费的费用都是比较高的,为了降低成本费用,提高用户的工作效率,进行开发一套基于计算机和网络技术的志愿者协会报名系统。
志愿者协会报名系统的开发设计时一个独立的系统,以之前数据库进行数据的存储开发,主要是为了实现志愿者协会报名系统的用户角色及相对应的功能模块,让志愿者协会报名系统的管理不会存在管理差异、低效率,而是跟传统的管理信息恰好相反,志愿者协会报名系统的实现可以节约资源,并且对于业务的处理速度也提高,速度快、效率高,功能性强大。
3.4 系统操作流程
3.4.1用户登录流程
对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图3-1所示。
图3-1 用户用例图
3.4.2信息添加流程
对于志愿者协会报名系统,需要随时添加所需要的新闻知识数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的新闻数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图3-2所示。
图3-2 信息添加流程图
3.4.3信息删除流程
不管是哪个用户角色进入到不通的系统操作界面,都可以进行不同的信息内容的操作功能,对用系统数据信息的删除,用户一旦将信息删除,那么该删除的数据信息将无法恢复,所以用户在对数据删除事,一定判断删除的内容是否是确定要删除的,确定无误后选择确定删除操作,如图3-3所示。
图3-3 信息删除流程图
4.1系统架构设计
志愿者协会报名系统的系统项目的概述设计分析,主要内容有志愿者协会报名系统的具体分析,进行数据库的是设计,数据采用mysql数据库,并且对于系统的设计采用比较人性化的操作设计,对于系统出现的错误信息可以及时做出处理及反馈。
志愿者协会报名系统的设计现有的手机,可以实现管理员,首页、用户管理、培训安排、排班信息、考核信息、报名信息、项目信息等详细的了解及统计分析。根据系统功能需求建立的模块关系图如下图:
系统架构图如下图所示。
4.2开发流程设计
志愿者协会报名系统的开发对管理模块和系统使用的数据库进行分析,编写代开发,规划和操作是构建信息管理应用程序的必要三步曲,它决定了系统是否能够真正实现预设功能以及是否可以在成功设计后实施。在开发过程中,每个阶段必须严格按照线性顺序进行开发,并且在相应阶段生成的每个工作都可以通过技术进行验证和检查。确保一个阶段完成后是正确的,不会造成下一阶段拖拽现象,使系统完成设计功能后得到保证。
从志愿者协会报名系统的成功开发经验来看,上述方法效果最为明显,最大程度地降低了系统开发的复杂性。如图4-2所示。
图4-2开发系统流程图
4.3数据库设计
数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。
4.3.1实体ER图
数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。展示系统使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。
概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是对数据库实体的E-R图:
(1)项目信息管理E-R图,如图4-3所示:
图4-3项目信息实体属性图
(2) 协会管理者E-R图如图4-4所示:
图4-4协会管理者实体图
这些功能可以充分满足志愿者协会报名系统的需求。此系统功能较为全面如下图系统功能结构如图4-5所示。
图4-5系统功能结构图
4.3.2数据表
我们可以根据数据结构的详细分析要求,我们根据输入和输出数据量的要求进行分析,确定什么表表,结构之间的关系,我们可以验证,调整和完善,查询和浏览过程,可以实现数据库,以使用户对数据和功能有更多要求。
基于系统使用的数据库管理系统的特点,对数据库的概念模型进行了转换和构建。但是,这个系统只需要充分考虑志愿者协会报名系统的功能,而且组织比较清晰。
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
volunteer_id | int | 11 | 是 | 是 | 志愿者ID |
gender | varchar | 64 | 否 | 否 | 性别 |
title | varchar | 64 | 否 | 否 | 职称 |
id | varchar | 255 | 否 | 否 | 身份证 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
date_of_birth | varchar | 64 | 否 | 否 | 出生日期 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
training_arrangements_id | int | 11 | 是 | 是 | 培训安排ID |
training_name | varchar | 64 | 否 | 否 | 培训名称 |
response_items | varchar | 64 | 否 | 否 | 应对项目 |
training_details | text | 0 | 否 | 否 | 培训详情 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
scheduling_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
scheduling_information_id | int | 11 | 是 | 是 | 排班信息ID |
volunteer | int | 11 | 否 | 否 | 志愿者 |
shift_arrangement | text | 0 | 否 | 否 | 班次安排 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
project_information_id | int | 11 | 是 | 是 | 项目信息ID |
entry_name | varchar | 64 | 否 | 否 | 项目名称 |
cover | varchar | 255 | 否 | 否 | 封面 |
item_no | varchar | 64 | 否 | 否 | 项目编号 |
project_details | text | 0 | 否 | 否 | 项目详情 |
emergency_plan | longtext | 0 | 否 | 否 | 应急预案 |
registered_persons | text | 0 | 否 | 否 | 已报名者 |
hits | int | 11 | 是 | 否 | 点击数 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
association_manager表;
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
association_manager_id | int | 11 | 是 | 是 | 协会管理者ID |
gender | varchar | 64 | 否 | 否 | 性别 |
date_of_birth | varchar | 64 | 否 | 否 | 出生日期 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
title | varchar | 64 | 否 | 否 | 职称 |
id | varchar | 255 | 否 | 否 | 身份证 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
assessment_information_id | int | 11 | 是 | 是 | 考核信息ID |
entry_name | varchar | 64 | 否 | 否 | 项目名称 |
volunteer | int | 11 | 否 | 否 | 志愿者 |
clock_in_time | datetime | 0 | 否 | 否 | 打卡时间 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
系统的登录窗口是用户的入口,用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。
登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后在login.php页面发送登录请求,调用登录验证方法来验证。
用户登录模块的IPO如下所示:
输入:用户名和密码。
处理:
1)检测用户输入的账号、密码是否正确及在数据库已对应存在。
2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。
3)根据用户名,将其显示在系统首页上。
输出:是否成功的信息。
登录流程图如下所示。
图5-1登录流程图
系统登录界面如下所示。
图5-2管理员登录界面
登录关键代码如下所示。
{
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' => '登录失败,账号不存在']];
}
}
-
- 志愿者资讯管理模块
志愿者资讯展示,管理员通过输入标题、封面图、文章分类、点击数、点赞数、来源、标签等查询添加、删除操作,如图5-3所示
图5-3志愿者资讯管理界面
-
- 培训考试管理模块
培训考试展示,管理员通过输入名称、答题时长、总分、状态等查询添加、删除操作,如图5-4所示
图5-4培训考试管理界面
培训资讯信息添加界面如下所示。
图5-5培训资讯信息添加界面
培训资讯管理关键代码如下所示。
{
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 {
if($this->table == 'user'){
$request['password'] = md5($request['password']);
}
$res = $this->add_before($request, $this->table, $this->table_id);
if($res['code'] == 200){
$result = $this->model->add($request, $this->table, $this->table_id);
$this->add_after($this->table);
$data = $result;
}else{
$data['error'] = $res;
}
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
5.4项目信息管理模块
项目信息展示,管理员通过输入项目名称、封面、项目编号、项目详情、已报名者等查询、添加删除操作,如图5-6所示
图5-6项目信息管理界面图
项目信息管理关键代码如下所示。
{
$request = Request::param();
$result = $this->model->del_data($request, $this->table, $this->table_id);
$data = $result;
return json_encode($data);
}
5.5报名信息管理模块
报名信息展示,管理员通过输入项目名称、志愿者、志愿者简介等查询添加、删除等操作,如图5-7所示
报名信息界面如下图所示。
图5-7报名信息界面图
报名信息管理关键代码如下所示。
public function get_obj()
{
$request = Request::param();
$result = $this->model->get_obj($request, $this->table, $this->table_id, $this->table_id);
$data['result'] = $result;
return json_encode($data);
}
5.6个人资料模块
登录用户在首页点击进入用户中心userCenter.html,再点击修改个人按钮进入userChangeInfo.html界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户并将用户以对象的形式层层返回到userChangeInfo.html界面,显示出当前用户的个人。
若用户要对个人进行修改,则通过修改当前之后点击确认,向控制层userAction发送更改后的用户,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户,若成功则反馈注册成功,则返回的userChangeInfo.html界面被更改成功;若失败则显示修改失败。
密码修改关键代码如下所示。
public function change_password()
{
$accessTokenModel = new AccessTokenModel();
$token = Request::header('x-auth-token');
if (!empty($token)) {
$result = $accessTokenModel->getToken($token);
if (Request::isPost()) {
$get = Request::get();
$keys = array_keys($get);
$where = [];
if ($result) {
$where[] = ["user_id", '=', $result['user_id']];
$i = 0;
foreach ($get as $key => $val) {
$where[] = [$keys[$i], '=', $val];
$i++;
}
$request = Request::post();
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
$new_password['password'] = $request['password'];
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$result = $this->model->change_password($new_password, $this->table, $this->table_id, $where);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "token错误或失效,未查询到用户数据";
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
} else {
$data['error'] = 30000;
$data['message'] = "token的值不能为空!";
}
return json_encode($data);
}
5.7考核信息管理模块
考核信息展示,管理员通过项目名称、志愿者、打卡时间等查询添加、删除等操作,如图5-10所示
图5-8考核信息管理界面图
考核信息管理关键代码如下所示。
public function add($request=[],$table_name = '',$table_id = ''){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '数据添加失败']];
}
}
5.8排班信息管理模块
排班信息展示,管理员通过志愿者、班次安排等查询添加、删除等操作,如图5-10所示
图5-9排班信息管理界面图
排班信息管理关键代码如下所示。
public function get_obj()
{
$request = Request::param();
$result = $this->model->get_obj($request, $this->table, $this->table_id, $this->table_id);
$data['result'] = $result;
return json_encode($data);
}
6.1测试目的
在对该系统进行完详细设计和编码之后,就要对法律全书了系统程序进行测试,检测程序是否运行无误,反复进行测试和修改,使之最后成为完整的软件,满足用户的需求,实现预期的功能。
6.2测试过程
在软件的测试过程中,通常测试人员需要针对不同的功能模块设计多种测试用例。通过测试用例能够及时发现代码业务逻辑上是否与真实的业务逻辑相对应,及时发现代码上或逻辑上的缺陷,以此来来完善系统,提高软件产品的质量,使软件具有良好的用户体验。
注册测试用例表如下所示。
表6-1注册测试用例
测试性能 | 新用户注册 | ||
用例目的 | 测试系统新用户个人信息注册功能的功能和安全性 | ||
前提条件 | 进入注册页面填写个人信息 | ||
输入条件 | 预期输出 | 实际情况 | |
各项基本信息输入不完整 | 不允许注册,无法点击注册按钮 | 一致 | |
填写已存在的用户名 | 系统显示出提示信息,要求重新填写 | 一致 | |
两次密码输入不一致 | 系统显示出提示信息,要求重新填写 | 一致 | |
填写的各项信息没有符合提示的长度和字符要求 | 系统显示出提示信息,要求重新填写 | 一致 | |
胡乱填写电话号码 | 收不到验证码 | 一致 | |
填写验证码与收到的不一致 | 系统显示提示信息告知用户验证码错误,不予注册 | 一致 |
登录测试用例表如下所示。
表6-2登录测试用例
测试性能 | 用户或操作员登录系统 | ||
用例目的 | 测试用户或操作员登录系统时功能是否正常 | ||
前提条件 | 进入用户登录页面或操作员登录页面 | ||
输入条件 | 预期输出 | 实际情况 | |
各项信息不予填写,直接点击登陆按钮 | 不允许登录,提示填写账号相关信息 | 一致 | |
填写错误的登录名或密码后点击登录系统 | 提示用户名或密码错误,要求重新填写进行登录 | 一致 | |
填写与验证码信息不一致的信息 | 系统显示出提示信息,表明验证码错误,要求重新填写 | 一致 |
排班信息测试用例表如下所示。
表6-3排班信息测试用例
测试性能 | 用户进行排班信息的操作 | ||
用例目的 | 测试用户进行排班信息操作时,该功能是否正常 | ||
前提条件 | 用户进入排班详情页,该排班能够被受理 | ||
输入条件 | 预期输出 | 实际情况 | |
对着某排班点击“受理”按钮 | 界面跳转至受理界面 | 一致 | |
在受理界面,输入必填项,点击“提交”按钮 | 提示“受理成功”,并返回上一级界面 | 一致 | |
在受理界面,填写受理表单的时候未输入完整,点击“提交”按钮 | 提示“受理失败” | 一致 |
报名信息测试用例表如下所示。
表6-4报名信息测试用例
测试性能 | 事故相关信息管理功能 | ||
用例目的 | 测试系统操作者对报名信息相关信息进行管理的功能是否正常 | ||
前提条件 | 登录系统进入相关管理页面 | ||
输入条件 | 预期输出 | 实际情况 | |
进入报名界面,点击“录入”按钮,填写所有必填项,点击提交 | 提示“录入成功”,并返回查询界面 | 一致 | |
进入报名信息界面,点击“录入”按钮,未填写一个或者多个必填项,点击提交 | 提示“录入失败”,请填写必填项 | 一致 | |
进入报名信息界面,选择要修改的一条数据,点击该条数据后面的“修改”按钮 | 节目跳转至修改界面 | 一致 | |
在修改界面,修改可修改项后,点击“提交”按钮 | 提示“修改成功”,并返回查询界面 | 一致 | |
进入报名信息界面,点击某条数据后面的删除按钮 | 提示“是否要删除该数据”,如果用户点击“确定”按钮,则成功删除该条数据,并提示“删除成功”,之后返回查询界面 | 一致 |
6.3测试结果
经过对此系统的测试,得出该系统足以满足用户日常需求,在功能项目和操作等方面也能满足操作员对于其他用户的管理。但是,还有很多功能有待添加,这个系统仅能满足大部分的需求,还需要对此系统的功能更进一步的完善,这样使用起来才能更加的完美。
第7章 总结与展望
通过志愿者协会报名系统的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在志愿者协会报名系统的云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。
系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
参考文献
[1]段维娜.载着爱出发——记乌海市雷锋车队志愿者协会[J].雷锋,2022(02):30-31.
[2]郑世闯,李家俊,陈雨露,赖晓燕.基于互联网+电子商务框架下PHP技术的在线二手车交易平台[J].电子制作,2022,30(02):39-41.
[3]张磊. 基于PHP语言的路由方法、装置、服务器、终端及可读介质[P]. 湖北省:CN109600311B,2022-01-04.
[4]崔红萍, 志愿服务事业 东台市青年志愿者协会. 刘东华 主编,东台年鉴,江苏人民出版社,2021,243,年鉴.
[5]乔亚峰, 志愿服务事业 东台市心连心志愿者协会. 刘东华 主编,东台年鉴,江苏人民出版社,2021,244,年鉴.
[6]Jingyuan Li. Construction of training platform for teachers professional ability of normal students based on ThinkPHP[J]. Frontiers in Educational Research,2021,4.0(15.0):
[7]符德霖,陈春,陈立虹,庄荣南. 一种基于污点分析的PHP静态代码分析方法[P]. 福建省:CN113836532A,2021-12-24.
[8]胡承林.在专业化志愿服务中育德树人——江汉大学医学院青年志愿者协会工作纪实[J].中国共青团,2021(24):43-45.
[9]Zmaranda Doina R.,Moisi Cristian I.,Győrödi Cornelia A.,Győrödi Robert Ş.,Bandici Livia. An Analysis of the Performance and Configuration Features of MySQL Document Store and Elasticsearch as an Alternative Backend in a Data Replication Solution[J]. Applied Sciences,2021,11(24):
[10]田娟.PHP教学中项目驱动法对计算思维能力培养[J].办公自动化,2021,26(23):17-19.
[11]四川省文艺志愿者协会:引领艺术家为人民服好务[J].现代艺术,2021(11):24.
[12]宁竞,胡恒.高职PHP+MySQL网站项目开发课程的教学探讨[J].科技视界,2021(32):139-140.
[13]王春腾,邢洁清.基于PHP的学生作业互评系统的设计与实现[J].长江信息通信,2021,34(11):231-234.
[14]马涛.基于PHP技术的视频点播网站设计分析[J].信息记录材料,2021,22(11):190-191.
[15]朱莹芳,吴莉.Ajax技术在网上生鲜商城的设计与应用[J].安徽电子信息职业技术学院学报,2021,20(05):29-33.
[16]黄波.基于PHP+MySQL图书管理系统设计与实现[J].信息与电脑(理论版),2021,33(19):124-126.
[17]刘军.基于PHP技术的动态网页设计[J].信息记录材料,2021,22(10):142-143.
[18]杨丛谦. 互动仪式链视角下志愿者的情感传播研究[D].山东大学,2021.
[19]Qiuying Han. Inventory System Based on ThinkPHP and Bootstrap Framework[J]. American Journal of Theoretical and Applied Research,2019,1:
[20]中国文艺志愿者协会. 中国文艺志愿者协会:以奉献友善明德播撒温暖[N]. 中国艺术报,2019-07-15(032).
[21]林程华. 基于PHP的技能竞赛选拔和训练系统的设计与实现[C]//中国职协2017年度优秀科研成果获奖论文集(一二等奖).[出版者不详],2018:3671-3679.
[22]Li L.. Application of PHP technology in student PE score management system[J]. IPPTA: Quarterly Journal of Indian Pulp and Paper Technical Association,2018,30(8):
致谢
伴随着设计的完成,大学生涯也随之即将结束。大学期间是我最珍惜的时光,大学时光中学会了很多,也成长了很多,这段时光中每一段回忆都刻在脑海中。感谢一起学习,一起成长同学们,和成长过程悉心教导的老师们,非常感激有你们的陪伴。
首先感谢我的指导老师,设计的完成离不开老师的一系列指导。在毕业设计的完成过程中,老师给出了很多中肯的建议,正是由于老师一丝不苟的工作态度,我的设计才能顺利的完成。
最后,感谢在大学生涯中每一位教导我的老师,是你们教给了我丰富的知识,更教会了我遇到问题时,如何去应对并解决。谢谢你们的帮助与支持。
免费领取本源代码,请关注点赞+私信