14.4 设计新闻发布系统

来源:互联网 发布:鞍山北国知春 编辑:程序博客网 时间:2024/06/10 12:27

 

14.4  设计新闻发布系统

上面对环境配置完毕。在开始编码之前,先来设计新闻发布系统,包括设计页面、设计业务逻辑和设计数据库。

14.4.1  设计页面

为了示例方便,这里的页面都没有使用图片。

从前面的实例说明可以知道,这个实例需要如下一些页面:新闻发布的展示页面show.html、发布新闻页面release.html、用户注册页面regedit.html、管理员登录页面login.html和错误处理页面error.html。

(1)新闻发布的展示页面show.html,如图14.12所示。

图14.12  新闻发布的展示页面

该页面主要用来显示用户发布的新闻,并按照新闻类别来显示。每个新闻类别下显示5条新闻,其他新闻使用“更多内容”来进行查看。其中新闻类别分为新闻中心、公司文件、规章制度和会议纪要。

show.html的源代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>新闻发布的展示页面</title>

<style type="text/css">

<!--

.style1 {font-family: "隶书"}

-->

</style>

</head>

<body>

<table width="100%" height="100%" border="1" cellpadding="0" cellspacing="0" >

  <tr height="100%">

    <td height="20"><strong>新闻中心</strong></td>

    <td><strong>公司文件</strong></td>

  </tr>

  <tr height="100%">

    <td height="150"><ol>

      <li>中共××公司支部委员会胜利召开</li>

      <li>××公司自主管理活动显成效</li>

      <li>普及法律合同知识,增强规避风险能力</li>

      <li>自主管理活动工作介绍</li>

      <li>自主管理活动遍地开花</li>

    </ol></td>

    <td><ol>

      <li>关于改变中午午休的通知</li>

      <li>关于任命××为厂长的通知</li>

      <li>关于开展自主管理活动的通知</li>

      <li>关于对上半年工作进行总结的通知</li>

      <li>召开人力资源专题会议的通知</li>

    </ol></td>

  </tr>

  <tr height="100%" style=" border-top-width:0">

    <td height="15" style=" border-top-width:0"><div align="right" class="style1" >》更多内容</div></td>

    <td style=" border-top-width:0"><div align="right" class="style1" >》更多内容</div></td>

  </tr>

  <tr height="100%">

    <td height="20"><strong>规章制度</strong></td>

    <td><strong>会议纪要</strong></td>

  </tr>

  <tr height="100%">

    <td height="150"><ol>

      <li>设备维修管理制度</li>

      <li>计算机管理制度</li>

      <li>办公用品发放管理制度</li>

      <li>工程项目审计实施办法</li>

      <li>会计档案管理制度</li>

    </ol></td>

    <td><ol>

      <li>××公司部长例会会议纪要</li>

      <li>××公司双周例会会议纪要</li>

      <li>2006年5月人力资源专业例会会议纪要</li>

      <li>2006年一季度财务专业例会会议纪要</li>

      <li>××公司2005年品种开发会议纪要</li>

    </ol></td>

  </tr>

  <tr height="100%">

    <td height="15" style=" border-top-width:0"><div align="right" class="style1" >》更多内容</div></td>

    <td style=" border-top-width:0"><div align="right" class="style1" >》更多内容</div></td>

  </tr>

</table>

</body>

</html>

(2)发布新闻页面release.html,如图14.13所示。

图14.13  发布新闻页面

该页面主要用来发布新闻,用户填写新闻标题、新闻内容和选择新闻类别,系统自动输出发布时间和发布人。

release.html的源代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>发布新闻页面</title>

<style type="text/css">

<!--

.style1 {

         font-size: large;

         font-weight: bold;

}

-->

</style>

</head>

<body>

