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

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  題目一  計(jì)算器1</p><p>  1.1 需求分析1</p><p>  1.2 總體設(shè)計(jì)1</p><p>  1.2.1 功能設(shè)計(jì)1</p><p>  1.2.2 用戶界面設(shè)計(jì)2</p><

2、;p>  1.2.3 關(guān)鍵算法設(shè)計(jì)2</p><p>  1.3 代碼實(shí)現(xiàn)3</p><p>  1.3.1 類之間的關(guān)系4</p><p>  1.3.2 運(yùn)行效果6</p><p>  1.3.3 打包發(fā)布10</p><p>  1.4 程序測試10</p><p>&l

3、t;b>  1.5 總結(jié)10</b></p><p>  題目二  學(xué)生管理系統(tǒng)11</p><p>  2.1 需求分析11</p><p>  2.2 總體設(shè)計(jì)11</p><p>  2.2.1 功能設(shè)計(jì)11</p><p>  2.2.2 用戶界面設(shè)計(jì)12</p>&

4、lt;p>  2.2.3 數(shù)據(jù)庫表設(shè)計(jì)12</p><p>  2.2.4 關(guān)鍵算法設(shè)計(jì)14</p><p>  2.3 代碼實(shí)現(xiàn)15</p><p>  2.3.1 類之間的關(guān)系16</p><p>  2.3.2 運(yùn)行效果17</p><p>  2.3.3 打包發(fā)布22</p>&

5、lt;p>  2.4 程序測試23</p><p><b>  2.5 總結(jié)23</b></p><p>  題目三 五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)24</p><p>  3.1 需求分析24</p><p>  3.2 總體設(shè)計(jì)24</p><p>  3.2.1 功能設(shè)計(jì)24<

6、;/p><p>  3.2.2 用戶界面設(shè)計(jì)25</p><p>  3.2.2 關(guān)鍵算法設(shè)計(jì)25</p><p>  3.3 代碼實(shí)現(xiàn)26</p><p>  1.3.1 類之間的關(guān)系26</p><p>  1.3.2 運(yùn)行效果29</p><p>  1.3.3 打包發(fā)布33<

7、;/p><p>  3.4 程序測試34</p><p><b>  3.5 總結(jié)34</b></p><p>  附錄3 部分源碼34</p><p><b>  題目一 計(jì)算器</b></p><p><b>  1.1 需求分析</b></

8、p><p>  普通計(jì)算器包括加、減、乘、除等基本運(yùn)算,廣泛運(yùn)用于菜市場,商店等處,而像學(xué)生,老師等科研工作者則需要更高級功能的科學(xué)計(jì)算器。它包括求導(dǎo)、平方、求余、以及sin、cos、tan等函數(shù)功能以及可以實(shí)現(xiàn)不同進(jìn)制轉(zhuǎn)換的問題。該項(xiàng)目設(shè)計(jì)的是一個(gè)可以實(shí)現(xiàn)普通計(jì)算器和科學(xué)計(jì)算器相互轉(zhuǎn)換的新型計(jì)算器。</p><p><b>  1.2 總體設(shè)計(jì)</b></p>

9、;<p>  1.2.1 功能設(shè)計(jì)</p><p>  計(jì)算器有兩個(gè)部分,標(biāo)準(zhǔn)型和科學(xué)型,二者可以相互切換。標(biāo)準(zhǔn)型主要包括簡單的四則運(yùn)算:加、減、乘、除、求倒數(shù),MC、MS、MR、 M+;科學(xué)型怎主要有:正余弦函數(shù)、對數(shù)、求冪、階乘、進(jìn)制轉(zhuǎn)換、邏輯的與或非等。功能模塊圖見下:</p><p>  圖 1.1 功能模塊圖</p><p>  1.2.2

10、 用戶界面設(shè)計(jì)</p><p>  計(jì)算器有兩個(gè)界面。一個(gè)標(biāo)準(zhǔn)界面,一個(gè)科學(xué)界面。標(biāo)準(zhǔn)界面包含了四則運(yùn)算、平方、求導(dǎo)等最基本的計(jì)算器功能;科學(xué)型界面包含了該計(jì)算器的所有功能。兩個(gè)界面之間可以相互切換。</p><p>  圖 1.2 界面設(shè)計(jì)圖</p><p>  菜單欄有菜單:編輯、查看、幫助。數(shù)字按鈕就是1、2、3等</p><p>

11、;  運(yùn)算符有加減乘除,百分號,求倒數(shù)</p><p>  主屏幕寬:260 px ,高:260 px 背景色的RGB為:(240,240,240)</p><p>  按鈕上的字體一律采用宋體,小5。</p><p>  1.2.3 關(guān)鍵算法設(shè)計(jì)</p><p><b>  功能實(shí)現(xiàn)思路:</b></p>

