山寨版QQ

登录界面:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class CopyQQ extends JFrame{
	Container c;
	JPanel p;
	JLabel lab=new JLabel("欢迎使用javaQQ");
	JLabel labserver=new JLabel("服务器:");
	JLabel labuser=new JLabel("用户名:");
	JLabel labpassword=new JLabel("密码:");
	JTextField tetserver=new JTextField(20);
	JTextField tetuser=new JTextField(10);
	JTextField tetpassword=new JTextField(15);
	JButton btnlog=new JButton("登录");
	JButton btncancel=new JButton("取消");
	JButton btnreg=new JButton("注册");

	void init(){
		c=this.getContentPane();
		c.setLayout(new BorderLayout());
		p=new JPanel();p.setLayout(null);
		p.add(lab);
		p.add(labserver);
		p.add(labuser);
		p.add(labpassword);
		p.add(tetserver);
		p.add(tetuser);
		p.add(tetpassword);
		p.add(btnlog);
		p.add(btncancel);
		p.add(btnreg);
		btnreg.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				Register reg=new Register();
				reg.setVisible(true);
			}
		});
		btnlog.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				String tmpserver=tetserver.getText();
				String tmpuser=tetuser.getText();
				String tmppassword=tetpassword.getText();
				ResultSet rs;
				JDBC jd=new JDBC();
				Connection cn=null;
				PreparedStatement ps=null;
				try {
					cn=jd.getConnection();
					String sqlselect="select * from information where LogName=? and Password=?";
					ps=cn.prepareStatement(sqlselect);
					ps.setString(1,tmpuser);
					ps.setString(2,tmppassword);
					rs=ps.executeQuery();
					String qq="";
					while(rs.next()){
						qq=rs.getString("LogName");
					}
                     if(qq.equals("")){
                    	 JOptionPane.showMessageDialog(null, "用户名或密码错误");
                     }else{
                    	 JOptionPane.showMessageDialog(null, "登录成功");
                    	 Main ma=new Main(qq);
                    	 ma.setVisible(true);
                    	 CopyQQ.this.dispose();
                    	// System.exit(0);
                     }
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
			}
		});
		btncancel.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				System.exit(0);
			}
		});
		lab.setBounds(80,0,200,30);
		labserver.setBounds(60,30,50,20);
		tetserver.setBounds(110,30,100,20);
		labuser.setBounds(60,60,50,20);
		tetuser.setBounds(110,60,100,20);
		labpassword.setBounds(60,90,50,20);
		tetpassword.setBounds(110,90,100,20);
		btnlog.setBounds(30,120,70,30);
		btncancel.setBounds(110,120,70,30);
		btnreg.setBounds(190,120,70,30);
		c.add(p,BorderLayout.CENTER);
		this.setSize(300,200);
		this.setVisible(true);
	}
	public CopyQQ(String s){
		super(s);
		init();
	}
	public static void main(String[] args) {
		CopyQQ qq=new CopyQQ("用户登录");
	}

}

