java課程設計簡單日歷程序_第1頁
java課程設計簡單日歷程序_第2頁
java課程設計簡單日歷程序_第3頁
java課程設計簡單日歷程序_第4頁
java課程設計簡單日歷程序_第5頁
已閱讀5頁,還剩12頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、湖南第一師范學院信息科學與工程系課程設計報告題 目 JAVA簡易時間日歷程序 學生姓名 鄒躍玲 學 號 029 專業班級 07計算機應用技術一班 指導教師 伍智平 2009 年 12 月 18 日目 錄1. 課程設計任務書第 2頁2. 題目說明第 4頁3. 系統設計第 4頁4. 類及接口描述第 5頁5. 運行結果第 7頁6. 程序源代碼第 8頁7. 總 結第17頁8. 參考文獻第18頁2008級計算機Java課程設計安排計劃書指導老師:郭錦蘭 指導方式:集體輔導、分組討論研究一、 課程設計教學目的及基本要求1、 培養獨立的Java語言與算法設計方法,具備初步的獨立分析和設計能力;2、 學習軟件

2、開發過程的問題分析、系統設計、程序編碼、測試等基本方法和技能;3、 訓練綜合運用所學的理論知識和方法進行獨立分析和解決問題的能力;4、 訓練用系統的觀點和軟件開發一般規范進行軟件開發,培養軟件工作者所應具備的科學的工作方法和作風。5、 設計的題目要求達到一定工作量,程序能夠運行,并對標準的測試數據有正確的輸出結果。6、 按湖南第一師范學院信息科學與工程系課程設計報告寫作規范要求的書寫格式編寫出課程設計報告書,報告書不少于8頁(代碼不算)。二、 計劃安排1、 任務書下達時間:第15周2、 任務講解與動員:第15周3、 任務設計與輔導:輔導教師:伍智平輔導形式:以學生自行設計為主,教師現場解答學生

3、疑難問題。紀律要求:上課前學生簽到,課后學習委員交名單給老師。4、完成時間:第16周星期四三、課程設計課題與安排每位學生在下面列出的設計題目中選擇其中的一個獨立完成:課題詳細要求:參見教材13.2節課程設計的要求和選題(P408413)五、提交成果1、課程設計報告(電子版和打印版,格式參照湖南第一師范學院信息科學與工程系課程設計報告寫作規范)(注意:報告中一定要包括課程設計任務書,課程設計任務書的格式參加本文檔的附件1)2、源代碼(電子版和打印版)六、成績評定1、根據平時上機考勤(考勤20分);注重平時上機成績,教師要不定期檢查學生進度,學生不得以自己有私人電腦為借口而不來上機。2、根據程序運

4、行結果(上機演示30分);3、 根據Java課程設計報告,學生能對自己的程序面對教師提問并能熟練地解釋清楚(報告50分)4、無報告書者或者答辯不通過者,課程設計記0分。 指導教師:伍智平 2009年12月10日課程設計題目2. 題目說明通過編寫一個基于JAVA的應用系統綜合實例,自定義一個日歷組件顯示日期和時間并進行適當的功能擴充,實踐Java語言編程技術。3. 系統設計2.1 設計目標一個完整的程序應具有以下功能:1)顯示當月日歷、當前日期、當前時間;2)可查尋任意月以及任意年的日歷;3)使用圖形化界面能夠彈出對話框;5)正常退出程序。 2.2 設計思想設計一個類用來構成日歷系統的主窗口,然

5、后編寫一個框架類顯示時間和提示信息。在設計中應用了多種容器和控件。2.3 系統模塊劃分public static class CalendarTable(日歷類)public static void main(String args)public static class RollbyJFrame(滾動時間類)public class MyCalendar extends JApplet(主日歷框架類)圖1:簡易日歷的程序結構圖2.3.1 初始化: public void init()完成界面初始化,形成一個以掛歷形式顯示當前日期的窗口。 日歷描述: (1)public void update

6、View()改變日期后完成更新界面; (2)獲取系統日期并傳遞日期數據而且在人工改變日期后得出當天是周幾; (3)public static void main(String args)主函數完成系統各算法的調用并對主窗口的一些屬性進行設置; 滾動時間: 將時間以文本的形式在文本框中滾動播出,并能改變滾動的速度。4. 使用類及接口僅僅簡單說明類的功能,詳細資料請參看 JavaTM2Platform StandardEd. 6的電子文檔,常規的接口與包則省略不屑。/以下是日歷程序塊中使用的類package fancy; import java.awt.*; import java.awt.eve