12、<p>  1.按下按鈕后,對輸入的符號進(jìn)行分類:數(shù)字,運(yùn)算符,括號,數(shù)學(xué)函數(shù),編輯......</p><p>  2.響應(yīng)對應(yīng)事件,不同按鈕返回級別不一樣,按下數(shù)字按鈕,立即在顯示屏顯示,按下操作符號按鈕則對之前按下的數(shù)據(jù)和后輸入數(shù)據(jù)操作,將結(jié)果存入棧中。按下函數(shù)按鈕,則只對之前數(shù)據(jù)操作,結(jié)果入棧</p><p>  3.按清屏等將堆棧中數(shù)據(jù)銷毀,按等于按鈕將結(jié)果顯示給用戶

13、</p><p>  主函數(shù)流程圖見下圖:</p><p><b>  圖 1.3 流程圖</b></p><p><b>  1.3 代碼實(shí)現(xiàn)</b></p><p>  1.3.1 類及其相互關(guān)系 </p><p>  1. Eclipse中視圖 <

14、/p><p><b>  圖 1.4 包視圖</b></p><p>  項(xiàng)目各個(gè)類的成員UML圖</p><p>  1. OperatorLevel類處理各種運(yùn)算的優(yōu)先級,通過數(shù)字的大小返回優(yōu)先級別</p><p>  圖 1.5 UML圖</p><p>  ButtonTips類主要負(fù)責(zé)消息

15、幫助</p><p>  圖 1.6 UML圖</p><p>  CarryConvert類負(fù)責(zé)不同進(jìn)制的轉(zhuǎn)換</p><p>  圖 1.7 UML圖</p><p>  Arith 類是基本運(yùn)算處理部分,內(nèi)部成員有add、sub、mul、divxsqrty、;xpowy等,分別處理加減乘除、方根、求冪等操作</p>&

16、lt;p>  圖 1.8 UML圖</p><p>  ScienceArith類是科學(xué)計(jì)算類,用來計(jì)算函數(shù)、求平均值等</p><p>  圖 1.9 UML圖</p><p>  6. Calculator類是程序的主類,它是展現(xiàn)窗口的主體,主要有兩個(gè)部分:文本框、按鈕。有一個(gè)main(String[] args)和actionPerformed(Ac

17、tionEvent e)方法。</p><p>  圖1.10 UML圖</p><p>  1.3.2 功能實(shí)現(xiàn)及運(yùn)行效果</p><p>  1、基本加減運(yùn)算功能實(shí)現(xiàn):</p><p>  public static BigDecimal add(String s1, String s2) </p><p>&l

18、t;b>  { </b></p><p>  BigDecimal b1 = new BigDecimal(s1);</p><p>  BigDecimal b2 = new BigDecimal(s2); </p><p>  return b1.add(b2); </p><p><b>  } <

19、;/b></p><p>  public static BigDecimal sub(String s1, String s2) </p><p><b>  { </b></p><p>  BigDecimal b1 = new BigDecimal(s1);</p><p>  BigDecimal b2

20、 = new BigDecimal(s2); </p><p>  return b1.subtract(b2); </p><p><b>  } </b></p><p>  public static BigDecimal mul(String s1, String s2)</p><p><b>  

21、{ </b></p><p>  BigDecimal b1 = new BigDecimal(s1); </p><p>  BigDecimal b2 = new BigDecimal(s2); </p><p>  return b1.multiply(b2); </p><p><b>  } </b&

22、gt;</p><p>  public static BigDecimal div(String s1, String s2) </p><p><b>  { </b></p><p>  return div(s1, s2, DEF_DIV_SCALE); </p><p><b>  } </b&

