java課程設計報告_第1頁
已閱讀1頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  黃 淮 學 院</p><p>  JAVA課程設計報告</p><p>  題目: 《日記本的設計與實現(xiàn)》課程設計 </p><p>  學 院: 信息工程學院 </p><p>  姓 名: 劉學超 </p><p>  學

2、 號: 1134120151 </p><p>  專 業(yè): 軟 件 工 程 </p><p>  班 級: 軟工1101B班 </p><p>  指導教師: 王海榮 </p><p>  二0一二 年 十二月</p><p><

3、;b>  目 錄</b></p><p><b>  1.引 言2</b></p><p>  2.設計目的與任務2</p><p><b>  3.設計方案2</b></p><p>  3.1總體設計2</p><p>  3.2

4、設計要求3</p><p>  3.3系統(tǒng)的主要功能3</p><p>  3.4開發(fā)環(huán)境3</p><p>  3.5系統(tǒng)的功能模塊劃分與系統(tǒng)流程圖3</p><p>  3.5.1系統(tǒng)的功能模塊劃分3</p><p>  3.5.2萬年歷模塊流程圖4</p><p> 

5、 3.5.3日記本模塊流程圖5</p><p>  3.6各個類說明6</p><p>  3.6.1主類NoteBook錯誤!未定義書簽。</p><p>  3.6.2記事本Note類6</p><p>  3.6.3左側(cè)面板LeftPane類7</p><p>  3.6.4月份顯示Mont

6、hPane類7</p><p>  3.6.5年月顯示YearMonth類8</p><p>  3.6.6日期獲取DateTime類8</p><p>  3.6.7右側(cè)記事本顯示NotePane類錯誤!未定義書簽。</p><p>  3.6.8記事本彈出菜單NotePopupMenu類錯誤!未定義書簽。</p&g

7、t;<p>  4.各種功能截圖9</p><p>  5.課程設計總結(jié)11</p><p>  6.個人心得體會11</p><p><b>  7.附錄11</b></p><p><b>  摘 要</b></p><p>  本課程

8、設計通過代碼實現(xiàn)將理論知識和具體實踐相結(jié)合,鞏固提高了對JAVA的相關(guān)方法與概念的理解,使學生的發(fā)散思維及動手能力進一步加強,加強對計算機及軟件工程的進一步了解。</p><p>  在這個課程設計中,做成了一個有日歷標記的記事本軟件,日記本的設計與實現(xiàn)面板由日歷、記事本、圖片、時鐘四部分組成。日歷部分可以選擇不同的年份、月份、日期和星期;記事本模塊可以實現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有相應提示;

9、圖片模塊可以顯示預設的圖片;時鐘模塊可以用時鐘來顯示當前時間。本軟件是一個實用性較強,簡潔,美觀,方便的功能軟件。</p><p>  關(guān)鍵字:記事本;日歷;</p><p><b>  引 言</b></p><p>  Java是一種純面向?qū)ο蟮?、網(wǎng)絡編程首選的語言。Java技術(shù)作為軟件開的一種革命性技術(shù),已被列為當今世界信息技術(shù)的主流之

10、一。為了適應時代潮流,我們應該加強對Java的學習,更好的掌握這門課程。為此Java課程設計決定以“日記本的設計與實現(xiàn)”為設題材,借此鞏固加深我們對Java的了解。</p><p>  本次課程設計的實例雖然比較簡單,程序設計也不是很復雜,但在此程序的設計過程也是一個學習過程,更是對復雜程序的一個學習過程,還能培養(yǎng)我們的數(shù)抽象能力。因此,我們覺得這次課程設計是非常有意義的,能為我們今后學習面向過程的程序設計作一些

11、鋪墊。</p><p><b>  設計目的與任務</b></p><p>  本課程設計所要求達到的目的和任務:通過Java程序設計的一些重要理論基礎來實現(xiàn)“日記本的設計與實現(xiàn)”的“日歷”和“記事本”的雙重功能。并通過此次課程設計的訓練,使學生鞏固和加深對Java這門課程的理解,通過利用所學到的計算科學的理論知識,提高解決實際問題的能力,增強運算、編程和使用技術(shù)資料

