




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2 本科生課程設(shè)計(jì)本科生課程設(shè)計(jì)課程名稱java 程序設(shè)計(jì)課程設(shè)計(jì)課程編號(hào)j1620011題目日歷記事本學(xué)號(hào)200811622214學(xué)生姓名所在專業(yè)信息管理與信息系統(tǒng)所在班級(jí)信管 1082指導(dǎo)教師成績(jī)教師簽字 評(píng)語(yǔ):課程設(shè)計(jì)時(shí)間:2010 年 12 月 20 日-2010 年 12 月 24 日設(shè)計(jì)總說(shuō)明- 1 -目目 錄錄摘要21引言22. 設(shè)計(jì)的目的與任務(wù)23設(shè)計(jì)方案33.1 總體設(shè)計(jì)33.2 設(shè)計(jì)要求33.3 系統(tǒng)的主要功能設(shè)計(jì)總說(shuō)明- 2 -33.4 各個(gè)類的組合結(jié)構(gòu)圖43.5 各個(gè)類說(shuō)明4 3.5.1 calendarwindow類4 3.5.2 calendarmessage類11
2、 3.5.3 calendarpad類13 3.5.4 notepad類14 3.5.5 calendarimage類19 3.5.6 clock類20設(shè)計(jì)總說(shuō)明- 3 -4各種功能截圖245. 課程設(shè)計(jì)總結(jié)26javajava 程序設(shè)計(jì)程序設(shè)計(jì)課程設(shè)計(jì)課程設(shè)計(jì) 日歷記事本日歷記事本 摘 要本課程設(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í)鐘四部分組成。日歷部分可以選擇不同的年份、
3、月份、日期和星期;記事本模塊可以實(shí)現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有相應(yīng)提示;圖片模塊可以顯示預(yù)設(shè)的圖片;時(shí)鐘模塊可以用時(shí)鐘來(lái)顯示當(dāng)前時(shí)間。本軟件是一個(gè)實(shí)用性較強(qiáng),簡(jiǎn)潔,美觀,方便的功能軟件。1. 引言java 是一種純面向?qū)ο蟮?、網(wǎng)絡(luò)編程首選的語(yǔ)言。java 技術(shù)作為軟件開 的一種革命性技術(shù),已被列為當(dāng)今世界信息技術(shù)的主流之一。為了適應(yīng)時(shí)代潮流,我們應(yīng)該加強(qiáng)對(duì) java 的學(xué)習(xí),更好的掌握這門課程。為此,我們成了一個(gè)課程小組,經(jīng)過(guò)小組成的商討之后,我們決定以“日歷記事本”為設(shè) 題材,借此鞏固加深我們對(duì) java的了解。設(shè)計(jì)總說(shuō)明- 4 -本次課程設(shè)計(jì)的實(shí)例雖然比較簡(jiǎn)單,程序設(shè)計(jì)
4、也不是很復(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ì)作一些鋪墊。2.設(shè)計(jì)目的與任務(wù)本課程設(shè)計(jì)所要求達(dá)到的目的和任務(wù):通過(guò) java 程序設(shè)計(jì)的一些重要理論基礎(chǔ)來(lái)實(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ì)方法,能正確闡述設(shè)計(jì)
5、和實(shí)驗(yàn)結(jié)果。通過(guò)這次課程設(shè)計(jì),培養(yǎng)實(shí)事求是、認(rèn)真、嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和刻苦鉆研不斷創(chuàng)新的精神,逐步建立正確的全局觀念。3.設(shè)計(jì)方案3.1 總體設(shè)計(jì)總體設(shè)計(jì)(1)問(wèn)題定義:)問(wèn)題定義:創(chuàng)建日歷記事本,實(shí)現(xiàn)對(duì)某日期的事情進(jìn)行記錄這主要功能,并能顯示設(shè)置的圖片和時(shí)鐘,增加美觀。(2)問(wèn)題分析)問(wèn)題分析:通過(guò)對(duì)“日歷記事本”這一題材的分析,我需要四個(gè)類來(lái)實(shí)現(xiàn)其“日歷”和“記事本”這兩大功能。通過(guò)主類 calendwindow 創(chuàng)建動(dòng)日歷記事本軟件的主窗口,該類含有 main 方法,程序從該類開始執(zhí)行。再用余下calendarpad、calendarmessage 、notepad 類來(lái)顯示并改變?nèi)掌诤蛯?shí)現(xiàn)
6、記事本的功能。而 calendarimage 和 clock 這兩個(gè)類用來(lái)顯示圖片和時(shí)鐘。(3)研究意義)研究意義:通過(guò)本次課程設(shè)計(jì),我們掌握了 java 語(yǔ)言的基本運(yùn)用,提高了理論結(jié)合實(shí)際的能力。 3.2 設(shè)計(jì)要求設(shè)計(jì)要求 (1)界面的左側(cè)是日歷和一幅圖。該日歷可以按年前后翻動(dòng),用鼠標(biāo)鼠標(biāo)單擊“上年”按鈕時(shí),當(dāng)前日歷的年份將減一;當(dāng)鼠標(biāo)左鍵單擊“下年”按鈕,當(dāng)前日歷的年份將加一。該日歷還可以在某年內(nèi)按月前月后翻動(dòng),當(dāng)鼠標(biāo)左鍵單擊“上月”按鈕時(shí),當(dāng)前日歷的月份將減一;當(dāng)鼠標(biāo)左鍵單擊“下月” 當(dāng)前日歷表的月份將加一。圖片是為了增加美觀而加進(jìn)去的。 (2)系統(tǒng)界面的右側(cè)是記事本和一個(gè)鬧鐘。用鼠標(biāo)單
7、擊日歷上的日期,就可以通過(guò)該記事本編輯有關(guān)日志,并將日志保存到一個(gè)文件,該文件的名字由該日期組成的字設(shè)計(jì)總說(shuō)明- 5 -符序列命名。用戶可以查看,刪除某個(gè)日期的日志,也可以繼續(xù)向某個(gè)日志添加新內(nèi)容。時(shí)鐘能夠?qū)崟r(shí)顯示當(dāng)前的時(shí)間。 (3)當(dāng)某個(gè)日期有日志時(shí),在日歷表該日期的外觀上就會(huì)出現(xiàn)“yes”標(biāo)記,表明這個(gè)日期有日志,當(dāng)用戶刪除某個(gè)日期的日志后,該日期的外觀上“yes”標(biāo)志就會(huì)消失。3.3 系統(tǒng)的主要功能 (1)可以對(duì)個(gè)人日志進(jìn)行添加、查閱、刪除;(2)可以方便地在任何日期記載個(gè)人日志以及查看某個(gè)日期記載的日志 ;(3)可以顯示當(dāng)前日期與時(shí)間。3.4 各個(gè)類的組合結(jié)構(gòu)圖3.5 各個(gè)類說(shuō)明(1
8、1)主函數(shù))主函數(shù) calendarwindowcalendarwindow 類類該類是整個(gè)程序的主框架,是 javax.swing 包中 jframe 的一個(gè)子類。并實(shí)現(xiàn)了actionlistener、mouselistener 和 focuslistener 接口。以下是該類的有關(guān)數(shù)據(jù)說(shuō)明!1)成員變量year,month 和 day 是 int 型變量。它們的值分別確定年份、月份和日期。calendarwindowcalendarmessagecalendarimagecalendarpad jtextfieldfilenotepad jtextarea clock設(shè)計(jì)總說(shuō)明- 6 -c
9、alendarmessage 是 calnedarmessage 對(duì)象,該對(duì)象用來(lái)處理與日期有關(guān)的數(shù)據(jù)。calendarpad 是 calendarpad 對(duì)象,該對(duì)象可以顯示與日期有關(guān)的數(shù)據(jù)。notpad 是 notpad 的對(duì)象。具有編輯、讀取、保存和刪除日志的功能。showyear 和 showmonth 是 jtextfield 類創(chuàng)建的文本框,用來(lái)顯示年月。showday 數(shù)組的每個(gè)單元是 jtextfield 類創(chuàng)建的用來(lái)顯示日期的文本框。calendarimage 是 calendarimage 創(chuàng)建的對(duì)象,用來(lái)顯示圖像。clock 是 clock 創(chuàng)建的對(duì)象,用來(lái)顯示時(shí)鐘。ne
10、xtyear,previousyear,nextmonth 和 previousmonth 是 jbutton 創(chuàng)建的按鈕對(duì)象,名字依次為“下年、上年、下月、上月” 。這些按鈕都將當(dāng)前窗口注冊(cè)為自己的 actionevent 事件監(jiān)視器。savadailyrecord,deletedailyrecord 和 readdailyrecord 是 jbutton 創(chuàng)建的按鈕對(duì)象,名字依次為“保存日志、刪除日志、讀取日志” 。這些按鈕都將當(dāng)前窗口注冊(cè)為自己的 actionevent 事件監(jiān)視器。2)方法calendarwindow()是構(gòu)造方法,負(fù)責(zé)完成窗口初始化。actionperformed(a
11、ctionevent)方法是 calendarwindow 類實(shí)現(xiàn)的actionlistener 接口中的方法。calendarwindow 創(chuàng)建的窗口是nextyear,previousyear,nextmonth,previousmonth,savedailyrecord,deletedailyrecord 和 readdailyrecord 按鈕的 actionevent 事件監(jiān)視器,當(dāng)用戶單擊其中按鈕時(shí),窗口將執(zhí)行 actionperformed(actionevent)方法進(jìn)行相應(yīng)的操作。mousepressed(mouseevent)方法是 calendarwindow 類實(shí)現(xiàn)的
12、mouselistener接口中的方法。calendarwindow 創(chuàng)建的窗口時(shí) showday 數(shù)組中的 jtextfield文本框的 mouseevent 事件監(jiān)視器,當(dāng)用戶在某個(gè)顯示日期的文本框上按下鼠標(biāo)左鍵時(shí),窗口將執(zhí)行 mousepress(mouseevent)方法進(jìn)行相應(yīng)操作。focusgained(focusevent)和 focuslost(focusevent)方法是calendarwindow 類實(shí)現(xiàn)的 focuslistener 接口中的方法。calendarwindow 創(chuàng)建窗口是 showday 數(shù)組中的 jtextfield 文本框的 focusevent 事件
13、監(jiān)視器,當(dāng)用戶的操作導(dǎo)致某個(gè)顯示日期的文本框的焦點(diǎn)發(fā)生變化時(shí),窗口將執(zhí)行focusgained(focusevent)或 focuslost(focusevent)方法進(jìn)行相應(yīng)的操作。domark()方法負(fù)責(zé)對(duì)有日志的日期作出標(biāo)志。main 方法是程序運(yùn)行的入口方法。設(shè)計(jì)總說(shuō)明- 7 -詳細(xì)代碼:詳細(xì)代碼:import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;public class calendarwindow extends jframe impl
14、ements actionlistener,mouselistener,focuslistenerint year,month,day;calendarmessage calendarmessage;calendarpad calendarpad;notepad notepad;jtextfield showyear,showmonth;jtextfield showday;calendarimage calendarimage;clock clock;jbutton nextyear,previousyear,nextmonth,previousmonth;jbutton savedaily
15、record,deletedailyrecord,readdailyrecord;file dir;color backcolor=color.white;public calendarwindow()dir= new file(./dailyrecord);dir.mkdir();showday = new jtextfield42;for(int i=0;i12) month=1;showmonth.settext(+month);calendarpad.setcalendarmessage(calendarmessage);calendarpad.showmonthcalendar();
16、notepad.setshowmessage(year,month,day);domark();else if (e.getsource()=previousmonth)設(shè)計(jì)總說(shuō)明- 10 -month-;if(month1) month=12;showmonth.settext(+month);calendarpad.setcalendarmessage(calendarmessage);calendarpad.showmonthcalendar();notepad.setshowmessage(year,month,day);domark();else if (e.getsource()=
17、showyear)string s = showyear.gettext().trim();char a = s.tochararray();boolean boo = false;for(int i = 0;i a.length;i+)if(!(character.isdigit(ai)boo = true;if(boo=true)joptionpane.showmessagedialog(this,你輸入了非法年份,警告!, joptionpane.warning_message);else if(boo=false)year = integer.parseint(s);showyear.
18、settext(+year);calendarmessage.setyear(year);calendarpad.setcalendarmessage(calendarmessage);calendarpad.showmonthcalendar();notepad.setshowmessage(year,month,day);domark();else if (e.getsource()= savedailyrecord)notepad.save(dir,year,month,day);domark();else if(e.getsource()=deletedailyrecord)notep
19、ad.delete(dir,year,month,day);domark();else if (e.getsource()=readdailyrecord)notepad.read(dir,year,month,day);設(shè)計(jì)總說(shuō)明- 11 -domark();public void mousepressed(mouseevent e)jtextfield text = (jtextfield)e.getsource();string str = text.gettext().trim();tryday = integer.parseint(str);catch (numberformatex
20、ception exp)calendarmessage.setday(day);notepad.setshowmessage(year,month,day);public void mousereleased(mouseevent e)public void mouseentered(mouseevent e)public void mouseexited(mouseevent e)public void mouseclicked(mouseevent e)public void focusgained(focusevent e)component com = (component)e.get
21、source();com.setbackground(color.pink);public void focuslost(focusevent e)component com = (component)e.getsource();com.setbackground(backcolor);public void domark()for(int i=0;ishowday.length;i+)showdayi.removeall();string str = showdayi.gettext().trim();tryint n = integer.parseint(str);if(ishavedai
22、lyrecord(n)=true)設(shè)計(jì)總說(shuō)明- 12 -jlabel mess = new jlabel(yes);mess.setfont(new font(timesroman,font.plain,11);mess.setforeground(color.blue);showdayi.add(mess);catch (exception exp)calendarpad.repaint();calendarpad.validate();public boolean ishavedailyrecord(int n)string key = +year+month+n;string dayfi
23、le = dir.list();boolean boo = false;for(int k = 0;kdayfile.length;k+)if(dayfilek.equals(key+.txt)boo = true;break;return boo;public static void main(string args) new calendarwindow();(2 2)calendarmessagecalendarmessage 類類calendarmessage 類創(chuàng)建的對(duì)象 calendarmessage 是 calendarwindow 窗口的重要成員對(duì)象之一,負(fù)責(zé)處理和日期有關(guān)的數(shù)
24、據(jù)。該類的有關(guān)數(shù)據(jù)說(shuō)明如下:1)成員變量 year,month,day 是 int 型數(shù)據(jù),它們的值分別確定年份、月份和日期。2)方法設(shè)計(jì)總說(shuō)明- 13 -setyear(int)和 getyear()方法分別用來(lái)設(shè)置 year 和獲取 year 的值。setmonth(int)和 getmonth()方法分別用來(lái)設(shè)置 month 和獲取 month 的值。setday(int)和 getday()方法分別用來(lái)設(shè)置和獲取 day 的值。getmonthcalendar()方法是用來(lái)處理日期數(shù)據(jù),使其按著習(xí)慣來(lái)顯示。即日歷牌中每行的第一列為“星期天” 。getmonthcalendar()方法根
25、據(jù)year,month 和 day 的值返回一個(gè)存放著“日歷”數(shù)據(jù)的 string 類型的數(shù)組,例如,如果某月有 30 天,而且該月的第一天是星期三,那么返回的 string 類型的數(shù)組是:“” , “” , “” , “1” , “2” , “30” 。詳細(xì)代碼:詳細(xì)代碼:import java.util.calendar;public class calendarmessage int year=-1,month=-1,day=-1;public void setyear(int year)this.year=year;public int getyear()return year;pub
26、lic void setmonth(int month)if(month=1)this.month=month;elsethis.month=1;public int getmonth()return month;public void setday(int day)this.day=day;public int getday()return day;public string getmonthcalendar()string day=new string42;calendar rili=calendar.getinstance();設(shè)計(jì)總說(shuō)明- 14 -rili.set(year,month
27、-1,1);/將日歷翻到 year 年 month 月 1 日int 星期幾=rili.get(calendar.day_of_week)-1;int dayamount=0;if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)dayamount=31;if(month=4|month=6|month=9|month=11)dayamount=30;if(month=2)if(year%4=0)&(year%100!=0)|year%400=0)dayamount=29;else dayamount=28;for(int i
28、=0;i星期幾;i+)dayi= ;for(int i=星期幾,n=1;i星期幾+dayamount;i+)dayi=string.valueof(n);n+;for (int i=星期幾+dayamount;i42;i+ ) dayi= ;return day;(3 3)calendarpadcalendarpad 類類calendarpad 類是 javax.swing 包中 jpanel 容器的子類,所創(chuàng)建的對(duì)象:calendarpad是 calendarwindow 類中最重要的成員之一,負(fù)責(zé)顯示經(jīng) calendarmessage 類處理后的日期數(shù)據(jù),被添加到 calendarwind
29、ow 窗口的左上側(cè)。以下是該類的有關(guān)說(shuō)明:1)成員變量year,month 和 day 是 int 型數(shù)據(jù),它們的值分別確定年份、月份和日期calendarmessage 是 calendarmessage 對(duì)象,該對(duì)象可以處理和日期有關(guān)的數(shù)據(jù)。showday 數(shù)組的每個(gè)單元是 jtextfield 類創(chuàng)建的用來(lái)顯示日期的文本框。“星期”是 string 數(shù)組,單元的值依次為“sun 日” 、 “mon 一” 、 “tue 二” 、“wed 三” 、 “thu 四” 、 “fri 五” 、 “sat 六” 。2)方法calendarpad()是構(gòu)造方法,用來(lái)創(chuàng)建 calendarpad 對(duì)象。
30、setshowdaytextfield(jtextfield)方法負(fù)責(zé)設(shè)置 showday 數(shù)組。設(shè)計(jì)總說(shuō)明- 15 -setcalendarmessage(calendarmessage)方法負(fù)責(zé)設(shè)置 calendarmessage 對(duì)象。showmonthcalendar()方法負(fù)責(zé)顯示“日歷” 。詳細(xì)代碼:詳細(xì)代碼:import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class calendarpad extends jpanelint year,month,da
31、y; calendarmessage calendarmessage;jtextfield showday;jlabel title ;string 星期=sun 日,mon 一,tue 二,wed 三,thu 四,fri 五,sat 六;jpanel north,center;public calendarpad()setlayout(new borderlayout();north=new jpanel();north.setlayout(new gridlayout(1,7);center=new jpanel();center.setlayout(new gridlayout(6,7)
32、;add(center,borderlayout.center);add(north,borderlayout.north);title=new jlabel7;for(int j=0;j7;j+)titlej=new jlabel();titlej.setfont(new font(timesroman,font.bold,12);titlej.settext(星期j);titlej.sethorizontalalignment(jlabel.center);titlej.setborder(borderfactory.createraisedbevelborder();north.add(
33、titlej);title0.setforeground(color.red);title6.setforeground(color.blue);public void setshowdaytextfield(jtextfield text)showday=text;for(int i=0;ishowday.length;i+)showdayi.setfont(new font(timesroman,font.bold,15);showdayi.sethorizontalalignment(jtextfield.center);showdayi.seteditable(false);cente
34、r.add(showdayi);設(shè)計(jì)總說(shuō)明- 16 -public void setcalendarmessage(calendarmessage calendarmessage)this.calendarmessage=calendarmessage;public void showmonthcalendar()string a=calendarmessage.getmonthcalendar();for(int i=0;i42;i+)showdayi.settext(ai);validate();(4 4)notepadnotepad 類類notepad 類 javax.swing 包中的
35、 jpanel 容器的子類,實(shí)現(xiàn)了 actionlistener 接口,所創(chuàng)建的對(duì)象:notepad 是 minegame calendarwindow 類中的重要成員之一,作為一個(gè)容器添加到 calendarwindow 窗口的右上側(cè)以,下是該類的有關(guān)說(shuō)明:1)成員變量text 是 jtextarea 創(chuàng)建的文本區(qū),可在 text 中編譯多行文本。showmessage 是 jtextfield 創(chuàng)建的文本條,用來(lái)顯示和日期相關(guān)的數(shù)據(jù)。menu 是 jpopupmenu 創(chuàng)建的彈出式菜單。itemcopy、itemcut、itempaste、itemclear 是 jmenuitem 創(chuàng)建的
36、菜單項(xiàng),名字依次是“復(fù)制”, “剪切”, “黏貼”, “清空”。2)方法notepad()構(gòu)造方法,用來(lái)創(chuàng)建 notepad 對(duì)象。setshowmessage(int,int,int)方法根據(jù)參數(shù)指定的日期數(shù)據(jù)顯示有關(guān)日期信息。save(file,int,int,int)方法根據(jù)參數(shù)指定日期保存日志delete(file,int,int,int) 用于刪除日志read(file,int,int, int)用于讀取日志。詳細(xì)代碼:詳細(xì)代碼:import java.awt.*;import javax.swing.*;import java.io.*;import java.awt.event.
37、*;public class notepad extends jpanel implements actionlistenerjtextarea text;jtextfield showmessage;jpopupmenu menu;jmenuitem itemcopy,itemcut,itempaste,itemclear;public notepad()設(shè)計(jì)總說(shuō)明- 17 -showmessage=new jtextfield();showmessage.sethorizontalalignment(jtextfield.center);showmessage.setfont(new fo
38、nt(timesroman,font.bold,16);showmessage.setforeground(color.blue);showmessage.setbackground(color.pink);showmessage.setborder(borderfactory.createraisedbevelborder();showmessage.seteditable(false);menu =new jpopupmenu();itemcopy=new jmenuitem(復(fù)制);itemcut=new jmenuitem(剪切);itempaste=new jmenuitem(粘貼)
39、;itemclear=new jmenuitem(清空);itemcopy.addactionlistener(this);itemcut.addactionlistener(this); itempaste.addactionlistener(this); itemclear.addactionlistener(this); menu.add(itemcopy); menu.add(itemcut);menu.add(itempaste);menu.add(itemclear);text=new jtextarea(10,10);text.addmouselistener(new mouse
40、adapter()public void mousepressed(mouseevent e)if(e.getmodifiers()=inputevent.button3_mask)menu.show(text,e.getx(),e.gety(););setlayout(new borderlayout();add(showmessage,borderlayout.north);add(new jscrollpane(text),borderlayout.center);public void setshowmessage(int year,int month, int day)showmes
41、sage.settext(+year+年+month+月+day+日);public void save(file dir,int year,int month,int day)string dailycontent=text.gettext();string filename=+year+month+day+.txt;string key=+year+month+day;string dayfile=dir.list();boolean boo=false;for(int k=0;kdayfile.length;k+)if(dayfilek.startswith(key)boo=true;設(shè)
42、計(jì)總說(shuō)明- 18 -break;if(boo)string m=+year+年+month+月+day+已有日志,將新內(nèi)容添加到日志嗎?;int ok=joptionpane.showconfirmdialog(this, m, 詢問(wèn), joptionpane.yes_no_option, joptionpane.question_message);if(ok=joptionpane.yes_option)tryfile f=new file(dir,filename);randomaccessfile out=new randomaccessfile(f,rw);long fileend=o
43、ut.length();byte bb=dailycontent.getbytes();out.seek(fileend);out.write(bb);out.close();catch(ioexception exp)else string m=+year+年+month+月+day+還沒(méi)有日志,保存日志嗎?;int ok=joptionpane.showconfirmdialog(this, m, 詢問(wèn),joptionpane.yes_no_option, joptionpane.question_message);if(ok=joptionpane.yes_option)tryfile
44、f=new file(dir,filename);randomaccessfile out= new randomaccessfile(f,rw);long fileend=out.length();byte bb=dailycontent.getbytes();out.write(bb);out.close();catch(ioexception exp)public void delete(file dir,int year,int month,int day)string key =+year+month+day;string dayfile=dir.list();boolean boo
45、=false;for(int k=0;kdayfile.length;k+)if(dayfilek.startswith(key)設(shè)計(jì)總說(shuō)明- 19 -boo=true;break;if(boo)string m=刪除+year+年+month+月+day+日的日志嗎?;int ok=joptionpane.showconfirmdialog(this,m,詢問(wèn),joptionpane.yes_no_option,joptionpane.question_message); if(ok=joptionpane.yes_option)string filename=+year+month+day
46、+.txt;file deletefile=new file(dir,filename);deletefile.delete();elsestring m=+year+年+month+月+day+無(wú)日志記錄;joptionpane.showmessagedialog(this,m,提示,joptionpane.warning_message);public void read(file dir,int year,int month,int day)string filename=+year+month+day+.txt;string key=+year+month+day;string day
47、file=dir.list();boolean boo=false;for(int k=0;kdayfile.length;k+)if(dayfilek.startswith(key)boo=true;break;if(boo)string m=+year+年+month+月+day+有日志,顯示日志內(nèi)容嗎?;int ok=joptionpane.showconfirmdialog(this,m,詢問(wèn),joptionpane.yes_no_option,joptionpane.question_message);if(ok=joptionpane.yes_option)text.settext
48、(null);tryfile f=new file(dir,filename);filereader inone=new filereader(f);bufferedreader intwo=new bufferedreader(inone);string s=null;while (s=intwo.readline()!=null)text.append(s+n);設(shè)計(jì)總說(shuō)明- 20 -inone.close();intwo.close();catch(ioexception exp)elsestring m=+year+年+month+月+day+無(wú)日志記錄;joptionpane.sho
49、wmessagedialog(this,m,提示,joptionpane.warning_message);public void actionperformed(actionevent e)if(e.getsource()=itemcopy) text.copy();else if(e.getsource()=itemcut)text.cut();else if(e.getsource()=itempaste)text.paste();else if(e.getsource()=itemclear)text.settext(null);(5)calendarimage 類類calendari
50、mage 創(chuàng)建的對(duì)象負(fù)責(zé)繪制圖像calendarimage 類是 javax.swing 包中 jpanel 容器的一個(gè)子類,創(chuàng)建的對(duì)象calendarmessage 是 calendarwindow 類的成員之一,負(fù)責(zé)繪制圖像,作為一個(gè)容器添加到 calendarwindow 窗口的左下側(cè),以下是該類的有關(guān)說(shuō)明:1)成員變量imagefile 是 file 對(duì)象,用來(lái)存放圖像文件的引用image 是 image 對(duì)象tool 是 tookit 對(duì)象,負(fù)責(zé)創(chuàng)建 image 對(duì)象2)方法calendarimage()是構(gòu)造方法,負(fù)責(zé)創(chuàng)建 calendarimage 對(duì)象setimagefile(
51、file)方法負(fù)責(zé)設(shè)置 imagefile 對(duì)象,并根據(jù) imagefile 創(chuàng)建imagepaintcomponent(griphics)方法負(fù)責(zé)繪制 image 詳細(xì)代碼:詳細(xì)代碼:import javax.swing.*;設(shè)計(jì)總說(shuō)明- 21 -import java.io.*;import java.awt.*;public class calendarimage extends jpanelfile imagefile;image image;toolkit tool;calendarimage()tool = gettoolkit();public void setimagefile
52、(file f)imagefile = f;tryimage = tool.getimage(imagefile.touri().tourl();catch (exception e)repaint();public void paintcomponent(graphics g)super.paintcomponent(g);int w = getbounds().width;int h = getbounds().height;g.drawimage(image,0,0,w,h,this);(6 6)clockclock 類類clock 類是 javax.swing 包中 jpanel 容器
53、的子類,并實(shí)現(xiàn)了 actionlistener 接口,所創(chuàng)建的對(duì)像:clock 是 calendarwindow 類中的成員之一,負(fù)責(zé)顯示時(shí)間,被添加到calendarwindow 窗口的右下側(cè),以下是該類的有關(guān)說(shuō)明:1) 成員變量date 是 date 對(duì)像,負(fù)責(zé)封裝本地時(shí)間secondtime 是 javax.swing 包中 timer 類創(chuàng)建的計(jì)時(shí)hour,minute 和 second 是 int 型數(shù)據(jù),分別飛“小時(shí)” , “分鐘”和“秒”設(shè)計(jì)總說(shuō)明- 22 -secondline,minuteline 和 hourline 是 lint2d 對(duì)象,分別負(fù)責(zé)繪制“時(shí)針” ,“分針”
54、 , “秒針”pointsx,pointsy 是 double 型數(shù)組,其單元值用來(lái)表示秒針端點(diǎn)的坐標(biāo)pointmx,pointmy 是 double 型數(shù)組,其單元值用來(lái)表示分針端點(diǎn)坐標(biāo)pointhx,pointhy 是 double 型數(shù)組,其單元值用來(lái)便是時(shí)針端點(diǎn)坐標(biāo)2) 方法clock()是構(gòu)造方法,用來(lái)創(chuàng)建 clock 對(duì)象initpoint()負(fù)責(zé)創(chuàng)建表盤所需要的坐標(biāo)點(diǎn)paintcomponent(graphics)負(fù)責(zé)完成繪制工作actionperformed(actionevent)是接口 actionlistener 中的方法。使用 timer 類的構(gòu)造方法:timer(in
55、t a ,object b )創(chuàng)建一個(gè)計(jì)時(shí)器,其中的參數(shù) a 的單位是毫秒,確定計(jì)時(shí)器每隔 a 毫秒“振鈴”一次,參數(shù) b 是計(jì)時(shí)器的監(jiān)視器。計(jì)時(shí)器發(fā)生的振鈴時(shí)件是 actionevent 類型時(shí)件,當(dāng)振鈴時(shí)間發(fā)生時(shí),監(jiān)視器就會(huì)監(jiān)視到這個(gè)事件,監(jiān)視器就會(huì)回調(diào)用 actionlistener 接口中的actionperformed(actionevent)方法,該方法所做的操作是:每隔 1 秒鐘,讓秒針前進(jìn)一個(gè)刻度,既 secondline 改變端點(diǎn)坐標(biāo);每隔 1 分鐘,讓分針前進(jìn)一個(gè)刻度(表盤一周為 360,每個(gè)時(shí)刻為 6) ,既 muniteline 改變端點(diǎn)坐標(biāo);每隔 12 分鐘,讓時(shí)針前
56、進(jìn)一個(gè)刻度,既 hourline 改變端點(diǎn)坐標(biāo)。詳細(xì)代碼:詳細(xì)代碼:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.geom.*;import java.util.*;public class clock extends jpanel implements actionlistenerdate date;javax.swing.timer secondtime;int hour,munite,second;line2d secondline,muniteline,hourline;in
57、t a,b,c,width,height;double pointsx = new double60, pointsy = new double60, pointmx = new double60, pointmy = new double60, pointhx = new double60, pointhy = new double60;clock()設(shè)計(jì)總說(shuō)明- 23 -setbackground(color.cyan);initpoint();secondtime = new javax.swing.timer(1000,this);secondline = new line2d.dou
58、ble(0,0,0,0);muniteline = new line2d.double(0,0,0,0);hourline = new line2d.double(0,0,0,0);secondtime.start();private void initpoint()width = getbounds().width;height = getbounds().height;pointsx0 = 0;pointsy0 = -(height/2*5/6);pointmx0 = 0;pointmy0 = -(height/2*4/5);pointhx0 = 0;pointhy0 = -(height
59、/2*2/3);double angle = 6*math.pi/180;for(int i = 0;i59;i+)pointsxi+1 = pointsxi*math.cos(angle) - math.sin(angle)*pointsyi;pointsyi+1 = pointsyi*math.cos(angle) + pointsxi*math.sin(angle);pointmxi+1 = pointmxi*math.cos(angle) - math.sin(angle)*pointmyi;pointmyi+1 = pointmyi*math.cos(angle) + pointmx
60、i*math.sin(angle);pointhxi+1 = pointhxi*math.cos(angle) - math.sin(angle)*pointhyi;pointhyi+1 = pointhyi*math.cos(angle) - pointhxi*math.sin(angle);for(int i = 0;i60;i+)pointsxi = pointsxi+width/2;pointsyi = pointsyi+height/2;pointmxi = pointmxi+width/2;pointmyi = pointmyi+height/2;pointhxi = pointh
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 2 More than fun:Understanding ideas (Grammar) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年外研版(2024年)英語(yǔ)七年級(jí) 上冊(cè)
- 2025年度勞動(dòng)合同解除終止證明書模板設(shè)計(jì)與員工離職后續(xù)支持合同
- 2025年度拖欠工資問(wèn)題解決與勞動(dòng)權(quán)益保障合同
- 2025年度家居裝修安全責(zé)任協(xié)議書
- 2025年度房產(chǎn)證辦理完畢后購(gòu)房合同保管期限與責(zé)任合同
- 2025年度抵押車買賣合同車輛交易稅費(fèi)繳納及返還協(xié)議
- 2025年度餐飲公司合伙人合作協(xié)議及知識(shí)產(chǎn)權(quán)保護(hù)合同
- 2025年度臨時(shí)炊事員餐飲服務(wù)與管理合作協(xié)議
- 2025年度個(gè)人水泥品牌授權(quán)與推廣合作協(xié)議
- 2025年度體育場(chǎng)地租賃及健身課程開發(fā)合同
- 2024年山東司法警官職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 物業(yè)客服課件培訓(xùn)模板
- 人教版PEP四年級(jí)英語(yǔ)下冊(cè)全冊(cè)教學(xué)設(shè)計(jì)表格教案
- 制造業(yè)面臨的挑戰(zhàn)與發(fā)展對(duì)策
- 高速公路綠化工程施工
- 發(fā)展?jié)h語(yǔ)-初級(jí)讀寫-第一課-你好
- 化工公司原址污染場(chǎng)地污染土壤治理修復(fù)方案
- 法蘭標(biāo)準(zhǔn)尺寸表(美標(biāo)、日標(biāo)、德標(biāo))
- 施工技術(shù)管理項(xiàng)總體思路、方式和方法解析
- 《大學(xué)生安全教育》課件-第一課 國(guó)家安全
- 城市規(guī)劃與建筑學(xué)專業(yè)英語(yǔ)
評(píng)論
0/150
提交評(píng)論