微信公众号: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实现的编程论坛网站相关推荐

  1. .NET Core实战项目之CMS 第十七章 CMS网站系统的部署

    目前我们的.NET Core实战项目之CMS系列教程基本走到尾声了,通过这一系列的学习你应该能够轻松应对.NET Core的日常开发了!当然这个CMS系统的一些逻辑处理还需要优化,如没有引入日志组件以 ...

  2. Apicloud开发新闻类App实战项目-老孟编程

    Apicloud开发新闻类App实战项目-老孟编程 课程名称:Apicloud开发新闻类App实战项目 讲师:孟老师 课程介绍: 技术点包括: 1:vue实现apicloud开发脚手架--超级实用通用 ...

  3. 新手程序猿编程实战项目推荐「附源码下载」

    知识更新那么快,跟随不上怎么办?碎片信息那么多,选择恐惧怎么办?别担心,我用心挑选了几个实战项目.长期推送干货.职场心得,让你收获满满. 复制代码 仿今日头条客户端 小白学习编程,最简单的就是手撸一个 ...

  4. 迅为-i.MX6ULL开发板-QT实战项目DHT11网络编程实战练习(一)

    迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一) 发布时间:2021-7-2 09:49    发布者:落风 |编辑 文章目录1 项目前准备2 软件流程图3 Lin ...

  5. 新手程序猿编程实战项目推荐【附源码下载】

    为你精选 ! 知识更新那么快,跟随不上怎么办? 碎片信息那么多,选择恐惧怎么办? 别担心,我用心挑选了几个实战项目. 长期推送干货.职场心得,让你收获满满. 话休絮烦,点击关注,长期推送编程干货! 仿 ...

  6. 陈华编程学院 | Laravel5.6模块化实战项目开发之公共模块篇(99元)

    Laravel5.6模块化实战项目开发系列课程之公共模块篇,共47课时/13时57分.本课以Laravel5.6为开发框架,系统讲解Laravel5框架的安装和配置.后台框架结构布局.用户管理模块.网 ...

  7. Web 前端,易学难精,没有拿手的实战项目,怎么办?

    今年受经济下行与疫情叠加的影响,毕业生有800多万,就业形势十分严峻,但即便如此,Web 前端人才在软件开发行业的就业市场中依旧供小于求,目前,全国总缺口每年大约为近百万人. 行业对前端需求量持续增加 ...

  8. 前端开源实战项目,大厂级别

    强烈推荐 GitHub 上值得学习的开源实战项目,包含web前端,java,PHP,python,Android/IOS,大数据,区块链,AI机器学习,数据结构与算法,设计模式等等. 查看全文 htt ...

  9. python实战一个完整的项目-年终课程盘点|16 个 Python 综合实战项目合集

    今天,就来给大家盘点一下,2019 年实验楼的 Pyhton 项目里,最值得一做的几个项目. 警告: 本来只想推荐几个课程的,但 Python 的好项目实在是太多了!无法割舍,最后决定推荐 16 个. ...

最新文章

  1. Visual Studio 快捷键 转载
  2. 最近学的用javascript给datagrid排序
  3. c语言115写成16进制,西安电子科技大学计算机导论与C语言程序设计 计算机文化概论.pdf...
  4. cipher java aes 模式_java – 为什么我的AES Cipher在init的DECRYPT_MODE上抛出一个InvalidKeyException...
  5. 某音爆火,人物头像动漫化,为女朋友打造独一无二的头像【python实战:人物图片动漫化】
  6. nginx 配置示例_Nginx位置指令示例
  7. C# 14位日期型字符串yyyyMMddHHmmss转变为日期格式
  8. 苹果电脑操作系统的演变历程
  9. 使用shell脚本删除rabbitMq的exchange
  10. Android解决监听AppBarLayout的滑动状态来动态设置标题时报requestLayout() improperly called by错误问题
  11. Excel报:文件已损坏无法打开错误问题解决
  12. ubuntu pstack报错:Input/output error
  13. Java使用get请求接收List集合数据(json)并导出报表
  14. 上传漏洞 Upload-Labs实战
  15. 美国国防部(DoD)计划采用敏捷开发
  16. 阿里云服务器安装mysql数据库
  17. Shiro(1.3.2)——入门
  18. java 实现http长轮询,webim使用http长轮询如何保证消息的绝对实时性
  19. 智能驾驶技术—10万张监控场景车辆数据集
  20. 论文阅读《Block-NeRF: Scalable Large Scene Neural View Synthesis》

热门文章

  1. 深入场景,智能决策倍增数字化转型价值 | 爱分析报告
  2. 信创云管理平台,头部券商解决异构云资源管理的关键
  3. Java判断手机号格式
  4. 《Imperfect C++中文版》——1.2 编译期契约:约束
  5. 小程序云开发,学习总结
  6. WPF中的3D Wireframe
  7. 苹果浏览器实战(三)
  8. 经典C语言程序设计100例,部分有个人注解
  9. 掌握 Ajax -- Ajax 简介
  10. 计算机信息心得体会作文50字,信息技术心得体会(精选11篇)