需求分析报告-点击查看
本文档的编写目的是为公众号智能集成系统项目的开发提供: 给出系统的结构设计和过程设计,作为程序编写的依据。
[1].王晓敏.信息系统分析与设计(第四版)北京:清华大学出版社 2013. [2].埃克尔. Java 编程思想(第四版)北京:机械工业出版社 2007.06 [3]. Steve McConnell.代码大全 电子工业出版社 2006.03
概述系统的特性和需求,扩充软件需求说明中的信息,给出增加的细节,详尽地指出对软件需求说明中有关特性和需求作出的变更。
本项目是公众号智能集成平台,系统搭建主要针对用户、推送、公众号三个部分进行设 计。初期目标是满足本校内个人以及校方用户和公众号的日常工作使用,长期希望能够推广 至更大更广泛的用户群体。因为本平台是针对于微信公众号现存的问题进行解决,相当于重 建公众号平台,所以对外接口暂时不涉及,未来如果和其他第三方合作,将会开启推送对外 接口。
架构分析:
采用 SSH 框架,SSH 是基于 MVC 的架构,层与层之间的访问靠接口实现,这样有利于程序的封装。具体分层如下:
表现层:Jsp 页面显示,实现用户和系统的交互;控制层:Struts2 实现,其中包括 Action 类和 Form 类,Form 类即模型驱动类;业务层:处理业务逻辑,该层的实现需要有 Spring 容器的支持,该架构中利用 Spring 整 合 Hibernate 模版,接口化设计,采用注解的形式调用服务节点;DAO 层:封装数据库的增删改查,Hibernate 模版,单表操作使用 Hql 语句,多表操作才 用自定义 Sql 语句;持久层(在 DAO 层和数据库层之间):建立 JavaBean 对象、创建与数据表相对应的映 射文件 XXX.hbm.xml、创建 Hibernate.cfg.xml 文件,配置连接数据库的信息 6.数据库层:建立 DBObject,对数据库的数据进行增删改查的操作由于该系统使用 jsp+servlet+javabean 框架做支持,是标准的 MVC 设计模式,限于篇幅无法将所有的类都叙述一遍,我们在此选择跟用户和推送两个关键实体实体相关的业务所设计的类和方法进行说明。
该类是模型层类,用户对象的 JavaBean,该类中主要设计用户的属性以及与其相对应的getXXX() 和 setXXX() 方法。
由于该系统使用 jsp+servlet+javabean 框架做支持,是标准的 MVC 设计模式,所以 model层对象里不涉及业务处理相关的方法,每个实体所对应的 model 类里只涉及 get 和 set 方法, 在此以用户实体作为实例进行分析,其他类可参考系统源代码。
该类属于 Dao 层,主要实现的功能是提供操作数据库的接口,里面包括多个方法。
该类属于 Service 层,主要实现的功能是用于业务逻辑的判断。
该类属于控制层,主要实现的功能是控制界面的转发与重定向,并起到连接业务逻辑层与视图层的作用。
该类属于模型层,主要实现的功能设置推送的私有属性。
该类属于控制层,主要实现的功能是访问数据库,实现增删改查。
该类属于业务逻辑层,主要实现的功能是推送的业务逻辑处理,连接 dao 类和 service 类。
该类属于业务逻辑层,这里以智能化搜索推送为例,主要实现的功能是在视图层显示出 智能化搜索结果
对《需求分析》文档当中所有用例的具体实现逐一进行说明。
进入平台欢迎页,可以选择游客身份直接浏览热点推送页。
输入项:无 验证项:无
模型类:Push.java Dao 层类:pushDao.java Service 层类 pushService.java 控制层类:SmartSerchservlet.java 数据库操作类:DBObject.java
注册成为正式用户,申请个人用户账号,获得除了浏览热点推送的更多功能。
输入项:用户名、密码、确认密码 验证项:用户名是否重复;密码和确认密码是否相同
模型类:user.java Dao 层类:userDao.java Service 层类 userService.java 控制层类: userRegisterServlet.java 数据库操作类:DBObject.java
略
通过用户名和密码进行登陆专属个人账号。
输入项:用户名、密码 验证项:用户名是否存在;用户名对应的密码是否正确
模型类:user.java Dao 层类:userDao.java Service 层类 userService.java 控制层类: loginServlet.java 数据库操作类:DBObject.java
略
放弃本账号的使用权力,注销该账号。
输入项:无 验证项:无
模型类:user.java Dao 层类:userDao.java Service 层类 userService.java 控制层类: logoutServlet.java 数据库操作类:DBObject.java
略.
用户登陆系统后,可以选择完善和维护自己的个人信息,系统根据信息智能化更贴切的进行推送推荐。
输入项:姓名、性别、出生日期、擅长领域、地点、简介 验证项:无
模型类:User.java Dao 层类:UserDao.java Service 层类 UserService.java 控制层类:UserServlet.java 数据库操作类:DBObject.java
用户可以在首界面通过标题、关键词、类型进行智能搜索,更加确切的完成搜索。
输入项:搜索内容 验证项:搜索信息是否存在
模型类:Push.java Dao 层类:pushDao.java Service 层类:pushService.java 控制层类:SmartSearchServlet.java 数据库操作类:DBObject.java
通过收集用户的阅读喜好、年龄、专业的信息进行横向和纵向的对比,通过多方面的数据进行智能推荐并合理排序,适合每个用户的推送在推荐界面。
模型类:Push.java Dao 层类:pushDao.java Service 层类:pushService.java 控制层类:SmartOrderPushServlet.java 数据库操作类:DBObject.java
浏览推送的过程中,如果发现推送存在不恰当的信息,可以申请举报,提交相关举报原因。
模型类:Pubmessage.java Dao 层类:pubmessageDao.java Service 层类:pubmessageService.java 控制层类:ReportPushServlet 数据库操作类:DBObject.java
在浏览推送的过程中,可以选择为心仪的推送点赞。
模型类:Push.java Dao 层类:pushDao.java Service 层类:pushService.java 控制层类:ZanPushServlet.java 数据库操作类:DBObject.java
在浏览推送的过程中,可以选择在推送末尾评论,添加个人看法或者和公众号针对该篇推送进行讨论等。
模型类:Comment.java Dao 层类:commentDao.java Service 层类:commentService.java 控制层类:CommentPushServlet.java 数据库操作类:DBObject.java
点击公众号头像可以进入公众号历史发送过的推送界面,可以点击“发送消息”,和公众号后台运营者和责任人进行对话。
输入项:留言内容 验证项:无
模型类:Pubmessage.java Dao 层类:pubmessageDao.java Service 层类:pubmessageService.java 控制层类:LeaveMesPublivServlet.java 数据库操作类:DBObject.java
如果对于公众号的互动、推送等不满,可以在历史消息界面选择“举报账号”,填写相关信息申请举报。
输入项:举报原因、举报类型 验证项:无
模型类:publicMessage.java Dao 层类:publicDao.java Service 层类:PublicService.java 控制层类:showReportPublicServlet.java, addReportPublicServlet 数据库操作类:DBObject.java
拥有账号的用户可以自己书写并编辑推送。
输入项:标题、作者(笔名)、内容、类型、封面、摘要 验证项:是否有空缺项
模型类:Push.java Dao 层类:pushDao.java、labelDao.java Service 层类:pushService.java、labelservice.java 控制层类:ChoiceLabelServlet.java、WriteditPushServlet.java 数据库操作类:DBObject.java
在编写推送的界面可以选择想投递到的公众号名。
输入项:投稿到的公众号 验证项:是否存在该公众号
模型类:Push.java Dao 层类:pushDao.java Service 层类:PushService.java 控制层类:SubmitPushServlet.java、ShowUnSubmitPushServlet .java 数据库操作类:DBObject.java
在编写推送完成后,还可以打开编写界面可以再次修改。
输入项:要修改的项 验证项:无
模型类:Push.java Dao 层类:pushDao.java Service 层类:PushService.java 控制层类:ShowReturnPushServlet .java 数据库操作类:DBObject.java
在用户编写完推送,可以选择数据分析进行查询现有的同类型推送的发表量和阅读情况,对目前未发表的推送发表后的情况进行预判。
模型类:Push.java Dao 层类:pushDao.java Service 层类 pushService.java 控制层类:pushServlet.java 数据库操作类:DBObject.java
每个用户都有申请成为他人公众号运营者的权力,在管理公众号界面选择申请成为公众号运营者,即可申请。
输入项:申请时常、管理经验、管理优势 验证项:无
模型类:public.java,User.java Dao 层类:publicDao.java,userDao.java Service 层类 publicService.java 控制层类:applymanaServlet.java 数据库操作类:DBObject.java
每个用户都有申请自己的公众号的权力,成为个人公众号的直接责任人。
输入项:邮箱、密码、真实姓名、身份证号、手机号、接受协议 验证项:是否有空缺项
模型类:public.java Dao 层类:publicDao.java Service 层类:publicService.java 控制层类: publicRegisterServlet.java 数据库操作类:DBObject.java
略.
公众号运营者在收到其他普通用户的推送投稿后,从投稿列表选择推送进行审核,审核通过的推送可以被发表在该公众号上,审核不通过即反馈原因。
输入项:未通过原因类型、具体原因 验证项:无
模型类:Push.java Dao 层类:pushDao.java Service 层类:pushService.java 控 制 层 类 : ShowUnpublishedPushServlet 、 ShowOneUnpublishedPushServlet 、 AuditUnpublishedPushServlet 数据库操作类:DBObject.java
公众号运营者查看已发表的推送列表,选择内容不合适或者不满意的推送,选择推送进行删除。
模型类:Push.java Dao 层类:pushDao.java Service 层类:pushService.java 控 制 层 类 : ShowPublishedPushServlet 、 ShowOneDeletePushServlet 、 DeletePublishedPushServlet 数据库操作类:DBObject.java
公众号运营者通过消息数量获知用户在推送中评论的新消息,获取新评论列表后,选择适合的、精彩的评论公之于众。
模型类:Comment.java Dao 层类:commentDao.java Service 层类:commentService.java 控制层类:ShowUnableComServlet、AbleComServlet 数据库操作类:DBObject.java
公众号运营者可以在后台查看普通用户对公众号的消息,根据消息内容进行选择性回复。
模型类:Pubmessage.java Dao 层类:pubmessageDao.java Service 层类:pubmessageService.java 控制层类:ShowPublicMessageServlet、ReplyPublicMesServlet 数据库操作类:DBObject.java
公众号运营者有权利对于出言不逊的用户进行举报,通过用户介绍页选择举报并填写申请。
输入项:举报类型、举报原因 验证项:无
模型类:usermessage.java Dao 层类:userDao.java Service 层类:userService.java 控制层类:showReportUserServlet.java, addReportUserServlet 数据库操作类:DBObject.java
公众号运营者有权利查看公众号最近一段时间的运营情况,平台根据数据反馈数据图并给予部分意见。
模型类:Public.java Dao 层类:publicDao.java Service 层类 publicService.java 控制层类:publicServlet.java 数据库操作类:DBObject.java
对于不想再管理的公众号,公众号运营者可以向公众号责任人提出申请,解绑对该公众号的管理。
模型类:Public.java,User.java Dao 层类:publicDao.java Service 层类 publicService.java 控制层类:unboundServlet.java,acceptServlet.java 数据库操作类:DBObject.java
公众号责任人有认证公众号运营者和解绑公众号运营者的权力,可以通过公众号运营者列表获知新申请的公众号运营者和已绑定的公众号运营者进行相应操作。
模型类:User.java Dao 层类:userDao.java Service 层类:userService.java 控制层类:showPublicManagerServlet.java, updatePublicManagerServlet.java 数据库操作类:DBObject.java
公众号责任人在不想管理个人公众号后,可以选择寻找新一任公众号责任人,并填写转让申请。
输入项:新公众号责任人姓名、身份证号、邮箱、微信 验证项:无
模型类:Public.java,User.java Dao 层类:publicDao.java Service 层类 publicService.java 控制层类:transferServlet.java 数据库操作类:DBObject.java
公众号责任人在不想管理个人公众号也无新一任公众号责任人可以转让,可以直接在管理公众号也选择注销已有公众号。
略。
模型类:public.java Dao 层类:publicDao.java Service 层类:publicService.java 控制层类: publicRegisterServlet.java 数据库操作类:DBObject.java
略。
平台管理员有增删改查用户的权力,可以在查阅用户最近详情或查看活跃度排名后,选择奖励用户或禁用用户。
模型类:user.java Dao 层类:userDao.java Service 层类:userService.java 控制层类: showUserServlet.java,updateUserServlet.java 数据库操作类:DBObject.java
平台管理员有增删改查公众号的权力,可以在查阅用户最近详情或查看活跃度排名后,选择奖励公众号或禁用公众号。
Dao 层类:publicDao.java Service 层类:publicService.java 控制层类: showPublicServlet.java, updatePublicServlet.java 数据库操作类:DBObject.java
概念模型分析:
1一个账号可以有多条账号消息,一条账号消息只能属于一个账号2一个用户可以发送多条消息,一条消息只能有一个用户发送3一个用户开拥有多个公众号,一个公众号只能被一个用户拥有4一个用户可以管理多个公众号,一个公众号可以被多个用户管理5一个用户可以关注多个公众号,一个公众号可以被多个用户关注6一个用户可以发表多个推送,一篇推送只能有一个用户发布7一个推送可以有一个标签,一个标签可以被多个推送使用8一个用户可以有多个标签,一个标签只能拥有一个用户(不同用户可创建相同名称的标签, 这里的不同指的是 id 不同)9一片推送可以有多个评论,一个评论只能属于一篇文章10一个用户可以发表多篇评论,一篇评论只能有一个用户发布11一个公众号可以有多条公众号消息,一条公众号消息只能属于一个公众号12一个用户可以发送多条公众号消息,一条公众号消息只能由一个用户发送13一个公众号可以有多篇推送,一片推送只能属于一个公众号