java聊天程序.doc_第1页
java聊天程序.doc_第2页
java聊天程序.doc_第3页
java聊天程序.doc_第4页
java聊天程序.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计说明书(论文)课程名称 程序设计综合实验3 题 目 文字聊天软件设计 专 业 计算机科学与技术 班 级 0902(嵌入式方向) 学 号 09010123 姓 名 于雷 起止日期 2011-06-272012-07-03 指导教师 赵新慧 成 绩_辽宁石油化工大学计算机与通信工程学院摘要:聊天室是一项应用广泛,并且实用性强的一个非常典型的人机交互系统。在信息世界里,聊天工具的使用是非常频繁的,如MSN、QQ、校内通,之类的聊天工具许多人都正在使用。此次设计的聊天室系统虽然其功能简单,但是在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解。关键词:Socket;服务器端; 客户端; 连接(connection) Abstract:The rapid development of the computer networks has been making a great influence in many fields of human society. In particular, along with information age approaching, between the people tend to increasingly in exchanges and the transmission information through the network. But chats the system is precisely the current people uses many intermediary,。In this platform, people each other which many understanding or did not know can at will mutual exchange. Therefore, the development and overhead construction this kind of platform conforms to the time need to develop.This system with the LAN correspondence mechanism principle, through inheritting the Thread kind to establish the multithreading directly. In the development, it uses the elementary theory knowledge which the computer network programmes. for example, TCP/IP agreement, Client/Server pattern, network programming design method and so on. In the network programming, it realizes reading and transmission of the information, that is, informaton flows realize the information exchange, introduce information flow analysis for realizing a system, in which containes some basic software engineering methods.Key words: Socket ; server ; client ; connection引言有人说:“21世纪是以计算机为基础的信息时代”随着时代的发展,信息技术已成为世界各国实现政治、经济、文化发展目标最重要的技术.。而在网络发展运行中,使用频率最高的莫过与网络聊天,它让我们深刻的感觉到了世界是如此的小,无论你在哪里可以和你面对面的聊天。本设计将基于TCP/IP协议和Eclipse编程环境,使用Socket/ServerSocket编程方法和C/S工作模式实现一个聊天程序。当今主流的聊天工具有QQ,ICQ,MSN Messenger,Yahoo Messenger等,国内最热门的当属QQ,腾讯QQ(OICQ)是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。您可以使用QQ和好友用户进行交流,信息即时发送,即时回复,收发及时、功能全面。此外QQ还具有BP机网上寻呼、聊天室、传输文件、语音邮件、手机短讯服务等功能,QQ不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM移动电话的短消息系统互联,目前QQ和全国多家寻呼台、移动通信公司有业务合作。是国内不可多得的中文网络寻呼机。QQ支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。QQ可以在Win95/98/NT/2000操作系统下运行,是十分灵活的网络寻呼工具。它会自动检查您是否已联网,如果您的电脑已连入Internet,可以搜索网友、显示在线网友,可以根据QQ号、昵称、姓名、email地址等关键词来查找,找到后可加入到通讯录中。当您的通讯录中的网友在线时,QQ中朋友的头像就会显示在线,根据提示就可以发送信息,如果对方登记了寻呼机或开通了GSM手机短消息,即使离线了,您也可及时将信息传递给您的好友。虽然以上这些软件是免费的,并且功能越来越强大。但是它们的唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法脱离Intenet使用的。为了能在一个没有连接到Intenet的局域网使用聊天工具,那就必须要有服务器端。本系统就是包括服务器端与客户端,可以在局域网聊天的一个工具。目 录1.课程设计61.1题目介绍61.2设计目的62.课程设计原理和技术62.1嵌套字62.1.1流嵌套字62.1.2数据包嵌套字72.1.3原始嵌套字73.课程设计方案93.1需求分析93.1.1功能分析93.1.2性能分析103.1.3用例图103.1.4时序图123.1.5活动图133.2总体设计173.2.1功能模块图173.2.2数据库设计183.2.3表结构设计203.3类图243.4详细设计及实现253.4.1用户界面设计253.5输入与输出数据的设计313.5.1输入数据313.5.2输出数据323.5.3代码实现323.6程序主要代码404.调试过程说明474.1注册测试474.2登陆测试474.3私聊测试504.4群聊测试504.5查找好友测试514.6添加删除好友测试525.结束语53一设计要求1.1题目介绍 设计并实现一个基于TCP协议或者UDP协议的文字聊天软件,可以是点对点的,通信双方都可以主动发起连接;或者是基于服务器的,客户端之间通过服务器通信。要求:采用Windows应用程序风格,功能完整,显示直观,色彩协调,界面友好,操作简单。1.2设计目的基于TCP/IP协议和套字节编程原理为服务器端完成基本数据配置,主要采用套节字编程原理以及Socket/ServerSocket编程方法和Eclipse编程环境,通过调试运行并且经过完善后,实现网络聊天功能。二设计原理和技术2.1嵌套字套接字(Socket)是网络通信的基本操作单元,又称作端口,通常用来实现客户方和服务方的连接。网络上的两个程序通过一个双向的通信连接实现数据的交换,在实现双向通信链路的每一端都建立一个Socket,通过对Socket的读/写操作实现网络通信功能。套接字是网络通信的是一个标准。套接字分为以下3种类型。2.1.1流套接字这是最常用的套接字类型,TCP/IP协议簇中的TCP协议使用此类接口,它提供面向连接的(建立虚电路),无差错的,发送先后顺序一致的,包长度不限和非重复的网络信包传输。2.1.2数据报套接字TCP/IP协议族中的UDP协议使用此类接口,他是无连接的服务,以独立的信包进行网络传输,信包最大长度32KB,传输不保证顺序性,可靠性和无重复性,它通常用于单个报文传输或可靠性不重要的场合。2.1.3原始数据报套接字套接字客户端 所谓的客户端/服务器。是一种能够在基本网络环境的分布处理过程中,使用基于连接的网络通信模型。该通信模型首先在客户机和服务器之间定义一套通信协议,并创建一个Socket类,利用这个类来建立一条可靠的链接;然后,客户端/服务器再这条连接上可靠地传输数据。客户端发生出请求,服务器监听来自客户机的请求,并为客户端提供响应服务。 利用Socket类,我们可以轻松地实现网络客户端程序的编写,Socket类的一些常用的方法如下: getLocalAddress()读取套接字对象的本地地址getLocalPort()读取套接字所使用的本地端口getInputStream()得到一个输入流getOutputStream()得到一个输出流。通常情况下,客户端只要能够顺序地处理服务器程序的响应就可以了,因此客户端程序通常不用使用多线程。套接字服务端要实现套接字的服务器端,需要使用ServerSocket类。ServerSocket类是服务其程序的运行基础,它润许程序绑定一个端口等待客户端的请求,一旦产生客户端请求,它将接受这一请求,同时产生一个完整的Socket连接对象。服务器绑定的端口号必须公开,以便让客户端程序知道如何连接这个服务器。同时,作为服务器,它必须能够接收多个客户的请求,这就需要为服务器设置一个请求队列,如果服务器不能马上响应客户的请求,要将这个请求放进请求队列中,等服务器将当前的请求处理完,就会自动到请求队列中按照先后顺序取出请求进行处理。ServerSocket也提供一些方法,他们主要有:1)accept()返回一个“已连接”的Socket对象2)getInetAddress()得到该服务器的IP地址3)getSoTimeout()设置服务器超时时间4)getLocalPort()得到服务器所侦听的端口号5)getSOTImeout()得到服务器超时时间由于存在单个服务程序与多个客户程序通信的可能,所以服务程序响应客户程序不应该花很多时间,否则客户程序在得到服务程序前有可能花很多时间来等待通信的是建立,然而服务程序和客户程序的会话有可能是有很长的,因此为加快对客户程序连接请求的响应,典型的方法是服务器主机运行一个后台线程,这个后台线程处理服务程序和客户程序的通信。这一点和客户端的程序设计是不同的。三设计方案3.1需求分析 3.1.1功能分析本系统要实现的功能如下:1)注册服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过Jdbc-Odbc与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其号码。客户收到服务器返回的信息后,便打开主登陆窗口。2)登陆在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过JdbcOdbc读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的表,得到好友的号码后,再在icq表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢量(Vector)用以存储好友的呢称,号码。3)私聊私聊就是两个聊天。客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。例如服务器接收到一个A发给B的消息,先判断B是否已经在线,如果在线就将信息发送过去。B接收到A发来的信息,如果是未建立对话窗口,就询问是否建立对话,否则就丢弃信息。4)群聊群聊,就是多人一起聊天。过程与私聊差不多。唯一的不同就是服务器会将信息转发给指定群的所有成员。5)创建分组用户注册以后默认的好友分组只有一个。用户在执行添加分组操作以后,客户端分将一个这个动作的信息发送给服务器端(主要是FromClientlisten)。服务器端的fromClientListen接收到这个请求,会进行数据库操作,将要添加的分组信息插入到数据库中。如果成功,则返回这个分组的信息给客户端,否则返回错误提示信息。6)创建群用户注册以后群个数为0。用户在执行添加群操作以后,客户端分将一个这个动作的信息发送给服务器端(主要是FromClientlisten)。服务器端的fromClientListen接收到这个请求,会进行数据库操作,将要添加的群信息插入到数据库中。如果成功,则返回这个群的信息给客户端,否则返回错误提示信息。7)查找好友并加为好友输入要查找的用户ID号,客户端发送一个查询信息给服务器端,如果找到就返回用户服务信息。打开一个用户信息显示界面,该界面会提供一个“添加为好友”按钮,点击后可将此人加为好友。如果未找到,弹出一个信息提示框。8)查找群并加入群输入要查找的群ID号,客户端发送一个查询信息给服务器端,如果找到就返回用户服务信息。打开一个群信息显示界面,该界面会提供一个“加入此群”按钮,点击后可将此人加为好友。如果未找到,则弹出一个信息提示框。3.1.2性能分析本系统由于采用免费的oracle数据库软件,连接数最多不能超过200,所以并发访问数据库的人数不能超过200人。3.1.3用例图图3-1-1系统用例图图3-1-2系统原理图3.1.4时序图客户登陆、注册时的服务器端时序图图3-1-3注册、登陆时的服务端的时序图本图说明:服务器接每次与一个客户连接以后,就会去创建一个监听线程。通过线程来接收客户端发送的所有数据。如果要查询数据库,监听线程会请求获得一个数据库连接.如果数据库连接已经获得,就把连接交给DBOperation对象,通过此对象可以返回给监听线程必要的结果。最后监听线程会通过Socket将结果返回给客户端。3.1.5活动图1)用户登陆活动图图3-1-4用户登陆活动图本图说明:首先填写登陆信息,提交以后服务器会对用户名和密码进行验证。如果不正确,返回一个提示信息。如果登陆成功,就更新在线状态。通知所有好友自己已经上线。2)客户之间的通信活动图图3-1-5客户通信活动图本图说明:短消息发送以后,服务器端对应的监听线程会接收到一个数据包。此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者。如果不在线,就写入数据库。3)新增好友活动图根据好友ID号查找好友,如果此ID存在,就将用户信息发送到客户端。同时将好友关系写入到数据库。客户端服务器端是否存在用户资料填写搜索好友请求监听端口(监听线程)查询数据库返回找到用户资料监听端口(监听线程)写入数据库显示查找的客户资料加为好友请求更新好友列表图3-1-7新增好友活动图4)删除好友活动图此图说明:客户向服务器发送删除好友请求。服务器接收到删除好友请求以后,将好友关系从数据库中删除。客户端服务器端删除好友请求监听端口(监听线程)更新数据库更新好友列表图3-1-8删除好友活动图3.2总体设计 3.2.1功能模块图本系统主要由由两个子系统组成:1)文件传输系统;2)聊天子系统。聊天子系统的功能有:1)登录窗口;2)注册窗口;3)好友列表;4)聊天窗口;5)查找/添加好友;6)聊天记录;7)对话框(登录失败、注册成功、注册失败、确认删除、错误提示等);JICQ(javaQQ通信系统)通信(聊天)注册登陆私聊群聊查看好友资料查找好友添加好友查找群添加群创建好友分组图3-2-1系统功能模块图3.2.2数据库设计 E-R图QQ用户表ID账号密码个性签名头像好友分组ID用户ID号分组名用户分组用户群ID分组ID用户IDID群ID用户ID拥有创建拥有创建1111n1n群ID创建人ID群名群公告11留言ID发信人ID收信人ID拥有内容n图3-2-2系统E-R图1)用户表(QQUser):属性:id,account(登陆账号),pwd,nickname,sign(个性签名),sex,email,head(头像)关系: 一个用户可以有多个好友分组。 一个用户可以有多个群。 一个用户可以有多条留言。2)好友分组表(Qqperson_group):属性:id,userid(创建者ID),name(分组名) 关系:一条记录只对应一个用户,但是可以拥有多个组成员。3)群表(Qqpublic_group):属性:id,userid(创建者ID号),name(群名),sign(群公告)关系:一个群只有一个创建者,但是可以拥有多个群成员。图3-2-3系统各表之间的联系图3.2.3表结构设计表3-1 客户信息表(qquser)1自动id号Id整数2用户账号Account整数3用户密码Pwd字符4用户昵称Nickname字符5用户签名 sign字符6用户性别Sex字符7用户邮箱email字符8用户头像Head字符表3-2 Qq消息表(QQMessage)1自动IDID整数2发信人Account_from整数3收信人Account_to整数4发送内容Content字符表3-3 用户分组表(qqpersongroup)1自动IDID整数2拥有者Iduserid整数3分组名称name字符表3-4 公共群表(qqpublic_group)1自动IDID整数2创建人userid整数3群名称name整数4群的公共消息sign字符表3-5 用户与群的中间表(qquser_publicgroup)1自动IDID整数2加入的群IDgroupid整数3加入的用户的IDuserid整数表3-6 用户与分组的中间表(QQuser_persongroup)1自动IDID整数2加入的分组的idgroupid整数3加入分组的用户的iduserid整数以上各表创建的代码如下:1)创建用户表create table qquser(number primary key,account number unique,nickname varchar(100),sign varchar(500),sex varchar(10),email varchar(100),head varchar(200);2)创建分组表create table qqperson_Group(id number primary key,userid references qquser(id),name varchar(100);3)创建群表create table qqpublic_group(id number primary key,userid number references qquser(id),name varchar(100),sign varchar(800);4)创建消息表create table qqmessage(id number primary key,account_from number,account_to number,content varchar(1000);5)创建用户与群的中间表create qquser_publicgroup (id number primary key,groupid number references qqpublic_group(id) ,userid references qquser(id););6)创建用户与分组的中间表create qquser_persongroup(id number primary key,groupid number references qqpublic_group(id) ,userid references qquser(id);7)为用户表插入数据insert into qquser values(1,1,long,Im long,male,,48.gif);insert into qquser values(2,2,a,aa,male,,48.gif);insert into qquser values(3,3,b,bb,male,,48.gif);insert into qquser values(4,4,c,cc,male,,48.gif);insert into qquser values(5,5,d,dd,male,,48.gif);8)为分组表和群表插入数据insert into qqperson_group values(1,1,my friend);into qqpublic_group values(1,1,ha ha,my new group);9)为用户与群中间表插入数据insert into qqperson_group(1,1,1);insert into qqperson_group(1,1,2);insert into qqperson_group(1,1,3);insert into qqperson_group(1,1,4);insert into qqperson_group(1,1,5);10)为用户与分组中间表加入数据insert into qqpublic_group(1,1,1);insert into qqpublic_group(1,1,2);insert into qqpublic_group(1,1,3); into qqpublic_group(1,1,4);insert into qqpublic_group(1,1,5);3.3类图图3-3-1系统类图Socket:非自定义类,.Socket。Thread: 非自定义类,java.util.Thread。Client:负责具体发送和接收数据。FromServerListen:监听服务器是否在发送数据。MainFrame系统的主界面(包括用户列表等)。QQUserInfo包括用户的好友分组信息和群信息。QQUserClass包括用户的个人信息,如ID、用户名等。3.4详细设计及实现3.4.1界面设计 1)登陆界面本界面需要填写的有两个,一个是用户账号,另一个是用户密码。在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过Jdbc方式读取数据库,然后与用户输入的信息比较,否则返回错误,如果客户收到成功信息就打开主窗口,否则提示出错。如果成功,便打开主程序窗口。然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的friend表,得到好友的号码后,再在好友表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个Vector用以存储好友的信息。图3-4-1 登陆界面图2)注册界面本界面要填写的项目包括:用户昵称,密码,邮件地址,个性签名。需要选择的项目包括:性别,头像。本界面主要负责将用户的信息包装成一个QQUserClass对象。注册按钮一旦被点击,就会试图创建一个与服务器端的连接。连接创建成功就会将填写的信息发送到服务器端。如果服务器写入数据库成功,就回返回一个账号。使用这个账号,用户可以登陆到系统中。图3-4-2 注册界面图3)主界面主界面是系统的核心部分。它可以列出所有好友和客户所有加入的群,也可以提供共享文件和文件下载功能。如果用户服务双击好友分组或群,好友列表或群成员列表将会显示出来。双击一个好友,可以与他进行私聊。双击一个群成员,可以与群里的所有成员对话。本界面还提供了以下右键菜单:添加好友分组、查找好友并加为好友、查找群并加为群、创建群、移动好友到其它分组、查看好友资料、查看群资料。图3-4-3 系统主要界面图4)个人资料界面该界面主要显示某个用户信息,包括用户的账号,昵称,性别,个性签名,用户等级等。本界面还提供了一个“加为好友”按钮,如果点击它,此人将会被加为用户的好友。默认的是加到第一个好友列表,不过也可以移动其它好友分组。图3-4-4 查看好友资料图5)私聊界面本界面主要用来显示两个人的对话信息以及发送信息。发送的信息可以设置字体,大小,字体颜色。也可以发送一个QQ表情。图3-4-5私聊界面图6)群聊界面本界面主要用来显示多人的对话信息以及发送信息。发送的信息可以设置字体,大小,字体颜色。也可以发送一个QQ表情。右边显示的是群公告,可以用来公布一些必要的信息。图3-4-6群聊天界面3.5数据输入输出设计3.5.1数据输入登陆界面数据的输入要求Number(账号)输入的必须是整型,它是一个用户登陆的账号。Password(密码)可以是你设置好的字符串,字符串内容可以随便。如果用户设置不正确,将会导致登陆不成功,系统会弹出相应的对话框。注册界面的输入Nickname(昵称),password(密码),sign(个性签名)可以是任意的字符串。 Email必须是Email地址格式,也就是中间必须含有“”,否则提示输入不正确。共享界面的输入服务器IP:填入本机的IP地址,格式如:53端口号:随便一个可以未被占用的端口都行(最好是2000以上)。3.5.2数据输出用户注册的信息必须写入数据库中。下载的文件存放到的指定的目录中,如果未指定就存放到默认路径中,当默认路径不存在的时候给提示用户路径不存在。3.5.3代码实现服务器端设计.1 连接池的设计连接池,就是生产一定数量的数据库连接存储在一个容器中,等待程序来索取,当这个容器器中的数据库连接全部被使用完的时候,就立即再产生指定数量的数据库连接。这样做的优点就是可以充分利用资源,减少创建和关闭所带来的资源消耗。在程序中它是以一个集合来存储这些连接的。如果访问的程序过多,而连接又少,连接池可以迅速增加多个连接以供程序需求。如果连接需求量超出连接池所设定的最高值。连接池将不理会程序的请求。连接池主要由以下几个类创建:(1)poolSperties 该文件的内容如下:poolname=QQPooluser=rootpassword=rooturl=jdbc:mysql:/:3306/javaqqdriver=org.gjt.mm.mysql.Driverminconn=5reuse=20maxconn=1000logfile=c:/QQPool.log第一行声明要创建的数据库连接池的名字。第二行是访问数据库的用户名。第三行是访问数据库的密码。第四行是访问(mysql)数据库的url。第五行是声明驱动程序所在的类全名。第六行设定了数据库连接池中最少应保持的连接数。第七行设定了一个连接(Connection)最多可重复使用的次数。第八行设定了连接池是最多创建的连接数。第九行声明了一个日志文件(该日志文件记录的是数据库连接方面的信息)存放的路径。(2)GetPoolSet.java,本程序的主要功能是获取上一配置文件中的信息,并将获得的信息返回给其他程序。由于代码过多,本文并不列出源代码只以表格的形式说明各方法的作用。表4-1 GetPoolSet类的方法说明方法名作用public void setFileName(String fileName1)设置将要访问的配置文件public GetPoolSet()创建一个空的获取配置文件中信息的对象 public GetPoolSet(String fileName1)根据fileName1创建一个能猎取配置文件中信息的对象public String getSet(String name)从配置文件取得信息,并返回给调用程序(3)LogFile.java 本类主要用于记录日志信息,当程序出现异常的时候就会调用此类的方法将出错信息写如日志文件。(4)ConnectionPool.java 本程序主要用于创建数据库连接。表4-2 ConnectionPool的方法说明方法名作用public ConnectionPool(GetPoolSet poolset)构造器,它创建一个ConnectionPool对象public Connection createConnection(GetPoolSet poolset) 真正创建ConnectionPool对象的方法public Connection getConnection()获得连接public void freeConnection(Connection conn)释放连接,返回给连接池public void check()检查连接是否还正常public void release()关闭连接(5)PoolManager.java连接池管理,和对外交互的类,决定连接池的生产与销毁。表4-3PoolManager类的方法的说明方法名作用synchronized public static PoolManager getInstance(String setfile)返回某个连接池的管理对象synchronized public static PoolManager getInstance()返回默认的连接池管理对象private PoolManager(GetPoolSet poolset1)构造器,创建连接池管理对象private ConnectionPool createPool(GetPoolSet poolset)创建连接池public Connection getConnection()获得连接public void freeConnection(Connection connection1)释放连接public void closemypool()关闭连接池public void release()关闭所有的连接池.2 服务器端监听线程的设计服务器在监听到一个客户以后,它就会创建一个线程去管理这个客户。至于如何去管理这个客户,服务器端不做任何干涉,完全由监听线程决定。监听线程主要对客户端的请求进行响应,做到有求必应。接收到信息后,首先判断该信息是哪种类型,如果是要访问数据库服务器,则直接根据发送信息内容操作数据库。如果是聊天内容,服务器会将该信息再次转发到目的地。这些判断将会全放部在一个线程的run方法中。public class ChatServer ArrayList clients = new ArrayList();public static void main(String args) new ChatServer().begin();public void begin() ss = new ServerSocket(8888);Socket s = ss.accept();Client c = new Client(s);new Thread(c).start();clients.add(c); class Client implements Runnable /ChatServer内部类private Socket s;private DataInputStream dis = null;private DataOutputStream dos = null;public Client(Socket s) this.s = s; dis = new DataInputStream(s.getInputStream(); dos = new DataOutputStream(s.getOutputStream(); public void send(String str) dos.writeUTF(str); public void run() String str = dis.readUTF();for(int i=0; i SHOW DATABASES; 2:创建一个数据库MYSQLDATA mysql CREATE DATABASE MYSQLDATA; 3:选择你所创建的数据库 mysql USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)4:查看现在的数据库中存在什么表 mysql SHOW TABLES;5:创建一个数据库表 mysql CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1);6:显示表的结构: mysql DESCRIBE MYTABLE; 7:往表中加入记录 mysql insert into MYTABLE values (hyq,M); 8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql LOAD DATA LOCAL INFILE D:/mysql.txt INTO TABLE MYTABLE;9:导入.sql文件命令(例如D:/mysql.sql) mysqluse database; mysqlsource d:/mysql.sql; 10:删除表 mysqldrop TABLE MYTABLE; 11:清空表 mysqldelete from MYTABLE;12:更新表中数据 mysqlupdate MYTABLE set sex=f where name=hyq; 流程框图: user ID name password regDate . friendship ID user_ID friend_ID type frdDate . record ID user_ID friend_ID other info. .图3-5-3-23.6程序主要代码1)登陆代码btnLogin.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) boolean checked = server.verify( this.getuser() , this.password() );/登录验证if(checked) new friendsWindow(); loginFrame.setVisible(false);/loginFrame.dispose();else. );2)友元listFriend() /server.javaStatement s = conn.createStatement();ResultSet rs = s.executeQuery(select , friendship.type + from user, friendship + where user.ID = friendship.friend_ID + AND friendship.user_ID = + this.getUserID()+);while(rs.next()int type = rs.getInt(type);swith (type) case 0: /friendNode.add(current);case 1: /strangeNode.add(current);default: /blacklistNode.add(current);3)ChatWindow 和ChatRecord ChatWindow每一个chatWindow对应一个线程所有chatWindow按照组进行分类,并且由server负责维护讨论组每个讨论组里面都应该有一个数据结构(list)维护组里的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论