2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1概述聊天室2</b></p><p><b>  2. 設(shè)計(jì)依據(jù)2</b></p><p>  2.1 設(shè)計(jì)平臺(tái)2</p><p>  2.2 設(shè)計(jì)思想3</p><

2、p>  3. 各模塊功能簡介3</p><p><b>  4. 結(jié)構(gòu)分析4</b></p><p><b>  5. 界面設(shè)計(jì)5</b></p><p>  6. 附錄源代碼6</p><p><b>  概述聊天室系統(tǒng)</b></p><p

3、>  聊天室系統(tǒng)使用JAVA+SQL完成,ECLIPSE完成代碼編寫,JIGLOO完成界面設(shè)計(jì),SQL SERVER完成數(shù)據(jù)庫管理。聊天室通過輸入的對(duì)方IP,將JTextField中的內(nèi)容發(fā)送到擁有此IP的主機(jī)(前提是對(duì)方也啟動(dòng)了聊天室程序)。網(wǎng)絡(luò)的通信使用UDP協(xié)議,即時(shí)搜尋網(wǎng)絡(luò)上的短消息,并可恢復(fù)對(duì)方消息。</p><p>  數(shù)據(jù)庫的表只有一個(gè)User_Info,用戶通過用戶管理模塊登錄,注冊,修改密

4、碼。系統(tǒng)有三個(gè)類,MainWin、ChatRoom、jdbcodbc。MainWin是程序的入口類,界面是登陸,注冊,修改密碼的JFrame窗口。ChatRoom是聊天室的主窗口,負(fù)責(zé)搜發(fā)消息。jdbcodbc負(fù)責(zé)數(shù)據(jù)庫的連接,有一個(gè)構(gòu)造函數(shù),一個(gè)查詢方法,一個(gè)更新方法,三個(gè)返回方法。三個(gè)類都放在Com包里,Com包在Chat項(xiàng)目里。</p><p><b>  2. 設(shè)計(jì)依據(jù)</b><

5、;/p><p>  本系統(tǒng)要求實(shí)現(xiàn)一個(gè)兩人聊天室的Java 圖形用戶界面界面程序,主要包括如下功能:</p><p>  1.主人可以根據(jù)輸入的IP尋找要聊天的對(duì)象。</p><p>  2.主人和客人之間可以互相發(fā)送短消息進(jìn)行即時(shí)聊天。</p><p><b>  2.1 設(shè)計(jì)平臺(tái)</b></p><p

6、><b>  設(shè)計(jì)平臺(tái)是j2se</b></p><p>  J2se 是一個(gè)開放源代碼的 Java 的可擴(kuò)展開發(fā)平臺(tái)。編寫代碼和運(yùn)行軟件都很方便。編寫過程中要是有錯(cuò)誤就有提示,非常方便用戶修改代碼。</p><p><b>  2.2 設(shè)計(jì)思想</b></p><p>  程序分為三個(gè)部分:數(shù)據(jù)庫連接,聊天室管理,

7、用戶管理。其中用戶管理分為用戶注冊,用戶登錄,用戶修改密碼。</p><p>  3. 各模塊功能簡介</p><p><b>  程序功能模塊圖</b></p><p><b>  4. 結(jié)構(gòu)分析</b></p><p><b>  主窗口對(duì)象</b></p>

8、<p>  MainWin()方法:構(gòu)造函數(shù),調(diào)用initGUI()方法以及父類JFRAME的構(gòu)造函數(shù)。</p><p>  main()方法:程序的入口。</p><p>  initGUI()方法:加載窗口的各個(gè)組件以及事件處理。</p><p><b>  數(shù)據(jù)庫連接對(duì)象</b></p><p>  jd

9、bcodbc():構(gòu)造函數(shù),加載數(shù)據(jù)庫驅(qū)動(dòng),建立數(shù)據(jù)庫連接。</p><p>  CheckInfo():將查詢語句得到的數(shù)據(jù)庫內(nèi)容賦給數(shù)據(jù)集。</p><p>  UpdateInfo():用插入語句使數(shù)據(jù)庫更新。</p><p><b>  聊天室對(duì)象</b></p><p>  ChatRoom():構(gòu)造函數(shù),調(diào)用

10、initGUI()方法以及父類JFRAME的構(gòu)造函數(shù)。并用循環(huán)實(shí)現(xiàn)實(shí)時(shí)接受數(shù)據(jù)包里的消息。</p><p>  initGUI():加載窗口的各個(gè)組件以及事件處理。</p><p><b>  5.界面設(shè)計(jì)</b></p><p>  用戶界面的設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)中比較關(guān)鍵的一環(huán)。通過用戶界面能更清晰的顯示出本系統(tǒng)所具有的功能、簡單的錯(cuò)誤警告及