7、nt.*; import java.util.*; /主要用此包中的日期和時間類import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*;/以下是對滾動時間程序塊所使用的類和接口,用到定時器類Timerimport java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;er;、/用于監聽鼠標單擊(焦點改變)事件import jav

8、a.awt.event.FocusEvent;/用于響應鼠標單擊(焦點改變)事件、import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.JSpinner;/讓用戶從一個有序序列中選擇一個數字或者一個對象值的單行輸入字段。import javax.swing.JPanel;import javax.swing.Timer;/在指定時間間隔觸發一個或多個 ActionEvent, 創建一個 Timer 對象,在該對象上注冊一個或多個動作偵聽器,以及使用 start 方法啟動該計時器。并配合事件監聽器支持

9、時間的滾動播放。import javax.swing.event.ChangeListener;import javax.swing.event.ChangeEvent;5. 運行結果與分析圖2:初始界面顯示日歷。圖3:點擊查看時間按鈕, 彈出時間消息對話框。圖4:滾動顯示當前時間。6. 程序源代碼/* * (#) MyCalendar.java * author fancy */日歷使用的類 import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Containe

10、r;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.util.Calendar;import javax.swing.JApplet;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFr

11、ame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JSpinner;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.ListSelectionModel;import javax.swing.Timer;import javax.swing.event.ChangeEvent;import javax.swing.event.Chan

12、geListener;import javax.swing.table.AbstractTableModel;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableModel;/日歷 public class MyCalendar extends JApplet public static final String WEEK_SUN = SUN; public static final String WEEK_MON = MON; public static final String WEEK_TUE

13、= TUE; public static final String WEEK_WED = WED; public static final String WEEK_THU = THU; public static final String WEEK_FRI = FRI; public static final String WEEK_SAT = SAT; public static final Color background = Color.yellow; public static final Color foreground = Color.black; public static fi

14、nal Color headerBackground = Color.blue; public static final Color headerForeground = Color.white; public static final Color selectedBackground = Color.blue; public static final Color selectedForeground = Color.white; private JPanel cPane; private JLabel yearsLabel; private JSpinner yearsSpinner; pr

15、ivate JLabel monthsLabel; private JComboBox monthsComboBox; private JTable daysTable; private AbstractTableModel daysModel; private Calendar calendar; private JButton button1; public MyCalendar() cPane = (JPanel) getContentPane(); public void init() cPane.setLayout(new BorderLayout(); calendar = Cal

16、endar.getInstance(); calendar = Calendar.getInstance(); JButton button1=new JButton( 單擊此處 查看時間 ); button1.setBounds(10,10,10,10); cPane.add(button1,BorderLayout.SOUTH); button1.addActionListener( new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) RollbyJFrame myrili=new R

17、ollbyJFrame(); JOptionPane.showMessageDialog(null, 您點擊了+e.getActionCommand().toString()+按鈕); ); yearsLabel = new JLabel(Year: ); yearsSpinner = new JSpinner(); yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, 0000); yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR); yearsSp

