请您帮帮忙系统需求分析及设计文档Word格式文档下载.docx
- 文档编号:5795543
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:19
- 大小:843.05KB
请您帮帮忙系统需求分析及设计文档Word格式文档下载.docx
《请您帮帮忙系统需求分析及设计文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《请您帮帮忙系统需求分析及设计文档Word格式文档下载.docx(19页珍藏版)》请在冰点文库上搜索。
Android客户端需要提供已注册用户输入用户名、密码进行登陆的界面,平台服务器应处理用户的登陆请求,并返回登陆结果,Android客户端应将登陆结果反馈给用户。
(3)用户发起帮助请求:
Android客户端需要提供用户输入主题、内容进行发起帮助请求的界面,平台服务器应处理用户发起帮助请求的操作,并返回请求结果,Android客户端应将请求结果反馈给用户。
(4)用户查看未处理请求:
Android客户端需要提供用户查看平台内未经处理的请求的界面。
界面应包含一个列表,列出未经处理请求的主题。
(5)用户处理请求:
Android客户端需要提供查看一个未经处理请求的所有信息的界面,并让用户处理请求的操作,平台服务器应处理用户处理请求的操作,并且返回操作结果,Android客户端应将操作结果反馈给用户。
(6)查看平台用户:
Android客户端需要提供用户查看所有平台用户的界面,界面应包含一个列表,列出所有平台用户的用户名。
(7)评价平台用户:
Android客户端需要提供查看某用户详细信息的界面,并提供点赞操作,使用户得到评价;
平台服务器应处理用户点赞操作,并且返回操作结果,Android客户端应将操作结果反馈给用户。
(8)查看请求历史:
Android客户端需要提供查看用户请求历史的界面,界面包含一个列表,列出用户历史请求的主题。
(9)查看历史请求详细信息:
Android客户端需要提供查看用户某历史请求的详细,包括是否被处理,如被处理,处理人的用户名等信息。
(10)安全和保密需求:
用户注册和登陆时密码应加密处理,存储在数据库内。
(11)数据库连接:
用户信息和帮助请求应存储在数据库内。
1.2性能需求
(1)Android客户端应在市面上大部分Android智能手机中流畅运行。
(2)平台服务器应能够在所有支持Java的操作系统中稳定运行,尽量处理所有可能的异常,不崩溃。
(3)Android客户端界面应美观大方,操作方式符合大多数用户的操作思维和习惯。
(4)Android客户端和平台服务器之间的交互应迅速,网络流量不应过大。
(5)Android客户端响应应快速
第2章请您帮帮忙系统总体设计
请您帮帮忙系统由两个部分组成:
平台服务器和Android客户端。
平台服务器负责访问数据库,管理用户的注册、登陆、登出等状态,并且响应客户端的发起帮助请求、查看未处理请求、处理某请求、查看平台用户、评价平台用户、查看用户所有请求历史、查看用户某历史请求详细信息等操作;
Android客户端是负责与用户交互的终端,负责提供用户发起帮助请求、查看未处理请求、处理某请求、查看平台用户、评价平台用户、查看用户所有请求历史、查看用户某历史请求详细信息等操作的界面,并且与服务器交互,将服务器的处理结果反馈给用户。
请您帮帮忙系统的总体框架设计如图2-1所示:
图2-1请您帮帮忙系统总体框架设计
如图2-1所示,“请您帮帮忙”系统包括服务器和Android客户端两个部分,服务器采用Java语言实现,拥有跨平台的优良特性,可运行于Windows、Linux和Mac等多种支持Java的操作系统中,Android客户端同样采用Java语言编写实现。
服务器通过访问数据库进行用户信息和请求信息的存储、访问,Android客户端和平台服务器之间通信,共同完成业务。
第3章平台服务器的设计和实现
3.1服务器的总流程
服务器的总流程图如图3-1所示:
图3-1服务器总流程图
Java中的线程池拥有资源消耗低,响应速度快,线程可管理性高的特点,所以本服务器端采用线程池来解决多线程多用户同时访问的需求。
服务器启动之后,先进行一些初始化工作(初始化线程池,打开ServerSocket,连接数据库),然后等待客户端socket的连接。
SocketHandler类实现了JavaRunnable接口,负责一个客户端和服务器端的通信。
服务器端接受了一个socket连接后,将以这个接收到的socket构造一个SocketHandler对象,并把它交给线程池去执行。
3.2SocketHandler通信功能的实现
平台服务器端和Android客户端之间传输XML文件通信,每个XML文件结尾都被添加字符'
\0'
,通信功能的实现采用command设计模式,服务器端接收到客户端发来的XML文件后,生成相应的command实体对象,然后根据不同的command实体对象采取不同的响应。
Parser类负责读取socket内容,并解析出XML文件。
其流程图如图3-2所示。
图3-2Parser类读取XML文件流程图
服务器端ICommand类被设计为抽象类,有两个纯虚函数,分别为init和act,其中init需要一个Document实体对象作为参数来初始化command对象。
ICommand的类图如图3-3所示。
服务器端其他所有command实体类均继承自ICommand。
图3-3ICommand类图
服务器端采用DataSender类向客户端发送数据,它维护了一个需要发送的XML文件的队列,继承了Runnable接口,作为一个进程一直在运行。
当需要向客户端发送数据时,只需要将要发送的XML文件添加到队列的尾部。
DataSender发送数据的流程图如图3-4所示。
图3-4DataSender类发送XML文件流程图
3.3服务器和客户端的通信业务流程
3.3.1用户注册通信业务流程
当服务器接收到用户注册的请求RegisterCommand时,会检查用户名是否已经被注册,如没有则注册用户并返回注册成功的信息,否则返回注册失败的信息。
时序图如图3-5所示。
图3-5用户注册时序图
3.3.2用户登陆通信业务流程
当服务器接收到用户登陆的请求LoginCommand时,会检查用户名是否已经注册和尚未登陆,如果满足这两个条件,则返回登陆成功的信息,否则返回登陆失败的信息。
时序图如图3-6所示。
图3-6用户登陆时序图
3.3.3用户发起帮助请求业务流程
当服务器接收到用户发起帮助请求RaiseRequestCommand时,会检查该用户是否发起过相同主题的请求,若没有则返回发起请求成功,否则返回发起请求失败。
时序图如图3-7所示。
图3-7用户发起帮助请求时序图
3.3.4用户查看所有未处理请求业务流程
当服务器接收到用户查看所有未处理请求FetchRequestsCommand时,会生成所有未处理请求的列表并发送给客户端。
时序图如图3-8所示。
图3-8用户查看未处理请求时序图
3.3.5用户处理请求业务流程
当服务器收到用户处理请求HandleRequestCommand时,会检查该请求是否已经被处理,若没有,则返回处理成功,否则返回处理失败。
时序图如图3-9所示。
图3-9用户处理请求时序图
3.3.6用户查看所有平台用户业务流程
当服务器收到用户查看平台所有用户FetchAllUsersCommand时,会生成平台所有用户的列表,并返回给用户。
时序图如图3-10所示。
图3-10用户查看所有平台用户时序图
3.3.7用户评价某用户业务流程
当服务器收到评价某用户请求AddScoreCommand时,会检查被评价用户是否存在,若存在则将被评价用户的积分加一,并返回操作成功,否则返回操作失败。
时序图如图3-11所示。
图3-11用户评价某用户时序图
3.3.8用户查看请求历史业务流程
当服务器接收到用户查看请求历史FetchRequestsById时,会生成该用户的所有历史请求列表,并返回给用户,时序图如图3-12所示。
图3-12用户查看历史请求时序图
3.4服务器端数据库的设计
请您帮帮忙系统使用SQLite数据库存储用户和请求数据,SQLite数据库具有轻量,高性能的优点,能够处理90%以上的商业网站的日常请求。
本系统数据库中的User表和Request表设计如下:
图3-13User表的设计
图3-14Request表的设计
创建表的SQL语句分别为:
CREATETABLEUSERS(
IDINTPRIMARYKEYNOTNULL,
NAMETEXTNOTNULL,
PASSWORDTEXT,
SCOREINT,
FRIENDSTEXT,
RAISEDREQUESTSTEXT,
HANDLEDREQUESTSTEXT
);
CREATETABLEREQUESTS(
THEMETEXT,
CONTENTTEXT,
TIMETEXT,
LOCATIONTEXT,
OWNERINTNOTNULL,
HANDLERIDINT,
HANDLEDINT
第4章Android客户端的设计和实现
4.1客户端业务流程
请您帮帮忙系统Android客户端组要有以下几个activity组成,MainActivity:
负责与服务器的连接初始化;
LogInActivity:
负责用户的注册和登陆;
MenuActivity:
负责提供菜单界面;
RaiseRequestActivity:
负责处理用户发起帮助请求;
ShowRequestsActivity:
显示平台内所有未处理的请求界面;
ShowRequestDetailActivity:
显示一个帮助请求的详细信息界面;
ShowUsersActivity:
显示所有平台用户界面;
ShowUserDetailActivity:
显示某用户详细信息界面;
MyRequestsActivity:
显示用户历史请求界面;
MyRequestDetailActivity:
显示用户某请求详细信息界面。
各activity之间的转换流程图如图4-1所示。
图4-1Android客户端各activity转换流程图
4.2客户端状态的维护和与服务器之间的通信
AndroidActivity中消息的发送和接收要通过Handler类来实现。
在每个Activity中可以定义一个Handler对象,Activity外部可以用这个Handler对象来发送消息Message给Activity,Activity内部使用这个Handler对象来接收外部发来的消息,并根据消息的来源和内容采取相应的动作。
请您帮帮忙系统Android客户端同样使用Command设计模式,通过XML文件与服务器交互,与服务器一样,使用SocketHandler类管理数据的接收和发送,使用Parser类获取XML文件,使用DataSender类发送XML文件。
当接收到XML文件时,从XML文件中提取出当前Command的名称,利用Java的类反射机制生成对应的Command对象。
所有的Command实体类同样继承自抽象类ICommand。
由于SocketHandler运行在自己独立的线程中,当接收到Command进行动作响应时需要知道客户端当前的状态,即客户端当前所处的Activity,所以需要一个维护客户端的状态的类。
StateManager类管理着客户端的状态。
StateManager类的设计采用单例设计模式,内部只有一个privatestatic的StateManager实体对象,对外提供publicstatic的函数以获得这个实体对象。
这样的设计可以提高程序的健壮性。
StateManager类维护了一个Handler类的实体对象currentHandler,客户端程序每进入到一个Activity时,都会在这个Activity的onResume()函数中设定currentHandler为自己内部定义的Handler对象,这样currentHandler将始终指向客户端当前所在Activity中的Handler对象。
这样,当SocketHandler接收到Command进行响应时,可以从StateManager里获得currentHandler对象,用它来发送消息,客户端当前所在的Activity接收到消息后,根据消息的来源和内容,采取相应的动作。
消息的来源常量定义在类HandlerConstants里。
4.3Android客户端展示
这里展示一些Android客户端运行时的截图。
第5章全文总结
5.1主要的工作
5.2不足和后续工作
本文有以下不足之处:
平台目前没有注册用户的好友机制,在后续的工作中,会加入好友机制,使用户能够搜索并添加好友;
Android客户端界面太过简陋,不恨美观,在后续的工作中,会进行新的界面设计,使其更美观大方,赏心悦目。
由于人力物力资源的限制,平台并没有经过很多的测试,仍然是一个原型产品,距离真正的应用还有很远的距离。
在后续的工作中,将不断的测试和优化平台的性能,使其能够真正的产品化,服务大众。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 帮帮忙 系统 需求 分析 设计 文档
![提示](https://static.bingdoc.com/images/bang_tan.gif)