版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 黃 淮 學(xué) 院</p><p> JAVA課程設(shè)計(jì)報(bào)告</p><p> 題目: 《日記本的設(shè)計(jì)與實(shí)現(xiàn)》課程設(shè)計(jì) </p><p> 學(xué) 院: 信息工程學(xué)院 </p><p> 姓 名: 劉學(xué)超 </p><p> 學(xué)
2、 號(hào): 1134120151 </p><p> 專 業(yè): 軟 件 工 程 </p><p> 班 級(jí): 軟工1101B班 </p><p> 指導(dǎo)教師: 王海榮 </p><p> 二0一二 年 十二月</p><p><
3、;b> 目 錄</b></p><p><b> 1.引 言2</b></p><p> 2.設(shè)計(jì)目的與任務(wù)2</p><p><b> 3.設(shè)計(jì)方案2</b></p><p> 3.1總體設(shè)計(jì)2</p><p> 3.2
4、設(shè)計(jì)要求3</p><p> 3.3系統(tǒng)的主要功能3</p><p> 3.4開發(fā)環(huán)境3</p><p> 3.5系統(tǒng)的功能模塊劃分與系統(tǒng)流程圖3</p><p> 3.5.1系統(tǒng)的功能模塊劃分3</p><p> 3.5.2萬年歷模塊流程圖4</p><p>
5、 3.5.3日記本模塊流程圖5</p><p> 3.6各個(gè)類說明6</p><p> 3.6.1主類NoteBook錯(cuò)誤!未定義書簽。</p><p> 3.6.2記事本Note類6</p><p> 3.6.3左側(cè)面板LeftPane類7</p><p> 3.6.4月份顯示Mont
6、hPane類7</p><p> 3.6.5年月顯示YearMonth類8</p><p> 3.6.6日期獲取DateTime類8</p><p> 3.6.7右側(cè)記事本顯示NotePane類錯(cuò)誤!未定義書簽。</p><p> 3.6.8記事本彈出菜單NotePopupMenu類錯(cuò)誤!未定義書簽。</p&g
7、t;<p> 4.各種功能截圖9</p><p> 5.課程設(shè)計(jì)總結(jié)11</p><p> 6.個(gè)人心得體會(huì)11</p><p><b> 7.附錄11</b></p><p><b> 摘 要</b></p><p> 本課程
8、設(shè)計(jì)通過代碼實(shí)現(xiàn)將理論知識(shí)和具體實(shí)踐相結(jié)合,鞏固提高了對(duì)JAVA的相關(guān)方法與概念的理解,使學(xué)生的發(fā)散思維及動(dòng)手能力進(jìn)一步加強(qiáng),加強(qiáng)對(duì)計(jì)算機(jī)及軟件工程的進(jìn)一步了解。</p><p> 在這個(gè)課程設(shè)計(jì)中,做成了一個(gè)有日歷標(biāo)記的記事本軟件,日記本的設(shè)計(jì)與實(shí)現(xiàn)面板由日歷、記事本、圖片、時(shí)鐘四部分組成。日歷部分可以選擇不同的年份、月份、日期和星期;記事本模塊可以實(shí)現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有相應(yīng)提示;
9、圖片模塊可以顯示預(yù)設(shè)的圖片;時(shí)鐘模塊可以用時(shí)鐘來顯示當(dāng)前時(shí)間。本軟件是一個(gè)實(shí)用性較強(qiáng),簡(jiǎn)潔,美觀,方便的功能軟件。</p><p> 關(guān)鍵字:記事本;日歷;</p><p><b> 引 言</b></p><p> Java是一種純面向?qū)ο蟮?、網(wǎng)絡(luò)編程首選的語言。Java技術(shù)作為軟件開的一種革命性技術(shù),已被列為當(dāng)今世界信息技術(shù)的主流之
10、一。為了適應(yīng)時(shí)代潮流,我們應(yīng)該加強(qiáng)對(duì)Java的學(xué)習(xí),更好的掌握這門課程。為此Java課程設(shè)計(jì)決定以“日記本的設(shè)計(jì)與實(shí)現(xiàn)”為設(shè)題材,借此鞏固加深我們對(duì)Java的了解。</p><p> 本次課程設(shè)計(jì)的實(shí)例雖然比較簡(jiǎn)單,程序設(shè)計(jì)也不是很復(fù)雜,但在此程序的設(shè)計(jì)過程也是一個(gè)學(xué)習(xí)過程,更是對(duì)復(fù)雜程序的一個(gè)學(xué)習(xí)過程,還能培養(yǎng)我們的數(shù)抽象能力。因此,我們覺得這次課程設(shè)計(jì)是非常有意義的,能為我們今后學(xué)習(xí)面向過程的程序設(shè)計(jì)作一些
11、鋪墊。</p><p><b> 設(shè)計(jì)目的與任務(wù)</b></p><p> 本課程設(shè)計(jì)所要求達(dá)到的目的和任務(wù):通過Java程序設(shè)計(jì)的一些重要理論基礎(chǔ)來實(shí)現(xiàn)“日記本的設(shè)計(jì)與實(shí)現(xiàn)”的“日歷”和“記事本”的雙重功能。并通過此次課程設(shè)計(jì)的訓(xùn)練,使學(xué)生鞏固和加深對(duì)Java這門課程的理解,通過利用所學(xué)到的計(jì)算科學(xué)的理論知識(shí),提高解決實(shí)際問題的能力,增強(qiáng)運(yùn)算、編程和使用技術(shù)資料
12、的技能,通過實(shí)際問題的分析設(shè)計(jì)、編程和調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法,能正確闡述設(shè)計(jì)和實(shí)驗(yàn)結(jié)果。通過這次課程設(shè)計(jì),培養(yǎng)實(shí)事求是、認(rèn)真、嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和刻苦鉆研不斷創(chuàng)新的精神,逐步建立正確的全局觀念。</p><p><b> 設(shè)計(jì)方案</b></p><p><b> 總體設(shè)計(jì)</b></p><p>
13、(1)問題定義:創(chuàng)建日記本的設(shè)計(jì)與實(shí)現(xiàn),實(shí)現(xiàn)對(duì)某日期的事情進(jìn)行記錄這主要功能,并能顯示設(shè)置的圖片,增加美觀。</p><p> (2)問題分析:通過對(duì)“日記本的設(shè)計(jì)與實(shí)現(xiàn)”這一題材的分析,我需要四個(gè)類來實(shí)現(xiàn)其“日歷”和“記事本”這兩大功能。通過主類NoteBook創(chuàng)建動(dòng)日記本的設(shè)計(jì)與實(shí)現(xiàn)軟件的主窗口,該類含有main方法,程序從該類開始執(zhí)行。再用余下LeftPane、NotePane類來顯示并改變?nèi)掌诤蛯?shí)現(xiàn)記事
14、本的功能。</p><p> ?。?)研究意義:通過本次課程設(shè)計(jì),我們掌握了Java語言的基本運(yùn)用,提高了理論結(jié)合實(shí)際的能力。 </p><p><b> 設(shè)計(jì)要求 </b></p><p> (1)日記本使用Java語言開發(fā)設(shè)計(jì)。課程的基本功能包括萬年歷、記事本和輔助功能三個(gè)部分。</p><p> (2)萬年歷
15、部分由微調(diào)器確定年月,由一組文本框顯示日歷。年月可選擇數(shù)據(jù)符合邏輯,默認(rèn)為當(dāng)前日期。</p><p> (3)月歷顯示應(yīng)該符合查看習(xí)慣,如星期六和星期日分別用不同顏色表示,當(dāng)日可用特別的字號(hào)和顏色</p><p> (4)記事本區(qū),記事本內(nèi)容按年月日記錄且保存。</p><p> (5)微調(diào)器應(yīng)該進(jìn)行事件設(shè)置,以及即時(shí)地顯示該年月的月歷;日期文本框可監(jiān)聽鼠標(biāo)事
16、件,當(dāng)單擊任何一個(gè)日期時(shí),若該日有記事內(nèi)容,則在日記本中顯示該日期的記錄文字;若該日無記錄,記事區(qū)保持空白。</p><p> (6)日記本應(yīng)該是開放的,內(nèi)容可按日期增減,保存應(yīng)即時(shí),刪除需謹(jǐn)慎刪除記錄時(shí),應(yīng)進(jìn)行對(duì)話框詢問確定。</p><p> (7)輔助功能包含了日記的導(dǎo)入導(dǎo)出?!皩?dǎo)入”可以將其他日記文件導(dǎo)入合并到當(dāng)前“日記本的設(shè)計(jì)與實(shí)現(xiàn)”的日記本中;“導(dǎo)出”可將“日記本的設(shè)計(jì)與實(shí)
17、現(xiàn)”的所有記錄內(nèi)容按日期為序?qū)С龅揭粋€(gè)文本文件中。為安全起見導(dǎo)出時(shí)需加以安全確認(rèn),要求輸入正確設(shè)定的密碼后才能導(dǎo)出。</p><p> (8)系統(tǒng)界面外觀和布局,可個(gè)性化設(shè)計(jì),總體原則是“界面簡(jiǎn)潔,操作便捷”。 </p><p><b> 系統(tǒng)的主要功能 </b></p><p> (1)可以對(duì)個(gè)人日志進(jìn)行保存、刪除、導(dǎo)入和導(dǎo)出;<
18、/p><p> (2)可以方便地在任何日期記載個(gè)人日志以及查看某個(gè)日期記載的日志 ;</p><p> (3)可以顯示當(dāng)前日期。</p><p><b> 開發(fā)環(huán)境</b></p><p> Windows XP;jdk1.5.0_16,Eclipse。 </p><p> 系統(tǒng)的功能模塊劃
19、分與系統(tǒng)流程圖</p><p><b> 系統(tǒng)的功能模塊劃分</b></p><p> 本日歷記事本共有11個(gè)java源文件。</p><p> NoteBook.java</p><p> 該java文件生成的類負(fù)責(zé)創(chuàng)建本日歷記事本程序主窗口。該類含有main方法,程序從該類開始執(zhí)行。</p>&
20、lt;p> leftPane.java</p><p> 該文件負(fù)責(zé)創(chuàng)建創(chuàng)建左側(cè)面板。</p><p> NotePane.java</p><p> 該文件負(fù)責(zé)創(chuàng)建右側(cè)面板、在文本框上彈出快捷菜單、創(chuàng)建日記文本</p><p> DateTime.java</p><p> 該文件獲得系統(tǒng)當(dāng)前的日期
21、,包括年月日</p><p> YearMonth.java</p><p> 該文件負(fù)責(zé)創(chuàng)建管理年份和月份的對(duì)象。</p><p> MonthPane.java</p><p> 該文件負(fù)責(zé)生成日歷創(chuàng)建日歷</p><p> 類模塊圖如圖3-1所示.</p><p><b&g
22、t; 萬年歷模塊流程圖</b></p><p> 萬年歷流程圖如圖3-2所示</p><p><b> 萬年歷</b></p><p> 按鈕 選擇日期</p><p> 正確輸入錯(cuò)誤輸入</p><p><b> 改變當(dāng)天日期</b&g
23、t;</p><p><b> 當(dāng)天是否有日記?</b></p><p><b> 有無</b></p><p><b> 更改記事本顯示</b></p><p><b> 日記本模塊流程圖</b></p><p&g
24、t; 日記本流程圖如圖3-3所示.</p><p><b> 顯示日記本</b></p><p> 保存 刪除 導(dǎo)入 導(dǎo)出</p><p> 以當(dāng)前日期為值, 如果當(dāng)前TreeMap打開文件對(duì) 打開保存文件</p><p> 當(dāng)前內(nèi)容為值保 有今天的記錄
25、就話框,如果選擇 對(duì)話框,保存</p><p> 存到TreeMap中 刪除它了文件就導(dǎo)入 到所選路徑下</p><p><b> 各個(gè)類說明</b></p><p> 記事本NoteBook類</p><p><b> 1.成員變量</b></p>&l
26、t;p><b> 表3-1</b></p><p><b> 2.方法</b></p><p><b> 表3-2</b></p><p> 記事本NotePane類</p><p><b> 1、成員變量</b></p>&
27、lt;p><b> 表3-3</b></p><p><b> 2、方法</b></p><p><b> 表3-4</b></p><p> 左側(cè)面板LeftPane類</p><p><b> 1.成員變量</b></p>
28、<p><b> 表3-5</b></p><p><b> 2.方法</b></p><p><b> 表3-6</b></p><p> 月份顯示MonthPane類</p><p><b> 1.成員變量</b></p&g
29、t;<p><b> 表3-7</b></p><p><b> 2.方法</b></p><p><b> 表3-8</b></p><p> 年月顯示YearMonth類</p><p><b> 1.成員變量</b></
30、p><p><b> 表3-9</b></p><p><b> 2.方法</b></p><p><b> 表3-10</b></p><p><b> 表3-11</b></p><p> 日期獲取DateTime類<
31、;/p><p><b> 1.成員變量</b></p><p><b> 表3-13</b></p><p><b> 2.方法</b></p><p><b> 表3-14</b></p><p><b> 4、各
32、種功能截圖</b></p><p><b> 主界面</b></p><p><b> 保存日記</b></p><p><b> 刪除日記</b></p><p><b> 導(dǎo)入日志</b></p><p>&
33、lt;b> 導(dǎo)出日記</b></p><p><b> 課程設(shè)計(jì)總結(jié)</b></p><p> 通過本次課程設(shè)計(jì)的練習(xí),我才知道我對(duì)知識(shí)的掌握是多么的不熟悉,太多東西我都不知道,最主要的是我練的太少了,太多都不熟悉,Java的學(xué)習(xí)不是看看就會(huì)的,最最主要的是多練。這次的課程設(shè)計(jì)為我敲響了警鐘,在以后的學(xué)習(xí)中一定要多多練習(xí),鍛煉自己的獨(dú)立思考能力
34、,和團(tuán)隊(duì)意識(shí),為以后的工作打好基礎(chǔ)。</p><p><b> 6、個(gè)人心得體會(huì)</b></p><p> “紅花雖好,也要綠葉相持”,同樣,只有理論是遠(yuǎn)遠(yuǎn)不夠的,理論還需要用實(shí)踐來證明。課程設(shè)計(jì)培養(yǎng)學(xué)會(huì)的多方面的能力,獨(dú)立思考、對(duì)知識(shí)的掌握、解決問題的能力等,我現(xiàn)在做的只是一個(gè)小小的程序設(shè)計(jì)而已,以后會(huì)有更大的軟件需要去做,也不是我一個(gè)人能完成的,所以團(tuán)隊(duì)意識(shí)也
35、是很重要的。</p><p><b> 7、附錄</b></p><p><b> 源程序代碼</b></p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import jav
36、a.io.*;</p><p> import java.util.*;</p><p> import javax.swing.*;</p><p> import javax.swing.event.*;</p><p> class NoteBook extends JFrame implements ChangeListene
37、r,MouseListener{</p><p> int year,month,day;</p><p> Calendar c;</p><p> int first,days;</p><p> LeftPane lp;</p><p> NotePane np;</p><p>
38、; public NoteBook(){</p><p> super("日記本的設(shè)計(jì)與實(shí)現(xiàn)");</p><p> this.setDefaultCloseOperation(3);</p><p> Container con=getContentPane();</p><p> bookInit();<
39、;/p><p> addEvent();</p><p> add(lp,"West");</p><p><b> add(np);</b></p><p> this.setBounds( 50, 20,1000,650);</p><p> this.setResi
40、zable(true); </p><p> this.setVisible(true);</p><p><b> }</b></p><p> void bookInit(){</p><p> lp=new LeftPane();</p><p> np=new NotePane(
41、);</p><p> year=DateTime.getYear();</p><p> month=DateTime.getMonth();</p><p> day=DateTime.getDay();</p><p><b> }</b></p><p> void addEve
42、nt(){</p><p> lp.ym.showMonth.addChangeListener(this);</p><p> lp.ym.showYear.addChangeListener(this);</p><p> for(int i=0;i<lp.mp.showDay.length;i++){</p><p> l
43、p.mp.showDay[i].addMouseListener(this);</p><p><b> }</b></p><p><b> }</b></p><p> public void stateChanged(ChangeEvent e){</p><p> month=Int
44、eger.parseInt(lp.ym.showMonth.getValue().toString());</p><p> year=Integer.parseInt(lp.ym.showYear.getValue().toString());</p><p> noteBookRefresh();</p><p><b> }</b>
45、</p><p> void noteBookRefresh(){</p><p> np.refreshContent(year,month,day);</p><p> np.setDateInfo(year,month,day);</p><p> lp.mp.arrangeNum(year,month,day);</p&
46、gt;<p><b> }</b></p><p> public void mouseClicked(MouseEvent e){</p><p> JTextField source=(JTextField)e.getSource();</p><p><b> try{</b></p>
47、;<p> day=Integer.parseInt(source.getText());</p><p> noteBookRefresh();</p><p><b> }</b></p><p> catch(Exception ee){}</p><p><b> }</b
48、></p><p> public void mousePressed(MouseEvent e) {}</p><p> public void mouseReleased(MouseEvent e){}</p><p> public void mouseEntered(MouseEvent e){}</p><p> pu
49、blic void mouseExited(MouseEvent e){}</p><p> class YearMonth extends JPanel{</p><p> private int year;</p><p> private int month;</p><p> private JLabel yl;</p&
50、gt;<p> private JLabel ml;</p><p> JSpinner showYear;//微調(diào)按鈕</p><p> JSpinner showMonth;</p><p> YearMonth(){</p><p><b> ymInit();</b></p>
51、<p> add(yl);add(showYear);</p><p> add(ml);add(showMonth);</p><p><b> }</b></p><p> void ymInit(){</p><p> yl=new JLabel("年");</p&g
52、t;<p> ml=new JLabel("月");</p><p> year=DateTime.getYear();</p><p> month=DateTime.getMonth();</p><p> showYear = new JSpinner(new SpinnerNumberModel(year,0,100
53、00,1));</p><p> showYear.setEditor(new JSpinner.NumberEditor(showYear, "0000"));</p><p> showYear.setPreferredSize(new Dimension(60, 30));</p><p> yl.setFont(new Font(&
54、quot;TimesRomn",Font.BOLD,16));</p><p> showMonth=new JSpinner(new SpinnerNumberModel(month,1,12,1));</p><p> showYear.setPreferredSize(new Dimension(60, 30));</p><p> ml.se
55、tFont(new Font("TimesRomn",Font.BOLD,16));</p><p><b> }</b></p><p><b> }</b></p><p> static class DateTime{</p><p> static Calenda
56、r today=Calendar.getInstance();</p><p> static int getYear(){</p><p> return today.get(today.YEAR);</p><p><b> }</b></p><p> static int getMonth(){</
57、p><p> return today.get(today.MONTH)+1;</p><p><b> }</b></p><p> static int getDay(){</p><p> return today.get(today.DAY_OF_MONTH);</p><p><
58、;b> }</b></p><p> static int getMonDay(int year,int month){</p><p> if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){</p><p> return 31;</p
59、><p><b> }</b></p><p> else if(month==4||month==6||month==9||month==11){</p><p> return 30;</p><p><b> }</b></p><p> if((year%4==
60、0&&year%100!=0)||year%400==0){</p><p> return 29;</p><p><b> }</b></p><p><b> else{</b></p><p> return 28;</p><p><b
61、> }</b></p><p><b> }</b></p><p><b> }</b></p><p> class LeftPane extends JPanel{</p><p> YearMonth ym;</p><p> Month
62、Pane mp;</p><p> JLabel tupian;</p><p> JPanel lp;</p><p> JSplitPane split;</p><p> LeftPane(){</p><p> super(new BorderLayout());</p><p&
63、gt; tupian=new JLabel(new ImageIcon("a.jpg"));</p><p> ym=new YearMonth();</p><p> mp=new MonthPane();</p><p> lp=new JPanel(new BorderLayout());</p><p>
64、 lp.add(ym,"South");</p><p> lp.add(mp);</p><p> lp.add(tupian,"North");</p><p> split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);</p><p> this
65、.add(lp);</p><p> this.add(split,"East");</p><p><b> } </b></p><p><b> }</b></p><p> class MonthPane extends JPanel{</p>
66、<p> JTextField showDay[];</p><p> int first,days;</p><p> YearMonth ym;</p><p> String[] week;</p><p> JLabel[] title;</p><p> int year,month,
67、day;</p><p> MonthPane(){</p><p> super(new GridLayout(7,7,3,3));</p><p><b> mcInit();</b></p><p> for(int i=0;i<7;i++)</p><p> add(tit
68、le[i]);</p><p> for(int i=0;i<42;i++)</p><p> add(showDay[i]);</p><p> arrangeNum(year,month,day);</p><p><b> }</b></p><p> void mcInit
69、(){</p><p> year=DateTime.getYear();</p><p> month=DateTime.getMonth();</p><p> day=DateTime.getDay();</p><p> String week[]={"日","一","二&qu
70、ot;,"三","四","五","六"};</p><p> title=new JLabel[7];</p><p> for(int j=0;j<7;j++){</p><p> title[j]=new JLabel();</p><p> t
71、itle[j].setText(week[j]);</p><p> title[j].setBorder(BorderFactory.createEmptyBorder());</p><p> title[j].setFont(new Font("",1,18));</p><p><b> }</b></p
72、><p> title[0].setForeground(Color.red);</p><p> title[6].setForeground(Color.blue);</p><p> showDay=new JTextField[42];</p><p> for(int i=0;i<42;i++){</p>&
73、lt;p> showDay[i]=new JTextField();</p><p> showDay[i].setFont(new Font("",0,14));</p><p> showDay[i].setEditable(false);</p><p><b> }</b></p><
74、;p><b> }</b></p><p> public void arrangeNum(int year,int month,int day){</p><p> days=DateTime.getMonDay(year,month);</p><p> Calendar c=Calendar.getInstance();&
75、lt;/p><p> c.set(year,month-1,1);</p><p> first=c.get(Calendar.DAY_OF_WEEK)-1;</p><p> if(first!=0){</p><p> for(int i=0;i<first;i++){</p><p> showDay
76、[i].setText("");</p><p><b> }</b></p><p><b> }</b></p><p> for(int i=first,n=1;i<first+days;i++,n++){</p><p> showDay[i].setTex
77、t(""+n);</p><p> int r=i+1;</p><p> if(n==day){</p><p> if(r%7==0||(r+6)%7==0){</p><p> showDay[i].setForeground(Color.blue);</p><p> showDa
78、y[i].setFont(new Font("TimesRoman",Font.BOLD,20));</p><p><b> }</b></p><p><b> else{</b></p><p> showDay[i].setForeground(Color.green);</p>
79、;<p> showDay[i].setFont(new Font("TimesRoman",Font.BOLD,20));</p><p><b> }</b></p><p><b> }</b></p><p><b> else{</b></p&
80、gt;<p> showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));</p><p> showDay[i].setForeground(Color.black);</p><p><b> }</b></p><p> if(i%7==0){
81、</p><p> showDay[i].setForeground(Color.red);</p><p><b> }</b></p><p> if(i%7==6){</p><p> showDay[i].setForeground(Color.blue);</p><p><
82、;b> }</b></p><p><b> }</b></p><p> if(first+days<41){</p><p> for(int i=first+days;i<42;i++){</p><p> showDay[i].setText("");&
83、lt;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //時(shí)鐘顯示</b>&
84、lt;/p><p> class TimeLabel extends JLabel implements Runnable{</p><p> TimeLabel(){</p><p> this.setFont(new Font("",1,20));</p><p> this.setForeground(Color
85、.red);</p><p> new Thread(this).start();</p><p><b> }</b></p><p> public String getTime(){</p><p> Calendar now=Calendar.getInstance();//取得系統(tǒng)時(shí)間 </p&g
86、t;<p><b> int hour;</b></p><p> int minute;</p><p> int second;</p><p> String timeInfo;</p><p> hour=now.get(now.HOUR_OF_DAY);</p><p
87、> minute=now.get(now.MINUTE);</p><p> second=now.get(now.SECOND);</p><p> if(hour<=9)</p><p> timeInfo="0"+hour+":";</p><p><b> els
88、e</b></p><p> timeInfo=hour+":";</p><p> if(minute<=9)</p><p> timeInfo= timeInfo+"0"+minute+":";</p><p><b> else</b
89、></p><p> timeInfo= timeInfo+minute+":";</p><p> if(second<=9)</p><p> timeInfo= timeInfo+"0"+second;</p><p><b> else</b></
90、p><p> timeInfo= timeInfo+second;</p><p> return timeInfo;</p><p><b> }</b></p><p> public void run(){</p><p> while(true) //線程的運(yùn)行(隔一秒刷新)循環(huán)顯示
91、</p><p><b> { try</b></p><p> {this.setText(this.getTime());</p><p> Thread.sleep(1000);</p><p><b> }</b></p><p> catch (Excep
92、tion e) {}</p><p><b> }}</b></p><p><b> }</b></p><p> class NotePane extends JPanel implements ActionListener,MouseListener{</p><p> p
93、rivate int year,month,day;</p><p> private JTextArea note;</p><p> private JButton save,delete,input,export;</p><p> private Hashtable table;</p><p> private JLabel
94、 dateInfo ;</p><p> private File file;</p><p> private JPanel buttonPane;</p><p> private JMenuItem copy;</p><p> private JMenuItem cut;</p><p> priv
95、ate JMenuItem paste;</p><p> private JPopupMenu f;</p><p> JPanel p=new JPanel();</p><p> NotePane(){</p><p> super(new BorderLayout());</p><p> noteI
96、nit();</p><p> buttonInit();</p><p> addEvent();</p><p> p.add(dateInfo);</p><p> p.add(new TimeLabel());</p><p> add(p,"North");</p>
97、<p> add(new JScrollPane(note));</p><p> add(buttonPane,"South");</p><p> refreshContent(year,month,day);</p><p><b> }</b></p><p> priv
98、ate void noteInit(){</p><p> year=DateTime.getYear();</p><p> month=DateTime.getMonth();</p><p> day=DateTime.getDay();</p><p> dateInfo=new JLabel(year+" 年 &q
99、uot;+month+" 月 "+day+" 日 ",JLabel.CENTER);</p><p> dateInfo.setFont(new Font("TimesRomn",Font.BOLD,16));</p><p> dateInfo.setForeground(Color.BLUE);</p>&l
100、t;p> table=new Hashtable();</p><p> file=new File("Note.txt");</p><p> initFile();</p><p> note=new JTextArea();</p><p> note.setFont(new Font("&
101、quot;,0,14));</p><p> note.setLineWrap(true);</p><p><b> }</b></p><p> private void buttonInit(){</p><p> f=new JPopupMenu();</p><p> cut=
102、new JMenuItem("剪切");</p><p> copy=new JMenuItem("復(fù)制");</p><p> paste=new JMenuItem("粘貼");</p><p> save=new JButton("保存日記") ;</p>&l
103、t;p> delete=new JButton("刪除日記");</p><p> input=new JButton("導(dǎo)入日記");</p><p> export=new JButton("導(dǎo)出日記");</p><p> buttonPane=new JPanel(new FlowLa
104、yout());</p><p> buttonPane.add(save);</p><p> buttonPane.add(delete);</p><p> buttonPane.add(input);</p><p> buttonPane.add(export);</p><p> f.add(cu
105、t);</p><p> f.add(copy);</p><p> f.add(paste);</p><p><b> }</b></p><p> private void addEvent(){</p><p> save.addActionListener(this);<
106、/p><p> delete.addActionListener(this);</p><p> input.addActionListener(this);</p><p> export.addActionListener(this);</p><p> cut.addActionListener(this);</p>
107、<p> copy.addActionListener(this); </p><p> paste.addActionListener(this);</p><p> note.addMouseListener(this);</p><p><b> }</b></p><p> pr
108、ivate void initFile(){</p><p> if(!file.exists()){</p><p><b> try{</b></p><p> FileOutputStream out=new FileOutputStream(file);</p><p> ObjectOutputStre
109、am objectOut=new ObjectOutputStream(out);</p><p> objectOut.writeObject(table);</p><p> objectOut.close();</p><p> out.close();</p><p><b> }</b></p&g
110、t;<p> catch(IOException e) {}</p><p><b> }</b></p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.ge
111、tSource()==save)</p><p> save(year,month,day);</p><p> else if(e.getSource()==delete)</p><p> delete(year,month,day);</p><p> else if(e.getSource()==input)</p>
112、;<p><b> input();</b></p><p> else if(e.getSource()==export)</p><p><b> export();</b></p><p> else if(e.getSource()==cut)</p><p> n
113、ote.cut();</p><p> else if(e.getSource()==copy)</p><p> note.copy();</p><p> else if(e.getSource()==paste)</p><p> note.paste();</p><p><b> }<
114、;/b></p><p> public void setDateInfo(int _y,int _m,int _d){</p><p> this.year=_y;</p><p> this.month=_m;</p><p> this.day=_d;</p><p> dateInfo.setT
115、ext(_y+" 年 "+_m+" 月 "+_d+" 日");</p><p><b> }</b></p><p> public String getDateKey(){</p><p> String s=""+year;</p><
116、p> if(month<10)s+="/0"+month;</p><p> else s+="/"+month;</p><p> if(day<10)s+="/0"+day;</p><p> else s+="/"+day;</p><
117、p><b> return s;</b></p><p><b> }</b></p><p> public void refreshContent(int year,int month,int day){</p><p> String key=this.getDateKey();</p>
118、<p><b> try{</b></p><p> FileInputStream in1=new FileInputStream(file);</p><p> ObjectInputStream in2=new ObjectInputStream(in1);</p><p> table=(Hashtable)in2.r
119、eadObject();</p><p> in1.close();</p><p> in2.close();</p><p><b> }</b></p><p> catch(Exception ee) {}</p><p> if(table.containsKey(key))&
120、lt;/p><p> note.setText(table.get(key)+"");</p><p><b> else</b></p><p> note.setText("");</p><p><b> }</b></p><p
121、> public void save(int year,int month,int day){</p><p> String logContent=note.getText();</p><p> String key=this.getDateKey();</p><p><b> try{</b></p><
122、;p> table.put(key,logContent);</p><p> FileOutputStream out=new FileOutputStream(file);</p><p> ObjectOutputStream objectOut=new ObjectOutputStream(out);</p><p> objectOut.wr
123、iteObject(table);</p><p> objectOut.close();</p><p> out.close();</p><p><b> }</b></p><p> catch(Exception ee) {}</p><p> JOptionPane.show
124、MessageDialog(null,key+"當(dāng)天的日記已成功保存!");</p><p><b> }</b></p><p> public void delete(int year,int month,int day){</p><p> String key=this.getDateKey();</p&
125、gt;<p> if(table.containsKey(key)){</p><p> JOptionPane jo=new JOptionPane();</p><p> int x= jo.showConfirmDialog(null,"要?jiǎng)h除"+year+"年"+month+"月"+day+"
126、日"+"的記錄嗎?", "!!!", JOptionPane.YES_NO_OPTION);</p><p> if(x==jo.YES_OPTION){</p><p><b> try{</b></p><p> FileInputStream in1=new FileInputStr
127、eam(file);</p><p> ObjectInputStream in2=new ObjectInputStream(in1);</p><p> table=(Hashtable)in2.readObject();</p><p> in1.close();</p><p> in2.close();</p>
128、<p> table.remove(key);</p><p> FileOutputStream out=new FileOutputStream(file);</p><p> ObjectOutputStream objectOut=new ObjectOutputStream(out);</p><p> objectOut.writeO
129、bject(table);</p><p> objectOut.close();</p><p> out.close();</p><p> note.setText("");</p><p><b> }</b></p><p> catch(Exception
130、 ee) {}</p><p><b> }</b></p><p><b> else{</b></p><p><b> return;</b></p><p><b> }</b></p><p><b>
131、 }</b></p><p><b> else{</b></p><p> String m=""+year+"年"+month+"月"+day+"日"+"是空的";</p><p> JOptionPane.showMess
132、ageDialog(this,m,"look!",JOptionPane.WARNING_MESSAGE);</p><p><b> }</b></p><p><b> }</b></p><p> public void export(){</p><p> Str
133、ing pass=JOptionPane.showInputDialog("導(dǎo)出前請(qǐng)輸入你的密碼?");</p><p> if(!pass.equals("1134120151")){</p><p> JOptionPane.showMessageDialog(new JDialog(),"抱歉,你的密碼不正確不能導(dǎo)出!"
134、);return;</p><p><b> }</b></p><p> TreeMap map=new TreeMap(table);</p><p> Set mapping=map.entrySet();</p><p> File newfile=new File("日歷記事本1.txt&qu
135、ot;);</p><p><b> try{</b></p><p> PrintWriter out=new PrintWriter( newfile );</p><p> for(Iterator i=mapping.iterator();i.hasNext();){</p><p> Map.Entry
136、 me=(Map.Entry)i.next();</p><p> out.println(me.getKey());</p><p> out.println(me.getValue()+"\n\r" );</p><p><b> }</b></p><p> out.close();&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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課程設(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塔
評(píng)論
0/150
提交評(píng)論