版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、動態(tài)基礎(chǔ)程序設(shè)計(jì)課程設(shè)計(jì)班級:學(xué)生卡:姓名:主題:日歷記事本導(dǎo)師:答復(fù)日期: 任務(wù)詳情解釋老師布置的題目、要求和最終結(jié)果。 (需與老師密切溝通)設(shè)計(jì)主題:日歷記事本設(shè)計(jì)要求:1.類之間的關(guān)系如圖1-1所示。 (添加類圖)CalendarPadCalendarPad(主類)NotePadYearMonth圖 1-1 類之間的關(guān)系2、java源文件及其功能如表1-1所示。表 1-1 java 源文件及其功能序列號文件名主要功能評論1CalendarPad.java程序主窗口創(chuàng)建實(shí)用萬年歷記事本包含主要方法2記事本.java該文件負(fù)責(zé)創(chuàng)建記事本3年份.java該文件負(fù)責(zé)創(chuàng)建管理年份的對象4月.jav
2、a該文件負(fù)責(zé)創(chuàng)建管理月份的類對象系統(tǒng)詳細(xì)設(shè)計(jì)主類CalendarPad1.成員變量成員變量說明變量類型姓名年月日整數(shù)年、月、日用于保存日志的哈希表哈希表哈希表存儲哈希表的文件文件文件演出日期JTextField表演日日歷對象日歷日歷記事本對象記事本記事本月亮月負(fù)責(zé)任的變革月年年負(fù)責(zé)改年2.方法姓名功能評論日歷墊創(chuàng)建程序的主窗口施工方法設(shè)置日歷卡設(shè)置日歷的年月安排按月排序鼠標(biāo)按下處理 MouseEvent 事件接口方法面程序開始運(yùn)行記事本記事本1.成員變量描述變量類型姓名文字輸入?yún)^(qū)文本區(qū)域文本保存和刪除日志的按鈕按鈕保存日志,刪除日志用于保存日志的哈希表哈希表桌子保存哈希表的文件文件文件日志的年
3、月日整數(shù)年、月、日_2.方法姓名功能評論記事本創(chuàng)建記事本對象施工方法設(shè)置年設(shè)定年份獲取年份獲得年份設(shè)置月設(shè)置月份獲取月份獲得月份設(shè)置日設(shè)置日期獲取日獲取日期獲取日志內(nèi)容獲取日志內(nèi)容保存日志保存日志刪除日志刪除日志執(zhí)行的動作處理 ActionEvent 事件接口方法年1.成員變量描述變量類型姓名表示年份的整數(shù)(負(fù)數(shù)表示 BC)整數(shù)年顯示年份的文本欄JTextField演出年負(fù)責(zé)加減年份的按鈕烏頓明年,去年2.方法姓名功能評論年創(chuàng)建一個(gè)“年份”對象施工方法設(shè)置年設(shè)定年份獲取年份獲得年份執(zhí)行的動作處理 ActionEvent 事件接口方法月1.成員變量描述變量類型姓名代表月份的整數(shù)(負(fù)數(shù)代表 BC)
4、整數(shù)月顯示月份的文本欄JTextField秀月負(fù)責(zé)加減月份的按鈕烏頓上個(gè)月,下個(gè)月2.方法姓名功能評論月創(chuàng)建一個(gè)“月”對象施工方法設(shè)置月份設(shè)置月份獲取月份獲得月份執(zhí)行的動作處理 ActionEvent 事件接口方法任務(wù)分析針對老師的題目,說說為實(shí)現(xiàn)題目內(nèi)容而進(jìn)行的分析。: 日歷記事本的主類(Calendar;swing;awt;awt.event;io;Hashtable):筆記本(日歷;swing;awt;awt.event;io;swing.event;):年(javax.swing;java.awt.java.awt.event):月亮(javax.swing;java.awt.java
5、.awt.event)任務(wù)解決過程和方法源程序列表主類 CalendarPad:CalendarPad.Java _ _導(dǎo)入 java.util.Calendar;導(dǎo)入 javax.swing.*;導(dǎo)入 java.awt.*;導(dǎo)入 java.awt.event.*;導(dǎo)入java.io.*;導(dǎo)入 java.util.Hashtable;公共類 CalendarPad 擴(kuò)展 JFrame 實(shí)現(xiàn) MouseListenerint 年、月、日;哈希表哈希表;檔案檔案;JTextField showDay;JLabel 標(biāo)題;日歷日歷;int 星期幾;記事本記事本=空;Month 負(fù)責(zé)更改月份;Year
6、 負(fù)責(zé)更改年份;String Week=星期日,星期一,星期二,星期三,星期四,星期五,星期六;JPanel 左面板,右面板;public CalendarPad(int year,int month,int day)leftPanel=新JPanel();JPanel leftCenter=new JPanel();JPanel leftNorth=new JPanel();leftCenter.setLayout(new GridLayout(7,7);右面板=新 JPanel();this.year=年;this.month=月;這天=天;負(fù)責(zé)更改年份 = new Year(this);
7、負(fù)責(zé)更改year.setYear(year);負(fù)責(zé)更改月份 = new Month(this);負(fù)責(zé)更改month.setMonth(month);標(biāo)題=新的 JLabel7;showDay=新的 JTextField42;for(int j=0;j7;j+)標(biāo)題j=新的 JLabel();標(biāo)題j.setText(周j);標(biāo)題j.setBorder(BorderFactory.createRaisedBevelBorder();leftCenter.add(titlej);標(biāo)題0.setForeground(Color.red);標(biāo)題6.setForeground(Color.blue);fo
8、r(int i=0;i42;i+)showDayi=new JTextField();showDayi.addMouseListener(this);showDayi.setEditable(false);leftCenter.add(showDayi);日歷=Calendar.getInstance();Box box=Box.createHorizontalBox();box.add(負(fù)責(zé)改變年);box.add(負(fù)責(zé)改變月);leftNorth.add(box);leftPanel.setLayout(new BorderLayout();leftPanel.add(leftNorth,
9、BorderLayout.NORTH);leftPanel.add(leftCenter,BorderLayout.CENTER);leftPanel.add(new Label(請?jiān)谀攴葺斎肟蛑休斎肽檎业哪攴?負(fù)數(shù)表示BC),回車確認(rèn)),邊框布局.SOUTH) ;leftPanel.validate();容器 con=getContentPane();JSplitPane 拆分=新 JSplitPane(JSplitPane.HORIZONTAL_SPLIT,左面板,右面板);con.add(split,BorderLayout.CENTER);con.validate();哈希表=新哈
10、希表();file=new File(日歷記事本.txt);if(!file.exists()嘗試文件輸出流輸出=新文件輸出流(文件);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(哈希表);objectOut.close();out.close();捕獲(IOException e)記事本=新記事本(本);rightPanel.add(記事本);日歷設(shè)置牌(年、月);addWindowListener(new WindowAdapter() public void windowCl
11、osing(WindowEvent e)System.exit(0););設(shè)置可見(真);設(shè)置邊界(100,50,524,285);證實(shí)();public void 設(shè)置日歷卡片(int year,int month)Calendar.set(year,month-1,1);星期幾 = calendar.get(Calendar.DAY_OF_WEEK)-1;if(月=1|月=2|月=3|月=5|月=7|月=8|月=10|月=12)數(shù)組(星期幾,31);else if(月=4|月=6|月=9|月=11)數(shù)組(星期幾,30);否則如果(月=2)if(年%4=0&年%100!=0)|(年%400=
12、0)數(shù)組(星期幾,29);別的數(shù)組(星期幾,28);公共無效數(shù)組(int 星期幾,int 月份日期)for(int i=星期幾, n=1; i星期幾 + 月份日期; i+) showDayi.setText(+n);如果(n=天) showDayi.setForeground(Color.green);showDayi.setFont(new Font(TimesRoman,Font.BOLD,20);別的 showDayi.setFont(new Font(TimesRoman,Font.BOLD,12);showDayi.setForeground(Color.black);如果(i%7=
13、6) showDayi.setForeground(Color.blue);如果(i%7=0)showDayi.setForeground(Color.red);n+;for(int i=0;i幾星期;i+)showDayi.setText();for(int i=幾周幾+月天數(shù);i42;i+) showDayi.setText();公共 int getYear()返回年份;公共無效 setYear(int y)年=y;notepad.setYear(年);公共 int getMonth()返回月份;公共無效 setMonth(int m)月=m;notepad.setMonth(月);公共
14、int getDay()返回日;公共無效 setDay(int d)天=d;notepad.setDay(day);公共哈希表 getHashtable() 返回哈希表;公共文件獲取文件()返回文件;public void mousePressed(MouseEvent e)JTextField 源=(JTextField)e.getSource();嘗試day=Integer.parseInt(source.getText();notepad.setDay(day);notepad.set infobar(年,月,日);notepad.settextarea(null);notepad.獲取
15、日志內(nèi)容(年、月、日);捕獲(異常 ee)public void mouseClicked(MouseEvent e)public void mouseReleased(MouseEvent e)public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)公共靜態(tài)無效主(字符串參數(shù) )日歷日歷=Calendar.getInstance();int y=calendar.get(Calendar.YEAR);int m=calendar.get(Calendar.MONTH)+1;int d=calenda
16、r.get(Calendar.DAY_OF_MONTH);新日歷墊(y,m,d);記事本記事本:記事本.java導(dǎo)入 java.awt.*;導(dǎo)入 java.awt.event.*;導(dǎo)入 java.util.*;導(dǎo)入 javax.swing.*;導(dǎo)入 javax.swing.event.*;導(dǎo)入java.io.*;公共類 NotePad 擴(kuò)展 JPanel 實(shí)現(xiàn) ActionListenerJTextArea 文本;utton保存日志,刪除日志;哈希表;JLabel 信息欄;int 年、月、日;檔案檔案;CalendarPad 日歷;公共記事本(CalendarPad 日歷)this.calen
17、dar=日歷;年=日歷.getYear();月=日歷.getMonth();天=日歷.getDay();表=日歷.getHashtable();文件=日歷.getFile();信息欄=new JLabel(+year+year+month+month+day+day,JLabel.CENTER);InfoBar.setFont(new Font(TimesRoman,Font.BOLD,16);infobar.setForeground(Color.blue);文本=新的 JTextArea(10,10);保存日志=new utton(保存日志);刪除日志=new utton(刪除日志);保存
18、 log.addActionListener(this);刪除 log.addActionListener(this);設(shè)置布局(新邊框布局();JPanel pSouth=新 JPanel();add(信息欄, BorderLayout.NORTH);pSouth.add(保存日志);pSouth.add(刪除日志);添加(pSouth,BorderLayout.SOUTH);添加(新的 JScrollPane(文本),BorderLayout.CENTER);公共無效actionPerformed(ActionEvent e)if(e.getSource()=保存日志)保存日志(年、月、日
19、);else if(e.getSource()= 刪除日志)刪除日志(年、月、日);public void setYear(int year) this.year=year;公共 int getYear()返回年份;公共無效 setMonth(int 月) this.month=月;公共 int getMonth()返回月份;public void setDay(int day) this.day=day;公共 int getDay()返回日;public void 設(shè)置信息條(int year,int month,int day)信息欄.setText(+year+year+month+mo
20、nth+day+day);public void 設(shè)置文本區(qū)域(String s)text.setText(s);public void 獲取日志內(nèi)容(int year,int month,int day)String key=+year+month+day;嘗試FileInputStream inOne=new FileInputStream(file);ObjectInputStream inTwo=new ObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();捕獲(
21、異常 ee)if(table.containsKey(key) String m=+year+year+month+month+day+這天有日志記錄,要不要看?;int ok=JOptionPane.showConfirmDialog(this,m,ask,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)text.setText(String)table.get(key);別的 text.setText();別的 text.setText(無記錄);公共無效保存日志(in
22、t年,int月,int日)字符串日志內(nèi)容=text.getText();字符串鍵=+年+月+日;String m=+year+year+month+month+day+保存日志?;int ok=JOptionPane.showConfirmDialog(this,m,ask,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)嘗試FileInputStream inOne=new FileInputStream(file);ObjectInputStream inTwo=new
23、 ObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();table.put(key,日志容);文件輸出流輸出=新文件輸出流(文件);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(table);objectOut.close();out.close();捕獲(異常 ee)公共無效刪除日志(int年,int月,int日) String key=+year+month
24、+day;if(table.containsKey(key) String m=刪除+year+year+month+month+day+day?的日志;int ok=JOptionPane.showConfirmDialog(this,m,ask,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)嘗試FileInputStream inOne=new FileInputStream(file);ObjectInputStream inTwo=new ObjectInputS
25、tream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();table.remove(key);文件輸出流輸出=新文件輸出流(文件);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(table);objectOut.close();out.close();text.setText(null);捕獲(異常 ee)別的 String m=+year+year+month+month+day+no
26、logging;JOptionPane.showMessageDialog(this,m,prompt,JOptionPane.WARNING_MESSAGE);年:年份.java導(dǎo)入 javax.swing.*;導(dǎo)入 java.awt.*;導(dǎo)入 java.awt.event.*;公共類 Year 擴(kuò)展 Box 實(shí)現(xiàn) ActionListenerint 年;JTextField showYear=null;明年烏頓,去年;CalendarPad 日歷;公共年(CalendarPad 日歷) 超級(BoxLayout.X_AXIS);showYear=新的 JTextField(4);showY
27、ear.setForeground(Color.blue);showYear.setFont(new Font(TimesRomn,Font.BOLD,14);this.calendar = 日歷;年=日歷.getYear();明年=新烏頓(“明年”);去年=新烏頓(“去年”);添加(去年);添加(顯示年份);添加(明年);showYear.addActionListener(this);last.addActionListener(this);next.addActionListener(this);public void setYear(int year)this.year=年;showY
28、ear.setText(+年份);公共 int getYear()回歸年份;公共無效actionPerformed(ActionEvent e) if(e.getSource()=last)年=年-1;showYear.setText(+年份);Calendar.setYear(年);日歷。設(shè)置日歷卡(年,日歷。getMonth();else if(e.getSource()=明年)年=年+1;showYear.setText(+年份);Calendar.setYear(年);日歷。設(shè)置日歷卡(年,日歷。getMonth();否則如果(e.getSource()=showYear) 嘗試年=整
29、數(shù).parseInt(showYear.getText();showYear.setText(+年份);Calendar.setYear(年);日歷。設(shè)置日歷卡(年,日歷。getMonth();捕獲(NumberFormatException ee)showYear.setText(+年);Calendar.setYear(年);日歷。設(shè)置日歷卡(年,日歷。getMonth();月:月.java導(dǎo)入 javax.swing.*;導(dǎo)入 java.awt.*;導(dǎo)入 java.awt.event.*;公共類 Month 擴(kuò)展 Box 實(shí)現(xiàn) ActionListenerint 月;JTextField
30、 showMonth=null;utton 下個(gè)月,上個(gè)月;CalendarPad 日歷;公共月份(CalendarPad 日歷)超級(BoxLayout.X_AXIS);this.calendar = 日歷;showMonth=新的 JTextField(2);月=日歷.getMonth();showMonth.setEditable(false);showMonth.setForeground(Color.blue);showMonth.setFont(new Font(TimesRomn,Font.BOLD,16);下個(gè)月=new utton(下個(gè)月);上個(gè)月=new utton(上個(gè)月
31、);添加(上個(gè)月);添加(顯示月);添加(下個(gè)月);上個(gè)月.addActionListener(this);下個(gè)月.addActionListener(this);showMonth.setText(+月);公共無效 setMonth(int 月)if(月=1)this.month=月;別的 this.month=1;showMonth.setText(+月);公共 int getMonth()返回月份;公共無效actionPerformed(ActionEvent e) if(e.getSource()= 上個(gè)月) 如果(月=2)月=月-1;Calendar.setMonth(月);日歷。設(shè)
32、置日歷卡片(Calendar.getYear(),month);否則如果(月=1)月=12;Calendar.setMonth(月);日歷。設(shè)置日歷卡片(Calendar.getYear(),month);showMonth.setText(+月);else if(e.getSource()=下個(gè)月) 如果(月12)月=月+1;Calendar.setMonth(月);日歷。設(shè)置日歷卡片(Calendar.getYear(),month);否則如果(月=12)月=1;Calendar.setMonth(月);日歷。設(shè)置日歷卡片(Calendar.getYear(),month);showMon
33、th.setText(+月);試運(yùn)行結(jié)果如下:總結(jié)課程設(shè)計(jì)的總結(jié)和經(jīng)驗(yàn)主要講遇到的關(guān)鍵問題怎么解決,用什么方法,參考什么資料。:在這個(gè)為期一周的課程設(shè)計(jì)中,我們組的課題項(xiàng)目是日歷記事本( CalendarPad.java )。作為組長,我親自邀請了Ying寫CalendarPad.java的代碼,我們通過netbeans軟件編寫了這個(gè)項(xiàng)目。在編寫代碼的過程中,我們遇到了諸如此類的問題。我請老師一起討論。雖然大家的Java學(xué)習(xí)沒有想象中的那么好,但是大家都在盡全力去完成,尤其是最后。合并后我們發(fā)現(xiàn)可視化窗口底部的文字顯示部分有一個(gè)很大的漏洞。我們查了好幾遍源碼,發(fā)現(xiàn)沒有錯誤,也沒有放棄。我們發(fā)現(xiàn)
34、問題可能出在編碼上,于是嘗試使用font.java類包進(jìn)行修改,發(fā)現(xiàn)還是不行。然后我們開始考慮邊框的大小,但還是以失敗告終;最后問老師,發(fā)現(xiàn)只有netbeans的軟件不支持這種編碼,問題就輕松解決了。這門課程的設(shè)計(jì)讓我明白了理論與實(shí)踐相結(jié)合的重要性。僅有理論知識是不夠的,團(tuán)隊(duì)之間的配合和成員之間的默契也很重要,這對我以后的工作養(yǎng)成良好的習(xí)慣非常重要。:通過一周的時(shí)間給CalendarPad寫信。 Java ,此文件創(chuàng)建一個(gè)記事本,包括對記事本的輸入,保存刪除日志的按鈕,保存日志哈希表和包含日志的年、月和日的文件。利用 java.awt 類的使用。使用類創(chuàng)建記事本,輸入文本并保存日志,編輯日志的年月日,設(shè)置代碼,進(jìn)一步加深對java
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 居民建議書小區(qū)社區(qū)活動改進(jìn)3篇
- 換熱機(jī)組招標(biāo)項(xiàng)目招標(biāo)3篇
- 安居房施工合同風(fēng)險(xiǎn)防范策略分享3篇
- 招標(biāo)進(jìn)行時(shí)實(shí)驗(yàn)室研究3篇
- 工程外包合同樣本3篇
- 搬家公司合同范本3篇
- 旅游包車司機(jī)勞動合同3篇
- 工業(yè)材料銷售書3篇
- 撤銷授權(quán)委托書的合同效力3篇
- 醫(yī)療器械電力供應(yīng)協(xié)議指南
- GB/T 23640-2009往復(fù)式內(nèi)燃機(jī)(RIC)驅(qū)動的交流發(fā)電機(jī)
- GB/T 19610-2004卷煙通風(fēng)的測定定義和測量原理
- GB/T 11017.1-2002額定電壓110kV交聯(lián)聚乙烯絕緣電力電纜及其附件第1部分:試驗(yàn)方法和要求
- 馬工程《教育學(xué)原理》課后習(xí)題講解
- 茶藝表演費(fèi)課件
- 創(chuàng)建電力優(yōu)質(zhì)工程策劃及控制課件
- DBJ61-T 104-2015 陜西省村鎮(zhèn)建筑抗震設(shè)防技術(shù)規(guī)程-(高清版)
- 外研版(三起)小學(xué)英語四年級上冊教案(全冊)
- 小學(xué)生體育學(xué)習(xí)評價(jià)表
- 哈爾濱工業(yè)大學(xué)信紙模版
- 踝關(guān)節(jié)扭傷.ppt
評論
0/150
提交評論