
参加项目成员:胡建熊,秦巍,韦玮炜,董冬波,郭丽琳,刘潇,徐涛,孙黎
一、设计题目:《新闻发布系统》
二、设计内容:实现一个新闻发布系统,主要功能包括新闻查看功能、管理员登陆发布新闻和新闻管理功能。
三、设计要求:
新闻发布系统主要需要实现以下一些基本功能。
1) 查看新闻功能:任何用户均可以使用查看新闻功能。用户通过在系统导航栏上单击
“查看新闻”超链接,可以进入查看新闻页面。查看新闻功能显示所有新闻,并且使用分页
显示的效果,用户可通过单击下方的页码或在文本框中输入页码来跳转到任意一页浏览。这里显示的所有新闻按发布的时间降序排列,以保证最新发布的新闻位于最前面。用户通过单击每条新闻的标题可以查看到新闻的详细内容。
2) 管理员登录功能:当用户需要使用新闻管理功能时,需要先以管理员身份登录系统。
当未登录用户单击系统导航栏上的“新闻管理”超链接时,进入管理员登录页面。用户可以在登录页面输入用户名和密码,若登录失败,则重定向到管理员登录页面等待下一次登录。
3) 发布新闻功能:管理员通过在系统导航产上单击“发布新闻”超链接可以进入发布
新闻页面。发布新闻时,需要填写新闻的标题和内容,发布时间取当前系统时间,不需要填写。
4) 新闻管理功能:当管理员登录系统后,可以进行新闻管理操作,包括对现有新闻的
修改和删除。在管理页面上,用户可通过单击每条记录右侧的“编辑”和“删除”超链接来进行操作。当管理员的本次维护工作结束后,可通过单击“管理员退出”超链接来注销管理员身份。
四、工作计划及任务分配:
| 时间 | 完成内容 | 人员分配情况 | 备注 |
| 第1天 | 确定题目 | 设计准备阶段 | |
| 第2天 | 题目分析 | 需求分析阶段 | |
| 第3天 | 功能模块的划分和设计 | 设计阶段 | |
| 第4天 | |||
| 第5天 | 程序设计与调试 | 编码测试阶段 | |
| 第6天 | |||
| 第7天 | |||
| 第8天 | 整理材料,撰写设计说明书 | 收尾阶段 | |
| 第9天 |
2010 . 6 . 24
目 录
一、设计内容 1
二、设计过程 1
2.1需求分析 1
2.2数据库设计 2
2.3概要设计 1
2.4详细设计 2
2.5代码实现 2
2.6程序运行与发布 2
三、总结 3
一、设计内容
系统可以实现管理员登陆功能,进行新闻的编辑,发布,修改,更新,删除和查看等功能。任何用户均可以使用查看新闻功能。用户通过单击每条新闻的标题可以查看到新闻的详细内容。当用户需要使用新闻管理功能时,需要先以管理员身份登录系统。用户可以在登录页面输入用户名和密码,若登录失败,则重定向到管理员登录页面等待下一次登录。管理员通过在系统导航产上单击“发布新闻”超链接可以进入发布新闻页面。发布新闻时,需要填写新闻的标题和内容和时间。当管理员登录系统后,可以进行新闻管理操作,包括对现有新闻的修改和删除。在管理页面上,用户可通过单击每条记录右侧的“更新”和“删除”超链接来进行操作。
二、设计过程
2.1需求分析
以新闻发布模块为例来说明需求分析。
2.11功能需求:
后台管理,包括:
增加新闻
管理员可以增加新闻
删除新闻
管理员可以删除新闻
修改新闻
管理员可以修改新闻,包括修改题目、内容、来源等。
前台显示。
首页显示新闻列表
新闻列表根据新闻分类,分成几个栏目。
每个栏目的新闻标题根据新闻创建时间降序排列。
每个栏目显示最新的10条新闻。
一般用户点击新闻标题之后,显示新闻的细节。
包括新闻的标题、创建时间、来源、点击数等内容。
2.12用例图
用例说明:
(1)增加新闻:
(2)修改新闻:
(3)删除新闻:
(4)查询新闻:
(5)浏览新闻:
2.13 前台显示
(1)新闻列表根据新闻分类,分成几个栏目。
(2)每个栏目的新闻标题根据新闻创建时间降序排列。
(3)每个栏目显示最新的10条新闻。
(4)新闻的标题、创建时间、来源、点击数等内容。
2.2 数据库设计
2.21数据分析——概念模型设计
2.22数据库的逻辑设计
在完成了数据的概念模型设计后,即可进入数据库的逻辑设计阶段。根据前面的各个关系我们可以得到下面的数据表。
(1)学生信息表:学号、姓名、性别、政治面貌、出生年月、专业、班级、家庭住址、联系电话、备注。其中学号为主键。
(2)课程信息表:课程名称、所属专业。其中课程名称为主键。
(3)专业信息表:专业编号、专业名称。其中专业编号为主键。
(5)班级信息表:班级名称、所属院系、人数。其中班级名称为主见。
(6)成绩信息表:学号、姓名、专业、课程名称、成绩。其中课程名称为主键。
(7)用户表:用户名、密码、用户权限。其中用户名为主键。
(8)操作日记表:用户名、登录日期、等录时间。
2.23数据库的物理设计
在完成数据库的逻辑设计后,即可开始数据库的物理设计。我们采用了Access2000来建立数据库,根据上面的分析我们共建立了下面几个表:
表4-1 学生信息表
| 字段名 | 数据类型 | 字段长度与格式 | 关键字 |
| 学号 | 文本 | 15 | 是 |
| 姓名 | 文本 | 20 | 否 |
| 性别 | 文本 | 5 | 否 |
| 政治面貌 | 文本 | 12 | 否 |
| 出生日期 | 日期型 | YYYY-MM-DD | 否 |
| 专业 | 文本 | 20 | 否 |
| 班级 | 文本 | 20 | 否 |
| 家庭住址 | 文本 | 50 | 否 |
| 联系电话 | 文本 | 15 | 否 |
| 备注 | 文本 | 50 | 否 |
| 字段名 | 数据类型 | 字段长度与格式 | 关键字 |
| 课程名称 | 文本 | 20 | 是 |
| 所属专业 | 文本 | 否 | |
| 课时数 | 文本 | 否 | |
| 课程学分 | 文本 | 否 |
| 字段名 | 数据类型 | 字段长度与格式 | 关键字 |
| 专业名称 | 文本 | 20 | 是 |
| 所属院系 | 文本 | 20 | 否 |
| 班级个数 | 文本 | 10 | 否 |
| 教师人数 | 文本 | 10 | 否 |
| 教研室主任 | 文本 | 10 | 否 |
| 字段名 | 数据类型 | 字段长度与格式 | 关键字 |
| 班级名称 | 文本 | 20 | 是 |
| 辅导员 | 文本 | 20 | 否 |
| 所属院系 | 文本 | 20 | 否 |
| 人数 | 文本 | 3 | 否 |
| 字段名 | 数据类型 | 字段长度与格式 | 关键字 |
| 学号 | 文本 | 15 | 是 |
| 姓名 | 文本 | 20 | 否 |
| 成绩专业 | 文本 | 20 | 否 |
| 课程名称 | 文本 | 20 | 是 |
| 成绩 | 文本 | 5 | 否 |
drop table news;
drop table ntype;
drop table manager;
/*==============================================================*/
/* Table: NTYPE */
/*==============================================================*/
create table NTYPE
(
TYPEID int not null,
NAME varchar(128),
DESCRIPTION varchar(512),
primary key (TYPEID)
)
/*==============================================================*/
/* Table: MANAGER */
/*==============================================================*/
create table MANAGER
(
USERID varchar(32) not null,
PASSWORD varchar(32),
NAME varchar(32),
EMAIL varchar(),
PHONE varchar(32),
PRIVILEGE varchar(128),
primary key (USERID)
);
/*==============================================================*/
/* Table: NEWS */
/*==============================================================*/
create table NEWS
(
NEWSID int not null,
USERID varchar(32),
AUTHOR varchar2(32),
TITLE varchar(256),
CONTENT text,
UPTIME date,
TYPEID int,
COPYFROM varchar(256),
HITS int,
primary key (NEWSID)
);
/*==============================================================*/
/* Index: "NEWS_MANAGER_FK" */
/*==============================================================*/
create index NEWS_MANAGER_FK
(
USERID
);
/*==============================================================*/
/* Index: "Reference_2_FK" */
/*==============================================================*/
create index Reference_2_FK
(
TYPEID
);
alter table NEWS add constraint FK_NEWS_MANAGER foreign key (USERID)
references MANAGER (USERID) on delete restrict on update restrict;
alter table NEWS add constraint FK_Reference_2 foreign key (TYPEID)
references NTYPE (TYPEID) on delete restrict on update restrict;
insert into manager values ('tomcat','12345678','Tom','123@126.com','678676','PRI_SUPER');
insert into ntype (typeid,name)values (1,'时事');
insert into ntype (typeid,name)values (2,'社会');
insert into ntype (typeid,name)values (3,'体育');
insert into ntype (typeid,name)values (4,'科技');
2.3 概要设计
2.31系统设计方案
2.32数据流程图
图2-2 系统数据流程图
2.33系统的业务流程图
图2-3 系统的业务流程图
2.34使用UML来设计分析模型:
构建分析模型(面向对象分析)的步骤如下:
发现候选对象
描述对象之间的交互
描述类
1、发现候选对象
根据MVC编程模式,面向对象分析需要找出三种对象:实体(Entity,即Model)、边界(Boundary,即Viewer)和控制(Contorl)三种对象。
(1)实体对象:描述问题关键部分的名词。
新闻管理系统中的重要名词包括:管理员、一般用户、新闻
属性-比如新闻的属性:
从用例说明里我们可以得知“新闻”实体的属性包括:新闻标题、新闻内容,新闻图片、新闻类型、创建日期、来源、点击数。可能要增加一个ID,用来唯一表示“新闻”实体。
(2)边界对象:描述系统将如何与参与者进行交互,通过检查用例图中的参与者与用例之间的关系,我们可以识别出边界对象以及边界对象的构成元素
增加新闻边界类:newsadd.jsp
修改新闻边界类:newslist.jsp,editor.jsp
删除新闻边界类:newsdelete.jsp
查询新闻边界类:search.jsp
浏览新闻边界类:newsdisplay.jsp,newsdetail.jsp
(3)控制对象:在JavaEE开发的系统中,控制类一般由Servlet来承担,因此我们设计系统中的控制类为:
NewsMngtServlet,它直接从HttServlet继承而来。
(4)其它辅助对象:
作为一般的JavaEE系统,数据库肯定是必须的组成部分。在系统当中,我们可以增加一个和数据库打交道的类来负责数据的存取。这个辅助类我们设计为NewsDao.java,它负责新闻的增加、修改、删除、查询以及获取;增加一个ManagerDao.java来负责管理员的管理。初步设计完毕的类图如下面所示(之所以称为初步是以后在迭代的过程当中可能还对类图进行修改)。
2、描述对象之间的交互,以用列为单位。即一个时序图描述一个用例里的对象交互
对象之间的交互是通过时序图来进行描述,创建时序图的对象步骤如下:
将已识别的对象加到顺序图中
从参与者开始,一步步寻找行为
从后往前验证时序
(1)增加新闻时序图
(2)修改新闻时序图
(3)删除新闻时序图
(4)查询新闻时序图
(5)浏览新闻时序图
2.32业务流程图
2.4 详细设计
2.5 代码设计
2.6 程序运行与发布
2.61 前台页面
2.62后台页面
三、总结
