java課程設(shè)計(jì)報(bào)告---實(shí)用萬(wàn)年歷記事本_第1頁(yè)
已閱讀1頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論