基于php的失物招领程序的设计与实现

Mute

发布日期: 2019-03-02 10:00:18 浏览量: 1656
评分:
star star star star star star star star_border star_border star_border
*转载请注明来自write-bug.com

一、功能描述

1.1 系统实现的目的和意义

  • 目的:在新校区为大家提供一个失物招领的平台

  • 意义:现在新校区面积较大,同学们丢失物品后,只通过线下途径进行效率低下且失主与拾物者联系不便,所以想通过这个系统建立线上交流的平台,提高失物找回的效率

1.2 系统实现的功能

可以发布丢失物品和捡拾物品的信息,浏览以往发布的信息并提供搜索功能。在物品成功归还后可以撤销已经发布的消息。首页,即广场,展示已经发布的物品的消息,按时间排序展示,有多种分类:

  • 大类:寻失物/寻失主

  • 小类:地点,丢失时长(一周内,一个月内,三个月内)

在首页还有搜索功能,输入关键字可以进行搜索,搜索内容包括时间地点物品特点等等。

个人中心,进入时先登陆,然后可以进行丢失物品或捡拾物品或撤销已发布的消息等操作。其中发布消息时要填写表格,内容包括物品图片,物品描述,丢失人姓名联系方式,丢失的时间,地点。

1.3 系统开发的环境

二、总体结构

2.1 文件清单(按文件系统树型方式排列)

文件夹 PATH 列表,卷序列号为 0E94-2604

  1. C:.
  2. addmessage.php //添加信息
  3. delete.php //删除信息
  4. detail.php //详细信息
  5. esc.php //用户注销
  6. findpeople.php //查找失主
  7. findthing.php //查找失物
  8. getmessage.php //ajax入口
  9. guanli.php //用户个人信息管理
  10. index.php //主页
  11. join.php //注册页面
  12. link.php //连接数据库
  13. logoin.php //登录界面
  14. people.php //个人信息界面
  15. readme.txt //帮助文档
  16. ├─bootstrap //前端界面框架
  17. ├─css
  18. style.css //层叠样式表文件
  19. ├─images //图片
  20. buct.png //buct图标
  21. message.png //信息图标
  22. more.png //详细信息图标
  23. user.png //用户界面图标
  24. ├─js
  25. index.js //网站脚本
  26. └─jquery
  27. jquery-3.2.1.min.js //网站脚本库
  28. └─database
  29. | findlost.sql //数据库导出文件

2.2 系统功能结构图

下图是招领广场网页所对应的功能结构图,对于初次登录的用户,会检测有无cookie,若有则会直接进入招领广场页面,如果没有则会进入登录页面,在登录页面有登录选项和注册选项。在招领广场中有查找功能,并且有指向详细信息和个人中心的链接。

下面是个人中心网页所对应的功能结构图,在这个页面中有发布丢失信息,发布找失主信息、管理已经发布的信息等三个功能链接。该页面也可以注销账户或者回到招领广场

2.3 系统的总流程图(标明每个模块的文件名)

三、详细设计

3.1 数据结构

Html是一种超文本标记语言,浏览器会解析html代码生成DOM树,如下表示:

只有html代码界面并不完美,这就需要为每个html元素设置样式属性,就是css属性,通过下面的一段代码来解释这个事情:

网页上每个元素都是有样式的,节点之间可能有共同的样式,也可能会有自己独特的样式,浏览器对每个节点进行css样式的渲染时,都首先需要找到这个节点的位置,然后再设置具体的属性,本质上是树的一个深度优先搜索遍历,比如上图中的<div>标签,在进行样式的设定时,首先要从根节点,即html标签节点向下遍历搜素,找到所有div标签的位置,这个位置指向的是一个数组,数组中的div到底哪个才是应该设置属性的目标div呢?这就涉及到另外的一个东西,叫做css选择器,有类选择器,标签选择器,id选择器等,标签选择器就是给这个界面的所有特定标签进行样式的设定,比如说给所有的div设置样式就可以使用标签选择器,上图中用到了类选择器,即class=“”中的值,回到刚才的div数组,浏览器会查找这个div数组中具有特定类名属性的div,把样式渲染上去,不确定到底有几个div有这样的属性,所以浏览器会遍历整个数组,把所有的节点都遍历完,才能结束,否则只能使部分目标div设置好样式。

