java課程設(shè)計(jì)--萬(wàn)年歷.doc
《java課程設(shè)計(jì)--萬(wàn)年歷.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《java課程設(shè)計(jì)--萬(wàn)年歷.doc(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 JAVA軟件項(xiàng)目設(shè)計(jì)1項(xiàng) 目 報(bào) 告11.設(shè)計(jì)分析:31.1需求分析31.2功能設(shè)計(jì)32.程序結(jié)構(gòu):43.各模塊功能及程序說(shuō)明:43.1 各種包的導(dǎo)入:43.2控件的初始化53.3繪制萬(wàn)年歷的界面63.4 增加控件63.5增加監(jiān)聽(tīng)73.6封裝操作84.源程序85.操作方法(流程)226.實(shí)驗(yàn)結(jié)果237.心得體會(huì):251.設(shè)計(jì)分析:1.1需求分析 對(duì)于萬(wàn)年歷系統(tǒng),其主要功能是:查看當(dāng)日日期(年、月、日)、查看當(dāng)時(shí)時(shí)間、查看其他年月的月歷、對(duì)選中的日期進(jìn)行標(biāo)識(shí)。主要使用流程是:查看萬(wàn)年歷系統(tǒng),查看其他月份或年份日歷,選中其他日期查看,查看當(dāng)日日期。1.2功能設(shè)計(jì)本程序要構(gòu)建的萬(wàn)年歷程序,其功能有
2、以下幾個(gè)方面:(1) 通過(guò)JDK環(huán)境運(yùn)行,實(shí)現(xiàn)圖像界面。(2) 能以月歷的形式顯示日期與星期。(3) 支持用戶自己用下拉形式來(lái)選擇年份和月份。(4) 通過(guò)點(diǎn)擊“更新時(shí)間”按鈕來(lái)刷新當(dāng)前時(shí)間。開(kāi)始程序初始化 獲取當(dāng)前系統(tǒng)時(shí)間 年份等數(shù)據(jù)繪制界面顯示結(jié)果 返回2.程序結(jié)構(gòu):3.各模塊功能及程序說(shuō)明:3.1 各種包的導(dǎo)入:import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Toolkit;import java.a
3、wt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;3.2控件的初始化contentP
4、ane = new JPanel(new BorderLayout();/ 主面板northPane = new JPanel(new BorderLayout(); / 放按鈕面板的面板centerPane = new JPanel(new GridLayout(7, 7); / 中間的日期(七行七列)面板buttonPane = new JPanel(); / 按鈕面板labelYear = new JButton(年份:); / 顯示年份文字labelMonth = new JButton(月份:); / 顯示月份文字buttonPreYear = new JButton(); / 下一
5、年的按鈕buttonPreMonth = new JButton();/ 下一月按鈕newTime = new JButton(更新時(shí)間);boxYear = new JComboBox(); / 年的下拉列表boxMonth = new JComboBox(); / 月的下拉列表ca = new GregorianCalendar();Jhour = new JTextField(2);Jminute = new JTextField(2);Jsecond = new JTextField(2);date = new JPanel();dateTime1 = new JLabel(時(shí));da
6、teTime2 = new JLabel(分);dateTime3 = new JLabel(秒);3.3繪制萬(wàn)年歷的界面public WanNianLi() this.setTitle(萬(wàn)年歷); this.setSize(500, 400); / 將面板居中處理 Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); int screenWidth = d.width; int screenHeight = d.height; this.setLocation(screenWidth - this.getWidth() / 2,
7、 (screenHeight - this.getHeight() / 2); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(true);3.4 增加控件/ 把按鈕放到了按鈕面板里buttonPane.add(labelYear);buttonPane.add(buttonPreYear);buttonPane.add(boxYear);buttonPane.add(buttonNextYear);buttonPane.add(labelMonth);b
8、uttonPane.add(buttonPreMonth);buttonPane.add(boxMonth);buttonPane.add(buttonNextMonth);/ 把按鈕面板放到了northPane中northPane.add(buttonPane, BorderLayout.CENTER);/ 把northPane和centerPane放到主面板中contentPane.add(northPane, BorderLayout.NORTH);contentPane.add(centerPane, BorderLayout.CENTER);contentPane.add(date,
9、BorderLayout.SOUTH);3.5增加監(jiān)聽(tīng)/給年份下拉列表添加事件監(jiān)聽(tīng)器boxYear.addActionListener(new ActionListener()/給月份下拉列表添加事件監(jiān)聽(tīng)器boxMonth.addActionListener(new ActionListener()/上一年的按鈕監(jiān)聽(tīng)buttonPreYear.addActionListener(new ActionListener()/下一年的按鈕監(jiān)聽(tīng)buttonNextYear.addActionListener(new ActionListener()/上一月的監(jiān)聽(tīng)buttonPreMonth.addAc
10、tionListener(new ActionListener()/下一月的監(jiān)聽(tīng)buttonNextMonth.addActionListener(new ActionListener()/更新時(shí)間按鈕的監(jiān)聽(tīng)newTime.addActionListener(new ActionListener() )3.6封裝操作/ 封裝給年份下拉列表賦值的操作private void initBoxYear() /封裝給月份下拉列表賦值的操作private void initBoxMonth() 4.源程序package 萬(wàn)年歷;import java.awt.BorderLayout;import ja
11、va.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFr
12、ame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class WanNianLi extends JFrame private int temp0 = 0;private int year = 0;private int month = 0;private int hour = 0;private int minute = 0;private int second = 0;Calendar ca = null;private JTextField Jhour
13、= null;private JTextField Jminute = null;private JTextField Jsecond = null;private JPanel contentPane = null;/ 主面板private JPanel northPane = null; / 放按鈕面板的面板private JPanel centerPane = null; / 中間的日期面板private JPanel buttonPane = null; / 按鈕面板private JPanel time = null; /時(shí)鐘面板private JPanel date = null;
14、private JButton labelYear = null; / 顯示年份文字private JButton labelMonth = null; / 顯示月份文字private JButton buttonPreYear = null; / 上一年按鈕private JButton buttonNextYear = null; / 下一年的按鈕private JButton buttonPreMonth = null; / 上一月按鈕private JButton buttonNextMonth = null;/ 下一月按鈕private JButton newTime = null;
15、private JComboBox boxYear = null; / 年的下拉列表private JComboBox boxMonth = null; / 月的下拉列表private JLabel labelDays = null; / 存儲(chǔ)天private JLabel dateTime1 = null;private JLabel dateTime2 = null;private JLabel dateTime3 = null;public WanNianLi() this.setTitle(萬(wàn)年歷);this.setSize(500, 400);/ 將面板居中處理Dimension d
16、 = Toolkit.getDefaultToolkit().getScreenSize();int screenWidth = d.width;int screenHeight = d.height;this.setLocation(screenWidth - this.getWidth() / 2,(screenHeight - this.getHeight() / 2);init(); / 封裝初始化主控件的操作this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizab
17、le(true);/ 初始化主控件private void init() contentPane = new JPanel(new BorderLayout();/ 主面板northPane = new JPanel(new BorderLayout(); / 放按鈕面板的面板centerPane = new JPanel(new GridLayout(7, 7); / 中間的日期(七行七列)面板buttonPane = new JPanel(); / 按鈕面板labelYear = new JButton(年份:); / 顯示年份文字labelMonth = new JButton(月份:)
18、; / 顯示月份文字buttonPreYear = new JButton(); / 下一年的按鈕buttonPreMonth = new JButton();/ 下一月按鈕newTime = new JButton(更新時(shí)間);boxYear = new JComboBox(); / 年的下拉列表initBoxYear();boxMonth = new JComboBox(); / 月的下拉列表initBoxMonth();ca = new GregorianCalendar();hour = ca.get(Calendar.HOUR_OF_DAY);minute = ca.get(Cale
19、ndar.MINUTE);second = ca.get(Calendar.SECOND);Jhour = new JTextField(2);Jhour.setText(hour+);Jminute = new JTextField(2);Jminute.setText(minute+);Jsecond = new JTextField(2);Jsecond.setText(second+);date = new JPanel();dateTime1 = new JLabel(時(shí));dateTime2 = new JLabel(分);dateTime3 = new JLabel(秒);dat
20、e.add(Jhour);date.add(dateTime1);date.add(Jminute);date.add(dateTime2);date.add(Jsecond);date.add(dateTime3);date.add(newTime);/ 把按鈕放到了按鈕面板里buttonPane.add(labelYear);buttonPane.add(buttonPreYear);buttonPane.add(boxYear);buttonPane.add(buttonNextYear);buttonPane.add(labelMonth);buttonPane.add(buttonP
21、reMonth);buttonPane.add(boxMonth);buttonPane.add(buttonNextMonth);/ 把按鈕面板放到了northPane中northPane.add(buttonPane, BorderLayout.CENTER);/ 初始化放日期的labellabelDays = new JLabel49; / 存儲(chǔ)天for (int i = 0; i labelDays.length; i+) labelDaysi = new JLabel(, JLabel.CENTER);centerPane.add(labelDaysi);boxYear.setSel
22、ectedItem(2013);boxMonth.setSelectedItem(12);YMD();/將第一界面設(shè)為系統(tǒng)當(dāng)前事件setDate();/ 把northPane和centerPane放到主面板中contentPane.add(northPane, BorderLayout.NORTH);contentPane.add(centerPane, BorderLayout.CENTER);contentPane.add(date,BorderLayout.SOUTH);this.add(contentPane);/更新時(shí)分秒newTime.addActionListener(new A
23、ctionListener() public void actionPerformed(ActionEvent e) Calendar ca = null;ca = new GregorianCalendar();int a = ca.get(Calendar.HOUR_OF_DAY);int b = ca.get(Calendar.MINUTE);int c = ca.get(Calendar.SECOND);Jhour.setText(a+);Jminute.setText(b+);Jsecond.setText(c+););/給年份下拉列表添加事件監(jiān)聽(tīng)器boxYear.addAction
24、Listener(new ActionListener()public void actionPerformed(ActionEvent e) year = (Integer)boxYear.getSelectedItem();setDate(););/給月份下拉列表添加事件監(jiān)聽(tīng)器boxMonth.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) month = (Integer)boxMonth.getSelectedItem();setDate(););/上一年的
25、按鈕監(jiān)聽(tīng)buttonPreYear.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) int resertYear = (Integer) boxYear.getSelectedItem();boxYear.setSelectedItem(resertYear-1););/下一年的按鈕監(jiān)聽(tīng)buttonNextYear.addActionListener(new ActionListener()Overridepublic void actionPerformed(A
26、ctionEvent e) int resertYear = (Integer) boxYear.getSelectedItem();boxYear.setSelectedItem(resertYear+1););/上一月的監(jiān)聽(tīng)buttonPreMonth.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) int resertMonth =(Integer)boxMonth.getSelectedItem();int resertYear = (Integer) bo
27、xYear.getSelectedItem();if(resertMonth = 1)if(resertYear = 1901)boxMonth.setSelectedItem(resertMonth);boxYear.setSelectedItem(resertYear);elseresertMonth = 12;boxMonth.setSelectedItem(resertMonth);boxYear.setSelectedItem(resertYear-1);elseboxMonth.setSelectedItem(resertMonth-1););/下一月的監(jiān)聽(tīng)buttonNextMo
28、nth.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) int resertMonth =(Integer)boxMonth.getSelectedItem();if(resertMonth = 12)resertMonth = 1;boxMonth.setSelectedItem(resertMonth);int resertYear = (Integer) boxYear.getSelectedItem();boxYear.setSelectedItem(res
29、ertYear+1);elseboxMonth.setSelectedItem(resertMonth+1););/ 封裝給年份下拉列表賦值的操作private void initBoxYear() for (int i = 0; i 1000; i+) boxYear.addItem(1901 + i);/封裝給月份下拉列表賦值的操作private void initBoxMonth() for (int i = 1; i = 12; i+) boxMonth.addItem(i);public void setDate() String tempDate = new String42;te
30、mpDate = initDate();/ 給前七個(gè)label賦屬性String logs = new String 日, 一, 二, 三, 四, 五, 六 ;/將logs數(shù)組中的值放到label中for (int i = 0; i 7; i+) labelDaysi.setText(logsi);/初始化label的顏色for (int i = 0; i labelDays.length; i+) labelDaysi.setForeground(Color.BLACK);/ 設(shè)置星期日的顏色為紅色for (int i = 0; i labelDays.length; i += 7) lab
31、elDaysi.setForeground(Color.red); / 設(shè)置星期六的顏色為藍(lán)色for (int i = 6; i labelDays.length; i += 7) labelDaysi.setForeground(Color.blue); /將日期放到label中,并把系統(tǒng)當(dāng)天的時(shí)間設(shè)為綠色for (int i = 7; i 49; i+) int t = 0;t = day();labelDaysi.setText(tempDatei-7);if(i = Calendar.getInstance().get(Calendar.DAY_OF_MONTH)labelDaysi+
32、t+6.setForeground(Color.GREEN);/設(shè)置面板第一次顯示的內(nèi)容void YMD()year=0; month=0; Calendar c=Calendar.getInstance();/獲得系統(tǒng)當(dāng)前日期 year=c.get(Calendar.YEAR); month=c.get(Calendar.MONTH)+1;/系統(tǒng)日期從0開(kāi)始算起 boxYear.setSelectedItem(Integer)year); boxMonth.setSelectedItem(Integer)month); /將某年某月中的日期放到一個(gè)數(shù)組中返回,包括前面的空余部分public
33、String initDate() String date = new String42;int sum = 0;int m = 0;for (int i = 1900; i year; i+) if (i % 4 = 0) & (i % 100 != 0) | (i % 400 = 0) sum = sum + 366; else sum = sum + 365;for (int nomonth = 1; nomonth = month; nomonth+) if (nomonth = 1 | nomonth = 3 | nomonth = 5 | nomonth = 7| nomonth
34、= 8 | nomonth = 10 | nomonth = 12) m = 31; else if (nomonth = 2) if (year % 4 = 0) & (year % 100 != 0) | (year % 400 = 0) m = 29; else m = 28; else m = 30;if (nomonth month) sum = sum + m;sum += 1;temp0 = (sum % 7);for (int p = 0; p temp0; p+) datep = ;for (int w = 1; w = m; w+) datetemp0+ = w + ;re
35、turn date;/獲取系統(tǒng)當(dāng)前月第一天離星期天有幾天public int day()int temp = 0;int sum = 0;int m = 0;for (int i = 1900; i year; i+) if (i % 4 = 0) & (i % 100 != 0) | (i % 400 = 0) sum = sum + 366; else sum = sum + 365;for (int nomonth = 1; nomonth = month; nomonth+) if (nomonth = 1 | nomonth = 3 | nomonth = 5 | nomonth =
36、 7| nomonth = 8 | nomonth = 10 | nomonth = 12) m = 31; else if (nomonth = 2) if (year % 4 = 0) & (year % 100 != 0) | (year % 400 = 0) m = 29; else m = 28; else m = 30;if (nomonth month) sum = sum + m;sum += 1;temp = (sum % 7);return temp;public static void main(String args) new WanNianLi();5.操作方法(流程
37、)5.1 制作萬(wàn)年歷的界面5.2 在界面上增加控件5.3 給事件增加監(jiān)聽(tīng)5.4給事件增加命令符5.5運(yùn)行調(diào)試6.實(shí)驗(yàn)結(jié)果6.1 獲取當(dāng)前時(shí)間6.2 獲取閏年2月的時(shí)間6.3獲取平年2月的時(shí)間6.4選擇2010年2月的時(shí)間7.心得體會(huì): 通過(guò)這次的項(xiàng)目設(shè)計(jì),我們學(xué)到了很多東西,下面就是這次項(xiàng)目設(shè)計(jì)的心得體會(huì):在這次的項(xiàng)目設(shè)計(jì)中,主要是運(yùn)用Java語(yǔ)言來(lái)編寫(xiě),并可運(yùn)用其他的技術(shù)。 在這次的項(xiàng)目設(shè)計(jì)中,我們主要運(yùn)用了Java語(yǔ)言的界面設(shè)計(jì),異常處理,Awt控件、Swing控件、util控件,輸入輸出流等,綜合運(yùn)用了Java語(yǔ)言。我們深刻面向?qū)ο笳Z(yǔ)言中類庫(kù)的強(qiáng)大功能,掌握了運(yùn)用Java中的類實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類的方法,為以后的面向?qū)ο笳Z(yǔ)言的自學(xué)奠定了基礎(chǔ)。在我們的系統(tǒng)中,還采用了Swing控件,輸入輸出流等技術(shù),還有一些沒(méi)有學(xué)過(guò)的技術(shù),這就要求我們?nèi)ゲ殚喯嚓P(guān)書(shū)籍。正是因?yàn)檫@樣,才鍛煉了我們的自學(xué)能力,為以后的學(xué)習(xí)打下了基礎(chǔ)。此外,我們還深刻的感受到了面向?qū)ο笳Z(yǔ)言中類的強(qiáng)大功能,掌握了運(yùn)用Java中類實(shí)現(xiàn)某些功能,通過(guò)這幾天的努力,我們組的萬(wàn)年歷終于設(shè)計(jì)編碼實(shí)現(xiàn)成功。在這個(gè)過(guò)程中,我們都學(xué)到了很多東西,同時(shí)也非常感謝鄧愛(ài)萍老師的幫助與指導(dǎo),在以后的學(xué)習(xí)中,我們還會(huì)加倍的努力學(xué)好專業(yè)知識(shí),并將所學(xué)知識(shí)運(yùn)用到實(shí)踐中去,以便牢靠掌握知識(shí)。
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案