JAVA課程設(shè)計--基于JAVA的萬年歷設(shè)計與實現(xiàn)_第1頁
JAVA課程設(shè)計--基于JAVA的萬年歷設(shè)計與實現(xiàn)_第2頁
JAVA課程設(shè)計--基于JAVA的萬年歷設(shè)計與實現(xiàn)_第3頁
JAVA課程設(shè)計--基于JAVA的萬年歷設(shè)計與實現(xiàn)_第4頁
JAVA課程設(shè)計--基于JAVA的萬年歷設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java課程設(shè)計報告課程設(shè)計題目:萬年 歷指導老師:學生姓名:專業(yè):學號:Java課程設(shè)計-萬年歷1、課程設(shè)計目的:這學期我們學習了Java語言,Java語言是面向?qū)ο蟮拈_發(fā)方法是當今世界最流行的開發(fā)方法,是當今流行的網(wǎng)絡(luò)編程語言。它具有面向?qū)ο蟆⒖缙脚_、分布應(yīng)用等特點。它不僅具有更貼近自然的語義,而且有利于軟件的維護和繼承。很多程序開發(fā)人員得第一選擇。為了進一步鞏固課堂上所學到的知識,深刻把握Java語言的重要概念及其面向?qū)ο蟮奶匦裕憻拰W生熟練的應(yīng)用面向?qū)ο蟮乃枷牒驮O(shè)計方法解決實際問題的能力,開設(shè)了Java程序設(shè)計課程設(shè)計。讓學生自己動手動腦,將書本上得知識運用到實踐當中去,使知識能更好得

2、融會貫通。為了達到這個目的,我們需要自己動手做一個Java的課程設(shè)計,在這個課程設(shè)計里我們需要根據(jù)我們手中現(xiàn)有得軟件與知識基礎(chǔ),獨立得將它完成,只有這樣,我們才能把理論變成實踐,將知識真正得做到學以致用。這次課程設(shè)計我主要研究了利用已學的Java知識編輯一個電子萬年歷。通過此次課程設(shè)計,來鞏固所學Java語言基本知識,增進Java語言編輯基本功,掌握JDK、 JCreator等開發(fā)工具的運用,拓寬常用類庫的應(yīng)用。并通過自己動手,自主得學習,對Java這門課程有更深得了解與認識。2、需求分析:2.1、 本程序要求:1、使用圖形用戶界面;2、本程序能夠?qū)崿F(xiàn)日期與星期查詢,同時顯示此時的時間。2.2

3、、 功能設(shè)計:本程序要構(gòu)建萬年歷程序,其功能如下:(1)通過窗口形式運行,實現(xiàn)界面功能;(2)以月歷的形式來顯示日期與星期;(3)為用戶提供年份與月份的下拉形式菜選擇年份與月份;(4)同時顯示查看時的時刻。3、課程設(shè)計的基本算法public class wnl extends JFrame implements ActionListener,ItemListenerDate date = new Date();private GregorianCalendar gregorianCalendar = new GregorianCalendar();/定義中英文字符數(shù)組存儲星期信息,用于轉(zhuǎn)換顯示

4、private String stringWeekEn = new String "SUN", "MON", "TUE", "WED","THU", "FRI", "SAT" ;private String stringWeekCn = new String " 星期日 ", " 星期一 ", " 星期二 ", " 星期三 "," 星期四 ", "

5、 星期五 ", " 星期六 " ;/定義存儲月份的信息數(shù)組,用于轉(zhuǎn)換顯示方式private String stringMonthEn = new String "Jan", "Feb", "Mar", "Apr","May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" ;p

6、rivate String stringMonthCn = "1月 ","2 月 ","3 月 ","4 月 ","5 月 ","6 月 ","7 月 ","8 月 ","9 月 ","10 月 ","11 月 ","12 月 "private String sysNowTime = new String6;/sysNowTime 用于存儲系統(tǒng)時間的變量pr

7、ivate String sysRunTime = new String6;private JLabel labelWeek = new JLabel7;private JLabel labelDay = new JLabel42;private JLabel labelTime = new JLabel();private JPanel panel1 = new JPanel();private JPanel panel2 = new JPanel();private JPanel panel3 = new JPanel();private JComboBox combo1 = new JC