注册界面:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Register extends JFrame{
	JLabel jllog;
	JLabel jlname;
	JLabel jlpassword;
	JLabel jlsurepassword;
	JLabel jlip;
	JLabel jlport;
	JTextField tetlog;
	JTextField tetname;
	JTextField tetpassword;
	JTextField tetsurepassword;
	JTextField tetip;
	JTextField tetport;
	JButton btnreg;
	JPanel p;
	Container c;
	public void init(){
		c=this.getContentPane();c.setLayout(new BorderLayout());
		p=new JPanel();p.setLayout(null);
		btnreg=new JButton("注册");
		jllog=new JLabel("登录名:");jlname=new JLabel("姓名:");jlpassword=new JLabel("密码:");
		jlsurepassword=new JLabel("确认密码:");jlip=new JLabel("IP:");jlport=new JLabel("端口号:");
		tetlog=new JTextField(20);tetname=new JTextField(20);tetip=new JTextField(20);
		tetpassword=new JTextField(20);tetsurepassword=new JTextField(20);tetport=new JTextField(20);
		p.add(jllog);p.add(jlname);p.add(jlpassword);p.add(jlsurepassword);p.add(jlip);p.add(jlport);
		p.add(tetlog);p.add(tetname);p.add(tetpassword);p.add(tetsurepassword);p.add(tetip);p.add(tetport);
		p.add(btnreg);
		jllog.setBounds(0,0,130,20);tetlog.setBounds(150,0,120,20);
		jlname.setBounds(0,30,130,20);tetname.setBounds(150,30,120,20);
		jlpassword.setBounds(0,60,130,20);tetpassword.setBounds(150,60,120,20);
		jlsurepassword.setBounds(0,90,130,20);tetsurepassword.setBounds(150,90,120,20);
		jlip.setBounds(0,120,130,20);tetip.setBounds(150,120,120,20);
		jlport.setBounds(0,150,130,20);tetport.setBounds(150,150,120,20);
		btnreg.setBounds(0,180,150,20);
		btnreg.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				String strlog=tetlog.getText();
				String strname=tetname.getText();
				String strpassword=tetpassword.getText();
				String strsurepassword=tetsurepassword.getText();
				String strip=tetip.getText();
				String strport=tetport.getText();
				if(strpassword.equals(strsurepassword)&&!strpassword.equals(null)){
					JDBC jd=new JDBC();
					Connection conn = null;
					PreparedStatement ps = null;
					try {
						conn=jd.getConnection();
						String sqlinsert="insert into information(LogName,Name,Password,Ip,Port) values(?,?,?,?,?)";
						ps = conn.prepareStatement(sqlinsert);
						ps.setString(1,strlog);
						ps.setString(2,strname);
						ps.setString(3,strpassword);
						ps.setString(4,strip);
						ps.setString(5,strport);
						ps.executeUpdate();
						System.exit(0);
					} catch (SQLException e2) {
						e2.printStackTrace();
					}
					JOptionPane.showMessageDialog(null, "注册成功");
					System.exit(0);
				}
				else{
					JOptionPane.showMessageDialog(null, "两次密码不一致");
				}
			}
		});
		c.add(p,BorderLayout.CENTER);
		this.setSize(300,250);
		this.setVisible(true);
	}
	public Register(){
		super("新用户注册");
		init();
	}
	public static void main(String[] args) {
		Register reg=new Register();
	}

}

主界面:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Main extends JFrame{
	Container c;
	JLabel jltop;
	JLabel jlbelow;
	JLabel user1;
	JLabel user2;
	ImageIcon image1;
	ImageIcon image2;
	JPanel p=new JPanel();
	String myQQ="";
	void init(){
		c=this.getContentPane();
		c.setLayout(new BorderLayout());
		p.setLayout(null);
		jltop=new JLabel("                             好友列表");
		jlbelow=new JLabel("                          欢迎您,李四");
		image1=new ImageIcon("F:/程序/java程序/高级案例与分析/image/qq1.png");
		image2=new ImageIcon("F:/程序/java程序/高级案例与分析/image/qq2.png");
		user1=new JLabel("张三",image1,JLabel.LEFT);
		user2=new JLabel("王五",image2,JLabel.LEFT);
		user1.setBounds(0,20,70,20);
		user2.setBounds(0,50,70,20);
		c.add(jltop,BorderLayout.NORTH);
		p.add(user1);
		p.add(user2);
		c.add(p);
		c.add(jlbelow,BorderLayout.SOUTH);
		JDBC jd=new JDBC();
		Connection cn=null;
		PreparedStatement ps=null;
		ResultSet rs;
		try {
			cn=jd.getConnection();
			String sqlSelect="select * from information where LogName=?";
			ps=cn.prepareStatement(sqlSelect);
			ps.setString(1,myQQ);
			rs=ps.executeQuery();
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		user1.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				Talk t1=new Talk(myQQ,3000,5000);
				Talk t2=new Talk("user1",5000,3000);
			}
		});
		user2.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				Talk t1=new Talk(myQQ,3000,5000);
				Talk t2=new Talk("user2",5000,3000);
			}
		});
		this.setSize(250,600);
		this.setVisible(true);
	}
	public Main(String qq){
		super(qq);
		myQQ=qq;
		init();
	}
	public static void main(String[] args) {
		Main ma=new Main("欢迎使用QQ聊天");
	}

}