<form name="form1" method="post" action="">

  <table width="100%" height="160" border="1" cellpadding="0" cellspacing="0">

    <tr>

      <td height="17" colspan="2"><div align="center" class="style1">发布新闻</div></td>

    </tr>

    <tr>

      <td width="126" height="19"><strong>新闻标题</strong></td>

      <td width="560">计算机管理制度</td>

    </tr>

    <tr>

      <td height="73"><strong>新闻内容</strong></td>

      <td><p><strong>1</strong><strong>、总则</strong></p>

        <p align="left">1.1为规范计算机及相关设备管理,促进计算机的有效合理使用,提高工作效率,特制定本管理办法。</p>

        <p>1.2 本办法适用于×××机械制造有限公司(以下简称公司)及公司本部(以下简称本部)。</p>

        <p>1.3 计算机及相关设备是公司配给员工的办公工具,属于公司固定资产,由公司人力资源处与本部综合室统一管理,公司经营处统一采购。</p>

        <p><strong>2</strong><strong>、设备的定义与分类</strong></p>

        <p>2.1 计算机包括:台式计算机、笔记本电脑、服务器、掌上电脑(PDA)等。</p>

        <p>2.2 计算机相关设备包括:数码照相机、数码摄像机、扫描仪、投影仪、打印机、传真机、复印机、网络设备、计算机软件,以及可以与计算机相连的办公设备及其支持软件等。</p>

        <p>2.3计算机按照性能分为:普通型机型和增强型机型两类,二者主要在配置上有差异。<strong>&nbsp;</strong></p>

        <p><strong>3</strong><strong>、计算机及相关设备的配置标准</strong></p>

        <p>3.1为加强公司内部计算机的可管理性,逐步实现公司内部统一品牌和统一售后服务,配合公司的集团化采购思想,由公司人力资源处信息化室确定品牌和机型。(计算机的配置标准见附件一)</p>

        <p>&nbsp;</p>

      </td>

    </tr>

    <tr>

      <td height="19" colspan="2"><strong>发布时间:</strong>2006-06-05 <strong>发布人</strong>:gd <strong>新闻类别</strong>:

        <select name="select">

          <option>新闻中心</option>

          <option selected>规章制度</option>

          <option>会议纪要</option>

          <option>公司文件</option>

        </select></td>

    </tr>

    <tr>

      <td height="18">&nbsp;</td>

      <td><input type="submit" name="Submit" value="提交">

      <input type="submit" name="Submit" value="修改">

      <input type="submit" name="Submit" value="删除"></td>

    </tr>

  </table>

</form>

</body>

</html>

(3)用户注册页面regedit.html,如图14.14所示。

图14.14  用户注册页面

该页面主要用来注册用户,包括注册用户名和密码。

regedit.html的源代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>用户注册画面</title>

</head>

<body>

<form name="form1" method="post" action="">

  <table width="100%" height="251" border="1" cellpadding="0" cellspacing="0">

    <tr>

      <td height="17" colspan="2"><div align="center"><strong>注册用户</strong></div></td>

    </tr>

    <tr>

      <td width="18%"><strong>用户名:</strong></td>

      <td width="82%"><input type="text" name="textfield"></td>

    </tr>

    <tr>

      <td><strong>密码:</strong></td>

      <td><input type="password" name="textfield"></td>

    </tr>

    <tr>

      <td><strong>确认密码:</strong></td>

      <td><input type="password" name="textfield"></td>

    </tr>

    <tr>

      <td colspan="2"><div align="center">

          <input type="submit" name="Submit" value="注册">

          <input type="reset" name="Submit" value="重置">

      </div></td>

    </tr>

  </table>

</form>

</body>

</html>

(4)管理员登录页面login.html,如图14.15所示。

图14.15  管理员登录页面

该页面主要用来进行新闻发布前的登录,如果管理员登录成功,则直接跳转至发布新闻的页面。

login.html的源代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>管理员登录页面</title>

</head>

<body>

<form name="form1" method="post" action="">

  <table width="100%" border="1" cellpadding="0" cellspacing="0">

    <tr>

      <td colspan="2"><div align="center"><strong>管理员登录</strong></div></td>

    </tr>

    <tr>

      <td height="41"><strong>用户名:</strong></td>

      <td><input type="text" name="textfield"></td>

    </tr>

    <tr>

      <td height="40"><strong>密码:</strong></td>

      <td><input type="password" name="textfield"></td>

    </tr>

    <tr>

      <td height="49"><strong>确认密码:</strong></td>

      <td><input type="password" name="textfield"></td>

    </tr>

    <tr>

      <td height="83" colspan="2"><div align="center">

        <input type="submit" name="Submit" value="登录">

        <input type="reset" name="Submit" value="重置">

      </div></td>

    </tr>

  </table>

</form>

</body>

</html>

(5)错误处理页面error.html,如图14.16所示。

图14.16  错误处理页面

该页面主要用来显示在示例运行过程中的错误信息。

error.html的源代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>错误处理页面</title>

<style type="text/css">

<!--

.style1 {

         color: #000000;

         font-weight: bold;

}

