模块UC图
3.2.12 排行榜模块
通过该模块用户可以方便的浏览系统的实时排行榜。该模块主要提供的服务有最热门相册排行榜、最新相册排行榜。
具体UC图(如图3-13):
图3-13 排行榜模块UC图
3.3 系统架构设计
为了提高系统的可扩展性,可复用性,可维护性,提升系统稳定性,系统采用了如下的架构设计。
3.3.1 系统层次划分
根据软件工程中"高内聚,低耦合"这个软件设计的核心思想[13],把系统拆分成如下的层次,以降低系统层与层之间的耦合,防止系统把某一层的变化扩散到系统的其他层次,便于修改和维护。而且采用分层还可以提高系统各层逻辑的复用的。
1、数据访问层。在这一层中包含了实体(entity)类和数据访问对象(DAO)类(接口)。其中实体类是系统ORM映射形成的映射类,做为一种数据封装的模型存在于系统中。而数据访问对象类(接口)是系统访问数据库的接口,执行对数据库记录的CRUD(Create、Read、Update、Delete)操作,并把结果(一般是Read操作返回的记录)封装成对应的对象返回
2、业务逻辑层。这一层是系统的核心部分,封装了系统的业务逻辑,所有的业务逻辑操作都在这一层完成。这一层通过调用数据访问层的接口,执行业务逻辑操作,并把结果返回给调用者。这一层通过Spring封装后的数据库事务机制支持,使数据的操作可靠。
3、控制器层。这一层负责用户请求的转发,协调业务逻辑层和视图层的工作。这一层由Struts框架的Action组成,主要负责一些前期的权限验证工作,传递视图层传入的数据给业务逻辑层接口,并把业务逻辑层接口的数据返回给显示层。
4、视图层。这一层负责把数据展示给用户。主要有JSP和Struts框架的ActionForm组件构成。通过加入一些CSS、JavaScript等页面组成元素丰富用户体验,提升页面效果。
3.3.2 系统服务器部署架构
基于对系统应用的可扩展性,分担系统压力,均衡用户请求的负载,支撑更高的用户访问量考虑。根据服务器承担任务的不同,将系统划分成4个服务器,各自承担不同的任务。而且服务器的域名是可配置式的,减少了代码对于服务器地址的依赖。
1、应用主服务器。主服务器是系统的核心服务器,处理用户发往系统的所有请求(包括图片上传的请求),并根据用户要求访问其他服务器,与其他服务器交换数据。主服务器专注于系统业务的处理,尽可能快速的响应用户的请求,而把业务无关性操作分发至其他服务器(数据库服务器、图片上传服务器)。
2、数据库服务器。响应主服务器的数据访问请求。将数据库从主服务器分离是为了消除主服务器和数据库服务器的相互影响,减轻主服务器的负担。支撑更高的访问流量。
3、静态文件服务器。静态文件服务器,主要存储CSS,JavaScript,系统图片等静态文件。由于主服务器承担了所有的用户访问请求,压力较大,如果再让其承担浏览器发送的获取静态文件请求将大大加重主服务器负担。因而分离出静态文件服务器以减轻主服务器的负载。
4、图片上传服务器。主要用于接收主服务器或者Applet发送的图片数据流、并进行压缩、存储。响应浏览器和Applet读取图片文件的请求。分离此服务器的作用显而易见,图片的压缩与I/O是一件非常占用系统资源的工作,而让主服务器在响应用户请求的同时承担这项工作是极不合理的。而在当前这种高速的带宽下,相对于图片的压缩运算与I/O,主服务器与文件间的数据传输的消耗也就显得微不足道了,故而分离此服务器是切实可行的。
具体的系统架构图(如图3-14):
图3-14系统架构图
3.4 系统数据库设计
3.4.1 系统E-R图
系统的E-R图(如图3-15):
图3-15 系统简化E-R图
3.4.2 系统表结构
这个章节列举了系统的表结构(如表3-1至表3-10)。
表3-1 用户表(GAZE_USER)
字段名 数据类型 描述 USER_ID NUMBER(20) 用户ID USER_NAME VARCAHR2(20) 用户名 PASSWORD VARCAHR2(32) 经MD5加密后的用户密码 QUESTION VARCAHR2(50) 用户安全性提示问题 ANSWER VARCAHR2(50) 用户安全性提示问题答案 STATE CAHR(1) 用户状态(0普通,1VIP,2已删除) CREATE_TIME DATE 用户创建时间 PORTRAIT VARCAHR2(300) 用户大头像路径
表3-2 用户信息表(GAZE_USER_INFO)
字段名 数据类型 描述 INFO_ID NUMBER(20) 用户信息ID USER_ID NUMBER(20) 所属用户ID SEX V CAHR(1) 用户性别(0女,1男,2不详) BIRTHDAY DATE 用户生日 CAREER VARCAHR2(30) 用户职业 CITY VARCAHR2(10) 用户所在城市 USER_PROFILE VARCAHR2(100) 用户个人简介 PHONE VARCAHR2(15) 用户联系电话
表3-3 相册表(GAZE_ALBUM)
字段名 数据类型 描述 ALBUM_ID NUMBER(20) 相册ID USER_ID NUMBER(20) 拥有用户ID ALBUM_NAME VARCAHR2(30) 相册名 DESCRIPTION VARCAHR2(200) 相册描述 ALBUM_PERMISSION CAHR(1) 相册访问权限(0公开,1仅好友,2保密) PHOTO_NUMBER NUMBER(10) 拥有相片数 COVER VARCAHR2(300) 相册封面路径 STATE CAHR(1) 相册状态(0默认,1普通,2已删除) CREATE_TIME DATE 相册创建时间 VISIT_COUNT NUMBER(10) 相册访问量
表3-4 相片表(GAZE_PHOTO)
字段名 数据类型 描述 PHOTO_ID NUMBER(20) 相片ID ALBUM_ID NUMBER(20) 所属相册ID PHOTO_NAME VARCAHR2(50) 相片名 DESCRIPTION VARCAHR2(200) 相片描述 FILE_NAME VARCAHR2(300) 相片原图路径 STATE CAHR(1) 相片状态(0封面,1普通,2已删除) CREATE_TIME DATE 相片创建时间 续表3-4
COMMENT_COUNT NUMBER(10) 相片访问量
表3-5 评论表(GAZE_COMMENT)
字段名 数据类型 描述 COMMENT_ID NUMBER(20) 评论ID PHOTO_ID NUMBER(20) 所属相片ID USER_ID NUMBER(20) 评论用户ID CONTENT VARCAHR2(500) 评论内容 STATE CAHR(1) 评论状态(0未删除,1已删除) CREATE_TIME DATE 评论创建时间
表3-6 好友分类表(GAZE_FRIEND_CATEGORY)
字段名 数据类型 描述 CATEGORY_ID NUMBER(20) 好友分类ID USER_ID NUMBER(20) 所属用户ID CATEGORY_NAME VARCAHR2(40) 分类名 STATE CAHR(1) 分类状态(0默认,1普通,2已删除)
表3-7 好友表(GAZE_ FRIEND)
字段名 数据类型 描述 FRIEND_ID NUMBER(20) 好友ID OWNER NUMBER(20) 拥有用户ID FRIEND NUMBER(20) 好友用户ID CATEGORY_ID NUMBER(20) 所属分类ID STATE CAHR(1) 好友状态(0申请中,1已接受,2已拒绝,3已删除)
表3-8 留言表(GAZE_ FEEDBACK)
字段名 数据类型 描述 FEEDBACK_ID NUMBER(20) 留言ID OWNER NUMBER(20) 所属用户ID WRITER NUMBER(20) 留言用户ID 续表3-8
CONTENT VARCAHR2(1000) 留言内容 STATE CAHR(1) 留言状态(0未删除,1已删除) CREATE_TIME DATE 留言创建时间
表3-9 站内信表(GAZE_ MESSAGE)
字段名 数据类型 描述 MESSAGE_ID NUMBER(20) 站内信ID SENDER NUMBER(20) 发件用户ID RECEIVER NUMBER(20) 收件用户ID TITLE VARCAHR2(100) 信件主题 CONTENT VARCAHR2(1000) 信件内容 CREATE_TIME DATE 信件创建时间 STATE CAHR(1) 信件状态(0已读,1未读,2已删除,3垃圾箱)
表3-10 相册分享表(GAZE_ SHARE)
字段名 数据类型 描述 SHARE_ID NUMBER(20) 分享ID QUOTER NUMBER(20) 分享用户ID ALBUM_ID NUMBER(20) 分享相册ID STATE CAHR(1) 分享状态(0未删除,1已删除)
4 系统详细设计及实现
本章阐述完成上述系统功能的详细设计,描述了由哪些类实现哪些功能,这些类包含在哪些包里面,以及各个
上一篇:
论文基于J2EE_Struts的教学管理信息系统(word文档)
下一篇:
浮生若萍