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

下載本文檔

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

文檔簡介

1、<p><b>  JAVA程序設(shè)計</b></p><p><b>  課程設(shè)計說明書</b></p><p>  ----即時聊天系統(tǒng)</p><p>  院 系: 國際教育學(xué)院 </p><p>  專業(yè)班級: 互聯(lián)網(wǎng)10-02班 <

2、;/p><p>  指導(dǎo)教師:    ______</p><p>  姓 名: _____</p><p>  學(xué) 號: </p><p>  成 績: </p><p>  

3、2012年 06 月 07 日</p><p><b>  目 錄</b></p><p><b>  1 需求分析1</b></p><p>  1.1 用戶調(diào)查1</p><p>  1.2構(gòu)造系統(tǒng)的邏輯模型1</p><p>  1.3 確定目標(biāo)系統(tǒng)的功能………

4、…………………………………...2</p><p>  1.4數(shù)據(jù)分析——概念模型分析............................3</p><p>  2 總體設(shè)計................................................................................................2</p>

5、<p>  2.1軟件系統(tǒng)結(jié)構(gòu)的設(shè)計2</p><p>  2.1.1得到新的業(yè)務(wù)流程……………………………………………………….2</p><p>  2.1.2系統(tǒng)功能結(jié)構(gòu)圖.............................................2</p><p><b>  3 詳細(xì)設(shè)計3</b><

6、;/p><p><b>  3.1具體描述3</b></p><p>  3.2具體實(shí)現(xiàn)步驟3</p><p>  3.3程序源代碼..........................................7</p><p><b>  4 總結(jié)19</b></p><

7、;p>  4.1設(shè)計體會………………………………………………………..19</p><p><b>  1 需求分析</b></p><p><b>  1.1用戶調(diào)查</b></p><p>  經(jīng)過詳細(xì)的調(diào)研,即時聊天工具現(xiàn)在流行于各種人群中,以青少年為主的學(xué)生群。主要分為用戶注冊、用戶登錄等。即時聊天系統(tǒng)的流程

8、描述如下:</p><p>  注冊,連接服務(wù)器后,新用戶需要注冊,然后才能登錄。 </p><p>  注冊后才能登錄,信息寫進(jìn)數(shù)據(jù)庫。</p><p>  登錄后,可以進(jìn)行添加好友,找好友聊天,對好友進(jìn)行管理等操作。</p><p>  退出,在結(jié)束登錄時需要退去即時聊天系統(tǒng),并回到登錄界面。</p><p>  

9、根據(jù)以上總結(jié),得到其現(xiàn)行的業(yè)務(wù)流程如圖1-1所示。</p><p>  圖1-1即時聊天業(yè)務(wù)流程圖</p><p>  1.2 構(gòu)造系統(tǒng)的邏輯模型</p><p>  構(gòu)造系統(tǒng)的邏輯模型的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。數(shù)據(jù)流圖中沒有任何具體的物理元素,只是用來描繪信息在系統(tǒng)中的流動和處理情況。數(shù)據(jù)流圖共有四種基本符號:矩形表示數(shù)據(jù)的源點(diǎn)和終點(diǎn)(或稱為外部項),圓或橢圓表

10、示變換數(shù)據(jù)的處理,向右開口的矩形表示數(shù)據(jù)存儲,箭頭表示數(shù)據(jù)流,即特定數(shù)據(jù)的流動方向。根據(jù)現(xiàn)行學(xué)生信息管理的業(yè)務(wù)流程,首先確定數(shù)據(jù)流圖中的源點(diǎn)和終點(diǎn)都選定為學(xué)生,如此就得到了學(xué)生檔案管理系統(tǒng)的基本系統(tǒng)模型,如圖1-2所示。</p><p>  圖1-2 即時聊天系統(tǒng)的基本系統(tǒng)模型</p><p>  1.3 確定目標(biāo)系統(tǒng)的功能</p><p>  通過詳細(xì)的用戶調(diào)查,

