《Java程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告 (1)_第1頁(yè)
《Java程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告 (1)_第2頁(yè)
《Java程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告 (1)_第3頁(yè)
《Java程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告 (1)_第4頁(yè)
《Java程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告 (1)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河南工程學(xué)院計(jì)算機(jī)學(xué)院課程設(shè)計(jì)報(bào)告書(shū)學(xué) 號(hào): 201312211115 姓 名: 陳晏猛 學(xué) 院: 計(jì)算機(jī)學(xué)院 專(zhuān)業(yè)班級(jí): 軟件工程1341 專(zhuān)業(yè)課程: Java程序設(shè)計(jì) 指導(dǎo)教師: 汪 偉 2014 年 12 月 27 日題 目1、計(jì)算器(此處寫(xiě)自己設(shè)計(jì)的程序名)的設(shè)計(jì)與實(shí)現(xiàn)2、2048(此處寫(xiě)自己設(shè)計(jì)的程序名)的設(shè)計(jì)與實(shí)現(xiàn)考核項(xiàng)目考核內(nèi)容得分平時(shí)考核(30分)出勤情況、態(tài)度、效率;知識(shí)掌握情況、基本操作技能、知識(shí)應(yīng)用能力、獲取知識(shí)能力系統(tǒng)設(shè)計(jì)(20分)分析系統(tǒng)的功能模塊編程調(diào)試(20分)實(shí)現(xiàn)系統(tǒng)的各個(gè)功能模塊,并完成調(diào)試回答問(wèn)題(15分)回答老師針對(duì)課程設(shè)計(jì)提出的問(wèn)題課程設(shè)計(jì)報(bào)告撰寫(xiě)(10

2、分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計(jì)報(bào)告源代碼(5分)要個(gè)按照規(guī)范要求完成課程設(shè)計(jì)源代碼的排版總 評(píng) 成 績(jī)指導(dǎo)教師評(píng)語(yǔ): 日期: 年 月 日目 錄第1章 計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn).11.1設(shè)計(jì)目的. . . .21.2系統(tǒng)實(shí)現(xiàn)思路. . .31.3系統(tǒng)詳細(xì)設(shè)計(jì). . .41.4系統(tǒng)調(diào)試運(yùn)行. . .7第2章 2048的設(shè)計(jì)與實(shí)現(xiàn).11.1設(shè)計(jì)目的. . . .21.2系統(tǒng)實(shí)現(xiàn)思路. . .31.3系統(tǒng)詳細(xì)設(shè)計(jì). . .41.4系統(tǒng)調(diào)試運(yùn)行. . .7第3章 課程設(shè)計(jì)體會(huì).8參考文獻(xiàn). . . .9附錄. . . . .10第1章 計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)1.1 設(shè)計(jì)目的 本課程設(shè)計(jì)的目的就是通過(guò)一次集中的強(qiáng)

3、化訓(xùn)練,使學(xué)生能鞏固自己的學(xué)識(shí),補(bǔ)充未學(xué)的但有必要的內(nèi)容。進(jìn)行課程設(shè)計(jì)的目的在于加深對(duì)程序設(shè)計(jì)基礎(chǔ)中理論和基本知識(shí)的理解,促進(jìn)理論與實(shí)踐的結(jié)合,進(jìn)一步提高程序設(shè)計(jì)的能力。同時(shí),在程序設(shè)計(jì)方法及上機(jī)操作方面受到比較系統(tǒng)嚴(yán)格的訓(xùn)練,培養(yǎng)軟件工作所需要的動(dòng)手能力。 (1)使學(xué)生更深入的理解和掌握課程中有關(guān)基本概念,程序設(shè)計(jì)的思想和方法。 (2)培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。 (3)培養(yǎng)學(xué)生勇于探索,嚴(yán)謹(jǐn)推理,實(shí)事求是,有錯(cuò)必改,用實(shí)踐來(lái)驗(yàn)證理論,全方位考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。 (4)提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé),一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛(ài),協(xié)作攻關(guān)的基本素質(zhì)。 (5)培養(yǎng)學(xué)生從資料

