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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  Java課程設(shè)計(jì)報(bào)告</p><p>  題 目 剪刀石頭布人機(jī)對(duì)戰(zhàn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  所在單位 信息科學(xué)系軟件工程教研室 </p><p>  教學(xué)部主任 </p><

2、;p>  完成日期 2013年9月13日</p><p>  《Java課程設(shè)計(jì)》任務(wù)書(shū)</p><p><b>  任務(wù)及要求:</b></p><p>  一、設(shè)計(jì)(研究)內(nèi)容和要求</p><p>  內(nèi)容:編寫(xiě)一個(gè)管理軟件,使用GUI界面,實(shí)現(xiàn)信息管理功能。包括對(duì)信息的查詢,添加,刪除等操作。采用數(shù)據(jù)庫(kù)存

3、儲(chǔ)數(shù)據(jù)。</p><p><b>  要求:</b></p><p><b>  1、軟件要求</b></p><p> ?。?)實(shí)現(xiàn)界面。進(jìn)行系統(tǒng)需求分析和系統(tǒng)設(shè)計(jì),寫(xiě)出系統(tǒng)分析和設(shè)計(jì)報(bào)告。</p><p> ?。?)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接和應(yīng)用功能。</p><p> ?。?)

4、實(shí)現(xiàn)對(duì)數(shù)據(jù)的查詢,添加,刪除等功能。</p><p><b>  2、文檔要求</b></p><p>  (1) 設(shè)計(jì)程序結(jié)構(gòu)、畫(huà)出模塊圖。</p><p>  (2) 按照指導(dǎo)教師給出的項(xiàng)目文檔的模板進(jìn)行書(shū)寫(xiě)。</p><p>  (3) 參考文獻(xiàn)數(shù)量不得低于4個(gè)。</p><p><b

5、>  二、工作量</b></p><p>  2周(10個(gè)工作日)時(shí)間</p><p><b>  三、計(jì)劃安排</b></p><p>  第1個(gè)工作日-第2個(gè)工作日:查找相關(guān)資料、書(shū)籍,閱讀示例文檔;</p><p>  設(shè)計(jì)程序結(jié)構(gòu)、模塊圖、完成類(lèi)的設(shè)計(jì)。</p><p>

6、  第3個(gè)工作日-第8個(gè)工作日:完成程序的編碼,并且自己調(diào)試、測(cè)試。穿插進(jìn)行項(xiàng)目文檔的撰寫(xiě)。</p><p>  第9個(gè)工作日:撰寫(xiě)和整理項(xiàng)目文檔。</p><p>  第10個(gè)工作日:由教師檢查軟件測(cè)試效果、項(xiàng)目文檔,給出學(xué)生本課程成績(jī)。</p><p><b>  指導(dǎo)教師簽字:</b></p><p><b&

7、gt;  2013年9月2日</b></p><p><b>  目錄</b></p><p><b>  題目:1</b></p><p><b>  1.需求分析1</b></p><p><b>  2.概要設(shè)計(jì)1</b></

8、p><p><b>  3.詳細(xì)設(shè)計(jì)1</b></p><p><b>  4.編碼1</b></p><p><b>  5.調(diào)試分析1</b></p><p>  6.測(cè)試結(jié)果及運(yùn)行效果1</p><p>  7.系統(tǒng)開(kāi)發(fā)所用到的技術(shù)1<

9、/p><p><b>  參考文獻(xiàn)1</b></p><p><b>  附錄 全部代碼1</b></p><p><b>  題目:</b></p><p>  石頭剪刀布人機(jī)對(duì)戰(zhàn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  1.需求分析&l

10、t;/b></p><p>  這是一個(gè)古老耐玩的游戲,根據(jù)一般的常識(shí),首先要有兩個(gè)人,兩個(gè)人同時(shí)出,然后,根據(jù)雙方的出拳,決定誰(shuí)是贏者,雖然想起來(lái)這個(gè)游戲很簡(jiǎn)單,但如何實(shí)現(xiàn) ,還是有一定難度的。實(shí)現(xiàn)這個(gè)時(shí)針時(shí)涉及到幾個(gè)技術(shù)問(wèn)題:</p><p><b>  雙方如何出拳</b></p><p><b>  如何同時(shí)出拳<

11、/b></p><p><b>  如何判斷哪方贏了</b></p><p><b>  如何顯示結(jié)果</b></p><p>  剪刀石頭布游戲,都是通過(guò)兩個(gè)人同時(shí)出拳,然后根據(jù)雙方出的拳,判定哪方是贏家。準(zhǔn)確性:在實(shí)現(xiàn)此的過(guò)程中,我們要考慮到,雙方是否能同時(shí)地出拳,還要就是如何去判斷,準(zhǔn)確地知道哪方是贏家.簡(jiǎn)潔性

12、:在實(shí)現(xiàn)此的過(guò)程中,我們要考慮到,怎樣使游戲界面更簡(jiǎn)單,讓人更容易明白它怎樣去玩。</p><p><b>  2.概要設(shè)計(jì)</b></p><p>  在設(shè)計(jì)游戲時(shí),我們要充分考慮到剪刀石頭布游戲的特性,以及多種技術(shù)的實(shí)現(xiàn):</p><p> ?、艠?gòu)造創(chuàng)建服務(wù)器端和客戶端</p><p><b> ?、苿?chuàng)建輸

