该帖子同步发自:(yixue68的博客 访问该博客) 开发一个新闻信息发布的系统,实现门户网站的新闻信息发布与管理,提高门户网站的信息发布自适应能力。应用范围主要针对各门户网站的新闻媒体信息发布与管理。采用B/S结构开发,可通过广域网访问本系统,实现全天候全方位新闻信息发布与管理。
本系统涉及新闻信息发布、更新、删除、查询、标题列表显示功能,除新闻浏览页面外,其他功能均需要进行用户身份验证。
1、主页显示一定条数的新闻列表。最少显示4条,最多可显示50条。具体显示条数根据配置文件的定义来确定。
2、新闻标题列表一页显示不下时需换页,并提供翻页功能和指定页码跳转功能。
3、所有新闻内容都可包含一个图片,在生成新闻页的时提供图形文件上传功能。
4、所有新闻内容均要生成一个单独的html文件以供用户访问。
5、新闻标题列表和页面上都要包括新闻标题、作者、发布时间。
6、可根据新闻标题和发布时间进行模糊检索,暂不提供新闻内容的全文检索功能。
7、只有系统的有效用户才可对新闻信息进行删除、更新的操作。所有用户都可进行新闻信息察看的功能。系统用户需要提供用户名和密码。
基本要求:
1、对新闻条目的基本增、删、查、改功能必须完成。
2、无语法错误。
3、实现上传、翻页、生成HTML文件等功能。
附加要求:
1、 用户登陆的验证码实现。
2、
我们的设计目标:
使用目标:所有的管理操作都由管理界面来实现。(如各种配置可用鼠标点选完成,可查看详细的日志信息)
程序目标:用Struts构建本系统,运用Struts框架提供的各种功能完善本系统。
各层次组件具有良好的复用性和通用性(如自己实现一套数据库连接池功能组件、系统日志组件、常用数据库通用连接组件),业务逻辑层次清晰,整体系统具有极大可扩展性的设计架构,易于维护,程序的源代码做到规范命名和注释。
1. 收集和分析应用需求
用例图(UseCase)来描述系统需求
新闻系统包含的用例如下:
后台用户管理新闻、用户信息:
用户安全登入
添加新闻(同时生成静态的Html页面)
删除新闻(可以选择删除一条或多条)
更新新闻(什么情况可以更新?)
审核新闻(功能流)
显示多条新闻的部分信息,并且实现分页浏览
显示一条新闻的详细信息,并且提供相关新闻信息
根据特定条件检索新闻信息
新闻图片上传
对用户信息的相关操作(类似对新闻操作)
用户安全登出
前台用户查看新闻信息:
显示新闻的部分信息,并且实现分栏浏览
显示图片新闻
按时间显示新闻,还可查看历史新闻
以文档形式描述用例:
用例1:用户安全登入
前置条件:无
主事件流:用户输入正确的用户名和密码,安全登入到系统,向用户返回管理界面主菜单。
其它事件流:A1:如果用户未输入正确的用户名或密码,则显示错误提示信息,用户名和密码不为空。
用例2:添加新闻(同时生成静态的Html页面)
前置条件:用户已经安全登陆到系统
主事件流:将用户输入的新闻信息保存到数据库,同时将此信息生成一个静态页面,存放到指定的目录下,如果操作一切正常,则向用户返回一个成功的提示信息。
其它事件流:如果输入的数据不全或不符合要求,或是生成静态页面失败,则显示错误的提示信息。
用例3:删除新闻(可以选择删除一条或多条)
前置条件:用户已经安全登陆到系统
主事件流:将数据库中的相关记录删除,实现一条或多条数据的删除,同时实现将相关的静态页面删除。
其它事件流:删除异常,则显示错误提示信息。
用例4:更新新闻(简单的修改不考虑其它业务要求)
前置条件:用户已经安全登陆到系统
主事件流:更新数据库相关记录
其它事件流:更新异常,则显示错误提示信息。
用例5:审核新闻(功能流)
前置条件:用户已经安全登陆到系统
主事件流:根据业务要求,实现新闻新闻发布的审批功能
其它事件流:显示审批的结果给用户
用例6:显示多条新闻的部分信息,并且实现分页浏览
前置条件:无(前台);用户已经安全登陆到系统(后台)
主事件流:返回相关新闻的部分信息,且实现分页浏览
用例7:显示一条新闻的详细信息,并且提供相关新闻信息
前置条件:无
主事件流:返回相关新闻的详细信息,且显示相关新闻的链接
用例8:根据特定条件检索新闻信息
前置条件:无(前台);用户已经安全登陆到系统(后台)
主事件流:从数据库中取得符合条件的数据给显示页面
其它事件流:如果没有符合的数据,则显示错误提示信息。
用例9:新闻图片上传
前置条件:用户已经安全登陆到系统
主事件流:上传新闻相关图片
其它事件流:如果上传类型不符合要求,或上传失败,则显示错误提示信息。
用例10:用户安全登出
前置条件:用户已经安全登陆到系统
主事件流:结束当前HTTP会话,重新返回到登陆页面。
用例11:显示新闻的部分信息,并且实现分栏浏览
前置条件:无(前台);用户已经安全登陆到系统(后台)
主事件流:对数据库中的数据按频道分栏显示。
2.设计数据库
本系统初步确定使用Mysql数据库。
根据分析客户的需求,建立如下数据库表结构:
表1 newslist表结构
字段 类型 说明
newsId int(11) 新闻ID,自动增长,主键
channel varchar(255) 新闻频道,不为空
kind varchar(255) 新闻栏目,不为空
headTitle Varchar(255) 新闻标题,不为空
content mediumtext 新闻正文,不为空
author varchar(255) 新闻作者,不为空
newsTime datetime 新闻发布时间,不为空
newsURL varchar(255) 生成静态新闻页面的文件名
picURL varchar(255) 新闻相关图片的文件名
表2 userinfo表结构
字段 类型 说明
userId int(11) 用户ID,自动增长,主键
userName varchar(20) 用户名,不为空
passWd varchar(20) 用户密码,不为空
title varchar(255) 用户头衔,不为空
建表的DDL语句如下:
CREATE TABLE `newslist` (
`newsId` int(11) NOT NULL auto_increment,
`channel` varchar(255) NOT NULL default '',
`kind` varchar(255) NOT NULL default '',
`headTitle` varchar(255) NOT NULL default '',
`content` mediumtext,
`author` varchar(255) NOT NULL default '',
`newsTime` datetime default NULL,
`newsURL` varchar(255) NOT NULL default '',
`picURL` varchar(255) NOT NULL default '',
PRIMARY KEY (`newsId`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
CREATE TABLE `userinfo` (
`userId` int(11) NOT NULL auto_increment,
`userName` varchar(20) NOT NULL default '',
`passWd` varchar(20) NOT NULL default '',
`title` int(11) NOT NULL default '0',
PRIMARY KEY (`userId`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
3.设计应用的业务逻辑
3.1 访问数据库
为了实现适合小项目的通用型数据持久化组件,我使用了DAO设计模式开发了数据库访问类,实现对业务对象的持久化,力求作到数据库无关性,使用方便,对业务逻辑提供一个一致的接口。
将所有的基本JDBC操作用自己写的类全部包装起来,使用上更简便,并且实现数据库配置参数全内置。
类的介绍……
3.2 设计业务对象
NewsBO
属性:
方法:
UserBO
属性:
方法:
4.设计用户界面
开发前期不过分注重系统的界面美观,等到功能基本实现后,找专人设计几个美观的用户界面模板,使用tiles框架重新组装用户界面。
每个团队成员只需负责自己相关的功能模块,完成功能为首要任务。
Index.jsp 首页(用Tites框架组装起来其中有几个页面是要重用的,如页头,页尾,导航菜单,后面页面要用到这些页面我就不在写出了)
ChannelNews.jsp 显示对应频道的所有新闻
ShowNews.jsp 显示每条新闻详细信息
Admin_Logon.jsp 管理员登陆
Message.jsp 信息提示页面 (包括出错提示)
AddNews.jsp 录入新闻(包括静态页面生成)
ManageNews.jsp 管理新闻(这是个集成几个功能的页面,包括新闻分页显示,新闻删除,新闻查找,新闻审核,查看每条新闻生成的静态页面,开发的时候把这个页面给拆成几个部分做,最后装配到一起。)
Config.jsp 系统配置管理
4.1 界面风格
使用统一的Html页面
4.2 使用客户化标签
显示新闻
分页显示
5.设计ActionForm
设计1个到3个动态Form
6.设计Action和Action映射
ListNewsAction 显示新闻
AddNews
|