版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
--本頁僅作為文檔封面,使用時請直接刪除即可--
--內(nèi)頁可以根據(jù)需求調(diào)整合適字體及大小本頁僅作為文檔封面,使用時請直接刪除即可--
--內(nèi)頁可以根據(jù)需求調(diào)整合適字體及大小--電子日歷記事本--Java課程設(shè)計(總26頁)PAGE《面向?qū)ο蟪绦蛟O(shè)計》課程設(shè)計報告題目:電子日歷記事本的設(shè)計院(系):信息科學(xué)與工程學(xué)院專業(yè)班級:計算機(jī)科學(xué)與技術(shù)1201班學(xué)生姓名:程偉學(xué)號:011指導(dǎo)教師:吳奕2014年12月29日至2015年1月9日華中科技大學(xué)武昌分校制面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計任務(wù)書一、設(shè)計(調(diào)查報告/論文)題目電子日歷記事本的設(shè)計二、設(shè)計(調(diào)查報告/論文)主要內(nèi)容內(nèi)容:設(shè)計GUI界面的日歷記事本,系統(tǒng)將記事本與日歷相結(jié)合,可在任何時間記載編輯或查看相關(guān)內(nèi)容日志,系統(tǒng)可實現(xiàn)基本的輔助辦公與行政管理?;竟δ芘c要求:①設(shè)計記事本編輯器程序,所有編輯功能可以在菜單欄中選擇,包括編輯、保存、打開、剪切、復(fù)制等操作,能打開和顯示已存在的文本文件,界面設(shè)計要求采用類組件實現(xiàn)。②設(shè)計日歷系統(tǒng),要求用圖形用戶界面實現(xiàn),用戶可以方便地在任何日期編輯有關(guān)內(nèi)容以及查看某個日期記載的內(nèi)容。日歷可以按年/月前后翻動,當(dāng)鼠標(biāo)單擊“上一年/上一月”按鈕時,當(dāng)前日歷的年份/月份將減一;當(dāng)鼠標(biāo)左鍵單擊“下一年/下一月”按鈕,當(dāng)前日歷的年份/月份將加一。③使用鼠標(biāo)左鍵在要選擇的日期上單擊,如有記事內(nèi)容,程序?qū)棾鰧υ捒蛱崾居脩羰欠裼糜浭卤撅@示該內(nèi)容或編輯新內(nèi)容,同時可將記事本的新內(nèi)容保存起來,形成一個日志供用戶日后使用。④設(shè)計用戶密碼功能或?qū)π畔?nèi)容加密,提高系統(tǒng)的安全性。三、原始資料1.《面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計》指導(dǎo)書2.耿祥義.JAVA大學(xué)實用教程.北京:清華大學(xué)出版社,2009.四、要求的設(shè)計(調(diào)查/論文)成果1.課程設(shè)計報告2.課程設(shè)計軟件五、進(jìn)程安排布置任務(wù),查找資料、需求分析1天總體設(shè)計1天詳細(xì)設(shè)計天編制源程序?qū)崿F(xiàn)天測試與修改1天撰寫課設(shè)報告2天六、主要參考資料[1]張廣彬.Java課程設(shè)計案例精編(第二版).北京:清華大學(xué)出版社,2011.[2]耿祥義.Java課程設(shè)計(第二版).北京:清華大學(xué)出版社,2008.[3]耿祥義.JAVA大學(xué)實用教程.北京:清華大學(xué)出版社,2009.[4]鄒林達(dá).陳國君Java2程序設(shè)計基礎(chǔ).北京:清華大學(xué)出版社,2010.[5]鄒林達(dá).Java2程序設(shè)計基礎(chǔ)實驗指導(dǎo).北京:清華大學(xué),2010.指導(dǎo)教師(簽名):20年月日1需求與總體設(shè)計 1需求分析 1總體設(shè)計思路 1功能圖 11.類圖 22詳細(xì)設(shè)計3CalendarPad類說明 3Year類說明 3Month類模塊 4NotePad類說明 43編碼實現(xiàn) 6CalendarPad模塊 6Year模塊 11Month模塊 14NotePad模塊 16系統(tǒng)運(yùn)行與測試 23程序主界面 23日志查看——無日志 23建立日志 24日志查看——有日志 24刪除日志 26總結(jié) 271需求與總體設(shè)計需求分析根據(jù)題目要求,將日歷與記事本功能相結(jié)合,實現(xiàn)對某日期的事件進(jìn)行記錄的功能,設(shè)計出簡潔方便美觀的GUI界面。將本程序主界面可以分為四個部分:日歷日期信息展示、年份、月份、記事本內(nèi)容、記事本下方的時鐘,用四個類來實現(xiàn)其“日歷”和“記事本”這兩大功能。通過主類CalendarPad創(chuàng)建動日歷記事本軟件的主界面,且該類中含有main方法,程序從該類開始執(zhí)行。再用余下的year、mouth、NotePad類來顯示并改變?nèi)掌诤蛯崿F(xiàn)記事本的功能??傮w設(shè)計思路1.可以編輯日歷的日期2.可以判斷當(dāng)前日期是否存在日志記錄3.對有日志記錄的日期,可以對該日期的日志記錄進(jìn)行修改和刪除4.對沒有日志記錄的日期,可以創(chuàng)建并保存新建的日志記錄5.對保存的日志加密,查看時得輸入密碼功能圖類圖
2詳細(xì)設(shè)計CalendarPad類說明該模塊設(shè)計主要主要包含以下成員變量:年(year)月(month)日(day) 存放日期的表(Hashtable) 存放日志的文件(File)主要方法有:創(chuàng)建程序主面板的構(gòu)造方法(CalendarPad)處理ActionEvent事件的接口方法(actionPerformed)程序開始運(yùn)行的main()方法。表1日歷記事本系統(tǒng)主面板與日歷板模塊類名CalendarPadpublic接口MouseListenerpublic方法CalendarPad(int,int,int)設(shè)置日歷牌(int,int)排列號碼(int,int)main()publicpublicvoidpublicvoidpublicstaticvoidYear類說明該模塊用于實現(xiàn)日歷記事本系統(tǒng)中關(guān)于年的設(shè)置 模塊中包含的主要成員變量有用于改變年的按鈕(Jbutton明年去年),顯示年的文本框(JTextField) 模塊中包含的主要方法有用于設(shè)置年的方法(setYear),用于獲取年的方法(getYear)和處理ActionEvent事件的接口方法(actionPerformed)等表2日歷記事本系統(tǒng)年設(shè)置模塊類名Yearpublic接口ActionListenerpublic方法setYear()getYear()actionPerformed(ActionEvente)publicvoidpublicintpublicvoidMonth類模塊該模塊用于實現(xiàn)日歷記事本系統(tǒng)中關(guān)于月的設(shè)置模塊中包含的主要成員變量有用于改變月的按鈕(Jbutton上月下月),顯示月的文本框(JTextField)模塊中包含的主要方法有用于設(shè)置月的方法(setMonth),用于獲取月的方法(getMonth)和處理ActionEvent事件的接口方法(actionPerformed)等表3日歷記事本系統(tǒng)月設(shè)置模塊類名Monthpublic接口ActionListenerpublic方法setMonth()getMonth()actionPerformed(ActionEvente)publicvoidpublicintpublicvoidNotePad類說明該模塊中包含的主要成員變量有文本框(JTextArea),按鈕(JButton保存日志刪除日志),用于存放日志記錄的文件(File)以及響應(yīng)相關(guān)操作的信息提示(JLabel)該模塊中包含的主要方法有設(shè)置信息條,設(shè)置文本區(qū),獲取日志內(nèi)容,保存日志,刪除日志表4日歷記事本系統(tǒng)記事本模塊類名NotePadpublic接口ActionListenerpublic方法設(shè)置信息條()設(shè)置文本區(qū)()獲取日志內(nèi)容()保存日志()刪除日志()publicvoidpublicvoidpublicvoidpublicvoidpublicvoid
3編碼實現(xiàn)源代碼import.*;import.*;import.*;import.*;importclassCalendarPadextendsJFrameimplementsMouseListener{ intyear,month,day;etYear(year); 負(fù)責(zé)改變月=newMonth(this); 負(fù)責(zé)改變月.setMonth(month); title=newJLabel[7];etText(星期[j]); title[j].setBorder());etForeground; title[6].setForeground; for(inti=0;i<42;i++) { showDay[i]=newJTextField();ddMouseListener(this);etEditable(false);xt"); if(!()) (); (); } catch(IOExceptione) {} notepad=newNotePad(this); (notepad); 設(shè)置日歷牌(year,month); addWindowListener(newWindowAdapter()et(year,month-1,1); 星期幾=日歷.get-1; if(month==1||month==2||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); if(n==day) { showDay[i].setForeground; showDay[i].setFont(newFont("TimesRoman",,20)); } else { showDay[i].setFont(newFont("TimesRoman",,12)); showDay[i].setForeground; } if(i%7==6) { showDay[i].setForeground; } if(i%7==0) { showDay[i].setForeground; } n++; } for(inti=0;i<星期幾;i++) { showDay[i].setText(""); } for(inti=星期幾+月天數(shù);i<42;i++) { showDay[i].setText(""); } } publicintgetYear() { returnyear; } publicvoidsetYear(inty) { year=y; (year); } publicintgetMonth() { returnmonth; } publicvoidsetMonth(intm) { month=m; (month); } publicintgetDay() { returnday; } publicvoidsetDay(intd) { day=d; (day); } publicHashtablegetHashtable() { returnhashtable; } publicFilegetFile() { returnfile; } publicvoidmousePressed(MouseEvente) { JTextFieldsource=(JTextField)(); try { day=()); (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=();歷=日歷;etYear();ddActionListener(this); 明年.addActionListener(this); } publicvoidsetYear(intyear) { =year; (""+year);etYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth()); } elseif()==明年) { year=year+1; (""+year); 日歷.setYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth()); } elseif()==showYear) { try { year=()); (""+year); 日歷.setYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth()); } catch(NumberFormatExceptionee) { (""+year); 日歷.setYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth()); } } }}classMonthextendsBoximplementsActionListener{ intmonth; JTextFieldshowMonth=null; JButton下月,上月; CalendarPad日歷; publicMonth(CalendarPad日歷) { super; this.日歷=日歷; showMonth=newJTextField(2); month=日歷.getMonth(); (false); ; (newFont("TimesRomn",,16)); 下月=newJButton("下月"); 上月=newJButton("上月"); add(上月); add(showMonth); add(下月); 上月.addActionListener(this); 下月.addActionListener(this); (""+month); } publicvoidsetMonth(intmonth) { if(month<=12&&month>=1) { =month; } else { =1; } (""+month); } publicintgetMonth() { returnmonth; } publicvoidactionPerformed(ActionEvente) { if()==上月) { if(month>=2) { month=month-1; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); } elseif(month==1) { month=12; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); } (""+month); } elseif()==下月) { if(month<12) { month=month+1; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); } elseif(month==12) { month=1; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); } (""+month); } }}classNotePadextendsJPanelimplementsActionListener{ JTextAreatext; JButton保存日志,刪除日志; Hashtabletable; JLabel信息條; intyear,month,day; Filefile; CalendarPadcalendar; publicNotePad(CalendarPadcalendar) { =calendar; year=(); month=(); day=(); table=(); file=(); 信息條=newJLabel(""+year+"年"+month+"月"+day+"日",; 信息條.setFont(newFont("TimesRoman",,16)); 信息條.setForeground; text=newJTextArea(10,10); 保存日志=newJButton("保存日志"); 刪除日志=newJButton("刪除日志"); 保存日志.addActionListener(this); 刪除日志.addActionListener(this); setLayout(newBorderLayout()); JPanelpSouth=newJPanel(); add(信息條,; (保存日志); (刪除日志); add(pSouth,; add(newJScrollPane(text),; } publicvoidactionPerformed(ActionEvente) { if()==保存日志) { 保存日志(year,month,day); } elseif()==刪除日志) { 刪除日志(year,month,day); } } publicvoidsetYear(intyear) { =year; } publicintgetYear() { returnyear; } publicvoidsetMonth(intmonth) { =month; } publicintgetMonth() { returnmonth; } publicvoidsetDay(intday) { =day; } publicintgetDay() { returnday; } publicvoid設(shè)置信息條(intyear,intmonth,intday) { 信息條.setText(""+year+"年"+month+"月"+day+"日"); } publicvoid設(shè)置文本區(qū)(Strings) { (s); } publicvoid獲取日志內(nèi)容(intyear,intmonth,intday) { Stringkey=""+year+""+month+""+day; try { FileInputStreaminOne=newFileInputStream(file); ObjectInputStreaminTwo=newObjectInputStream(inOne); table=(Hashtable)(); (); (); } catch(Exceptionee) {} if(key)){Stringm=""+year+"年"+month+"月"+day+"這一天有日志記載,想看嗎";intok=(this,m,"詢問",,;if(ok=={ Stringstr=(null,"請輸入密碼","消息對話框",;longnum=(str); if(num!=123456){ (this,"密碼不正確!","確認(rèn)對話框",; } elseif(num==123456){ intn=(this,"確認(rèn)正確嗎","確認(rèn)對話框",; ((String)(key)); } }else{("");}}else{("無記錄");}} publicvoid保存日志(intyear,intmonth,intday) { String日志內(nèi)容=(); Stringkey=""+year+""+month+""+day; Stringm=""+year+"年"+month+"月"+day+"保存日志嗎"; intok=(this,m,"詢問",,; if(ok== { try { FileInputStreaminOne=newFileInputStream(file); ObjectInputStreaminTwo=newObjectInputStream(inOne); table=(Hashtable)(); (); (); (key,日志內(nèi)容); FileOutputStreamout=newFileOutputStream(file); ObjectOutputStreamobjectOut=newObjectOutputStream(out); (table); (); (); } catch(Exceptionee) {} } } publicvoid刪除日志(intyear,intmonth,intday) { Stringkey=""+year+""+month+""+day; if(key)) { Stringm="刪除"+year+"年"+month+"月"+day+"日的日志嗎"; intok=(this,m,"詢問",,; if(ok== { try { FileInputStreaminOne=newFileInputStream(file); ObjectInputStreaminTwo=newO
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年津智資本面向社會招聘天津國康信用增進(jìn)有限公司副總經(jīng)理(首席風(fēng)險官)的備考題庫及一套完整答案詳解
- 2025年上海市同濟(jì)口腔醫(yī)院(同濟(jì)大學(xué)附屬口腔醫(yī)院)實驗技術(shù)員招聘備考題庫參考答案詳解
- 企業(yè)員工安全培訓(xùn)計劃(4篇)
- 2025年上海市精神衛(wèi)生中心神經(jīng)內(nèi)科醫(yī)師招聘備考題庫及1套完整答案詳解
- 江西中醫(yī)藥大學(xué)2026年高層次人才招聘159人備考題庫含答案詳解
- 2025年永康市中醫(yī)院兒童康復(fù)治療師招聘備考題庫參考答案詳解
- 2025年材料科學(xué)與工程學(xué)院招聘科研助理備考題庫及一套完整答案詳解
- 關(guān)于教師經(jīng)驗交流大會主題的教師發(fā)言稿材料五篇
- 2025年湖北省醫(yī)學(xué)會招聘備考題庫完整答案詳解
- 四川省大英中學(xué)2025年臨聘教師招聘備考題庫及參考答案詳解一套
- 燒結(jié)板生產(chǎn)除塵設(shè)備維護(hù)指南
- 婦聯(lián)法律知識講座內(nèi)容
- 人教版(2024)九年級全一冊物理全冊教案
- 食堂稱菜管理辦法
- 洪恩識字1-1300字文檔
- 2024年山東省汶上縣煙草公開招聘工作人員試題帶答案詳解
- 臨時用地復(fù)墾管理辦法
- 旅游景區(qū)廁所管理制度
- 深靜脈置管的并發(fā)癥與護(hù)理講課件
- 社區(qū)樓道長管理制度
- 溫泉酒店安全管理制度
評論
0/150
提交評論