网络通讯薄(多用户)
设计文档
团 队
组长:张建波
成员:黄隆徽 李旸 黄健 陈文佳 王丰 张林昆
一、网络通讯簿说明
功能概述:(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.0或weblog
Tomcat4.0+JDK1.40+JRE1.40
或Tomcat5.0+JDK1.50+JRE1.50
数据库:MySQL 4.0或MySQL 5.0
Web浏览器:IE5.0以上
二、设计思想与关键程序片
我们的“网络通讯簿”采用 JSP+JavaBean结合HTML的方式开发。
本系统共有3个JavaBean
分别是: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.java从login.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> <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) 拷贝:mytel到Tomcat5.0的webapps\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>
分享到:
相关推荐
即时通讯QQ企业通讯系统设计...这个设计文档详细阐述了如何构建这样一个系统,从底层通信协议到上层用户体验,全面涵盖了即时通讯系统设计的各个方面。对于希望深入了解或实践这一领域的人来说,是一个宝贵的参考资料。
标题和描述中提到的是一个基于Java的网络通讯系统,它涉及到毕业设计、课程设计以及学生选课系统的实际应用。这个项目不仅提供了源代码,还有相关的文档资料,这为学习者和开发者提供了完整的参考资料。 首先,Java...
IM即时通讯SERVER连接及模块设计文档,主要介绍了实现网络视频会议底层通信架构的设计思路与技术细节。该文档详细阐述了软件内部数据在网络上的流动过程、系统内各机器之间的关系及其各自的功能。 #### 二、系统...
基于JAVA的网络通讯系统设计与实现(WORD论文文档+系统) 摘 要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。...
《基于JAVA的网络通讯系统设计与实现》是一个深入探讨如何使用Java编程语言构建网络通信系统的综合性项目。在本文档和配套系统中,我们将探讨以下几个关键知识点: 1. **Java网络编程基础**:Java提供了丰富的API来...
本资源提供了一个全面的基于Java的网络通讯系统设计与实现的完整资料,包括详细的设计文档、高质量的源代码以及可二次开发的系统框架。该系统采用先进的Java技术,实现了客户端与服务器之间的稳定、高效通信,适用于...
布谷鸟网络通讯工具提供快速的图片传输功能,支持批量发送高分辨率图片,且不受文件大小限制,这对于设计人员、摄影师或是需要频繁分享图片的用户来说是一大福音。 文件传输是另一项核心功能。布谷鸟网络通讯工具...
2. 基于JAVA的网络通讯系统设计与实现.doc:这份文档很可能是项目报告,详细介绍了系统的设计思路、实现方法和结果分析。 3. derby.jar:这是Apache Derby数据库的JAR文件,说明该网络通讯系统可能使用了嵌入式...
系统分析与设计文档是软件开发过程中的重要组成部分,它详细记录了从项目开始到系统实现的各个阶段,包括可行性分析、需求分析、系统设计等多个环节。以下是对这些知识点的详细说明: 1. 可行性分析: 可行性分析...
Java网络软件聊天室是一种基于Java技术实现的多用户交互平台,允许用户通过网络进行实时的文本、语音甚至视频交流。本设计报告将深入探讨其核心概念、需求分析、概要设计、详细设计以及测试过程。 1. 需求分析 - *...
### Android即时通讯方案知识点概述 ...综上所述,简易即时通讯系统的设计不仅要考虑功能的多样性,还需要注重安全性、稳定性和用户体验。通过合理的架构设计和技术选型,可以构建出高效稳定的即时通讯系统。
这个程序的核心在于网络通讯协议的设计与实现。它可能采用了TCP/IP协议栈,这是互联网上最基础的通信协议,能够保证数据的可靠传输。TCP(传输控制协议)负责建立和维护连接,确保数据按序无丢失地送达,而IP(网际...
在本项目中,我们主要探讨的是基于JAVA的网络通讯系统的设计与实现,这是一个典型的软件工程实践,涵盖了网络编程、多线程、IO流、Socket通信等多个核心Java技术领域。下面将详细阐述这些知识点: 1. **Java网络...
iChat是一款基于Java技术开发的即时通讯软件,其设计文档为我们揭示了软件开发中的关键环节,包括需求分析、系统架构、模块设计、数据结构、网络通信以及用户界面等多个方面。以下将详细介绍这些知识点: 1. **需求...
该软件平台支持RS232和EtherNet-IP网络编程,便于用户进行现场设备的连接和网络通讯的配置。通过RSLogix5000软件,工程师可以实现对PLC的编程控制,以及通过网络方式与PLC进行通讯。 4. AB PLC网络通讯技术 培训...
最后,项目文档,包括设计文档、用户手册和毕业论文,是评估和理解系统的重要资源。论文通常会涵盖系统的需求分析、设计决策、实现细节和性能评估等方面。 总之,这个基于Java的网络通讯系统涵盖了计算机科学的多个...
### JAVA源码简单即时通讯工具设计源码/文档 #### 知识点解析 ##### 一、即时通讯工具概述 即时通讯(Instant Messaging,简称IM)是指能够即时发送和接收互联网消息等的业务,最初由Mirabilis公司在1996年推出...
标签“行业文档-设计装置-一种组合式带”进一步强调了文档的性质,即它是针对特定行业的设计资料,特别关注的是具备多媒体和网络通讯功能的集成设备。 从压缩包子文件的文件名称“一种组合式带多媒体网络终端通讯及...
本资源主要涉及的是一个仿WebQQ2.0的聊天应用的设计文档与数据库相关文件,这为我们提供了一个深入理解Web即时通讯系统构建过程的机会。以下将详细讲解其中涉及的关键知识点。 首先,"WebQQ2.0"是腾讯公司推出的一...