微信公众号:Java随笔
关注,了解更多Java相关技术分享。如果您有任何疑问或建议,请留言公众号!

1。系统需求分析

1。系统说明

作为一名计算机专业的学生,​​我深深感受到交流和学习编程技术对于提高自身技能的重要性。随着Web的发展,网上出现了很多论坛社区,但它们的主题范围并不局限于编程,针对性不强,提供的服务也比较简单。因此,一个集成、统一、功能多元化的编程论坛社区,用于编程技术交流,是所有程序员和老手所渴望的。

编程论坛社区IBBS的主要功能包括发布帖子、在已发布帖子下评论、引用评论进行回复。此外,还有两个功能模块:动态推送功能,向用户推送最新的技术热点和编程的最新动态,包括简短的内容说明和链接跳转;资源下载功能,为注册用户提供编程资源。下载服务。本系统前台面对的用户分为普通用户和注册用户。普通用户只有浏览网站的权限。浏览内容包括帖子、评论、注册用户的个人主页、动态推送页面。他们无法使用内容发布、资源下载等功能。 ;注册用户可以使用本系统前台提供的所有功能,包括发布帖子、评论、下载资源、维护自己的个人主页和个人信息等。当然本系统提供了注册和登录功能,并完善了认证功能通过随机验证码的能力。每个注册用户都有自己的个人主页,可以看到自己的帖子,二次编辑,设置和更改头像,修改密码等。

本系统后台由管理员管理和维护。管理员分为两个级别。普通管理员拥有管理前端信息的权限,包括版块信息管理、用户信息管理、岗位管理等,而超级管理员在此基础上拥有管理员更多的权限,包括系统设置、管理员设置等,管理员可以后台动态管理大部分前端信息,包括父子栏目增删改查、不符合监管要求的帖子删除、动态信息增删改查编程资源等,非常方便,大大提高了后台管理的效率。
编程论坛社区IBBS为程序员提供专业的交流平台。在这里,您可以分享编程经验,交流学习编程技术,获取最新技术动态,下载编程学习资源。为程序员提供了一个便捷、内容丰富、高效的学习平台。

2。需求分析和应用功能

编程论坛社区IBBS数据库需要存储以下信息:

  • 父版块信息主要包括父版块id、父版块名称、父版块简介;

  • 子版块信息包括版块id、版块名称、版块介绍、版块版主(即注册用户ID)、版块数量子版块下的帖子,以及子版块所属的父版块,即父版块的id;

  • 帖子信息涉及帖子id、帖子标题、帖子内容、帖子发布时间、帖子所属subreddit id、编号帖子的浏览量和发布帖子的用户的用户 ID;

  • 关于评论,首先,评论有两种,一种是对用户发布的帖子进行评论,另一种是引用已有评论进行二次评论(即可以回复评论) )。上述要求在数据库表中体现为一个字段。如果该字段为0,则表示该记录是对某个帖子的评论。如果不为零,则该字段是回复评论的id。其他信息还包括评论的id、评论所属帖子的id、评论的内容、发表评论的时间、发表评论的用户id;

  • 注册用户信息包括用户id、用户名、账户密码、用户头像存储路径、账户注册时间和账户上次登录时间。其中,注册用户有权修改账户密码、更改头像;

  • 最新新闻信息包括动态id、动态标题、动态介绍、动态相关链接、动态添加时间;

  • 资源的信息包括资源的id、资源的标题(如书籍资源的标题)、资源的简介、资源的存储路径、存储路径资源对应的图片,以及资源添加的时间;

    ?超级管理员在此基础上拥有更多的权限,包括系统设置、管理员设置等。上述级别区分是使用字段完成的,其他信息还包括管理员的账户ID、账户名、账户密码、账户创建等时间。

3。系统中常见问题查询及更新

经常执行的可能对索引创建有影响的查询:

  • 通过父版块的 id 搜索属于父版块的子版块和帖子

  • 通过 subreddit 的 id 查找属于该 subreddit 的帖子

  • 通过帖子id查找帖子详细内容以及帖子下的评论

  • 通过用户 ID 查找用户发布的帖子

根据频繁查询,需要创建相关视图:

  • 家长论坛列表

  • Reddit 子列表

关于更新:

