記事本-java程序的設(shè)計(jì)報(bào)告_第1頁(yè)
記事本-java程序的設(shè)計(jì)報(bào)告_第2頁(yè)
記事本-java程序的設(shè)計(jì)報(bào)告_第3頁(yè)
記事本-java程序的設(shè)計(jì)報(bào)告_第4頁(yè)
記事本-java程序的設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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)介

./2012~2013學(xué)年度第1學(xué)期《Java程序設(shè)計(jì)》課程報(bào)告項(xiàng)目:日歷記事本專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù)學(xué)號(hào):10570235姓名:常兆華班級(jí):計(jì)算機(jī)2班分?jǐn)?shù):角色姓名學(xué)號(hào)任務(wù)分配小組評(píng)定組長(zhǎng)王思琪10570226強(qiáng)制練習(xí)工具組員常兆華10570235日歷記事本隋欣10570219日歷記事本楊海鈺10570232小游戲關(guān)樂(lè)10570231小游戲王冕卿10570223Atm取款機(jī)系統(tǒng)項(xiàng)目說(shuō)明目錄第一部分、項(xiàng)目整體概述……………3頁(yè)第二部分、我的任務(wù)…………………5頁(yè)第三部分、代碼和詳細(xì)注釋…………6頁(yè)第四部分、心得體會(huì)………………14頁(yè)第一部分、項(xiàng)目整體概述日歷記事本帶有日程提醒功能的日歷.2.顯示信息:用戶(hù)可以看到這個(gè)月的信息,包括年份、日期等.點(diǎn)擊翻頁(yè)按鈕可以查詢(xún)前一個(gè)月的日期,也可以向后翻頁(yè)查詢(xún)下一個(gè)月的日期.同樣,可以根據(jù)年份查詢(xún)不同年份的日期.日期的顯示有一些優(yōu)化,用戶(hù)不僅可以查詢(xún)到本月份的信息,還可以根據(jù)上個(gè)月與下個(gè)月的日期填充來(lái)方便查詢(xún)?nèi)掌诤托瞧?3.定時(shí)提醒:用戶(hù)可以針對(duì)某一天來(lái)添加、刪除和編輯這一天的日程提醒信息當(dāng)系統(tǒng)時(shí)間和提醒時(shí)間相吻合時(shí),給出具有提示信息的對(duì)話(huà)框.4.查詢(xún)信息:用戶(hù)可以查詢(xún)到某個(gè)月的所有的提示信息.日歷記事本共有4個(gè)java源文件.CalendarPad.java該java文件生成的類(lèi)負(fù)責(zé)創(chuàng)建本日歷記事本程序主窗口.該類(lèi)含有main方法,程序從該類(lèi)開(kāi)始執(zhí)行.Year.java該文件負(fù)責(zé)創(chuàng)建管理年份的對(duì)象.Month.java該文件負(fù)責(zé)創(chuàng)建管理月份的類(lèi)對(duì)象.NotePad.java該文件負(fù)責(zé)創(chuàng)建記事本.截圖:初始界面可輸入年份查看相應(yīng)的日歷與記事本第二部分、我的任務(wù)具體任務(wù):資料查找,匯總及需求分析,負(fù)責(zé)日歷的編寫(xiě),和板塊的布局輸出等.編寫(xiě)大致思路:我主要負(fù)責(zé)這個(gè)項(xiàng)目中日歷的編寫(xiě)和輸出顯示的一部分.經(jīng)過(guò)調(diào)查自己電腦中的日歷記事本和大家紙質(zhì)的日歷記事本,我知道若想完整地顯示一個(gè)月的信息至少需要一個(gè)首先需要一個(gè)7*7的網(wǎng)格,要用到GridLayout網(wǎng)格設(shè)置語(yǔ)言.其中每一列的頂層可以稱(chēng)它為title"標(biāo)題",也就是顯示"星期幾",表頭顯示這個(gè)月所在的年份與月份.隨后對(duì)日期進(jìn)行編號(hào),判斷閏平年、大小月等必要的程序.為了能使用戶(hù)查找到前一年、下一年,上一月、下一月的內(nèi)容,還需要設(shè)置按鈕,讓成員變量實(shí)現(xiàn)其更改.總體規(guī)劃:主類(lèi)CanlendarPad1.成員變量成員變量描述變量類(lèi)型名稱(chēng)年、月、日intyear,month,day保存日志的散列表Hanshtablehanshtable存放散列表的文件Filefile顯示日期JtextFile[]showDay日歷對(duì)象Calendar日歷記事本對(duì)象NotePadnotepad月Month負(fù)責(zé)改變?cè)履闥ear負(fù)責(zé)改變年2.方法名稱(chēng)功能備注CalendarPad創(chuàng)建窗口主程序構(gòu)造方法設(shè)置日歷牌設(shè)置日立的年份、月份排列號(hào)碼排列月份中的號(hào)碼mousePressed處理MouseEvent事件接口方法main程序開(kāi)始運(yùn)行第三部分、源代碼及詳細(xì)注釋?zhuān)篊alendarPadimportjava.util.Calendar;//寫(xiě)的Calendar類(lèi)里面導(dǎo)入這個(gè)包下的所有類(lèi)庫(kù)publicclassCalendarPadextendsJFrameimplementsMouseListener{//定義CalendarPad類(lèi)繼承JFrame父類(lèi)的屬性MouseListener鼠標(biāo)監(jiān)聽(tīng)