11、處理能力。用戶界面的友好設(shè)計(jì),可以使操作人員更迅速的掌握其操作步驟,便于操作。</p><p><b>  客戶端窗口</b></p><p><b>  聊天室界面設(shè)計(jì)</b></p><p><b>  內(nèi)嵌“私聊”窗口</b></p><p><b>  實(shí)驗(yàn)總

12、結(jié)</b></p><p>  由于能力及時(shí)間的關(guān)系,這個(gè)Java聊天室程序沒能達(dá)到其要求,很有點(diǎn)失望,很有點(diǎn)遺憾。在建立通信和連接數(shù)據(jù)庫時(shí),雖然很認(rèn)真地在做,可總還是失敗,這也導(dǎo)致了整個(gè)聊天室的無法運(yùn)作(只有界面而已)。事實(shí)如此,不再贅言了。</p><p>  這次Java實(shí)習(xí),似乎量上過大,然而堅(jiān)持做下來,還有很有意義和收獲的。也許我的所得,對(duì)他人而言,可謂不值一提,但對(duì)

13、我來說,它們的確讓我在思想和能力上,更上了一層樓。下面我就談?wù)勎业捏w會(huì):</p><p>  Jave與C語言編程相比,有著本質(zhì)的不同.前者面向?qū)ο?即面向問題而設(shè)計(jì)程序,后者則是分析問題后,面向問題解決的過程而設(shè)計(jì)程序.本質(zhì)的不同,導(dǎo)致程序設(shè)計(jì)的明顯差異.Java設(shè)計(jì)的程序,通過劃分類,通常都顯得通俗易懂,條理清晰,而且很簡捷.這是C語言所無法比擬的,除非它有很好的數(shù)據(jù)結(jié)構(gòu),但必須承認(rèn),就算如此,還是難以與之平

14、行的.用Jave編聊天室,其實(shí)也不是那么復(fù)雜,但要是換用C語言,我真不知道其工作量有多大了。由此,我看到了Java的優(yōu)越性,更堅(jiān)定了我學(xué)好Java的決心.</p><p>  用Java解決實(shí)際問題,分析問題是至關(guān)重要的。分析要合理、全面,只有這樣,劃分的類就不至于過大或過小。一個(gè)復(fù)雜的問題,就象這個(gè)聊天室吧,一開始不是什么都會(huì)做,先就完成簡單、容易的,然后再帶著小有的成就感,去征服難弄的部分。這種思想是處處適用

15、的。</p><p>  想說的,我已經(jīng)說完了。最后再說一句:雖然目前我的編程能力很差勁,可我心中已有了目標(biāo),也許我走不到終點(diǎn),但我一定會(huì)前進(jìn),絕不輕易放棄!夢想來之不易!</p><p><b>  6. 附錄源代碼</b></p><p><b>  程序主界面設(shè)計(jì)</b></p><p>  

16、建立服務(wù)端窗口類:窗口程序如下</p><p>  import java.awt.Button;</p><p>  import java.awt.Color;</p><p>  import java.awt.FlowLayout;</p><p>  import java.awt.List;</p><p&g

17、t;  import java.awt.TextArea;</p><p>  import javax.swing.JFrame;</p><p>  import javax.swing.JLabel;</p><p>  import javax.swing.JScrollPane;</p><p>  import javax.swi