11、在現(xiàn)行的業(yè)務(wù)處理流程和數(shù)據(jù)流圖的基礎(chǔ)上,就可以基本確定目標(biāo)系統(tǒng)要達(dá)到的目標(biāo)了。需求分析的任務(wù)是確定系統(tǒng)必須完成的工作,也就是對目標(biāo)系統(tǒng)提出完整、標(biāo)準(zhǔn)、清晰、具體的要求。在經(jīng)過多方了解和調(diào)查后,基本清楚了即時聊天系統(tǒng)的功能需求,即時聊天系統(tǒng)必須完成以下功能:</p><p>  注冊功能:對于新用戶,系統(tǒng)必須能對新用戶進(jìn)行注冊,在用戶輸入各項信息后,將信息保存進(jìn)數(shù)據(jù)庫。</p><p>  

12、登錄功能:在新用戶注冊完成后,系統(tǒng)能在用戶輸入登錄信息后,連接數(shù)據(jù)庫并匹配用戶登錄信息,使該用戶能登錄服務(wù)器。</p><p>  添加好友功能:用戶能通過添加好友按鈕就行好友添加。</p><p>  即時聊天功能:作為本系統(tǒng)的最主要功能,用戶能即時的和好友聊天,并可以搜索聊天記錄。</p><p>  1.4 數(shù)據(jù)分析——概念模型分析</p>&l

13、t;p>  需求分析階段主要有兩個方面的任務(wù):分析用戶的數(shù)據(jù)要求和分析用戶的處理要求。通過以上分析,我們已經(jīng)基本了解了用戶對處理的要求,接下來需要的工作是分析用戶對數(shù)據(jù)的要求。</p><p>  為了把用戶的數(shù)據(jù)清晰明確地表達(dá)出來,系統(tǒng)分析員通常建立一個概念性的數(shù)學(xué)模型。概念性模型是一種面向問題的數(shù)學(xué)模型,是按用戶的觀點(diǎn)來對數(shù)據(jù)和信息建模。最常用的表示概念性數(shù)據(jù)模型的方法是實(shí)體-聯(lián)系方法(Entity-R

14、elationship Approach)。這種方法用E-R圖描述現(xiàn)實(shí)世界中的實(shí)體,而不涉及這些實(shí)體在系統(tǒng)中的實(shí)現(xiàn)方法,該方法又稱為E-R模型,E-R圖中共用三種符號:實(shí)體、屬性和聯(lián)系。通常實(shí)體用矩形來表示,屬性用橢圓或圓角矩形來表示,聯(lián)系用菱形來表示。聯(lián)系有分為一對一、一對多和多對多三種類型。</p><p><b>  2.總體設(shè)計</b></p><p>  系

15、統(tǒng)設(shè)計一般分為總體設(shè)計和詳細(xì)設(shè)計。經(jīng)過需求分析階段的工作,已經(jīng)清楚系統(tǒng)必須完成的工作,下面的工作就應(yīng)該是決定“如何做”的問題,總體設(shè)計的基本目的的就是“概要地說系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”。通過該階段的工作將劃分出組成系統(tǒng)的物理元素—程序、文件、數(shù)據(jù)庫、文檔等,另一方面的主要工作是設(shè)計軟件的結(jié)構(gòu),即確定系統(tǒng)都由哪些模塊組成及模塊之間的相互關(guān)系。</p><p>  2.1軟件系統(tǒng)結(jié)構(gòu)的設(shè)計</p><

16、p>  2.1.1 得到新的業(yè)務(wù)流程</p><p>  根據(jù)系統(tǒng)分析得到的現(xiàn)行業(yè)務(wù)處理流程,在與用戶反復(fù)研究協(xié)商后,首先得到目標(biāo)系統(tǒng)即學(xué)生學(xué)籍管理系統(tǒng)的業(yè)務(wù)流程,其處理流程如圖2-1所示。</p><p>  圖2-1 即時聊天系統(tǒng)的業(yè)務(wù)流程</p><p>  針對新的處理流程,現(xiàn)具體描述如下:</p><p>  用戶注冊:對新用

