局域网qq课程

上传人:枕*** 文档编号:131377508 上传时间:2022-08-06 格式:DOC 页数:37 大小:299.50KB
返回 下载 相关 举报
局域网qq课程_第1页
第1页 / 共37页
局域网qq课程_第2页
第2页 / 共37页
局域网qq课程_第3页
第3页 / 共37页
点击查看更多>>
资源描述
课 程 设 计 报 告课 程 名 称:面向对象程序设计课程设计题目:贵师院局域网聊天软件姓 名:罗义秀学 号:4 组 员:张宪文、武慕雪、冯景荣、王丹学 院:数学与计算机科学专 业:计算机科学与技术年 级:级 指 导 教 师:向程冠 二一三 年 七 月 目录1.设计的目的12设计的内容13概要设计33.1局域网聊天QQ的功能33.2局域网聊天QQ的能模块如下:34具体设计54.1编写服务器端程序54.1.1问题陈述54.1.2解决方案64.2客户端程序编写75总结86参照资料87.附录8摘 要随着互联网的发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多。本次实验将根据腾讯公司聊天工具QQ的设计,实现局域网网络通信的基本功能,以便在顾客在不联网的状况下也可以进行通信。 本文所写的“贵师院局域网聊天软件”是为理解决师院为理解决广大师院同窗们上网困难,网费透支,网速慢等困难。该软件重要涉及:服务器响应,登录系统,注册,好友界面,聊天界面等。在这次的课程设计中,我们应用了MyEclipse 6.0开发工具在WINDOWS平台上开发了一种基于WINDOWS平台的局域网通信工具,我们充足学习了JAVA Swing和awt界面开发技术,使自己在界面应用和界面布局方面得到更多的实践,应用Socket技术实现网络的连接功能,对网络的实现和通信方面有了进一步的理解,多线程方面的应用,使得客户端和服务端可以实现多任务功能。核心词:Java, MyEclipse, 通讯, 局域网,聊天 AbstractWith the development of the Internet, people rely on network more and more, more and more inseparable from the network, the resulting chat tools, more and more. This experiment will be in accordance with the design of tencent chat tool QQ, realize the basic function of the LAN network communication, so that the users in the case of not connected to the Internet can also communicate. This article written by the your LAN chat software college is to solve in order to solve the general teachers college students surfing the Internet is difficult, net charge overdraft, network speed is slow and difficult. The software mainly includes: the server response, login system, registration, friend interface, chat interface, etc. In the curriculum design, we applied the MyEclipse 6.0 development tools in WINDOWS platform based on WINDOWS platform to develop a local area network (LAN) communication tools, we fully learned JAVA Swing and awt interface development technology, make oneself in the aspect of application interface and interface layout to get more practice, Socket technology is applied to implement the network connection, for the realization of the network and communications have a further understanding of multi-threaded applications, making the client and the server can implement multitasking capabilities. Keywords : Java, MyEclipse, communication, Local area network, chat 1 引言随着Internet的发展,Internet将提供越来越多的服务。就目前而言,网民使用较多的重要有如下服务:电子邮件(E-mail),文献传播(网络通讯),远程登录(Telnet),万维网(world wide web),新闻组和电子公示牌(BBS),聊天系统(Chat)等。Internet如此流行,其中网络通讯功不可没。成钱上网的数据,软件分布在世界各地,有了网络通讯,足不出户,只要敲几种字,就能轻而易举地得到想要的。目前世界已有1000多种网络通讯文献服务器对所有的Internet顾客开放,顾客可以通过与Internet相连的计算机,把自己需要的文献传播过来。目前,许多互联网站点都建立了可供大众访问的资料库,这些资料都可以通过网络通讯获取。即时通讯的发展初期以其娱乐性引起了人们的广泛关注,但是目前在其迅速增长的切顾客表白这一技术已经开始融入目前商务活动中。为适应新的经济竞争环境,目前公司的沟通越来越快,对效率的规定也越来越高,特别是公司内部团队工作中的协调沟通必须即刻达到,否则将影响项目的整体推动,也难以迅速应对瞬息变化的市场需求。目前,越来越多的国内外公司开始关注公司即时通信产品,她们看中的是其减少交流成本、提高沟通效率的优势。跨越物理空间距离、实现即时交流通信系统最吸引公司之处。据美国出名公司Garnter调查显示,在后来,公司即时通信产品将以350%的速度飞速增长,可以说,公司即时通信具有广泛的发展前景。为了保障通信安全,建设内网、专网是一种解决这一问题的措施,但凡随着公司业务范畴的不断扩大,网络规模也在扩大,采用该方案飞话,成本的代价必然非常高。由于公众信息网是对整个社会开放飞公众基本网络,具有覆盖性范畴广、速度快、费用低、使用以便等特点,但同步也存在着安全性差的问题。顾客通过公众信息网传播的信息,在传播的过程中也许被窃取、篡改和伪造,信息的安全性和可靠性因此大大的减少了。习惯了通过类似于QQ,MSN之类的程序和天南地北的朋友聊天、发信息,但是所有聊天程序都需要Internet的支持,而无法在局域网内部大显身手,那么与否想到过要让单位内部的员工,寝室周边的同窗,不用和上Internet就可以轻松体验到内网聊天的乐趣呢?有了这种想法,开发局域网聊天程序就有了必要性,让单位员工或者寝室同窗不出内网就能自由聊天。随着网络技术的发展和国际互联网在全球的开通,计算机在教学领域中的应用得到了迅速地发展,多种类型的网校、教育网站、网络远程教育学院如雨后春笋般蓬勃兴起,使得网上教育成为当今教育的热点。人们禁不住向往着一种全新的教育体制基于Internet/Intranet教育网的教育体制,在这种体制下,不受时间、空间和地区的限制,不受应用软件的限制,通过计算机网络可扩展至全社会的每一种角落,甚至是全世界,这是真正意义上的开放大学。在基于Internet的教育网络环境下,以便教师对学生作业的管理,同步可以最大限度地发挥学习者的积极性、积极性、摸索精神,既可以进行个性化教学,又可以进行协作型教学。局域网QQ软件是一种即时通信工具。通过该网络程序的编制和实践,对自己所学习的知识进行了一次综合和提高,有更深层次的理解和掌握,在这个过程中,激发自己的学习潜力,提高软件开发的能力,加深对网络合同和Windows环境下网络编程的理解和掌握。通过自己完毕的需求分析,小组内通过讨论和商定,最后拟定了我们小组开发的局域网QQ有如下几大功能:文字聊天重要功能。作为计算机网络的应用之一聊天工具,受到了顾客的普遍爱好,它把人们带进了一种虚拟的网络世界,大大的加深了人们之间的联系。从单一的文本聊天,到语音聊天以及到目前的图像、视频聊天、及时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为将来人们通过因特网互相联系和娱乐的重要平台。聊天工具的开发重要用到了网络通信技术、语音的采集、压缩、传播、解压缩以及回放等技术、文献传播技术、windows的多线程技术以及视频的采集、压缩解压缩技术等。该聊天软件基于WINSOCK通信,在此基本上,实现点对点聊天、广播聊天、一对多聊天以及文献的传播。该聊天工具可以运营于任何支持tcp/ip,upd,ftp合同的机器上。由于系统采用C/S构造,客户端与客户端以及客户端与服务器端需要传送某些控制消息。2.设计的目的为了纯熟掌握面向对象编程的技巧和计本知识,掌握面向对象编程的基本思路和措施,深刻感受编程的乐趣,以及解决广大师院同窗上网困难,网费透支,网速慢等困难,本小组采用了java语言程序设计,编写了一种“贵师院局域网聊天软件”。局域网QQ软件是一种即时通信工具。通过该网络程序的编制和实践,对自己所学习的知识进行了一次综合和提高,有更深层次的理解和掌握,在这个过程中,激发自己的学习潜力,提高软件开发的能力,加深对网络合同和Windows环境下网络编程的理解和掌握。网络聊天成为现代人们生活必不可缺的一部分,它增强了人与人之间的沟通,当下的腾讯QQ为国内的大众平台,本次实验将根据腾讯公司聊天工具QQ的设计,实现局域网网络通信的基本功能,以便在不联网的状况下顾客也可以进行通信。局域网聊天程序的实现,重要为需要局域网内聊天的顾客设计一种聊天平台;本系统的目的是为了让局域网内的计算机顾客如寝室、办公室能随时随处通过网络进行交流。局域网聊天程序的设计目的为一种高性能的,易于使用的,面向局域网的即时信息软件。3设计的内容局域网QQ软件是一种即时通信工具。重要有如下几种功能:(1)连接服务器;(2)顾客注册;(3)顾客登录;(4)多帐号登录;(5)顾客聊天。本小组设计的聊天软件的开发重要是用MyEclipse开发工具,在WINDOWS平台上进行开发,我们充足学习了JAVA Swing和awt界面开发技术,应用Socket技术实现网络的连接功能。软件还波及数据库的设计,用于寄存注册顾客信息。C/S构造是本软件系统的体系构造,通过它可以充足运用两端硬件环境的优势,将任务合理分派到Client端和Server端来实现,减少了系统的通讯开销。在设计时,QQ顾客登录框,我们要从两个方面去考虑:一是QQ帐号,二是QQ密码。就拿QQ帐号这一种输入框,你怎么去考虑进行测试用例的设计?目前,一种QQ服务器就容许有10万以上个顾客同步登录进行即时聊天,有多少个QQ帐号啊?目前一种人还不只一种QQ号呢。 如果有诸多QQ帐号的话,怎么进行测试呢?如果只测试几种,覆盖率局限性;所有都测试一遍,不也许有那么长时间,并且太多了也不好实行。因此,QQ帐号的测试就陷入了僵局?我们先分析一下QQ帐号:由6-10位自然数构成。一是位数长度有一定的限制,二是类型是固定的,由0-9自然 数构成。要想测试覆盖全面,又要节省时间,最佳的措施是尽量简化测试用例的设计。通过对以上QQ帐号的分析,可以看到有效的帐号有它自己的特点:长度与类 型要符合规定,这样只要在腾讯公司的服务器上申请了帐号,就可以进行即时通信了。那么,这样就有一种解决问题的措施了:进行类别的划分。我们懂得软件的功能测试要进行两个方面的测试:通过测试和失败测试。要进行通过测试的话,帐号要符合规范,要进行失败测试的话,就要破坏帐号的规范。好,这样的话,QQ帐号的测试我们就可以进行了。把QQ帐号进行分类:有效的和无效的。有效的:(1)长度在6-10位之间(2)类型是0-9自然数无效的:(1)长度不不小于6(2)长度不小于10(3)负数(4)小数(5)英文字母(6)字符 (7)特殊字符中文(1)编程语言中的转义字符(2)空 这样就可以看出来,有效的当中只要取1或几种就可以通过测试了,在无效的当中取1或几种就可以进行失败测试了,因此这样的措施很简朴、高效。4概要设计4.1局域网聊天QQ的功能检查登陆信息与否对的,并向客户端返回登陆信息,如信息对的。就将在线顾客发给该顾客,并将该顾客的状态发给各在线顾客。同步在服务器端显示出来。建立与服务器的连接并登陆,能显示登陆错误信息。顾客登陆成功,将保存其号码,以便下次登陆时,不必再输入而可以直接选择,显示登陆时间。由于每个顾客的QQ号码和密码都是不相似的,因此必须规定后台管理系统能根据系统需求,动态的、精确的更新系统数据。4.2局域网聊天QQ的功能模块如下:(1)服务器界面:如图2 图2 服务器界面 Fig2 The server interface(2)登录界面:如图3 图3 登录界面Fig3 Login interface(3)注册界面:如图4 图4 注册界面 Fig4 Registration interface(4)找回密码界面:如图5 图5 找回密码界面 Fig5 Password retrieval interface(5)好友列表界面:如图6 图6 好友列表界面 Fig6 Buddy list interface(6)聊天界面设计:如图7 图7 聊天界面设计 Fig7 The chat interface design5具体设计 5.1编写服务器端程序5.1.1问题陈述(1)接受顾客注册信息并保存在数据库里面。(2)可以容许注册过的顾客登录聊天界面并可以聊天。(3)可以接受私聊信息并发送给特定的顾客。(4)服务器运营在自定义的端口9999上。5.1.2解决方案5.1.2.1数据库设计基于服务跨平台运营的设想,服务器数据库使用Mysql。数据库表:如图9图9数据库设计 Fig9 Database design 5.1.2.2顾客注册(1)客户端祈求注册:客户端通过Register.java祈求注册,填写注册信息,并验证密码与否符合规定,与否两次入一致,如不一致会提示重新输入,最后将祈求信息发送给服务器端。(2)服务器端响应:服务器端得到注册祈求会将对象输入流转化为文献输出流,并反馈给客户端。客户端得到注册信息后会在前台填写注册信息,然后创立文献输出流,再用对象输出流包装后写入本地文献将其持久化。最后关闭对象输出流和文献输入流。(3)给客户端返回信息:将顾客注册成功或失败的信息用打印流包装Socket后来,输出给客户端注册成果的具体信息。5.1.2.3顾客登录(1)去数据库读数据库数据(2)验证顾客名与否存在5.1.2.4 接受顾客聊天信息(1)接受顾客聊天信息当顾客发送聊天信息时,服务端将会收到客户端用Socket传播过来的聊天信息对象,然后将其强制转换为Chat对象。(2)过滤顾客聊天内容的非法信息分析聊天信息对象的聊天内容,用语言过滤类将非法字符过滤掉。语言过滤的时候将会打开“badword.txt”文献,不容许浮现的核心词将会存储在文献中,核心字之间以逗号分割。当聊天内容中浮现要过渡的核心字是将会被系统屏蔽,而聊天内容正常发送给接受端。(3)接受服务器端的系统消息当有其她顾客登陆时,系统会给在线的所有顾客发送顾客登陆信息,并且通过服务器可以给各顾客发送系统消息。系统消息发出后,如再有登录者也可以接受到系统消息。(4)返回给客户端当以上信息都封装成功后,打开与客户端连接的Socket的输出流,然后再用ObjectOutputStream对象输出流包装后输出给客户端。5.2客户端程序编写程序将通过QQregister.java顾客注册界面收集顾客的昵称、姓名、性别、年龄、所在地。(1)顾客登录程序将通过QqClientLogin.java顾客登录界面收集顾客userId。(2)好友列表当顾客登录成功后,顾客的登录界面将会隐藏,然后创立顾客好友列表窗口,当界面的标题栏将会显示目前顾客的userId,以避免机器上的顾客开多种账号后分不清是哪个顾客登录。第一行显示好友的列表,第二行是陌生人列表,第三行是黑名单列白。好友列表里面显示的是好友的userId。(3)聊天室当在好友界面里面点击一种在线的好友时会弹出一种顾客与好友聊天的窗口。在界面上标题栏上显示好友userId的界面。顾客需要发送信息时,在聊天内容里写下要发送的内容,然后点击发送就可一发送到好友的客户端。6总结 Java向对象程序设计是一门应用广泛面实用性极强的程序设计语言。通过本次课程设计,我对项目的各个阶段的任务有一定的理解。设计开始阶段必须明确设计的目的与需求分析,总体设计要全面分析聊天室的系统构建。 客户端发送信息时,将要发送的内容(涉及聊天信息标记。聊天对象,聊天对象,状态、表情、内容)以及顾客列表通过消息框进行发送,发给某个顾客则是通过消息框发送信息。服务器端和客户端接受消息时,先读取聊天信息标记,做出判断,依次读取、解决信息,并在界面上显示。服务器端还要将准备好的信息发送给指定的顾客。 服务器端帧听到有顾客下线后,讲删出顾客结点,并在界面显示顾客下线,发送新顾客列表。服务端停止服务,也会向客服端发送服务器已关闭,客户讲不再可以聊天。在这过程中哪怕只是一点点的错误,却要花出号几种此傲视甚至几天的时间才把它找出来。因此在这过程中我们不能急于求成,要很有耐心的反复调试程序,查资料,找出错误。7参照资料1胡伏湘,雷军环.Java程序设计实用教程.清华大学出版社.2LemayLaura.21天学通Java.人民邮电出版社.3cays.horstmann.JAVA核心技术(第二版).电子工业出版社. 4陆光义.Java游戏编程导学.清华大学出版社.5郭谦.Java程序性能优化.铁路计算机应用. 6Y.DanielLiang.Java语言程序设计 基本篇.机械工业出版社.7Y.DanielLiang.Java语言程序设计 进阶篇.机械工业出版社.8.附录(1)启动服务器MyServerFrame.java代码:public class MyServerFrame extends JFrame implements ActionListener JPanel jp1;JButton jb1,jb2;public static void main(String args) MyServerFrame f=new MyServerFrame();public MyServerFrame()jp1=new JPanel();jb1=new JButton(启动服务器);jb1.addActionListener(this);jb2=new JButton(关闭服务器);jp1.add(jb1);jp1.add(jb2);this.add(jp1);this.setSize(500,400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=jb1)new MyQqServer();(2)QQ注册界面QQregister.java代码:public class QQregister extends JFrame implements ActionListenerstatic tryClass.forName(com.mysql.jdbc.Driver);System.out.println(Success loading Driver!);catch(Exception e)e.printStackTrace();String url = jdbc:mysql:/localhost:3306/qqdb;String userName = root;String password = 111111;Connection conn=null;Statement sql;String userId = null;JLael jbl1,jp2_jl1,jp2_jl2,jp2_jl3,jp2_jl4,jp2_jl5,jp2_jl6,jp2_jl7;JPanel jp1,jp2;JTextField jp2_jtf11,jp2_jtf12,jp2_jtf3,jp2_jtf4;JPasswordField jp2_jpf1,jp2_jpf2;JButton jb1;JRadioButton jb2,jb3;Box b1;ButtonGroup btg;char b;public static void main(String args) QQregister f=new QQregister();public QQregister()setLayout(new BorderLayout();/解决北部jbl1=new JLabel(new ImageIcon(image/6.png);/解决中部jp2=new JPanel(new GridLayout(7,2);jp2_jl1=new JLabel(昵称:,JLabel.CENTER);jp2_jl2=new JLabel(姓名:,JLabel.CENTER);jp2_jl3=new JLabel(密码:,JLabel.CENTER);jp2_jl4=new JLabel(确认密码:,JLabel.CENTER);jp2_jl5=new JLabel(性别:,JLabel.CENTER);b1=Box.createHorizontalBox();jb2=new JRadioButton(男);jb3=new JRadioButton(女);b1.add(jb2);b1.add(jb3);btg=new ButtonGroup();btg.add(jb2);btg.add(jb3);jp2_jl6=new JLabel(年龄:,JLabel.CENTER);jp2_jl7=new JLabel(所在地:,JLabel.CENTER);jp2_jtf3=new JTextField(15);jp2_jtf11=new JTextField(15);jp2_jtf12=new JTextField(15);jp2_jtf4=new JTextField(15);jp2_jpf1=new JPasswordField();jp2_jpf2=new JPasswordField();jp2.add(jp2_jl1);jp2.add(jp2_jtf11);jp2.add(jp2_jl2);jp2.add(jp2_jtf12);jp2.add(jp2_jl3);jp2.add(jp2_jpf1);jp2.add(jp2_jl4);jp2.add(jp2_jpf2);jp2.add(jp2_jl5);jp2.add(b1);jp2.add(jp2_jl6);jp2.add(jp2_jtf4);jp2.add(jp2_jl7);jp2.add(jp2_jtf3);/解决南部jp1=new JPanel();jb1=new JButton(立即注册);jb1.setForeground(Color.white);jb1.setBackground(Color.green);jb1.addActionListener(this);jp1.add(jb1);this.add(jbl1,BorderLayout.NORTH);this.add(jp2,BorderLayout.CENTER);this.add(jp1,BorderLayout.SOUTH);this.setSize(346,365);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);public void actionPerformed(ActionEvent e) if(e.getSource()=jb2)b=男;if(e.getSource()=jb3)b=女;if(e.getSource()=jb1) tryClass.forName(com.mysql.jdbc.Driver);Conn=DriverManager.getConnection(url,userName, password);sql=conn.createStatement();String id=select max(userId)+1 from users;java.sql.ResultSet rs=sql.executeQuery(id);while(rs.next()userId=rs.getString(1); System.out.println(userId+t); String s1=+userId+; String s2=+new String(jp2_jpf1.getPassword()+; String s3=+jp2_jtf11.getText().trim()+; String s4=+jp2_jtf3.getText().trim()+; String s6=+jp2_jtf12.getText().trim()+; String s5=+b+; String s7=+jp2_jtf4.getText().trim()+; String temp=INSERT INTO users VALUES (+s1+,+s2+,+s3+,+s4+,+s5+,+s6+,+s7+); int count=sql.executeUpdate(temp); conn=DriverManager.getConnection(url, userName, password); conn.close();catch(SQLException e1)System.out.println(fails);e1.printStackTrace(); catch (ClassNotFoundException e1) e1.printStackTrace();JOptionPane.showMessageDialog(this,你已成功注册!+你的QQ号为+userId,提示对话框,JOptionPane.INFORMATION_MESSAGE); (3)QQ登陆界面QqClientLogin.java代码:public class QqClientLogin extends JFrame implements ActionListener,MouseListenerJLabel jbl1;JPanel jp1;JButton jp1_jb1,jp1_jb2,jp1_jb3;JPanel jp2;JLabel jp2_jbl1,jp2_jbl2,jp2_jbl3,jp2_jbl4,jp2_jb1;JTextField jp2_jtf;JPasswordField jp2_jpf;JCheckBox jp2_jcb1,jp2_jcb2;public static void main(String args) QqClientLogin j=new QqClientLogin();public QqClientLogin()setLayout(new BorderLayout();/解决北部jbl1=new JLabel(new ImageIcon(image/1.png);/解决中部jp2=new JPanel(new GridLayout(3,3);jp2_jbl1=new JLabel(QQ号码,JLabel.CENTER);jp2_jbl2=new JLabel(QQ密码,JLabel.CENTER);jp2_jbl3=new JLabel(忘掉密码,JLabel.CENTER);jp2_jbl3.addMouseListener(this);jp2_jbl3.setForeground(Color.BLUE);jp2_jb1=new JLabel(注册账号,JLabel.CENTER);jp2_jb1.setForeground(Color.BLUE);jp2_jb1.addMouseListener(this);jp2_jtf=new JTextField();jp2_jpf=new JPasswordField();jp2_jcb1=new JCheckBox(隐身登陆);jp2_jcb2=new JCheckBox(记住密码);/把控件按顺序加入到jp2jp2.add(jp2_jbl1);jp2.add(jp2_jtf);jp2.add(jp2_jb1);jp2.add(jp2_jbl2);jp2.add(jp2_jpf);jp2.add(jp2_jbl3);jp2.add(jp2_jcb1);jp2.add(jp2_jcb2);/创立选项卡窗口/解决南部 jp1=new JPanel();jp1_jb1=new JButton(登录);/响应顾客点击登录jp1_jb1.addActionListener(this);jp1_jb2=new JButton(取消);jp1.add(jp1_jb1);jp1.add(jp1_jb2);this.add(jp1,BorderLayout.SOUTH);this.add(jp2,BorderLayout.CENTER);this.add(jbl1,BorderLayout.NORTH);this.setSize(332,265);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub/如果顾客点击登录if(e.getSource()=jp1_jb1)QqClientUser qqClientUser=new QqClientUser();User u=new User();u.setUserId(jp2_jtf.getText().trim();u.setPasswd(new String(jp2_jpf.getPassword();if(qqClientUser.checkUser(u)try /把创立好友列表的语句提前QQFriendList qqList=new QQFriendList(u.getUserId();ManagerQqFriendList.addQQFriendList(u.getUserId(), qqList);/发送一种规定返回在线好友的祈求包。ObjectOutputStream oos=new ObjectOutputStream(ManageClientConServerThread.getClientConServerThread(u.getUserId().getS().getOutputStream() ;/做一种messageMessage m=new Message();m.setMesType(MessageType.message_get_onLineFriend);/指明我要的是这个qq好友的状况。m.setSender(u.getUserId();oos.writeObject(m); catch (Exception e1) e1.printStackTrace();/关闭掉登录界面this.dispose();elseJOptionPane.showMessageDialog(this,顾客名密码错误);public void mouseClicked(MouseEvent e) / TODO Auto-generated method stubif(e.getSource()=jp2_jb1) new QQregister();if(e.getSource()=jp2_jbl3)new QQfoundpassword();public void mouseEntered(MouseEvent e) / TODO Auto-generated method stubJLabel j1=(JLabel)e.getSource();j1.setForeground(Color.RED);public void mouseExited(MouseEvent e) / TODO Auto-generated method stubJLabel j1=(JLabel)e.getSource();j1.setForeground(Color.BLUE);public void mousePressed(MouseEvent e) / TODO Auto-generated method stubpublic void mouseReleased(MouseEvent e) / TODO Auto-generated method stub(4)好友列表QQFriendList.java代码:public class QQFriendList extends JFrame implements ActionListener,MouseListenerstatic tryClass.forName(com.mysql.jdbc.Driver);System.out.println(Success loading Driver!);catch(Exception e)e.printStackTrace();String url = jdbc:mysql:/localhost:3306/qqdb;String userName = root;String password = 111111;Connection conn=null;Statement sql;String userId = null;JPanel jphy1,jphy2,jphy3;JButton jphy_jb1,jphy_jb2,jphy_jb3;JScrollPane jsp1;private String owner;/解决第二张卡片(陌生人)JPanel jpmsr1,jpmsr2,jpmsr3;JButton jpmsr_jb1,jpmsr_jb2,jpmsr_jb3;JScrollPane jsp2;JLabel jbls;CardLayout c1;public static void main(String args) /QQFriendList f=new QQFriendList();/更新在线好友的状况public void updateFriend(Message m) String onLineFriend=m.getCon().split( );tryClass.forName(com.mysql.jdbc.Driver);conn = DriverManager.getConnection(url, userName, password);sql=conn.createStatement();String id=select userId from users;java.sql.ResultSet rs=sql.executeQuery(id);int j=0;jbls=new JLabel100;while(rs.next()userId=rs.getString(1); /或者 rs.getString(“accId”);System.out.println(userId+t);j+;jblsj=new JLabel(userId);jblsj.setEnabled(false); conn=DriverManager.getConnection(url, userName, password); conn.close();catch(SQLException e1)System.out.println(fails);e1.printStackTrace(); catch (ClassNotFoundException e1) / TODO Auto-generated catch blocke1.printStackTrace();public QQFriendList(String owerId)this.owner=owerId;/解决第一张卡片(显示好友列表)jphy_jb1=new JButton(我的好友);jphy_jb2=new JButton(陌生人);jphy_jb2.addActionListener(this);jphy_jb3=new JButton(黑名单);jphy1=new JPanel(new BorderLayout();/假定 有50个好友jphy2=new JPanel(new GridLayout(50,1,4,4);/加载数据库;tryClass.forName(com.mysql.jdbc.Driver);conn = DriverManager.getConnection(url, userName, password);sql=conn.createStatement();String id=select userId from users;java.sql.ResultSet rs=sql.executeQuery(id);int j=0;jbls=new JLabel100;while(rs.next()userId=rs.getString(1);System.out.println(userId+t);j+;jblsj=new JLabel(userId+,new ImageIcon(image/5.png),JLabel.LEFT);jblsj.setEnabled(true);if(jblsj.getText().equals(owner)jblsj.setEnabled(true);jblsj.addMouseListener(this);jphy2.add(jblsj); conn=DriverManager.getConnection(url, userName, password); conn.close();catch(SQLException e1)System.out.println(fails);e1.printStackTrace(); catch (ClassNotFoundException e1) / TODO Auto-generated catch blocke1.printStackTrace();/给jphy2,初始化50好友jphy3=new JPanel(new GridLayout(2,1);/把两个按钮加入到jphy3jphy3.add(jphy_jb2);jphy3.add(jphy_jb3);jsp1=new JScrollPane(jphy2) ;/对jphy1初始化jphy1.add(jphy_jb1,BorderLayout.NORTH);jphy1.add(jsp1,BorderLayout.CENTER);jphy1.add(jphy3,BorderLayout.SOUTH );c1=new CardLayout();this.setLayout(c1);this.add(jphy1,1);/在窗口显示自己的编号。this.setTitle(owerId);this.setSize(220,400);this.setVisible(true);public void actionPerformed(ActionEvent e) / 如果点击了陌生人就显示第二章卡片if(e.getSource()=jphy_jb2)c1.show(this.getContentPane(), 2);public void mouseClicked(MouseEvent e) / 相应顾客双击的事件,并得到好友
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!