12、的技能,通過實際問題的分析設計、編程和調(diào)試,掌握應用軟件的分析方法和工程設計方法,能正確闡述設計和實驗結(jié)果。通過這次課程設計,培養(yǎng)實事求是、認真、嚴謹?shù)目茖W態(tài)度和刻苦鉆研不斷創(chuàng)新的精神,逐步建立正確的全局觀念。</p><p><b>  設計方案</b></p><p><b>  總體設計</b></p><p>  

13、(1)問題定義:創(chuàng)建日記本的設計與實現(xiàn),實現(xiàn)對某日期的事情進行記錄這主要功能,并能顯示設置的圖片,增加美觀。</p><p>  (2)問題分析:通過對“日記本的設計與實現(xiàn)”這一題材的分析,我需要四個類來實現(xiàn)其“日歷”和“記事本”這兩大功能。通過主類NoteBook創(chuàng)建動日記本的設計與實現(xiàn)軟件的主窗口,該類含有main方法,程序從該類開始執(zhí)行。再用余下LeftPane、NotePane類來顯示并改變?nèi)掌诤蛯崿F(xiàn)記事

14、本的功能。</p><p>  (3)研究意義:通過本次課程設計,我們掌握了Java語言的基本運用,提高了理論結(jié)合實際的能力。 </p><p><b>  設計要求 </b></p><p>  (1)日記本使用Java語言開發(fā)設計。課程的基本功能包括萬年歷、記事本和輔助功能三個部分。</p><p>  (2)萬年歷

15、部分由微調(diào)器確定年月,由一組文本框顯示日歷。年月可選擇數(shù)據(jù)符合邏輯,默認為當前日期。</p><p>  (3)月歷顯示應該符合查看習慣,如星期六和星期日分別用不同顏色表示,當日可用特別的字號和顏色</p><p>  (4)記事本區(qū),記事本內(nèi)容按年月日記錄且保存。</p><p>  (5)微調(diào)器應該進行事件設置,以及即時地顯示該年月的月歷;日期文本框可監(jiān)聽鼠標事

16、件,當單擊任何一個日期時,若該日有記事內(nèi)容,則在日記本中顯示該日期的記錄文字;若該日無記錄,記事區(qū)保持空白。</p><p>  (6)日記本應該是開放的,內(nèi)容可按日期增減,保存應即時,刪除需謹慎刪除記錄時,應進行對話框詢問確定。</p><p>  (7)輔助功能包含了日記的導入導出。“導入”可以將其他日記文件導入合并到當前“日記本的設計與實現(xiàn)”的日記本中;“導出”可將“日記本的設計與實

17、現(xiàn)”的所有記錄內(nèi)容按日期為序?qū)С龅揭粋€文本文件中。為安全起見導出時需加以安全確認,要求輸入正確設定的密碼后才能導出。</p><p>  (8)系統(tǒng)界面外觀和布局,可個性化設計,總體原則是“界面簡潔,操作便捷”。 </p><p><b>  系統(tǒng)的主要功能 </b></p><p> ?。?)可以對個人日志進行保存、刪除、導入和導出;<

18、/p><p> ?。?)可以方便地在任何日期記載個人日志以及查看某個日期記載的日志 ;</p><p>  (3)可以顯示當前日期。</p><p><b>  開發(fā)環(huán)境</b></p><p>  Windows XP;jdk1.5.0_16,Eclipse。 </p><p>  系統(tǒng)的功能模塊劃

19、分與系統(tǒng)流程圖</p><p><b>  系統(tǒng)的功能模塊劃分</b></p><p>  本日歷記事本共有11個java源文件。</p><p>  NoteBook.java</p><p>  該java文件生成的類負責創(chuàng)建本日歷記事本程序主窗口。該類含有main方法,程序從該類開始執(zhí)行。</p>&

