# 微博系统
**Repository Path**: pb98/microblog-system
## Basic Information
- **Project Name**: 微博系统
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-01-14
- **Last Updated**: 2021-06-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 微博系统
#### 功能概述
基于B/S架构的微博系统主要用功能包括:用户登录退出、用户信息维护、微博发布、好友关注、发布提问等等。本系统结构如下:
(1)用户模块:
实现登录功能
实现用户登录的退出
实现用户注册
实现已注册用户信息的修改
(2)微博模块:
实现微博的发布、修改、查看功能;
实现微博操作用户可以查看个人微博、好友微博、收藏微博等信息、对微博点赞、转发、收藏、评论、删除等
(3)好友模块:
实现用户关注、关注数+1、粉丝数+1、取消关注、拉黑用户、私信搜索用户等等;
(4)海螺模块:
实现发布问题、回答问题、积分增加等
(5) 后台管理员模块
实现管理员登录
实现使用柱状图显示微博、用户、评、海螺、评论、回答等数据的统计结果
用户搜索、用户封禁
微博搜索、微博删除
海螺搜索、海螺删除
项目访问路径:http://localhost:8080/weibo/register_index
账户1@qq.com~10@qq.com 密码111111
管理员账户:admin 密码:admin
#### 摘要
微博作为一种信息交流和分享的平台,在这个信息时代显得特别重要,人们可以随意浏览和发布信息,获取最新最热的咨询,而它的及时性和高互动性也使得它深受人们的喜爱,随着微博在网民中的火热,网络红人,网络热词等微博效应逐渐形成,该微博系统采用B/S架构,实现微博的浏览和发布,评论和收藏等基本功能的基础上,更在以往微博系统中添加了问题悬赏,用户标签等新功能,提高用户体验,在后台管理中实现对微博和用户的综合管理,在实现技术方面,页面使用JSP,javaScript,ajax等技术提高系统页面与用户之间的交互性,后台使用java语言,SSM框架实现具体功能,中间层采用Tomcat服务器,使用Oracle数据库持久化数据。
#### 系统需求分析
1.当用户进入系统时候,可以选择登陆或注册用户,如果忘记了密码还可以通过密保问题来重置密码。

2.当用户登陆后,可以管理用户的个人基本信息,修改用户基础信息,修改用户密保信息。修改用户头像等功能。

3.用户微博管理系统,当用户登陆进去系统时,可以在首页发布微博,通过关键字搜索微博内容中关键字的微博信息。产看微博,包括查看个人微博、好友微博、推荐微博。

4.评论管理,评论管理依赖于微博模块,用户可以查看微博的评论,对微博信息发布评论,以及删除自己的评论。

5.海螺管理,用户登陆后可以在海螺模块发布海螺问题,发布问题时可以选择悬赏的积分数目,同时减少自己的积分数,用户可以参加回答他人的海螺问题,当回答的答案被采纳时,就可以获得用户悬赏的积分数。

6.好友管理,当用户登陆时可以关注系统推荐好友,也可以自己搜索用户,查看用户的主页面,添加关注或取消关注用户,还可以给用户发送私人信息,或者拉黑用户。

7.消息通知,当用户的关注,微博评论,点赞,收藏时调用消息通知。

8.管理员:管理员登陆系统,可以管理微博用户,对不良用户进行封禁和注销账户的操作,也可以恢复用户的状态,同时也可以对微博信息进行管理,如删除微博,恢复被管理员删除的微博信息等,对微博评论的删除和恢复等操作。

