河南工业大学
课程设 计
课程设计名称: ja a qq聊天系统
学生姓名 : x aoy
指导教 师: 王高平
课程设计时间: 2016.7.7
计科 专业课程设计任务书
说明:本表由指导教师填写,由教研室主任审核后下达给选题学生装订在设计(论文首页1需求分析
运用java语言实现一个qq聊天局域网系统主要功能实现信息的相互交流,整个程序分三个大模块第一个模块是服务器端的设计第二个模块是客户端的实现第三个模块是数据库连接的实现。主要实现一个客户端发送串字符信息,另一端客户端能接受(在一个局域网下 同时建立了一个数据库(my ql 用于注册用户,同时存储用户的信息以及找回密码要用到的密保问题答案。
2 概要设计
主要类:
Jqq 类:主要是登录窗口
Ce l类:按钮类
Fi dp s word.java:找回密码类
Loo :注册窗口
Lookpa swo d.java:查看密码窗口
Reg s er.java:注册账号类
J vaysql .jav 数据库类连接数据库。3运行环境软、硬件环境
i dow,6 位pc机,jv j a虚拟机)4 开发工具和编程语言
i s ,java
5详细设计
Server. java 实现一个小型的服务器)
ackage sever.n ipr jav io. ;import java.net.*
mport ava.util.*;pblic class Se r
boo ean tar d= fa se;
S e ve ocet s =null;
L s l e ts newrraList
n Sevr() .t t( ;
}
ubl c vo tar () try{
s = eS rverSocket(999) ;st a e d =true;
}catch (B ndxcept on ) {
Sys em.ou .print "端口使用中. . .);
Sytem out.printl ("请关掉相关程序并重新运行服务器! ; Sys em. x ()
} ctch IE x c e ptin e) {
e.printtacTrae )
}
try
hil st art e) {
So ke s = ss accet()
lien c=ne w lient(s ;
Syste o .print n "a l ent cnnecte !"); nw T re (c) start( ;
clien s ad (c ;
/ dis clse( ) ;
}
} c ch IOExceptio e {
.print ackTrace( ) ;
}f nlly{
tr {
ss clos );
catch (IE cp o e) {
/ TOD Aut-generatd atc bloc
e.prin St kT e( ) ;
}
class Client mplementsunnabl {
pr v e cet
privat D taI ut Stra m s n ul ;
privateat a O S read o s = l ;
ivateb lean bC nected= false;
public Cliet S ocket s)
this.s s;
t {
di =nw D a I ut Stre s.etIp uttrem ) ) os =nw D taOutputtram(s.getutputt am )
C n n td =true;
} catch (IExept on ) {
.printS kTrace( ) ;
}
}
pub ic oid snd String tr) {
tr {
d o s.write U T F(str)
}catc (IOExcept on e) {
c e nts e m oe his);
y s e m. u .r n ln("对方退出了我从Lit里面去掉了 ; // e rintStackTrace( ) ;
}
}
ubli vo d run( /线程体
tr {
w ile (bConnected {
tri = di .red U T F( ) ;
S yte m.o ut.pr ntln(tr);
f or in = 0; i< cli t s.s z e ; +) {
lient c cl nts.get(i
c.s e n d str);
}
}
} atch (O F E eption ) {
System.ot.println(" e t clsed!");
}catch (IOEceptio e)
.p tStackrac ;
} finlly {
ry{
if di s != ul )
is.close( ) ;
if (dos =nll
dos.close( ) ;
if (s = n ll) {
s.clos ( ;
= ull
cath (IOEcetin e1) {
1.pr nttakTra (
}
}
}
}
Jq 类:登录的窗口类package .xiaoy g co;imp ort ja .awt.Clor;ip tjava.awt Font;
mpor jaa.awt een .ActionEvnt;mpo t j a.awt.event Ac ioLitenr;m ort ja .awt event.ouseEvn ;impor jaa w .eent.ouseListen ipo tjav.ql Co neti impor va sl.PrparedState impor ja .q .Resu tSet imprt aa.sql.SQLEcept o ;impor java sql.S atment importj ax.sw ng.ImaeIcon
rt jaax w ng JButto impo t aax.swing.JF a;
ort javx.ing.JLabe ;impor java.si .P l;
prt java.si .JPassworFildimo t j .swig. Tex F eld;
publicc as Jqq xtend Frm ments Mo seL stener {privat stti final lng sria Versin UID 1 L;public st ic voi m in Str ng args[]
JqqF f e JqF );
pb ic tati JTxtField n a m e = n J Field(0)
JLabe neLa =ne J bel(号:") p licstaticJPasswrF eldnam =new JassworFiel 2);JLabelnmeLa =new Lbel();
Strig pat5 " c//.png";
// 背景图片
IageIo backrond =nw IaeIo (ath5 ;
ell b ut=n ec ell(b a c k gr o u n d);
F o nt nt =nw F o "S e ief") ;
trig h4 = "pi// . g ;
ImagIcon bckgro d4 = nw Imag cn(ath);c el bt=n e ellb a c kr d 4 );
String pt3 = pic /b.png
ImagIcon bacground =nw ImgeIcn(pa h3 cell t2= new cl (bckgroud3 ;
t ig path "pic//q. g"
Iage nbac ou =nw ImageIco (path2 ;
JLabel abl nw JLab ( grou 2) public Jqq () {
super("q测试);
t is setSize(0 334) ;ti . L o c a io (300, 200) ;this.setVisib e(tre);
St ing a h = "pic//qq.png";
// 背景图片
ImagIcon acground=ne magIco path) ;
/把背景图片显示在一个标签里面
JLael label=n Lbel(bacg und) ;
a b el.s et y o ut(u ;
//把标签的大小位置设置为图片刚好填充整个面板
lbel stBo ds(, 0,th s.gtWid h( ) t s.e eight() ) ;
//把内容窗格转化为JPanel 否则不能用方法setOpaqe )来使内容窗格透明JPa mageP n = (JPanl th g Contetan ()
igPanel.s Op qe( le);
//把背景图片添加到分层窗格的最底层作为背景
nameLb setont(fnt);naLab.s Fo oun lor.yellow) ;
a m a.se Fn (fn );
e L a.etF ore gro un (olo .ellw) ;
name ab.etBuds(160, 12 100 30) ;
t setBoun (36, 120, 72, 0
bt addActioLitener(newctionLis ener() {
O r e
ubl c voi ionP e ford ctioEvent e) {
rgiter =n e w e s r(
;
name.e Bounds 2 , 20, 10, 30) ;
n a mL s et B n (16, 60 10, 3);
am se Bo ns(250, 0 10 30)
b 2 .setBouns( 0, 160, 7, 0) ;
t.adActi L tene newctionListnr )
@ O v e rid
pul c o ac in form (Ac ionEvn ) { ew fidpssword( ;
});
// /nam.setColmns 20) ;
lae 2 setBounds 65, 120 ;
ut se Bounds(185, 2 0 47, 0) ;
u dMouseListener(this);lae . (am Lab) ;
lbel ad (bt ;
labl.dd(b 2) la l.add na);lael ad(am La);
abl add( abel2 ;labe .ad na m ;