13、入輸出流</b></p><p> ?、蔷帉?xiě)服務(wù)器端處理數(shù)據(jù)的線程方法</p><p><b>  ⑷繪制游戲界面</b></p><p><b> ?、衫L制界面上的提示</b></p><p>  采用此方法設(shè)計(jì)使程序簡(jiǎn)潔明了,使繪制游戲界面時(shí)簡(jiǎn)單化,更加易于游戲的實(shí)現(xiàn),程序也更易于讀

14、懂。</p><p><b>  3.詳細(xì)設(shè)計(jì)</b></p><p>  3.1自定義類(lèi)中子類(lèi)和其父類(lèi)的繼承關(guān)系如圖</p><p>  圖3.1子類(lèi)及其父類(lèi)繼承關(guān)系圖</p><p>  3.2 Java類(lèi)及自定義類(lèi)的說(shuō)明</p><p><b>  自定義類(lèi):</b>&

15、lt;/p><p>  類(lèi)名:SocketServer</p><p><b>  作用:服務(wù)器類(lèi)</b></p><p>  繼承的父類(lèi):Thread類(lèi)</p><p><b>  實(shí)現(xiàn)的接口:無(wú)</b></p><p>  類(lèi)名:Service</p><

16、p>  作用: 服務(wù)器類(lèi),它是判定勝負(fù)的類(lèi)</p><p>  繼承的父類(lèi):Thread類(lèi)</p><p>  類(lèi)中成員: String data; </p><p>  BufferedReader inputs; </p><p>  PrintStream outputs; </p><p>  Sock

17、et client;</p><p><b>  實(shí)現(xiàn)的接口:無(wú)</b></p><p><b>  類(lèi)名:Client</b></p><p><b>  作用:客戶端類(lèi)</b></p><p>  類(lèi)中的成員: getInputStream();</p>&

18、lt;p>  getOutputStream();</p><p>  InputStreamReader ();</p><p>  readLine();</p><p><b>  實(shí)現(xiàn)的接口:無(wú)</b></p><p>  3.3類(lèi)中成員及作用</p><p>  Service類(lèi)成

19、員:</p><p>  String data; //接收數(shù)據(jù)</p><p>  BufferedReader inputs;// 讀取數(shù)據(jù)</p><p>  PrintStream outputs;//輸出數(shù)據(jù)</p><p>  Socket client;//定義套接字</p><p>  Client類(lèi)成

20、員:</p><p>  String data;//接收數(shù)據(jù)</p><p>  Socket client = null;//定義套接字 </p><p>  BufferedReader inputs = null;// 讀取數(shù)據(jù)</p><p>  BufferedReader key = null;// 緩沖數(shù)據(jù)</p>

21、<p>  PrintStream outputs = null;//輸出數(shù)據(jù)</p><p><b>  4.編碼</b></p><p><b>  4.1類(lèi)獲包的加載</b></p><p>  加載剪刀石頭布游戲設(shè)計(jì)中用到的類(lèi)和包,用于運(yùn)行主程序:</p><p>  impo

22、rt java.io.*; </p><p>  import java.net.*; </p><p>  4.2自定義類(lèi)創(chuàng)建服務(wù)器端</p><p>  使用自定義類(lèi)ServerSocket繼承父類(lèi)Thread使用run等方法,構(gòu)造函數(shù)創(chuàng)建一個(gè)服務(wù)器端。</p><p><b>  程序代碼如下:</b></p

