(附源码)基于web的校园论坛的设计与实现 毕业设计92291 您所在的位置:网站首页 校园论坛制作软件 (附源码)基于web的校园论坛的设计与实现 毕业设计92291

(附源码)基于web的校园论坛的设计与实现 毕业设计92291

2024-07-11 10:33| 来源: 网络整理| 查看: 265

                                                                 摘  要

随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们传统的生活方式,包括工作,学习,社交等,网络的出现使地球上居住的陌生人不再像以前一样遥不可及,它拉近了人与人之间的距离,使我们的地球变成了一个村。随着我国的高等教育的普及,大学生的队伍也正在不断壮大,为了方便大学生对学校、老师以及同学之间相互了解相互交流,建设一个互动的校园论坛成为了首当其冲的重要任务。与此同时,这将给学校以及在校生的工作和学习生活带来了极大的便利。

校园论坛主要功能模块包括轮播图管理,网站公告管理,资源管理(校园资讯,资讯分类),系统用户(管理员,注册用户),模块管理(帖子板块,论坛帖子,意见反馈)等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用Thinkphp框架、JSP技术、Ajax技术进行业务系统的编码及其开发,实现了校园论坛的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对校园论坛的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现校园论坛的部署与运行。

关键词:校园论坛;PHP;Thinkphp

                         Design and Implementation of Campus Forum

Based on Web

                                                                 Abstract

With the rapid development of computer science and technology, computers have become a necessity for people's daily life, which has also led to a series of related industries. People's lives have undergone tremendous changes, and the emergence of networking is also changing people's traditional lifestyles, including work, learning, social networking, etc. The emergence of the Internet makes strangers living on the earth no longer as remote as before, It has narrowed the distance between people and turned our planet into a village. With the popularization of higher education in China, the team of college students is also growing. In order to facilitate the mutual understanding and exchange between college students, teachers, and classmates, building an interactive campus forum has become the first important task. At the same time, this will bring great convenience to the work and study life of the school and its students.

The main functional modules of the campus forum include rotation chart management, website announcement management, resource management (campus information, information classification), system users (administrators, registered users), module management (post boards, forum posts, and feedback), etc. The object-oriented development model is adopted for software development and hardware installation, which can well meet the actual use needs, We have improved the corresponding software setup and program coding work, adopted MySQL as the main storage unit for background data, and adopted the Thinkphp framework, JSP technology, and Ajax technology to code and develop business systems, achieving all the functions of campus forums. This report first analyzes the background, role, and significance of the research, laying a foundation for the rationality of the research work. Based on the analysis of various requirements and technical issues of the campus forum, the necessity and technical feasibility of the system have been proved. Then, the technical software and design ideas required for the design of the system have been introduced. Finally, the deployment and operation of the campus forum have been implemented.

Key words: campus forum; PHP;Thinkphp

目录

摘  要

Abstract

第一章 绪论

1.1 课题研究背景

1.2研究现状

1.3研究方法

第二章 相关技术

2.1 开发技术

2.1.1MVVM模式

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 课题研究背景

论坛是互联网的一种应用服务模式,通过这种服务,互联网用户可以在上面浏览到其他用户在网站发表的各种主题、文章、资讯信息、问题交流等具有各种表现形式的文字,并且用户可以在上面针对某个具体的内容即时地发表自己的回答、看法、议论等,或者直接发表自己的文章、问题或其它内容。由于论坛的这种特点,使得全球的用户都可以随时随地进行交流,从而真正做到全球信息的交流。论坛具有多种表现形式,各网站可以按照自己的服务特点设计出适合自身的论坛形式,例如,各类论坛、在线问答、各种供求信息、网上订购等,都可以是论坛的表现形式。论坛目前在互联网上得到非常广泛的应用,而且反应非常活跃。由于论坛可以使网上信息交流变得非常方便、广泛、及时,因而对于加深网站的服务深度、提高网站的知名度、拓展网站的交流范围、激活网站的人气都有不小的作用,因此在互联网的服务中,论坛将是一个重要的内容。