intyear,month,day;//定義年月日Hashtablehashtable;//用來(lái)保存日志的散列哈希表Filefile;//存在哈希表中的文件JTextFieldshowDay[];//每天是7X7的一個(gè)小格子單元JLabeltitle[];//用來(lái)創(chuàng)建日歷牌中的表格屬性"星期幾"Calendar日歷;//定義"日歷"方法是calendarint星期幾;//整形定義"星期幾"方法NotePadnotepad=null;//日記本對(duì)象,初值為空Month負(fù)責(zé)改變?cè)?//定義"負(fù)責(zé)改變?cè)?方法Year負(fù)責(zé)改變年;//定義"負(fù)責(zé)改變年"方法String星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};JPanelleftPanel,rightPanel;//界面設(shè)計(jì),左邊是日歷,右面為記事本publicCalendarPad<intyear,intmonth,intday>//在CalendarPad類(lèi)中定義年月日{(diào) getContentPane<>.setBackground<newColor<255,228,225>>;//初始化一個(gè)容器,設(shè)置顏色值為〔255,,228,225 setBackground<newColor<255,250,250>>;//顏色設(shè)置 setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//字體設(shè)置 setForeground<newColor<70,130,180>>; setTitle<"">;leftPanel=newJPanel<>;//傳入一個(gè)布局對(duì)象作為參數(shù)來(lái)創(chuàng)建左邊的面板JPanelleftCenter=newJPanel<>;JPanelleftNorth=newJPanel<>;leftCenter.setLayout<newGridLayout<7,7>>;//設(shè)置窗口,為7*7的網(wǎng)格,參數(shù)說(shuō)明〔行數(shù),列數(shù)rightPanel=newJPanel<>;//設(shè)置右側(cè)面板this.year=year;this.month=month;this.day=day;負(fù)責(zé)改變年=newYear<this>;負(fù)責(zé)改變年.setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//設(shè)置字體負(fù)責(zé)改變年.setForeground<newColor<65,105,225>>;//設(shè)置前景色負(fù)責(zé)改變年.setYear<year>;//調(diào)用方法負(fù)責(zé)改變?cè)?newMonth<this>;負(fù)責(zé)改變?cè)?setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//設(shè)置字體負(fù)責(zé)改變?cè)?setForeground<newColor<65,105,225>>;//設(shè)置前景色負(fù)責(zé)改變?cè)?setMonth<month>;//調(diào)用方法title=newJLabel[7];//"星期幾"標(biāo)題,有7個(gè)showDay=newJTextField[42];//顯示日期的文件有42個(gè)〔對(duì)應(yīng)42個(gè)網(wǎng)格for<intj=0;j<7;j++>//標(biāo)題的寫(xiě)入,周日到周一{title[j]=newJLabel<>;title[j].setText<星期[j]>;title[j].setBorder<BorderFactory.createRaisedBevelBorder<>>;//創(chuàng)建邊框leftCenter.add<title[j]>;}title[0].setForeground<Color.red>;//設(shè)置周日為紅色title[6].setForeground<Color.blue>;//設(shè)置周六為藍(lán)色for<inti=0;i<42;i++>//日期寫(xiě)入{showDay[i]=newJTextField<>;showDay[i].addMouseListener<this>;showDay[i].setEditable<false>;leftCenter.add<showDay[i]>;}日歷=Calendar.getInstance<>;//年份月份的查詢(xún)Boxbox=Box.createHorizontalBox<>;box.add<負(fù)責(zé)改變年>;box.add<負(fù)責(zé)改變?cè)?gt;;leftNorth.add<box>;leftPanel.setLayout<newBorderLayout<>>;leftPanel.add<leftNorth,BorderLayout.NORTH>;//上方的邊界leftPanel.add<leftCenter,BorderLayout.CENTER>;//中間Labellabel=newLabel<"請(qǐng)?jiān)谀攴葺斎肟蜉斎胨槟攴?按回車(chē)確定.負(fù)數(shù)為公元前">;label.setBackground<UIManager.getColor<"ScrollBar.foreground">>;//具體設(shè)置label.setFont<newFont<"黑體",Font.BOLD,13>>;label.setForeground<newColor<204,0,0>>;leftPanel.add<label,BorderLayout.SOUTH>;//下方的邊界leftPanel.validate<>;Containercon=getContentPane<>;JSplitPanesplit=newJSplitPane<JSplitPane.HORIZONTAL_SPLIT,leftPanel,rightPanel>;con.add<split,BorderLayout.CENTER>;con.validate<>;hashtable=newHashtable<>;//初始化哈希表file=newFile<"日歷記事本.txt">;//初始化文件if<!file.exists<>>{try{FileOutputStreamout=newFileOutputStream<file>;ObjectOutputStreamobjectOut=newObjectOutputStream<out>;objectOut.writeObject<hashtable>;objectOut.close<>;out.close<>;}catch<IOExceptione>//捕獲輸入輸出異常{}}notepad=newNotePad<this>;//調(diào)用notepad的數(shù)據(jù)rightPanel.add<notepad>;設(shè)置日歷牌<year,month>;addWindowListener<newWindowAdapter<>{publicvoidwindowClosing<WindowEvente>{System.exit<0>;}}>;setVisible<true>;setBounds<100,50,612,320>;validate<>;}publicvoid設(shè)置日歷牌<intyear,intmonth>{日歷.set<year,month-1,1>;//Calendar是JAVA默認(rèn)的類(lèi),set〔年,月,日格式,月份是從0開(kāi)始計(jì)為1月,以此類(lèi)推.故設(shè)置月份參數(shù)為month-1星期幾=日歷.get<Calendar.DAY_OF_WEEK>-1;//規(guī)定格式,得到此日為星期幾if<month==1||month==3||month==5||month==7||month==8||month==10||month==12>//判斷大小月{排列號(hào)碼<星期幾,31>;}elseif<month==4||month==6||month==9||month==11>{排列號(hào)碼<星期幾,30>;}elseif<month==2>{if<<year%4==0&&year%100!=0>||<year%400==0>>//判斷閏年,平年{排列號(hào)碼<星期幾,29>;}else{排列號(hào)碼<星期幾,28>;}}}publicvoid排列號(hào)碼<int星期幾,int月天數(shù)>{for<inti=星期幾,n=1;i<星期幾+月天數(shù);i++>{showDay[i].setText<""+n>;//設(shè)置天數(shù),累加if<n==day>{showDay[i].setForeground<Color.green>;showDay[i].setFont<newFont<"TimesRoman",Font.BOLD,20>>;}else{showDay[i].setFont<newFont<"TimesRoman",Font.BOLD,12>>;showDay[i].setForeground<Color.black>;}if<i%7==6>{showDay[i].setForeground<Color.blue>;}if<i%7==0>{showDay[i].setForeground<Color.red>;}n++;}//程序優(yōu)化:顯示上個(gè)月和下個(gè)月部分日期intlastmonth=month-1;//取得上個(gè)月月份if<lastmonth==0> lastmonth=12;intdate=0;if<lastmonth==1||lastmonth==3||lastmonth==5||lastmonth==7||lastmonth==8||lastmonth==10||lastmonth==12> date=31;elseif<lastmonth==4||lastmonth==6||lastmonth==9||lastmonth==11> date=30;elseif<lastmonth==2>{if<<year%4==0&&year%100!=0>||<year%400==0>> date=29;else date=28;}for<inti=星期幾-1;i>=0;i-->//將上個(gè)月部分日期放入單元格{showDay[i].setForeground<Color.gray>;showDay[i].setText<date+"">;date--;}intflag=1;//將下個(gè)月部分日期放入單元格for<inti=星期幾+月天數(shù);i<42;i++>{showDay[i].setForeground<Color.gray>;showDay[i].setText<String.valueOf<flag>>;flag++;}}publicintgetYear<>{returnyear;}publicvoidsetYear<inty>{year=y;notepad.setYear<year>;}publicintgetMonth<>{returnmonth;}publicvoidsetMonth<intm>{month=m;notepad.setMonth<month>;}publicintgetDay<>{returnday;}publicvoidsetDay<intd>{day=d;notepad.setDay<day>;}publicHashtablegetHashtable<>{returnhashtable;}publicFilegetFile<>{returnfile;}publicvoidmousePressed<MouseEvente>{JTextFieldsource=<JTextField>e.getSource<>;try{day=Integer.parseInt<source.getText<>>;notepad.setDay<day>;notepad.設(shè)置信息條<year,month,day>;notepad.設(shè)置文本區(qū)<null>;notepad.獲取日志內(nèi)容<year,month,day>;}catch<Exceptionee>{}}publicvoidmouseClicked<MouseEvente>{}publicvoidmouseReleased<MouseEvente>{}publicvoidmouseEntered<MouseEvente>{}publicvoidmouseExited<MouseEvente>{}publicstaticvoidmain<Stringargs[]>{Calendarcalendar=Calendar.getInstance<>;inty=calendar.get<Calendar.YEAR>;intm=calendar.get<Calendar.MONTH>+1;intd=calendar.get<Calendar.DAY_OF_MONTH>;newCalendarPad<y,m,d>;}}YEAR:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassYearextendsBoximplementsActionListener{intyear;intmonth;JTextFieldshowYear=null;JButton明年,去年;CalendarPad日歷;publicYear<CalendarPad日歷>{super<BoxLayout.X_AXIS>;showYear=newJTextField<4>;showYear.setBackground<newColor<230,230,250>>;showYear.setForeground<newColor<255,20,147>>;showYear.setFont<newFont<"TimesRomn",Font.BOLD,14>>;this.日歷=日歷;year=日歷.getYear<>;明年=newJButton<"下年">;明年.setForeground<newColor<0,139,139>>;明年.setFont<newFont<"微軟雅黑",Font.BOLD,13>>;去年=newJButton<"上年">;去年.setFont<newFont<"微軟雅黑",Font.BOLD,13>>;去年.setForeground<newColor<0,139,139>>;add<去年>;add<showYear>;add<明年>;showYear.addActionListener<this>;去年.addActionListener<this>;明年.addActionListener<this>;}publicvoid

溫馨提示

  • 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)論