聊天界面:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Talk extends JFrame{
	JLabel la=new JLabel("请输入");
	JTextField tfd=new JTextField(20);
	JButton but=new JButton("发送");
	JPanel p=new JPanel();
	JTextArea jta=new JTextArea(10,20);
	Container c;
	DatagramSocket ds;
	DatagramReceive dc;
	int localPost=3000;
	int remotePost=5000;
	boolean flag=true;
	public void init(){
		c=this.getContentPane();
		c.setLayout(new BorderLayout());
		p.setLayout(new FlowLayout());
		p.add(la);p.add(tfd);p.add(but);
		c.add(p,BorderLayout.NORTH);
		c.add(jta,BorderLayout.CENTER);
		but.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				String temp=tfd.getText();
				jta.append("\n我说:"+temp);
				byte[] buf=temp.getBytes();
				try {
					DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("localhost"),remotePost);
					try {
						ds.send(dp);
					} catch (IOException e1) {
						e1.printStackTrace();
					}
					if(temp.trim().equals("bye")){
						flag=false;
						//dc.close();
					}
				} catch (UnknownHostException e1) {
					e1.printStackTrace();
				}
			}
		});
	this.setSize(500,500);
	this.setVisible(true);
	}
	public Talk(String name,int localPost,int remotePost){
		super(name);
		this.localPost=localPost;
		this.remotePost=remotePost;
		init();
		try {
			ds=new DatagramSocket(localPost);
			dc=new DatagramReceive(name,ds,jta);
			dc.start();
		} catch (SocketException e) {
			System.out.println("DatagramSocket创建失败");
		}

	}
	public static void main(String[] args) {
	}

}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

import javax.swing.JTextArea;

public class DatagramReceive extends Thread{
	String name;
	DatagramSocket ds;
	JTextArea jta;
	boolean flag=true;
	public DatagramReceive(String name,DatagramSocket ds,JTextArea jta){
		this.name=name;
		this.ds=ds;
		this.jta=jta;
	}
		public void run(){
			while(flag){
				byte[] buf=new byte[1024];
				DatagramPacket dp=new DatagramPacket(buf,buf.length);
				try {
					ds.receive(dp);
					String temp=new String(buf,0,dp.getLength());
					jta.append("\n对方说:"+temp);
					if(temp.trim().equals("bye")){
						flag=false;
						ds.close();
					}
				} catch (IOException e) {
					System.out.println(name+"接受失败");
				}

			}
		}

}