在 Internet飞速发展的二十一世纪的今天,互联网成为人们快速获取、发布和传递交流信息的重要渠道,它在人们政治、经济、生活、学习等各个方面发挥着重要的作用.随着Internet的飞速发展,目前,国内外大部分机关、学校、公司、企业都已经或正在建立自己的论坛.由此可见学生校园论在Internet应用上的地位显而易见,它已成为学校及其它单位信息化建设中倍受人们的重视重要组成部分。

本科题研究实现的校园论坛,用户可以通过发贴回帖的方式在论坛中进行交流,结合管理员在线对论坛信息进行实时调整管理,从而成为最为稳定的校园交流平台。校园论坛拥有校园资讯、资讯分类、交流论坛、论坛分类等功能。

1.2研究现状

1978 年在美国芝加哥开发出一套基于 8080 芯片的 CBBS/Chicago (Computerized Bulletin Board System/Chicago),此乃最早的一套BBS(校园论坛)系统。之后随着苹果机的问世,开发出基于苹果机的Bulletin Board System和大众信息系统(Peoples Message System)2种BBS系统。1981年IBM个人计算机诞生时,并没有自己的BBS系统。直到1982年,Buss Lane才用Basic 语言为IBM个人计算机编写了一个原型程序。其后经过几番增修,终于在 1983年通过 Capital PC User Group(CPCUG)的Communication Special Interest Group 会员的努力,改写出了个人计算机系统的BBS。经Thomas Mach 整理后,终于完成了个人计算机的第1版BBS 系统——RBBS-PC。这套BBS系统的最大特色是其源程序全部公开,有利于日后的修改和维护,因此后来在开发其他的BBS系统时都以此为框架,所以RBBS-PC赢得了BBS鼻祖的美称。

大约是从1991年开始,国内开始了第一个BBS站。经过长时间的发展,直到1995年,随着计算机及其外设的大幅降价,BBS才逐渐被人们所认识。1996年更是以惊人的速度发展起来。国内的BBS站,按其性质划分,可以分为2种:一种是商业BBS站,如新华龙讯网;另一种是业余BBS站,如天堂资讯站。由于使用商业BBS站要交纳一笔费用,而商业站所能提供的服务与业余站相比,并没有什么优势,所以其用户数量不多。多数业余BBS 站的站长,基于个人关系,每天都互相交换电子邮件,渐渐地形成了一个全国性的电子邮件网络China FidoNet(中国惠多网)。于是,各地的用户都可以通过本地的业余BBS站与远在异地的网友互通信息。这种跨地域电子邮件交流正是商业站无法与业余站相抗衡的根本因素。由于业余 BBS站拥有这种优势,所以使用者都更乐意加入。这里“业余”2字,并不是代表这种类型的BBS站的服务和技术水平是业余的,而是指这类BBS 站的性质。一般 BBS站都是由志愿者开发的。他们付出的不仅是金钱,更多的是精力。其目的是为了推动中国计算机网络的健康发展,提高广大计算机用户的应用水平国内的BBS站,大多数还是大型综合性BBS站。随着计算机的普及,特别是宽带的普及,BBS的活动将会进一步高涨。但是,随之而来对专注于领域方面的BBS将会慢慢增加需求。尽管BBS站台的数量在不断增长,但BBS的发展过程,也出现了一些问题。国内自己开发的BBS基本上都是处于最原始的JSP MODEL1模式,这种模式是控制层与表示层合二为一,虽然开发简单,但是拥有很差的扩展性,可维护性,这样极大的限制了BBS站点的扩展。

1.3研究方法

首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定是基于Mysql数据库,在php的Thinkphp框架设计的基础上实现,设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。

第二章 相关技术

2.1 开发技术

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

前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。后端部分:采用Thinkphp框架,运用phpstudy 集成开发工具。

2.1.1MVVM模式

MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。

视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。

模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。

控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。

2.1.2 B/S结构

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

2.1.3 PHP介绍

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语言开发大型商业程序也是可以胜任的。