17、戶進(jìn)行信息錄入。</p><p>  登錄:連接數(shù)據(jù)庫,匹配輸入登錄信息和數(shù)據(jù)庫信息,成功則進(jìn)入聊天室。</p><p>  計入聊天室,進(jìn)行聊天以及對好友的一系列操作。</p><p>  2.1.2系統(tǒng)功能結(jié)構(gòu)圖</p><p>  根據(jù)系統(tǒng)分析階段得到的數(shù)據(jù)流圖,采用軟件設(shè)計的概念和原理,我們能測試程序能否正常運(yùn)行。</p>

18、<p><b>  3.詳細(xì)設(shè)計</b></p><p><b>  3.1 具體描述</b></p><p>  圖3-2 軟件系統(tǒng)主程序的程序流程圖</p><p>  3.2 具體實(shí)現(xiàn)步驟:</p><p><b>  注冊界面如下圖:</b></p&

19、gt;<p><b>  圖3-3</b></p><p><b>  登錄界面如圖:</b></p><p><b>  聊天室窗口界面:</b></p><p><b>  啟動服務(wù)器:</b></p><p><b>  連接

20、服務(wù)器:</b></p><p><b>  實(shí)現(xiàn)私聊:</b></p><p><b>  圖3-5</b></p><p> ?。?)若選擇修改操作,則進(jìn)入如下界面:</p><p><b>  界面實(shí)現(xiàn)代碼:</b></p><p> 

21、 注冊界面代碼:package t_test;</p><p>  import javax.swing.*;</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import java.net.*;</p><p>  i