20、lt;p>  leftPane.java</p><p>  該文件負責創(chuàng)建創(chuàng)建左側(cè)面板。</p><p>  NotePane.java</p><p>  該文件負責創(chuàng)建右側(cè)面板、在文本框上彈出快捷菜單、創(chuàng)建日記文本</p><p>  DateTime.java</p><p>  該文件獲得系統(tǒng)當前的日期

21、,包括年月日</p><p>  YearMonth.java</p><p>  該文件負責創(chuàng)建管理年份和月份的對象。</p><p>  MonthPane.java</p><p>  該文件負責生成日歷創(chuàng)建日歷</p><p>  類模塊圖如圖3-1所示.</p><p><b&g

22、t;  萬年歷模塊流程圖</b></p><p>  萬年歷流程圖如圖3-2所示</p><p><b>  萬年歷</b></p><p>  按鈕 選擇日期</p><p>  正確輸入錯誤輸入</p><p><b>  改變當天日期</b&g

23、t;</p><p><b>  當天是否有日記?</b></p><p><b>  有無</b></p><p><b>  更改記事本顯示</b></p><p><b>  日記本模塊流程圖</b></p><p&g

24、t;  日記本流程圖如圖3-3所示.</p><p><b>  顯示日記本</b></p><p>  保存 刪除 導入 導出</p><p>  以當前日期為值, 如果當前TreeMap打開文件對 打開保存文件</p><p>  當前內(nèi)容為值保 有今天的記錄

25、就話框,如果選擇 對話框,保存</p><p>  存到TreeMap中 刪除它了文件就導入 到所選路徑下</p><p><b>  各個類說明</b></p><p>  記事本NoteBook類</p><p><b>  1.成員變量</b></p>&l

26、t;p><b>  表3-1</b></p><p><b>  2.方法</b></p><p><b>  表3-2</b></p><p>  記事本NotePane類</p><p><b>  1、成員變量</b></p>&

27、lt;p><b>  表3-3</b></p><p><b>  2、方法</b></p><p><b>  表3-4</b></p><p>  左側(cè)面板LeftPane類</p><p><b>  1.成員變量</b></p>

28、<p><b>  表3-5</b></p><p><b>  2.方法</b></p><p><b>  表3-6</b></p><p>  月份顯示MonthPane類</p><p><b>  1.成員變量</b></p&g

29、t;<p><b>  表3-7</b></p><p><b>  2.方法</b></p><p><b>  表3-8</b></p><p>  年月顯示YearMonth類</p><p><b>  1.成員變量</b></

30、p><p><b>  表3-9</b></p><p><b>  2.方法</b></p><p><b>  表3-10</b></p><p><b>  表3-11</b></p><p>  日期獲取DateTime類<

31、;/p><p><b>  1.成員變量</b></p><p><b>  表3-13</b></p><p><b>  2.方法</b></p><p><b>  表3-14</b></p><p><b>  4、各

32、種功能截圖</b></p><p><b>  主界面</b></p><p><b>  保存日記</b></p><p><b>  刪除日記</b></p><p><b>  導入日志</b></p><p>&

33、lt;b>  導出日記</b></p><p><b>  課程設計總結(jié)</b></p><p>  通過本次課程設計的練習,我才知道我對知識的掌握是多么的不熟悉,太多東西我都不知道,最主要的是我練的太少了,太多都不熟悉,Java的學習不是看看就會的,最最主要的是多練。這次的課程設計為我敲響了警鐘,在以后的學習中一定要多多練習,鍛煉自己的獨立思考能力

