版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、黔南民族師范學院 計算機科學系計算機網(wǎng)絡課程設計報告課題名稱: 簡單聊天程序 姓 名: 學 號: 專業(yè)班級: 系 (院): 計算機科學系 指導老師: 設計時間: 設計地點: 1、 實驗目的和要求1. 實驗目的 a。掌握網(wǎng)絡編程的知識和技能。 b。熟悉網(wǎng)絡軟件的開發(fā)過程,鍛煉解決實際問題的能力。2. 實驗要求a。支持多人聊天,聊天內(nèi)容可以僅僅支持文本信息。b??蛻舳顺绦蚓哂袌D形化用戶界面。2、 實驗環(huán)境a。編程軟件:eclipseb。數(shù)據(jù)庫軟件:mysql5.0;c。工具:jdk6.0;d。硬件環(huán)境:win7系統(tǒng),intel core2 duo3、 程序的邏輯框圖 4、 程序的源代碼login.
2、javapackage chat4;import java.awt.borderlayout;import java.awt.button;import java.awt.dimension;import java.awt.frame;import java.awt.label;import java.awt.panel;import java.awt.toolkit;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import java.awt.event.windowadapter;import jav
3、a.awt.event.windowevent;import java.sql.connection;import java.sql.drivermanager;import java.sql.resultset;import java.sql.statement;import javax.swing.joptionpane;import javax.swing.jpasswordfield;import javax.swing.jtextfield;public class login private string name;frame f;label l_name, l_password;
4、jtextfield jtf_name;jpasswordfield jpf_password;button bt_ok, bt_cancle, bt_regist;panel p_top, p_center, p_bottom;toolkit toolkit;dimension screensize, framesize;connection connection;statement statement;resultset resultset;public void initframe() /初始化窗體f = new frame(login);l_name = new label(名字);l
5、_password = new label(密碼);jtf_name = new jtextfield(20);jpf_password = new jpasswordfield(20);bt_ok = new button(登錄);bt_ok.addmouselistener(new mouseadapter() overridepublic void mouseclicked(mouseevent e) /判斷你輸入的用戶名和密碼是否正確/如果正確,就進入聊天界面if (verify(jtf_name.gettext().trim(), jpf_password.gettext().tri
6、m() f.setvisible(false);chatutil chatutil=new chatutil(); else /否則,彈出對話框joptionpane.showmessagedialog(f, 你的輸入有誤,請重新輸入!););bt_regist = new button(注冊);bt_regist.addmouselistener(new mouseadapter() /點擊之后進入注冊頁面overridepublic void mouseclicked(mouseevent e) f.setvisible(false);new regist(););bt_cancle =
7、new button(重置);bt_cancle.addmouselistener(new mouseadapter() /點擊重置,使用戶名框和密碼框為空overridepublic void mouseclicked(mouseevent e) reset(););p_top = new panel();p_top.add(l_name);p_top.add(jtf_name);p_center = new panel();p_center.add(l_password);p_center.add(jpf_password);p_bottom = new panel();p_bottom.
8、add(bt_ok);p_bottom.add(bt_regist);p_bottom.add(bt_cancle);f.add(p_top, borderlayout.north);f.add(p_center, borderlayout.center);f.add(p_bottom, borderlayout.south);f.pack();f.setresizable(false);/* * 以下 的為窗體位置 的布局,使窗體置于屏幕的正中間 */toolkit = toolkit.getdefaulttoolkit();screensize = toolkit.getscreensiz
9、e();framesize = f.getsize();int height = screensize.height - framesize.height;int width = screensize.width - framesize.width;f.setlocation(width / 2, height / 2);f.setvisible(true);f.addwindowlistener(new windowadapter() /點擊窗體右上角的“x”時,退出應用程序overridepublic void windowclosing(windowevent e) system.exi
10、t(0););public login() initframe();public static void main(string args) new login();public void reset() /設置用戶名文本框和密碼文本框為空jtf_name.settext();jpf_password.settext();public boolean verify(string name, string password) /驗證用戶的用戶名和密碼try class.forname(com.mysql.jdbc.driver);connection = drivermanager.getcon
11、nection(jdbc:mysql:/:3306/chat, root, 19890815);statement = connection.createstatement();resultset = statement.executequery(select * from usertable where name= + name+ and password= + password + and state=+ n);if (resultset.next() return true; else return false; catch (exception e) e.prints
12、tacktrace();return false;public void setname(string name) = name;public string getname() return name;regist.javaimport java.awt.borderlayout;import java.awt.button;import java.awt.dimension;import java.awt.frame;import java.awt.label;import java.awt.panel;import java.awt.textfield;import j
13、ava.awt.toolkit;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import java.awt.event.windowadapter;import java.awt.event.windowevent;import java.sql.connection;import java.sql.drivermanager;import java.sql.resultset;import java.sql.sqlexception;import java.sql.statement;import j
14、avax.swing.joptionpane;public class regist frame f;label l_name, l_password, l_passwordagain;textfield tf_name, tf_password, tf_passwordagain;button bt_ok, bt_cancle;panel p_name, p_password, p_passwordagain, p_bt, p_top;toolkit toolkit;dimension screensize, framesize;public void init() /初始化窗體f = ne
15、w frame(regist);l_name = new label(輸入名字:);l_password = new label(輸入密碼:);l_passwordagain = new label(確認密碼:);tf_name = new textfield(20);tf_password = new textfield(20);tf_passwordagain = new textfield(20);bt_ok = new button(注冊);bt_ok.addmouselistener(new mouseadapter() overridepublic void mouseclicke
16、d(mouseevent e) if (tf_password.gettext().trim().equals(/判斷密碼框和確認密碼框 的密碼是否一樣tf_passwordagain.gettext().trim() /一致時if (regist() /進行注冊成功f.setvisible(false);/隱藏注冊頁面new login().f.setvisible(true);/顯示登錄頁面 else /密碼框和確認密碼框 的密碼不一致時,彈出對話框joptionpane.showmessagedialog(f, 兩次密碼輸入有誤,請重試!););bt_cancle = new butto
17、n(取消);bt_cancle.addmouselistener(new mouseadapter() /點擊取消按鈕時overridepublic void mouseclicked(mouseevent e) close();/隱藏注冊窗體new login().f.setvisible(true);/顯示登錄窗體);p_name = new panel();p_name.add(l_name);p_name.add(tf_name);p_password = new panel();p_password.add(l_password);p_password.add(tf_password
18、);p_passwordagain = new panel();p_passwordagain.add(l_passwordagain);p_passwordagain.add(tf_passwordagain);p_top = new panel();p_top.setlayout(new borderlayout();p_top.add(p_name, borderlayout.north);p_top.add(p_password, borderlayout.center);p_top.add(p_passwordagain, borderlayout.south);p_bt = new
19、 panel();p_bt.add(bt_ok);p_bt.add(bt_cancle);f.add(p_top, borderlayout.north);f.add(p_bt, borderlayout.south);/* *以下為使窗體位于屏幕的中間 */toolkit = toolkit.getdefaulttoolkit();screensize = toolkit.getscreensize();int heightscreen = screensize.height;int widthscreen = screensize.width;f.pack();framesize = f.
20、getsize();int heightframe = framesize.height;int widthframe = framesize.width;f.setlocation(widthscreen - widthframe) / 2,(heightscreen - heightframe) / 2);f.setresizable(false);f.setvisible(true);f.addwindowlistener(new windowadapter() /點擊右上角的“x”時,隱藏注冊窗體overridepublic void windowclosing(windowevent
21、 e) close(););public void close() /隱藏注冊窗體f.setvisible(false);public boolean regist() /寫數(shù)據(jù)的操作string name = tf_name.gettext().trim();string password = tf_password.gettext().trim();connection connection = null;statement statement = null;resultset resultset = null;try class.forname(com.mysql.jdbc.driver
22、);connection = drivermanager.getconnection(jdbc:mysql:/:3306/chat, root, 19890815);statement = connection.createstatement();/查旭該用戶是否存在resultset = statement.executequery(select * from usertable where name= + name+ );if (resultset.next() /存在時,彈出相應的對話框joptionpane.showmessagedialog(f, name + 已經(jīng)
23、存在); else /不出在且不為空時寫入數(shù)據(jù)庫if (!.equals(name) & !.equals(password) int i = statement.executeupdate(insert into usertable(name,password) values(+ name + , + password + );if (i 0) joptionpane.showmessagedialog(f, 注冊成功!);return true; else joptionpane.showmessagedialog(f, 注冊失??!); else /用戶名或密碼為空時,彈出提示對話框jop
24、tionpane.showmessagedialog(f, 用戶名或密碼不能為空); catch (exception e) e.printstacktrace(); finally try resultset.close();statement.close();connection.close(); catch (sqlexception e) e.printstacktrace();return false;public regist() init();chatutil.javaimport java.awt.borderlayout;import java.awt.button;impo
25、rt java.awt.desktop;import java.awt.dimension;import java.awt.frame;import java.awt.label;import java.awt.panel;import java.awt.textarea;import java.awt.textfield;import java.awt.toolkit;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.mouseadapter;import
26、java.awt.event.mouseevent;import java.awt.event.windowadapter;import java.awt.event.windowevent;import java.io.bufferedreader;import java.io.file;import java.io.ioexception;import java.io.inputstreamreader;import java.io.printwriter;import .socket;import .unknownhostexception;import java.text.simple
27、dateformat;import java.util.calendar;import java.util.date;public class chatutil frame f;label l_ip,l_name;textfield tf_ip;textfield tf_name;textfield tf_send;button bt_record,bt_exit,bt_send;textarea ta_msg;panel p_ip,p_name,p_bt,p_top,p_center,p_bottom;toolkit toolkit;dimension screensize,framesiz
28、e;bufferedreader br; printwriter pw; public void initutil()/初始化窗體f=new frame(chat);l_ip=new label(請輸入服務器的ip:);l_name=new label(請輸入你的名字:);tf_ip=new textfield(15);tf_ip.settext();tf_ip.seteditable(false);tf_name=new textfield(15);tf_send=new textfield(50);tf_send.addactionlistener(new actionl
29、istener()/當在按“enter”鍵時,發(fā)送信息overridepublic void actionperformed(actionevent e) send(););bt_record=new button(歷史記錄);bt_record.addmouselistener(new mouseadapter()/查看歷史記錄overridepublic void mouseclicked(mouseevent e) browse(););bt_exit=new button(退出);bt_exit.addmouselistener(new mouseadapter()/點擊退出按鈕時,退
30、出程序overridepublic void mouseclicked(mouseevent e) exit(););bt_send=new button(發(fā)送);bt_send.addmouselistener(new mouseadapter()/點擊發(fā)送按鈕時,發(fā)送信息overridepublic void mouseclicked(mouseevent e) send(););ta_msg=new textarea();ta_msg.seteditable(false);/聊天信息的顯示區(qū)p_ip=new panel();p_ip.add(l_ip);p_ip.add(tf_ip);p
31、_name=new panel();p_name.add(l_name);p_name.add(tf_name);p_bt=new panel();p_bt.add(bt_record);p_bt.add(bt_exit);p_top=new panel();p_top.setlayout(new borderlayout();p_top.add(p_ip,borderlayout.north);p_top.add(p_name,borderlayout.center);p_top.add(p_bt,borderlayout.south);p_center=new panel();p_cent
32、er.add(ta_msg);p_bottom=new panel();p_bottom.add(tf_send);p_bottom.add(bt_send);f.add(p_top,borderlayout.north);f.add(p_center,borderlayout.center);f.add(p_bottom,borderlayout.south);f.pack();f.setresizable(false);/* * 以下是使窗體置于屏幕的中間 */toolkit=toolkit.getdefaulttoolkit();screensize=toolkit.getscreens
33、ize();framesize=f.getsize();int height=screensize.height-framesize.height;int width=screensize.width-framesize.width;f.setlocation(width/2,height/2);f.setvisible(true);f.addwindowlistener(new windowadapter()/點擊右上角的“x”時,退出程序overridepublic void windowclosing(windowevent e) exit();); private void initn
34、et()/初始網(wǎng)絡的鏈接 try socket s = new socket(,8186);/以本機作為服務器進行鏈接 pw = new printwriter(s.getoutputstream(); br = new bufferedreader(new inputstreamreader(s.getinputstream(); catch (unknownhostexception e) e.printstacktrace(); catch (ioexception e) e.printstacktrace(); private void send()/把聊天信息發(fā)送出
35、去string name=tf_name.gettext();string text=tf_send.gettext();string time=gettime();/獲取當前的時間tf_send.settext(); pw.println(name+ +time+:+text); pw.flush();private void exit()/窗體退出system.exit(0);private string gettime()/獲取當前的 時間calendar calendar=calendar.getinstance();date date=calendar.gettime();simpl
36、edateformat sdf=new simpledateformat(yyyy-mm-dd hh:mm:ss);/設置日期的格式return sdf.format(date);private void browse()/打開歷史記錄desktop desktop=desktop.getdesktop();file file=new file(temp.txt);try desktop.edit(file); catch (ioexception e) e.printstacktrace(); public void receive()/獲取服務器發(fā)來的聊天信息 try while(true
37、) string str = br.readline(); if(str=null) return ; ta_msg.append(str+n); catch (ioexception e) e.printstacktrace(); chatutil() this.initutil(); this.initnet(); public static void main(string args) chatutil c = new chatutil(); c.receive(); server.javaimport .*;import java.io.*;import java.util.*;pub
38、lic class server public static void main(string args) final int port = 8186;try system.out.println(wait.);serversocket ss = new serversocket(port);/監(jiān)聽8186端口arraylist sockets = new arraylist();/用來存儲連接當服務器的客戶端的socketwhile (true) socket s = ss.accept();/客戶端和服務器端建立連接system.out.println(connected.);sockets.add(s);thread t1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)魚技巧與知識培訓課件
- 2025年度海洋動物運輸與供應鏈管理合同3篇
- 綠森鋼化中空玻璃遷擴建項目可行性研究報告模板-立項拿地
- 全國清華版信息技術(shù)小學四年級下冊新授課 第4課 獨特景觀-在幻燈片中插入文本框 說課稿
- Unit7 Grammar Focus 說課稿 2024-2025學年人教版英語七年級上冊
- 貴州省安順市(2024年-2025年小學六年級語文)統(tǒng)編版競賽題(下學期)試卷及答案
- 安徽省合肥市新站區(qū)2024-2025學年九年級上學期期末化學試卷(含答案)
- 二零二五年度周轉(zhuǎn)材料租賃與施工現(xiàn)場安全生產(chǎn)合同3篇
- 陜西省商洛市(2024年-2025年小學六年級語文)部編版小升初真題(上學期)試卷及答案
- 貴州黔南經(jīng)濟學院《手繪表現(xiàn)技法景觀》2023-2024學年第一學期期末試卷
- 洛欒高速公路薄壁空心墩施工方案爬模施工
- 事業(yè)單位公開招聘工作人員政審表
- GB/T 35199-2017土方機械輪胎式裝載機技術(shù)條件
- GB/T 28591-2012風力等級
- 思博安根測儀熱凝牙膠尖-說明書
- 數(shù)字信號處理(課件)
- 出院小結(jié)模板
- HITACHI (日立)存儲操作說明書
- (新版教材)蘇教版二年級下冊科學全冊教案(教學設計)
- 61850基礎技術(shù)介紹0001
- 電鏡基本知識培訓
評論
0/150
提交評論