2.1.4 Mysql数据库

Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。

针对本文中设计的校园论坛在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对校园论坛后台数据进行存储操作。

第三章 校园论坛分析

3.1 可行性分析

3.1.1 技术可行性分析

从开发工具来看,由于校园论坛是基于PHP的,因此有很多开发工具都可以进行开发,这些功能强大的开发工具可以给我来设计校园论坛带来非常大的方便。

从校园论坛的本身技术来说,对于我来开发一个校园论坛这个毕设是不费事的。校园论坛的开发可以简单的分为前台端、后台端开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。Web后台管理使用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

更新时间:

表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:

表feedback (意见反馈)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

feedback_id

int

10

0

N

Y

意见反馈ID

2

user

int

10

0

Y

N

0

用户

3

theme

varchar

64

0

Y

N

主题

4

related_pictures

varchar

255

0

Y

N

相关图片

5

feedback_content

text

65535

0

Y

N

反馈内容

6

examine_state

varchar

16

0

N

N

未审核

审核状态

7

examine_reply

varchar

16

0

Y

N

审核回复

8

recommend

int

10

0

N

N

0

智能推荐

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表forum_posts (论坛帖子)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

forum_posts_id

int

10

0

N

Y

论坛帖子ID

2

title

varchar

64

0

Y

N

标题

3

section

varchar

64

0

Y

N

版块

4

user

int

10

0

Y

N

0

用户

5

full_name

varchar

64

0

Y

N

姓名

6

cover

varchar

255

0

Y

N

封面

7

details

longtext

2147483647

0

Y

N

详情

8

hits

int

10

0

N

N

0

点击数

9

praise_len

int

10

0

N

N

0

点赞数

10

examine_state

varchar

16

0

N

N

未审核

审核状态

11

examine_reply

varchar

16

0

Y

N

审核回复

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

更新时间

表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

更新时间:

表post_section (帖子版块)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

post_section_id

int

10

0

N

Y

帖子版块ID

2

section

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

更新时间

表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

examine_state

varchar

16

0

N

N

已通过

审核状态

5

recommend

int

10

0

N

N

0

智能推荐

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

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登录模块的实现

系统的登录窗口是用户的入口,用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。

登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后在login.jsp页面发送登录请求,调用src下的mainctrl类的dopost方法来验证。

用户登录模块的IPO如下所示:

输入:用户名和密码。

处理:

1)检测用户输入的账号、密码是否正确及在数据库已对应存在。

2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。

3)根据用户名,将其显示在系统首页上。

输出:是否成功的信息。

登录流程图如下所示。

图5-1登录流程图

系统登录界面如下所示。

图5-2系统登录界面

  登录,也是获取用户post的数据,并将用户提交的密码md5加密与数据库中加密的密码比对校验。登录请求时我们会生成一个用户token,token作为用户登录令牌会保存在用户设备的缓存中,以实现保持登录状态的效果。代码如下:

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' => '登录失败,账号不存在']];

        }

    }

验证登录状态则是使用到登录后更新的token值,验证token是否过期,这里我们是保存2个小时。当token已经过期时,就会返回false,这个时候前端就会重新调用登录方法了。代码如下:

public function state()

    {

        $accessTokenModel = new AccessTokenModel();

        $token = Request::header('x-auth-token');

        if (!empty($token)) {

            $result = $accessTokenModel->getToken($token);

            if($result){

$data['result'] = $result;

}else{

$data['error'] = 30000;

$data['message'] = '未登录';

}

//            $data = $result;

        } else {

            $data['error'] = 30000;

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

        }

        return json_encode($data);

    }

public function getToken($token){

        $token_info = $this->where(['token'=>$token])->find();

        if ($token_info){

            $time = date('Y-m-d H:i:s');

            $create_time = $token_info['create_time'];

            $bol_time = date('Y-m-d H:i:s',strtotime('+2 hour',strtotime($create_time)));

            $info = json_decode($token_info['info'],true);

            $info['token'] = $token_info['token'];

            if ($bol_time>=$time){

                return $info;

            }else{

                return false;

            }

        }else{

            return false;

        }

}