#### 系统设计
实体类主要用来传递数据,主要包括User、Friend、PointAction、PointRecord、Weibo、WeiboCollect、WeiboComm、WeiboLike、WeiboTrans等,用户类中包括用户的基本信息,微博类中包括微博的基本信息同时包含实体用户类,好友类包括好友编号,好友创建时间与关注双方的用户类等,私信类包含私信双方的用户类与私信的基本属性,微博收藏类包含收藏的微博类与用户id等收藏属性,微博评论类包含微博类和用户类以及评论内容等属性,微博转发类包含用户类和微博类以及转发时间等属性,微博点赞类包含微博类和用户类以及点赞时间等属性。实体类之间的类关联关系如图
在controller层包含MainController、WeiboController、FrendController、AdminController四个JAVA类,在SpringMVC框架中主要用来接收浏览发送给服务器的请求和数据处理并控制请求的转发,将从Service层中获取的数据响应给浏览器端。MainController主要用发来接收来自用户相关页面中提交的表单或链接请求,并将请求的参数传递到Controller中对应的方法中,携带数据响应给浏览器,在浏览器端显示数据,具体属性和方法如图
WeiboController主要用发来接收来自微博相关页面中提交的表单或链接请求,并将请求的参数传递到Controller中对应的方法中,并获取到业务处理层中返回的数据,携带数据响应给浏览器,在浏览器端显示数据,具体属性和方法如图
FriendController主要用发来接收来自好友相关页面中提交的表单或链接请求,并将请求的参数传递到Controller中对应的方法中,并获取到业务处理层层中返回的数据,携带数据响应给浏览器,在浏览器端显示数据,具体属性和方法如图
AdminController主要用发来接收来自管理员相关页面中提交的表单或链接请求,并将请求的参数传递到Controller中对应的方法中,并获取到业务处理层层中返回的数据,携带数据响应给浏览器,在浏览器端显示数据,具体属性和方法如图
在Service层中主要包含四个Service接口和他们的实现类,包括IUserService用来处理用户业务例如用户注册、登陆、修改个人信息等,如图4.6所示。IWeiboService用来处理微博相关的业务例如查找微博,发布微博,删除微博以及对微博的相关操作例如点赞、评论等功能的业务实现,如图4.7所示。IFriendService用来处理和用户好友相关的业务例如点赞、取消点赞、私信、拉黑等功能的业务实现,如图4.8所示。IAdmoinService用来处理和管理员相关的业务例如管理员登陆、图表展示、用户管理、微博管理、海螺管理功能的业务实现,如图
用户业务处理类图:
微博业务处理类图:
微博控制器类图:
用户登录顺序图:
用户修改信息顺序图:
微博操作顺序图:
#### 系统功能实现
登陆系统:在系统登陆注册页面当用户输入邮箱后会通过Ajax将用户输入的邮箱传到后台控制器,调用Service层中对应的方法,是Service方法中调用Dao层接口查找用户邮箱是否已经被注册。


修改个人信息:当用户点击修改后浏览器会提交form表单,发送请求携带用户基本信息到SpringMVC的控制器中接收请求,并把form表单中的数据组装成User对象,作为参数传入Service层中对应的方法进行处理,调用Dao层接口修改用户的基本信息,并修改当前服务器中Session中的User对象信息。




微博系统:用户可以发布微博,在微博信息中可以插入表情,也可以选择插入一张图片,在前台页面中,表情使用javaScript动态生成div标签并显示在页面上,当用户点击发布后,浏览器发送请求将前台页面表单中微博信息和图片信息传入后台控制器,将图片信息保存在服务器中。

搜索微博:


微博操作:

用户的关注、粉丝、微博数:



用户私信:

海螺模块:当用户进入海螺主页时,浏览器页面发送请求到后台控制器中,调用业务层中特定的方法,Service中调用Dao层接口在数据库中查找有关不同筛选条件的海螺问题,并将查找到的问题封装在集合中,通过控制器发送服务器响应,跳转到海螺首页,并循环展示所有的海螺问题。如果用户需要发布问题,在填写了问题描述和所要悬赏的积分数后,点击发布,浏览器提交表单数据到后台控制器中。

管理员模块:管理员登陆后,页面发送请求到后台控制器中,后台Controller层接收请求,将用户名和密码作为参数调用业务层中的方法,在Service层中调用Dao层接口和数据库中管理员账号表中查询,如果存在就返回管理员类,如果不存在,则抛出异常,异常层层上抛,在控制器层中接收,并将错误信息保存在方法的返回值中。
登录:
相关数据可视化:
用户管理:


