版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 黃 淮 學(xué) 院JAVA課程設(shè)計(jì)報(bào)告 題目: 日記本的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì) 學(xué) 院: 信息工程學(xué)院 姓 名: 劉學(xué)超 學(xué) 號(hào): 1134120151 專 業(yè): 軟 件 工 程 班 級(jí): 軟工1101B班 指導(dǎo)教師: 王海榮 二0一二 年 十二月目 錄 TOC o 1-3 h z u HYPERLINK l _Toc326473121 1.引 言 PAGEREF _Toc326473121 h 3 HYPERLINK l _Toc326473122 2.設(shè)計(jì)目的與任務(wù) PAGEREF _Toc326473122 h 4 HYPERLINK l _Toc326473123 3.設(shè)計(jì)方案 PAGERE
2、F _Toc326473123 h 5 HYPERLINK l _Toc326473124 3.1總體設(shè)計(jì) PAGEREF _Toc326473124 h 5 HYPERLINK l _Toc326473125 3.2設(shè)計(jì)要求 PAGEREF _Toc326473125 h 5 HYPERLINK l _Toc326473126 3.3系統(tǒng)的主要功能 PAGEREF _Toc326473126 h 5 HYPERLINK l _Toc326473127 3.4開(kāi)發(fā)環(huán)境 PAGEREF _Toc326473127 h 5 HYPERLINK l _Toc326473128 3.5系統(tǒng)的功能模塊劃
3、分與系統(tǒng)流程圖 PAGEREF _Toc326473128 h 6 HYPERLINK l _Toc326473129 系統(tǒng)的功能模塊劃分 PAGEREF _Toc326473129 h 6 HYPERLINK l _Toc326473130 萬(wàn)年歷模塊流程圖 PAGEREF _Toc326473130 h 7 HYPERLINK l _Toc326473131 日記本模塊流程圖 PAGEREF _Toc326473131 h 7 HYPERLINK l _Toc326473132 3.6各個(gè)類說(shuō)明 PAGEREF _Toc326473132 h 7 HYPERLINK l _Toc32647
4、3133 主類NoteBook PAGEREF _Toc326473133 h 7 HYPERLINK l _Toc326473134 記事本Note類 PAGEREF _Toc326473134 h 8 HYPERLINK l _Toc326473135 左側(cè)面板LeftPane類 PAGEREF _Toc326473135 h 9 HYPERLINK l _Toc326473136 月份顯示MonthPane類 PAGEREF _Toc326473136 h 9 HYPERLINK l _Toc326473137 年月顯示YearMonth類 PAGEREF _Toc326473137 h
5、 9 HYPERLINK l _Toc326473139 3.6.6日期獲取DateTime類 PAGEREF _Toc326473139 h 10 HYPERLINK l _Toc326473140 右側(cè)記事本顯示NotePane類 PAGEREF _Toc326473140 h 11 HYPERLINK l _Toc326473141 3.6.8記事本彈出菜單NotePopupMenu類 PAGEREF _Toc326473141 h 11 HYPERLINK l _Toc326473142 4.各種功能截圖 PAGEREF _Toc326473142 h 12 HYPERLINK l _
6、Toc326473143 5.課程設(shè)計(jì)總結(jié) PAGEREF _Toc326473143 h 15 HYPERLINK l _Toc326473144 6.個(gè)人心得體會(huì) PAGEREF _Toc326473144 h 16 HYPERLINK l _Toc326473145 7.附錄 PAGEREF _Toc326473145 h 17摘 要本課程設(shè)計(jì)通過(guò)代碼實(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)一步了解。在這個(gè)課程設(shè)計(jì)中,做成了一個(gè)有日歷標(biāo)記的記事本軟件,日記本的設(shè)計(jì)與實(shí)現(xiàn)面板由日歷、記事本、
7、圖片、時(shí)鐘四部分組成。日歷部分可以選擇不同的年份、月份、日期和星期;記事本模塊可以實(shí)現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有相應(yīng)提示;圖片模塊可以顯示預(yù)設(shè)的圖片;時(shí)鐘模塊可以用時(shí)鐘來(lái)顯示當(dāng)前時(shí)間。本軟件是一個(gè)實(shí)用性較強(qiáng),簡(jiǎn)潔,美觀,方便的功能軟件。關(guān)鍵字:記事本;日歷;引 言Java是一種純面向?qū)ο蟮?、網(wǎng)絡(luò)編程首選的語(yǔ)言。Java技術(shù)作為軟件開(kāi)的一種革命性技術(shù),已被列為當(dāng)今世界信息技術(shù)的主流之一。為了適應(yīng)時(shí)代潮流,我們應(yīng)該加強(qiáng)對(duì)Java的學(xué)習(xí),更好的掌握這門課程。為此Java課程設(shè)計(jì)決定以“日記本的設(shè)計(jì)與實(shí)現(xiàn)”為設(shè)題材,借此鞏固加深我們對(duì)Java的了解。本次課程設(shè)計(jì)的實(shí)例雖然比較簡(jiǎn)單,
8、程序設(shè)計(jì)也不是很復(fù)雜,但在此程序的設(shè)計(jì)過(guò)程也是一個(gè)學(xué)習(xí)過(guò)程,更是對(duì)復(fù)雜程序的一個(gè)學(xué)習(xí)過(guò)程,還能培養(yǎng)我們的數(shù)抽象能力。因此,我們覺(jué)得這次課程設(shè)計(jì)是非常有意義的,能為我們今后學(xué)習(xí)面向過(guò)程的程序設(shè)計(jì)作一些鋪墊。設(shè)計(jì)目的與任務(wù)本課程設(shè)計(jì)所要求達(dá)到的目的和任務(wù):通過(guò)Java程序設(shè)計(jì)的一些重要理論基礎(chǔ)來(lái)實(shí)現(xiàn)“日記本的設(shè)計(jì)與實(shí)現(xiàn)”的“日歷”和“記事本”的雙重功能。并通過(guò)此次課程設(shè)計(jì)的訓(xùn)練,使學(xué)生鞏固和加深對(duì)Java這門課程的理解,通過(guò)利用所學(xué)到的計(jì)算科學(xué)的理論知識(shí),提高解決實(shí)際問(wèn)題的能力,增強(qiáng)運(yùn)算、編程和使用技術(shù)資料的技能,通過(guò)實(shí)際問(wèn)題的分析設(shè)計(jì)、編程和調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法,能正確闡述
9、設(shè)計(jì)和實(shí)驗(yàn)結(jié)果。通過(guò)這次課程設(shè)計(jì),培養(yǎng)實(shí)事求是、認(rèn)真、嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和刻苦鉆研不斷創(chuàng)新的精神,逐步建立正確的全局觀念。設(shè)計(jì)方案總體設(shè)計(jì)(1)問(wèn)題定義:創(chuàng)建日記本的設(shè)計(jì)與實(shí)現(xiàn),實(shí)現(xiàn)對(duì)某日期的事情進(jìn)行記錄這主要功能,并能顯示設(shè)置的圖片,增加美觀。(2)問(wèn)題分析:通過(guò)對(duì)“日記本的設(shè)計(jì)與實(shí)現(xiàn)”這一題材的分析,我需要四個(gè)類來(lái)實(shí)現(xiàn)其“日歷”和“記事本”這兩大功能。通過(guò)主類NoteBook創(chuàng)建動(dòng)日記本的設(shè)計(jì)與實(shí)現(xiàn)軟件的主窗口,該類含有main方法,程序從該類開(kāi)始執(zhí)行。再用余下LeftPane、NotePane類來(lái)顯示并改變?nèi)掌诤蛯?shí)現(xiàn)記事本的功能。(3)研究意義:通過(guò)本次課程設(shè)計(jì),我們掌握了Java語(yǔ)言的基本
10、運(yùn)用,提高了理論結(jié)合實(shí)際的能力。 設(shè)計(jì)要求 (1)日記本使用Java語(yǔ)言開(kāi)發(fā)設(shè)計(jì)。課程的基本功能包括萬(wàn)年歷、記事本和輔助功能三個(gè)部分。(2)萬(wàn)年歷部分由微調(diào)器確定年月,由一組文本框顯示日歷。年月可選擇數(shù)據(jù)符合邏輯,默認(rèn)為當(dāng)前日期。(3)月歷顯示應(yīng)該符合查看習(xí)慣,如星期六和星期日分別用不同顏色表示,當(dāng)日可用特別的字號(hào)和顏色(4)記事本區(qū),記事本內(nèi)容按年月日記錄且保存。(5)微調(diào)器應(yīng)該進(jìn)行事件設(shè)置,以及即時(shí)地顯示該年月的月歷;日期文本框可監(jiān)聽(tīng)鼠標(biāo)事件,當(dāng)單擊任何一個(gè)日期時(shí),若該日有記事內(nèi)容,則在日記本中顯示該日期的記錄文字;若該日無(wú)記錄,記事區(qū)保持空白。(6)日記本應(yīng)該是開(kāi)放的,內(nèi)容可按日期增減,
11、保存應(yīng)即時(shí),刪除需謹(jǐn)慎刪除記錄時(shí),應(yīng)進(jìn)行對(duì)話框詢問(wèn)確定。(7)輔助功能包含了日記的導(dǎo)入導(dǎo)出?!皩?dǎo)入”可以將其他日記文件導(dǎo)入合并到當(dāng)前“日記本的設(shè)計(jì)與實(shí)現(xiàn)”的日記本中;“導(dǎo)出”可將“日記本的設(shè)計(jì)與實(shí)現(xiàn)”的所有記錄內(nèi)容按日期為序?qū)С龅揭粋€(gè)文本文件中。為安全起見(jiàn)導(dǎo)出時(shí)需加以安全確認(rèn),要求輸入正確設(shè)定的密碼后才能導(dǎo)出。(8)系統(tǒng)界面外觀和布局,可個(gè)性化設(shè)計(jì),總體原則是“界面簡(jiǎn)潔,操作便捷”。 系統(tǒng)的主要功能 (1)可以對(duì)個(gè)人日志進(jìn)行保存、刪除、導(dǎo)入和導(dǎo)出;(2)可以方便地在任何日期記載個(gè)人日志以及查看某個(gè)日期記載的日志 ;(3)可以顯示當(dāng)前日期。開(kāi)發(fā)環(huán)境Windows XP;jdk_16,Eclips
12、e。 系統(tǒng)的功能模塊劃分與系統(tǒng)流程圖系統(tǒng)的功能模塊劃分本日歷記事本共有11個(gè)java源文件。NoteBook.java該java文件生成的類負(fù)責(zé)創(chuàng)建本日歷記事本程序主窗口。該類含有main方法,程序從該類開(kāi)始執(zhí)行。leftPane.java該文件負(fù)責(zé)創(chuàng)建創(chuàng)建左側(cè)面板。NotePane.java該文件負(fù)責(zé)創(chuàng)建右側(cè)面板、在文本框上彈出快捷菜單、創(chuàng)建日記文本DateTime.java該文件獲得系統(tǒng)當(dāng)前的日期,包括年月日YearMonth.java該文件負(fù)責(zé)創(chuàng)建管理年份和月份的對(duì)象。MonthPane.java該文件負(fù)責(zé)生成日歷創(chuàng)建日歷類模塊圖如圖3-1所示.NotebookleftPaneNoteP
13、aneTimeLabelDateTimeMonthPaneYearMonth圖3-1萬(wàn)年歷模塊流程圖萬(wàn)年歷流程圖如圖3-2所示萬(wàn)年歷 按鈕 選擇日期 正確輸入錯(cuò)誤輸入 改變當(dāng)天日期 當(dāng)天是否有日記? 有無(wú)更改記事本顯示圖 3-2日記本模塊流程圖日記本流程圖如圖3-3所示. 顯示日記本保存 刪除 導(dǎo)入 導(dǎo)出以當(dāng)前日期為值, 如果當(dāng)前TreeMap打開(kāi)文件對(duì) 打開(kāi)保存文件當(dāng)前內(nèi)容為值保 有今天的記錄就話框,如果選擇 對(duì)話框,保存存到TreeMap中 刪除它了文件就導(dǎo)入 到所選路徑下圖 3-3各個(gè)類說(shuō)明記事本NoteBook類 1.成員變量表3-1成員變量描述 變量類型 名稱年、月、日 int ye
14、ar,month,day 日歷對(duì)象 Calendar c左側(cè)日歷面板 LeftPane lp記事本面板 NotePane np2.方法表3-2名稱 功能 備注 NoteBook 創(chuàng)建窗口主程序 構(gòu)造方法bookInit 變量初始化 addEvent 年月微調(diào)按鈕事件noteBookRefresh 刷新ymListener 年月改變事件監(jiān)聽(tīng)main 程序開(kāi)始運(yùn)行記事本NotePane類1、成員變量表3-3描述 變量類型 名稱 文本輸入?yún)^(qū) JTextArea note輸入文本區(qū) JTextArea note保存、刪除導(dǎo)入、導(dǎo)出日志的按鈕 JButton save、delete、input、expo
15、rt保存日志的散列表 Hashtable table保存散列表的文件 File file記錄日志的年、月、日 int year,month,day日期顯示 JLable dateInfo剪切、復(fù)制、粘貼按鈕 JMenuItem copy、cut、paste2、方法表3-4名稱 功能 備注 NotePane 創(chuàng)建記事本面板對(duì)象 構(gòu)造方法noteInit 在記事本上顯示日期、buttonInit 對(duì)所有按鈕進(jìn)行初始化, 并加入到按鈕面板中addEvent 對(duì)所有按鈕進(jìn)行監(jiān)聽(tīng), 接口方法 并對(duì)記事本進(jìn)行監(jiān)聽(tīng)initFile 文件存在,對(duì)文件進(jìn)行排序actionPerformed 對(duì)按鈕設(shè)計(jì)監(jiān)聽(tīng)set
16、DateInfo 設(shè)置日期信息input 導(dǎo)入日志內(nèi)容 save 保存日志 delete 刪除日志export 導(dǎo)出日志actionPerformed 處理ActionEvent事件 接口方法 左側(cè)面板LeftPane類1.成員變量表3-5描述 變量類型 名稱日歷上方圖片 JLabel tupian左面板 JPanel lp年月微調(diào)器 YearMonth ym月份面板 MonthPane mp2.方法表3-6名稱 功能 備注LeftPane 設(shè)置左面圖片,日歷面板月份顯示MonthPane類1.成員變量表3-7描述 變量類型 名稱文本區(qū) JTextField showDay 年月微調(diào)器 Yea
17、rMonth ym星期 String week星期標(biāo)簽 JLabel title年、月、日 int year,month,day2.方法 表3-8名稱 功能 備注MonthPane 創(chuàng)建月份面板對(duì)象 構(gòu)造方法mcInit 日期顯示,并對(duì)星期六與星期天進(jìn)行紅、藍(lán)設(shè)置arrangeNum 對(duì)日期按七天一個(gè)周期進(jìn)行進(jìn)行排列,不足七天,就按照時(shí)間的順序排列年月顯示YearMonth類1.成員變量表3-9描述 變量類型 名稱年、月、日 int year,month,day年標(biāo)簽 JLabel y1月標(biāo)簽 JLabel m1顯示年 JSpinner showYear顯示月 JSpinner showMon
18、th2.方法 表3-10名稱 功能 備注YearMonth 創(chuàng)建年月微調(diào)器對(duì)象 構(gòu)造方法ymInit 年月微調(diào)器顯示表3-11日期獲取DateTime類1.成員變量表3-13描述 變量類型 名稱日歷獲取 Calendar today2.方法表3-14名稱 功能 備注getYear 返回當(dāng)前年份getMonth 返回當(dāng)前月份getDay 返回當(dāng)前對(duì)應(yīng)的日期getMonDay 對(duì)于月份進(jìn)行編寫,每月含有的天數(shù),和是否是閏年考慮在內(nèi) 4、各種功能截圖主界面保存日記刪除日記導(dǎo)入日志導(dǎo)出日記課程設(shè)計(jì)總結(jié)通過(guò)本次課程設(shè)計(jì)的練習(xí),我才知道我對(duì)知識(shí)的掌握是多么的不熟悉,太多東西我都不知道,最主要的是我練的太少
19、了,太多都不熟悉,Java的學(xué)習(xí)不是看看就會(huì)的,最最主要的是多練。這次的課程設(shè)計(jì)為我敲響了警鐘,在以后的學(xué)習(xí)中一定要多多練習(xí),鍛煉自己的獨(dú)立思考能力,和團(tuán)隊(duì)意識(shí),為以后的工作打好基礎(chǔ)。6、個(gè)人心得體會(huì)“紅花雖好,也要綠葉相持”,同樣,只有理論是遠(yuǎn)遠(yuǎn)不夠的,理論還需要用實(shí)踐來(lái)證明。課程設(shè)計(jì)培養(yǎng)學(xué)會(huì)的多方面的能力,獨(dú)立思考、對(duì)知識(shí)的掌握、解決問(wèn)題的能力等,我現(xiàn)在做的只是一個(gè)小小的程序設(shè)計(jì)而已,以后會(huì)有更大的軟件需要去做,也不是我一個(gè)人能完成的,所以團(tuán)隊(duì)意識(shí)也是很重要的。7、附錄源程序代碼import java.awt.*;import java.awt.event.*;import java.io
20、.*;import java.util.*;import javax.swing.*;import javax.swing.event.*;class NoteBook extends JFrame implements ChangeListener,MouseListenerint year,month,day;Calendar c;int first,days;LeftPane lp;NotePane np;public NoteBook()super(日記本的設(shè)計(jì)與實(shí)現(xiàn));this.setDefaultCloseOperation(3);Container con=getContentP
21、ane();bookInit();addEvent();add(lp,West); add(np); this.setBounds( 50, 20,1000,650); this.setResizable(true); this.setVisible(true); void bookInit() lp=new LeftPane(); np=new NotePane(); year=DateTime.getYear(); month=DateTime.getMonth(); day=DateTime.getDay(); void addEvent() lp.ym.showMonth.addCha
22、ngeListener(this); lp.ym.showYear.addChangeListener(this); for(int i=0;ilp.mp.showDay.length;i+) lp.mp.showDayi.addMouseListener(this); public void stateChanged(ChangeEvent e) month=Integer.parseInt(lp.ym.showMonth.getValue().toString(); year=Integer.parseInt(lp.ym.showYear.getValue().toString(); no
23、teBookRefresh(); void noteBookRefresh() np.refreshContent(year,month,day); np.setDateInfo(year,month,day); lp.mp.arrangeNum(year,month,day); public void mouseClicked(MouseEvent e) JTextField source=(JTextField)e.getSource(); try day=Integer.parseInt(source.getText(); noteBookRefresh(); catch(Excepti
24、on ee) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) class YearMonth extends JPanelprivate int year;private int month;private JLabel yl;private JLabel ml;JSpinner showYear;/微調(diào)按鈕JSpinner show
25、Month;YearMonth()ymInit();add(yl);add(showYear);add(ml);add(showMonth);void ymInit()yl=new JLabel(年);ml=new JLabel(月);year=DateTime.getYear();month=DateTime.getMonth();showYear = new JSpinner(new SpinnerNumberModel(year,0,10000,1);showYear.setEditor(new JSpinner.NumberEditor(showYear, 0000); showYea
26、r.setPreferredSize(new Dimension(60, 30); yl.setFont(new Font(TimesRomn,Font.BOLD,16); showMonth=new JSpinner(new SpinnerNumberModel(month,1,12,1); showYear.setPreferredSize(new Dimension(60, 30); ml.setFont(new Font(TimesRomn,Font.BOLD,16); static class DateTime static Calendar today=Calendar.getIn
27、stance(); static int getYear()return today.get(today.YEAR); static int getMonth()return today.get(today.MONTH)+1; static int getDay()return today.get(today.DAY_OF_MONTH); static int getMonDay(int year,int month)if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)return 31;else if(month=4|mo
28、nth=6|month=9|month=11)return 30;if(year%4=0&year%100!=0)|year%400=0)return 29;elsereturn 28;class LeftPane extends JPanelYearMonth ym;MonthPane mp;JLabel tupian;JPanel lp;JSplitPane split; LeftPane()super(new BorderLayout();tupian=new JLabel(new ImageIcon(a.jpg);ym=new YearMonth();mp=new MonthPane(
29、);lp=new JPanel(new BorderLayout();lp.add(ym,South);lp.add(mp);lp.add(tupian,North); split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); this.add(lp); this.add(split,East); class MonthPane extends JPanelJTextField showDay;int first,days;YearMonth ym; String week; JLabel title; int year,month,day; Mon
30、thPane() super(new GridLayout(7,7,3,3); mcInit(); for(int i=0;i7;i+) add(titlei); for(int i=0;i42;i+) add(showDayi); arrangeNum(year,month,day); void mcInit() year=DateTime.getYear(); month=DateTime.getMonth(); day=DateTime.getDay(); String week=日,一,二,三,四,五,六; title=new JLabel7; for(int j=0;j7;j+) t
31、itlej=new JLabel(); titlej.setText(weekj); titlej.setBorder(BorderFactory.createEmptyBorder(); titlej.setFont(new Font(,1,18); title0.setForeground(Color.red); title6.setForeground(Color.blue); showDay=new JTextField42; for(int i=0;i42;i+) showDayi=new JTextField(); showDayi.setFont(new Font(,0,14);
32、 showDayi.setEditable(false); public void arrangeNum(int year,int month,int day) days=DateTime.getMonDay(year,month); Calendar c=Calendar.getInstance(); c.set(year,month-1,1); first=c.get(Calendar.DAY_OF_WEEK)-1; if(first!=0) for(int i=0;ifirst;i+) showDayi.setText(); for(int i=first,n=1;ifirst+days
33、;i+,n+) showDayi.setText(+n); int r=i+1; if(n=day) if(r%7=0|(r+6)%7=0) showDayi.setForeground(Color.blue); showDayi.setFont(new Font(TimesRoman,Font.BOLD,20); else showDayi.setForeground(Color.green); showDayi.setFont(new Font(TimesRoman,Font.BOLD,20); else showDayi.setFont(new Font(TimesRoman,Font.
34、BOLD,12); showDayi.setForeground(Color.black); if(i%7=0) showDayi.setForeground(Color.red); if(i%7=6) showDayi.setForeground(Color.blue); if(first+days41) for(int i=first+days;i42;i+) showDayi.setText(); /時(shí)鐘顯示class TimeLabel extends JLabel implements RunnableTimeLabel()this.setFont(new Font(,1,20);t
35、his.setForeground(Color.red);new Thread(this).start();public String getTime()Calendar now=Calendar.getInstance();/取得系統(tǒng)時(shí)間 int hour;int minute;int second;String timeInfo;hour=now.get(now.HOUR_OF_DAY);minute=now.get(now.MINUTE);second=now.get(now.SECOND);if(hour=9) timeInfo=0+hour+:;else timeInfo=hour+
36、:;if(minute=9) timeInfo= timeInfo+0+minute+:;elsetimeInfo= timeInfo+minute+:;if(second=9) timeInfo= timeInfo+0+second;elsetimeInfo= timeInfo+second;return timeInfo;public void run()while(true) /線程的運(yùn)行(隔一秒刷新)循環(huán)顯示 try this.setText(this.getTime();Thread.sleep(1000); catch (Exception e) class NotePane ex
37、tends JPanel implements ActionListener,MouseListenerprivate int year,month,day;private JTextArea note; private JButton save,delete,input,export; private Hashtable table; private JLabel dateInfo ; private File file; private JPanel buttonPane; private JMenuItem copy; private JMenuItem cut; private JMe
38、nuItem paste; private JPopupMenu f; JPanel p=new JPanel(); NotePane() super(new BorderLayout(); noteInit(); buttonInit(); addEvent(); p.add(dateInfo); p.add(new TimeLabel(); add(p,North); add(new JScrollPane(note); add(buttonPane,South); refreshContent(year,month,day); private void noteInit() year=D
39、ateTime.getYear(); month=DateTime.getMonth(); day=DateTime.getDay(); dateInfo=new JLabel(year+ 年 +month+ 月 +day+ 日 ,JLabel.CENTER); dateInfo.setFont(new Font(TimesRomn,Font.BOLD,16); dateInfo.setForeground(Color.BLUE); table=new Hashtable(); file=new File(Note.txt); initFile(); note=new JTextArea();
40、 note.setFont(new Font(,0,14); note.setLineWrap(true); private void buttonInit() f=new JPopupMenu(); cut=new JMenuItem(剪切); copy=new JMenuItem(復(fù)制); paste=new JMenuItem(粘貼); save=new JButton(保存日記) ; delete=new JButton(刪除日記); input=new JButton(導(dǎo)入日記); export=new JButton(導(dǎo)出日記); buttonPane=new JPanel(new
41、 FlowLayout(); buttonPane.add(save); buttonPane.add(delete); buttonPane.add(input); buttonPane.add(export); f.add(cut); f.add(copy); f.add(paste); private void addEvent() save.addActionListener(this); delete.addActionListener(this); input.addActionListener(this); export.addActionListener(this); cut.
42、addActionListener(this); copy.addActionListener(this); paste.addActionListener(this); note.addMouseListener(this); private void initFile() if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(table); ob
43、jectOut.close(); out.close(); catch(IOException e) public void actionPerformed(ActionEvent e) if(e.getSource()=save) save(year,month,day); else if(e.getSource()=delete) delete(year,month,day); else if(e.getSource()=input) input(); else if(e.getSource()=export) export(); else if(e.getSource()=cut) no
44、te.cut(); else if(e.getSource()=copy) note.copy(); else if(e.getSource()=paste) note.paste(); public void setDateInfo(int _y,int _m,int _d) this.year=_y; this.month=_m; this.day=_d; dateInfo.setText(_y+ 年 +_m+ 月 +_d+ 日); public String getDateKey() String s=+year; if(month10)s+=/0+month; else s+=/+mo
45、nth; if(day10)s+=/0+day; else s+=/+day; return s; public void refreshContent(int year,int month,int day) String key=this.getDateKey(); try FileInputStream in1=new FileInputStream(file); ObjectInputStream in2=new ObjectInputStream(in1); table=(Hashtable)in2.readObject(); in1.close(); in2.close(); cat
46、ch(Exception ee) if(table.containsKey(key) note.setText(table.get(key)+); else note.setText(); public void save(int year,int month,int day) String logContent=note.getText(); String key=this.getDateKey(); try table.put(key,logContent); FileOutputStream out=new FileOutputStream(file); ObjectOutputStre
47、am objectOut=new ObjectOutputStream(out); objectOut.writeObject(table); objectOut.close(); out.close(); catch(Exception ee) JOptionPane.showMessageDialog(null,key+當(dāng)天的日記已成功保存!); public void delete(int year,int month,int day) String key=this.getDateKey(); if(table.containsKey(key) JOptionPane jo=new J
48、OptionPane(); int x= jo.showConfirmDialog(null,要?jiǎng)h除+year+年+month+月+day+日+的記錄嗎?, !, JOptionPane.YES_NO_OPTION); if(x=jo.YES_OPTION) try FileInputStream in1=new FileInputStream(file); ObjectInputStream in2=new ObjectInputStream(in1); table=(Hashtable)in2.readObject(); in1.close(); in2.close(); table.re
49、move(key); FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(table); objectOut.close(); out.close(); note.setText(); catch(Exception ee) else return; else String m=+year+年+month+月+day+日+是空的; JOptionPane.showMessageDialog(
50、this,m,look!,JOptionPane.WARNING_MESSAGE); public void export() String pass=JOptionPane.showInputDialog(導(dǎo)出前請(qǐng)輸入你的密碼?); if(!pass.equals(1134120151) JOptionPane.showMessageDialog(new JDialog(),抱歉,你的密碼不正確不能導(dǎo)出!);return; TreeMap map=new TreeMap(table); Set mapping=map.entrySet(); File newfile=new File(日歷記
51、事本1.txt); try PrintWriter out=new PrintWriter( newfile ); for(Iterator i=mapping.iterator();i.hasNext();) Map.Entry me=(Map.Entry)i.next(); out.println(me.getKey(); out.println(me.getValue()+nr ); out.close(); input(); catch(Exception ex) public void input() JFileChooser fc=new JFileChooser(); fc.sh
52、owOpenDialog(this); File file=fc.getSelectedFile(); try FileInputStream in=new FileInputStream(file); byte b=new bytein.available(); in.read(b); note.setText(new String(b); in.close(); catch(Exception e) public void mousePressed(MouseEvent e) if(e.getButton()=e.BUTTON3) f.show(this,e.getX(),e.getY()
53、; public void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public static void main(String args) new NoteBook(); 大 學(xué)畢業(yè)設(shè)計(jì)(論文)(頁(yè)面設(shè)置:論文版心大小為155mm245mm,頁(yè)邊距:上2.6cm,下2.6cm,左2.5cm,右2cm,行間距20磅,裝訂線位置左,裝訂線1cm,)此處
54、為論文題目,黑體2號(hào)字(以下各項(xiàng)居中列,黑體小四號(hào))年 級(jí): 學(xué) 號(hào): 姓 名: 專 業(yè): 指導(dǎo)老師: (填寫時(shí)間要用中文)二零零八年六月院 系 專 業(yè) 年 級(jí) 姓 名 題 目 指導(dǎo)教師評(píng) 語(yǔ) 指導(dǎo)教師 (簽章)評(píng) 閱 人評(píng) 語(yǔ) 評(píng) 閱 人 (簽章)成 績(jī) 答辯委員會(huì)主任 (簽章) 年 月 日 畢 業(yè) 設(shè) 計(jì) 任 務(wù) 書班 級(jí) 學(xué)生姓名 學(xué) 號(hào) 專 業(yè) 發(fā)題日期: 年 月 日 完成日期: 年 月 日題 目 題目類型:工程設(shè)計(jì) 技術(shù)專題研究 理論研究 軟硬件產(chǎn)品開(kāi)發(fā)設(shè)計(jì)任務(wù)及要求 應(yīng)完成的硬件或軟件實(shí)驗(yàn) 應(yīng)交出的設(shè)計(jì)文件及實(shí)物(包括設(shè)計(jì)論文、程序清單或磁盤、實(shí)驗(yàn)裝置或產(chǎn)品等) 指導(dǎo)教師提供的設(shè)計(jì)
55、資料 要求學(xué)生搜集的技術(shù)資料(指出搜集資料的技術(shù)領(lǐng)域) 設(shè)計(jì)進(jìn)度安排第一部分 (4 周)第二部分 (6 周)第三部分 (2 周) 評(píng)閱及答辯 (1 周) 指導(dǎo)教師: 年 月 日系主任審查意見(jiàn):審 批 人: 年 月 日注:設(shè)計(jì)任務(wù)書審查合格后,發(fā)到學(xué)生手上。 FORMTEXT大學(xué)FORMTEXT學(xué)院 FORMTEXT20XX年制摘 要正文略關(guān)鍵詞:關(guān)鍵詞; 關(guān)鍵詞; 關(guān)鍵詞; 關(guān)鍵詞(關(guān)鍵詞之間分號(hào)隔開(kāi),并加一個(gè)空格)Abstract正文略Keywords: keyword; keyword; keyword; keyword目 錄 TOC o 1-3 h z u HYPERLINK l _To
56、c214816193 摘 要 PAGEREF _Toc214816193 h IV HYPERLINK l _Toc214816194 Abstract PAGEREF _Toc214816194 h V HYPERLINK l _Toc214816195 第1章 緒 論 PAGEREF _Toc214816195 h 1 HYPERLINK l _Toc214816196 1.1 本論文的背景和意義 PAGEREF _Toc214816196 h 1 HYPERLINK l _Toc214816197 1.2 本論文的主要方法和研究進(jìn)展 PAGEREF _Toc214816197 h 1 H
57、YPERLINK l _Toc214816198 1.3 本論文的主要內(nèi)容 PAGEREF _Toc214816198 h 1 HYPERLINK l _Toc214816199 1.4 本論文的結(jié)構(gòu)安排 PAGEREF _Toc214816199 h 1 HYPERLINK l _Toc214816200 第2章 各章題序及標(biāo)題小2號(hào)黑體 PAGEREF _Toc214816200 h 2 HYPERLINK l _Toc214816201 2.1 各節(jié)點(diǎn)一級(jí)題序及標(biāo)題小3號(hào)黑體 PAGEREF _Toc214816201 h 2 HYPERLINK l _Toc214816202 2.1.1 各節(jié)的二級(jí)題序及標(biāo)題4號(hào)黑體 PAGEREF _Toc214816202 h 2 HYPERLINK l _Toc214816203 2.2 頁(yè)眉、頁(yè)腳說(shuō)明 PAGEREF _Toc214816203 h 2 HYPERLINK l _Toc214816204 2.3 段落、字體說(shuō)明 PAGEREF _Toc214816204 h 2 HYPERLINK l _Toc214816205 2.4 公式、插圖和插表說(shuō)明 PAGEREF _Toc214816205 h 2 HYPERLINK l _Toc2
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 港口碼頭建設(shè)項(xiàng)目投資建設(shè)合同
- 2025安裝承包合同樣書
- 2025年浙科版七年級(jí)歷史下冊(cè)月考試卷含答案
- 2025年外研版八年級(jí)歷史上冊(cè)月考試卷含答案
- 2025年拋棄式溫深計(jì)項(xiàng)目提案報(bào)告
- 2025年鋰鐵電池項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模式
- 2025主要規(guī)定是什么?合同應(yīng)該采取什么形式?港雜費(fèi)英文
- 2025年新科版選擇性必修1生物上冊(cè)階段測(cè)試試卷含答案
- 2025年臨空經(jīng)濟(jì)項(xiàng)目申請(qǐng)報(bào)告模范
- 2025年鈹銅帶、線、管、棒材項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模式
- 《火力發(fā)電企業(yè)設(shè)備點(diǎn)檢定修管理導(dǎo)則》
- 重慶市渝北區(qū)2024年八年級(jí)下冊(cè)數(shù)學(xué)期末統(tǒng)考模擬試題含解析
- 保安服務(wù)項(xiàng)目信息反饋溝通機(jī)制
- 《團(tuán)隊(duì)介紹模板》課件
- 常用中醫(yī)適宜技術(shù)目錄
- 沖壓模具價(jià)格估算方法
- 碳納米管應(yīng)用研究
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 蟲(chóng)洞書簡(jiǎn)全套8本
- 2023年《反電信網(wǎng)絡(luò)詐騙法》專題普法宣傳
- 小學(xué)數(shù)學(xué)五年級(jí)上、下冊(cè)口算題大全
評(píng)論
0/150
提交評(píng)論