34、,和團隊意識,為以后的工作打好基礎。</p><p><b>  6、個人心得體會</b></p><p>  “紅花雖好,也要綠葉相持”,同樣,只有理論是遠遠不夠的,理論還需要用實踐來證明。課程設計培養(yǎng)學會的多方面的能力,獨立思考、對知識的掌握、解決問題的能力等,我現(xiàn)在做的只是一個小小的程序設計而已,以后會有更大的軟件需要去做,也不是我一個人能完成的,所以團隊意識也

35、是很重要的。</p><p><b>  7、附錄</b></p><p><b>  源程序代碼</b></p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import jav

36、a.io.*;</p><p>  import java.util.*;</p><p>  import javax.swing.*;</p><p>  import javax.swing.event.*;</p><p>  class NoteBook extends JFrame implements ChangeListene

37、r,MouseListener{</p><p>  int year,month,day;</p><p>  Calendar c;</p><p>  int first,days;</p><p>  LeftPane lp;</p><p>  NotePane np;</p><p>

38、;  public NoteBook(){</p><p>  super("日記本的設計與實現(xiàn)");</p><p>  this.setDefaultCloseOperation(3);</p><p>  Container con=getContentPane();</p><p>  bookInit();<

39、;/p><p>  addEvent();</p><p>  add(lp,"West");</p><p><b>  add(np);</b></p><p>  this.setBounds( 50, 20,1000,650);</p><p>  this.setResi

40、zable(true); </p><p>  this.setVisible(true);</p><p><b>  }</b></p><p>  void bookInit(){</p><p>  lp=new LeftPane();</p><p>  np=new NotePane(

41、);</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  day=DateTime.getDay();</p><p><b>  }</b></p><p>  void addEve

42、nt(){</p><p>  lp.ym.showMonth.addChangeListener(this);</p><p>  lp.ym.showYear.addChangeListener(this);</p><p>  for(int i=0;i<lp.mp.showDay.length;i++){</p><p>  l

43、p.mp.showDay[i].addMouseListener(this);</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void stateChanged(ChangeEvent e){</p><p>  month=Int

44、eger.parseInt(lp.ym.showMonth.getValue().toString());</p><p>  year=Integer.parseInt(lp.ym.showYear.getValue().toString());</p><p>  noteBookRefresh();</p><p><b>  }</b>

45、</p><p>  void noteBookRefresh(){</p><p>  np.refreshContent(year,month,day);</p><p>  np.setDateInfo(year,month,day);</p><p>  lp.mp.arrangeNum(year,month,day);</p&

46、gt;<p><b>  }</b></p><p>  public void mouseClicked(MouseEvent e){</p><p>  JTextField source=(JTextField)e.getSource();</p><p><b>  try{</b></p>

47、;<p>  day=Integer.parseInt(source.getText());</p><p>  noteBookRefresh();</p><p><b>  }</b></p><p>  catch(Exception ee){}</p><p><b>  }</b

48、></p><p>  public void mousePressed(MouseEvent e) {}</p><p>  public void mouseReleased(MouseEvent e){}</p><p>  public void mouseEntered(MouseEvent e){}</p><p>  pu

49、blic void mouseExited(MouseEvent e){}</p><p>  class YearMonth extends JPanel{</p><p>  private int year;</p><p>  private int month;</p><p>  private JLabel yl;</p&

50、gt;<p>  private JLabel ml;</p><p>  JSpinner showYear;//微調(diào)按鈕</p><p>  JSpinner showMonth;</p><p>  YearMonth(){</p><p><b>  ymInit();</b></p>

51、<p>  add(yl);add(showYear);</p><p>  add(ml);add(showMonth);</p><p><b>  }</b></p><p>  void ymInit(){</p><p>  yl=new JLabel("年");</p&g

52、t;<p>  ml=new JLabel("月");</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  showYear = new JSpinner(new SpinnerNumberModel(year,0,100

53、00,1));</p><p>  showYear.setEditor(new JSpinner.NumberEditor(showYear, "0000"));</p><p>  showYear.setPreferredSize(new Dimension(60, 30));</p><p>  yl.setFont(new Font(&

54、quot;TimesRomn",Font.BOLD,16));</p><p>  showMonth=new JSpinner(new SpinnerNumberModel(month,1,12,1));</p><p>  showYear.setPreferredSize(new Dimension(60, 30));</p><p>  ml.se

55、tFont(new Font("TimesRomn",Font.BOLD,16));</p><p><b>  }</b></p><p><b>  }</b></p><p>  static class DateTime{</p><p>  static Calenda

56、r today=Calendar.getInstance();</p><p>  static int getYear(){</p><p>  return today.get(today.YEAR);</p><p><b>  }</b></p><p>  static int getMonth(){</

57、p><p>  return today.get(today.MONTH)+1;</p><p><b>  }</b></p><p>  static int getDay(){</p><p>  return today.get(today.DAY_OF_MONTH);</p><p><

58、;b>  }</b></p><p>  static int getMonDay(int year,int month){</p><p>  if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){</p><p>  return 31;</p

59、><p><b>  }</b></p><p>  else if(month==4||month==6||month==9||month==11){</p><p>  return 30;</p><p><b>  }</b></p><p>  if((year%4==

60、0&&year%100!=0)||year%400==0){</p><p>  return 29;</p><p><b>  }</b></p><p><b>  else{</b></p><p>  return 28;</p><p><b

61、>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  class LeftPane extends JPanel{</p><p>  YearMonth ym;</p><p>  Month

62、Pane mp;</p><p>  JLabel tupian;</p><p>  JPanel lp;</p><p>  JSplitPane split;</p><p>  LeftPane(){</p><p>  super(new BorderLayout());</p><p&

63、gt;  tupian=new JLabel(new ImageIcon("a.jpg"));</p><p>  ym=new YearMonth();</p><p>  mp=new MonthPane();</p><p>  lp=new JPanel(new BorderLayout());</p><p> 

64、 lp.add(ym,"South");</p><p>  lp.add(mp);</p><p>  lp.add(tupian,"North");</p><p>  split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);</p><p>  this

65、.add(lp);</p><p>  this.add(split,"East");</p><p><b>  } </b></p><p><b>  }</b></p><p>  class MonthPane extends JPanel{</p>

66、<p>  JTextField showDay[];</p><p>  int first,days;</p><p>  YearMonth ym;</p><p>  String[] week;</p><p>  JLabel[] title;</p><p>  int year,month,

67、day;</p><p>  MonthPane(){</p><p>  super(new GridLayout(7,7,3,3));</p><p><b>  mcInit();</b></p><p>  for(int i=0;i<7;i++)</p><p>  add(tit

68、le[i]);</p><p>  for(int i=0;i<42;i++)</p><p>  add(showDay[i]);</p><p>  arrangeNum(year,month,day);</p><p><b>  }</b></p><p>  void mcInit

69、(){</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  day=DateTime.getDay();</p><p>  String week[]={"日","一","二&qu

70、ot;,"三","四","五","六"};</p><p>  title=new JLabel[7];</p><p>  for(int j=0;j<7;j++){</p><p>  title[j]=new JLabel();</p><p>  t

71、itle[j].setText(week[j]);</p><p>  title[j].setBorder(BorderFactory.createEmptyBorder());</p><p>  title[j].setFont(new Font("",1,18));</p><p><b>  }</b></p

72、><p>  title[0].setForeground(Color.red);</p><p>  title[6].setForeground(Color.blue);</p><p>  showDay=new JTextField[42];</p><p>  for(int i=0;i<42;i++){</p>&

73、lt;p>  showDay[i]=new JTextField();</p><p>  showDay[i].setFont(new Font("",0,14));</p><p>  showDay[i].setEditable(false);</p><p><b>  }</b></p><

74、;p><b>  }</b></p><p>  public void arrangeNum(int year,int month,int day){</p><p>  days=DateTime.getMonDay(year,month);</p><p>  Calendar c=Calendar.getInstance();&

75、lt;/p><p>  c.set(year,month-1,1);</p><p>  first=c.get(Calendar.DAY_OF_WEEK)-1;</p><p>  if(first!=0){</p><p>  for(int i=0;i<first;i++){</p><p>  showDay

76、[i].setText("");</p><p><b>  }</b></p><p><b>  }</b></p><p>  for(int i=first,n=1;i<first+days;i++,n++){</p><p>  showDay[i].setTex

77、t(""+n);</p><p>  int r=i+1;</p><p>  if(n==day){</p><p>  if(r%7==0||(r+6)%7==0){</p><p>  showDay[i].setForeground(Color.blue);</p><p>  showDa

78、y[i].setFont(new Font("TimesRoman",Font.BOLD,20));</p><p><b>  }</b></p><p><b>  else{</b></p><p>  showDay[i].setForeground(Color.green);</p>

79、;<p>  showDay[i].setFont(new Font("TimesRoman",Font.BOLD,20));</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else{</b></p&

80、gt;<p>  showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));</p><p>  showDay[i].setForeground(Color.black);</p><p><b>  }</b></p><p>  if(i%7==0){

81、</p><p>  showDay[i].setForeground(Color.red);</p><p><b>  }</b></p><p>  if(i%7==6){</p><p>  showDay[i].setForeground(Color.blue);</p><p><

82、;b>  }</b></p><p><b>  }</b></p><p>  if(first+days<41){</p><p>  for(int i=first+days;i<42;i++){</p><p>  showDay[i].setText("");&

83、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //時鐘顯示</b>&

84、lt;/p><p>  class TimeLabel extends JLabel implements Runnable{</p><p>  TimeLabel(){</p><p>  this.setFont(new Font("",1,20));</p><p>  this.setForeground(Color

85、.red);</p><p>  new Thread(this).start();</p><p><b>  }</b></p><p>  public String getTime(){</p><p>  Calendar now=Calendar.getInstance();//取得系統(tǒng)時間 </p&g

86、t;<p><b>  int hour;</b></p><p>  int minute;</p><p>  int second;</p><p>  String timeInfo;</p><p>  hour=now.get(now.HOUR_OF_DAY);</p><p

87、>  minute=now.get(now.MINUTE);</p><p>  second=now.get(now.SECOND);</p><p>  if(hour<=9)</p><p>  timeInfo="0"+hour+":";</p><p><b>  els

88、e</b></p><p>  timeInfo=hour+":";</p><p>  if(minute<=9)</p><p>  timeInfo= timeInfo+"0"+minute+":";</p><p><b>  else</b

89、></p><p>  timeInfo= timeInfo+minute+":";</p><p>  if(second<=9)</p><p>  timeInfo= timeInfo+"0"+second;</p><p><b>  else</b></

90、p><p>  timeInfo= timeInfo+second;</p><p>  return timeInfo;</p><p><b>  }</b></p><p>  public void run(){</p><p>  while(true) //線程的運行(隔一秒刷新)循環(huán)顯示

91、</p><p><b>  { try</b></p><p>  {this.setText(this.getTime());</p><p>  Thread.sleep(1000);</p><p><b>  }</b></p><p>  catch (Excep

92、tion e) {}</p><p><b>  }}</b></p><p><b>  }</b></p><p>  class NotePane extends JPanel implements ActionListener,MouseListener{</p><p>  p

93、rivate int year,month,day;</p><p>  private JTextArea note;</p><p>  private JButton save,delete,input,export;</p><p>  private Hashtable table;</p><p>  private JLabel

94、 dateInfo ;</p><p>  private File file;</p><p>  private JPanel buttonPane;</p><p>  private JMenuItem copy;</p><p>  private JMenuItem cut;</p><p>  priv

95、ate JMenuItem paste;</p><p>  private JPopupMenu f;</p><p>  JPanel p=new JPanel();</p><p>  NotePane(){</p><p>  super(new BorderLayout());</p><p>  noteI

96、nit();</p><p>  buttonInit();</p><p>  addEvent();</p><p>  p.add(dateInfo);</p><p>  p.add(new TimeLabel());</p><p>  add(p,"North");</p>

97、<p>  add(new JScrollPane(note));</p><p>  add(buttonPane,"South");</p><p>  refreshContent(year,month,day);</p><p><b>  }</b></p><p>  priv

98、ate void noteInit(){</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  day=DateTime.getDay();</p><p>  dateInfo=new JLabel(year+" 年 &q

99、uot;+month+" 月 "+day+" 日 ",JLabel.CENTER);</p><p>  dateInfo.setFont(new Font("TimesRomn",Font.BOLD,16));</p><p>  dateInfo.setForeground(Color.BLUE);</p>&l

100、t;p>  table=new Hashtable();</p><p>  file=new File("Note.txt");</p><p>  initFile();</p><p>  note=new JTextArea();</p><p>  note.setFont(new Font("&

101、quot;,0,14));</p><p>  note.setLineWrap(true);</p><p><b>  }</b></p><p>  private void buttonInit(){</p><p>  f=new JPopupMenu();</p><p>  cut=

102、new JMenuItem("剪切");</p><p>  copy=new JMenuItem("復制");</p><p>  paste=new JMenuItem("粘貼");</p><p>  save=new JButton("保存日記") ;</p>&l

103、t;p>  delete=new JButton("刪除日記");</p><p>  input=new JButton("導入日記");</p><p>  export=new JButton("導出日記");</p><p>  buttonPane=new JPanel(new FlowLa

104、yout());</p><p>  buttonPane.add(save);</p><p>  buttonPane.add(delete);</p><p>  buttonPane.add(input);</p><p>  buttonPane.add(export);</p><p>  f.add(cu

105、t);</p><p>  f.add(copy);</p><p>  f.add(paste);</p><p><b>  }</b></p><p>  private void addEvent(){</p><p>  save.addActionListener(this);<

106、/p><p>  delete.addActionListener(this);</p><p>  input.addActionListener(this);</p><p>  export.addActionListener(this);</p><p>  cut.addActionListener(this);</p>

107、<p>  copy.addActionListener(this); </p><p>  paste.addActionListener(this);</p><p>  note.addMouseListener(this);</p><p><b>  }</b></p><p>  pr

108、ivate void initFile(){</p><p>  if(!file.exists()){</p><p><b>  try{</b></p><p>  FileOutputStream out=new FileOutputStream(file);</p><p>  ObjectOutputStre

109、am objectOut=new ObjectOutputStream(out);</p><p>  objectOut.writeObject(table);</p><p>  objectOut.close();</p><p>  out.close();</p><p><b>  }</b></p&g

110、t;<p>  catch(IOException e) {}</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e){</p><p>  if(e.ge

111、tSource()==save)</p><p>  save(year,month,day);</p><p>  else if(e.getSource()==delete)</p><p>  delete(year,month,day);</p><p>  else if(e.getSource()==input)</p>

112、;<p><b>  input();</b></p><p>  else if(e.getSource()==export)</p><p><b>  export();</b></p><p>  else if(e.getSource()==cut)</p><p>  n

113、ote.cut();</p><p>  else if(e.getSource()==copy)</p><p>  note.copy();</p><p>  else if(e.getSource()==paste)</p><p>  note.paste();</p><p><b>  }<

114、;/b></p><p>  public void setDateInfo(int _y,int _m,int _d){</p><p>  this.year=_y;</p><p>  this.month=_m;</p><p>  this.day=_d;</p><p>  dateInfo.setT

115、ext(_y+" 年 "+_m+" 月 "+_d+" 日");</p><p><b>  }</b></p><p>  public String getDateKey(){</p><p>  String s=""+year;</p><

116、p>  if(month<10)s+="/0"+month;</p><p>  else s+="/"+month;</p><p>  if(day<10)s+="/0"+day;</p><p>  else s+="/"+day;</p><

117、p><b>  return s;</b></p><p><b>  }</b></p><p>  public void refreshContent(int year,int month,int day){</p><p>  String key=this.getDateKey();</p>

118、<p><b>  try{</b></p><p>  FileInputStream in1=new FileInputStream(file);</p><p>  ObjectInputStream in2=new ObjectInputStream(in1);</p><p>  table=(Hashtable)in2.r

119、eadObject();</p><p>  in1.close();</p><p>  in2.close();</p><p><b>  }</b></p><p>  catch(Exception ee) {}</p><p>  if(table.containsKey(key))&

120、lt;/p><p>  note.setText(table.get(key)+"");</p><p><b>  else</b></p><p>  note.setText("");</p><p><b>  }</b></p><p

121、>  public void save(int year,int month,int day){</p><p>  String logContent=note.getText();</p><p>  String key=this.getDateKey();</p><p><b>  try{</b></p><

122、;p>  table.put(key,logContent);</p><p>  FileOutputStream out=new FileOutputStream(file);</p><p>  ObjectOutputStream objectOut=new ObjectOutputStream(out);</p><p>  objectOut.wr

123、iteObject(table);</p><p>  objectOut.close();</p><p>  out.close();</p><p><b>  }</b></p><p>  catch(Exception ee) {}</p><p>  JOptionPane.show

124、MessageDialog(null,key+"當天的日記已成功保存!");</p><p><b>  }</b></p><p>  public void delete(int year,int month,int day){</p><p>  String key=this.getDateKey();</p&

125、gt;<p>  if(table.containsKey(key)){</p><p>  JOptionPane jo=new JOptionPane();</p><p>  int x= jo.showConfirmDialog(null,"要刪除"+year+"年"+month+"月"+day+"

126、日"+"的記錄嗎?", "!!!", JOptionPane.YES_NO_OPTION);</p><p>  if(x==jo.YES_OPTION){</p><p><b>  try{</b></p><p>  FileInputStream in1=new FileInputStr

127、eam(file);</p><p>  ObjectInputStream in2=new ObjectInputStream(in1);</p><p>  table=(Hashtable)in2.readObject();</p><p>  in1.close();</p><p>  in2.close();</p>

128、<p>  table.remove(key);</p><p>  FileOutputStream out=new FileOutputStream(file);</p><p>  ObjectOutputStream objectOut=new ObjectOutputStream(out);</p><p>  objectOut.writeO

129、bject(table);</p><p>  objectOut.close();</p><p>  out.close();</p><p>  note.setText("");</p><p><b>  }</b></p><p>  catch(Exception

130、 ee) {}</p><p><b>  }</b></p><p><b>  else{</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b> 

131、 }</b></p><p><b>  else{</b></p><p>  String m=""+year+"年"+month+"月"+day+"日"+"是空的";</p><p>  JOptionPane.showMess

132、ageDialog(this,m,"look!",JOptionPane.WARNING_MESSAGE);</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void export(){</p><p>  Str

133、ing pass=JOptionPane.showInputDialog("導出前請輸入你的密碼?");</p><p>  if(!pass.equals("1134120151")){</p><p>  JOptionPane.showMessageDialog(new JDialog(),"抱歉,你的密碼不正確不能導出!"

134、);return;</p><p><b>  }</b></p><p>  TreeMap map=new TreeMap(table);</p><p>  Set mapping=map.entrySet();</p><p>  File newfile=new File("日歷記事本1.txt&qu

135、ot;);</p><p><b>  try{</b></p><p>  PrintWriter out=new PrintWriter( newfile );</p><p>  for(Iterator i=mapping.iterator();i.hasNext();){</p><p>  Map.Entry

136、 me=(Map.Entry)i.next();</p><p>  out.println(me.getKey());</p><p>  out.println(me.getValue()+"\n\r" );</p><p><b>  }</b></p><p>  out.close();&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論