18、ng.JTextField;</p><p>  public class chatroomW {</p><p>  JFrame f=new JFrame("局域網(wǎng)聊天室");</p><p>  JLabel label1=new JLabel("端口");</p><p>  JLabel la

19、bel2=new JLabel("發(fā)送");</p><p>  Button button1=new Button("啟動(dòng)服務(wù)");</p><p>  Button button2=new Button("發(fā)送");</p><p>  Button button3=new Button("刷

20、新用戶列表");</p><p>  JTextField text1=new JTextField(5);</p><p>  JTextField text2=new JTextField(25);</p><p>  TextArea area1=new TextArea(26,84);</p><p>  List user

21、List=new List(27);</p><p>  JScrollPane scro1,scro2;</p><p>  public chatroomW(){</p><p><b>  chat();</b></p><p><b>  }</b></p><p>

22、  public void chat(){</p><p>  area1.setBackground(new Color(204,255,255));</p><p>  area1.setForeground(Color.black);</p><p>  userList.setBackground(Color.gray);</p><p&

23、gt;  userList.setForeground(Color.white);</p><p>  f.setLayout(new FlowLayout());</p><p>  f.add(area1);</p><p>  f.add(userList);</p><p>  f.add(label1);</p>&l

24、t;p>  f.add(text1);</p><p>  f.add(button1);</p><p>  f.add(text2);</p><p>  f.add(button2);</p><p>  f.add(button3);</p><p>  f.setBounds(300,200,750,4

25、85);</p><p>  f.setResizable(false);</p><p>  f.setVisible(true);</p><p>  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  area1.setEditable(false);</p>

26、;<p>  text1.setText("10000");</p><p>  myEvent();</p><p><b>  }</b></p><p>  public static void main(String args[]){</p><p>  new chatroom

27、W();</p><p><b>  }</b></p><p>  public void myEvent(){}</p><p><b>  }</b></p><p><b>  建立客戶端窗口</b></p><p>  import java.

28、awt.Color;</p><p>  import java.awt.FlowLayout;</p><p>  import java.awt.TextArea;</p><p>  import javax.swing.JButton;</p><p>  import javax.swing.JFrame;</p>&

29、lt;p>  import javax.swing.JLabel;</p><p>  import javax.swing.JScrollPane;</p><p>  import javax.swing.JTextField;</p><p>  public class ClientW {</p><p>  JFrame f=

30、new JFrame("聊天室");</p><p>  JScrollPane js;</p><p>  TextArea area=new TextArea(19,67);</p><p>  JTextField text1=new JTextField(12);</p><p>  JTextField text

31、2=new JTextField(5);</p><p>  JTextField text3=new JTextField(5);</p><p>  JTextField text4=new JTextField(20);</p><p>  JButton button1=new JButton("連接");</p><

32、p>  JButton button2=new JButton("發(fā)送");</p><p>  JButton button3=new JButton("私聊");</p><p>  JLabel label1=new JLabel("服務(wù)器地址");</p><p>  JLabel label

33、2=new JLabel("服務(wù)器端口");</p><p>  JLabel label3=new JLabel("昵稱");</p><p>  public ClientW(){</p><p><b>  chat();</b></p><p><b>  }&l

34、t;/b></p><p>  public void chat(){</p><p>  area.setBackground(new Color(204,255,255));</p><p>  //area.setForeground(Color.black);</p><p>  f.setLayout(new FlowLa

35、yout());</p><p>  f.setBounds(300,200,500,410);</p><p>  f.add(label1);</p><p>  f.add(text1);</p><p>  f.add(label2);</p><p>  f.add(text2);</p>&l

36、t;p>  f.add(button1);</p><p>  f.add(area);</p><p>  f.add(label3);</p><p>  f.add(text3);</p><p>  f.add(text4);</p><p>  f.add(button2);</p>&l

37、t;p>  f.add(button3);</p><p>  f.setVisible(true);</p><p>  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  f.setResizable(false);</p><p>  area.setEditab

38、le(false);</p><p>  text2.setText("10000");</p><p>  text4.setText(null);</p><p>  myEvent();</p><p><b>  }</b></p><p>  public void

39、myEvent(){}</p><p>  public static void main(String args[]){</p><p>  new ClientW();</p><p><b>  }</b></p><p><b>  }</b></p><p>  c

