




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
./技術資料2012~2013學年度第1學期《Java程序設計》課程報告項目:日歷記事本專業(yè):計算機科學與技術學號:10570235姓名:常兆華班級:計算機2班分數:角色姓名學號任務分配小組評定組長王思琪10570226強制練習工具組員常兆華10570235日歷記事本隋欣10570219日歷記事本楊海鈺10570232小游戲關樂10570231小游戲王冕卿10570223Atm取款機系統(tǒng)項目說明目錄第一部分、項目整體概述……………3頁第二部分、我的任務…………………5頁第三部分、代碼和詳細注釋…………6頁第四部分、心得體會………………14頁第一部分、項目整體概述日歷記事本帶有日程提醒功能的日歷。2.顯示信息:用戶可以看到這個月的信息,包括年份、日期等。點擊翻頁按鈕可以查詢前一個月的日期,也可以向后翻頁查詢下一個月的日期。同樣,可以根據年份查詢不同年份的日期。日期的顯示有一些優(yōu)化,用戶不僅可以查詢到本月份的信息,還可以根據上個月與下個月的日期填充來方便查詢日期和星期。3.定時提醒:用戶可以針對某一天來添加、刪除和編輯這一天的日程提醒信息當系統(tǒng)時間和提醒時間相吻合時,給出具有提示信息的對話框。4.查詢信息:用戶可以查詢到某個月的所有的提示信息。日歷記事本共有4個java源文件。CalendarPad.java該java文件生成的類負責創(chuàng)建本日歷記事本程序主窗口。該類含有main方法,程序從該類開始執(zhí)行。Year.java該文件負責創(chuàng)建管理年份的對象。Month.java該文件負責創(chuàng)建管理月份的類對象。NotePad.java該文件負責創(chuàng)建記事本。截圖:初始界面可輸入年份查看相應的日歷與記事本第二部分、我的任務具體任務:資料查找,匯總及需求分析,負責日歷的編寫,和板塊的布局輸出等。編寫大致思路:我主要負責這個項目中日歷的編寫和輸出顯示的一部分。經過調查自己電腦中的日歷記事本和大家紙質的日歷記事本,我知道若想完整地顯示一個月的信息至少需要一個首先需要一個7*7的網格,要用到GridLayout網格設置語言。其中每一列的頂層可以稱它為title"標題",也就是顯示"星期幾",表頭顯示這個月所在的年份與月份。隨后對日期進行編號,判斷閏平年、大小月等必要的程序。為了能使用戶查找到前一年、下一年,上一月、下一月的內容,還需要設置按鈕,讓成員變量實現其更改??傮w規(guī)劃:主類CanlendarPad1.成員變量成員變量描述變量類型名稱年、月、日intyear,month,day保存日志的散列表Hanshtablehanshtable存放散列表的文件Filefile顯示日期JtextFile[]showDay日歷對象Calendar日歷記事本對象NotePadnotepad月Month負責改變月年Year負責改變年2.方法名稱功能備注CalendarPad創(chuàng)建窗口主程序構造方法設置日歷牌設置日立的年份、月份排列號碼排列月份中的號碼mousePressed處理MouseEvent事件接口方法main程序開始運行第三部分、源代碼及詳細注釋:CalendarPadimportjava.util.Calendar;//寫的Calendar類里面導入這個包下的所有類庫publicclassCalendarPadextendsJFrameimplementsMouseListener{//定義CalendarPad類繼承JFrame父類的屬性MouseListener鼠標監(jiān)聽
intyear,month,day;//定義年月日Hashtablehashtable;//用來保存日志的散列哈希表Filefile;//存在哈希表中的文件JTextFieldshowDay[];//每天是7X7的一個小格子單元JLabeltitle[];//用來創(chuàng)建日歷牌中的表格屬性"星期幾"Calendar日歷;//定義"日歷"方法是calendarint星期幾;//整形定義"星期幾"方法NotePadnotepad=null;//日記本對象,初值為空Month負責改變月;//定義"負責改變月"方法Year負責改變年;//定義"負責改變年"方法String星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};JPanelleftPanel,rightPanel;//界面設計,左邊是日歷,右面為記事本publicCalendarPad<intyear,intmonth,intday>//在CalendarPad類中定義年月日{ getContentPane<>.setBackground<newColor<255,228,225>>;//初始化一個容器,設置顏色值為〔255,,228,225 setBackground<newColor<255,250,250>>;//顏色設置 setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//字體設置 setForeground<newColor<70,130,180>>; setTitle<"">;leftPanel=newJPanel<>;//傳入一個布局對象作為參數來創(chuàng)建左邊的面板JPanelleftCenter=newJPanel<>;JPanelleftNorth=newJPanel<>;leftCenter.setLayout<newGridLayout<7,7>>;//設置窗口,為7*7的網格,參數說明〔行數,列數rightPanel=newJPanel<>;//設置右側面板this.year=year;this.month=month;this.day=day;負責改變年=newYear<this>;負責改變年.setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//設置字體負責改變年.setForeground<newColor<65,105,225>>;//設置前景色負責改變年.setYear<year>;//調用方法負責改變月=newMonth<this>;負責改變月.setFont<newFont<"微軟雅黑",Font.BOLD,12>>;//設置字體負責改變月.setForeground<newColor<65,105,225>>;//設置前景色負責改變月.setMonth<month>;//調用方法title=newJLabel[7];//"星期幾"標題,有7個showDay=newJTextField[42];//顯示日期的文件有42個〔對應42個網格for<intj=0;j<7;j++>//標題的寫入,周日到周一{title[j]=newJLabel<>;title[j].setText<星期[j]>;title[j].setBorder<BorderFactory.createRaisedBevelBorder<>>;//創(chuàng)建邊框leftCenter.add<title[j]>;}title[0].setForeground<Color.red>;//設置周日為紅色title[6].setForeground<Color.blue>;//設置周六為藍色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<負責改變年>;box.add<負責改變月>;leftNorth.add<box>;leftPanel.setLayout<newBorderLayout<>>;leftPanel.add<leftNorth,BorderLayout.NORTH>;//上方的邊界leftPanel.add<leftCenter,BorderLayout.CENTER>;//中間Labellabel=newLabel<"請在年份輸入框輸入所查年份,按回車確定。負數為公元前">;label.setBackground<UIManager.getColor<"ScrollBar.foreground">>;//具體設置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>;//調用notepad的數據rightPanel.add<notepad>;設置日歷牌<year,month>;addWindowListener<newWindowAdapter<>{publicvoidwindowClosing<WindowEvente>{System.exit<0>;}}>;setVisible<true>;setBounds<100,50,612,320>;validate<>;}publicvoid設置日歷牌<intyear,intmonth>{日歷.set<year,month-1,1>;//Calendar是JAVA默認的類,set〔年,月,日格式,月份是從0開始計為1月,以此類推。故設置月份參數為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月天數>{for<inti=星期幾,n=1;i<星期幾+月天數;i++>{showDay[i].setText<""+n>;//設置天數,累加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=星期幾+月天數;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.設置信息條<year,month,day>;notepad.設置文本區(qū)<null>;notepad.獲取日志內容<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>;}publicvoi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印刷業(yè)行業(yè)發(fā)展與市場前景預測報告考核試卷
- 智能穿戴設備在食品安全監(jiān)測中的應用考核試卷
- 成人教育學生自我調控學習考核試卷
- 工藝美術產業(yè)的創(chuàng)新發(fā)展政策與支持體系構建考核試卷
- 氣候對育苗的影響考核試卷
- 智能汽車產業(yè)鏈的投資分析考核試卷
- 水產養(yǎng)殖可持續(xù)發(fā)展理論與實踐考核試卷
- 人才選拔培養(yǎng)方案計劃
- 交通行業(yè)保安工作總結計劃
- 國際合作中的安全保障措施計劃
- 四年級下冊綜合實踐活動教案 跟著節(jié)氣去探究 全國通用
- 培智康復課教案模板(共7篇)
- 楊光斌《政治學導論》考研重點整理(自己整理的超實用)
- CCS電氣電子產品型式認可試驗指南
- 員工面試登記表
- rcs-9611c-線路保護測控裝置-技術使用說明
- 《計算機網絡基礎》第1章 計算機網絡概論
- 走遍德國-(課堂PPT)課件
- 《小龍蝦工廠化人工繁育技術規(guī)程》
- SCL-90心理測試試卷
- 法語冠詞總結
評論
0/150
提交評論