18、inner.addChangeListener(new ChangeListener() public void stateChanged(ChangeEvent changeEvent) int day = calendar.get(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.YEAR, (Integer) yearsSpinner.getValue().intValue(); int maxDay = calendar.getActualMaximum(Calen

19、dar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day maxDay ? maxDay : day); updateView(); ); JPanel yearMonthPanel = new JPanel(); cPane.add(yearMonthPanel, BorderLayout.NORTH); yearMonthPanel.setLayout(new BorderLayout(); yearMonthPanel.add(new JPanel(), BorderLayout.CENTER); JPanel yearPane

20、l = new JPanel(); yearMonthPanel.add(yearPanel, BorderLayout.WEST); yearPanel.setLayout(new BorderLayout(); yearPanel.add(yearsLabel, BorderLayout.WEST); yearPanel.add(yearsSpinner, BorderLayout.CENTER); monthsLabel = new JLabel(Month: ); monthsComboBox = new JComboBox(); for (int i = 1; i maxDay ?

21、maxDay : day); updateView(); ); JPanel monthPanel = new JPanel(); yearMonthPanel.add(monthPanel, BorderLayout.EAST); monthPanel.setLayout(new BorderLayout(); monthPanel.add(monthsLabel, BorderLayout.WEST); monthPanel.add(monthsComboBox, BorderLayout.CENTER); daysModel = new AbstractTableModel() publ

22、ic int getRowCount() return 9; public int getColumnCount() return 7; public Object getValueAt(int row, int column) if (row = 0) return getHeader(column); row-; Calendar calendar = (Calendar) MyCalendar.this.calendar.clone(); calendar.set(Calendar.DAY_OF_MONTH, 1); int dayCount = calendar.getActualMa

23、ximum(Calendar.DAY_OF_MONTH); int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1; int index = row * 7 + column; int dayIndex = index - moreDayCount + 1; if (index dayCount) return null; else return new Integer(dayIndex); ; daysTable = new CalendarTable(daysModel, calendar); daysTable.setCellS

24、electionEnabled(true); daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int colu

25、mn) String text = (value = null) ? : value.toString(); JLabel cell = new JLabel(text); cell.setOpaque(true); if (row = 0) cell.setForeground(headerForeground); cell.setBackground(headerBackground); else if (isSelected) cell.setForeground(selectedForeground); cell.setBackground(selectedBackground); e

26、lse cell.setForeground(foreground); cell.setBackground(background); return cell; ); updateView(); cPane.add(daysTable, BorderLayout.CENTER); public static String getHeader(int index) switch (index) case 0: return WEEK_SUN; case 1: return WEEK_MON; case 2: return WEEK_TUE; case 3: return WEEK_WED; ca

27、se 4: return WEEK_THU; case 5: return WEEK_FRI; case 6: return WEEK_SAT; default: return null; public void updateView() daysModel.fireTableDataChanged(); daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH), calendar.get(Calendar.WEEK_OF_MONTH); daysTable.setColumnSelectionInterval

28、(calendar.get(Calendar.DAY_OF_WEEK) - 1, calendar.get(Calendar.DAY_OF_WEEK) - 1); public static class CalendarTable extends JTable private Calendar calendar; public CalendarTable(TableModel model, Calendar calendar) super(model); this.calendar = calendar; public void changeSelection(int row, int col

29、umn, boolean toggle, boolean extend) super.changeSelection(row, column, toggle, extend); if (row = 0) return; Object obj = getValueAt(row, column); if (obj != null) calendar.set(Calendar.DAY_OF_MONTH, (Integer)obj).intValue(); public static void main(String args) JFrame frame = new JFrame(簡易時間日歷); f

30、rame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyCalendar myCalendar = new MyCalendar(); myCalendar.init(); frame.getContentPane().add(myCalendar); frame.setLocation(330,80); frame.setSize(360, 212); frame.setVisible(true); /滾動字public static class RollbyJFrame extends JFrame private JTextField

31、 text; private JSpinner spinner; private Timer timer; private JButton button; public RollbyJFrame() super(滾動時間); this.setSize(360,100); this.setBackground(java.awt.Color.lightGray); this.setLocation(700,120); Container c=getContentPane(); JButton button=new JButton(修改速度); this.add(button,East); butt

32、on.addActionListener(this); Calendar now = Calendar.getInstance();int hour=now.get(Calendar.HOUR);int minute=now.get(Calendar.MINUTE);int year=now.get(Calendar.YEAR);int month=now.get(Calendar.MONTH);int day=now.get(Calendar.DAY_OF_MONTH); text = new JTextField( Hello 當前時間是: +hour+:+minute+ +year+/+

33、month+/+day); this.add(text,Center); text.addFocusListener(this); /注冊焦點事件監聽器 timer = new Timer(136,this); timer.start(); JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT); this.add(panel,South); spinner = new JSpinner(); spinner.setValue(timer.getDelay(); panel.add(spinner); spinner.addChangeListener(this); this.setVisible(true); public void focusGained(FocusEvent e) /獲得焦點時 if (e.getSource()=text) timer.stop(); public void focusLost(FocusEven

溫馨提示

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

評論

0/150

提交評論