5.2管理员功能模块

系统呈现出一种简洁大方的首页:界面简约、鳞次栉比,用户能轻车熟路的使用。出于对系统使用群体广泛的顾虑,应有良好性能的后台。

如下图所示为系统的首页界面。

图5-3系统首页界面

// 加载基础文件

require __DIR__ . '/../thinkphp/base.php';

// 允许的原域名

header('Access-Control-Allow-Origin: *');

//允许的请求头信息

header("Access-Control-Allow-Headers: *");

//允许的请求类型

header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');

//允许携带证书式访问(携带cookie)

header('Access-Control-Allow-Credentials:true');

// 支持事先使用静态方法设置Request对象和Config对象

// 执行应用并响应

Container::get('app')->run()->send();

管理员登录进入校园论坛可以查看:后台首页,轮播图管理,网站公告管理,资源管理(校园资讯,资讯分类),系统用户(管理员,注册用户),模块管理(帖子板块,论坛帖子,意见反馈)等内容,如图5-4所示。

图5-4管理员功能界面图

用户管理,在用户管理可以查看用户名、昵称、姓名、性别、年龄等信息,并可根据需要进行新增,修改或删除操作,如图5-5所示。

图5-5用户管理界面图

网站公告管理,在列表可以查看公告标题,创建时间,更新时间等等信息,并可根据需要进行新增,修改或删除操作,如图5-6,5-7所示。

图5-6网站公告管理界面图

图5-7添加公告界面图

校园资讯管理,在信息列表可以查看资讯标题,封面,文章分类,创建时间等信息,并可根据需要进行新增,修改或删除操作,如图5-8,5-9所示。

图5-8校园资讯管理界面图

图5-9资讯添加界面图

论坛帖子管理,在信息列表可以查看帖子标题,板块,用户,姓名,封面,等信息,并可根据需要进行新增,修改或删除,审核等操作,如图5-10,5-11所示。

图5-10论坛帖子管理界面图

图5-11审核界面图

5.3注册用户功能模块

注册用户登录进入校园论坛可以查看首页,网站公告,校园资讯,论坛帖子,意见反馈,我的(我的账号,我的收藏,个人中心)等内容,如图5-12所示。

图5-12注册用户功能界面图

校园资讯,在此页面可以查看管理员发布的校园资讯,并进行收藏,点赞,评论等操作,如图5-13所示。

图5-13校园资讯界面图

论坛帖子,在此页面可以通过搜索,排序等方式查看帖子板块,发布用户等信息,并进行收藏,点赞,评论等操作,还可以在后台发布论坛帖子。如下图所示。

图5-14论坛帖子界面图

图5-15论坛帖子详情界面图

图5-16论坛帖子发布界面图

意见反馈,用户在此页面输入主题,上传相关图片,以及输入反馈详情进行意见反馈,如下图所示。

图5-17意见反馈界面图

第六章 系统测试 6.1测试目的

在对该系统进行完详细设计和编码之后,就要对校园论坛方案的程序进行测试,检测程序是否运行无误,反复进行测试和修改,使之最后成为完整的软件,满足用户的需求,实现预期的功能。

6.2测试过程

在软件的测试过程中,通常测试人员需要针对不同的功能模块设计多种测试用例。通过测试用例能够及时发现代码业务逻辑上是否与真实的业务逻辑相对应,及时发现代码上或逻辑上的缺陷,以此来来完善系统,提高软件产品的质量,使软件具有良好的用户体验。

登录测试用例表如下所示。

表6-1登录测试用例

测试性能

用户或操作员登录系统

用例目的

测试用户或操作员登录系统时功能是否正常

前提条件

进入用户登录页面或操作员登录页面

输入条件

预期输出

实际情况

各项信息不予填写,直接点击登陆按钮

不允许登录,提示填写账号相关信息

一致

填写错误的登录名或密码后点击登录系统