22、mport java.io.*;</p><p>  public class Register extends JFrame implements ActionListener</p><p><b>  {</b></p><p>  private JComboBox comboBox;</p><p>  pr

23、ivate static final long serialVersionUID = 9019746127517522180L;</p><p>  JPanel pnlRegister;</p><p>  JLabel lblUserName,lblGender,lblAge;</p><p>  JLabel lblPassword,lblConfirm

24、Pass,lblEmail,logoPosition;</p><p>  JTextField txtUserName,txtAge,txtEmail;</p><p>  JPasswordField pwdUserPassword,pwdConfirmPass;</p><p>  JRadioButton rbtnMale,rbtnFemale;<

25、;/p><p>  ButtonGroup btngGender;</p><p>  JButton btnOk,btnCancel,btnClear;</p><p>  String strServerIp;</p><p>  final JLabel headLabel = new JLabel();</p><

26、;p>  Dimension scrnsize;</p><p>  Toolkit toolkit=Toolkit.getDefaultToolkit();</p><p>  public Register(String ip)</p><p>  { super("注冊");</p><p>  strSe

27、rverIp=ip;</p><p>  pnlRegister=new JPanel();</p><p>  this.getContentPane().add(pnlRegister);</p><p>  lblUserName=new JLabel("用 戶 名:");</p><p>  lblGender=n

28、ew JLabel("性 別:");</p><p>  lblAge=new JLabel("年 齡:");</p><p>  lblPassword=new JLabel("密碼:");</p><p>  lblConfirmPass=new JLabel("確認(rèn)密碼:&quo

29、t;);</p><p>  lblEmail=new JLabel("電子郵件:");</p><p>  txtUserName=new JTextField(30);</p><p>  txtEmail=new JTextField(30);</p><p>  txtAge=new JTextField(10);

30、</p><p>  pwdUserPassword=new JPasswordField(30);</p><p>  pwdConfirmPass=new JPasswordField(30);</p><p>  rbtnMale=new JRadioButton("男",true);</p><p>  rbtnF

31、emale=new JRadioButton("女");</p><p>  btngGender=new ButtonGroup();</p><p>  btnOk=new JButton("確定");</p><p>  btnOk.setToolTipText("保存注冊信息");</p>

32、;<p>  btnCancel=new JButton("返回");</p><p>  btnCancel.setToolTipText("返回登錄窗口");</p><p>  btnClear=new JButton("清空");</p><p>  btnClear.setToolT

33、ipText("清空注冊信息");</p><p>  pnlRegister.setLayout(null);</p><p>  lblUserName.setBounds(30,80,100,30);</p><p>  txtUserName.setBounds(110,85,120,20);</p><p>  

34、lblPassword.setBounds(30,141,100,30);</p><p>  pwdUserPassword.setBounds(110,146,120,20);</p><p>  lblConfirmPass.setBounds(30,166,100,30);</p><p>  pwdConfirmPass.setBounds(110,171

35、,120,20);</p><p>  lblGender.setBounds(30,191,100,30);</p><p>  rbtnMale.setBounds(110,196,60,20);</p><p>  rbtnFemale.setBounds(190,196,60,20);</p><p>  lblAge.setBoun

36、ds(30,216,100,30);</p><p>  txtAge.setBounds(110,221,120,20);</p><p>  lblEmail.setBounds(30,241,100,30);</p><p>  txtEmail.setBounds(110,246,120,20);</p><p>  btnOk.se

37、tBounds(246,166,80,25);</p><p>  btnCancel.setBounds(246,201,80,25);</p><p>  btnClear.setBounds(246,241,80,25);</p><p>  Font fontstr=new Font("宋體",Font.PLAIN,12);</

38、p><p>  lblUserName.setFont(fontstr);</p><p>  lblGender.setFont(fontstr);</p><p>  lblPassword.setFont(fontstr);</p><p>  lblConfirmPass.setFont(fontstr);</p><

39、p>  lblAge.setFont(fontstr);</p><p>  lblEmail.setFont(fontstr);</p><p>  rbtnMale.setFont(fontstr);</p><p>  rbtnFemale.setFont(fontstr);</p><p>  txtUserName.setFo

40、nt(fontstr);</p><p>  txtEmail.setFont(fontstr);</p><p>  btnOk.setFont(fontstr);</p><p>  btnCancel.setFont(fontstr);</p><p>  btnClear.setFont(fontstr);</p>&

41、lt;p>  rbtnMale.setOpaque(false); </p><p>  rbtnFemale.setOpaque(false);</p><p>  pnlRegister.add(lblUserName);</p><p>  pnlRegister.add(lblPassword);</p><p>  pnl

42、Register.add(lblConfirmPass);</p><p>  pnlRegister.add(lblEmail);</p><p>  pnlRegister.add(lblAge);</p><p>  pnlRegister.add(txtAge);</p><p>  pnlRegister.add(txtUserNa

43、me);</p><p>  pnlRegister.add(txtEmail);</p><p>  pnlRegister.add(pwdUserPassword);</p><p>  pnlRegister.add(pwdConfirmPass);</p><p>  pnlRegister.add(btnOk);</p>

44、<p>  pnlRegister.add(btnCancel);</p><p>  pnlRegister.add(btnClear);</p><p>  pnlRegister.add(rbtnMale);</p><p>  pnlRegister.add(rbtnFemale);</p><p>  btngGend

45、er.add(rbtnMale);</p><p>  btngGender.add(rbtnFemale); </p><p>  this.setSize(360,313);</p><p>  this.setVisible(true);</p><p>  this.setResizable(false);</p>

46、<p>  btnOk.addActionListener(this);</p><p>  btnCancel.addActionListener(this);</p><p>  btnClear .addActionListener(this);</p><p><b>  }</b></p><p&g

47、t;  public void actionPerformed(ActionEvent ae)</p><p><b>  {</b></p><p>  Object source=new Object();</p><p>  source=ae.getSource();</p><p>  if (source.e

48、quals(btnOk)) {</p><p>  register();</p><p><b>  }</b></p><p>  if (source.equals(btnCancel)) </p><p><b>  {</b></p><p>

49、  new Login();</p><p>  this.dispose();</p><p><b>  }</b></p><p>  if (source.equals(btnClear)) {</p><p>  txtUserName.setText("");</p&g

50、t;<p>  pwdUserPassword.setText("");</p><p>  pwdConfirmPass.setText("");</p><p>  txtAge.setText("");</p><p>  txtEmail.setText("");

51、</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void register()</p><p><b>  {</b></p><p>  Register_Customer data

52、=new Register_Customer();</p><p>  data.custName = txtUserName.getText();</p><p>  data.custPassword = pwdUserPassword.getText();</p><p>  data.age = txtAge.getText();&

53、lt;/p><p>  data.sex = rbtnMale.isSelected()?"男":"女";</p><p>  data.email = txtEmail.getText();</p><p><b>  //chenmin</b></p><

54、;p>  if(data.custName.length()==0)</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(null,"用戶名不能為空");</p><p><b>  return;</b></p>

55、<p><b>  }</b></p><p>  if(data.custPassword.length()==0)</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(null,"密碼不能為空");</p>

56、;<p><b>  return;</b></p><p><b>  }</b></p><p>  if(!data.custPassword.equals(pwdConfirmPass.getText()))</p><p><b>  {</b></p><

57、;p>  JOptionPane.showMessageDialog(null,"密碼兩次輸入不一致,請重新輸入"); return;</p><p><b>  }</b></p><p>  int age=Integer.parseInt(txtAge.getText());</p><p>  if (ag

58、e<=0||age>100){</p><p>  JOptionPane.showMessageDialog(null,"年齡輸入不合法");</p><p><b>  return;</b></p><p>  }int Found_flag=0; //判斷標(biāo)志</p><p&

59、gt;  for (int i=0;i<data.email.length();i++)</p><p><b>  {</b></p><p>  if(data.email.charAt(i)=='@')</p><p><b>  {</b></p><p>  Foun

60、d_flag++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(Found_flag!=1)</p><p><b>  {</b></p><p>  JOptionPane.showM

61、essageDialog(null,"電子郵箱格式不正確,請重新輸入");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  data_test dt=new data_test();</p><p>  dt.a

62、ddData("1",data.custName, data.custPassword, data.sex, data.age, data.email);</p><p><b>  try</b></p><p><b>  {</b></p><p>  Socket toServer;</p

63、><p>  toServer = new Socket(strServerIp,1001);</p><p>  ObjectOutputStream streamToServer=new ObjectOutputStream (toServer.getOutputStream());</p><p>  streamToServer.writeObject

64、((Register_Customer)data); BufferedReader fromServer=new BufferedReader(new InputStreamReader(toServer.getInputStream()));</p><p>  String status=fromServer.readLine();</p><p>  JOpti

65、onPane op=new JOptionPane();</p><p>  op.showMessageDialog(null,status);</p><p>  if(status.equals(data.custName+"注冊成功"))</p><p><b>  {</b></p><p>

66、;  txtUserName.setText("");</p><p>  pwdUserPassword.setText("");</p><p>  pwdConfirmPass.setText("");</p><p>  txtAge.setText("");</p>

67、<p>  txtEmail.setText("");</p><p><b>  }</b></p><p>  streamToServer.close();</p><p>  fromServer.close();</p><p><b>  }</b>&l

68、t;/p><p>  catch(InvalidClassException e1)</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(null,"類錯誤!");</p><p><b>  }</b></p

69、><p>  catch(NotSerializableException e2)</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(null,"對象未序列化!");</p><p><b>  }</b><

70、/p><p>  catch(IOException e3)</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(null,"不能寫入到指定服務(wù)器!");</p><p><b>  }</b></p>

71、<p><b>  } </b></p><p>  public static void main(String args[])</p><p><b>  {</b></p><p>  new Register("127.0.0.1");</p><p><

72、;b>  }</b></p><p><b>  } </b></p><p><b>  登錄界面代碼:</b></p><p>  package t_test;</p><p>  import javax.swing.*;</p><p>  im

