网络通讯薄(多用户)设计文档

来源:互联网 发布:手机淘宝下单截图 编辑:程序博客网 时间:2024/05/01 09:48

网络通讯薄(多用户)

设计文档 

 

组长:张建波

成员:黄隆徽李旸黄健陈文佳王丰张林昆

 一、网络通讯簿说明

功能概述:(1)支持在线添加、修改、删除、查询联系人

(2)支持“多用户”,用户只需进行简单的注册就可以使用。

(3)用户之间数据隔离,互相看不到的对方的数据,达到了数据保密!

系统特点:(1)使用java开发,数据库采用mysql方便移植!

(2)数据库与系统分离,只需要修改index.jsp就可以支持其他数据库

开发平台:

操作系统:Windows2003

开发工具:Borland JBuilder 2005 Enterprise

JDK版本:JDK1.4

WEB服务器:Tomcat5.0

后台数据库:MySQL Server 5.0

网络通讯薄运行要求:

       操作系统:  Win2000/XP/2003

        WEB服务器:Tomcat4.0/5.0weblog

                    Tomcat4.0+JDK1.40+JRE1.40

                    Tomcat5.0+JDK1.50+JRE1.50

        数据库:MySQL 4.0MySQL 5.0

        Web浏览器:IE5.0以上

二、设计思想与关键程序片

 

我们的“网络通讯簿”采用 JSP+JavaBean结合HTML的方式开发。

本系统共有3JavaBean

分别是:1-login.java 

2-getCnn.java

3-people.java

(一)login.java

login.java负责初始化MySQL数据库连接,同时保存数据库连接字符串,代码如下:

private static String db= null; //"jdbc:mysql://localhost/myteldb";

 private static String db_user= null; //"root";

private static String db_password= null; //"123";

 

声明了三个静态变量db ,db_user ,db_password通过主页index.jsp传入,这样设计的目的是为后面的getCnn.java提供数据库连接字符串。

login.java包含2个主要方法,方法声明如下:

public String checkUPWD(String userName, String userPwd)

 //用户登录密码验证

public int RegNewId(String UserName, String UserPwd)

 //用户注册

(二)getCnn.java

getCnn.javalogin.java获得数据库连接字符串后,对数据库进行连接,并把“数据连接”Connection对象返回给主调函数。

注:本通讯薄的所有对数据库的操作,都基于getCnn。这样设计的目的是为了简化其他部分的代码编写,同时保证数据连接的统一性,便于今后的维护。

 

 

数据库连接代码如下:

public class getCnn {

  private getCnn() { }//私有构造函数

  static Connection con = null; //数据库连接

  public static Connection GetConnection() {

    Connection con;

    try {

     Class.forName("com.mysql.jdbc.Driver");

    }

    catch (ClassNotFoundException e) {}

    try {

 con= DriverManager.getConnection(

login.GetDBName(),

login.GetDBUserName(),

login.GetDBUserPassword()

);

//login bean里获得数据库名称、登录用户、密码

     return con;

    }

    catch (SQLException e) {

     return null;

    }

  }

  public static void CloseCnn() {

    try {if (con!=null) {con.close();}}  //关闭数据连接

    catch (Exception e) {} ;

  }

}

(三)people.java

Bean目前只负责数据的删除

方法声明如下:

public String DeletePeople(String SqlStr)

(四)具体代码请参看,光盘上的mytl/mytel/src/mytel/下的源代码文件

 

二、模块概述

(一)网络通讯薄共分为6大模块

(1)用户登录模块

(2)用户注册模块

(3)添加联系人信息模块

(4)修改联系人信息模块

(5)查询模块

(6)删除联系人信息模块

(二)关键模块所涉及的程序片说明

1)首页index.jsp

<jsp:useBean id="login" scope="session" class="mytel.login"/>

<%!

 //数据库连接信息

 String db = "jdbc:mysql://localhost/myteldb"; 数据库连接地址

 String db_user = "root"; //数据库登录用户名

 String db_password = "123"; //数据库登录用户密码

%>

<%

 login.SetDB(db,db_user,db_password);  //设置数据库连接字符

%>

2)登录 login.jsp,负责验证用户的登录信息

