实战项目!用PHP实现的编程论坛网站
微信公众号:Java随笔录
关注可了解更多Java相关的技术分享。问题或建议,欢迎公众号留言!
文章目录
- 一、系统需求分析
- 1. 系统描述
- 2. 需求分析和应用程序功能
- 3. 系统常做的查询与更新
- 4. 应用程序功能
- 二、数据库概念设计
- 1. 确定实体和属性
- 2. E-R图
- 三、数据库逻辑结构设计
- 1. 关系模式设计
- 2. 基本表设计
- 四、数据库物理设计和实施
- 1. 创建基本表
- 2. 其他数据库对象的设计
- 五、应用程序设计
- 1. 开发及运行环境介绍
- 2. 主要功能设计
- 3. 主要界面
- 六、源码下载
- 公众号
一、系统需求分析
1. 系统描述
作为一个计算机专业的学生,本人深切感受到编程技术的交流学习对自身技能提升的重要性。而随着Web的发展,网上出现了很多论坛社区,但它们的话题范围并不限于编程,针对性不强,而且提供的服务也较为单一。因此,一个针对编程技术交流、完整统一、功能多样化的编程论坛社区是所有编程新手、老手所渴求的。
编程论坛社区IBBS的主体功能包括发布帖子、在已发布的帖子下进行评论、引用评论进行回复。除此之外,还有两个功能模块:动态推送功能,向用户推送最新的技术热点、编程方面的最新动态,包括简要的内容说明以及链接跳转;资源下载功能,向注册用户提供编程资源下载服务。本系统前台面对的用户分为普通用户和注册用户,普通用户只具有浏览网站的权限,浏览内容包括帖子、评论、注册用户的个人主页以及动态推送页面,不能使用内容发布、资源下载等功能;而注册用户则能使用本系统前台提供的所有功能,包括发布帖子、评论、下载资源、维护自己的个人主页和个人信息等。当然,本系统提供了注册、登录功能,并通过随机验证码的方式提高了认证能力。每个注册用户都拥有自己的个人主页,在个人主页中可以看到自己发布的帖子,能够对它们进行二次编辑,还能够设置、更换头像,修改密码等。
本系统的后台由管理员进行管理和维护,其中管理员分为两个等级,普通管理员拥有前台信息管理的权限,包括版块信息管理、用户信息管理、帖子管理等权限,而超级管理员则在此基础上拥有更多权限,包括系统设置、管理员设置等。管理员在后台能够动态地管理大部分前台信息,包括父、子版块的增删改,删除不符合规范要求的帖子,动态信息的增删改,编程资源的增删改等。十分便利,很大地提高了后台管理的效率。
编程论坛社区IBBS给编程者们提供了一个专业的交流平台,在这里,你可以分享自己的编程经验,交流学习编程技术,获取最新的技术动态,下载编程学习资源。给编程者们提供了一个便捷、内容丰富、高效率的学习平台。
2. 需求分析和应用程序功能
编程论坛社区IBBS数据库需要存储如下信息:
有关父版块的信息主要包括了父版块id,父版块的名称,以及父版块的简介;
而子版块的信息则包括子版块id、子版块名称、子版块简介、该子版块的版主,即某个注册用户的id,以及该子版块下的帖子数量,还有就是该子版块所属于的父版块,即某个父版块的id;
有关帖子的信息涉及帖子的id、帖子的标题、帖子的内容、帖子的发布时间、帖子所属子版块的id、帖子的浏览次数以及发布该帖子的用户id;
有关评论的信息,首先评论分为两种,一种是评论用户发布的帖子,另一种是引用已有的评论进行二次评论(即可以回复评论)。上述需求在数据库表中体现为一个字段,该字段为0表示该条记录是评论某个帖子的,若不为零,则该字段为所回复评论的id。其他信息还包括了该条评论的id、该条评论所属帖子的id、评论的内容、评论发布的时间,以及发布该条评论的用户id;
有关注册用户的信息包括用户id、用户名、账号密码、用户头像的存储路径、账号的注册时间以及账号最近一次登录的时间。其中,注册用户拥有修改自己的账户密码,以及更换头像的权限;
有关最新动态的信息包括动态的id、动态的标题、动态的简介、动态的相关链接,以及动态的添加时间;
有关资源的信息包括资源的id、资源的标题(例如图书资源的书名)、资源的简介、资源的存储路径、资源对应图片的存储路径,以及资源的添加时间;
另外,还需要存储管理员的信息,其中管理员分为两个等级,普通管理员拥有前台信息管理的权限,包括版块信息管理、用户信息管理、帖子管理等权限,而超级管理员则在此基础上拥有更多权限,包括系统设置、管理员设置等。上述等级的区分使用一个字段来完成,而其他信息还包括管理员的账户id、账户名、账户密码,以及账户的创建时间。
3. 系统常做的查询与更新
经常做的查询,或许对创建索引有影响的:
由父版块的id查找属于该父版块的子版块、帖子
由子版块的id查找属于该子版块的帖子
由帖子的id查找该帖子的详细内容以及该帖子下的评论内容
由用户的id查找用户发布的帖子
根据经常做的查询,需要创建有关视图的:
父版块列表
子版块列表
关于更新:
父版块和子版块信息录入后,更新较少,相对稳定,主要是记录的添加和删除,管理员具有添加、修改和删除父版块、子版块的权限
技术动态和资源这两个部分的信息同样更新很少,相对稳定,主要是记录的添加和删除,管理员同样具有添加、修改和删除的权限
帖子发布后,相应的用户具有二次编辑和删除的权限,而考虑到某个帖子的内容可能不符合论坛社区的规范,因此管理员拥有删除任何用户发布的帖子的权限,以维持论坛社区的健康
用户信息录入后,向注册用户开放更换头像以及修改密码的权限
4. 应用程序功能
前台的主要功能如下:
1、 对网站游客开放:
a. 查看父版块以及相应子版块的信息简介
b. 浏览注册用户发布的帖子以及帖子下的评论
c. 浏览注册用户的个人中心
d. 可以使用搜索功能,通过关键字搜索对应的帖子
e. 可以浏览技术动态模块中的信息
f. 可以浏览资源模块中的资源信息,但是不能下载
2、对注册用户开放:
a. 包括了网站游客能够使用的功能
b. 能够在相应的子版块下发布帖子
c. 能够在相应的帖子下面发布评论,回复评论
d. 可以下载资源模块中的资源
e. 可以管理自己的个人中心,包括修改密码、更换头像等
f. 可以二次编辑或删除自己发布的帖子
后台的主要功能如下(管理员对网站数据的管理基本全部包括查询,修改,增添,删除操作):
1、系统信息总览:
a. 当前登录管理员账号的基本信息
b. 系统所用服务器的配置信息
c. MySQL版本信息以及PHP配置信息
d. 网站当前的数据汇总,包括父版块、子版块数量,帖子总数以及注册用户数等
2、父版块管理:
a. 分页展示当前的父版块列表
b. 添加新的父版块
c. 编辑某个父版块的信息
d. 删除某个父版块
3、 帖子管理:
- a. 以管理员账号跳转到前台页面,浏览每个版块下的帖子,且拥有删除任何一篇帖子的权限
4、用户管理:
a. 分页展示当前的注册用户
b. 通过关键字来搜索某些用户
c. 访问用户的个人中心
d. 删除用户账号
5、动态管理:
a. 分页展示当前的动态列表
b. 添加新的动态
c. 编辑某个动态的信息
d. 删除某个动态
6、资源管理:
a. 分页展示当前的资源列表
b. 添加新的资源,包括文字简介、图片介绍以及资源文件等
c. 编辑某个资源的信息
d. 删除某个资源
二、数据库概念设计
1. 确定实体和属性
分析编程论坛系统的系统需求,将系统中设计的人、物进行抽象,得到了系统的实体如下:
1.父版块信息实体集。属性包括:父版块名称、父版块简介
2.子版块信息实体集。属性包括:所属父版块的id、子版块名称、子版块简介、子版块版主的用户id、子版块下帖子的数量
3.帖子信息实体集。属性包括:帖子所属子版块的id、帖子的标题、帖子的内容、帖子的发布时间、发布该帖子的用户id、帖子的浏览次数
4.帖子评论实体集。属性包括:评论所属帖子的id、用于区分该评论是普通评论还是引用评论的id、评论的内容、评论的发布时间、发布该评论的用户id
5.动态信息实体集。属性包括:动态的标题、动态的简介、动态的链接、动态的添加时间
6.资源信息实体集。属性包括:资源的标题、资源的简介、资源文件的存储路径、资源介绍图片的存储路径、资源的添加时间
7.用户信息实体集。属性包括:用户id、用户名、经过加密的用户密码、用户头像的存储路径、用户的注册时间、用户上次登录的时间
8.管理员信息实体集。属性包括:账户名、经过加密的账户密码、创建时间、管理员等级
2. E-R图
系统E-R图如图2-1所示:
三、数据库逻辑结构设计
1. 关系模式设计
根据概念结构设计得到的E-R图和转换规则,得到如下关系模式(主键加粗标出,外键予以说明):
父版块信息表(父版块id,版块名,版块简介)
子版块信息表(子版块id,所属父版块的id,版块名,版块简介,版主的用户id)
帖子信息表(帖子id,帖子所属子版块的id,帖子标题,帖子内容,帖子的发布时间,发布该帖子的用户id,帖子的浏览次数)
评论信息表(评论id,评论所属帖子的id,区分普通评论/引用评论的id,评论内容,评论发布的时间,发布该评论的用户id)
动态信息表(动态id,动态标题,动态简介,动态链接,动态的添加时间)
资源信息表(资源id,资源标题,资源简介,资源文件的存储路径,资源介绍图片的存储路径,资源的上传时间)
用户信息表(用户id,用户名,加密后的账户密码,用户头像的存储路径,用户注册时间,用户上次登录的时间)
管理员信息表(管理员id,账户名,加密后的账户密码,账户的创建时间,区分普通管理员/超级管理员的id)
2. 基本表设计
四、数据库物理设计和实施
1. 创建基本表
基本表的创建详见SQL文件ibbs.sql,这里不再赘述。
2. 其他数据库对象的设计
实际的生产环境中,以明文的方式在数据库中存放密码是十分危险的行为,一旦遇到脱库等其他情况,所有的用户信息都将毫无保留地呈现在攻击者面前。因此,我的做法是将用户设置的密码经过加密后再存入数据库中,同时,在用户登录、密码修改等涉及密码的场景中,都是将密码进行了二次加密再进行比较,以保障用户的信息安全。
五、应用程序设计
1. 开发及运行环境介绍
使用的技术栈为PHP + MySQL + Bootstrap + jQuery,使用到的开发工具有PhpStorm、WebStorm、XAMPP等,且该应用已经部署到服务器上并能够正常运行。
2. 主要功能设计
用户:用户主要有浏览父版块、子版块、用户发布的帖子和评论等信息、注册登录、发布帖子、发布评论、浏览技术动态、浏览资源页面、下载资源、搜索帖子、查看自己以及其他用户的个人中心、修改账户密码、更换头像等功能。
管理员主要有添加、修改以及删除父版块、子版块、技术动态、资源的功能,还能根据用户名搜索用户、管理用户、跳转到前台针对一些不符合规范的帖子进行删除等处理。
下图是用户的主要功能流程:
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所示。
管理员登录界面如图5-17所示。
后台管理主界面如图5-18所示。
管理人员列表界面如图5-19所示。
管理员添加界面如图5-20所示。
父版块列表界面如图5-21所示。
子版块列表界面如图5-22所示。
注册用户列表界面如图5-23所示。
用户搜索界面如图5-24所示。
动态列表界面如图5-25所示。
动态添加界面如图5-26所示。
资源列表界面如图5-27所示。
资源添加界面如图5-28所示。
六、源码下载
完整项目的源码以及SQL文件已经上传,详见下载地址
公众号
- 关注公众号,即时接收关于Java的技术分享!
实战项目!用PHP实现的编程论坛网站相关推荐
- .NET Core实战项目之CMS 第十七章 CMS网站系统的部署
目前我们的.NET Core实战项目之CMS系列教程基本走到尾声了,通过这一系列的学习你应该能够轻松应对.NET Core的日常开发了!当然这个CMS系统的一些逻辑处理还需要优化,如没有引入日志组件以 ...
- Apicloud开发新闻类App实战项目-老孟编程
Apicloud开发新闻类App实战项目-老孟编程 课程名称:Apicloud开发新闻类App实战项目 讲师:孟老师 课程介绍: 技术点包括: 1:vue实现apicloud开发脚手架--超级实用通用 ...
- 新手程序猿编程实战项目推荐「附源码下载」
知识更新那么快,跟随不上怎么办?碎片信息那么多,选择恐惧怎么办?别担心,我用心挑选了几个实战项目.长期推送干货.职场心得,让你收获满满. 复制代码 仿今日头条客户端 小白学习编程,最简单的就是手撸一个 ...
- 迅为-i.MX6ULL开发板-QT实战项目DHT11网络编程实战练习(一)
迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一) 发布时间:2021-7-2 09:49 发布者:落风 |编辑 文章目录1 项目前准备2 软件流程图3 Lin ...
- 新手程序猿编程实战项目推荐【附源码下载】
为你精选 ! 知识更新那么快,跟随不上怎么办? 碎片信息那么多,选择恐惧怎么办? 别担心,我用心挑选了几个实战项目. 长期推送干货.职场心得,让你收获满满. 话休絮烦,点击关注,长期推送编程干货! 仿 ...
- 陈华编程学院 | Laravel5.6模块化实战项目开发之公共模块篇(99元)
Laravel5.6模块化实战项目开发系列课程之公共模块篇,共47课时/13时57分.本课以Laravel5.6为开发框架,系统讲解Laravel5框架的安装和配置.后台框架结构布局.用户管理模块.网 ...
- Web 前端,易学难精,没有拿手的实战项目,怎么办?
今年受经济下行与疫情叠加的影响,毕业生有800多万,就业形势十分严峻,但即便如此,Web 前端人才在软件开发行业的就业市场中依旧供小于求,目前,全国总缺口每年大约为近百万人. 行业对前端需求量持续增加 ...
- 前端开源实战项目,大厂级别
强烈推荐 GitHub 上值得学习的开源实战项目,包含web前端,java,PHP,python,Android/IOS,大数据,区块链,AI机器学习,数据结构与算法,设计模式等等. 查看全文 htt ...
- python实战一个完整的项目-年终课程盘点|16 个 Python 综合实战项目合集
今天,就来给大家盘点一下,2019 年实验楼的 Pyhton 项目里,最值得一做的几个项目. 警告: 本来只想推荐几个课程的,但 Python 的好项目实在是太多了!无法割舍,最后决定推荐 16 个. ...
最新文章
- Visual Studio 快捷键 转载
- 最近学的用javascript给datagrid排序
- c语言115写成16进制,西安电子科技大学计算机导论与C语言程序设计 计算机文化概论.pdf...
- cipher java aes 模式_java – 为什么我的AES Cipher在init的DECRYPT_MODE上抛出一个InvalidKeyException...
- 某音爆火,人物头像动漫化,为女朋友打造独一无二的头像【python实战:人物图片动漫化】
- nginx 配置示例_Nginx位置指令示例
- C# 14位日期型字符串yyyyMMddHHmmss转变为日期格式
- 苹果电脑操作系统的演变历程
- 使用shell脚本删除rabbitMq的exchange
- Android解决监听AppBarLayout的滑动状态来动态设置标题时报requestLayout() improperly called by错误问题
- Excel报:文件已损坏无法打开错误问题解决
- ubuntu pstack报错:Input/output error
- Java使用get请求接收List集合数据(json)并导出报表
- 上传漏洞 Upload-Labs实战
- 美国国防部(DoD)计划采用敏捷开发
- 阿里云服务器安装mysql数据库
- Shiro(1.3.2)——入门
- java 实现http长轮询,webim使用http长轮询如何保证消息的绝对实时性
- 智能驾驶技术—10万张监控场景车辆数据集
- 论文阅读《Block-NeRF: Scalable Large Scene Neural View Synthesis》