连接数据库部分:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBC {
	Statement st;
	String url="jdbc:sqlserver://localhost:1433;DatabaseName=QQ";
	String user="sa";
	String password="a123456";
	static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
	Connection conn;
	static {
		try {
			Class.forName(driverName);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	public  Connection getConnection() throws SQLException{
		conn=DriverManager.getConnection(url,user,password);
		return conn;
	}
	public static void main(String[] args) throws ClassNotFoundException,SQLException{
		JDBC jd=new JDBC();
	}

}

山寨版QQ

时间: 2024-10-28 13:07:54

山寨版QQ的相关文章

山寨版qq源码+素材

原文:山寨版qq源码+素材 源代码下载地址:http://www.zuidaima.com/share/1550463686642688.htm 山寨版qq源码+素材,java图形化界面操作,客户端,和服务端都有.里面含注释.用的是myeclipse6.5编写的工程,导入可以直接运行. 但是还有很多功能未实现.该项目中,未使用到db,代码还不完善. 项目截图

山寨版qq音乐网页播放器实现

http://www.cnblogs.com/Xer-Lee/archive/2012/05/18/2508141.html 从上  地址中 我了解了 怎么获取qq 音乐数据 ,我这里做一下补充. 1: 获取 音乐歌词 GET http://music.qq.com/miniportal/static/lyric/{songid%100}/{songid}.xml   替换掉 {songid} 就可以得到 XML 格式的歌词. 2:.wma 音乐文件在网页中支持性不好(和不支持差不多) ,按照

java资料汇总

Java经典编程实例源码及视频专题汇总 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称.在这里整理了一些相关的资源链接,希望对大家有帮助! 资源名称 资源地址 下载量 好评率 Java经典编程实例源码 http://down.51cto.com/zt/27 41408 Java 图书馆管理系统经典合集 http://down.51

因为我不知道凌雪和

http://v.qq.com/page/3/x/v/n0414wav4bo.htmlhttp://v.qq.com/page/3/x/v/l0414gzcitc.htmlhttp://v.qq.com/page/3/x/v/q0414eqqfme.htmlhttp://v.qq.com/page/3/x/v/i0414y7kadc.htmlhttp://v.qq.com/page/3/x/v/f0414pqrc3i.htmlhttp://v.qq.com/page/3/x/v/h0414vtg

QQ connect client request's parameters are invalid, invalid openid 问题的解决

很多人的这个问题是POST的时候发生,我的也恰好在POST的时候发生.后来我发现可能是因为QQ的这个后端是采用类PHP的语言开发,在动态语言的获取参数时POST参数和GET参数是可以分开读取的,也就是说如果你把openid.access_token这些数据放在URL GET参数里面,采用$_POST这样的接口就无法读取到openid参数,所以导致POST数据时报错说Invalid openid,当然我的采用的开发语言是官方不支持的,所以SDK是个山寨版,所以我对SDK做了自己的修改:把权限验证数

QQ远程协助不能控制win7系统的解决方法

经常碰到一个人说,用QQ远程WIN7等操作系统电脑时,总是点了没有反应,不知道是怎么一回事?其实,这主要是WIN7操作系统在安全管理性方面提高了,要进行设置一下,才可以 当对方使用win7系统的时候,为什么有些时候QQ远程协助控制不了win7的电脑,经常遇到这样的情况,远程连接上了,有些项可以点,有些项点一下就卡死了,点不动了,必须我们经常要用到磁盘管理,当我们点到这个项目的时候对方的电脑画面就卡住了再点鼠标也没有任何反应,这是怎么回事? 经过一番研究,我们发现在控制面板用户帐户里面有一个项目需

从微信官方获取微信公众号名片:http://open.weixin.qq.com/qr/code/?username=haihongruanjian

从微信官方获取微信公众号名片:http://open.weixin.qq.com/qr/code/?username=haihongruanjian 个人的号,不知道怎么获取.

苹果笔记本只能上QQ,微信,任何浏览器不能打开网页的问题。

我的笔记本一共遇到过两次这种情况.第一次是浏览器输入域名打不开网页,而输入ip地址可以打开.这就是DNS服务器的问题,解决方法很简单.在系统偏好设置里面找到网络,然后,点击正在连接的网络的高级选项,选择DNS选项,在DNS里面添加一个114.114.114.114,并且置顶.114.114.114.114是比较稳定谷歌DNS服务器,你也可以添加别的VPN服务器,比如阿里巴巴,百度的. 第二次是我用vpnFQ,FQ之后关闭vpn软件,就不能上网了,可以上qq.这回浏览器用ip地址都打不开网页,说明

QQ群认证 人数再度扩容 权限随之升级

群排名,得资源得天;之于排名,群容量有杠杆意义. 而今,流量分散,打法完全无法集中,全平台战略,越发凸显.QQ群,已是必争之地. 去年,Q群霸屏春天,一切那么顺其自然;而今,除了拼资源,还是拼资源.除去小号资源,于等级之外,认证一出,必须拿下. 认证QQ群有什么用? 为毛要认证,就凭你随便呱唧几句?说得这么流弊,认证QQ群具体有哪些用处? 1.认证标识,犹如QQ空间的认证,一个加V的标识,凸显权威性官方性. 2.在群检索中,搜索权重会自带光环(高高的),平台会予以很好的排名,这个是申请者核心诉求