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),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

2、融會貫通。為了達(dá)到這個目的,我們需要自己動手做一個Java的課程設(shè)計,在這個課程設(shè)計里我們需要根據(jù)我們手中現(xiàn)有得軟件與知識基礎(chǔ),獨立得將它完成,只有這樣,我們才能把理論變成實踐,將知識真正得做到學(xué)以致用。這次課程設(shè)計我主要研究了利用已學(xué)的Java知識編輯一個電子萬年歷。通過此次課程設(shè)計,來鞏固所學(xué)Java語言基本知識,增進(jìn)Java語言編輯基本功,掌握J(rèn)DK、 JCreator等開發(fā)工具的運用,拓寬常用類庫的應(yīng)用。并通過自己動手,自主得學(xué)習(xí),對Java這門課程有更深得了解與認(rèn)識。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è)置當(dāng)前系

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)確定當(dāng)前紀(jì)元中的指定年份是否為閏年。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)日期中的星期* 返回當(dā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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論