JAVA《萬年歷系統(tǒng)》課程設(shè)計(jì)報(bào)告附源碼要點(diǎn)

上傳人:簡****9 文檔編號:25522673 上傳時(shí)間:2021-07-26 格式:DOCX 頁數(shù):40 大?。?30.16KB
收藏 版權(quán)申訴 舉報(bào) 下載
JAVA《萬年歷系統(tǒng)》課程設(shè)計(jì)報(bào)告附源碼要點(diǎn)_第1頁
第1頁 / 共40頁
JAVA《萬年歷系統(tǒng)》課程設(shè)計(jì)報(bào)告附源碼要點(diǎn)_第2頁
第2頁 / 共40頁
JAVA《萬年歷系統(tǒng)》課程設(shè)計(jì)報(bào)告附源碼要點(diǎn)_第3頁
第3頁 / 共40頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《JAVA《萬年歷系統(tǒng)》課程設(shè)計(jì)報(bào)告附源碼要點(diǎn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《JAVA《萬年歷系統(tǒng)》課程設(shè)計(jì)報(bào)告附源碼要點(diǎn)(40頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、學(xué)號2013-2014學(xué)年 第二學(xué)期面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告題目: 萬年歷系統(tǒng)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級:姓名:學(xué)號:指導(dǎo)教師:成績:計(jì)算機(jī)與信息工程系2014年6月6日目錄1 設(shè)計(jì)內(nèi)容及要求 11.1 設(shè)計(jì)內(nèi)容 11.2 設(shè)計(jì)任務(wù)及具體要求 12概要設(shè)計(jì) 22.1 程序設(shè)計(jì)思路 22.2 總體程序框圖 33設(shè)計(jì)過程或程序代碼 43.1 各個(gè)模塊的程序流程圖及運(yùn)行界面 43.2 對關(guān)鍵代碼加以分析說明 74設(shè)計(jì)結(jié)果與分析 134.1 程序調(diào)試的結(jié)果 134.2 程序設(shè)計(jì)分析 135 小結(jié) 14致謝 15參考文獻(xiàn) 16源程序 17計(jì)算機(jī)與信息工程系 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告1設(shè)計(jì)內(nèi)容及要

2、求1.1 設(shè)計(jì)內(nèi)容萬年歷,實(shí)際上就是記錄一定時(shí)間范圍內(nèi)(比如100年或更多)的具體陽歷 或陰歷的日期的年歷,方便有需要的人查詢使用。在我設(shè)計(jì)的萬年歷中主要有:(1)使用圖形用戶界面來查詢用用戶所需的日期信息,符合日常軟件使用 規(guī)范。(2)按月份查詢,實(shí)現(xiàn)了顯示查詢 19012100年某月所有日期的陰陽歷對 照。(3)并且添加了重大節(jié)日與星座等信息,界面采用日常的星期與月份結(jié)合 的格式,方便查看與使用。(4)編寫萬年歷的課程設(shè)計(jì),是為了使同學(xué)們更加了解高級程序設(shè)計(jì)語言 的結(jié)構(gòu),掌握基本的程序設(shè)計(jì)過程和技巧,掌握基本的分析問題和利用計(jì)算機(jī)求 解問題的能力,具備初步的高級語言程序設(shè)計(jì)能力。為后續(xù)各門

3、計(jì)算機(jī)課程的學(xué) 習(xí)和畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)基礎(chǔ)。1.2 設(shè)計(jì)任務(wù)及具體要求利用JAVA語言編寫的萬年歷系統(tǒng)采用了多種 JAVA語句來實(shí)現(xiàn)多種功能。用 戶可以通過本程序的applet運(yùn)行界面來查找一整年某月的農(nóng)歷和陽歷,可以查 找用戶所想了解的某一天具體為星期幾,并且可以看到一些重大節(jié)日的具體時(shí) 問。要求:滿足設(shè)計(jì)萬年歷系統(tǒng)的目的,即當(dāng)用戶查詢年份與月份時(shí),系統(tǒng)就要 將這一年的某一月份的陰歷與陽歷全部顯示出來,并且附帶這一月份的重大節(jié) 日。當(dāng)用戶隨意改動(dòng)年份或月份時(shí)系統(tǒng)自動(dòng)顯示與星期對應(yīng)的日期。用戶點(diǎn)擊日期時(shí)系統(tǒng)會(huì)顯示具體星座信息。2概要設(shè)計(jì)2.1 程序設(shè)計(jì)思路(1) 總天數(shù)的算法:首先用if語句判斷

4、定義年到輸入年之間每一年是否為閏 年,是閏年,該年的總天數(shù)為 366,否則,為365。然后判斷輸入的年是否為定 義年,若是,令總天數(shù)S=1,否則,用累加法計(jì)算出定義年到輸入年之間的總大 數(shù),再把輸入年的一月到要輸出的月份之間的天數(shù)累加起來,若該月是閏年中的月份并且該月還大于二月,再使總天數(shù)加1,否則,不加,既算出從定義年一月一日到輸出年的該月一日的總天數(shù)。(2)輸出月份第一天為星期幾的算法:使總天數(shù)除以 7取余加2得幾既為星 期幾,若是7,則為星期日。(3)算出輸出月份第一天為星期幾的算法:算出輸出月份第一天為星期幾后, 把該日期以前的位置用空格補(bǔ)上,并總該日起一次輸出天數(shù)直到月底,該月中的

5、天數(shù)加上該月一日為星期幾的數(shù)字再除以7得0換行,即可完整的輸出該月的日歷。(4) 如果年份小于1900年則程序不予判斷。(5)公歷與農(nóng)歷的換算。公歷年對應(yīng)的農(nóng)歷數(shù)據(jù),每年三字節(jié),格式第一字節(jié) BIT7-4位 表示閏月月份,值為0為無閏月,算法:日期十年份+所過閏年數(shù)十月較 正數(shù)之和除7的余數(shù)就是星期但如果是在閏年又不到 3月份上述之和要減一天 再除7星期數(shù)為0。陰歷月份計(jì)算:46911幾個(gè)小月返回29天,2月經(jīng)過判斷是 否為閏年,選擇返回28或29天,其余月份為大月,返回31天。(6) 系統(tǒng)時(shí)間的設(shè)置。直接從系統(tǒng)得到時(shí)間,設(shè)置字體,背景,顯示框架等 等,繪圖就好了。382.2總體程序框圖開始份

6、或選擇月獲取當(dāng)年系統(tǒng) 時(shí)間和年份程序初始化提交年月變更數(shù)據(jù)計(jì)算與繪制屏幕結(jié)束 *圖1總體程序框圖3設(shè)計(jì)過程或程序代碼3.1各個(gè)模塊的程序流程圖及運(yùn)行界面(1)公歷轉(zhuǎn)農(nóng)歷流程圖與運(yùn)行界面流程圖運(yùn)行界面星娟生卜跚二星期三星現(xiàn)四跚丑星照六01 前節(jié)02三月廿二03三月廿三04咻芾05三月廿五06 三月曲07 三月時(shí)08三月廿二09 三月附10四月初一11陰用二12四月初三13坦斜14四月幗15醺初六16 四月毗17四月初118四九19四月冊20 四月21四月十二22甌+三23四月十四24四月十五25甌十六26四月+七27四月十八28四月十九29明廿十30四月廿一31四月廿二圖3公農(nóng)歷運(yùn)行圖(2)時(shí)間

7、調(diào)整程序流程圖流程圖圖4時(shí)間調(diào)整流程圖運(yùn)行界面圖5萬年歷運(yùn)行圖3.2對關(guān)鍵代碼加以分析說明(1)本次程序設(shè)計(jì)共用了 class MainCal extends JFrame implements,class CurrTimeLabel和class Lunar三個(gè)大類,用于繪制萬年歷,顯示萬年歷的系統(tǒng) 時(shí)間和完成農(nóng)歷與公歷的換算。這些類中又運(yùn)用了許多函數(shù),來完成月份的輸出, 背景的設(shè)置,特定日期的標(biāo)注等等。引用的類有:import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import ja

8、vax.swing.JPanel;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.awt.Font;import java.awt.event.ActionEvent;impo

9、rt java.awt.event.ActionListener;import javax.swing.Timer;(2)農(nóng)歷的顯示:要算出某年某月某日的農(nóng)歷日期,只能采用逐日遞推的方式,這里以1900年1月31的日期為依據(jù),它的農(nóng)歷日期為一九零零年大年初一, 調(diào)用日歷類可以算出所求日期與1900年1月31日相差多少大,設(shè)這個(gè)差值為offset,則用offset與19002100的農(nóng)歷年天數(shù)逐個(gè)相減,當(dāng) offset=0時(shí),可以 確定當(dāng)前農(nóng)歷年份。再用相減后得到的offset與得到的年份的農(nóng)歷月天數(shù)逐個(gè)相 減,同理,當(dāng)offset=0時(shí)可以確定農(nóng)歷月份。最后,Offset加上當(dāng)前月份的大 數(shù)就

10、可以得到農(nóng)歷日期了,至此,陽歷與農(nóng)歷的轉(zhuǎn)換算法得以實(shí)現(xiàn)。在排列陽歷 日期時(shí),調(diào)用陽歷與農(nóng)歷的轉(zhuǎn)換算法得到相應(yīng)農(nóng)歷日期,將對應(yīng)陽歷日期標(biāo)簽下的內(nèi)容設(shè)為農(nóng)歷日期,主要源代碼如下: public Lunar(Calendar cal) / cal.add(cal.get(Calendar.DAY_OF_MONTH),1);int monCyl;int leapMonth = 0;Date baseDate = null; try baseDate = chineseDateFormat.parse( 1900 1 月 31 日); catch (ParseException e) e.printSt

11、ackTrace(); / To change body of catch statement use/ Options | File Templates./求出和1900年1月31日相差的天數(shù)int offset = (int) (cal.getTime().getTime() - baseDate.getTime() / 86400000L);monCyl = 14;/用offset減去每農(nóng)歷年的天數(shù)/計(jì)算當(dāng)天是農(nóng)歷第幾天/ i最終結(jié)果是農(nóng)歷的年份/ offset是當(dāng)年的第幾天int iYear, daysOfYear = 0;for (iYear = 1900; iYear 0; iYe

12、ar+) daysOfYear = yearDays(iYear);offset -= daysOfYear;monCyl += 12;if (offset 0) offset += daysOfYear;iYear-;monCyl -= 12;/農(nóng)歷年份year = iYear;leapMonth = leapMonth(iYear);/ 閏哪個(gè)月,1-12leap = false;/用當(dāng)年的天數(shù)offset,逐個(gè)減去每月(農(nóng)歷)的天數(shù),求出當(dāng)天是本月 的第幾天int iMonth, daysOfMonth = 0;for (iMonth = 1; iMonth 0; iMonth+) /閏

13、月 if (leapMonth 0 & iMonth = (leapMonth + 1) & !leap) -iMonth;leap = true;daysOfMonth = leapDays(year); elsedaysOfMonth = monthDays(year, iMonth);offset -= daysOfMonth;/解除閏月if (leap & iMonth = (leapMonth + 1) leap = false;if (!leap) monCyl+;/ offset為0時(shí),并且剛才計(jì)算的月份是閏月,要校正if (offset = 0 & leapMonth 0 &

14、iMonth = leapMonth + 1) if (leap) leap = false; else leap = true;-iMonth;-monCyl;/ offset小于0時(shí),也要校正if (offset 0) offset += daysOfMonth;-iMonth;-monCyl;month = iMonth;day = offset + 1;(3)當(dāng)前系統(tǒng)時(shí)間的顯示:java.swing.Timer這個(gè)類可以方便地實(shí)現(xiàn)對時(shí)鐘時(shí)間的操作,Timer類大多用于計(jì)劃功能,這里用于刷新系統(tǒng)時(shí)間的顯示,javax.swing.Timer.Timer(int delay , Actio

15、nListene門istener)delay 可以設(shè)置隔多長 時(shí)間執(zhí)行任務(wù),listener即用于監(jiān)聽的事件,每隔一定時(shí)間執(zhí)行一次,這里 delay以毫秒為單位,設(shè)為1000,實(shí)際上就是一秒,這樣鬧鐘就能每秒鐘刷新一次, 保證時(shí)間顯示正確。它的部分源代碼如下:public class CurrTimeLabel extends JLabelprivate static final long serialVersionUID = 1L;/* * Define a second */private final static int ONE_SECOND=1000;/* * Timer Object

16、,use to refresh labels text */Timer timer=new Timer(ONE_SECOND,new ActionListener()public void actionPerformed(ActionEvent evt)setCurrTimeToText(););/* * Constructor * param strText */public CurrTimeLabel(String strText)super(strText);timer.start();/* Set current time to labels text* /private void s

17、etCurrTimeToText()this.setText(getCurrTime();this.setFont(new Font(宋體,F(xiàn)ont.BOLD, 18);/* Get current time,format is yyyy/MM/dd HH:mm:ss* return current time String* /private String getCurrTime()Calendar cal= Calendar.getInstance();SimpleDateFormatfromatter=newSimpleDateFormat(yyyy/MM/dd HH:mm:ss);Str

18、ing strCurrTime=fromatter.format(cal.getTime();return strCurrTime;(4)節(jié)日的顯示:節(jié)日的分布是固定的,較之節(jié)氣來說,更容易操作和實(shí)現(xiàn), 我假設(shè)每個(gè)月份三個(gè)節(jié)日,在排列中,只需取出每個(gè)月的三個(gè)節(jié)日的日期比較一 下,相等就把日歷信息修改一下。部分源代碼如下:if(i-initWeek+1)=sFtvDay)if(sFtvmonth-1k!=null)labelDaya1+1a2.setText(sFtvmonth-1k+);labelDaya1+1a2.setFont(new Font(黑體,F(xiàn)ont.BOLD, 8);if(k=

19、2)sFtvDay=sFtvDatemonth-1k;4設(shè)計(jì)結(jié)果與分析4.1 程序調(diào)試的結(jié)果本程序經(jīng)過設(shè)計(jì)并成功的調(diào)試了萬年歷系統(tǒng)的程序并且滿足了萬年歷系統(tǒng)應(yīng)該有的功能,例如:通過本程序的applet運(yùn)行界面來查找一整年某月的農(nóng)歷和陽歷,某一年某一月的日歷,并且還是實(shí)現(xiàn)了重大節(jié)日的查詢功能。這樣一來能更快的查詢我們所需要的信息,程序調(diào)試結(jié)果如下圖所示。圖6萬年歷調(diào)試結(jié)果4.2 程序設(shè)計(jì)分析在設(shè)計(jì)此程序時(shí),即使會(huì)滿足我們設(shè)計(jì)的要求但同時(shí)也存在小缺陷:(1)此萬年歷的功能不夠強(qiáng)大,調(diào)試后只能顯示一些重大的節(jié)日而不能所有 的節(jié)日都顯示出來。(2)設(shè)計(jì)這個(gè)萬年歷系統(tǒng)還有一個(gè)很大的遺憾就是沒能添加二十四

20、節(jié)氣,這 是美中不足的地方。(3)萬年歷本應(yīng)能查詢一萬年的日歷,但在此程序中只是能查詢一百多年的日歷5小結(jié)在這次課程設(shè)計(jì)中,主要是運(yùn)用 Java語言來編寫,并可運(yùn)用其他的技術(shù)。在我的系統(tǒng)中,還采用了 Swing控件、輸入輸出流等技術(shù),而這些知識都是我們 沒有學(xué)過的,這就要求我們?nèi)ゲ殚喯嚓P(guān)書籍。正因?yàn)檫@樣,才鍛煉了我的自學(xué)能 力,為以后的學(xué)習(xí)打下了基礎(chǔ)。此外,我還深刻感受到了面向?qū)ο笳Z言中類庫的 強(qiáng)大功能,掌握了運(yùn)用Java中的類實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用 類的方法,為以后的面向?qū)ο笳Z言的自學(xué)奠定了基礎(chǔ)。萬年歷系統(tǒng)程序的設(shè)計(jì)成功會(huì)讓快節(jié)奏的社會(huì)上的感到方便, 因?yàn)楝F(xiàn)在的社 會(huì)離不開時(shí)

21、間。他們只需要呆在家里就可以清楚的知道某一天的日期。 并且對人 們的工作也有所幫助,方便他們查詢某年某月的資料以及制作報(bào)表。 因此,我認(rèn) 為萬年歷在今后的發(fā)展空間很大,如果包裝成簡易軟件會(huì)有很高的利用價(jià)值, 我 們可以隨時(shí)隨地查閱。致謝在這次JAVA高級語言課程設(shè)計(jì)中,我的老師和同學(xué)給了我及大的幫助。特 別是我的指導(dǎo)老師兼授課教師陳磊老師,在此,我對他們表示感謝。感謝他們在 我面對困難時(shí)給了我?guī)椭椭С?,也感謝那些給我?guī)椭乃型瑢W(xué)。參考文獻(xiàn)1牛曉太.Java程序設(shè)計(jì)教程M,北京:清華大學(xué)出版社,2013.2朱福喜,傅建明.JAVA項(xiàng)目設(shè)計(jì)與開發(fā)范例M,北京:電子工業(yè)出版社, 2005.3劉寶

22、林.JAVA1序設(shè)計(jì)與案例M.北京:高等教育出版社,2006.4劉亞峰,紀(jì)超.JavaSE6.編程指南M.北京:人民郵電出版社,2007.115 Walter Savitch. Java完美編程M.清華大學(xué)出版社.第三版6 Philip Heller. 零起點(diǎn)Java應(yīng)用編程M.電子工業(yè)出版社7 Deitlel. Java 大學(xué)英語教程M.電子工業(yè)出版社8 Cay S.Horstmann. Java 核心技術(shù)M.電子工業(yè)出版社9汪曉平.精通Java網(wǎng)絡(luò)編程M.清華大學(xué)出版社.200510孫一平,陳立.Java網(wǎng)絡(luò)編程實(shí)例M.清華大學(xué)出版社.200411袁海燕,王文濤.Java實(shí)用程序設(shè)計(jì)M.人

23、民郵電出版社.200512鄭阿奇.Java實(shí)用教程M.電子工業(yè)出版社.200613羅依.Java SwingM.清華大學(xué)出版社.200614王濤,劉繼光.Java2 API大全M.電子工業(yè)出版社15 Joseph L.Weber. Using Java2m.電子工業(yè)出版社附錄1:源程序(1) MainCal.javaimport java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.Window;import javax.swin

24、g.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;public class MainCal extends JFrame implements ActionListener private static final long serialVersio

25、nUID = -1414990677727455448L;private JLabel datas口 = new 兒abel67; 顯示一月的日期private JLabel label = null;private JPanel panel_Header, panel_Week, panel_Calendar;private Calendar calendar = null;private JComboBox year_box = null;private JComboBox month_box = null;private int today;public MainCal() try UI

26、Manager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); catch (Exception e) e.printStackTrace();setTitle(萬年歷(邱麗麗JAVA課程設(shè)計(jì)2014-06-10);boundsWindowOnScreen(this,0.7,0.8);setVisible(true);calendar = Calendar.getInstance();today = calendar.get(Calendar.DAY_OF_MONTH);panel_Header = initializtion

27、_Header();panel_Week = initializtion_Week();panel_Calendar = initializtion_Calendar();setLayout(new BorderLayout();add(panel_Header,BorderLayout.NORTH);JPanel pan=new JPanel();add(pan,BorderLayout.CENTER);pan.setLayout(new BorderLayout();pan.add(panel_Week,BorderLayout.NORTH);pan.add(panel_Calendar,

28、BorderLayout.CENTER);initializtion_Data(calendar);private JPanel initializtion_Header() / 顯示表頭的 panelJPanel panel = new JPanel();panel.setPreferredSize(new Dimension(0, 43);year_box = new JComboBox();month_box = new JComboBox();JPanel panel_l = new JPanel();JPanel panel_r = new JPanel();兒abel label=

29、new JLabel(當(dāng)前時(shí)間:);CurrTimeLabel ct =new CurrTimeLabel(current time);panel_r.add(label);panel_r.add(ct);panel.setBorder(new EtchedBorder(5, Color.red, Color.BLUE);兒abel year_l = new 兒abel(情您選擇年份:, JLabel.RIGHT);兒abel month=new JLabel(月份:, JLabel.RIGHT);panel.setSize(525, 45);for (int i = 1900; i 2050

30、; i+)year_box.addItem(i);for (int j = 1; j = 12; j+)month_box.addItem(+j);year_box.setSelectedIndex(calendar.get(Calendar.YEAR) - 1900);month_box.setSelectedIndex(calendar.get(Calendar.MONTH);panel_l.add(year_l);panel_l.add(year_box);panel_l.add(month_l);panel_l.add(month_box);panel.add(panel_l,Bord

31、erLayout.WEST);panel.add(panel_r,BorderLayout.EAST);year_box.addActionListener(this);month_box.addActionListener(this);return panel;private JPanel initializtion_Week() / 顯示星期的 panelJPanel panel = new JPanel();panel.setPreferredSize(new Dimension(0, 33);panel.setLayout(new GridLayout(1,7);String colu

32、mnNames口 = 星期日,星期一,星期二,星期三,星期四,星期五,星期六;JLabel label = null;for (int i = 0; i 7; i+) label = new JLabel(columnNamesi,兒abel.CENTER);if (i = 0 | i = 6)label.setForeground(Color.RED);label.setBorder(new LineBorder(new Color(70, 130, 180);panel.add(label);return panel;private JPanel initializtion_Calenda

33、r() / 顯示日期的 panelJPanel panel = new JPanel();panel.setLayout(new GridLayout(6, 7);for (int i = 0; i 6; i+) for (int j = 0; j 7; j+) label = new JLabel(, JLabel.CENTER);datas皿=label;label.setBorder(new LineBorder(new Color(70, 130, 180);if (j = 0 | j = 6)label.setForeground(Color.RED);datasij.addMous

34、eListener(new List_MouseListener(); panel.add(label);return panel;public void clear_Data() / 清空內(nèi)容的for (int i = 0; i 6; i+)for (int j = 0; j 7; j+) datasij.setText();if (j = 0 | j = 6) datasij.setForeground(Color.RED);else datasij.setForeground(null); public void initializtion_Data(Calendar calendar)

35、 / 初始化函數(shù)/*節(jié)日和紀(jì)念日 格式:起始年(yyyy)十月(mm)十日(dd)* 0000表示起始年不明7HashMapString, StringsFestival = new HashMap();/ String 口sFestival_=sFestival.put(0101, 元旦)sFestival.put(0214,情人節(jié));sFestival.put(0308,婦女節(jié));sFestival.put(0312,植樹節(jié));sFestival.put(0401,愚人節(jié));sFestival.put(0501,勞動(dòng)節(jié));sFestival.put(0504,青年節(jié));sFestival.

36、put(0601,兒童節(jié));sFestival.put(0701,建黨節(jié));sFestival.put(0801,建軍節(jié));sFestival.put(0910,教師節(jié));sFestival.put(1001,國慶節(jié));sFestival.put(1031,萬圣節(jié));sFestival.put(1112,”孫中山誕辰);sFestival.put(1225,圣誕節(jié));sFestival.put(1226,毛澤東誕辰);/ ;/某月第幾個(gè)星期幾/起始年(4位)十月(2位)+第幾個(gè)(1位)+星期幾(1位)HashMapString, StringwFestival = new HashMap();

37、/ String 口wFestival=wFestival.put(0520,母親節(jié));wFestival.put(0620,父親節(jié));wFestival.put(1144,感恩節(jié));/ ;/農(nóng)歷99表示月最后一天HashMapvString, StringFestival = new HashMapvString, String();/ String lFestival=lFestival.put(0101,春 節(jié))lFestival.put(0102,大年初二);lFestival.put(0103,大年初三);lFestival.put(0115,元宵節(jié));lFestival.put(0

38、505,端午節(jié));lFestival.put(0707,七夕)lFestival.put(0815,中秋節(jié));lFestival.put(0909,重陽節(jié));lFestival.put(1208,臘八節(jié));lFestival.put(1299,除 夕)/ ;/ /this.calendar = calendar;today = calendar.get(Calendar.DAY_OF_MONTH);int month = calendar.get(Calendar.MONTH);int weekindexDay;int weekindexMonth;calendar.set(Calendar.

39、DATE, 1);while (calendar.get(Calendar.MONTH) = month) weekindexMonth = calendar.get(Calendar.WEEK_OF_MONTH) - 1;weekindexDay = calendar.get(Calendar.DAY_OF_WEEK) - 1;int day = calendar.get(Calendar.DAY_OF_MONTH);/ /String today_, month_;today_ = day 10 ? 0 + day : + day;month_ = month 10 ? 0 + (mont

40、h + 1) : + (month + 1);Lunar lunar = new Lunar(calendar);String lunar_ = lunar.toString();/ /if (null != sFestival.get(month_ + today_)lunar_ = + sFestival.get(month_ + today_);/ /String wFestival_ = month_ + (weekindexMonth) + (weekindexDay);if (null != wFestival.get(wFestival_) lunar_ = + wFestiva

41、l.get(wFestival_);/System.out.println(wFestival_);if (null != lFestival.get(lunar.numeric_md()lunar_ = + lFestival.get(lunar.numeric_md();/計(jì)算除夕Calendar temp_calendar = Calendar.getInstance();temp_calendar.set(calendar.get(Calendar.YEAR), month, day + 1); temp_calendar.add(Calendar.DAY_OF_MONTH,1);Lu

42、nar temp_lunar = new Lunar(temp_calendar);String temp_str = temp_lunar.numeric_md();if (temp_str.equals(0101)lunar_ = + lFestival.get(1299);/計(jì)算除夕結(jié)束/String day_str;if (day 10)day_str = + today_;elseday_str = + today_;day_str += + lunar_;if (day = today)datasweekindexMonthweekindexDay.setForeground(Co

43、lor.GREEN);datasweekindexMonthweekindexDay.setText(day_str);calendar.add(Calendar.DATE, 1);/ /public void actionPerformed(ActionEvent e) / 日期和年份的選擇更新int year = Integer.parseInt(year_box.getSelectedItem().toString();int month = Integer.parseInt(month_box.getSelectedItem().toString() - 1;calendar.set(

44、year, month, today);clear_Data();Initializtion_Data(calendar);class List_MouseListener implements MouseListener / 鼠標(biāo)移入時(shí)顯示的信JLabe11abe = null;String weeks口 = 星期日,星期一,星期二,星期三,星期四,星 期五,星期六;public String constellation(Calendar cal) String con = 水瓶座, 0122, 0221,雙魚座, 0222, 0321 , 白羊座, 0322, 0420 ,金牛座,0421

45、, 0521 , 雙子座, 0522, 0621 ,巨蟹座, 0621, 0721 , 獅子座, 0722, 0821 ,處女座, 0822, 0921 , 天秤座, 0922, 1021 , 大蝸?zhàn)?022, 1121 , 射手座,1122, 1221 , 摩羯座, 1222, 0121 ;int month = cal.get(Calendar.MONTH) + 1;int today = cal.get(Calendar.DAY_OF_MONTH);String month_str = month 10 ? 0 + month : + month;String today_str =

46、today 10 ? 0 + today : + today;String str = month_str + today_str;for (int i = 0; i = Integer.parseInt(coni1)& Integer.parselnt(str) = Integer.parseInt(con111)& Integer.parselnt(str) 1232) | Integer.parselnt(str) ) + 7, lab .indexOf();/ String lun=lab.substring(lab.indexOf()+4);String message = cent

47、er公元 + year_box.getSelectedItem() + 阡+ month_box.getSelectedItem() + 月+ Integer.parseInt(day) + 日;calendar.set(Integer.parseInt(year_box.getSelectedItem() .toString(), Integer.parseInt(month_box .getSelectedItem().toString() - 1, Integer .parseInt(day);Lunar lunar = new Lunar(calendar);message += ”+

48、 weeks(calendar.get(Calendar.DAY_OF_WEEK) - 1); message +=      + constellation(calendar)+ “ 農(nóng)歷;message += lunar.get_month() + 月+ lunar.get_Big_Or_Small() +      + lunar.get_date() + 日; ;/ message+=lunar.get_JQ();labe.setToolTipText(message);labe.setBackground

49、(new Color(112, 128, 144);labe.setOpaque(true);/ System.out.println(day+:+lun);public void mouseExited(MouseEvent e) / 鼠標(biāo)離開組件時(shí)調(diào)用。labe.setBackground(null);labe.setOpaque(true);public void mousePressed(MouseEvent e) /鼠標(biāo)按鍵在組件上按下時(shí)調(diào) 用。public void mouseReleased(MouseEvent e) /鼠標(biāo)按鈕在組件上釋放時(shí) 調(diào)用。static public

50、void boundsWindowOnScreen(Window window, double ratioX,double ratioY) Toolkit tk = window.getToolkit();Dimension scrn = tk.getScreenSize();int left=(int)(scrn.width/2-scrn.width*ratioX/2);int up=(int)(scrn.height-scrn.height*ratioY)/3);window.setBounds(left,up, (int) (scrn.width * ratioX),(int) (scr

51、n.height * ratioY);* param args*/public static void main(String口 args) / TODO Auto-generated method stubnew MainCal();SwingConsole.run(mc, 0.7, 0.8);boundsWindowOnScreen(new MainCal(),0.7,0.8);(2) Lunar.javaimport java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;i

52、mport java.util.Date;public class Lunar private int year;private int month;private int day;private boolean leap;final static String chineseNumber口 = 一,二,三,四,五,六,七, 八,九,十,十一,十二;final static String Big_Or_Small = 大,小,大?小,大,小,大,大 7小,大,小,大;static SimpleDateFormat chineseDateFormat = new SimpleDateFormat

53、(yyyy 年 MM 月 dd 曰);final static long lunarInfo = new long 0x04bd8, 0x04ae0, 0x0a570,0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0,0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50,0x06d40, 0x1ab54, 0x02b60, 0x0

54、9570, 0x052f2, 0x04970, 0x06566,0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0,0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0, 0x049b0,

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!