40、lass netchat{</p><p>  JFrame f=new JFrame("私聊");</p><p>  JLabel label1,label2,label3;</p><p>  Button button1,button2;</p><p>  JTextField text1,text2,text3

41、,text4;</p><p>  TextArea textarea;</p><p>  public netchat(){</p><p>  f.setLayout(new FlowLayout());</p><p>  f.setBounds(300,200,400,310); //設(shè)置窗口大小和位置;</p>

42、<p>  f.setResizable(false); //讓窗口大小固定;</p><p>  label1=new JLabel("對(duì)方主機(jī)");</p><p>  label2=new JLabel("本地端口");</p><p>  label3=new JLabel("

43、;對(duì)方端口");</p><p>  button1=new Button("連接");</p><p>  button2=new Button("發(fā)送");</p><p>  text1=new JTextField(7);</p><p>  text2=new JTextField(

44、3);</p><p>  text3=new JTextField(3);</p><p>  text4=new JTextField(20);</p><p>  textarea=new TextArea(13,53);</p><p>  textarea.setEditable(false);</p><p&g

45、t;  textarea.setBackground(new Color(204,250,255));</p><p>  f.add(label1);</p><p>  f.add(text1);</p><p>  f.add(label2);</p><p>  f.add(text2);</p><p>  

46、f.add(label3);</p><p>  f.add(text3);</p><p>  f.add(button1);</p><p>  f.add(textarea);</p><p>  f.add(text4);</p><p>  f.add(button2);</p><p&g

47、t;  f.setVisible(true);</p><p>  // f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);//關(guān)閉窗口程序同時(shí)關(guān)閉;</p><p>  myEvent();</p><p><b>  }</b></p><p>  客服端類繼承客戶端窗口類,

48、并內(nèi)嵌私聊程序</p><p>  import java.awt.Button;</p><p>  import java.awt.Color;</p><p>  import java.awt.FlowLayout;</p><p>  import java.awt.TextArea;</p><p>  i

49、mport java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p>  import java.awt.event.WindowAdapter;</p><p>  import java.awt.event.WindowEvent;</p>

50、<p>  import java.io.BufferedReader;</p><p>  import java.io.InputStreamReader;</p><p>  import java.io.PrintStream;</p><p>  import java.net.DatagramPacket;</p><p&

51、gt;  import java.net.DatagramSocket;</p><p>  import java.net.InetAddress;</p><p>  import java.net.Socket;</p><p>  import javax.swing.JFrame;</p><p>  import javax.sw

52、ing.JLabel;</p><p>  import javax.swing.JTextField;</p><p>  public class Client extends ClientW{</p><p>  Socket s=null;</p><p>  public Client(){}</p><p>

53、;  public void myEvent(){</p><p>  button1.addActionListener(new ActionListener(){</p><p>  public void actionPerformed(ActionEvent e){</p><p><b>  try{</b></p>&

54、lt;p>  s=new Socket(text1.getText().toString(),Integer.parseInt(text2.getText()));</p><p>  new Thread(new LinkC()).start();</p><p>  area.append("[系統(tǒng)消息]:連接成功\n");</p><p&

55、gt;  }catch(Exception ex){area.append("[系統(tǒng)消息]:連接失敗\n");}</p><p><b>  }</b></p><p><b>  });</b></p><p>  button2.addActionListener(new ActionListene

56、r(){</p><p>  public void actionPerformed(ActionEvent e){</p><p>  new SentC();</p><p><b>  }</b></p><p><b>  });</b></p><p>  butt

57、on3.addActionListener(new ActionListener(){</p><p>  public void actionPerformed(ActionEvent e){</p><p>  new netchat();</p><p><b>  }</b></p><p><b> 

58、 });</b></p><p><b>  }</b></p><p>  public static void main(String args[]){</p><p>  new Client();</p><p><b>  }</b></p><p> 

59、 class LinkC implements Runnable{</p><p>  public void run(){</p><p><b>  try{</b></p><p>  BufferedReader bufIn=</p><p>  new BufferedReader(new InputStrea

60、mReader(s.getInputStream()));</p><p>  String msg=null;</p><p>  PrintStream ps=new PrintStream(s.getOutputStream());</p><p>  ps.println(text3.getText());</p><p>  whi

61、le(true){</p><p><b>  try{</b></p><p>  while((msg=bufIn.readLine())!=null){</p><p>  area.append(msg+"\n");</p><p><b>  }</b></p&

62、gt;<p>  }catch(Exception ex){break;}</p><p><b>  }</b></p><p>  }catch(Exception e){}</p><p><b>  }</b></p><p><b>  }</b><

63、;/p><p>  class SentC {</p><p>  public SentC(){</p><p><b>  try{</b></p><p>  PrintStream ps=new PrintStream(s.getOutputStream());</p><p>  if(!t

64、ext4.getText().equals("")){</p><p>  ps.println(text4.getText());</p><p>  // area.append(text4.getText()); //服務(wù)器自動(dòng)會(huì)返回</p><p>  text4.setText(""

65、);</p><p><b>  }</b></p><p>  }catch(Exception e){}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //私聊類</b&g

66、t;</p><p>  class netchat{</p><p>  JFrame f=new JFrame("私聊");</p><p>  JLabel label1,label2,label3;</p><p>  Button button1,button2;</p><p>  JT

67、extField text1,text2,text3,text4;</p><p>  TextArea textarea;</p><p>  public netchat(){</p><p>  f.setLayout(new FlowLayout());</p><p>  f.setBounds(300,200,400,310);

68、 //設(shè)置窗口大小和位置;</p><p>  f.setResizable(false); //讓窗口大小固定;</p><p>  label1=new JLabel("對(duì)方主機(jī)");</p><p>  label2=new JLabel("本地端口");</p><p>

69、;  label3=new JLabel("對(duì)方端口");</p><p>  button1=new Button("連接");</p><p>  button2=new Button("發(fā)送");</p><p>  text1=new JTextField(7);</p><p&

70、gt;  text2=new JTextField(3);</p><p>  text3=new JTextField(3);</p><p>  text4=new JTextField(20);</p><p>  textarea=new TextArea(13,53);</p><p>  textarea.setEditable(

71、false);</p><p>  textarea.setBackground(new Color(204,250,255));</p><p>  text2.setText("10000");</p><p>  text3.setText("10000");</p><p>  f.add(la

72、bel1);</p><p>  f.add(text1);</p><p>  f.add(label2);</p><p>  f.add(text2);</p><p>  f.add(label3);</p><p>  f.add(text3);</p><p>  f.add(but

73、ton1);</p><p>  f.add(textarea);</p><p>  f.add(text4);</p><p>  f.add(button2);</p><p>  f.setVisible(true);</p><p>  // f.setDefaultCloseOperation(f.E

74、XIT_ON_CLOSE);//關(guān)閉窗口程序同時(shí)關(guān)閉;</p><p>  myEvent();</p><p><b>  }</b></p><p>  public void myEvent(){</p><p>  f.addWindowListener(new WindowAdapter()</p>

75、<p><b>  {</b></p><p>  public void windowClosing(WindowEvent e){</p><p><b>  try{</b></p><p>  DatagramSocket ds=new DatagramSocket();</p><

76、;p>  byte[] buf="對(duì)方已下線".getBytes();</p><p>  DatagramPacket dp=</p><p>  new DatagramPacket(buf,buf.length,InetAddress.getByName(text1.getText()),Integer.parseInt(text3.getText()));

77、</p><p>  ds.send(dp);</p><p>  ds.close();</p><p>  }catch(Exception ex){}</p><p><b>  }</b></p><p><b>  });</b></p><p&

78、gt;  button2.addActionListener(new ActionListener()//事件源是button2</p><p><b>  {</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  { </b>&l

79、t;/p><p>  if(!text4.getText().equals(""))</p><p>  new Thread(new Send()).start();</p><p><b>  }</b></p><p><b>  });</b></p><

80、p>  button1.addActionListener(new ActionListener()//事件源是button1</p><p><b>  {</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  { </b>&

81、lt;/p><p>  new Thread(new Rece()).start();</p><p><b>  }</b></p><p><b>  });</b></p><p><b>  }</b></p><p>  class Send im