<jsp:useBean id="login" scope="session" class="mytel.login"/>

    <%

      String logname = "NULL";

      String logpwd = "NULL";

 %>

 <%

      String message = "flase";

      if (!(session.isNew())) {

        //提交信息后,验证信息是否正确

        logname = request.getParameter("user"); //获取用户名

        logpwd = request.getParameter("pwd"); //密码

        if (!(logname.equals(""))) {

          // message = checkUPWD(logname, logpwd); //验证用户名密码

          message=login.checkUPWD(logname,logpwd);

          if (message == null) {

           message = "false";

          }

        }

      }

    %>

    <%

      if (!(session.isNew())) {

        if (message.equals("true")||message.equals("admin")) {

          session.setAttribute("user_name", logname); //保存用户名

          session.setAttribute("user_pwd", logpwd); //用户密码

          if(message.equals("admin"))session.setAttribute("power","0");

          else

             session.setAttribute("power","1");

          String url = response.encodeURL("main.jsp");

          response.sendRedirect(url);

        }

        else

          {

           out.print("用户名密码错误!");

           out.print("<p align='center'><a href='index.jsp'>返回</a></p>");

          }

      }

%>

3)表格绘制,以及数据输出模块showtable.jsp

该模块负责显示数据,它被设计为自页面提供给其他页面调用。例如:查询、修改、删除等模块

<%

  Statement sql;

  ResultSet rs;

  String sqlstr = "select * from t_tel_book";

  String str_findfiled = request.getParameter("findfiled"); //查询条件姓名

  String str_findwhere = request.getParameter("findwhere"); //查询条件= < >

  String str_findTxt = getString(request.getParameter("findTxt")); //查询数据

  if (!str_findTxt.equals("")) { //如果查询条件为空,则显示所有数据

    sqlstr = sqlstr + " where " + str_findfiled + str_findwhere + "'" + str_findTxt + "'";

    sqlstr = sqlstr + " and owner='" + (String) session.getAttribute("user_name") + "'";

  }

  else

    sqlstr = sqlstr + " where owner='" + (String) session.getAttribute("user_name") + "'";

  try {

  sql=getCnn.GetConnection().createStatement();

  rs = sql.executeQuery(sqlstr);

  rs.last();

  int lastRow=rs.getRow();   //获取最后一条记录

  pageCount=(lastRow%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);

  String integer=request.getParameter("showPage");  //计算分页显示数据

   if(integer==null)integer="1";

   try{

     showPage=Integer.parseInt(integer);

   }catch(NumberFormatException e){

   showPage=1;

   }

   if(showPage<=1)showPage=1;

   if(showPage>=pageCount)showPage=pageCount;

   posion=(showPage-1)*pageSize+1;

   rs.absolute(posion);

  for(int i=1;i<=pageSize;i++)

  {   //绘制数据表格

      out.println("<TR>");

      out.println("<TD>" + rs.getString("name") + "</TD>");

      out.println("<TD>" + rs.getString("tel") + "</TD>");

      out.println("<TD>" + rs.getString("address") + "</TD>");

      out.println("<TD>" + rs.getString("email") + "</TD>");

      out.println("<TD>" + rs.getString("QQ") + "</TD>");

      out.println("<TD>" + rs.getString("mtel") + "</TD>");

      out.println("<TD>" + rs.getString("teltype") + "</TD>");

      out.println("</TR>");

      rs.next();

    }

  sql.close();

  getCnn.CloseCnn(); //关闭数据连结

  }

  catch (SQLException e) {}

%>

4)查询以及数据修改删除代码如下

数据删除程序片:

<jsp:useBean id="people" scope="page" class="mytel.people"></jsp:useBean>

<%

String sqlstr =null;

sqlstr= "DELETE FROM t_tel_book where name='" + getString(request.getParameter("name")) + "'";

sqlstr = sqlstr + " and owner='" + (String) session.getAttribute("user_name") + "'";

String msg=people.DeletePeople(sqlstr); //删除数据

if(msg.equals("OK")){

out.print("<p align='center'>数据删除成功!</p>");

out.print("<p align='center'><a href='deleteman.jsp'>继续删除</a>&nbsp;&nbsp; <a href='wellcome.htm'>返回</a></p>");

}

else

{ out.print(msg); //数据删除失败

}

%>

数据修改程序片:

<jsp:useBean id="getCnn" scope="session" class="mytel.getCnn"></jsp:useBean>

<%

Statement sql;

ResultSet rs;