用户平时看到的网页有时不是固定的,比如说点击某一个按钮会在下面生成一个新的部分,或者删除一个新的部分,这就涉及到在DOM树上进行增加节点和删除节点的操作了,每个标签都对应于DOM树的一个节点,在进行css样式的渲染时,浏览器会遍历当前html文档生成的树,首先查找到应该删除或者增加元素的位置,然后再进行删除和插入的操作,重构这个DOM树,然后解析出来,这一个过程看上去有好几步,实际上程序运行实在瞬间完成的。

字符串的相关处理函数

用JavaScript处理字符串,与c语言字符串处理不同的是,js处理字符串更加的简单,JavaScript是一种弱类型解释性的脚本,只要声明一个变量,然后把一个字符串的值赋给它就好,想给字符串增加内容只需要在后边直接增加,本系统在运行搜索功能的时候,会把每个条件设置一个具体的语句,然后最终的查询语句是这些语句拼合在一起完成的,如果条件改变,还需要把已经生成的查询语句进行修改,修改由于查询参数变化引起的固定位置的变化,最终的查询语句数据会发给服务端程序,后端程序在进行数据库中的查找,并把结果返回给浏览器,用户就可以看到自己搜索的结果了。

集合的交并运算

接收到前端的查询语句,服务器端程序会执行这个查询语句,每条查询语句会返回一个结果,这个结果是一个集合,多数情况下匹配的结果不会只有一个,部分匹配的记录也会被添加到这个结合中,这个集合被称为结果集,每个条件会返回对应的结果集合,但是用户需要的是满足所有条件的数据,所以对这些结果集要进行交集的运算,最终生成一个返回到浏览器端的结果集—-最终结果集,最终结果集就是用户查找的最终结果,然后前端再把它渲染到界面上。

索引查找算法

因为要存储用户输入的数据,所以,需要有数据库来存用户输入的数据,小组用到的数据库是当下流行的关系型数据库MySQL,MySQL数据库的每一行是一条记录,每一列代表相应的字段,用来存储每个用户的发布的消息。在大多数情况下,不能确定用户输入的数据没有重复的,所以需要给每条消息设置一个唯一的值,这个值只有这条消息是这个值,其他的消息都不同,以此来进行每条消息的区分,只有给每条消息设置一个唯一的标识,在进行数据删除的时候才不会误删其他的消息,这个唯一的标识就叫索引。在用户管理页面的删除功能就是用的这种方法来进行每条消息的删除操作的。通常这个索引(数据库中叫主键)以一个整数来表示,并设置自增的属性。前端用户界面把这个索引发送到后端之后后端程序进行数据库的操作,查找这个索引,以此达到查找到目标数据的目的。用到了一种索引的查找算法。

3.2 各模块(或算法)流程图(标明函数名)

index.php

这个网站用PHP语言写的,PHP的语法混合了C、Java、Perl以及PHP创新的语法。PHP具有的优势是能够更快的执行动态网页而且PHP几乎支持所有流行的数据库以及操作系统,这也是本系统使用它的原因。

失物招领系统是一个在非常具有使用意义的一个系统,在日常生活中几乎每天都能看见朋友圈中找东西的消息。而这个系统看起来简单但是要做到真正实用还需要考虑许多细节。例如用什么关键字去分类和寻找丢失的物品,为了便于搜索,本系统设置了时间、丢失地点的分类,还提供了近几天和范围性地点的模糊搜索。为了准确,首界面的more中可以详细的看到物品的信息。本系统还提供了管理功能让用户方便自由的管理自己发布的信息,并及时做出修改。