23、><p>  public class SocketServer extends Thread { </p><p>  ServerSocket server; </p><p>  public SocketServer() { </p><p><b>  try { </b></p><p>

24、  server = new ServerSocket(6000); </p><p><b>  } </b></p><p>  catch(IOException e) { </p><p>  System.exit(0); </p><p><b>  } </b></p>

25、<p>  this.start();</p><p><b>  } </b></p><p>  public void run() { </p><p><b>  try {</b></p><p>  while(true) {</p><p>  S

26、ocket client = server.accept();</p><p>  Service ss = new Service(client);</p><p><b>  } </b></p><p><b>  } </b></p><p>  catch(IOException e) {

27、 </p><p>  System.exit(1); </p><p><b>  } </b></p><p><b>  } </b></p><p>  public static void main(String[] args) {</p><p>  new So

28、cketServer();</p><p><b>  } </b></p><p><b>  }</b></p><p>  4.3創(chuàng)建數(shù)據(jù)處理類(lèi)</p><p>  創(chuàng)建一個(gè)用于數(shù)據(jù)處理類(lèi)使服務(wù)器能準(zhǔn)確處理數(shù)據(jù),獲取數(shù)據(jù),并使用方法run()實(shí)現(xiàn)數(shù)據(jù)處理。實(shí)現(xiàn)代碼如下:</p>

29、<p>  //創(chuàng)建數(shù)據(jù)儲(chǔ)存變量</p><p>  inputs = new BufferedReader(new InputStreamReader(client.getInputStream()));</p><p>  outputs = new PrintStream(client.getOutputStream());    &

30、#160;  </p><p>  //創(chuàng)建一個(gè)Run方法        public void run() { </p><p><b>  }</b></p><p><b>  4.4創(chuàng)建客戶端類(lèi)</b></p

31、><p>  創(chuàng)建一個(gè)用于客戶端接收玩家輸入的數(shù)據(jù)的類(lèi),程序?qū)崿F(xiàn)代碼如下:</p><p>  //接收客戶端的數(shù)據(jù)</p><p>  public class Client { </p><p>  public static void main(String[] args) { </p><p>  String d

32、ata; </p><p>  Socket client = null; </p><p>  BufferedReader inputs = null; </p><p>  BufferedReader key = null; </p><p>  PrintStream outputs = null; </p><

33、p><b>  try { </b></p><p>  client = new Socket("localhost",6000); </p><p>  inputs = new BufferedReader(new InputStreamReader(client.getInputStream()));</p><p

34、>  outputs = new PrintStream(client.getOutputStream());</p><p>  key = new BufferedReader(new InputStreamReader(System.in)); </p><p><b>  } </b></p><p>  catch(IOExce

35、ption e) { </p><p>  System.out.println("CAN NOT CONN WITH SERVER"); </p><p><b>  } </b></p><p><b>  try { </b></p><p>  while(true) {

36、 </p><p>  System.out.println("----------------------------"); </p><p>  System.out.print("請(qǐng)出拳:石頭/剪刀/布 "); </p><p>  data = key.readLine();</p><p> 

37、 outputs.println(data);</p><p>  System.out.println("ECHO: " + inputs.readLine()); </p><p><b>  } </b></p><p><b>  } </b></p><p>  cat

38、ch(IOException e) { </p><p>  System.out.println("ERROR IO"); </p><p><b>  } </b></p><p><b>  try { </b></p><p>  client.close(); <

39、/p><p><b>  } </b></p><p>  catch(IOException e) { </p><p>  System.out.println("can not close it"); </p><p><b>  } </b></p><p

40、><b>  } </b></p><p><b>  } </b></p><p><b>  5.調(diào)試分析</b></p><p>  此游戲界面簡(jiǎn)潔明了,但還是有許多問(wèn)題的,比如說(shuō)這個(gè)界面不是GUI的,所以操作性不強(qiáng),也不美觀,而且處理數(shù)據(jù)的random函數(shù)也有問(wèn)題,它可能出現(xiàn)相同的結(jié)果,

41、不能成為真正意義上的隨機(jī),所以這個(gè)小游戲還是有許多問(wèn)題的,我會(huì)進(jìn)一步的改進(jìn)它。</p><p>  而且由于本游戲畫(huà)面簡(jiǎn)陋,可玩性不強(qiáng),我針對(duì)這一特點(diǎn)在游戲中適當(dāng)加入一些文字,大大增加了游戲的趣味性與耐玩度。</p><p>  6.測(cè)試結(jié)果及運(yùn)行效果</p><p><b>  6.1首先運(yùn)行代碼</b></p><p&g

42、t;<b>  圖6.1運(yùn)行環(huán)境</b></p><p><b>  6.2游戲界面</b></p><p>  代碼運(yùn)行后直接進(jìn)入游戲界面,可以看到我加入的個(gè)性鮮明的文字,讓人看完之后熱血沸騰,迫不及待想開(kāi)始游戲。</p><p>  圖6.2游戲開(kāi)始界面</p><p><b>  6

