版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告-
- java課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告--beatbox
- JAVA課程設(shè)計(jì)報(bào)告.doc
- java語言課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告--java日歷設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告---java實(shí)現(xiàn)畫筆系統(tǒng)
- java課程設(shè)計(jì)-猜數(shù)游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)-蜘蛛紙牌游戲設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告——蜘蛛紙牌
- java課程設(shè)計(jì)--掃雷游戲報(bào)告
- java代購網(wǎng)課程設(shè)計(jì)報(bào)告
- java坦克大戰(zhàn)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告---考試系統(tǒng)
- java課程設(shè)計(jì)報(bào)告--hannoi塔
- java火柴游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告—蜘蛛紙牌
- java課程設(shè)計(jì)報(bào)告--hannoi塔
評論
0/150
提交評論