




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
./2012~2013學(xué)年度第1學(xué)期《Java程序設(shè)計》課程報告項目:日歷記事本專業(yè):計算機科學(xué)與技術(shù)學(xué)號:10570235姓名:常兆華班級:計算機2班分?jǐn)?shù):角色姓名學(xué)號任務(wù)分配小組評定組長王思琪10570226強制練習(xí)工具組員常兆華10570235日歷記事本隋欣10570219日歷記事本楊海鈺10570232小游戲關(guān)樂10570231小游戲王冕卿10570223Atm取款機系統(tǒng)項目說明目錄第一部分、項目整體概述……………3頁第二部分、我的任務(wù)…………………5頁第三部分、代碼和詳細(xì)注釋…………6頁第四部分、心得體會………………14頁第一部分、項目整體概述日歷記事本帶有日程提醒功能的日歷.2.顯示信息:用戶可以看到這個月的信息,包括年份、日期等.點擊翻頁按鈕可以查詢前一個月的日期,也可以向后翻頁查詢下一個月的日期.同樣,可以根據(jù)年份查詢不同年份的日期.日期的顯示有一些優(yōu)化,用戶不僅可以查詢到本月份的信息,還可以根據(jù)上個月與下個月的日期填充來方便查詢?nèi)掌诤托瞧?3.定時提醒:用戶可以針對某一天來添加、刪除和編輯這一天的日程提醒信息當(dāng)系統(tǒng)時間和提醒時間相吻合時,給出具有提示信息的對話框.4.查詢信息:用戶可以查詢到某個月的所有的提示信息.日歷記事本共有4個java源文件.CalendarPad.java該java文件生成的類負(fù)責(zé)創(chuàng)建本日歷記事本程序主窗口.該類含有main方法,程序從該類開始執(zhí)行.Year.java該文件負(fù)責(zé)創(chuàng)建管理年份的對象.Month.java該文件負(fù)責(zé)創(chuàng)建管理月份的類對象.NotePad.java該文件負(fù)責(zé)創(chuàng)建記事本.截圖:初始界面可輸入年份查看相應(yīng)的日歷與記事本第二部分、我的任務(wù)具體任務(wù):資料查找,匯總及需求分析,負(fù)責(zé)日歷的編寫,和板塊的布局輸出等.編寫大致思路:我主要負(fù)責(zé)這個項目中日歷的編寫和輸出顯示的一部分.經(jīng)過調(diào)查自己電腦中的日歷記事本和大家紙質(zhì)的日歷記事本,我知道若想完整地顯示一個月的信息至少需要一個首先需要一個7*7的網(wǎng)格,要用到GridLayout網(wǎng)格設(shè)置語言.其中每一列的頂層可以稱它為title"標(biāo)題",也就是顯示"星期幾",表頭顯示這個月所在的年份與月份.隨后對日期進(jìn)行編號,判斷閏平年、大小月等必要的程序.為了能使用戶查找到前一年、下一年,上一月、下一月的內(nèi)容,還需要設(shè)置按鈕,讓成員變量實現(xiàn)其更改.總體規(guī)劃:主類CanlendarPad1.成員變量成員變量描述變量類型名稱年、月、日intyear,month,day保存日志的散列表Hanshtablehanshtable存放散列表的文件Filefile顯示日期JtextFile[]showDay日歷對象Calendar日歷記事本對象NotePadnotepad月Month負(fù)責(zé)改變月年Year負(fù)責(zé)改變年2.方法名稱功能備注CalendarPad創(chuàng)建窗口主程序構(gòu)造方法設(shè)置日歷牌設(shè)置日立的年份、月份排列號碼排列月份中的號碼mousePressed處理MouseEvent事件接口方法main程序開始運行第三部分、源代碼及詳細(xì)注釋:CalendarPadimportjava.util.Calendar;//寫的Calendar類里面導(dǎo)入這個包下的所有類庫publicclassCalendarPadextendsJFrameimplementsMouseListener{//定義CalendarPad類繼承JFrame父類的屬性MouseListener鼠標(biāo)監(jiān)聽
intyear,month,day;//定義年月日Hashtablehashtable;//用來保存日志的散列哈希表Filefile;//存在哈希表中的文件JTextFieldshowDay[];//每天是7X7的一個小格子單元JLabeltitle[];//用來創(chuàng)建日歷牌中的表格屬性"星期幾"Calendar日歷;//定義"日歷"方法是calendarint星期幾;//整形定義"星期幾"方法NotePadnotepad=null;//日記本對象,初值為空Month負(fù)責(zé)改變月;//定義"負(fù)責(zé)改變月"方法Year負(fù)責(zé)改變年;//定義"負(fù)責(zé)改變年"方法String星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};JPanelleftPanel,rightPanel;//界面設(shè)計,左邊是日歷,右面為記事本publicCalendarPad<intyear,intmonth,intday>//在CalendarPad類中定義年月日{(diào) getContentPane<>.setBackground<newColor<255,228,225>>;//初始化一個容器,設(shè)置顏色值為〔255,,228,225 setBackground<newColor<255,250,250>>;//顏色設(shè)置 setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//字體設(shè)置 setForeground<newColor<70,130,180>>; setTitle<"">;leftPanel=newJPanel<>;//傳入一個布局對象作為參數(shù)來創(chuàng)建左邊的面板JPanelleftCenter=newJPanel<>;JPanelleftNorth=newJPanel<>;leftCenter.setLayout<newGridLayout<7,7>>;//設(shè)置窗口,為7*7的網(wǎng)格,參數(shù)說明〔行數(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é)改變月=newMonth<this>;負(fù)責(zé)改變月.setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//設(shè)置字體負(fù)責(zé)改變月.setForeground<newColor<65,105,225>>;//設(shè)置前景色負(fù)責(zé)改變月.setMonth<month>;//調(diào)用方法title=newJLabel[7];//"星期幾"標(biāo)題,有7個showDay=newJTextField[42];//顯示日期的文件有42個〔對應(yīng)42個網(wǎng)格for<intj=0;j<7;j++>//標(biāo)題的寫入,周日到周一{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++>//日期寫入{showDay[i]=newJTextField<>;showDay[i].addMouseListener<this>;showDay[i].setEditable<false>;leftCenter.add<showDay[i]>;}日歷=Calendar.getInstance<>;//年份月份的查詢Boxbox=Box.createHorizontalBox<>;box.add<負(fù)責(zé)改變年>;box.add<負(fù)責(zé)改變月>;leftNorth.add<box>;leftPanel.setLayout<newBorderLayout<>>;leftPanel.add<leftNorth,BorderLayout.NORTH>;//上方的邊界leftPanel.add<leftCenter,BorderLayout.CENTER>;//中間Labellabel=newLabel<"請在年份輸入框輸入所查年份,按回車確定.負(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)的類,set〔年,月,日格式,月份是從0開始計為1月,以此類推.故設(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>//判斷大小月{排列號碼<星期幾,31>;}elseif<month==4||month==6||month==9||month==11>{排列號碼<星期幾,30>;}elseif<month==2>{if<<year%4==0&&year%100!=0>||<year%400==0>>//判斷閏年,平年{排列號碼<星期幾,29>;}else{排列號碼<星期幾,28>;}}}publicvoid排列號碼<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)化:顯示上個月和下個月部分日期intlastmonth=month-1;//取得上個月月份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-->//將上個月部分日期放入單元格{showDay[i].setForeground<Color.gray>;showDay[i].setText<date+"">;date--;}intflag=1;//將下個月部分日期放入單元格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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省高職單招醫(yī)學(xué)類職業(yè)技能測試題(附答案)
- 治安防控政策解讀課件
- 2025年浙江省寧波市鄞州區(qū)十二校聯(lián)考一模語文試題(原卷版+解析版)
- 銷售人員年度總結(jié)
- 電氣自動化專業(yè)技術(shù)工作總結(jié)
- 工人個人年終總結(jié)
- 2025p房屋買賣合同
- 2025深圳市房地產(chǎn)買賣合同(預(yù)售)
- 塑料購銷合同范本
- 一次性購房補貼合同范本
- 部編版六年級下冊語文古詩三首《石灰吟》(課件)
- GB/T 44465-2024虛擬/增強現(xiàn)實內(nèi)容制作流程規(guī)范
- DBJ50-T-390-2021公交停車港設(shè)計標(biāo)準(zhǔn)
- JB-T 8130.1-1995 恒力彈簧支吊架
- GB/T 36548-2024電化學(xué)儲能電站接入電網(wǎng)測試規(guī)程
- DZ-T+0227-2010地質(zhì)巖心鉆探規(guī)程
- 常熟、張家港、昆山、太倉市2022-2023學(xué)年七年級下學(xué)期期中道德與法治試題
- 建筑勞務(wù)用工合同范本
- 2024年湖北省中考地理生物試卷(含答案)
- 眼科手術(shù)前擴瞳
- 北師大版二年級下冊數(shù)學(xué)口算題大全帶答案
評論
0/150
提交評論