43、.3游戲運(yùn)行界面</b></p><p>  游戲運(yùn)行正常,想要的功能全部得到實(shí)現(xiàn)。下圖為在游戲的過(guò)程中玩家被電腦擊敗。</p><p>  圖6.3游戲運(yùn)行界面</p><p>  下圖為在游戲中玩家擊敗了電腦,取得了本局游戲的勝利。我們可以清楚的看到,每一局比賽的記錄。</p><p><b>  圖6.4游戲畫(huà)面&

44、lt;/b></p><p>  7.系統(tǒng)開(kāi)發(fā)所用到的技術(shù)</p><p>  本課程設(shè)計(jì)使用Java語(yǔ)言,運(yùn)用 java.io包和java.net包及getInputStream()、getOutputStream()等方法,編寫(xiě)出一個(gè)能在dos環(huán)境中顯示出剪刀石頭布游戲界面,啟動(dòng)服務(wù)器端線程,運(yùn)行客戶端線程,提示玩家出拳,然后,程序把玩家輸入的數(shù)據(jù)傳入到服務(wù)器端,通過(guò)服務(wù)器端線程

45、的函數(shù)得出結(jié)果,然后再把結(jié)果傳輸?shù)浇缑嫔稀?lt;/p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 劉彬編著,java高級(jí)教程,清華大學(xué)出版社 </p><p>  [2] 張陽(yáng)《java Web開(kāi)發(fā)實(shí)踐教程----從設(shè)計(jì)到實(shí)現(xiàn)》,清華大學(xué)出版社</p><p>  [3] 危鋒《論JAVA繼承機(jī)制中父

46、類(lèi)與子類(lèi)的關(guān)系》福建電腦出版社 </p><p><b>  附錄 全部代碼</b></p><p>  import java.awt.*;</p><p>  import javax.swing.*;</p><p>  import java.awt.event.*;</p><

47、p>  import java.util.Random;</p><p>  public class abcc implements ActionListener{</p><p>  JFrame frame;</p><p>  JTextArea Jta;</p><p>  JTextField tf;</p>

48、<p>  JButton b1,b2,b3,b4;</p><p>  Random random;</p><p>  String[] result={"石頭","剪刀","布"};</p><p>  private static int cupguess=0,myguess=0; <

49、;/p><p>  public static void main(String[] args){</p><p>  abcc shitou=new abcc();</p><p>  shitou.go();</p><p><b>  }</b></p><p>  void go(){<

50、/p><p>  frame=new JFrame("不服就用拳頭來(lái)解決問(wèn)題");</p><p>  tf=new JTextField("世界級(jí)拳王爭(zhēng)霸,是男人就來(lái)決斗吧,計(jì)算機(jī)李易霖制作");</p><p>  Jta=new JTextArea();</p><p>  Jta.setLineWr

51、ap(true);</p><p>  b1=new JButton("石頭");</p><p>  b2=new JButton("剪刀");</p><p>  b3=new JButton("布");</p><p>  b4=new JButton("退出&quo

52、t;);</p><p>  //b5=new JButton("重開(kāi)");</p><p>  //random=new Random().nextInt(3);</p><p>  Container cp=frame.getContentPane();</p><p>  JPanel p1=new JPanel(n

53、ew GridLayout(2,1));</p><p>  p1.add(tf);</p><p>  p1.add(Jta);</p><p>  JPanel p2=new JPanel(new GridLayout());</p><p>  p2.add(b1);</p><p>  p2.add(b2);&

54、lt;/p><p>  p2.add(b3);</p><p>  p2.add(b4);</p><p>  //p2.add(b5);</p><p>  b1.addActionListener(this);</p><p>  b2.addActionListener(this);</p><p

55、>  b3.addActionListener(this);</p><p>  b4.addActionListener(this);</p><p>  //b5.addActionListener(this);</p><p>  cp.add(p1,BorderLayout.CENTER);</p><p>  cp.add(p

56、2,BorderLayout.SOUTH);</p><p>  frame.setVisible(true);</p><p>  frame.setSize(400,300);</p><p>  frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);</p><p><b> 

