仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)_第1頁
仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)_第2頁
仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)_第3頁
仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)_第4頁
仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1引言數(shù)據(jù)庫課程設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造設(shè)計(jì)優(yōu)化的數(shù)據(jù)庫邏輯模式和物理結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)和管理數(shù)據(jù),滿足用戶的應(yīng)用需求。信息管理要求是指在數(shù)據(jù)庫中應(yīng)該存儲(chǔ)和管理哪些數(shù)據(jù)對(duì)象;數(shù)據(jù)操作要求是指對(duì)數(shù)據(jù)對(duì)象要進(jìn)行哪些操作,如查詢、加入、刪除、修改、統(tǒng)計(jì)等操作。數(shù)據(jù)庫課程設(shè)計(jì)的目標(biāo)是為了用戶和各種應(yīng)用系統(tǒng)提供一個(gè)信息基礎(chǔ)設(shè)施和高效率的運(yùn)行環(huán)境。高效率的運(yùn)行環(huán)境包括:數(shù)據(jù)庫的存取效率、數(shù)據(jù)庫存儲(chǔ)空間的利用率、數(shù)據(jù)庫系統(tǒng)運(yùn)行管理的效率都是高的。本次課程設(shè)計(jì)的目的是把所學(xué)的數(shù)據(jù)庫的知識(shí)應(yīng)用到實(shí)踐中去?,F(xiàn)今知識(shí)已越來越受到人們的重視,仿QQ聊天系統(tǒng)是參考騰訊公司發(fā)布的騰訊QQ,主要運(yùn)用數(shù)據(jù)庫知識(shí)和C#將其初步實(shí)現(xiàn)⑴。1.1課題背景現(xiàn)在的信息越來越發(fā)達(dá),很多人都在使用QQ作為聊天工具,現(xiàn)根據(jù)騰訊公司的QQ聊天系統(tǒng)制造屬于自己的聊天工具,表面上看上去是仿QQ聊天系統(tǒng),其實(shí)等到時(shí)機(jī)成熟可以換成別的名字,相信在不遠(yuǎn)的將來在老師和同學(xué)們的幫助下,再借助互聯(lián)網(wǎng),我們一定可以打造出屬于自己的聊天系統(tǒng)。當(dāng)然系統(tǒng)存在著很多不足,需要老師的指點(diǎn)和幫助。1.2系統(tǒng)需求分析QQ聊天系統(tǒng)是大家廣泛喜歡經(jīng)常應(yīng)用到CS應(yīng)用程序軟件[2],而現(xiàn)在仿QQ聊天系統(tǒng)開發(fā)工具,是本人對(duì)其程序的深感興趣,不但可以了解從中的業(yè)務(wù),而且還可以加強(qiáng)學(xué)習(xí),以及對(duì)知識(shí)的回顧。同時(shí)也是盡快測試此聊天程序,以便和同學(xué)進(jìn)行用自己的工具來交流聊天,由于好奇心促使和同學(xué)們一起來探討此程序的開發(fā),這樣增強(qiáng)同學(xué)們之間的相互交流,相互學(xué)習(xí)。該系統(tǒng)屬于應(yīng)用程序,需要對(duì)數(shù)據(jù)的處理,比如聊天信息要既是反饋給對(duì)方,故對(duì)數(shù)據(jù)的及時(shí)更新要求較高,保證數(shù)據(jù)的真實(shí)性.該系統(tǒng)在任何操作系統(tǒng)下都可以運(yùn)行,但必須裝有SQL2000數(shù)據(jù)庫。關(guān)鍵技術(shù)簡介2.1SQLServer2000SQLServer2000是Microsoft公司2000年推出的SQLServer數(shù)據(jù)庫管理系統(tǒng)的版本。它是一個(gè)杰出的數(shù)據(jù)庫平臺(tái),可用于大型聯(lián)機(jī)事務(wù)處理、數(shù)據(jù)倉庫、以及電子商務(wù)等。特點(diǎn):真正的客戶機(jī)/服務(wù)器體系結(jié)構(gòu),圖形化用戶界面,豐富的編程接口工具。SQLServer與WindowsNT完全集成,具有很好的伸縮性,支持Web技術(shù)。SQLServer提供數(shù)據(jù)倉庫功能[3]。2.2C#簡介C#是從C和C++派生來的一種簡單、現(xiàn)代、面向?qū)ο蠛皖愋桶踩木幊陶Z言。C#是用于創(chuàng)建運(yùn)行在.NET公共語言運(yùn)行庫上的應(yīng)用程序的語言之一,它從C語言和C++語言演化而來,是Microsoft專門使用.NET平臺(tái)而創(chuàng)建的,并且考慮了其他語言的許多有點(diǎn)。由于語法簡單,使用C#開發(fā)應(yīng)用程序比C++程序相對(duì)簡單。但是,C#也是一種強(qiáng)大的語言,在C++中能完成的任務(wù)在C#中同樣也能完成。C#的代碼要比C++略長些,這是因?yàn)镃#是一種類型安全的語言(與C++不同),雖然C#的代碼略長但其代碼更健壯,調(diào)試也比較簡單。C#是唯一為.NETFramework而設(shè)計(jì)的語言,是移植到其他操作系統(tǒng)上的.NET版本中使用的主要語言,能使用.NETFramework代碼庫提供的每種功能。反之,如果要使用VB.NET等語言盡可能與其以前的語言類似,而且仍然遵循CLR,這些語言就不能完全支持.NET代碼庫的某些功能。C#可以創(chuàng)建Windows應(yīng)用程序,Web應(yīng)用程序,Web服務(wù)這幾種常見的應(yīng)用程序[4]。具體實(shí)現(xiàn)如下:1:首先根據(jù)對(duì)其業(yè)務(wù)邏輯的分析極其全面整合,加之我們所熟悉的QQ聊天技術(shù)。第一應(yīng)該做的是界面,界面的美化程度直接反映著用戶對(duì)此軟件喜歡程度,所以借助了互聯(lián)網(wǎng)搜索了一些好看的圖片;2:對(duì)界面的設(shè)計(jì),這里所用到的就是C#里布局控件,精心的布局,這一點(diǎn)眾所周之C#里豐富的控件為我們提供了方便,這樣做就可以盡可能的讓用戶用起來比較舒服;3:各個(gè)窗體畫好后,接下來自然就是業(yè)務(wù)邏輯層的代碼書寫了,由于學(xué)習(xí)不夠精,所以在書寫代碼方便并沒有用到三層技術(shù),但是本人對(duì)該系統(tǒng)考慮的比較全面,一些錯(cuò)誤和異常都可以將其打印出來書寫代碼比較規(guī)范,不管從類的書寫,還是一些命名都非常規(guī)范;仿QQ仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)第3頁共39頁C#里提供豐富的控件庫,本來就可以自動(dòng)生成一些代碼,對(duì)業(yè)務(wù)邏輯比較明朗,對(duì)方法和類之間的命名比較規(guī)范,書寫代碼自然比較快,出錯(cuò)率比較少;方法就是增刪改查,最后結(jié)合數(shù)據(jù)庫技術(shù)完成業(yè)務(wù)邏輯。胡逸騉仿胡逸騉仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)第#頁共39頁BufferedReaderin=null;PrintWriterout二null;tryclient_socket=newSocket("",8888);in=newBufferedReader(newInputStreamReader(System.in));out二newPrintWriter(newBufferedWriter(newOutputStreamWriter(client_socket.getOutputStream())),true);while(true)Stringstr二in.readLine();}…皿}catch(Exceptione)tryThread.sleep(1000);{catch(Exceptionex)};importjava.io.BufferedReader;importjava.io.BufferedWriter;importimportimportimportjava.io.InputStreamReader;java.io.OutputStreamWriter;importjava.io.PrintWriter;.ServerSocket;.Socket;publicclassMutiChat2publicstaticvoidmain(String[]args)MutiChat2mc=newMutiChat2();mc.receive().start();mc.send().start();/***接收信息*@return*/privateThreadreceive()returnnewThread(){ublicvoidrun()ServerSocketserver_socket二null;Socketsk=null;BufferedReaderin=null;try{se_er—sk=s;rver_socket.accept();in=newBufferedReader(newInputStreamReader(sk.getlnputStream()));{hile(true)Stringstr二in.readLine();System.out.println(str);—e.printStackTrace();privateThreadsend(){returnnewThread(){publicvoidrun(){Socketclient_socket二null;BufferedReaderin=null;PrintWriterout二null;while(true){try{client_socket二newSocket("",7777);in=newBufferedReader(newInputStreamReader(System.in));out二newPrintWriter(newBufferedWriter(newOutputStreamWriter(client_socket.getOutputStream())),true);while(true){Stringstr二in.readLine();out.println(str);}}catch(Exceptione){try{Thread.sleep(1000);}catch(Exceptionex){ex.printStackTrace();}}}}};}}下面這個(gè)是可以帶圖形界面的Server:packageChatIV;.*;importjava.io.*;importjava,util.*;//廣播聊天室服務(wù)端publicclassServer{publicstaticvoidmain(Stringargs[]){try{ServerSocketss=newServerSocket(8186);//實(shí)現(xiàn)SocketListsockets=newArrayList();//創(chuàng)建一個(gè)集合,保存文字消息while(true){Sockets=ss.accept();//監(jiān)聽8186sockets.add(s);//向集合中添加Socket的對(duì)象S,把聽到的內(nèi)容保存到集合中Threadt1二newChatThread(s,sockets);//線程t1.start();}}catch(IOExceptione){e.printStackTrace();}}classChatThreadextendsThread{Sockets;Listsockets;publicChatThread(Sockets,Listsockets){this.s=s;this.sockets二sockets;}publicvoidrun(){try{BufferedReaderin=newBufferedReader(newInputStreamReader(s.getlnputStream()));//包裝成字符流while(true){Stringstr二in.readLine();//讀BufferedReaderfor(inti=0;i<sockets.size();i++){//利用For循環(huán)遍歷集合Sockets2=(Socket)sockets.get(i);//創(chuàng)建Socket對(duì)象S2,強(qiáng)轉(zhuǎn)成Socket,并獲取下標(biāo)PrintWriterout二newPrintWriter(s2.getOutputStream());//文本流輸出out.println(str);//打印字符out.flush();//刷新該流的緩沖}}}catch(IOExceptione){}finally{try{s.close();}catch(IOExceptione){}}Client:packageChatIV;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;.Socket;.UnknownHostException;importjavax.swing.JFrame;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.JTextField;//廣播聊天室客戶端publicclassClient{JTextAreajta;JTextFieldjtf;BufferedReaderin;PrintWriterout;//Swing畫一個(gè)界面privatevoidinitGUI(){JFramef=newJFrame("Client");f.setSize(400,300);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jta=newJTextArea();jta.setEditable(false);f.add(newJScrollPane(jta));jtf二newJTextField();f.add(jtf,"South");f.setVisible(true);jtf.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventargO){Stringtext二jtf.getText();jtf.setText("");out.println(text);out.flush();}});}//連接初始化privatevoidinitNet(){try{Sockets=newSocket("",8186);//創(chuàng)建Socket端口8186,端口號(hào)隨意,避免常用端口即可out=newPrintWriter(s.getOutputStream());//文本流輸出,利用Socket對(duì)象獲得getOutputStream()in=newBufferedReader(newInputStreamReader(s.getlnputStream()));//包裝成字符流}catch(UnknownHostExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}//消息接收privatevoidreceive(){胡逸騉仿胡逸騉仿QQ聊天系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)第3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論