4、文獻(xiàn),科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。 (6)對(duì)學(xué)生掌握知識(shí)的深度,運(yùn)用理論去處理問(wèn)題的能力,實(shí)驗(yàn)?zāi)芰?,課程設(shè)計(jì)的能力,書(shū)面及口頭表達(dá)能力進(jìn)行考核。1.2系統(tǒng)實(shí)現(xiàn)思路1.2.1系統(tǒng)目標(biāo)編寫(xiě)程序代碼設(shè)計(jì)一個(gè)計(jì)算器,要有以下幾個(gè)功能:二進(jìn)制,八進(jìn)制,十進(jìn)制及十六進(jìn)制的加,減,乘,除,乘方,取模等簡(jiǎn)單計(jì)算:科學(xué)計(jì)算函數(shù),包括(反)正弦,(反)余弦,(反)正切,(反)余切,開(kāi)方,指數(shù)等函數(shù)運(yùn)行。我們可以把計(jì)算器的編譯分成兩大步驟:第一步驟:設(shè)計(jì)出計(jì)算器的雛形(框架),也就是計(jì)算器的排版布局;第二步驟:逐步實(shí)現(xiàn)計(jì)算器的功能。1.2.2

5、主題功能進(jìn)行的運(yùn)算單視圖實(shí)現(xiàn)的計(jì)算:加,減,除,乘;用科學(xué)視圖實(shí)現(xiàn)科學(xué)運(yùn)算:用簡(jiǎn)進(jìn)制用戶(hù)根據(jù)程序提示,輸入數(shù)字,選擇要轉(zhuǎn)換,三角函數(shù),開(kāi)方,對(duì)數(shù),求底等。1.2.3系統(tǒng)的功能模塊劃分進(jìn)入計(jì)算器主菜單,計(jì)算器按功能模塊劃分為:簡(jiǎn)單計(jì)算器模塊和科學(xué)計(jì)算模塊。簡(jiǎn)單計(jì)算器模塊包括:加法運(yùn)算,減法運(yùn)算,乘法運(yùn)算,除法運(yùn)算??茖W(xué)計(jì)算器模塊包括:進(jìn)制轉(zhuǎn)換,三角函數(shù),對(duì)數(shù),開(kāi)方。根據(jù)用戶(hù)需求選擇需要的計(jì)算模式。 圖1.2.3 系統(tǒng)模塊圖 三角函數(shù) 計(jì)算器 科學(xué)計(jì)算 簡(jiǎn)單計(jì)算進(jìn)制轉(zhuǎn)換對(duì)數(shù)開(kāi)方乘法除法減法加法其模式圖形如1.2.3圖:1.3系統(tǒng)詳細(xì)設(shè)計(jì)從表面上看,計(jì)算器就包括一個(gè)文本框和一系列按鈕(面板)。文本框