String sqlstr = "select * from t_tel_book where name='" + getString(request.getParameter("name")) + "'";

 try {

   sql = getCnn.GetConnection().createStatement();

   rs = sql.executeQuery(sqlstr);

   if (rs.next()) {

     name = rs.getString("name");

     tel = rs.getString("tel");

     address = rs.getString("address");

     email = rs.getString("email");

     qq = rs.getString("QQ");

     mtel = rs.getString("mtel");

     teltype = rs.getString("teltype");

   }

   sql.close();

   getCnn.CloseCnn();

 } catch (SQLException e) {}

%>

数据查询程序片请参考“表格绘制,以及数据输出模块”showtable.js

 

 

 

 

 

三、网络通讯簿安装说明

()必备软件:(Win2000环境)

(1)安装JDK1.5+JRE1.5

(2)安装Tomcat5.5(具体安装说明,请查看相关文档)

(3)安装MySQL5.5

注意:数据库root管理员密码请设置为:123456(如果安装时,密码设置的是其他的密码,则需要修改 index.jsp )

()安装系统:

(1)拷贝:mytelTomcat5.0webapps/root

    (2)拷贝:mytel/classes/下的 mytelTomcat5.0下的/common/classes

    (3)拷贝:mysql-connector-java-3.2.0-alpha-bin.jarTomcat/common/lib/

    (4)拷贝:mysql-connector-java-3.2.0-alpha-bin.jar jre1.50/lib/

(5)拷贝:mysql-connector-java-3.2.0-alpha-bin.jar jre1.50/lib/ext

注:mytel在附带光盘里

()环境配置:(需要根据具体情况修改)

PATH=;.;E:/Borland/JBuilder2005/jdk1.4/bin   CATLINA_HOME=E:/Borland/JBuilder2005/thirdparty/jakarta-tomcat-5.0.27

JAVA_HOME=E:/Borland/JBuilder2005/jdk1.4

CLASSPATH=E:/Borland/JBuilder2005/jdk1.4/jre/lib/rt.jar;.;E:/Borland/JBuilder200

5/jdk1.4/jre/lib/mysql-connector-java-3.2.0-alpha-bin.jar

TOMCAT_HOME=E:/Borland/JBuilder2005/thirdparty/jakarta-tomcat-5.0.27

()数据库初始化:(SQL脚本代码如下)

启动MySQL:

程序||MySQL||MySQL Server 5.0||MySQL Command Line Client

输入以下脚本:

//初始化的管理员为: admin密码 123

create database myteldb; /*创建myteldb数据库*/

use myteldb;          /*切换到myteldb数据库*/

drop table if exists t_admin; /*用户表*/

 

create table t_admin /*创建用户登录表*/

(

  username                       char(20),

  userpassword                   char(20),

  power                          char(20)

)

TYPE=MyISAM,default character set gbk;

drop table if exists t_tel_book;

create table t_tel_book /*创建通讯薄*/

(

  owner                          char(20),

  name                           char(20),

  tel                            char(20),

  address                        char(100),

  email                          char(20),

  QQ                             char(20),

  teltype                        char(20),

  mtel                           char(20)

)

TYPE=MyISAM,default character set gbk;

/*添加系统默认管理员*/

insert into t_admin values('admin','123','0');

/*登录名:admin密码 123*/

/*______________END___________*/

()测试

IE浏览器输入: htpp://127.0.0.1/mytel/MyJspWebModule/index.jsp

就可以看到效果了!

 

 

 

 

 

 

 

 

 

 

附录:光盘说明

光盘共包括4个部分:

1.    网络通讯薄源代码 mytel.rar

2.    必备软件Tomcat5.0 JDK/JRE5.0 MySQL5.0

3.    MySql数据库连接插件: mysql-connector-java-3.2.0-alpha-bin.jar

4.    附带WindowsNT Svere虚拟机,已经安装配置好了。(主要是提供网络通讯薄的演示用。)直接复制到硬盘,使用VM5.0打开。就可以使用网络通讯薄“

VM虚拟机说明:(VM虚拟机需要VMware Workstation5.0

本光盘所带的虚拟机,已经配置好了MySQL/JDK/mytel了。

Windows系统登录密码:123456

网络通讯薄:用户admin密码123

 

启动Windows后,桌面上有一个图标“网络通讯薄”,直接双击就可以使用了。

2005/12/8

原创粉丝点击