提示用户名或密码错误,要求重新填写进行登录

一致

填写与验证码信息不一致的信息

系统显示出提示信息,表明验证码错误,要求重新填写

一致

注册用户发帖测试用例表如下所示。

表6-2注册用户发帖测试用例

测试性能

用户进行注册用户发帖的操作

用例目的

测试用户进行注册用户发帖操作时,该功能是否正常

前提条件

用户进入注册用户详情页,该注册用户能够考勤发帖

输入条件

预期输出

实际情况

对着某注册用户点击“发帖”按钮

界面跳转至发帖界面

一致

在发帖界面,输入必填项,点击“提交”按钮

提示“发帖成功”,并返回上一级界面

一致

在发帖界面,填写发帖表单的时候未输入完整,点击“提交”按钮

提示“发帖失败”

一致

注册用户管理测试用例表如下所示。

表6-3注册用户管理测试用例

测试性能

注册用户相关信息管理功能

用例目的

测试系统操作者对注册用户相关信息进行管理的功能是否正常

前提条件

登录系统进入相关管理页面

输入条件

预期输出

实际情况

进入注册用户管理界面,点击“录入”按钮,填写所有必填项,点击提交

提示“录入成功”,并返回查询界面

一致

进入注册用户管理界面,点击“录入”按钮,未填写一个或者多个必填项,点击提交

提示“录入失败”,请填写必填项

一致

进入注册用户管理界面,选择要修改的一条数据,点击该条数据后面的“修改”按钮 

节目跳转至修改界面

一致

在修改界面,修改可修改项后,点击“提交”按钮

提示“修改成功”,并返回查询界面

一致

进入注册用户管理界面,点击某条数据后面的删除按钮

提示“是否要删除该数据”,如果用户点击“确定”按钮,则成功删除该条数据,并提示“删除成功”,之后返回查询界面

一致

6.3测试结果

经过对此系统的测试,得出该系统足以满足用户日常需求,在功能项目和操作等方面也能满足操作员对于其他用户的管理。但是,还有很多功能有待添加,这个系统仅能满足大部分的需求,还需要对此系统的功能更进一步的完善,这样使用起来才能更加的完美。

                                                                   结论

至此,校园论坛的设计开发已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Thinkphp、PHP技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。

当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。

                                                               参考文献

[1]Rio Américo,Brito e Abreu Fernando. PHP code smells in web apps: Evolution, survival and anomalies[J]. The Journal of Systems & Software,2023,200.

[2]Dewald C.,Becker L.,Wacker F.,Vogel A.,Bruening R.,Hinrichs J.. Abstract No. 547 Heparin Reversal with Protamine Sulfate after Percutaneous Hepatic Perfusion (PHP): How Much Is Too Much?[J]. Journal of Vascular and Interventional Radiology,2023,34(3S).

[3]蒋先梅.基于PHP的学生信息管理系统的设计与实现[J].无线互联科技,2023,20(01):45-47.

[4]刘帅,崔桐,胡士辉等. 基于PHP和Mybatis框架的水文设施设备台账管理系统的设计和实现[C]//中国水利学会.2022中国水利学术大会论文集(第五分册).2022中国水利学术大会论文集(第五分册),2022:51-57.DOI:10.26914/c.cnkihy.2022.056789.

[5]黄波.基于PHP+MySQL图书管理系统设计与实现[J].信息与电脑(理论版),2021,33(19):124-126.

[6]吴国辰.基于PHP+微信小程序的教务管理系统设计与实现[J].电脑编程技巧与维护,2021(05):72-73.DOI:10.16184/j.cnki.comprg.2021.05.028.

[7]杨知易. 基于PHP的电力检修管理系统设计与实现[D].电子科技大学,2021.DOI:10.27005/d.cnki.gdzku.2021.002878.

[8]申晓杰,赵晓龙,马文杰,赵嘉超,周佳,杜玉航,赵搏洋.基于Linux的智慧校园论坛的研究与开发[J].技术与市场,2021,28(02):81-83.