57、 }</b></p><p>  public void actionPerformed(ActionEvent e){</p><p>  random=new Random();</p><p>  int i=random.nextInt(3);</p><p>  if(e.getActionCommand()==&quo

58、t;石頭"){</p><p>  if(result[i].equals(result[0])){</p><p>  Jta.setText("");</p><p>  String s1=String.valueOf(myguess);</p><p>  String s2=String.valueOf

59、(cupguess);</p><p>  Jta.append("您: 石頭 VS 世界級(jí)拳皇: 石頭 本局平手");</p><p>  Jta.append("\n\n現(xiàn)在比分是:您: "+s1+"世界級(jí)拳王: "+s2);</p><p><b>  }</b>

60、;</p><p>  if(result[i].equals(result[1])){</p><p>  Jta.setText("");</p><p>  ++myguess;</p><p>  String s1=String.valueOf(myguess);</p><p>  St

61、ring s2=String.valueOf(cupguess);</p><p>  Jta.append("您: 石頭 VS 世界級(jí)拳王: 剪刀 本局您勝出");</p><p>  Jta.append("\n\n現(xiàn)在比分是:您: "+s1+"世界級(jí)拳王: "+s2);</p><p>

62、;<b>  }</b></p><p>  if(result[i].equals(result[2])){</p><p>  Jta.setText("");</p><p>  ++cupguess;</p><p>  String s1=String.valueOf(myguess);&l

63、t;/p><p>  String s2=String.valueOf(cupguess);</p><p>  Jta.append("您: 石頭 VS 世界級(jí)拳王: 布 本局您敗北");</p><p>  Jta.append("\n\n現(xiàn)在比分是: 您: "+s1+"世界級(jí)拳王: "+

64、s2);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(e.getActionCommand()=="剪刀"){</p><p>  if(result[i].equals(result[0])){</p>

65、<p>  Jta.setText("");</p><p>  ++cupguess;</p><p>  String s1=String.valueOf(myguess);</p><p>  String s2=String.valueOf(cupguess);</p><p>  Jta.append

66、("您: 剪刀 VS 世界級(jí)拳王: 石頭 本局您慘敗");</p><p>  Jta.append("\n\n現(xiàn)在比分是:您: "+s1+"世界級(jí)拳王: "+s2);</p><p><b>  }</b></p><p>  if(result[i].equals(r

67、esult[1])){</p><p>  Jta.setText("");</p><p>  String s1=String.valueOf(myguess);</p><p>  String s2=String.valueOf(cupguess);</p><p>  Jta.append("您: 剪刀

68、 VS 世界級(jí)拳王: 剪刀 本局平局");</p><p>  Jta.append("\n\n現(xiàn)在比分是: 您: "+s1+"世界級(jí)拳王: "+s2);</p><p><b>  }</b></p><p>  if(result[i].equals(result[2])){&

69、lt;/p><p>  Jta.setText("");</p><p>  ++myguess;</p><p>  String s1=String.valueOf(myguess);</p><p>  String s2=String.valueOf(cupguess);</p><p>  J

70、ta.append("您: 剪刀 VS 世界級(jí)拳王: 布 本局您僥幸勝出");</p><p>  Jta.append("\n\n現(xiàn)在比分是:您: "+s1+"世界級(jí)拳王: "+s2);</p><p><b>  }</b></p><p><b>  

71、}</b></p><p>  if(e.getActionCommand()=="布"){</p><p>  if(result[i].equals("石頭")){</p><p>  Jta.setText("");</p><p>  ++myguess;<

72、/p><p>  String s1=String.valueOf(myguess);</p><p>  String s2=String.valueOf(cupguess);</p><p>  Jta.append("您: 布 VS 世界級(jí)拳王: 石頭 本局您偶然贏了");</p><p>  Jta.

73、append("\n\n現(xiàn)在比分是:您: "+s1+"世界級(jí)拳王: "+s2);</p><p><b>  }</b></p><p>  if(result[i].equals("剪刀")){</p><p>  Jta.setText("");</p&g

74、t;<p>  ++cupguess;</p><p>  String s1=String.valueOf(myguess);</p><p>  String s2=String.valueOf(cupguess);</p><p>  Jta.append("您: 布 VS 世界級(jí)拳王: 剪刀 本局您給輸了許先生&qu

75、ot;);</p><p>  Jta.append("\n\n現(xiàn)在比分是: 您: "+s1+"世界級(jí)拳王: "+s2);</p><p><b>  }</b></p><p>  if(result[i].equals("布")){</p><p>  Jt

76、a.setText("");</p><p>  String s1=String.valueOf(myguess);</p><p>  String s2=String.valueOf(cupguess);</p><p>  Jta.append("您: 布 VS 世界級(jí)拳王: 布 本局是平局")

77、;</p><p>  Jta.append("\n\n現(xiàn)在比分是:您: "+s1+"世界級(jí)拳王: "+s2);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(e.getSource()==b4)Sy

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論