6、在上面,按鈕平均分布在文本框的下方。例如文本框的初建模型如下圖所示:1.3.1文本框的設(shè)計(jì)從表面上看,計(jì)算器就包括一個(gè)文本框和一系列按鈕(面板)。文本框在上面,按鈕平均分布在文本框的下方所以整體把文本框看做一部分,把按鈕看做一部分,采用BorderLayout布局較好。 JPanel panel2 = new JPanel(new BorderLayout(); panel2.add("Center", display); panel2.add("East", reset);添加到窗口上方 JPanel panel1 = new JPanel(new G

7、ridLayout(4, 5); for (i = 0; i < str.length; i+) buttonsi = new JButton(stri); panel1.add(buttonsi); 添加到窗口中區(qū),即下方。其次,按鈕我們可以看出是平均分布在面板上的(四列五行)采用GridLayout布局較好。最后,布局分析好了,該添加按鈕和文本框了。當(dāng)然文本按鈕都需要在窗口類(lèi)中定義。再加上代碼方法就會(huì)如圖所示:這樣計(jì)算器的雛形出來(lái)了。1.3.2源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;publi

8、c class JCalculator extends JFrame implements ActionListener int i; / 數(shù)字和字符串運(yùn)算符按鈕。private final String str = "7", "8", "9", "+", "-", "4", "5", "6", "*","/", "1", "2", "3"

9、;, "0", ".", "=" ,"%","+/-","倒數(shù)","sqrt" / 創(chuàng)建按鈕。 JButton buttons = new JButtonstr.length; / 創(chuàng)建重置按鈕。 JButton reset = new JButton("C"); /文本框。 JTextField display = new JTextField("0") /無(wú)參構(gòu)造函數(shù),界面布局 public JCalculato

10、r() super("Calculator"); / panel1操作區(qū) / 設(shè)置布局管理器為GridLayout,將界面區(qū)域劃分為4行5列。 JPanel panel1 = new JPanel(new GridLayout(4, 5); for (i = 0; i < str.length; i+) buttonsi = new JButton(stri); panel1.add(buttonsi); /panel2文本輸出和重置區(qū) JPanel panel2 = new JPanel(new BorderLayout(); panel2.add("Ce

11、nter", display); panel2.add("East", reset); / 界面JPanel getContentPane().setLayout(new BorderLayout(); getContentPane().add("North", panel2); getContentPane().add("Center", panel1); / 每位操作按鈕添加動(dòng)作監(jiān)聽(tīng)器;for (i = 0; i < str.length; i+) buttonsi.addActionListener(this);

12、 / "重置"按鈕添加監(jiān)聽(tīng)器。 reset.addActionListener(this); / "顯示"按鈕添加監(jiān)聽(tīng)器。 display.addActionListener(this); / 初始化窗口大小。 setSize(400,300); /初始化窗口的位置 setLocation(300,200); / 顯示窗口。 setVisible(true); /關(guān)閉窗口 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent we) System.exit(

13、0); ); /實(shí)現(xiàn)監(jiān)聽(tīng)器 double number = 0.0; String operator = "=" boolean isFirstDigit = true; /數(shù)字處理。 public void handleNumber(String key) if (isFirstDigit) display.setText(key); else if (key.equals(".") && (display.getText().indexOf(".") < 0) display.setText(display.

14、getText() + "."); else if (!key.equals(".") display.setText(display.getText() + key); isFirstDigit = false; /重置計(jì)算器。 public void handleReset() display.setText("0"); isFirstDigit = true; operator = "=" /運(yùn)算符操作 public void handleOperator(String key) if (operator.e

15、quals("+") /加法運(yùn)算 number += Double.valueOf(display.getText(); else if (operator.equals("-")/減法運(yùn)算 number -= Double.valueOf(display.getText(); else if (operator.equals("*")/乘法運(yùn)算 number *= Double.valueOf(display.getText(); else if (operator.equals("/")/除法運(yùn)算 number

16、 /= Double.valueOf(display.getText();else if (operator.equals("=")/賦值運(yùn)算 number = Double.valueOf(display.getText(); else if (operator.equals("sqrt")/平方根運(yùn)算 number= Math.sqrt(number); else if (operator.equals("%")/百分號(hào)運(yùn)算 number= number /100; else if (operator.equals("+

17、/-")/正負(fù)號(hào)運(yùn)算 number =number*(-1); else if (operator.equals("倒數(shù)")/倒數(shù)運(yùn)算 if (number=0) System.out.println("輸入有誤,0沒(méi)有倒數(shù)!"); else number=1/number; display.setText(String.valueOf(number); operator = key; isFirstDigit = true; /監(jiān)聽(tīng)器 public void actionPerformed(ActionEvent e) Object targ

18、et = e.getSource(); String label = e.getActionCommand(); if (target = reset) handleReset(); else if ("0123456789.".indexOf(label) > 0) handleNumber(label); else handleOperator(label); /main函數(shù) public static void main(String args) new JCalculator(); 1.4系統(tǒng)調(diào)試運(yùn)行 根據(jù)以上程序設(shè)計(jì)的內(nèi)容,為了避免比必要的錯(cuò)誤出現(xiàn),嚴(yán)謹(jǐn)求實(shí)

19、,遵循探索精神,要對(duì)源程序進(jìn)行自我檢測(cè)(系統(tǒng)的調(diào)試運(yùn)行),看是否存在嚴(yán)重的錯(cuò)誤和警告。 假如當(dāng)我輸入正確的數(shù)值后,點(diǎn)擊"計(jì)算結(jié)果"按鈕,就會(huì)彈出計(jì)算后的結(jié)果數(shù)值,如果你輸入的數(shù)據(jù)類(lèi)型不是整型,就會(huì)提示錯(cuò)誤信息。 按照其進(jìn)行運(yùn)算方法,求一個(gè)數(shù)的倒數(shù)是多少時(shí)。假如我想求一個(gè)數(shù)的倒數(shù),這個(gè)數(shù)是2。如下面所示: 根據(jù)上述運(yùn)算方法可以知道求一個(gè)數(shù)的結(jié)果運(yùn)算為:要知其輸出值為2,即求一個(gè)數(shù)的倒數(shù),這個(gè)數(shù)是2。則計(jì)算器運(yùn)算如下圖所示:可以驗(yàn)證2的倒數(shù)是0.5,其結(jié)果為正確。第2章 2048的設(shè)計(jì)與實(shí)現(xiàn)1.1設(shè)計(jì)目的通過(guò)本課程設(shè)計(jì),使學(xué)生在JAVA基礎(chǔ)設(shè)計(jì)的選擇和應(yīng)用、實(shí)現(xiàn)方面得到訓(xùn)練,加

20、深對(duì)基JAVA基礎(chǔ)設(shè)計(jì)本內(nèi)容的理解和靈活應(yīng)用,同時(shí),在程序設(shè)計(jì)方法及上機(jī)操作方面受到比較系統(tǒng)嚴(yán)格的訓(xùn)練,培養(yǎng)軟件工作所需要的動(dòng)手能力。(1)進(jìn)一步掌握和理解Java程序編程。 (2)進(jìn)一步掌握java語(yǔ)言的基本數(shù)據(jù)類(lèi)型,熟悉定義變量和使用變量 (3)理解java圖形用戶(hù)界面的基本工作原理和界面設(shè)計(jì), 鞏固窗體的布局設(shè)計(jì)。  (4)掌握窗體按鈕控件和文本控件對(duì)事件的響應(yīng), 理解函數(shù)和方法的使用。JAVA課程設(shè)計(jì)是在學(xué)完數(shù)據(jù)結(jié)構(gòu)課程之后的實(shí)踐教學(xué)環(huán)節(jié)。該實(shí)踐教學(xué)是軟件設(shè)計(jì)的綜合訓(xùn)練,包括問(wèn)題分析,總體結(jié)構(gòu)設(shè)計(jì)用戶(hù)界面設(shè)計(jì),程序設(shè)計(jì)基本技能和技巧。要

21、求學(xué)生在設(shè)計(jì)中逐步提高程序設(shè)計(jì)能力培養(yǎng)科學(xué)的軟件工作方法學(xué)生通過(guò)JAVA課程設(shè)計(jì)各方面得到鍛煉。根據(jù)提供的實(shí)習(xí)題目,認(rèn)真完成軟件設(shè)計(jì)的全部過(guò)程,并以最終軟件設(shè)計(jì)成果來(lái)證明其獨(dú)立完成實(shí)際任務(wù)的能力,從而,反映出理解和運(yùn)用JAVA基礎(chǔ)設(shè)計(jì)的水平和能力,最后完成軟件設(shè)計(jì)和程序調(diào)試并提交文檔:課程設(shè)計(jì)報(bào)告書(shū),報(bào)告書(shū)中包含設(shè)計(jì)的算法及部分程序代碼。1.2系統(tǒng)實(shí)現(xiàn)思路 2048這個(gè)游戲是在一個(gè)4×4的方格中隨機(jī)生成鏈兩個(gè)數(shù)字值為2或4的方塊,通過(guò)上下左右四個(gè)方向的移動(dòng),使得數(shù)字值相同的兩個(gè)方塊合并成一個(gè)值為兩者之和的方塊,每移動(dòng)一次,會(huì)在未被占用的方格中生成一個(gè)2或4的方塊,在所有方格被占滿(mǎn)且無(wú)

22、法移動(dòng)之后,游戲失敗。程序流程圖如下圖所示: 游戲界面游戲主面板游戲提示重置按鈕得分面板點(diǎn)擊重置通過(guò)上下左右滑動(dòng)將分?jǐn)?shù)加入得分面板,同時(shí)記錄最高分。1.3系統(tǒng)詳細(xì)設(shè)計(jì)根據(jù)游戲規(guī)則和面向?qū)ο驤ava程序設(shè)計(jì)要求,程序的主要類(lèi)有以下幾種:(1)設(shè)置數(shù)字顯示面板AddNumArea()和分?jǐn)?shù)顯示面板AddScoreLabel()把主界面分為上下兩個(gè)部分,上邊為分?jǐn)?shù)顯示,下邊是數(shù)字,其中設(shè)置字體、顏色以及大小。(2)隨機(jī)生成數(shù)字RandomValue()隨機(jī)生成2和4,以9:1的概率生成private int RandomValue() Random random = new Random();int

23、 n = random.nextInt(10);int newNum = 2; if (n>=1) /生成2newNum = 2;else/生成4newNum = 4;return(newNum);(3)空白產(chǎn)生新值NewValue()空白處產(chǎn)生一個(gè)新值,自帶refresh功能 public void NewValue() int newvalue = RandomValue();/ 新值 int index = RandomIndex(blanks);/ 新值得位置 blanks-;/ 空白格子數(shù)-1 for (int i = 0; i < 4; i+) for (int j =

24、 0; j < 4; j+) if (numlistij = 0) index-; if (index = 0) numlistij = newvalue; / 相應(yīng)label上顯示新值 numlabellistij.setText(Integer.toString(newvalue); return; (4)左移LeftReduce()通過(guò)上下左右來(lái)移動(dòng)數(shù)字下面是左移public boolean LeftReduce() boolean changed=false;/是否有改變(移動(dòng)和相加),作為后續(xù)是否產(chǎn)生新值得依據(jù) boolean has0before; int p;/ 行指針 i

25、nt value;/當(dāng)前值 for (int i = 0; i < 4; i+) p=0; value=0; has0before=false; for (int j = 0; j < 4; j+) if(numlistij>0&&has0before)/移動(dòng)方向上之前有空格,可移動(dòng),changed為true changed=true; if(numlistij=0) has0before=true; if (numlistij > 0) if(numlistij=value)/相加放p位置 int sum=value*2; numlistij=0; n

26、umlistip=sum; value=0; p+; score+=sum; changed=true;/相加,changed為true else if(value>0)/value放p中,當(dāng)前值放value中 numlistip=value; p+; value=numlistij; numlistij=0; if(value>0)/到最后value中可能有值 numlistip=value; return changed; (5)檢查新出的值CheckOut()檢查當(dāng)新出值后public boolean CheckOut() if(blanks>0) return fal

27、se; for(int i=0;i<4;i+) for(int j=0;j<3;j+) if(numlistij=numlistij+1) return false; for(int j=0;j<4;j+) for(int i=0;i<3;i+) if(numlistij=numlisti+1j) return false; return true; (6)判斷游戲結(jié)束Out()判斷游戲是否結(jié)束public void Out() JOptionPane.showMessageDialog(null, "游戲結(jié)束!", "2048PC版", 2); System.exit(0); (7)設(shè)置主窗體launchFrame()設(shè)置主窗體以及布局等public void launchFrame() setTitle("2048PC版"); / 設(shè)置窗體標(biāo)題 setBounds(700, 100, 400, 475); setLayout(new BorderLayout(); setResizable(fa

溫馨提示

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

評(píng)論

0/150

提交評(píng)論