73、port java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import java.net.*;</p><p>  import java.sql.ResultSet;</p><p>  import java.sql.Statement;</p><p&

74、gt;  import java.io.*;</p><p>  public class Login extends JFrame implements ActionListener {</p><p>  private static final long serialVersionUID = -8965773902056088264L;</p><p>  p

75、rivate JPanel pnlLogin;</p><p>  private JButton btnLogin, btnRegister, btnExit;</p><p>  private JLabel lblServer, lblUserName, lblPassword, lblLogo;</p><p>  private JTextField tx

76、tUserName, txtServer;</p><p>  private JPasswordField pwdPassword;</p><p>  private String strServerIp;</p><p>  private Dimension scrnsize;</p><p>  private Toolkit to

77、olkit = Toolkit.getDefaultToolkit();</p><p>  public Login() {</p><p>  super("登錄");</p><p>  pnlLogin = new JPanel();</p><p>  this.getContentPane().add(pnlL

78、ogin);</p><p>  lblServer = new JLabel("服務(wù)器:");</p><p>  lblUserName = new JLabel("用戶名:");</p><p>  lblPassword = new JLabel("密碼:");</p><p&g

79、t;  txtServer = new JTextField(20);</p><p><b>  try {</b></p><p>  InetAddress address = InetAddress.getLocalHost();</p><p>  String ip=address.getHostAddress();</p&g

80、t;<p>  System.out.print(ip);</p><p>  txtServer.setText(ip);</p><p>  } catch (UnknownHostException e) {</p><p>  e.printStackTrace();</p><p><b>  }</b

81、></p><p>  txtUserName = new JTextField(20);</p><p>  pwdPassword = new JPasswordField(20);</p><p>  btnLogin = new JButton("登錄");</p><p>  btnLogin.setToo

82、lTipText("登錄到服務(wù)器");</p><p>  btnRegister = new JButton("注冊");</p><p>  btnRegister.setToolTipText("注冊新用戶");</p><p>  btnExit = new JButton("退出&quo

83、t;);</p><p>  btnExit.setToolTipText("退出系統(tǒng)");</p><p>  pnlLogin.setLayout(null);</p><p>  lblServer.setBounds(50, 100, 100, 30);</p><p>  txtServer.setBounds(

84、150, 100, 120, 25);</p><p>  lblUserName.setBounds(50, 130, 100, 30);</p><p>  txtUserName.setBounds(150, 130, 120, 25);</p><p>  lblPassword.setBounds(50, 160, 100, 30);</p>

85、<p>  pwdPassword.setBounds(150, 160, 120, 25);</p><p>  btnLogin.setBounds(50, 200, 80, 25);</p><p>  btnRegister.setBounds(130, 200, 80, 25);</p><p>  btnExit.setBounds(210,

86、 200, 80, 25);</p><p>  Font fontstr = new Font("宋體", Font.PLAIN, 12);</p><p>  lblServer.setFont(fontstr);</p><p>  txtServer.setFont(fontstr);</p><p>  lblU

87、serName.setFont(fontstr);</p><p>  txtUserName.setFont(fontstr);</p><p>  lblPassword.setFont(fontstr);</p><p>  pwdPassword.setFont(fontstr);</p><p>  btnLogin.setFont

88、(fontstr);</p><p>  btnRegister.setFont(fontstr);</p><p>  btnExit.setFont(fontstr);</p><p>  pnlLogin.add(lblServer);</p><p>  pnlLogin.add(txtServer);</p><

89、p>  pnlLogin.add(lblUserName);</p><p>  pnlLogin.add(txtUserName);</p><p>  pnlLogin.add(lblPassword);</p><p>  pnlLogin.add(pwdPassword);</p><p>  pnlLogin.add(btnL

90、ogin);</p><p>  pnlLogin.add(btnRegister);</p><p>  pnlLogin.add(btnExit);</p><p>  setResizable(false);</p><p>  setSize(340, 260);</p><p>  setVisible(tr

91、ue);</p><p>  btnLogin.addActionListener(this);</p><p>  btnRegister.addActionListener(this);</p><p>  btnExit.addActionListener(this);</p><p>  }public void actionPer

92、formed(ActionEvent ae) {</p><p>  Object source = ae.getSource();</p><p>  if (source.equals(btnLogin)) {</p><p>  if (txtUserName.getText().equals("")</p><p>

93、;  || pwdPassword.getText().equals("")) {</p><p>  JOptionPane op1 = new JOptionPane();</p><p>  op1.showMessageDialog(null, "用戶名或密碼不能為空");</p><p><b>  } e

94、lse {</b></p><p>  strServerIp = txtServer.getText();</p><p><b>  login();</b></p><p><b>  }</b></p><p><b>  }</b></p>

95、<p>  if (source.equals(btnRegister)) {</p><p>  strServerIp = txtServer.getText();</p><p>  this.dispose();</p><p>  new Register(strServerIp);</p><p><b>  

96、}</b></p><p>  if (source == btnExit) {</p><p>  System.exit(0);</p><p><b>  }</b></p><p>  } // actionPerformed()結(jié)束</p><p>  public void

97、 login() {</p><p>  try{data_test dt=new data_test();</p><p>  Statement st=dt.oneConnection.createStatement();</p><p>  String sql="select* from peopleMessege";</p>

98、<p>  //st.executeQuery(sql);</p><p>  ResultSet es=st.executeQuery(sql);</p><p>  }catch(Exception e){</p><p><b>  }</b></p><p><b>  }</b&g

99、t;</p><p>  new ChatRoom(getTitle(), strServerIp);</p><p>  }public static void main(String args[]) {</p><p>  new Login();</p><p><b>  }</b></p>&l

100、t;p><b>  } </b></p><p>  聊天界面與功能代碼:</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import java.util.EventListener;</p><

101、;p>  import java.io.*;</p><p>  import java.net.*;</p><p>  public class ClientFrame extends Frame implements ActionListener{</p><p>  //窗體應(yīng)該有發(fā)送按鈕、文本框用來輸入東西、List列表用來顯示信息</p>

102、;<p>  Button connectbutton=new Button("連接");</p><p>  Button sendbutton=new Button("發(fā)送");</p><p>  TextField userid=new TextField(10);</p><p>  TextField

103、 myid=new TextField(10);</p><p>  List list =new List();</p><p>  TextField content=new TextField(20);</p><p>  TextField servername=new TextField(20);</p><p>  Label l

104、abel=new Label("服務(wù)器地址:");</p><p>  Label labe2=new Label("聊 天 信 息:");</p><p>  Label labe3=new Label("好 友 賬 號:");</p><p>  Label labe4=new Label("

105、;本 人 賬 號:");</p><p>  Socket socket;</p><p>  public ClientFrame(){</p><p>  super("聊天窗體");</p><p>  sendbutton.addActionListener(this);</p><p

106、>  connectbutton.addActionListener(this);</p><p>  Panel p1=new Panel();</p><p>  p1.add(labe4);</p><p>  p1.add(myid);</p><p>  p1.add(label);</p><p> 

107、 p1.add(servername);</p><p>  p1.add(connectbutton);</p><p>  Panel p2=new Panel();</p><p>  p2.add(labe3);</p><p>  p2.add(userid);</p><p>  p2.add(labe2)

108、;</p><p>  p2.add(content);</p><p>  p2.add(sendbutton);</p><p>  sendbutton.setEnabled(false);</p><p>  Panel p3=new Panel();</p><p>  p3.setLayout(new Bo

109、rderLayout());</p><p>  p3.add("South",p2);</p><p>  p3.add(list);</p><p>  this.add("South",p1);</p><p>  this.add(p3);</p><p>  this.

110、setSize(600,600);</p><p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e) {</p><p>  if(e.getSource()==connectbutton){//連接服務(wù)器按鈕作用是連接服務(wù)器</p><p>

111、;<b>  //連接服務(wù)器</b></p><p><b>  try{</b></p><p>  socket=new Socket(servername.getText(),9000);</p><p>  //必須馬上發(fā)一個消息,表明自己的身份</p><p><b>  try

112、{</b></p><p>  OutputStream out=socket.getOutputStream();</p><p>  PrintWriter pw=new PrintWriter(out,true);//強(qiáng)制把流寫出來</p><p>  pw.println("**" + myid.getText()); //使

113、用特殊符號,表明這是該用戶第一次發(fā)送消息</p><p>  myid.setEnabled(false);</p><p>  servername.setEnabled(false);</p><p>  sendbutton.setEnabled(true);</p><p>  }catch(Exception ex)</p&g

114、t;<p><b>  {</b></p><p>  ex.printStackTrace();</p><p><b>  }</b></p><p>  connectbutton.setEnabled(false);</p><p>  javax.swing.JOpti

115、onPane.showMessageDialog(this,"連接成功");</p><p>  //啟動接收線程,并把輸入流和list列表同時交給線程</p><p>  new ClientReceiveThread(socket.getInputStream(),list).start();</p><p><b>  }<

116、/b></p><p>  catch(Exception ex){</p><p>  javax.swing.JOptionPane.showMessageDialog(this,"連接服務(wù)器失敗");</p><p>  ex.printStackTrace();</p><p><b>  }<

117、;/b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  //發(fā)送信息, 需要添加對方的賬號信息</p><p><b>  try{&l

118、t;/b></p><p>  OutputStream out=socket.getOutputStream();</p><p>  PrintWriter pw=new PrintWriter(out,true);</p><p>  pw.println(userid.getText() +":"+ content.getText(

119、));</p><p>  list.add("本人 :"+content.getText()+"\t");</p><p>  content.setText("");</p><p>  }catch(Exception ex)</p><p><b>  {</

120、b></p><p>  ex.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b

121、></p><p>  import java.awt.*;</p><p>  import java.io.*;</p><p>  import java.net.*;</p><p>  public class ClientReceiveThread extends Thread{</p><p>  

122、InputStream in;</p><p>  List list;</p><p>  public ClientReceiveThread(InputStream in,List list){</p><p>  //在下面完成參數(shù)傳遞</p><p>  this.in=in;</p><p>  this.

123、list=list;</p><p><b>  }</b></p><p>  public void run(){</p><p><b>  try{</b></p><p>  BufferedReader br=new BufferedReader(new InputStreamReade

124、r(in));</p><p>  while(true){</p><p>  String str=br.readLine();//得不到值會阻塞</p><p>  list.add(str);//得到的信息往窗體上的list里寫,list會自動更新顯示</p><p><b>  }</b></p>

125、<p>  }catch(Exception e){}</p><p><b>  }</b></p><p><b>  }</b></p><p>  import java.awt.*;</p><p>  import java.io.*;</p><p&g

126、t;  import java.net.*;</p><p>  public class ClientReceiveThread extends Thread{</p><p>  InputStream in;</p><p>  List list;</p><p>  public ClientReceiveThread(InputS

127、tream in,List list){</p><p>  //在下面完成參數(shù)傳遞</p><p>  this.in=in;</p><p>  this.list=list;</p><p><b>  }</b></p><p>  public void run(){</p>

128、<p><b>  try{</b></p><p>  BufferedReader br=new BufferedReader(new InputStreamReader(in));</p><p>  while(true){</p><p>  String str=br.readLine();//得不到值會阻塞</

129、p><p>  list.add(str);//得到的信息往窗體上的list里寫,list會自動更新顯示</p><p><b>  }</b></p><p>  }catch(Exception e){}</p><p><b>  }</b></p><p><b&g

130、t;  }</b></p><p>  import java.io.*;</p><p>  import java.net.*;</p><p>  import java.util.*;</p><p>  public class QQServer{</p><p>  public static

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論