下面简单介绍一下这个网站的结构和各个模块的功能。

首先进入之后的首界面是由一个名为index.php的文件解析而成的网站。这是整个网站的索引中心,由它指向失物招领系统的其他功能网页。

初次进入时会检测是否具有网页cookie,如果没有就会进入登陆页面,有的话则会进入首页.
首页中detail的链接指向由detail.php编写的一个网页,负责输出丢失物品的详细信息,另外还有一个名为个人中心的链接,指向的是一个由people.php解析而成、为用户服务的功能网页。

people.php

下面简单介绍一下个人中心(即people.php解析成网页)。主要功能有三个,分别是找失主,找丢失的物品和管理自己发布的信息。分别对应着三个链接,这三个链接对应的网页分别是由findpeople.php findthing.php和guanli.php写的,并在各个网页实现各自对应功能。

四、程序的过程展示

4.1 程序运行过程展示

程序登陆界面

程序主界面(广场界面)

个人中心界面

发布“找失物“消息界面

发布“找失主“消息界面

消息详细信息界面

消息分类选择界面

时间跨度选择

拾失地点选择

六、软件的辅助说明

6.1 本软件的优点

本产品服务与校园学子,并针对这个特点进行巧妙的设计。

  • 在功能方面,对于丢失物品的时间,地点分类充分考虑到校园生活的特色,便利于失物的寻找和用户的操作。用户可以注册个人账号,管理个人发布的信息。在添加物品信息时,可以添加时间、地点等信息以供筛选,方便用户快速、准确地查找物品。页面下拉到底部可以实时加载最新物品信息

  • 在使用层面,界面简洁,语言风趣,使用简单,能快速帮助用户发布、查找信息,提高了用户体验

  • 在技术上:

    • 使用HTML语言在网页浏览器上进行可视化实现,并且让网页大小自动适应屏幕宽度,解决了须同时维护多个版本的麻烦
    • 能够实现较为全面的失物招领系统
    • 使用mysql数据库进行相关数据的存储,支持PHP等多种语言,并且能有效的提高查询速度
    • 运用ajax技术,节省流量,可以不加载整个页面的情况下更新内容
    • 节省开发时间,运用jQuery和bootstrap进行js功能和布局的开发

6.2 本软件的缺点

  • 对物品图片的上传加载有待实现

  • 对各个浏览器的适配问题有待解决

  • 此网站的安全性较低,容易受到攻击(测试阶段曾经受到攻击,数据库被删除)

  • 在时间显示上有矛盾,系统自动添加的时间是提交信息的时间而不是丢失物品的时间

  • 账户数据和物品页面目前没有关联,只用cookie进行判断会导致数据丢失

  • 没有设置用户意见反馈通道,下拉框中没有的地点用户无法添加

  • 目前该系统对找到的物品的处理是手动删除,但是这样不安全,理想的处理方法是对该物品的消息进行标记,使该数据留在数据库内但是广场页面中不显示

  • 仅靠关键字搜索寻找物品效率低,后期会在物品描述中添加标签,在数据库中进行自动匹配,提高找回效率

上传的附件 cloud_download 基于php的失物招领程序的设计与实现.zip ( 1.46mb, 71次下载 )
error_outline 下载需要12点积分

keyboard_arrow_left上一篇 : 基于PHP和MYSQL数据库实现的失物招领系统 基于C#和ACCESS数据库实现的水电管理信息系统 : 下一篇keyboard_arrow_right



Mute
2019-03-02 10:00:00
基于php的失物招领程序的设计与实现
李李李
2020-10-25 13:56:04
这个账号密码 怎么看啊
李李李
2020-10-25 15:54:57
为什么我下载的里面的页面都连不上啊

发送私信

生命可以随心所欲,但不能随波逐流

11
文章数
9
评论数
最近文章
eject