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

网络通讯薄(多用户)

设计文档

组长:张建波

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

一、网络通讯簿说明

功能概述:(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大模块

<!--[if !supportLists]-->(1) <!--[endif]-->用户登录模块

<!--[if !supportLists]-->(2) <!--[endif]-->用户注册模块

<!--[if !supportLists]-->(3) <!--[endif]-->添加联系人信息模块

<!--[if !supportLists]-->(4) <!--[endif]-->修改联系人信息模块

<!--[if !supportLists]-->(5) <!--[endif]-->查询模块

<!--[if !supportLists]-->(6) <!--[endif]-->删除联系人信息模块

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

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\下的 mytel Tomcat5.0下的\common\classes

(3) 拷贝:mysql-connector-java-<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">3.2.0</chsdate>-alpha-bin.jar Tomcat\common\lib\

(4) 拷贝:mysql-connector-java-<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">3.2.0</chsdate>-alpha-bin.jar jre1.50\lib\

(5) 拷贝:mysql-connector-java-<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">3.2.0</chsdate>-alpha-bin.jar jre1.50\lib\ext

注:mytel在附带光盘里

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

PATH=;.;E:\Borland\JBuilder2005\jdk1.4\bin CATLINA_HOME=E:\Borland\JBuilder2005\thirdparty\jakarta-tomcat-<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">5.0.27</chsdate>

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-<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">3.2.0</chsdate>-alpha-bin.jar

TOMCAT_HOME=E:\Borland\JBuilder2005\thirdparty\jakarta-tomcat-<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">5.0.27</chsdate>

()数据库初始化:(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个部分:

<!--[if !supportLists]-->1. <!--[endif]-->网络通讯薄源代码 mytel.rar

<!--[if !supportLists]-->2. <!--[endif]-->必备软件Tomcat5.0 JDK/JRE5.0 MySQL5.0

<!--[if !supportLists]-->3. <!--[endif]-->MySql数据库连接插件: mysql-connector-java-<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">3.2.0</chsdate>-alpha-bin.jar

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

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

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

Windows系统登录密码:123456

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

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

<chsdate w:st="on" year="2005" month="12" day="8" islunardate="False" isrocdate="False"><span lang="EN-US" style="FONT-SIZE: 14pt">2005/12/8</span></chsdate>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值