23、gt;</p><p>  2. 求冪、平方、次方、開方等運(yùn)算功能實(shí)現(xiàn):</p><p>  public static BigDecimal xpowy(String s1,String s2)</p><p><b>  { </b></p><p>  BigDecimal d1=new BigDecimal(s

24、1);</p><p>  BigDecimal d2=new BigDecimal(s2);</p><p>  b1=newBigDecimal(Math.pow(d1.doubleValue(),d2.doubleValue())); return b1; </p><p>  } public static BigDecimal xpow2(Strin

25、g x) </p><p><b>  { </b></p><p>  BigDecimal d1=new BigDecimal(x);</p><p>  BigDecimal d2=new BigDecimal("2");</p><p>  BigDecimal b1=d1.pow(d2.

26、intValue());</p><p>  return b1; </p><p><b>  } </b></p><p>  3. 優(yōu)先級判斷功能實(shí)現(xiàn):</p><p>  public static int getLevel(String opt){</p><p>  if(opt

27、.equals("x^y")){</p><p>  return 20;</p><p><b>  }</b></p><p>  else if(opt.equals("*")||opt.equals("/")||opt.equals("Mod")||opt.

28、equals("Or")||opt.equals("Lsh")||opt.equals("And")||opt.equals("Xor"))</p><p><b>  {</b></p><p>  return 18;</p><p><b>  }&

29、lt;/b></p><p>  else if(opt.equals("+")||opt.equals("-"))</p><p><b>  {</b></p><p><b>  return 9;</b></p><p><b>  }

30、</b></p><p>  else if(opt.equals("(")||opt.equals("=")){</p><p><b>  return 3;</b></p><p><b>  }</b></p><p><b> 

31、 else{</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  public static double asinh( double x )</p

32、><p><b>  {</b></p><p>  return Math.log( x + Math.sqrt( x * x + 1 ) );</p><p><b>  } </b></p><p>  public static double acosh( double x )</p>

33、;<p><b>  {</b></p><p>  return Math.log( x + Math.sqrt( x * x - 1 ) );</p><p><b>  }</b></p><p>  public static double tanh( double x )</p>&l

34、t;p><b>  {</b></p><p>  return sinh( x ) / cosh( x );</p><p><b>  }</b></p><p>  4. 進(jìn)制轉(zhuǎn)換功能的實(shí)現(xiàn):</p><p>  public static BigDecimal todec(BigDe

35、cimal bdnum,int oldcarry)</p><p><b>  {</b></p><p>  String num=bdnum.toString();</p><p>  String hexnum="0123456789abcdef";</p><p>  num=num.toLo

36、werCase();</p><p>  if (oldcarry==10 ||num.equals("0")) </p><p>  return new BigDecimal(num);</p><p>  boolean neg=(num.charAt(0)=='-');</p><p>  if (

37、neg) num=num.substring(1);</p><p>  double newnum=0;</p><p>  for(index=1;index<=num.length();index++)newnum=newnum*oldcarry+hexnum.indexOf(num.charAt(index-1));</p><p><b>

38、;  if (neg)</b></p><p>  newnum=-newnum;</p><p>  BigDecimal bd=new BigDecimal(newnum);</p><p>  return bd;</p><p><b>  }</b></p><p>  pu

39、blic static BigDecimal todec(String num,int oldcarry)</p><p><b>  {</b></p><p>  String hexnum="0123456789abcdef";</p><p>  num=num.toLowerCase();</p>&

40、lt;p>  num=num.replace(",","");</p><p>  if (oldcarry==10 ||num.equals("0")) return new BigDecimal(num);</p><p>  boolean neg=(num.charAt(0)=='-');</p

41、><p>  if (neg) num=num.substring(1);</p><p>  double newnum=0;</p><p>  for (int index=1;index<=num.length();index++)</p><p>  newnum=newnum*oldcarry+hexnum.indexOf(nu

42、m.charAt(index-1));</p><p><b>  if (neg)</b></p><p>  newnum=-newnum;</p><p>  BigDecimal bd=new BigDecimal(newnum);</p><p>  return bd;</p><p>

43、;<b>  }</b></p><p><b>  5. 運(yùn)行效果</b></p><p>  圖1.11 標(biāo)準(zhǔn)型 圖 1.12 科學(xué)型</p><p>  1.3.3 打包發(fā)布</p><p>  1.用記事本編寫清單文件;</p><

44、p>  Mymoon.mf:</p><p>  Mainfest-version: 1.0</p><p>  Main-Class: Calculator</p><p>  將 Mymoon.mf 保存到D:\Workspaces\課設(shè)-計(jì)算器\bin目錄下</p><p><b>  生成JAR文件</b>

45、</p><p>  Dos下進(jìn)入D:\Workspaces\課設(shè)-計(jì)算器\bin</p><p>  D:\Workspaces\課設(shè)-計(jì)算器\bin jar cfm Calculator.jar mymoon.mf *.class</p><p><b>  1.4 程序測試</b></p><p>  運(yùn)行程序

46、進(jìn)入主界面:</p><p>  輸入:2.1*3+2 按等于“=”得8.3</p><p>  輸入:2÷0 按等于“=”屏幕顯示除數(shù)不能為0</p><p>  點(diǎn)擊查看菜單—》科學(xué)型。</p><p>  輸入 4! 按等于“=”得 24</p><p>  輸入 ln0 按等于“=”屏幕顯示

47、函數(shù)輸入無效</p><p>  輸入sin 60 按等于“=”得0.8660254037844386</p><p>  其他各方面的計(jì)算,經(jīng)測試全部正確。程序測試通過!</p><p><b>  1.5 總結(jié)</b></p><p>  通過這一周時(shí)間的學(xué)習(xí),能更好的將書本知識和社會(huì)需求相結(jié)合,在編寫查看別人代

48、碼的過程中意識到程序模塊化,封裝的重要性。如果整個(gè)程序就只有一兩個(gè)類,可想其冗余多大,移植性更別說了。之前對swing組件的運(yùn)用不是很熟悉,通過這次學(xué)習(xí)我能很好的利用組件布局窗口。遇到某些不懂的方法,會(huì)利用eclipse工具解釋,查找API,上網(wǎng)查找。充分利用網(wǎng)絡(luò)資源,學(xué)習(xí)了很多。這次也很系統(tǒng)的學(xué)習(xí)了怎樣寫文檔。</p><p>  題目二 學(xué)生管理系統(tǒng)</p><p><b>

49、  2.1 需求分析</b></p><p>  學(xué)生信息管理作為學(xué)校管理的一個(gè)重要方面,其可變因素多,管理方面繁瑣復(fù)雜,時(shí)間跨度大,再加上其固有的基數(shù)大,因而形成了巨大的數(shù)據(jù)量。以前的人工管理方式以人為方式處理這樣大量的數(shù)據(jù),不可避免地增加了管理的工作量及復(fù)雜程度,使有關(guān)管理人員工作繁復(fù)、負(fù)擔(dān)重、壓力大。</p><p>  根據(jù)現(xiàn)實(shí)情況,要徹底改變原來的不利局面,一個(gè)基于網(wǎng)

50、絡(luò)的綜合的學(xué)生管理信息系統(tǒng)的建立勢在必行。 “學(xué)生管理系統(tǒng)” 為尚未達(dá)到信息化管理的學(xué)校提供了報(bào)名基本信息采集的補(bǔ)充手段,主要用于招生學(xué)校學(xué)生的基本信息采集與報(bào)名管理。</p><p><b>  2.2 總體設(shè)計(jì)</b></p><p>  2.2.1 功能設(shè)計(jì)</p><p>  該學(xué)生管理系統(tǒng)包括三個(gè)部分:學(xué)生,教師,管理員,其中管理員權(quán)

51、限最大,其次是老師,學(xué)生權(quán)限最低。系統(tǒng)可以對用戶基本信息進(jìn)行管理(不同用戶登錄后權(quán)限不一樣),可以管理學(xué)生的基本信息,可以查詢學(xué)生成績。功能模塊圖如下:</p><p><b>  圖 2.1</b></p><p>  其中用戶信息管理包括:用戶注冊,用戶刪除,信息修改。其中刪除與修改的權(quán)限只有管理員具有。學(xué)生信息管理包括:查詢、刪除,修改,學(xué)生課表信息查詢。其中刪

52、除修改的信息屬于管理員所有。學(xué)生成績管理包括:查詢、修改。修改的權(quán)限屬于教師所有。</p><p>  2.2.2 用戶界面設(shè)計(jì)</p><p>  用戶界面界面見后面所述的運(yùn)行效果圖</p><p>  其中:對于登錄界面用戶身份有:管理員,學(xué)生,教師。</p><p>  界面大小為:寬:506 px高:430 px 字體:宋體,顏色為默

53、認(rèn)顏色。加載背景圖片;</p><p>  學(xué)生管理系統(tǒng)主界面,菜單欄中有菜單:用戶信息管理,學(xué)生信息管理,學(xué)生成績管理,幫助系統(tǒng),退出系統(tǒng)。</p><p>  界面大小為:寬:501 px 高:405 px ,字體:宋體,顏色默認(rèn),加載一個(gè)背景圖片。</p><p>  2.2.3 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(jì)</p><p>  在mysql中創(chuàng)建

54、了數(shù)據(jù)庫“stu”數(shù)據(jù)庫中共有四個(gè)表:stus(學(xué)生信息)、score(學(xué)生成績)、course(選課)、users(用戶)各個(gè)表的具體屬性見下圖:</p><p>  表 2.2 學(xué)生基本信息表</p><p>  表 2.3 成績表</p><p>  表 2.4 選課信息表</p><p>  表 2.5 用戶基本信息表</

55、p><p>  2.2.4 關(guān)鍵算法設(shè)計(jì)</p><p>  圖 2.6 流程圖</p><p>  用戶登錄界面后按照其不同的身份分別具有不同的權(quán)限,對于管理員除不具備修改學(xué)生成績的權(quán)限外,其他權(quán)限列如刪除學(xué)生,添加,修改,添加用戶等均具有,對于教師,具有基本的學(xué)生成績修改等權(quán)限。學(xué)生具有查詢自己的成績的權(quán)限,所有的用戶都具有修改自身密碼的權(quán)力。</p>

56、<p>  程序執(zhí)行后用戶選擇不同的功能操作,可以使查詢等等,當(dāng)操作完畢后,如果用戶沒喲選擇退出當(dāng)前窗口,則繼續(xù)這一功能的查詢,如果選擇了退出則跳出該功能模塊,用戶可以再主界面選擇其他的功能部分進(jìn)行查詢等具體操作。無論是在主界面還是在某一功能模塊用戶均可以直接退出系統(tǒng)。程序最主要的操作部分是對數(shù)據(jù)庫的操作,這要求數(shù)據(jù)庫中的各個(gè)表要建的合理恰當(dāng)。部分存在外鍵的屬性,加上級聯(lián)操作,防止在進(jìn)行刪除操作過程中不能刪除的意外。<

57、;/p><p><b>  2.3 代碼實(shí)現(xiàn)</b></p><p>  2.3.1 類之間的關(guān)系</p><p>  Eclipse中視圖如下:</p><p><b>  2.7 包視圖</b></p><p>  2. 類成員、方法間的調(diào)用關(guān)系</p><

58、;p>  由本程序類較多,所以只闡述部分重要的類:</p><p>  1. 下圖描述了幾個(gè)主要類間的調(diào)用關(guān)系:</p><p>  2.8 類間調(diào)用關(guān)系圖</p><p>  圖中MainWindows為主類它加載著程序的主體,login為登錄后主界面,它為主類所調(diào)用,而ManageStu為學(xué)生管理類,它為login類調(diào)用。程序還有一個(gè)ConnectDB類

59、為大多類所調(diào)用,它執(zhí)行的是連接數(shù)據(jù)庫的操作。其他類每次調(diào)用它來實(shí)現(xiàn)與數(shù)據(jù)的連接。</p><p><b>  2. 其他幾個(gè)類:</b></p><p>  其他幾個(gè)類主要是進(jìn)行對數(shù)據(jù)庫的基本操作(查詢,插入,刪除,修改)</p><p>  他們基本都繼承JFrame類,他們又調(diào)用ConnectDB類。</p><p>

60、;  下面列出selectScore類的主要成員與方法,其他幾個(gè)類相似,在此不一一列出:</p><p>  圖2.9 selectScore類圖</p><p>  2.3.2 功能實(shí)現(xiàn)及運(yùn)行效果</p><p>  主類 MainWindows主要負(fù)責(zé)搭建程序的主窗口,調(diào)用其他的類,其中包擴(kuò)一個(gè)加載進(jìn)度條的方法,還有實(shí)列化login類;</p>

61、<p>  public class MainWindow extends JWindow{</p><p>  JLabel jl=new JLabel(new ImageIcon("12.jpg"));</p><p>  JProgressBar progressBar=new JProgressBar(1,100);</p><p&

62、gt;  public MainWindow(){</p><p>  this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));</p><p>  this.setLocation((size.width-this.getWidth())/2,(size.height-this.getWidth())/2);</

63、p><p>  this.setVisible(true);</p><p>  Thread th=new MyThread(this);</p><p>  th.start();</p><p><b>  }</b></p><p>  public static void main(Stri

64、ng[] args) {</p><p>  new MainWindow();</p><p><b>  }</b></p><p>  class MyThread extends Thread{</p><p>  MainWindow main;</p><p>  public MyT

65、hread(MainWindow main){</p><p>  this.main=main;</p><p><b>  }</b></p><p>  public void run(){</p><p>  while(main.progressBar.getValue()<100){</p>

66、<p>  main.progressBar.setValue(main.progressBar.getValue()+1);</p><p><b>  try {</b></p><p>  Thread.sleep(100);</p><p>  } catch (InterruptedException e) {</

67、p><p>  e.printStackTrace(); </p><p><b>  }</b></p><p><b>  }</b></p><p>  main.dispose();</p><p>  new login();</p><p

68、><b>  }</b></p><p><b>  }</b></p><p>  ConnectDB類,該類是實(shí)現(xiàn)數(shù)據(jù)庫連接的操作,先加載驅(qū)動(dòng)包,然后指定數(shù)據(jù)庫名,密碼路徑等</p><p>  public class ConnectDB {</p><p>  public stati

69、c Connection Connect(){</p><p><b>  try {</b></p><p>  Class.forName("com.mysql.jdbc.Driver");</p><p>  String url = "jdbc:mysql://localhost:3306/stu"

70、;;</p><p>  Connection con = DriverManager.getConnection(url, "root", "123");</p><p>  return con;</p><p>  } catch (Exception e) {</p><p>  // TODO

71、: handle exception</p><p>  return ("數(shù)據(jù)庫連接異常");</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><

72、p>  3. Login類,該類主要是實(shí)現(xiàn)登錄后的界面主要按鈕等,它大量采用label標(biāo)簽等進(jìn)行界面布局。</p><p>  Public class login extends JFrame implements ActionListener,ItemListener,KeyListener {</p><p>  String [] leixing=new String[3]

73、; </p><p>  JLabel jlb1=new JLabel("賬號:");</p><p>  JLabel jlb2=new JLabel("密 碼:"); </p><p>  JTextField yhm=new JTextField();</p><p>  JPasswo

74、rdField mm=new JPasswordField(); </p><p>  JComboBox jcb=null;</p><p>  JButton dl=new JButton("登錄"); </p><p>  JButton tc=new JButton("退出");</p><p>

75、;  public static int quanxian=0;</p><p>  Connection con=null;</p><p>  Statement st=null;</p><p>  ResultSet rs=null;</p><p>  public login() {</p><p>  e

76、nableEvents(AWTEvent.WINDOW_EVENT_MASK);</p><p><b>  try {</b></p><p><b>  jbInit();</b></p><p><b>  }</b></p><p>  catch(Exception

77、e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  hy.setBounds(0,0,img.getIconWidth(),img.getIconHeight());</p><p>  ((JPanel)getContentPane()).

78、setOpaque(false);</p><p><b>  }</b></p><p>  public static void main(String[] args) {</p><p>  new login();</p><p><b>  }</b></p><p&g

79、t;  4. ManageStu類,該類主要是用來搭建學(xué)生基本信息供其他各個(gè)類所調(diào)用,</p><p>  public class ManageStu extends JFrame {</p><p>  private JMenuBar getJJMenuBar() {</p><p>  if (jJMenuBar == null) {</p>

80、<p>  jJMenuBar = new JMenuBar();</p><p>  jJMenuBar.setFont(new Font("Lucida Bright", Font.BOLD, 12));</p><p>  jJMenuBar.add(getJMenu1());</p><p>  jJMenuBar.add

81、(getJMenu2());</p><p><b>  }</b></p><p>  return jJMenuBar;</p><p><b>  }</b></p><p>  private JMenu getJMenu1() {</p><p>  if (jMe

82、nu1 == null) {</p><p>  jMenu1 = new JMenu();</p><p>  jMenu1.setText("用戶信息管理");</p><p>  jMenu1.add(getJMenuItem1());</p><p>  jMenu1.add(getJMenuItem2());&l

83、t;/p><p><b>  }</b></p><p>  return jMenu1;</p><p><b>  }</b></p><p>  private JMenu getJMenu2() {</p><p>  if (jMenu2 == null) {</

84、p><p>  jMenu2 = new JMenu();</p><p>  jMenu2.setText("學(xué)生信息管理");</p><p>  jMenu2.add(getJMenuItem5());</p><p><b>  }</b></p><p>  retu

85、rn jMenu2;</p><p><b>  }</b></p><p>  selectScore類是用來實(shí)現(xiàn)從數(shù)據(jù)庫中查找學(xué)生的成績。</p><p>  public void actionPerformed(ActionEvent e) {</p><p>  JButton jbt=(JButton)e.g

86、etSource();</p><p>  String uname=yhm.getText().trim(); </p><p>  if(jbt==dl){</p><p><b>  try</b></p><p><b>  {</b></p><p

87、>  con = ConnectDB.Connect();</p><p>  stat = con.createStatement();</p><p>  rs=stat.executeQuery("select* from score where stuId='"+uname+"' ");</p>&

88、lt;p>  if(rs.next())</p><p>  { </p><p>  this.setVisible(false);</p><p>  log=new JDialog(); </p><p>  lab1=new JLabel("學(xué)號:");</p

89、><p>  lab2=new JLabel("各課成績?nèi)缦?");</p><p>  if (result == JOptionPane.YES_OPTION) {</p><p>  log.setVisible(false);</p><p><b>  }</b></p><

90、p><b>  }</b></p><p>  }); </p><p>  txt1=new JTextField(10);</p><p>  txt2=new JTextField(10); txt1.setEditable(false)</p>

91、;<p>  if(rs.getInt("courseId")==1){</p><p>  txt2.setText(rs.getString("score").trim());</p><p>  txt2.setEditable(false);</p><p>  rs.next();</p>

92、<p>  log.add(jp1);</p><p>  log.add(jp2); </p><p>  log.setTitle("查詢成績");</p><p>  log.setSize(300,340);</p><p>  log.setResizable(false);</p&g

93、t;<p>  Dimension s;</p><p>  }catch(Exception ee){</p><p>  ee.printStackTrace();</p><p><b>  }</b></p><p>  }else if(jbt==tc){</p><

94、p>  int result = JOptionPane.showOptionDialog(null,"是否退出系統(tǒng)登錄?","系統(tǒng)提示",</p><p>  JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.QUESTION_MESSAGE,null,new String[] {"是",&qu

95、ot;否"},"否");</p><p>  if (result == JOptionPane.YES_OPTION)</p><p><b>  {</b></p><p>  this.dispose();</p><p><b>  } </b></p&

96、gt;<p><b>  }</b></p><p><b>  運(yùn)行效果圖:</b></p><p>  圖 2.10 用戶登錄界面</p><p>  圖 2.11 登錄后主界面</p><p>  圖 2.12 學(xué)生查詢主界面</p><p>  2.

97、3.3 打包發(fā)布</p><p>  1.用記事本編寫清單文件;</p><p>  Mymoon.mf:</p><p>  Mainfest-version: 1.0</p><p>  Main-Class: MainWindow</p><p>  將 Mymoon.mf 保存到D:\Workspaces\學(xué)生

98、管理系統(tǒng)\bin目錄下生成JAR文件</p><p>  Dos下進(jìn)入D:\Workspaces\學(xué)生管理系統(tǒng)\bin</p><p>  D:\Workspaces\學(xué)生管理系統(tǒng)\bin jar cfm MainWindow.jar mymoon.mf *.class</p><p><b>  2.4 程序測試</b></p>

99、<p>  以管理員身份進(jìn)入系統(tǒng),登錄成功后選擇“學(xué)生信息管理”進(jìn)入學(xué)生管理系統(tǒng),選擇查詢-----》模糊查詢 輸入“信息”:程序以列表的形式彈出所有信息系的學(xué)生。</p><p>  選擇系統(tǒng)下的添加信息,輸入學(xué)號:20102235 姓名:江政波 選擇性別:男,系別:信息系 年齡:21 籍貫:九江 密碼:123 選擇保存,提示“添加成功”</p><p>  查詢數(shù)據(jù)庫發(fā)現(xiàn)

100、學(xué)生信息添加確實(shí)成功!</p><p>  選擇系統(tǒng)下的查詢學(xué)生成績輸入學(xué)號:20102200 成功顯示了該學(xué)生各門課程的成績</p><p>  其他各種功能測試均成功驗(yàn)證在此不一一說明,程序測試通過!</p><p><b>  2.5 總結(jié)</b></p><p>  通過這次的學(xué)生管理系統(tǒng)的設(shè)計(jì),首先學(xué)會(huì)了怎么連

101、接數(shù)據(jù)庫,怎么將利用java程序?qū)?shù)據(jù)庫進(jìn)行刪除,插入,查詢等各種操作。其次,在建表的過程中明白了表要?jiǎng)澐值淖屑?xì),不能僅僅建幾個(gè)復(fù)雜的表,應(yīng)該建多個(gè)簡單表 ,最后就是學(xué)會(huì)了怎么給程序弄加載的進(jìn)度條。這個(gè)過程中離不開同學(xué)和老師的指導(dǎo)。在此表示感謝。</p><p>  題目三 五子棋游戲設(shè)計(jì)</p><p><b>  3.1 需求分析</b></p>&

102、lt;p>  五子棋,是一種兩人對弈的純策略型棋類游戲,亦稱“串珠”、“連五子”:是中國明間非常熟知的一個(gè)古老棋種。相傳,它起源于四千多年前,比圍棋的歷史還要悠久。</p><p>  五子棋游戲容易上手,老少皆宜,而且趣味橫生,引人入勝;它不僅能使人娛樂,也能開發(fā)人的智力,而且富含哲理,有助于修身養(yǎng)性。如今的社會(huì)高速發(fā)展,人們用來娛樂的時(shí)間越來越來越少,一起對弈機(jī)會(huì)更少,而現(xiàn)在大多數(shù)的人都有了一部手機(jī),于

103、是我們開發(fā)了這個(gè)手機(jī)版的五子棋游戲,人們可以在閑暇時(shí)候和手機(jī)對弈,游戲可以選擇級別,播放音樂,可以記錄用戶的成績等。</p><p><b>  3.2 總體設(shè)計(jì)</b></p><p>  3.2.1 功能設(shè)計(jì)</p><p>  該項(xiàng)目實(shí)現(xiàn)了手機(jī)版五子棋游戲,是用J2ME編寫的,開發(fā)工具為:Eclipse,window 7系統(tǒng),sun的WT

104、K2.5.1</p><p>  游戲有背景音樂,默認(rèn)為關(guān)閉狀態(tài),用戶可以選擇游戲的難度,游戲中播放的音樂類型,設(shè)置游戲背景顏色,設(shè)置棋盤的大小。功能圖如下:</p><p>  圖 3.1 功能模塊圖</p><p>  3.2.2 用戶界面設(shè)計(jì)</p><p>  圖 3.2 界面設(shè)計(jì)圖</p><p>  3.

105、2.3 關(guān)鍵算法設(shè)計(jì)</p><p><b>  圖3.3 流程圖</b></p><p>  程序默認(rèn)為電腦先走,難度為1級,用戶可以自行設(shè)置,程序最關(guān)鍵的算法為人工智能的實(shí)現(xiàn),主要是根據(jù)可能的下棋方式進(jìn)行打分,最后電腦將棋子下在分?jǐn)?shù)最高的位置。具體實(shí)現(xiàn)見后面附錄的關(guān)鍵代碼部分。</p><p><b>  3.3 代碼實(shí)現(xiàn)<

106、/b></p><p>  3.3.1 類之間的關(guān)系</p><p>  1. Eclipse中的包視圖:</p><p><b>  圖3.4 包視圖</b></p><p><b>  類之間調(diào)用關(guān)系</b></p><p>  圖 3.5 類調(diào)用關(guān)系圖</

107、p><p>  3. 類成員及其方法</p><p><b>  項(xiàng)目共有7個(gè)類:</b></p><p>  1. About類,該類主要負(fù)責(zé)設(shè)計(jì)幫助文檔 </p><p>  圖 3.6 成員方法圖</p><p>  2. Dot類,該類主要用雷記錄棋子的位置等信息</p>

108、<p>  圖 3.7 成員方法圖</p><p>  3. FIRCanvas類,該類主要繪制棋盤,棋子,引導(dǎo)框等</p><p>  圖 3.8 成員方法圖</p><p>  4 . FIRMIDlet類,該類主要負(fù)責(zé)搭建游戲開啟后第一界面,包擴(kuò)退出,menu等</p><p>  圖 3.9 成員方法圖</p&

109、gt;<p>  5. Music類用來播放游戲背景音樂</p><p>  圖 3.10成員方法圖</p><p>  6. Options類,實(shí)現(xiàn)設(shè)置類中的各種功能,設(shè)置游戲背景音樂類型,棋盤大小,背景顏色游戲難易等</p><p>  圖 3.11 成員方法圖</p><p>  3.3.2 功能實(shí)現(xiàn)及運(yùn)行效果<

110、/p><p><b>  繪制棋盤面板</b></p><p>  該功能實(shí)現(xiàn)在類 FIRCanvas中</p><p>  主要使用了g.fillRect方法;</p><p>  public void paint(Graphics g)</p><p><b>  {</b>

111、;</p><p>  g.setColor(backGroundColor);</p><p>  g.fillRect(0, 0, canvasWidth, canvasHeight); </p><p>  if(isColor)</p><p><b>  {</b></p><p> 

112、 g.setColor(0xcc8837);</p><p>  g.fillRect(boardX, boardY, boardLength, boardLength); </p><p><b>  }</b></p><p>  g.setColor(0); </p>&l

113、t;p><b>  int y;</b></p><p>  for(int r = 0; r < boardSize; r++)</p><p><b>  {</b></p><p>  int x1 = boardX + gridLength / 2;</p><p>  int

114、x2 = (x1 + boardLength) - gridLength;</p><p>  y = boardY + r * gridLength + gridLength / 2;</p><p>  g.drawLine(x1, y, x2, y); </p><p><b>  }</b></p><p>&l

115、t;b>  int x;</b></p><p>  for(int c = 0; c < boardSize; c++)</p><p><b>  {</b></p><p>  x = boardX + c * gridLength + gridLength / 2;</p><p>  i

116、nt y1 = boardY + gridLength / 2;</p><p>  int y2 = (y1 + boardLength) - gridLength;</p><p>  g.drawLine(x, y1, x, y2); </p><p><b>  }</b></p><p><b> 

117、 加載音樂</b></p><p>  加載音樂的功能在音樂類music中</p><p>  public void playMusic(int music) {</p><p>  this.stopMusic();</p><p>  switch (music) {</p><p><b&g

118、t;  case 1:</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  this.playSpringMusic();</p><p><b>  break;</b></p&g

119、t;<p><b>  case 3:</b></p><p>  this.playCityMusic();</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  this.playFlower

120、Music();</p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>&l

121、t;b>  }</b></p><p><b>  判斷勝負(fù)</b></p><p>  判斷勝負(fù)即判斷是否有五子連珠的出現(xiàn),分別從八個(gè)方向經(jīng)行判別</p><p>  private boolean isGameOver()</p><p>  {isGameOver = false;</p&g

122、t;<p>  for(int r = 0; r < boardSize; r++)</p><p><b>  {</b></p><p>  for(int c = 0; c < boardSize; c++) {</p><p>  if(table[r][c] == 0 || checkF

123、iveInRow(r, c, 5, -1) == -1)</p><p><b>  continue;</b></p><p>  isGameOver = true;</p><p>  isComputerWon = table[r][c] == 1;</p><p>  break; }&l

124、t;/p><p>  if(isGameOver)</p><p><b>  break;</b></p><p><b>  }</b></p><p>  private int checkFiveInRow(int row, int col, int n, int exceptDirection

125、)</p><p><b>  {</b></p><p>  int player = table[row][col];</p><p>  int cd[] = connectedIn8D(player, row, col);</p><p>  int ed[] = expandedIn8D(player, row

126、, col);</p><p>  int existDirection = -1;</p><p>  for(int i = 0; i < 4; i++)</p><p>  { </p><p>  if(i == exceptDirection || cd[i] + cd[i + 4] + 1 &

127、lt; n || (ed[i] - cd[i]) + (ed[i + 4] - cd[i + 4]) < 0)</p><p><b>  continue;</b></p><p>  existDirection = i;</p><p>  break; }</p><p>  return e

128、xistDirection;</p><p><b>  }</b></p><p><b>  記錄棋子位置</b></p><p>  主要是記錄棋子所在的行列及棋子的顏色</p><p>  public class Dot</p><p><b>  {&l

129、t;/b></p><p>  public Dot()</p><p><b>  {</b></p><p><b>  row = 0;</b></p><p><b>  col = 0;</b></p><p><b>  }&

130、lt;/b></p><p>  public Dot(int r, int c)</p><p><b>  {</b></p><p><b>  row = r;</b></p><p><b>  col = c;</b></p><p>

131、<b>  }</b></p><p>  public Dot(int boardSize)</p><p><b>  {</b></p><p>  row = boardSize / 2;</p><p>  col = boardSize / 2;</p><p>

132、<b>  }</b></p><p>  public void setRowCol(int r, int c)</p><p><b>  {</b></p><p><b>  row = r;</b></p><p><b>  col = c;</b&

133、gt;</p><p><b>  }</b></p><p>  public void copyFrom(Dot d)</p><p><b>  {</b></p><p>  row = d.row;</p><p>  col = d.col;</p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論