8、omboBox();private JComboBox combo2 = new JComboBox();private JButton buttonToday = new JButton();private Border border = BorderFactory.createRaisedBevelBorder();private Border border1 = BorderFactory.createLineBorder(Color.cyan,3);public wnl (String title) super(title);for (int y = 1900; y < 2200

9、; y+) combo1.addItem(" "+ new Integer(y).toString()+" 年 ");for (int m = 0;m<12;m+)combo2.addItem(" "+stringMonthCnm);buttonToday.setText("現(xiàn)在時刻");setLayout(new FlowLayout();add(panel1);add(panel2);add(panel3);panel1.setLayout(new GridLayout(2,3,10,2);panel1.

10、add(combo1);combo1.addItemListener(this);panel1.add(combo2);combo2.addItemListener(this);panel1.add(buttonToday);/ buttonToday.addActionListener(this);labelTime.setFont(new Font(" 宋體 ",Font.PLAIN,16);labelTime.setForeground(Color.red);panel1.add(labelTime);Timer time = new Timer(1000,new T

11、imerListener();time.addActionListener(new TimerListener();/time.setRepeats(true);time.start();/labelTime.addAncestorListener(new TimerListener();panel2.setLayout(new GridLayout(7,7,10,10);panel2.setBackground(Color.white);for(int i=0;i<7;i+)labelWeeki = new JLabel();labelWeeki.setHorizontalAlignm

12、ent(0);if(i=0|i=6)labelWeeki.setBackground(Color.blue);labelWeeki.setForeground(Color.RED);labelWeeki.setFont(new Font(" 黑體 ",Font.BOLD,14);elselabelWeeki.setForeground(Color.BLACK);labelWeeki.setFont(new Font(" 新宋體 ",Font.PLAIN,14); labelWeeki.setText(stringWeekCni);panel2.add(l

13、abelWeeki);for(int i= 0;i<42;i+)labelDayi = new JLabel();labelDayi.setHorizontalAlignment(0);labelDayi.setText("");panel2.add(labelDayi);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e) System.exit(0); );setSize(300,300);setBounds(250, 200, 400, 360);setVisi

14、ble(true);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getSysDate();setNowDate();public void actionPerformed(ActionEvent ae)if(ae.getSource()=buttonToday)setNowDate();public void itemStateChanged(ItemEvent aa) setChangeDate();public int turnWeek(String week)int i;for(i=0;i<7

15、;i+)if(week.equalsIgnoreCase(stringWeekEni) break;return i;public int turnMonth(String month)/*int turnMonth(String month)*month 系統(tǒng)日期中的月,諸如JanFeb*return int* 返回一個整數(shù)值, 用于尋找stringMonthCn 數(shù)組中對應(yīng)的中文月份*/int i;for(i=0;i<12;i+)if(month.equalsIgnoreCase(stringMonthEni) break;return i;/*setNowDate()* 設(shè)置當前系

16、統(tǒng)日期*/public void setNowDate()setSysDate(getNowYear(),getNowMonth();getSysRunDate();setDateNull();combo1.setSelectedIndex(getShowYear() - 1900);combo2.setSelectedIndex(getShowMonth();setDays(getMonthDays(getNowYear(),getNowMonth(),getInitWeek(sysRunTime0),getNowDa y();labelTime.setText(sysNowTime3);l

17、abelTime.setHorizontalAlignment(0);/*Integer getShowYear()* 獲取組合框中應(yīng)該顯示的年份* /public void setSysDate(int year,int month)gregorianCalendar.set(year,month,1);public void setDateNull()for(int i=0;i<42;i+) labelDayi.setText(" ");public void setChangeDate()setSysDate(getComboYear(),getComboMon

18、th();getSysRunDate();setDateNull();setDays(getMonthDays(getComboYear()+1,getComboMonth()+1),getInitWeek(sysRunTime0),- 1);/* 返回所選年月的天數(shù),因為數(shù)組中的數(shù)值從0 開始,所以各月必須加1.*而 2 月 ,經(jīng)過是否為閏年判斷,選擇返回28或 29天 .* 其余月份為大月,返回31 天 .*/public int getMonthDays(int year, int month) switch (month) case 4:case 6:case 9:case 11:re

19、turn 30;/小月返回30 天case 2:if (gregorianCalendar.isLeapYear(year) /isLeapYear(year)確定當前紀元中的指定年份是否為閏年。return 29; else return 28;/閏年的二月返回29天,平年返回28 天default:return 31;/大月返回31 天/*int getComboYear()* 獲取組合框中的年份*/public void getSysDate()date = gregorianCalendar.getTime();sysNowTime = (date.toString().split(&

20、quot; ");public void getSysRunDate()date = gregorianCalendar.getTime();sysRunTime = (date.toString().split(" ");public int getComboYear()return combo1.getSelectedIndex()+1900;/*int getComboMonth()* 獲取月組合框中的整數(shù)值,* /public int getComboMonth()return combo2.getSelectedIndex();public int ge

21、tInitWeek(String initWeek) /*getWeekNow(String initWeek)*para nowWeek 系統(tǒng)日期中的星期* 返回當月中的1 號是從星期幾開始*/int nowWeek = 0 ;for(int i = 0;i<7;i+)if(initWeek.equalsIgnoreCase(stringWeekEni)nowWeek = i; break;return nowWeek;public int getNowYear()return Integer.parseInt(sysNowTime5);public int getNowMonth()

22、int nowMonth=0;for(int i=0;i<12;i+)if(sysNowTime1.equalsIgnoreCase(stringMonthEni);nowMonth=i;break;return nowMonth;public int getNowDay()return Integer.parseInt(sysNowTime2);public Integer getShowYear()return Integer.parseInt(sysNowTime5);public Integer getShowMonth() /*Integer getShowMonth()* 獲

23、取在組給框中顯示的中文格式月份: 如七月 八月等*/return turnMonth(sysNowTime1); public void setDays(int monthDays,int initWeek,int day) /*void setDays(int monthDays,int initWeek,int day)*para monthDays 本月天數(shù)* para initWeek 初始星期* para day 今天日* 設(shè)置月歷* /setDateNull();for(int i=initWeek;i<initWeek+monthDays+1;i+)if(i-initWee

24、k+1)=day)labelDayi.setBorder(border1);labelDayi.setForeground(Color.BLUE);labelDayi.setFont(new Font(" 黑體 ",Font.BOLD,20);else if(i%7=0)|(i%7=6)labelDayi.setForeground(Color.RED);elselabelDayi.setForeground(Color.BLACK);labelDayi.setText(String.valueOf(i-initWeek+1);for(int i=initWeek+monthDays;i<42;i+) labelDayi.setText("");class TimerListener implements ActionListener /AdapterDemo var=new AdapterDemo(" 萬年歷 ");public void actionPerformed(ActionEvent e) GregorianCalendar g = new GregorianCalendar();String clock = new String(g.getTime().toString

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論