用户微博管理:
用户海螺管理:
#### 个人感悟
● 1804103020聂建超:
通过本次项目我收获颇丰,学习网络编程应是循序渐进,有始有终,按部就班,脚踏实地的,要想学好网络编程,应该按照网络编程学习的体系循序渐进,信心毅力是重要的,这些应是我们必备的心理素质,不要被眼前的困难所打败,要迎难而上。独木难成林,要学会团队合作,在团队中扮演好自己的角色。
● 1802106018吴静:
在这次大作业中,我深深感觉到自己身上的不足之处,认识到积累知识的重要性。 有很多知识是在书本上学不来的,每当遇上问题,我就通过自己查阅各种相关资料或者请教别人来解决,在完成作业的过程中学习新的知识,不断提高自己的能力,世上无难事,只怕有心人。
● 1810113007赵文汭:
通过这一次的大作业,使我增加了对JAVAweb的理解,更加深刻的明白了分层与模块划分对整体的重要性。在整个过程中,遇到不少的问题,比如一些类的使用,问题或大或小,在组长的指导下,队友的帮助下,都得到了很好的解决,整个过程使我受益匪浅。
● 1801113009马路遥:
通过这次实训,我收获了很多,一方面学习到了许多以前没学过的专业知识与知识的应用,另一方面还提高了自我动手做项目的潜力。本次实训,是对我潜力的进一步锻炼,也是一种考验。从中获得的诸多收获,也是很可贵的。是一个让我把书本上的理论知识运用于实践中的好机会,原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。
● 1803101021刘瑞龙:
学习一个技术,不是一看见源代码就是copy,而是仔细阅读后,找到自己想要的,并且自己写出来,自己理解了,下次遇到同样的问题,自己才能解决。在电脑上学习的过程中,我总是先建立一个txt,这样便于记录,然后再进行分类到笔记中。把你看到的每个网页用大脑生成html代码和css布局。把你看到的每个动画和交互用大脑生成javaScript。一定要养成做好笔记的习惯。并且要学会做笔记。页面中中所有的东西都要放在一个标签里面。否则不好控制。
● 1805108022刘文卓:
中进行必要的总结与论证。 一个完整项目的开发它所要经历的阶段包括:规划和用例说明、项目结构和风险评估、业务功能说明书、详细设计说明书、代码实现、测试、操作手册。一个项目的开发所需要的财力、人力都是大量的,如果没有一个好的远景规划,对以后的开发进度会产生很大的影响,严重时导致在预定时间内不能完成该项目或者完成的项目跟原先计划所要实现的项目功能不符合。一份好的项目结构、业务功能和详细设计说明书对一个项目的开发有明确的指引作用,它可以使开发人员对这个项目所要实现的功能在总体上有具体的认识,并能减少在开发过程中出现不必要的脱节。代码的实现是一个项目开发成功与否的关键,可以说,前面所做的事情就是为代码的实现做铺垫。
● 1805108058王志宏:
通过对这次大作业的研究和实践,我感到java中包含的内容非常丰富多彩,学习它需要通过不断的学习,不断的巩固,光看不练是不行的,只有反复实践练习,才能掌握好这门语言。
● 1801101078翟浩:
这门课是理论和实践的结合,虽然实验课相对来说少了点,每次实验课都会很有收获。从一窍不通到掌握基本到现在能自己写,使我对学习这门课课的信心倍增,还有和同组的同学一起讨论。首先接触的是开发运行环境,Tomcat的配置,以及对IDEA的使用,这次我们做的是微博系统是大家共同努力的结果
● 1810113004王静毅:
在此次实训的过程中,给我感受最深的就是我们分组完成一个网络系统的构建策划,包括项目的需求分析,网络搭建方案。在这些过程中,我不仅知道了整个项目的竟标和项目开发的流程,而且让我深深的体会到一个团队中的各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要考虑技术上的规范性和统一性,这样才可能在进行组合的时候能得到更完美的组合。
#### 团队分工
聂建超,吴静,赵文汭(登录界面,微博发布界面,微博评论)
马路遥,刘瑞龙(文本输入框,表情插入,添加好友,点赞)
段博文,刘文卓,王志宏,翟浩(管理员后端,微博删除管理,海螺删除管理,数据可视化)
王静毅(网页布局排版,相关图片搜集,测试系统)