.style2 {color: #FF0000}

-->

</style>

</head>

<body>

<table width="100%" border="1">

  <tr>

    <td colspan="2"><div align="center"><strong>错误信息显示</strong></div></td>

  </tr>

  <tr>

    <td width="22%" height="141"><span class="style1">错误信息是:</span></td>

    <td width="78%"><span class="style2">SQL出错,请查看SQL语句是否符合语法规范。</span></td>

  </tr>

</table>

</body>

</html>

14.4.2  设计持久化类

通过上面的介绍和分析,可以知道,在该应用程序中,至少需要以下一些持久化类:负责用户基本信息的类User.java、负责用户权限的类UsersAuthor.java、负责新闻类别的类NewsType.java和负责新闻的类News.java。

这里使用Together来画UML图。对于Together的使用方法这里不再进行讲解,读者可以使用其他的工具,方法基本类似。这里首先画一个整体包结构图,如图14.17所示。

(1)负责用户基本信息的类User.java,主要用来存储用户的基本信息以及对用户的信息进行验证。用户类的UML图如图14.18所示。

             

图14.17  整体包结构图                     图14.18  用户类的UML图

由Together自动生成的用户类的源代码如下:

//******* User.java**************

package com.gd.vo;

public class User {

    public String getMsg(){

return msg;

}

    public void setMsg(String msg){

this.msg = msg;

}

    public String getPassword2(){

return password2;

}

    public void setPassword2(String password2){

this.password2 = password2;

}

    public String getPassword1(){

return password1;

}

    public void setPassword1(String password1){

this.password1 = password1;

}

    public String getUsername(){

return username;

}

    public void setUsername(String username){

this.username = username;

}

    public boolean validate() {

    }

    private String msg;

    private String password2;

    private String password1;

    private String username;

}

代码说明:

  ●       msg,用来存储该用户类的消息。

  ●       password1,用来存储用户第一次输入的密码。

  ●       password2,用来存储用户第二次输入的密码。

  ●       username,用来存储用户名。

(2)负责用户权限的类UsersAuthor.java,主要用来存储用户的权限信息。用户权限类的UML图如图14.19所示。

因为UsersAuthor类依赖于User类,所以这里给出用户类和用户权限类之间的关联图,如图14.20所示。

        

图14.19  用户权限类的UML图            图14.20  用户类和用户权限类之间的关联图

由Together自动生成的用户权限类的源代码如下:

//******* UsersAuthor.java**************

package com.gd.vo;

public class UsersAuthor {

    public void setUsersAuthor(User lnkUser, int power) {

          lnkUser = lnkUser;

                  power = power;

    }

    public int getAuthorByUser(User lnkUser) {

        return power;

    }

    public UsersAuthor(User lnkUser, int power) {

        lnkUser = lnkUser;

                   power = power;

    }

    private int power;

    /**

     * @clientCardinality 1

     * @supplierCardinality 0.n

     */

    private User lnkUser;

}

代码说明:power,表示用户拥有的权限,如果power为0表示普通用户,如果power为1表示超级用户。

(3)负责新闻类别的类NewsType.java,主要用来存储新闻类别的信息。新闻类别类的UML图如图14.21所示。

图14.21  新闻类别类的UML图

由Together自动生成的新闻类别类的源代码如下:

//******* NewsType.java**************

package com.gd.vo;

public class NewsType {

    public int getId(){

        return id;

    }

    public void setId(int id){

         this.id = id;

    }

public String getTypename(){

return typename;

}

public void setTypename(String typename){

this.typename = typename;

}

    public String getTypeById (int id) {

        return typename;

    }

    private int id;

    private String typename;

}

(4)负责新闻的类News.java,主要用来存储新闻的信息。新闻类的UML图如图14.22所示。

因为News类依赖于User类和新闻类别类,所以这里给出用户类、新闻类和新闻类别类之间的关联图,如图14.23所示。

      

图14.22  新闻类的UML图         图14.23  用户类、新闻类和新闻类别类之间的关联图

由Together自动生成的新闻类的源代码如下:

//******* News.java**************

package com.gd.vo;

public class News {

public int getId(){

        return id;

    }

    public void setId(int id){

         this.id = id;

    }

public String getMsg(){

return msg;

}

public void setMsg(String msg){

this.msg = msg;

}

public String getHead(){

return head;

}

public void setHead(String head){

this.head = head;

}

public String getContent(){

return content;

}

public void setContent(String content){

this.content = content;

}

public Date getDate(){

return date;

}

public void setDate(Date date){

this.date = date;

}

//根据新闻类别的id获取新闻

    public List getNewsByType(int id) {

}

//保存新闻

    public void saveNews(New new) {

}

private int id;

    private String msg;

    private String head;

    private String content;

    private Date date;

    /**

     * @clientCardinality n

     * @supplierCardinality 1

     */

    private NewsType lnkNewsType;

    /**

     * @clientCardinality n

     * @supplierCardinality 1

     */

    private User lnkUser;

}

14.4.3  设计数据库

经过分析可以知道,在该应用中,主要有用户信息、用户的授权信息、新闻类别和新闻等内容需要存储,所以对数据库表的设计也主要从这几个方面来考虑。

(1)存储用户信息的表,表名为user,主要字段有username和password,主键为username。

(2)存储用户授权信息的表,表名为userAuthor,主要字段有username和power,主键为username和power。

(3)存储新闻类别的表,表名为newsType,主要字段有id和type,主键为id。

(4)存储新闻的表,表名为news,主要字段有id、head、content、issuedate、issueuser和newstype,主键为id。

%注意:上面设计的数据库表是为了演示使用。如果是在实际的应用中,笔者建议每个表都加上id,然后表之间的关联用id来实现。这样就把表之间的管理和业务逻辑的变化分离开了,降低了业务逻辑和表之间的耦合性。

14.4.4  新闻发布系统在持久层的整体UML图

经过上面对页面、持久类和数据库的设计,最终可以得到一个新闻发布系统在持久层的整体UML图,如图14.24所示。

图14.24  新闻发布系统在持久层的整体UML图

原创粉丝点击