版權(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> 課程設(shè)計(jì)題目:萬(wàn) 年 歷</p><p> 指 導(dǎo) 老 師:**********</p><p> 學(xué) 生 姓 名:*********</p><p> 專 業(yè):**********</p><p> 學(xué) 號(hào):***
2、****</p><p> Java課程設(shè)計(jì)-萬(wàn)年歷</p><p><b> 1、課程設(shè)計(jì)目的:</b></p><p> 這學(xué)期我們學(xué)習(xí)了Java語(yǔ)言,Java語(yǔ)言是面向?qū)ο蟮拈_(kāi)發(fā)方法是當(dāng)今世界最流行的開(kāi)發(fā)方法,是當(dāng)今流行的網(wǎng)絡(luò)編程語(yǔ)言。它具有面向?qū)ο?、跨平臺(tái)、分布應(yīng)用等特點(diǎn)。它不僅具有更貼近自然的語(yǔ)義,而且有利于軟件的維護(hù)和繼承。很
3、多程序開(kāi)發(fā)人員得第一選擇。</p><p> 為了進(jìn)一步鞏固課堂上所學(xué)到的知識(shí),深刻把握J(rèn)ava語(yǔ)言的重要概念及其面向?qū)ο蟮奶匦?,鍛煉學(xué)生熟練的應(yīng)用面向?qū)ο蟮乃枷牒驮O(shè)計(jì)方法解決實(shí)際問(wèn)題的能力,開(kāi)設(shè)了Java程序設(shè)計(jì)課程設(shè)計(jì)。讓學(xué)生自己動(dòng)手動(dòng)腦,將書(shū)本上得知識(shí)運(yùn)用到實(shí)踐當(dāng)中去,使知識(shí)能更好得融會(huì)貫通。</p><p> 為了達(dá)到這個(gè)目的,我們需要自己動(dòng)手做一個(gè)Java的課程設(shè)計(jì),在這個(gè)課
4、程設(shè)計(jì)里我們需要根據(jù)我們手中現(xiàn)有得軟件與知識(shí)基礎(chǔ),獨(dú)立得將它完成,只有這樣,我們才能把理論變成實(shí)踐,將知識(shí)真正得做到學(xué)以致用。</p><p> 這次課程設(shè)計(jì)我主要研究了利用已學(xué)的Java知識(shí)編輯一個(gè)電子萬(wàn)年歷。通過(guò)此次課程設(shè)計(jì),來(lái)鞏固所學(xué)Java語(yǔ)言基本知識(shí),增進(jìn)Java語(yǔ)言編輯基本功,掌握J(rèn)DK、JCreator等開(kāi)發(fā)工具的運(yùn)用,拓寬常用類庫(kù)的應(yīng)用。并通過(guò)自己動(dòng)手,自主得學(xué)習(xí),對(duì)Java這門課程有更深得了解
5、與認(rèn)識(shí)。</p><p><b> 2、需求分析:</b></p><p> 2.1、本程序要求:</p><p> 1、使用圖形用戶界面;</p><p> 2、本程序能夠?qū)崿F(xiàn)日期與星期查詢,同時(shí)顯示此時(shí)的時(shí)間。</p><p><b> 2.2、功能設(shè)計(jì):</b>
6、;</p><p> 本程序要構(gòu)建萬(wàn)年歷程序,其功能如下:</p><p> (1)通過(guò)窗口形式運(yùn)行,實(shí)現(xiàn)界面功能;</p><p> (2)以月歷的形式來(lái)顯示日期與星期;</p><p> (3)為用戶提供年份與月份的下拉形式菜選擇年份與月份;</p><p> (4)同時(shí)顯示查看時(shí)的時(shí)刻。</p&g
7、t;<p> 3、課程設(shè)計(jì)的基本算法</p><p> public class wnl extends JFrame implements ActionListener,ItemListener{</p><p> Date date = new Date(); </p><p> private GregorianCalendar greg
8、orianCalendar = new GregorianCalendar();</p><p> //定義中英文字符數(shù)組存儲(chǔ)星期信息,用于轉(zhuǎn)換顯示</p><p> private String[] stringWeekEn = new String[] { "SUN", "MON", "TUE", "WED&qu
9、ot;,</p><p> "THU", "FRI", "SAT" };</p><p> private String[] stringWeekCn = new String[] { "星期日", "星期一", "星期二", "星期三",<
10、/p><p> "星期四", "星期五", "星期六" };</p><p> //定義存儲(chǔ)月份的信息數(shù)組,用于轉(zhuǎn)換顯示方式</p><p> private String[] stringMonthEn = new String[] { "Jan", "Feb",
11、 "Mar", "Apr",</p><p> "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };</p><p> pr
12、ivate String[] stringMonthCn = {"1月","2月","3月","4月","5月","6月",</p><p> "7月","8月","9月","10月","11月"
13、;,"12月"};</p><p> private String[] sysNowTime = new String[6];//sysNowTime 用于存儲(chǔ)系統(tǒng)時(shí)間的變量</p><p> private String[] sysRunTime = new String[6]; </p><p> private JLabel []la
14、belWeek = new JLabel[7]; </p><p> private JLabel []labelDay = new JLabel[42];</p><p> private JLabel labelTime = new JLabel();</p><p> private JPanel panel1 = new JPanel()
15、;</p><p> private JPanel panel2 = new JPanel();</p><p> private JPanel panel3 = new JPanel();</p><p> private JComboBox combo1 = new JComboBox();</p><p> private JC
16、omboBox combo2 = new JComboBox();</p><p> private JButton buttonToday = new JButton();</p><p> private Border border = BorderFactory.createRaisedBevelBorder();</p><p> private B
17、order border1 = BorderFactory.createLineBorder(Color.cyan,3);</p><p> public wnl (String title) {</p><p> super(title);</p><p> for (int y = 1900; y < 2200; y++) {</p>
18、<p> combo1.addItem(" "+ new Integer(y).toString()+"年"); </p><p><b> }</b></p><p> for (int m = 0;m<12;m++){</p><p> combo2.addItem(&quo
19、t; "+stringMonthCn[m]);</p><p><b> }</b></p><p> buttonToday.setText("現(xiàn)在時(shí)刻");</p><p> setLayout(new FlowLayout());</p><p> add(panel1);&
20、lt;/p><p> add(panel2);</p><p> add(panel3);</p><p> panel1.setLayout(new GridLayout(2,3,10,2));</p><p> panel1.add(combo1); </p><p> combo1.addItemListe
21、ner(this); </p><p> panel1.add(combo2);</p><p> combo2.addItemListener(this);</p><p> panel1.add(buttonToday);</p><p> // buttonToday.addActionListener(this);&
22、lt;/p><p> labelTime.setFont(new Font("宋體",Font.PLAIN,16));</p><p> labelTime.setForeground(Color.red);</p><p> panel1.add(labelTime);</p><p> Timer time = n
23、ew Timer(1000,new TimerListener());</p><p> time.addActionListener(new TimerListener());</p><p> //time.setRepeats(true); </p><p> time.start();</p><p> //la
24、belTime.addAncestorListener(new TimerListener());</p><p> panel2.setLayout(new GridLayout(7,7,10,10));</p><p> panel2.setBackground(Color.white);</p><p> for(int i=0;i<7;i++){
25、</p><p> labelWeek[i] = new JLabel();</p><p> labelWeek[i].setHorizontalAlignment(0);</p><p> if(i==0||i==6){</p><p> labelWeek[i].setBackground(Color.blue);</p&
26、gt;<p> labelWeek[i].setForeground(Color.RED);</p><p> labelWeek[i].setFont(new Font("黑體",Font.BOLD,14));</p><p><b> }</b></p><p><b> else{<
27、;/b></p><p> labelWeek[i].setForeground(Color.BLACK);</p><p> labelWeek[i].setFont(new Font("新宋體",Font.PLAIN,14));</p><p><b> }</b></p><p>
28、 labelWeek[i].setText(stringWeekCn[i]);</p><p> panel2.add(labelWeek[i]);</p><p><b> }</b></p><p> for(int i= 0;i<42;i++){</p><p> labelDay[i] = new
29、JLabel();</p><p> labelDay[i].setHorizontalAlignment(0);</p><p> labelDay[i].setText("");</p><p> panel2.add(labelDay[i]);</p><p><b> }</b><
30、;/p><p> addWindowListener(new WindowAdapter(){ </p><p> public void windowClosing(WindowEvent e){ </p><p> System.exit(0); </p><p><b> } </b></p>&
31、lt;p><b> }); </b></p><p> setSize(300,300); </p><p> setBounds(250, 200, 400, 360);</p><p> setVisible(true);</p><p> setResizable(false);</p>
32、<p> setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> getSysDate();</p><p> setNowDate();</p><p><b> } </b></p><p> public void actionPer
33、formed(ActionEvent ae){</p><p> if(ae.getSource()==buttonToday){</p><p> setNowDate();</p><p><b> }</b></p><p><b> }</b></p><p>
34、; public void itemStateChanged(ItemEvent aa){</p><p> setChangeDate();</p><p><b> }</b></p><p> public int turnWeek(String week){</p><p><b> int
35、i;</b></p><p> for(i=0;i<7;i++)</p><p> if(week.equalsIgnoreCase(stringWeekEn[i]))</p><p><b> break;</b></p><p> return i; </p><
36、p><b> }</b></p><p> public int turnMonth(String month){</p><p><b> /**</b></p><p> *int turnMonth(String month)</p><p> *@month 系統(tǒng)日期中的月,
37、諸如Jan\Feb</p><p> *@return int</p><p> *返回一個(gè)整數(shù)值,用于尋找stringMonthCn[]數(shù)組中對(duì)應(yīng)的中文月份</p><p><b> */</b></p><p><b> int i;</b></p><p>
38、for(i=0;i<12;i++)</p><p> if(month.equalsIgnoreCase(stringMonthEn[i]))</p><p><b> break;</b></p><p> return i; </p><p><b> }</b></
39、p><p><b> /**</b></p><p> *setNowDate()</p><p><b> *設(shè)置當(dāng)前系統(tǒng)日期</b></p><p><b> */</b></p><p> public void setNowDate(){&
40、lt;/p><p> setSysDate(getNowYear(),getNowMonth());</p><p> getSysRunDate(); </p><p> setDateNull();</p><p> combo1.setSelectedIndex(getShowYear() - 1900);</p>
41、;<p> combo2.setSelectedIndex(getShowMonth());</p><p> setDays(getMonthDays(getNowYear(),getNowMonth()),getInitWeek(sysRunTime[0]),getNowDay());</p><p> labelTime.setText(sysNowTime[3]
42、);</p><p> labelTime.setHorizontalAlignment(0); </p><p><b> }</b></p><p> /**Integer getShowYear()</p><p> *獲取組合框中應(yīng)該顯示的年份</p><p><b>
43、 */</b></p><p> public void setSysDate(int year,int month){</p><p> gregorianCalendar.set(year,month,1);</p><p><b> }</b></p><p> public void setD
44、ateNull(){</p><p> for(int i=0;i<42;i++){</p><p> labelDay[i].setText(" ");</p><p><b> }</b></p><p><b> }</b></p><p&
45、gt; public void setChangeDate(){</p><p> setSysDate(getComboYear(),getComboMonth());</p><p> getSysRunDate();</p><p> setDateNull();</p><p> setDays(getMonthDays(g
46、etComboYear()+1,getComboMonth()+1),getInitWeek(sysRunTime[0]),-1);</p><p><b> /**</b></p><p> *返回所選年月的天數(shù),因?yàn)閿?shù)組中的數(shù)值從0開(kāi)始,所以各月必須加1.</p><p> *而2月,經(jīng)過(guò)是否為閏年判斷,選擇返回28或29天.<
47、/p><p> *其余月份為大月,返回31天.</p><p><b> **/</b></p><p><b> }</b></p><p> public int getMonthDays(int year, int month) {</p><p> switch
48、 (month) {</p><p><b> case 4:</b></p><p><b> case 6:</b></p><p><b> case 9:</b></p><p><b> case 11:</b></p>&
49、lt;p> return 30;//小月返回30天</p><p><b> case 2:</b></p><p> if (gregorianCalendar.isLeapYear(year)) {</p><p> //isLeapYear(year)確定當(dāng)前紀(jì)元中的指定年份是否為閏年。</p><p&g
50、t; return 29;</p><p><b> } else {</b></p><p> return 28;</p><p> }//閏年的二月返回29天,平年返回28天</p><p><b> default:</b></p><p> return
51、 31;</p><p><b> //大月返回31天</b></p><p><b> }</b></p><p><b> }</b></p><p><b> /**</b></p><p> *int getCom
52、boYear()</p><p> *獲取組合框中的年份</p><p><b> */</b></p><p> public void getSysDate(){</p><p> date = gregorianCalendar.getTime();</p><p> sysNow
53、Time = (date.toString()).split(" ");</p><p><b> }</b></p><p> public void getSysRunDate(){</p><p> date = gregorianCalendar.getTime();</p><p>
54、 sysRunTime = (date.toString()).split(" ");</p><p><b> }</b></p><p> public int getComboYear(){</p><p> return combo1.getSelectedIndex()+1900;</p>&l
55、t;p><b> }</b></p><p> /***int getComboMonth()</p><p> *獲取月組合框中的整數(shù)值,</p><p><b> */</b></p><p> public int getComboMonth(){</p><
56、;p> return combo2.getSelectedIndex();</p><p><b> }</b></p><p> public int getInitWeek(String initWeek){</p><p><b> /**</b></p><p> *getW
57、eekNow(String initWeek)</p><p> *@para nowWeek 系統(tǒng)日期中的星期</p><p> *返回當(dāng)月中的1號(hào)是從星期幾開(kāi)始</p><p><b> */</b></p><p> int nowWeek = 0 ;</p><p> for(i
58、nt i = 0;i<7;i++){</p><p> if(initWeek.equalsIgnoreCase(stringWeekEn[i])){</p><p> nowWeek = i;</p><p><b> break;</b></p><p><b> }</b><
59、;/p><p><b> }</b></p><p> return nowWeek;</p><p><b> }</b></p><p> public int getNowYear(){</p><p> return Integer.parseInt(sysNo
60、wTime[5]);</p><p><b> }</b></p><p> public int getNowMonth(){</p><p> int nowMonth=0;</p><p> for(int i=0;i<12;i++){</p><p> if(sysNowT
61、ime[1].equalsIgnoreCase(stringMonthEn[i]));</p><p> nowMonth=i;</p><p><b> break;</b></p><p><b> }</b></p><p> return nowMonth; </p&
62、gt;<p><b> }</b></p><p> public int getNowDay(){</p><p> return Integer.parseInt(sysNowTime[2]);</p><p><b> }</b></p><p> public Int
63、eger getShowYear(){</p><p> return Integer.parseInt(sysNowTime[5]); </p><p><b> }</b></p><p> public Integer getShowMonth(){</p><p><b> /**<
64、;/b></p><p> *Integer getShowMonth()</p><p> *獲取在組給框中顯示的中文格式月份:如七月\八月等</p><p><b> */</b></p><p> return turnMonth(sysNowTime[1]);</p><p>
65、;<b> }</b></p><p> public void setDays(int monthDays,int initWeek,int day){</p><p><b> /**</b></p><p> *void setDays(int monthDays,int initWeek,int day)&
66、lt;/p><p> *@para monthDays 本月天數(shù)</p><p> *@para initWeek 初始星期</p><p> *@para day 今天日</p><p><b> *設(shè)置月歷</b></p><p><b> */</b></
67、p><p> setDateNull();</p><p> for(int i=initWeek;i<initWeek+monthDays+1;i++){</p><p> if((i-initWeek+1)==day){</p><p> labelDay[i].setBorder(border1);</p>&l
68、t;p> labelDay[i].setForeground(Color.BLUE);</p><p> labelDay[i].setFont(new Font("黑體",Font.BOLD,20));</p><p> }else if((i%7==0)||(i%7==6))</p><p> labelDay[i].setFo
69、reground(Color.RED);</p><p><b> else{</b></p><p> labelDay[i].setForeground(Color.BLACK);</p><p><b> }</b></p><p> labelDay[i].setText(Strin
70、g.valueOf(i-initWeek+1));</p><p><b> }</b></p><p> for(int i=initWeek+monthDays;i<42;i++)</p><p> labelDay[i].setText("");</p><p><b>
71、 }</b></p><p> class TimerListener implements ActionListener{</p><p> //AdapterDemo var=new AdapterDemo("萬(wàn)年歷");</p><p> public void actionPerformed(ActionEvent e)
72、 {</p><p> GregorianCalendar g = new GregorianCalendar();</p><p> String clock = new String((g.getTime().toString().split(" "))[3]); </p><p> labelTime.setText(cloc
73、k);</p><p><b> }</b></p><p><b> }</b></p><p><b> 4、運(yùn)行結(jié)果:</b></p><p> 在安裝有JRE平臺(tái)的環(huán)境下,雙擊生成的萬(wàn)年歷.jar運(yùn)行:</p><p> 說(shuō)明:簡(jiǎn)潔而明
74、晰的運(yùn)行結(jié)果,足以證明實(shí)驗(yàn)的正確性 </p><p><b> 5、體會(huì)心得:</b></p><p> 經(jīng)過(guò)短暫的一周的Java程序設(shè)計(jì),使我又學(xué)到了很多的知識(shí),尤其是運(yùn)用Java知識(shí)去解決實(shí)際問(wèn)題的能力又得到了很大的提高。盡管所設(shè)計(jì)的程序比較簡(jiǎn)單,但是程序中的每個(gè)功能的實(shí)現(xiàn)都經(jīng)過(guò)了自己的一定認(rèn)真的思考。由于把所學(xué)的知識(shí)做到很靈活的運(yùn)用在實(shí)際中,對(duì)于現(xiàn)在的我還有
75、一定的難度,故而,在設(shè)計(jì)的每個(gè)的環(huán)節(jié)中,都會(huì)多多少少的遇到一些問(wèn)題,這就促使我去查閱各種資料,或者請(qǐng)教老師和同學(xué),極大的提高我的專業(yè)素養(yǎng),同時(shí)對(duì)在有些書(shū)上的理論知識(shí)在實(shí)際的運(yùn)用,以及應(yīng)該注意的問(wèn)題有了比較深刻的認(rèn)識(shí)。當(dāng)然,仍然有些理論問(wèn)題不是很好的去運(yùn)用,或者是了解的不深刻。這就使的在實(shí)踐中的所設(shè)計(jì)的程序有些功能不是自己所想的那樣的完美。不過(guò),既然發(fā)現(xiàn)了問(wèn)題的所在,我就不會(huì)放棄的,直至問(wèn)題得到解決。這些也同時(shí)反映出了平時(shí)運(yùn)用知識(shí)去實(shí)踐這
76、方面做的太少。太缺乏經(jīng)驗(yàn)。對(duì)所設(shè)計(jì)中將所面臨的問(wèn)題認(rèn)識(shí)不夠。是Java課程設(shè)計(jì)讓我認(rèn)識(shí)到了這些問(wèn)題的存在。同時(shí)給我提供了去面對(duì)這些問(wèn)題的平臺(tái)。也使我充分的認(rèn)識(shí)到在以后也應(yīng)該怎樣去實(shí)踐,怎樣去學(xué)習(xí)一門計(jì)算機(jī)語(yǔ)言,以及如何去運(yùn)用這門語(yǔ)言去解決實(shí)際問(wèn)題等等。</p><p> 總之,在經(jīng)過(guò)這次Java的課程設(shè)計(jì),使我認(rèn)識(shí)到了自己很多的缺點(diǎn),同時(shí),也是我學(xué)到新知識(shí)和新方法的一個(gè)機(jī)會(huì)。這給我在以后繼續(xù)學(xué)習(xí)好這門語(yǔ)言指明了
77、方向。</p><p><b> 6、參考文獻(xiàn):</b></p><p> [1]《Java2從入門到精通》,印旻編、許偉編著,清華大學(xué)出版社</p><p> [2]《Java編程思想》,周文龍等著,青年出版社</p><p> [3]《Java學(xué)習(xí)指南》,寒露、王梅等著,教育出版社</p>&l
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java萬(wàn)年歷課程設(shè)計(jì)
- java課程設(shè)計(jì)--萬(wàn)年歷
- java課程設(shè)計(jì)--萬(wàn)年歷設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告-萬(wàn)年歷
- java萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- java超級(jí)萬(wàn)年歷課程設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告---萬(wàn)年歷
- 【java課程設(shè)計(jì)】基于java的萬(wàn)年歷設(shè)計(jì)與實(shí)現(xiàn)(附源代碼)
- java萬(wàn)年歷課程設(shè)計(jì)報(bào)告 (2)
- 萬(wàn)年歷java課程設(shè)計(jì)說(shuō)明書(shū)
- java課程設(shè)計(jì)報(bào)告---實(shí)用萬(wàn)年歷記事本
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)--萬(wàn)年歷電子時(shí)鐘
- 萬(wàn)年歷課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論