[9]苏天意,余明朕.基于PHP的高校实验室管理系统的设计与实现[J].中国管理信息化,2021,24(02):198-199.

[10]蔡俊铠,廖晓芳,朱俊宇,方栋豪.基于PHP+MySql的宿舍管理系统[J].电脑知识与技术,2020,16(36):60-63+74.DOI:10.14004/j.cnki.ckt.2020.3682.

[11]时小芳,邬卓恒,陈健玲.基于PHP和MySQL的实体书店管理系统设计[J].电脑知识与技术,2020,16(34):64-65+68.DOI:10.14004/j.cnki.ckt.2020.3885.

[12]董辉.基于PHP的智能琴房预约管理系统的设计与实现[J].电脑知识与技术,2020,16(29):82-84.DOI:10.14004/j.cnki.ckt.2020.3282.

[13]宋晶晶,蒲媛媛,杨茂强.PHP人事信息管理系统设计与实现[J].福建电脑,2020,36(09):78-80.DOI:10.16707/j.cnki.fjpc.2020.09.022.

[14]郭灿杰.基于PHP的党费管理系统研究与实现[J].湖南邮电职业技术学院学报,2020,19(02):38-41.

[15]许悦.基于php技术的学生管理系统实现方法[J].科技风,2020(14):114.DOI:10.19392/j.cnki.1671-7341.202014097.

[16]许悦.基于php技术的学生管理系统设计研究[J].科学技术创新,2020(07):88-89.

[17]李鹏飞. 基于Web技术的校园论坛设计与实现[D].内蒙古科技大学,2019.DOI:10.27724/d.cnki.gnmgk.2019.000570.

[18]QingHai Yin. Research and Implementation of Network Examination System Based on PHP Language[J]. Journal of Physics: Conference Series,2018,1087(6).

[19]E S Soegoto,I B Nurwahan. Designing Student Aspiration Website with PHP[J]. IOP Conference Series: Materials Science and Engineering,2018,407(1).

[20]Rotmianto Mohamad,Wahyudi Eko. Developing Plugin e-DDC as an Additional Application for Senayan Library Management System with PHP Language Programming and MySQL Database[J]. Record and Library Journal,2018,2(1).

致  谢

时间过的很快,不知不觉,在中北大学的学习生活即将结束。毕业之际,我真诚地向帮助过我的老师、家人、同学、朋友们表达感谢。首先要感谢的是我的母校。感谢母校给了我美好的生活和优越的学习环境,使我能学到了很多知识,也不断的变得优秀;感谢家人在这四年期间一直给与我的爱和无条件的支持,让我没有后顾之忧地完成学业;感谢软件学院的任课老师们给我鼓励和认可,让我有信心去做好每一件事情;感谢同学们的帮助,让我的大学生活更有意义。在此次毕业设计的实现过程中, 我得到了老师们的耐心指导让我顺利完成了该设计。从最初的选题和开题开始,老师就给予我很多帮助,他们认真负责的态度、丰富的教学经验让我学到了很多。

同时也要感谢我敬爱的班主任和实训课程的老师,他们在各个方面都教给了我丰富的经验,在面对各种困难时如何处理。因为今年的特殊性,老师们不仅在学习中给我以精心的指导,同时还在其它方面给予我观关怀,指导老师不辞辛苦的为大家录制视频和一遍遍讲解让我心怀感激之情。在此,我真诚的感恩、感谢我的指导教师们。

还要感谢实习期间不厌其烦教导我鼓励我的技术师傅,他指导了我各个方面的技巧,尤其是编程方面,迄今我的很多技巧和编写规范都有赖于他的指导、纠正。

最后还要特别感谢身边的各位同学们,一直支持鼓励我,无论何时何种境况。我很荣幸获得同学们的帮助,也很开心能够和大家共度大学四年的时光。

最后的最后,再次发自肺腑的感谢所有帮助过我的人。

                                点赞+收藏+关注 → 私信领取本源代码、数据库



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有