版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> Java應(yīng)用技術(shù)實(shí)踐報(bào)告</p><p> 題 目 實(shí)用萬(wàn)年歷記事本 </p><p><b> 起訖日期 </b></p><p> 所在院系 </p><p> 學(xué)生姓名 專 業(yè) </
2、p><p> 班 級(jí) 學(xué) 號(hào) </p><p> 指導(dǎo)教師 職 稱 </p><p> 所在單位 </p><p> 2010年 1 月 11 日</p><p><b> 一.總體設(shè)計(jì)&l
3、t;/b></p><p> 1.類之間的關(guān)系如圖1-1所示。</p><p> 圖1-1 類之間的關(guān)系</p><p> 2.java源文件及其功能如表1-1所示。</p><p><b> 二.詳細(xì)設(shè)計(jì)</b></p><p> 1. CalendarWindow</p&
4、gt;<p><b> ?。?)成員變量</b></p><p><b> ?。?)方法見(jiàn)表</b></p><p> ?。?)源代碼見(jiàn)文件CalendarWindow</p><p> 二.CalendarMessage</p><p><b> ?。?)成員變量見(jiàn)表&l
5、t;/b></p><p> ?。?)方法見(jiàn)表1-5</p><p> ?。?)源代碼見(jiàn)文件CalendarMessage.java</p><p> import java.util.Calendar;</p><p> public class CalendarMessage{ </p><p> in
6、t year=-1,month=-1,day=-1;</p><p> public void setYear(int year){</p><p> this.year=year;</p><p><b> }</b></p><p> public int getYear(){</p><
7、p> return year; </p><p><b> }</b></p><p> public void setMonth(int month){</p><p> if(month<=12&&month>=1)</p><p> this.month=month;&l
8、t;/p><p><b> else</b></p><p> this.month=1; </p><p><b> }</b></p><p> public int getMonth(){ </p><p> return month; </p>
9、<p><b> }</b></p><p> public void setDay(int day){</p><p> this.day=day;</p><p><b> }</b></p><p> public int getDay(){</p><
10、;p> return day;</p><p><b> }</b></p><p> public String [] getMonthCalendar(){</p><p> String [] day=new String[42];</p><p> Calendar rili=Calendar.g
11、etInstance();</p><p> rili.set(year,month-1,1);//將日歷翻到y(tǒng)ear年month月1日,注意0表示一月...11表示十二月</p><p> int 星期幾=rili.get(Calendar.DAY_OF_WEEK)-1;</p><p> int dayAmount=0;</p><p&
12、gt; if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)</p><p> dayAmount=31;</p><p> if(month==4||month==6||month==9||month==11)</p><p> dayAmount=30;<
13、;/p><p> if(month==2)</p><p> if(((year%4==0)&&(year%100!=0))||(year%400==0))</p><p> dayAmount=29;</p><p><b> else</b></p><p> dayAm
14、ount=28;</p><p> for(int i=0;i<星期幾;i++)</p><p> day[i]="";</p><p> for(int i=星期幾,n=1;i<星期幾+dayAmount;i++){</p><p> day[i]=String.valueOf(n) ;</p&
15、gt;<p><b> n++;</b></p><p><b> } </b></p><p> for(int i=星期幾+dayAmount;i<42;i++)</p><p> day[i]="";</p><p> return day;
16、</p><p><b> } </b></p><p><b> }</b></p><p> 3.CalendarPad</p><p><b> ?。?)成員變量見(jiàn)表</b></p><p><b> (2)方法見(jiàn)表</b&
17、gt;</p><p> (3)源代碼見(jiàn)文件CalendarPad.java</p><p> import javax.swing.*;</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import java.ut
18、il.*;</p><p> public class CalendarPad extends JPanel{</p><p> int year,month,day;</p><p> CalendarMessage calendarMessage; </p><p> JTextField [] showDay
19、; </p><p> JLabel title[]; </p><p> String [] 星期={"SUN日","MON一","TUE二","WED三","THU四","FRI五","SAT六
20、"};</p><p> JPanel north,center; </p><p> public CalendarPad(){</p><p> setLayout(new BorderLayout());</p><p> north=new JPanel();</p><p> nor
21、th.setLayout(new GridLayout(1,7));</p><p> center=new JPanel(); </p><p> center.setLayout(new GridLayout(6,7)); </p><p> add(center,BorderLayout.CENTER); </p><p>
22、 add(north,BorderLayout.NORTH);</p><p> title=new JLabel[7]; </p><p> for(int j=0;j<7;j++){ </p><p> title[j]=new JLabel();<
23、;/p><p> title[j].setFont(new Font("TimesRoman",Font.BOLD,12));</p><p> title[j].setText(星期[j]);</p><p> title[j].setHorizontalAlignment(JLabel.CENTER);</p><p&g
24、t; title[j].setBorder(BorderFactory.createRaisedBevelBorder());</p><p> north.add(title[j]);</p><p><b> } </b></p><p> title[0].setForeground(Color.red);</p>
25、<p> title[6].setForeground(Color.blue);</p><p><b> }</b></p><p> public void setShowDayTextField(JTextField [] text){</p><p> showDay=text;</p><p>
26、; for(int i=0;i<showDay.length;i++){ </p><p> showDay[i].setFont(new Font("TimesRoman",Font.BOLD,15));</p><p> showDay[i].setHorizontalAlignment(JTextField
27、.CENTER);</p><p> showDay[i].setEditable(false);</p><p> center.add(showDay[i]);</p><p><b> }</b></p><p><b> }</b></p><p> pub
28、lic void setCalendarMessage(CalendarMessage calendarMessage){</p><p> this.calendarMessage=calendarMessage;</p><p><b> } </b></p><p> public void showMonthCalendar(){
29、</p><p> String [] a=calendarMessage.getMonthCalendar();</p><p> for(int i=0;i<42;i++) </p><p> showDay[i].setText(a[i]);</p><p> validate
30、(); </p><p><b> }</b></p><p><b> } </b></p><p><b> 4.NotePad</b></p><p> ?。?)成員變量見(jiàn)表1-8</p><p><b> ?。?)方法見(jiàn)表9&
31、lt;/b></p><p> ?。?)源代碼見(jiàn)文件NotePad.java</p><p> import java.awt.*;</p><p> import javax.swing.*;</p><p> import java.io.*;</p><p> import java.awt.eve
32、nt.*;</p><p> public class NotePad extends JPanel implements ActionListener{</p><p> JTextArea text; </p><p> JTextField showMessage;</p><p> JPopupMen
33、u menu;</p><p> JMenuItem itemCopy,itemCut,itemPaste,itemClear; </p><p> public NotePad(){</p><p> showMessage=new JTextField();</p><p> showMessage.setHorizontalAl
34、ignment(JTextField.CENTER); </p><p> showMessage.setFont(new Font("TimesRoman",Font.BOLD,16));</p><p> showMessage.setForeground(Color.blue);</p><p> showMessage.setBac
35、kground(Color.pink);</p><p> showMessage.setBorder(BorderFactory.createRaisedBevelBorder());</p><p> showMessage.setEditable(false);</p><p> menu=new JPopupMenu(); </p>
36、<p> itemCopy=new JMenuItem("復(fù)制");</p><p> itemCut=new JMenuItem("剪切");</p><p> itemPaste=new JMenuItem("粘貼");</p><p> itemClear=new JMenuItem
37、("清空");</p><p> itemCopy.addActionListener(this);</p><p> itemCut.addActionListener(this);</p><p> itemPaste.addActionListener(this);</p><p> itemClear.ad
38、dActionListener(this);</p><p> menu.add(itemCopy);</p><p> menu.add(itemCut);</p><p> menu.add(itemPaste);</p><p> menu.add(itemClear);</p><p> text=n
39、ew JTextArea(10,10);</p><p> text.addMouseListener(new MouseAdapter(){</p><p> public void mousePressed(MouseEvent e){</p><p> if(e.getModifiers()==InputEvent.BUTTON3_MASK)</p
40、><p> menu.show(text,e.getX(),e.getY());</p><p><b> }</b></p><p><b> });</b></p><p> setLayout(new BorderLayout());</p><p> add(s
41、howMessage,BorderLayout.NORTH);</p><p> add(new JScrollPane(text),BorderLayout.CENTER);</p><p><b> }</b></p><p> public void setShowMessage(int year,int month,int day
42、){</p><p> showMessage.setText(""+year+"年"+month+"月"+day+"日");</p><p><b> } </b></p><p> public void save(File dir,int year,in
43、t month,int day){</p><p> String dailyContent=text.getText();</p><p> String fileName=""+year+""+month+""+day+".txt";</p><p> String key=&
44、quot;"+year+""+month+""+day;</p><p> String [] dayFile=dir.list();</p><p> boolean boo=false;</p><p> for(int k=0;k<dayFile.length;k++){</p>&l
45、t;p> if(dayFile[k].startsWith(key)){</p><p><b> boo=true;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</
46、b></p><p><b> if(boo){</b></p><p> String m=""+year+"年"+month+"月"+day+"已有日志,將新的內(nèi)容添加到日志嗎?";</p><p> int ok=JOptionPane.showC
47、onfirmDialog(this,m,"詢問(wèn)",JOptionPane.YES_NO_OPTION,</p><p> JOptionPane.QUESTION_MESSAGE);</p><p> if(ok==JOptionPane.YES_OPTION){ </p><p><b> try{</b></
48、p><p> File f=new File(dir,fileName);</p><p> RandomAccessFile out=new RandomAccessFile(f,"rw");</p><p> long fileEnd=out.length();</p><p> byte []bb=dailyCo
49、ntent.getBytes(); </p><p> out.seek(fileEnd);</p><p> out.write(bb);</p><p> out.close();</p><p><b> }</b></p><p> catch(IOException ex
50、p){}</p><p><b> }</b></p><p><b> }</b></p><p><b> else{</b></p><p> String m=""+year+"年"+month+"月"
51、+day+"還沒(méi)有日志,保存日志嗎?";</p><p> int ok=JOptionPane.showConfirmDialog(this,m,"詢問(wèn)",JOptionPane.YES_NO_OPTION,</p><p> JOptionPane.QUESTION_MESSAGE);</p><p> if(ok=
52、=JOptionPane.YES_OPTION){ </p><p><b> try{</b></p><p> File f=new File(dir,fileName);</p><p> RandomAccessFile out=new RandomAccessFile(f,"rw");</p>
53、<p> long fileEnd=out.length();</p><p> byte []bb=dailyContent.getBytes(); </p><p> out.write(bb);</p><p> out.close();</p><p><b> }</b></p&
54、gt;<p> catch(IOException exp){}</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p> public void delete(File di
55、r,int year,int month,int day){</p><p> String key=""+year+""+month+""+day;</p><p> String [] dayFile=dir.list();</p><p> boolean boo=false;</p>
56、;<p> for(int k=0;k<dayFile.length;k++){</p><p> if(dayFile[k].startsWith(key)){</p><p><b> boo=true;</b></p><p><b> break;</b></p><
57、p><b> }</b></p><p><b> } </b></p><p><b> if(boo){</b></p><p> String m="刪除"+year+"年"+month+"月"+day+"日的日
58、志嗎?";</p><p> int ok=JOptionPane.showConfirmDialog(this,m,"詢問(wèn)",JOptionPane.YES_NO_OPTION,</p><p> JOptionPane.QUESTION_MESSAGE);</p><p> if(ok==JOptionPane.YES_OPT
59、ION){</p><p> String fileName=""+year+""+month+""+day+".txt";</p><p> File deleteFile=new File(dir,fileName);</p><p> deleteFile.delete();
60、</p><p><b> }</b></p><p><b> }</b></p><p><b> else{</b></p><p> String m=""+year+"年"+month+"月"+day
61、+"無(wú)日志記錄";</p><p> JOptionPane.showMessageDialog(this,m,"提示",JOptionPane.WARNING_MESSAGE);</p><p><b> }</b></p><p><b> }</b></p>
62、<p> public void read(File dir,int year,int month,int day){</p><p> String fileName=""+year+""+month+""+day+".txt";</p><p> String key="&quo
63、t;+year+""+month+""+day;</p><p> String [] dayFile=dir.list();</p><p> boolean boo=false;</p><p> for(int k=0;k<dayFile.length;k++){</p><p>
64、if(dayFile[k].startsWith(key)){</p><p><b> boo=true;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b><
65、/p><p><b> if(boo){</b></p><p> String m=""+year+"年"+month+"月"+day+"有日志,顯示日志內(nèi)容嗎?";</p><p> int ok=JOptionPane.showConfirmDialog(t
66、his,m,"詢問(wèn)",JOptionPane.YES_NO_OPTION,</p><p> JOptionPane.QUESTION_MESSAGE);</p><p> if(ok==JOptionPane.YES_OPTION){ </p><p> text.setText(null);</p><p>&l
67、t;b> try{</b></p><p> File f=new File(dir,fileName);</p><p> FileReader inOne=new FileReader(f);</p><p> BufferedReader inTwo= new BufferedReader(inOne);</p>&l
68、t;p> String s=null;</p><p> while((s=inTwo.readLine())!=null)</p><p> text.append(s+"\n");</p><p> inOne.close();</p><p> inTwo.close();</p>&l
69、t;p><b> }</b></p><p> catch(IOException exp){} </p><p><b> }</b></p><p><b> }</b></p><p><b> else{</b></p>
70、<p> String m=""+year+"年"+month+"月"+day+"無(wú)日志記錄";</p><p> JOptionPane.showMessageDialog(this,m,"提示",JOptionPane.WARNING_MESSAGE);</p><p>
71、;<b> }</b></p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()==itemCopy)</p><p> text.copy();<
72、;/p><p> else if(e.getSource()==itemCut)</p><p> text.cut();</p><p> else if(e.getSource()==itemPaste)</p><p> text.paste();</p><p> else if(e.getSource(
73、)==itemClear)</p><p> text.setText(null); </p><p><b> }</b></p><p><b> }</b></p><p> 5.CalendarImage</p><p> ?。?)成員變量見(jiàn)表1-8</
74、p><p><b> ?。?)方法見(jiàn)表9</b></p><p> ?。?)源代碼見(jiàn)文件CalendarImage.java</p><p> import javax.swing.*;</p><p> import java.io.*;</p><p> import java.awt.*;
75、</p><p> public class CalendarImage extends JPanel{</p><p> File imageFile;</p><p> Image image;</p><p> Toolkit tool;</p><p> CalendarImage(){</p&
76、gt;<p> tool=getToolkit();</p><p><b> }</b></p><p> public void setImageFile(File f){</p><p> imageFile=f;</p><p> try{ image=tool.getImage(imag
77、eFile.toURI().toURL()); </p><p><b> }</b></p><p> catch(Exception exp){} </p><p> repaint(); </p><p><b> }</b></p><p> public
78、void paintComponent(Graphics g){</p><p> super.paintComponent(g); </p><p> int w=getBounds().width;</p><p> int h=getBounds().height;</p><p> g.drawImage(image,0,0
79、,w,h,this);</p><p><b> } </b></p><p><b> }</b></p><p><b> 6.Clock</b></p><p><b> ?。?)成員變量見(jiàn)表</b></p><p>&
80、lt;b> ?。?)方法見(jiàn)表</b></p><p> ?。?)源代碼見(jiàn)文件Clock.java</p><p> import java.awt.*;</p><p> import java.util.*;</p><p> import javax.swing.*;</p><p> i
81、mport java.awt.geom.*;</p><p> public class Clock extends JPanel implements Runnable</p><p><b> {</b></p><p> Thread clock;</p><p> public Clock()</p
82、><p><b> {</b></p><p><b> super();</b></p><p> setFont(new Font("Times new Roman",Font.BOLD,60));</p><p><b> start();</b>
83、</p><p> setSize(280,100);</p><p> Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();</p><p><b> }</b></p><p> public void start()</p>
84、<p><b> {</b></p><p> if(clock==null)</p><p><b> {</b></p><p> clock=new Thread(this);</p><p> clock.start();</p><p><
85、;b> }</b></p><p><b> }</b></p><p> public void run()</p><p><b> {</b></p><p> while(clock!=null)</p><p><b> {&
86、lt;/b></p><p> repaint();</p><p><b> try</b></p><p><b> {</b></p><p> Thread.sleep(1000);</p><p><b> }</b></
87、p><p> catch (InterruptedException ex)</p><p><b> {</b></p><p> ex.printStackTrace();</p><p><b> }</b></p><p><b> }</b&g
88、t;</p><p><b> }</b></p><p> public void stop()</p><p><b> {</b></p><p> clock=null;</p><p><b> }</b></p>&l
89、t;p> public void paint(Graphics g)</p><p><b> {</b></p><p> Graphics2D g2=(Graphics2D)g;</p><p> Calendar now=new GregorianCalendar();</p><p> Strin
90、g timeInfo="";</p><p> int hour=now.get(Calendar.HOUR_OF_DAY);</p><p> int minute=now.get(Calendar.MINUTE);</p><p> int second=now.get(Calendar.SECOND);</p><
91、p> if(hour<=9)</p><p> timeInfo+="0"+hour+":";</p><p><b> else</b></p><p> timeInfo+=hour+":";</p><p> if(minute<
92、;=9)</p><p> timeInfo+="0"+minute+":";</p><p><b> else</b></p><p> timeInfo+=minute+":";</p><p> if(second<=9)</p>
93、;<p> timeInfo+="0"+second;</p><p><b> else</b></p><p> timeInfo+=second;</p><p> g.setColor(Color.PINK);</p><p> Dimension dim=getSiz
94、e();</p><p> g.fillRect(0,0,dim.width,dim.height);</p><p> g.setColor(Color.BLACK);</p><p> g.drawString(timeInfo,40,80);</p><p><b> }</b></p>&l
95、t;p><b> }</b></p><p><b> 三.運(yùn)行效果</b></p><p> 1.使用eclipse軟件運(yùn)行該系統(tǒng)后,即可進(jìn)入實(shí)用萬(wàn)年歷記事本程序的主窗口。</p><p> 2.通過(guò)點(diǎn)擊“上年”“下年”“上月”“下月”可以選擇查看往年日期,如圖查看2009年1月的日歷,單擊“上年”,如圖1
96、-3所示。</p><p> 圖1-3 查看2009年1月的日歷</p><p> 3.,記錄當(dāng)天日志。在記事本中添加文本“5號(hào)報(bào)到”并保存,界面如圖1-4所示。</p><p> 圖1-4 添加文本界面</p><p> 4.點(diǎn)擊“是(Y)”,保存日志.當(dāng)日期再度回到3月5日,日歷上出現(xiàn)“有日志”,提示用戶該日有日志。如圖1-5&l
97、t;/p><p><b> 圖1-5 </b></p><p> 5.點(diǎn)擊讀取日志,再點(diǎn)擊“是(Y)”,查看日志</p><p> 圖1-6 查看日志界面</p><p><b> 四.工作總結(jié)</b></p><p> 經(jīng)過(guò)了長(zhǎng)時(shí)間的反復(fù)編寫調(diào)試,課本和網(wǎng)上查閱相關(guān)資
98、料相關(guān)文章,終于完成了整個(gè)課程設(shè)計(jì)。在這個(gè)過(guò)程中,在把書本上的知識(shí)給系統(tǒng)的復(fù)習(xí)了一下的同時(shí),同時(shí)也發(fā)現(xiàn)了自己的太多不足,對(duì)JAVA2語(yǔ)言整體知識(shí)構(gòu)架不夠熟悉,不能靈活地運(yùn)用所學(xué)的知識(shí)點(diǎn)。自己的編程方式也不是太標(biāo)準(zhǔn),經(jīng)常出現(xiàn)代碼寫錯(cuò)而調(diào)試很久的低級(jí)錯(cuò)誤情況出現(xiàn)。</p><p> 通過(guò)這次課程設(shè)計(jì),我明白了編寫程序,不僅要求對(duì)課本知識(shí)有較深刻的了解,同時(shí)要求程序設(shè)計(jì)者有較強(qiáng)的思維和動(dòng)手能力。還要熟悉常用的編程技巧
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)報(bào)告-萬(wàn)年歷
- java萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告---萬(wàn)年歷
- java萬(wàn)年歷課程設(shè)計(jì)
- java課程設(shè)計(jì)--萬(wàn)年歷
- java課程設(shè)計(jì)--萬(wàn)年歷設(shè)計(jì)
- java萬(wàn)年歷課程設(shè)計(jì)報(bào)告 (2)
- java超級(jí)萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- 萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- 萬(wàn)年歷課程設(shè)計(jì)--萬(wàn)年歷電子時(shí)鐘
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 數(shù)字萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--電子萬(wàn)年歷
評(píng)論
0/150
提交評(píng)論