82、plements Runnable{</p><p>  public void run(){ try{UdpSend();}catch(Exception e){textarea.append("[系統(tǒng)消息]:發(fā)送失敗\n");}}</p><p>  public void UdpSend()throws Exception{</p><p>

83、;  DatagramSocket ds=new DatagramSocket();</p><p>  byte[] buf=text4.getText().getBytes();</p><p>  DatagramPacket dp=</p><p>  new DatagramPacket(buf,buf.length,InetAddress.getByNa

84、me(text1.getText()),Integer.parseInt(text3.getText()));</p><p>  textarea.append("[我]: "+text4.getText()+"\n");</p><p>  text4.setText("");</p><p>  ds

85、.send(dp);</p><p>  ds.close();</p><p><b>  }</b></p><p><b>  }</b></p><p>  class Rece implements Runnable{</p><p>  int index=0;&

86、lt;/p><p>  public void run(){</p><p><b>  try{</b></p><p>  UdpRece();</p><p>  }catch(Exception e){</p><p>  textarea.append("[系統(tǒng)消息]:連接失敗\n

87、");</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void UdpRece()throws Exception{</p><p>  while(true){</p><p>  Datagra

88、mSocket ds=new DatagramSocket(Integer.parseInt(text2.getText()));</p><p>  if(index==0){textarea.append("[系統(tǒng)消息]:連接成功\n");}</p><p>  byte[] buf=new byte[1024];</p><p>  Dat

89、agramPacket dp=new DatagramPacket(buf,buf.length);</p><p>  ds.receive(dp);</p><p>  String data=new String(dp.getData(),0,dp.getLength());</p><p>  textarea.append(dp.getAddress()+

90、" "+data+"\n");</p><p><b>  index++;</b></p><p>  ds.close();</p><p><b>  }</b></p><p><b>  }</b></p><

91、;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 耿祥義,Java2 實(shí)用教程,清華大學(xué)出版社,2008 <

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論