? ?
  • 帖子发布后,对应的用户拥有二次编辑和删除权限。考虑到某个帖子的内容可能不符合论坛社区的标准,管理员有权删除任何用户发布的帖子。 ,维护论坛社区的健康

  • 输入用户信息后,注册用户将获得更改头像和修改密码的权限

  • 4。应用程序功能

    前台主要功能如下:

    • 1。向网站访问者开放:

      • a。查看父版块及对应子版块的信息介绍

      • b。浏览注册用户发布的帖子以及帖子下的评论

      • c。浏览注册用户的个人中心

      • d。您可以使用搜索功能通过关键词搜索相应的帖子

      • e。您可以在技术更新模块浏览信息

      • f。资源模块中可以浏览资源信息,但无法下载

    • 2。向注册用户开放:

      • a。包括网站访问者可用的功能

      • b。可以在相应的reddit子版块下发帖

      • 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。删除资源

    2。数据库概念设计

    1。确定实体和属性

    分析编程论坛系统的系统需求,抽象出系统中设计的人和物,得到系统的实体如下:

    • 1。父节信息实体集。属性包括:父版块名称、父版块介绍

    • 2。子节信息实体集。属性包括:所属父版块id、子版块名称、子版块简介、子版块版主用户ID、子版块下发帖数

    • 3。发布信息实体集。属性包括:帖子所属板块ID、帖子标题、帖子内容、帖子发布时间、帖子发布用户ID、帖子浏览量发帖

    • 4。发表评论实体集。属性包括:评论所属帖子的id、用于区分评论是普通评论还是引用评论的id、评论内容、评论发布时间、发布的用户id评论

    • 5。动态信息实体集。属性包括:动态标题、动态介绍、动态链接、动态添加时间

    • 6。资源信息实体集。属性包括:资源标题、资源介绍、资源文件存储路径、资源介绍图片存储路径、资源添加时间

    • 7。用户信息实体集。属性包括:用户id、用户名、加密用户密码、用户头像存储路径、用户注册时间、用户上次登录时间

    • 8。管理员信息实体集。属性包括:账户名、加密账户密码、创建时间、管理员级别

    2。 E-R图

    系统E-R图如图2-1所示:

    3。数据库逻辑结构设计

    1。关系模式设计

    根据概念结构设计得到的E-R图和转换规则,得到如下关系模式(主键加粗,外键解释):

    父章节信息表(父章节id、章节名称、章节简介)

    子版块信息表(子版块id、所属父版块id、版块名称、版块介绍、版主用户id)

    帖子信息表(帖子id、帖子所属板块id、帖子标题、帖子内容、帖子发布时间、帖子发布者id、帖子浏览量)

    评论信息表(评论id,评论所属帖子的id,区分普通评论/引用评论的id,评论内容,评论发表时间,用户发表评论的id)

    动态信息表(动态id、动态标题、动态介绍、动态链接、动态添加时间)

    资源信息表(资源id、资源标题、资源介绍、资源文件存储路径、资源介绍图片存储路径、资源上传时间)

    用户信息表(用户id、用户名、加密账户密码、用户头像存储路径、用户注册时间、用户上次登录时间)

    管理员信息表(管理员id、账户名、加密账户密码、账户创建时间、区分普通管理员/超级管理员的ID)

    2。基本桌子设计



    4。数据库物理设计与实现

    1。创建基本表

    基本表的创建详细信息请参见SQL文件ibbs.sql,此处不再赘述。

    2。其他数据库对象的设计

    在实际生产环境中,将密码以明文形式存储在数据库中是非常危险的。一旦数据库分离等情况发生,所有用户信息将毫无保留地呈现给攻击者。因此,我的做法是对用户设置的密码进行加密,然后存入数据库。同时,在用户登录、修改密码等涉及密码的场景中,对密码进行两次加密后再进行比对,保证用户信息安全。

    5。应用设计

    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所示。 1 {IMG_13:Ahr0Chm6ly9pbwCTYMXVzy5jc2ruaw1nlmnulziwmjewnde5MTM1NTE2MJAUCG5NP3NZLXB2NLC3MMIZYWDGVGVYBWFYAYX0 exblx1ptrnvam3BVWLC1BMFHVNBKR2SSC2HHZG93XZEWLHRFYUHSMG NITTTLPYKC5BKXTNPAM1WMEWCGZYMDFOYYYJNPEMVFMVFM TYSY29SB3JFRKZGRKZGLHRFNZA =/}
    帖子详情界面如图 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的技术分享!