版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目錄1、引言111項(xiàng)目的名稱112項(xiàng)目背景和目標(biāo)113項(xiàng)目的可行性研究22、需求分析221系統(tǒng)概述222系統(tǒng)運(yùn)行環(huán)境223功能需求描述23、總體設(shè)計(jì)331開發(fā)與設(shè)計(jì)的總體思想332系統(tǒng)模塊結(jié)構(gòu)圖333模塊設(shè)計(jì)334系統(tǒng)流程描述34、詳細(xì)設(shè)計(jì)441主界面模塊442模塊設(shè)計(jì)443代碼部分544 各主要模塊介紹185、 實(shí)現(xiàn)和源程序206、課程設(shè)計(jì)心得與體會207、參考文獻(xiàn)211、引言11項(xiàng)目的名稱日記記事本12項(xiàng)目背景和目標(biāo) 目前,很多新的技術(shù)領(lǐng)域都涉及到了Java語言,Java語言是面向?qū)ο缶幊?,并涉及到網(wǎng)絡(luò)、多線程等重要的基礎(chǔ)知識,因此Java語言也是學(xué)習(xí)面向?qū)ο缶幊毯途W(wǎng)絡(luò)編程的首選語言。按照
2、教學(xué)培養(yǎng)計(jì)劃要求,學(xué)生在學(xué)習(xí)完課本中指定課時的知識后,應(yīng)安排一定課時的課程設(shè)計(jì)。其主要目的是使學(xué)生深入理解并實(shí)踐在本課程中所學(xué)的有關(guān)JAVA程序設(shè)計(jì)方面的語言基礎(chǔ)、異常處理、事件處理、小應(yīng)用程序以及圖形用戶界面設(shè)計(jì)等。故此“日歷記事本”應(yīng)運(yùn)而生。本課程設(shè)計(jì)是為了配合Java程序設(shè)計(jì)課程,幫助學(xué)生深入學(xué)習(xí)掌握J(rèn)ava語言,熟練運(yùn)用這個工具而設(shè)立的課程。通過課程設(shè)計(jì)各個項(xiàng)目的綜合訓(xùn)練,加強(qiáng)學(xué)生對JAVA語言的理解,檢驗(yàn)學(xué)生對專業(yè)理論知識理解與掌握的程度,鍛煉學(xué)生綜合運(yùn)用JAVA程序設(shè)計(jì)處理所學(xué)的知識實(shí)際分析問題、解決問題的能力,使課堂上的理論在實(shí)踐中得到運(yùn)用,提高學(xué)生的綜合素質(zhì),為學(xué)生畢業(yè)后的實(shí)際
3、工作打好基礎(chǔ)。同時也滿足了大多數(shù)同學(xué)對于一款簡單易用的日記本軟件的需求。13項(xiàng)目的可行性研究 基于本學(xué)期所學(xué)到的各知識點(diǎn),本程序在理論上完全可以完成。2、需求分析21系統(tǒng)概述 用戶可以向前翻頁查詢前一個月的日期,也可以向后翻頁查詢下一個月的日期;用戶可以針對某一天來添加,刪除和編輯這一天的日程提醒信息,當(dāng)系統(tǒng)時間和提醒時間相吻合時,給出具有提示信息的對話框;用戶可以查詢到某個月的所有的提示信息。是一個平時寫日記、備忘錄的好工具。22系統(tǒng)運(yùn)行環(huán)境1.硬件環(huán)境處理器:Inter Pentium 166MX 或更高內(nèi)存: 32M以上硬盤空間:1GB以上顯卡:SVGA顯示適配器2.軟件環(huán)境操作系統(tǒng):
4、Windows 98/ME/2000/XP23功能需求描述 日歷記事本的總體目標(biāo)是為使用者記錄、管理個人日記以及每日心里路程,其中主要實(shí)現(xiàn)以下功能1、顯示信息:用戶可以向前翻頁查詢前一個月的日期,也可以向后翻頁查詢下一個月的日期。2、定時提醒:用戶可以針對某一天來添加,刪除和編輯這一天的日程提醒信息,當(dāng)系統(tǒng)時間和提醒時間相吻合時,給出具有提示信息的對話框。3、查詢信息:用戶可以查詢到某個月的所有的提示信息。3、總體設(shè)計(jì)31開發(fā)與設(shè)計(jì)的總體思想 創(chuàng)建主類CalendarPad控制整個程序的調(diào)控與連接,該類負(fù)責(zé)創(chuàng)建本日歷記事本程序的主窗口,含有main方法,程序從該類開始執(zhí)行。并創(chuàng)建Year、Mo
5、nth、NotePad三個類分別負(fù)責(zé)年份、月份以及記事本的創(chuàng)建及管理。CalendarPad32系統(tǒng)模塊結(jié)構(gòu)圖NotePadMonthYear33模塊設(shè)計(jì)年份模塊該模塊負(fù)責(zé)年份的創(chuàng)建及管理 開始34系統(tǒng)流程描述程序初始化獲取當(dāng)前系統(tǒng)時間年份等數(shù)據(jù)計(jì)算,繪制屏幕創(chuàng)建保存日記文件結(jié)束4、詳細(xì)設(shè)計(jì)設(shè)置日歷牌41主界面模塊CalendarPad 排列號碼 mousePressed 事件42模塊設(shè)計(jì)CalendarPad模塊負(fù)責(zé)該類負(fù)責(zé)創(chuàng)建本日歷記事本程序的主窗口,含有main方法,程序從該類開始執(zhí)行;Year模塊負(fù)責(zé)管理創(chuàng)建年份的對象;Month模塊負(fù)責(zé)管理創(chuàng)建月份的對象;NotePad模塊負(fù)責(zé)創(chuàng)建記
6、事本。43代碼部分CalendarPad.javaimport java.util.Calendar;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.Hashtable;public class CalendarPad extends JFrame implements MouseListener super("日記本(kevins版)"); int year,month,day; Hashtable hashtable; Fil
7、e file; JTextField showDay; JLabel title; Calendar 日歷; int 星期幾; NotePad notepad=null; Month 負(fù)責(zé)改變月; Year 負(fù)責(zé)改變年; String 星期="星期日","星期一","星期二","星期三","星期四","星期五","星期六" JPanel leftPanel,rightPanel; public CalendarPad(int year,int month,
8、int day) leftPanel=new JPanel(); JPanel leftCenter=new JPanel(); JPanel leftNorth=new JPanel(); leftCenter.setLayout(new GridLayout(7,7); rightPanel=new JPanel(); this.year=year; this.month=month; this.day=day; 負(fù)責(zé)改變年=new Year(this); 負(fù)責(zé)改變年.setYear(year); 負(fù)責(zé)改變月=new Month(this); 負(fù)責(zé)改變月.setMonth(month);
9、title=new JLabel7; showDay=new JTextField42; for(int j=0;j<7;j+) titlej=new JLabel(); titlej.setText(星期j); titlej.setBorder(BorderFactory.createRaisedBevelBorder(); leftCenter.add(titlej); title0.setForeground(Color.red); title6.setForeground(Color.blue); for(int i=0;i<42;i+) showDayi=new JTex
10、tField(); 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,BorderLayout.NORTH); lef
11、tPanel.add(leftCenter,BorderLayout.CENTER); leftPanel.add(new Label("請?jiān)谀攴葺斎肟蜉斎胨槟攴?負(fù)數(shù)表示公元前),并回車確定"), BorderLayout.SOUTH) ; leftPanel.validate(); Container con=getContentPane(); JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel,rightPanel); con.add(split,BorderLayout.CE
12、NTER); con.validate(); hashtable=new Hashtable(); file=new File("日歷記事本.txt"); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(hashtable); objectOut.close(); out.close(); catch(IOException
13、 e) notepad=new NotePad(this); rightPanel.add(notepad); 設(shè)置日歷牌(year,month); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,524,285); validate(); public void 設(shè)置日歷牌(int year,int month) 日歷.set(year,month-1,1); 星期幾=日歷.g
14、et(Calendar.DAY_OF_WEEK)-1; if(month=1|month=2|month=3|month=5|month=7 |month=8|month=10|month=12) 排列號碼(星期幾,31); else if(month=4|month=6|month=9|month=11) 排列號碼(星期幾,30); else if(month=2) if(year%4=0&&year%100!=0)|(year%400=0) 排列號碼(星期幾,29); else 排列號碼(星期幾,28); public void 排列號碼(int 星期幾,int 月天數(shù))
15、for(int i=星期幾,n=1;i<星期幾+月天數(shù);i+) showDayi.setText(""+n); if(n=day) showDayi.setForeground(Color.green); showDayi.setFont(new Font("TimesRoman",Font.BOLD,20); else showDayi.setFont(new Font("TimesRoman",Font.BOLD,12); showDayi.setForeground(Color.black); if(i%7=6) show
16、Dayi.setForeground(Color.blue); if(i%7=0) showDayi.setForeground(Color.red); n+; for(int i=0;i<星期幾;i+) showDayi.setText(""); for(int i=星期幾+月天數(shù);i<42;i+) showDayi.setText(""); public int getYear() return year; public void setYear(int y) year=y; notepad.setYear(year); public i
17、nt getMonth() return month; public void setMonth(int m) month=m; notepad.setMonth(month); public int getDay() return day; public void setDay(int d) day=d; notepad.setDay(day); public Hashtable getHashtable() return hashtable; public File getFile() return file; public void mousePressed(MouseEvent e)
18、JTextField source=(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(Exception ee) public void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) public v
19、oid mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public static void main(String args) Calendar calendar=Calendar.getInstance(); int y=calendar.get(Calendar.YEAR); int m=calendar.get(Calendar.MONTH)+1; int d=calendar.get(Calendar.DAY_OF_MONTH); new CalendarPad(y,m,d); Month.javaim
20、port javax.swing.*;import java.awt.*;import java.awt.event.*;public class Month extends Box implements ActionListener int month; JTextField showMonth=null; JButton 下月,上月; CalendarPad 日歷; public Month(CalendarPad 日歷) super(BoxLayout.X_AXIS); this.日歷=日歷; showMonth=new JTextField(2); month=日歷.getMonth(
21、); showMonth.setEditable(false); showMonth.setForeground(Color.blue); showMonth.setFont(new Font("TimesRomn",Font.BOLD,16); 下月=new JButton("下月"); 上月=new JButton("上月"); add(上月); add(showMonth); add(下月); 上月.addActionListener(this); 下月.addActionListener(this); showMonth.se
22、tText(""+month); public void setMonth(int month) if(month<=12&&month>=1) this.month=month; else this.month=1; showMonth.setText(""+month); public int getMonth() return month; public void actionPerformed(ActionEvent e) if(e.getSource()=上月) if(month>=2) month=month
23、-1; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); else if(month=1) month=12; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); showMonth.setText(""+month); else if(e.getSource()=下月) if(month<12) month=month+1; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); else if(month=12) month
24、=1; 日歷.setMonth(month); 日歷.設(shè)置日歷牌(日歷.getYear(),month); showMonth.setText(""+month); Year.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class Year extends Box implements ActionListener int year; JTextField showYear=null; JButton 明年,去年; CalendarPad 日歷; public Year(
25、CalendarPad 日歷) super(BoxLayout.X_AXIS); showYear=new JTextField(4); showYear.setForeground(Color.blue); showYear.setFont(new Font("TimesRomn",Font.BOLD,14); this.日歷=日歷; year=日歷.getYear(); 明年=new JButton("下年"); 去年=new JButton("上年"); add(去年); add(showYear); add(明年); show
26、Year.addActionListener(this); 去年.addActionListener(this); 明年.addActionListener(this); public void setYear(int year) this.year=year; showYear.setText(""+year); public int getYear() return year; public void actionPerformed(ActionEvent e) if(e.getSource()=去年) year=year-1; showYear.setText(&qu
27、ot;"+year); 日歷.setYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth(); else if(e.getSource()=明年) year=year+1; showYear.setText(""+year); 日歷.setYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth(); else if(e.getSource()=showYear) try year=Integer.parseInt(showYear.getText(); showYear.setText(""+year)
28、; 日歷.setYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth(); catch(NumberFormatException ee) showYear.setText(""+year); 日歷.setYear(year); 日歷.設(shè)置日歷牌(year,日歷.getMonth(); NotePad.javaimport java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.event.*;import java.io
29、.*;public class NotePad extends JPanel implements ActionListener JTextArea text; JButton 保存日志,刪除日志; Hashtable table; JLabel 信息條; int year,month,day; File file; CalendarPad calendar; public NotePad(CalendarPad calendar) this.calendar=calendar; year=calendar.getYear(); month=calendar.getMonth(); day=c
30、alendar.getDay(); table=calendar.getHashtable(); file=calendar.getFile(); 信息條=new JLabel(""+year+"年"+month+"月"+day+"日",JLabel.CENTER); 信息條.setFont(new Font("TimesRoman",Font.BOLD,16); 信息條.setForeground(Color.blue); text=new JTextArea(10,10); 保存日志=new
31、 JButton("保存日志") ; 刪除日志=new JButton("刪除日志") ; 保存日志.addActionListener(this); 刪除日志.addActionListener(this); setLayout(new BorderLayout(); JPanel pSouth=new JPanel(); add(信息條,BorderLayout.NORTH); pSouth.add(保存日志); pSouth.add(刪除日志); add(pSouth,BorderLayout.SOUTH); add(new JScrollPane
32、(text),BorderLayout.CENTER); public void actionPerformed(ActionEvent e) if(e.getSource()=保存日志) 保存日志(year,month,day); else if(e.getSource()=刪除日志) 刪除日志(year,month,day); public void setYear(int year) this.year=year; public int getYear() return year; public void setMonth(int month) this.month=month; pub
33、lic int getMonth() return month; public void setDay(int day) this.day=day; public int getDay() return day; public void 設(shè)置信息條(int year,int month,int day) 信息條.setText(""+year+"年"+month+"月"+day+"日"); public void 設(shè)置文本區(qū)(String s) text.setText(s); public void 獲取日志內(nèi)容
34、(int year,int month,int day) String key=""+year+""+month+""+day; try FileInputStream inOne=new FileInputStream(file); ObjectInputStream inTwo=new ObjectInputStream(inOne); table=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(table.co
35、ntainsKey(key) String m=""+year+"年"+month+"月"+day+"這一天有日志記載,想看嗎?" int ok=JOptionPane.showConfirmDialog(this,m,"詢問",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) text.setText(String)table.get(key); else text.s
36、etText(""); else text.setText("無記錄"); public void 保存日志(int year,int month,int day) String 日志內(nèi)容=text.getText(); String key=""+year+""+month+""+day; String m=""+year+"年"+month+"月"+day+"保存日志嗎?" int ok=JOptionPane.
37、showConfirmDialog(this,m,"詢問",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try FileInputStream inOne=new FileInputStream(file); ObjectInputStream inTwo=new ObjectInputStream(inOne); table=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close()
38、; table.put(key,日志內(nèi)容); FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(table); objectOut.close(); out.close(); catch(Exception ee) public void 刪除日志(int year,int month,int day) String key=""+year+""+m
39、onth+""+day; if(table.containsKey(key) String m="刪除"+year+"年"+month+"月"+day+"日的日志嗎?" int ok=JOptionPane.showConfirmDialog(this,m,"詢問",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try FileInputStream inOne=new FileInputStream(file); ObjectInputStream i
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024股權(quán)抵押借款合同范本格式
- 2024商品買賣合同范本
- 2024年度甲方聘請乙方進(jìn)行市場推廣服務(wù)的合同
- 工廠用工合同協(xié)議書(2024年)
- 2024年建筑勞務(wù)分包主體結(jié)構(gòu)合同
- 個人質(zhì)押擔(dān)保借款合同模板
- 2024年度金融服務(wù)與投資咨詢合同
- 標(biāo)準(zhǔn)版工程居間合同格式
- 合法勞務(wù)施工協(xié)議書樣式
- 精美施工合同模板
- 2024-2025學(xué)年初中九年級數(shù)學(xué)上冊期中測試卷及答案(人教版)
- 電梯日管控、周排查、月調(diào)度內(nèi)容表格
- 1+X數(shù)字營銷技術(shù)應(yīng)用題庫
- 學(xué)校安全隱患排查整治表
- 房屋施工安全協(xié)議書
- 《福建省建筑安裝工程費(fèi)用定額》(2017版)正式版20176XXXX615
- 蘇教版二年級(上)數(shù)學(xué)全冊集體備課
- 《領(lǐng)導(dǎo)對下級工作表現(xiàn)的評價范文 》
- 城市綠地系統(tǒng)規(guī)劃案例分析三亞
- 水肥一體化施工組織設(shè)計(jì)
- 浙江大學(xué)top期刊850種
評論
0/150
提交評論