版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、java程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告華 北 科 技 學(xué) 院課程設(shè)計(jì)說明書班級: 信息與計(jì)算科學(xué)b091 學(xué)號(hào): 姓名: 設(shè)計(jì)題目: 簡易聊天室系統(tǒng) 設(shè)計(jì)時(shí)間: 2011.12.26 至 2011.12.30 指導(dǎo)教師: 評 語:_ _評閱成績: 評閱教師: 目錄1 引 言11.1課程設(shè)計(jì)選題11.2課程設(shè)計(jì)的目的11.3本選題的設(shè)計(jì)背景12.1 功能需求12.2 系統(tǒng)的開發(fā)運(yùn)行環(huán)境22 總體設(shè)計(jì)23.1 系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)23 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)34.1 登錄模塊34.2 客戶端注冊界面模塊54.3 客戶端聊天模塊84.4 服務(wù)器端模塊104 小結(jié)和展望13參 考 文 獻(xiàn)14附 錄15使用說明書15源程序清
2、單18-52-1 引 言1.1課程設(shè)計(jì)選題簡易聊天室系統(tǒng)1.2課程設(shè)計(jì)的目的使學(xué)生鞏固和加深以java 語言為基礎(chǔ)的面向?qū)ο缶幊碳夹g(shù)理論知識(shí)的理解,提高實(shí)際動(dòng)手編程能力的培養(yǎng),掌握以java為核心的應(yīng)用軟件開發(fā)方案,達(dá)到能獨(dú)立閱讀、編制和調(diào)試一定規(guī)模的java程序的水平。1.3本選題的設(shè)計(jì)背景聊天是是網(wǎng)絡(luò)中廣泛應(yīng)用的服務(wù)之一,特別是現(xiàn)在信息社會(huì)對聊天的依賴也越累越大,我們品是在生活中很多人都在用的qq就是一種很好的聊天工具,它不僅只是聊天那么簡單,其它的功能也非常強(qiáng)大?;趈ava語言在網(wǎng)絡(luò)編程中的廣泛應(yīng)用與我們基本每時(shí)每刻都在接觸的聊天系統(tǒng)。我選擇嘗試對一簡單的聊天系統(tǒng)進(jìn)行開發(fā)。對本聊天系統(tǒng)
3、開發(fā)的意義:網(wǎng)絡(luò)聊天系統(tǒng)交流是系統(tǒng)的關(guān)鍵目的所在,能讓我們在簡單的語句中對復(fù)雜社會(huì)的了解;交流的過程中使得人與人之間距離徹底拉近,就像面對面的交談彼此之間沒有界限,沒有差別,只有心與心的共振。它沒有壓抑,只有爭論,就是心靈之間的一種平臺(tái)。也是另一種交友的一種重要方式。缺少它你會(huì)感覺沒什么,但是你一旦有了它你會(huì)發(fā)現(xiàn)它是那么的重要。需求分析在信息社中,信息是第一手資料,人們聊天也是信息的傳播。曾經(jīng)的會(huì)議及面談已不再發(fā)揮主宰作用了,隨著各種聊天工具的上市,大家都對聊天產(chǎn)生濃厚的興趣,聊天系統(tǒng)的存在也有了很大價(jià)值。2.1 功能需求用戶角度考察系統(tǒng)應(yīng)具有哪些功能及非功能性需求。能實(shí)現(xiàn)用戶注冊、用戶的登錄
4、、各客戶端能連接起來,服務(wù)器能與客戶端相連實(shí)現(xiàn)用戶之間信息的發(fā)送與共享。2.2 系統(tǒng)的開發(fā)運(yùn)行環(huán)境本系統(tǒng)開發(fā)平臺(tái): java 本系統(tǒng)集成開發(fā)環(huán)境:myeclipse本系統(tǒng)運(yùn)行環(huán)境: windows 7 2 總體設(shè)計(jì)3.1 系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)聊天系統(tǒng)客戶端服務(wù)器用戶登錄用戶注冊建立連接監(jiān)聽客戶用戶數(shù)據(jù)操作聊天交互3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1 登錄模塊1.功能設(shè)計(jì)(1)主要實(shí)現(xiàn)用戶的登錄與注冊。2.界面設(shè)計(jì)圖1 登錄窗口3模塊主要算法(1)事件的處理方法public void actionperformed(actionevent e) object source = e.getsource();/確定
5、按鈕 if(source = btnok) btnokclick();/取消按鈕if(source = btncancle) btncancleclick();/“注冊”按鈕if(source = btnregist) btnregistclick();(2)單擊btnok按鈕處理方法private void btnokclick() string username = txtname.gettext();string userpwd = new string(txtpwd.getpassword();if(username.equals() joptionpane.showmessagedi
6、alog(btnok,“用戶名”不能為空,提示,joptionpane.warning_message);return;if(userpwd.equals() joptionpane.showmessagedialog(btnok,“密碼”不能為空,提示,joptionpane.warning_message);return;if (userpwd.equals(haiersoft) /默認(rèn)密碼“haiersoft”/驗(yàn)證通過,隱藏登錄窗口,顯示聊天主窗口this.setvisible(false);/frmmain frmmain = new frmmain();jframe frmmain
7、 = rongqi.getfrm(frmmain);if (frmmain = null) frmmain = new frmmain ();rongqi.putfrm(frmmain, frmmain);/frmmain frmmain = new frmmain();frmmain.setvisible(true); else joptionpane.showmessagedialog(btnok,錯(cuò)誤的用戶名或密碼,提示,joptionpane.warning_message);4調(diào)試與測試 調(diào)試過程當(dāng)中,遇到密碼文本框設(shè)計(jì)沒有和實(shí)際設(shè)計(jì)符合,最后通過同學(xué)的一起解決了這個(gè)問題;在處理“取
8、消”的事件時(shí)出現(xiàn)一點(diǎn)小錯(cuò)誤,經(jīng)過反復(fù)調(diào)試及對程序的時(shí)間分析發(fā)現(xiàn)將“取消”這個(gè)事件的處理錯(cuò)寫為“確定”按鈕。4.2 客戶端注冊界面模塊1.功能設(shè)計(jì)(1)有用戶的用戶名、昵稱、密碼、性別和頭像的選擇,用這些信息來實(shí)現(xiàn)用戶的注冊。2.界面設(shè)計(jì)圖2 注冊窗口3模塊主要算法 (1)創(chuàng)建一個(gè)頭像柵格布局指定的行數(shù)和列中。所有的部件都享有同等的布局的尺寸。jpanel pimg = new jpanel(new gridlayout(2,5);buttongroup bgimg = new buttongroup();for (int i = 0; i ckbimage.length; i+) ckbima
9、gei = new jradiobutton(string.valueof(i + 1),new imageicon(images/+(i + 1) + .gif);ckbimagei.additemlistener(new imagelistener();bgimg.add(ckbimagei);pimg.add(ckbimagei);/頭像讀取(2)單擊btnok按鈕處理的方法private void btnokclick() string username = txtname.gettext();string nickname = txtnickname.gettext();string
10、 userpwd = new string(txtpwd.getpassword();string repwd = new string(txtrepwd.getpassword();int sex = 0;if (rbfemale.isselected() sex = 1;if (username.equals() joptionpane.showmessagedialog(btnok,“用戶名”不能為空,提示,joptionpane.warning_message);return;if(nickname.equals() joptionpane.showmessagedialog(btno
11、k,“昵稱”不能為空,提示,joptionpane.warning_message);return;if(userpwd.equals() joptionpane.showmessagedialog(btnok,“密碼”不能為空,提示,joptionpane.warning_message);return;if (userpwd.length() 10) joptionpane.showmessagedialog(btnok,“密碼”長度范圍在610之間,提示,joptionpane.warning_message);return;if (repwd.equals() joptionpane.
12、showmessagedialog(btnok,“確認(rèn)密碼”不能為空,提示,joptionpane.warning_message);return;if (!repwd.equals(userpwd) joptionpane.showmessagedialog(btnok,“確認(rèn)密碼”和“密碼”必須相同,提示,joptionpane.warning_message);return;if (userpwd.equals(haiersoft) joptionpane.showmessagedialog(btnok,注冊成功,提示,joptionpane.warning_message);/調(diào)用bt
13、ncancleclick()方法,清空信息btncancleclick();else joptionpane.showmessagedialog(btnok,注冊失敗,提示,joptionpane.warning_message);return;4調(diào)試與測試 在調(diào)試用戶注冊界面曾出現(xiàn)當(dāng)選者用戶頭像時(shí)該頭像就被隱藏了,但我對程序中多次的調(diào)試,這個(gè)問題都沒有得到好的解決,最后我嘗試將頭像的大小改變這個(gè)問題就得得到圓滿的解決。4.3 客戶端聊天模塊1.功能設(shè)計(jì)(1)界面分為3部分:中間部分顯示所有聊天信息,右邊顯示所有在在線客戶,底部用于信息的輸入與發(fā)送。2.界面設(shè)計(jì)圖3 聊天窗口3模塊算法(或重要
14、代碼段)只要求給出1-2主要模塊的算法(1) 從服務(wù)器獲取聊天信息的線程,接受服務(wù)器發(fā)送信息的方法。class getmsgfromserver extends thread /private string strmsg = null;public getmsgfromserver() super();public void run() tryreadmsg = new bufferedreader(new inputstreamreader(socketmsg.getinputstream();dostrmsg = readmsg.readline();/在文本域顯示聊天信息txtconte
15、nt.append(strmsg + n); while (strmsg != null); catch(exception e) e.printstacktrace();(2)事件發(fā)送的處理方法public void actionperformed (actionevent e) object source = e.getsource();if (source = btnsend) string str = txtsend.gettext();if (!str.equals() /網(wǎng)絡(luò)通信錯(cuò)誤printmsg.println(nickname + : + str);printmsg.flus
16、h();txtsend.settext();4調(diào)試與測試 測試結(jié)果的分析與討論,測試過程中遇到的主要問題及采取的解決措施。聊天室的設(shè)計(jì)是較為重要的部分,在先前簡單的界面設(shè)計(jì)時(shí)較為簡單,當(dāng)通過在該類中添加實(shí)現(xiàn)對發(fā)送按鈕監(jiān)聽時(shí)由于沒有定義該類的方法連接使得發(fā)送按鈕不能實(shí)現(xiàn)。對這個(gè)小問題的檢查較為簡單。4.4 服務(wù)器端模塊1.功能設(shè)計(jì)(1)界面分為3部分:中間顯示所有聊天信息,右邊顯示所有在線用戶,底部用于發(fā)送系統(tǒng)信息。2.界面設(shè)計(jì)圖4 服務(wù)器窗口3模塊算法(1)接收客戶發(fā)送聊天信息的線程class getmessagethread extends thread private string str
17、ingfromclient = null;private bufferedreader bufferedreaderfromclient;public getmessagethread(bufferedreader buffer) throws exception bufferedreaderfromclient = buffer;public void run() try do stringfromclient = bufferedreaderfromclient.readline();msglist.addfirst(stringfromclient); while (!stringfro
18、mclient.tolowercase().endswith(bye);int index = bufferedreader.indexof(bufferedreaderfromclient);bufferedreader.remove(index);printwriter.remove(index); catch (exception e) e.printstacktrace();(2)向所有客戶端發(fā)送消息的線程class sendmessagethread extends thread public sendmessagethread() throws exception super ()
19、;public void run() while (isrun) try string s = null;if (!msglist.isempty() s = (string) msglist.removelast();txtcontent.append(s + n);for (int i = 0; i printwriter.size(); i+) if (printwriter.get(i) != null) printwriter.get(i).println(s);printwriter.get(i).flush(); else sleep(100);/休眠 catch (except
20、ion e) e.printstacktrace(); 4調(diào)試與測試 服務(wù)器的是聊天系統(tǒng)中很重要的部分,這個(gè)界面設(shè)計(jì)較為簡單,擋在當(dāng)中添加一些樹組件及對客服端信息的發(fā)送時(shí),問題接二連三的出現(xiàn),很多都出現(xiàn)異常,主要是由于在定義語句不小心出現(xiàn)專業(yè)術(shù)語錯(cuò)誤。特別是將字符流放字節(jié)流劉緩沖區(qū)當(dāng)中是后由于吧new給忘記了,在結(jié)果的運(yùn)行中,服務(wù)器總是接收不到客戶端信息,這個(gè)問題占據(jù)了我大半天得時(shí)間才叫我給檢查出來了。通過這句簡單的話我深感細(xì)節(jié)決定成敗。4 小結(jié)和展望對于本系統(tǒng)的實(shí)現(xiàn),首先是構(gòu)建一個(gè)聊天系統(tǒng)主要的框架,通過查找關(guān)于聊天系統(tǒng)的相關(guān)知識(shí),建立一個(gè)聊天系統(tǒng)主要由服務(wù)器和客戶端,用戶的登錄界面和注冊界
21、面,這是一個(gè)很簡易的聊天系統(tǒng)。然后通過類的建立登錄窗口類frmlogin客戶端窗口類frmain、注冊界面窗口類frmregist、服務(wù)器類chatsever;由這些類運(yùn)行出這幾個(gè)主要的窗口類,在通過一個(gè)容器類rongqi來存儲(chǔ)用戶的信息,通過類config讀取相應(yīng)的鍵對應(yīng)信息。實(shí)現(xiàn)簡單的窗口界面的輸出。其次是通過在這些類當(dāng)中添加事件處理,如用戶名是否錯(cuò)誤,密碼是否在規(guī)定范圍之內(nèi);客戶端與服務(wù)器之間的信息傳輸實(shí)現(xiàn),實(shí)現(xiàn)對按鈕的監(jiān)聽實(shí)現(xiàn)系統(tǒng)中群消息的發(fā)送。最后,通過運(yùn)行服務(wù)器和登錄窗口,注冊一個(gè)用戶名實(shí)現(xiàn)用戶與服務(wù)器的鏈接,就可進(jìn)行在聊天室中聊天,實(shí)現(xiàn)聊天室功能。體會(huì):在這個(gè)課程設(shè)計(jì)中讓我體會(huì)到
22、一個(gè)簡單的聊天系統(tǒng)也不是那么好實(shí)現(xiàn)的,只是簡單窗口的實(shí)現(xiàn)也要花費(fèi)一天半時(shí)間,然后通過用戶窗口之間添加對事件的處理監(jiān)聽器接口鏈接最終實(shí)現(xiàn)簡單聊天系統(tǒng)。本系統(tǒng)能實(shí)現(xiàn)在客戶端用戶聊天窗口中顯示用戶名昵稱和頭像,服務(wù)器端口能看見當(dāng)前用戶在線狀態(tài)并顯示用戶名和昵稱。實(shí)現(xiàn)多個(gè)用戶之間在線信息的發(fā)送;服務(wù)器能監(jiān)測當(dāng)前用戶所發(fā)信息。是現(xiàn)簡單的用戶聊天功能。本系統(tǒng)有很多不足之處,再對用戶消息的發(fā)送當(dāng)中只能是在一個(gè)窗口實(shí)現(xiàn),就都是在一個(gè)聊天室里面,沒有私聊的實(shí)現(xiàn),用戶上線后顯示的頭像不是用戶當(dāng)前頭像,是按上線順序進(jìn)行排列的,很難區(qū)分客服端窗口中誰是當(dāng)前用戶,對于用戶下線時(shí)也存在區(qū)分不清;本人覺得在對用戶信息的存儲(chǔ)
23、與應(yīng)該建立一個(gè)數(shù)據(jù)庫會(huì)更好。參 考 文 獻(xiàn)1 邵峰晶, java se程序設(shè)計(jì)高級教程 m. 北京:電子工業(yè)出版, 2010.2 耿祥義,張躍平,基于java大學(xué)實(shí)用教程 m. 電子工業(yè)出版社, 2011249-252.(宋體,小四號(hào),1.5行距)附 錄使用說明書1.打開eclipse運(yùn)行環(huán)境,打開文聊天系統(tǒng)的類chatsever 點(diǎn)擊下圖箭頭所指按鈕運(yùn)行服務(wù)器。圖5 chatsever 類窗口運(yùn)行的服務(wù)器窗口如下圖圖6 運(yùn)行服務(wù)器窗口2.在前面的基礎(chǔ)之上在打開運(yùn)行frmlogin類,如下圖圖7 frmlogin 類窗口運(yùn)行窗口如下圖8 聊天登錄窗口3.可以進(jìn)行用戶注冊是,點(diǎn)擊“注冊”按鈕之后
24、彈出如下注冊窗口圖9 注冊窗口4.注冊之后點(diǎn)擊返回到登錄界面登錄用戶上線,如下圖便可進(jìn)行聊天了如下“痞子蔡”的界面圖10 聊天室狀態(tài)窗口服務(wù)器界面如下圖圖11 服務(wù)器狀態(tài)窗口源程序清單首先看看該系統(tǒng)類的組成如下圖圖12 聊天室系統(tǒng)類窗口(1)作為客戶端登錄窗口代碼package com.kehuduan.聊天室;import java.awt.event.*;import javax.swing.*;import com.容器.聊天室.rongqi;/作為客戶端登錄窗口public class frmlogin extends jframe implements actionlistener
25、private jpanel p;/面板private jlabel lblname, lblpwd;/姓名 密碼 標(biāo)簽private jtextfield txtname; /姓名 文本框private jpasswordfield txtpwd;/ 密碼框private jbutton btnok, btncancle,btnregist;/ 確定 取消 注冊 按鈕public frmlogin() super(聊天室登錄);p = new jpanel();p.setlayout(null);lblname = new jlabel(用戶名);lblpwd = new jlabel(密
26、碼);txtname = new jtextfield(20);txtpwd = new jpasswordfield(20);txtpwd.setechochar(*);btnok =new jbutton(確定);btncancle = new jbutton(取消);btnregist = new jbutton(注冊);lblname.setbounds(30, 30, 60, 25);txtname.setbounds(95, 30, 120, 25);/初始大小和位置lblpwd.setbounds(30,60,60,25);txtpwd.setbounds(95,60,120,2
27、5);btnok.setbounds(30,90,60,25);btncancle.setbounds(95,90,60,25);btnregist.setbounds(160,90,60,25);btnok.addactionlistener(this);btncancle.addactionlistener(this);btnregist.addactionlistener(this);p.add(lblname);p.add(txtname);p.add(lblpwd);p.add(txtpwd);p.add(btnok);p.add(btncancle);p.add(btnregist
28、);this.add(p);this.setsize(250,170);this.setlocation(300, 300);/設(shè)置窗體不可改變大小this.setresizable(false);this.setdefaultcloseoperation(jframe.exit_on_close);/事件處理方法public void actionperformed(actionevent e) object source = e.getsource();/確定按鈕 if(source = btnok) btnokclick();/取消按鈕if(source = btncancle) btn
29、cancleclick();/“注冊”按鈕if(source = btnregist) btnregistclick();/單擊btnok按鈕處理方法private void btnokclick() string username = txtname.gettext();string userpwd = new string(txtpwd.getpassword();if(username.equals() joptionpane.showmessagedialog(btnok,“用戶名”不能為空,提示,joptionpane.warning_message);return;if(userp
30、wd.equals() joptionpane.showmessagedialog(btnok,“密碼”不能為空,提示,joptionpane.warning_message);return;if (userpwd.equals(haiersoft) /默認(rèn)密碼“haiersoft”/驗(yàn)證通過,隱藏登錄窗口,顯示聊天主窗口this.setvisible(false);/frmmain frmmain = new frmmain();/frmmain.setvisible(true);jframe frmmain = rongqi.getfrm(frmmain);if (frmmain = nu
31、ll) frmmain = new frmmain ();rongqi.putfrm(frmmain, frmmain);/frmmain frmmain = new frmmain();frmmain.setvisible(true); else joptionpane.showmessagedialog(btnok,錯(cuò)誤的用戶名或密碼,提示,joptionpane.warning_message);/單擊btncancle按鈕處理方法private void btncancleclick() txtname.settext();txtpwd.settext();/*/隱藏當(dāng)前窗體this.
32、setvisible(false);frmregist frmregist = new frmregist();/顯示注冊窗體frmregist.setvisible(true);*/單擊btnregist按鈕的處理方法private void btnregistclick() /隱藏當(dāng)前窗體this.setvisible(false);/frmregist frmregist = new frmregist();/從容器中獲取注冊窗體jframe frmregist = rongqi.getfrm(frmgegist);/如果為null,則創(chuàng)建注冊窗體,并放入容器中if (frmregist
33、 = null) frmregist = new frmregist ();rongqi.putfrm(frmregist, frmregist);/顯示注冊窗體frmregist.setvisible(true);public static void main(string args) /加載了一個(gè)和系統(tǒng)一樣風(fēng)格的異常try uimanager.setlookandfeel( uimanager.getsystemlookandfeelclassname(); /加載系統(tǒng)風(fēng)格 catch (exception e) frmlogin frmlogin = new frmlogin();frm
34、login.setvisible(true);rongqi.putfrm(frmlogin, frmlogin);(2)客戶端注冊窗口代碼package com.kehuduan.聊天室;/客戶端注冊窗口import java.awt.gridlayout;import java.awt.event.*;import javax.swing.*;import com.容器.聊天室.rongqi;public class frmregist extends jframe implements actionlistener /繼承窗體 監(jiān)聽接口private jpanel p;/標(biāo)簽 用戶名 昵稱
35、 密碼 確認(rèn)密碼 性別 頭像private jlabel lblname, lblnickname, lblpwd, lblrepwd, lblsex, lblimage;private jtextfield txtname, txtnickname;/ 姓名 昵稱 文本框private jpasswordfield txtpwd, txtrepwd;/密碼框private jradiobutton rbmale, rbfemale;private jradiobutton ckbimage = new jradiobutton8;/用于頭像選擇private jbutton btnok, b
36、tncancle, btnreturn;/確定 取消 返回 三個(gè)按鈕/選中的頭像private string checkedheadimg = null;public frmregist() /構(gòu)造方法super(用戶注冊);p = new jpanel(null);lblname = new jlabel(用戶名:);lblnickname = new jlabel(昵 稱:);lblpwd = new jlabel(密 碼:);lblrepwd = new jlabel(確認(rèn)密碼:);lblsex = new jlabel(性 別:);lblimage = new jlabel(頭 像:)
37、;txtname = new jtextfield(20);txtnickname= new jtextfield(20);txtpwd = new jpasswordfield(20);txtrepwd= new jpasswordfield(20);rbmale = new jradiobutton(男);rbmale.setselected(true);/默認(rèn) 性別為男rbfemale = new jradiobutton(女);/rbfemale.setselected(true);jpanel pimg = new jpanel(new gridlayout(2,5);buttong
38、roup bgimg = new buttongroup();for (int i = 0; i ckbimage.length; i+) ckbimagei = new jradiobutton(string.valueof(i + 1),new imageicon(images/+(i + 1) + .gif);ckbimagei.additemlistener(new imagelistener();/ckbimagei.additemlistener(new imagelistener();/此處有點(diǎn)問題 已解決bgimg.add(ckbimagei);pimg.add(ckbimag
39、ei);/頭像讀取btnok = new jbutton(確定);btncancle = new jbutton(取消);btnreturn = new jbutton(返回);btnok.addactionlistener(this);btncancle.addactionlistener(this);btnreturn.addactionlistener(this);/添加監(jiān)聽器buttongroup bgsex = new buttongroup();bgsex.add(rbmale);bgsex.add(rbfemale);/性別 數(shù)組lblname.setbounds(30,30,6
40、0,25);txtname.setbounds(95, 30, 200, 25);lblnickname.setbounds(30, 60, 60, 25);txtnickname.setbounds(95, 60, 200, 25);lblpwd.setbounds(30,90,60,25);txtpwd.setbounds(95,90,200,25);lblrepwd.setbounds(30,120,60,25);txtrepwd.setbounds(95,120,200,25);lblsex.setbounds(30,150,60,25);rbmale.setbounds(95, 15
41、0, 60, 25);rbfemale.setbounds(160, 150, 60, 25);lblimage.setbounds(30, 180, 60, 25);pimg.setbounds(95,180,280,100);btnok.setbounds(90,290,60,25);btncancle.setbounds(155,290,60,25); btnreturn.setbounds(220,290,60,25);p.add(lblname);p.add(txtname);p.add(lblnickname);p.add(txtnickname);p.add(lblpwd);p.
42、add(txtpwd);p.add(lblrepwd);p.add(txtrepwd);p.add(lblsex);p.add(rbmale);p.add(rbfemale);p.add(lblimage);p.add(pimg);p.add(btnok);p.add(btncancle);p.add(btnreturn);this.add(p);this.setsize(400, 380);/設(shè)置大小this.setlocation(300,300);/設(shè)置坐標(biāo)/窗體不可改變大小this.setresizable(false); this.setdefaultcloseoperation(j
43、frame.exit_on_close);/事件處理方法public void actionperformed(actionevent e) object source = e.getsource();/確定按鈕if(source = btnok) btnokclick();/取消按鈕if(source = btncancle) btncancleclick();/返回按鈕if(source = btnreturn) btnreturnclick(); /單擊btnok按鈕處理的方法private void btnokclick() string username = txtname.gett
44、ext();string nickname = txtnickname.gettext();string userpwd = new string(txtpwd.getpassword();string repwd = new string(txtrepwd.getpassword();int sex = 0;if (rbfemale.isselected() sex = 1;if (username.equals() joptionpane.showmessagedialog(btnok,“用戶名”不能為空,提示,joptionpane.warning_message);return;if(
45、nickname.equals() joptionpane.showmessagedialog(btnok,“昵稱”不能為空,提示,joptionpane.warning_message);return;if(userpwd.equals() joptionpane.showmessagedialog(btnok,“密碼”不能為空,提示,joptionpane.warning_message);return;if (userpwd.length() 10) joptionpane.showmessagedialog(btnok,“密碼”長度范圍在610之間,提示,joptionpane.war
46、ning_message);return;if (repwd.equals() joptionpane.showmessagedialog(btnok,“確認(rèn)密碼”不能為空,提示,joptionpane.warning_message);return;/*if (repwd.equals() joptionpane.showmessagedialog(btnok,確認(rèn)密碼不能為空,提示,joptionpane.warning_message);return;*/if (!repwd.equals(userpwd) joptionpane.showmessagedialog(btnok,“確認(rèn)密
47、碼”和“密碼”必須相同,提示,joptionpane.warning_message);return;if (userpwd.equals(haiersoft) joptionpane.showmessagedialog(btnok,注冊成功,提示,joptionpane.warning_message);/調(diào)用btncancleclick()方法,清空信息btncancleclick();else joptionpane.showmessagedialog(btnok,注冊失敗,提示,joptionpane.warning_message);return;/單擊btncancle按鈕的處理方
48、法private void btncancleclick() /清空信息txtname.settext();txtnickname.settext();txtpwd.settext();txtrepwd.settext();rbmale.setselected(true);/單擊btnreturn的處理方法private void btnreturnclick() /隱藏當(dāng)前窗體this.setvisible(false);/frmlogin frmlogin = new frmlogin();jframe frmlogin = rongqi.getfrm(frmlogin);if (frmlogin = null) frmlogin = new frmlogin ();rongqi.putfrm(frmlogi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子產(chǎn)品的數(shù)據(jù)安全測試與驗(yàn)證方案
- 現(xiàn)代辦公環(huán)境下的營銷策略探討
- 2025年度萬科商鋪?zhàn)赓U合同-創(chuàng)意產(chǎn)業(yè)園區(qū)商鋪?zhàn)赓U管理協(xié)議
- 構(gòu)建清晰的宣講結(jié)構(gòu)提升理論傳播效果
- 2025年度股東股權(quán)轉(zhuǎn)讓簡易合同范本
- 生物科技產(chǎn)業(yè)人才評價(jià)體系構(gòu)建研究
- 理論宣講與情感激發(fā)在科技領(lǐng)域的實(shí)踐
- 2025年度肉類產(chǎn)品綠色包裝設(shè)計(jì)與使用合同
- 現(xiàn)代家居風(fēng)格與家用紡織品設(shè)計(jì)的創(chuàng)新搭配
- 物聯(lián)網(wǎng)中電子器件的關(guān)鍵技術(shù)及發(fā)展
- 23-張方紅-IVF的治療流程及護(hù)理
- 頂部板式吊耳計(jì)算HGT-20574-2018
- 因數(shù)和倍數(shù)復(fù)習(xí)思維導(dǎo)圖
- LY/T 2986-2018流動(dòng)沙地沙障設(shè)置技術(shù)規(guī)程
- GB/T 16288-1996塑料包裝制品回收標(biāo)志
- 三級教育考試卷(電工)答案
- 醫(yī)院標(biāo)準(zhǔn)化運(yùn)營管理課件
- 物業(yè)服務(wù)投標(biāo)文件
- 《數(shù)值分析》配套教學(xué)課件
- 山西省衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心信息名單目錄
- 二手閑置物品交易平臺(tái)研究報(bào)告
評論
0/150
提交評論