




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、制作年歷2.1實訓說明2.1.1實驗背景日歷是一種記載日期等相關信息的出版物,通常每頁顯示一日信息的叫日歷,每頁顯示一個月信息的叫月歷,每頁顯示全年信息的叫年歷。從日歷的誕生至今,它有多種的呈現形式,如掛歷、臺歷、年歷卡、電子日歷、萬年歷等。2.1.2功能描述在生活中,日歷對于人們的旅程規劃、行程安排和工作計劃等有著重要的作用。下面將使用現階段學習過的知識來實現年歷的制作。具體需求如下所示:根據用戶輸入的年份輸出對應的年歷用戶可輸入年份的取值范圍是15829999判斷31天的月份(1月、3月、5月、7月、8月、10月、12月)判斷30天的月份(4月、6月、9月、11月)實現閏年2月29天,平年
2、2月28天的功能將日期按照對應的星期輸出展示按照3行4列的方式展示給定年份的年歷確定年歷中每月的星期輸出順序為“日、一、二、三、四、五、六”接下來對本階段案例的實現思路進行系統的分析,將一個復雜的案例分解成多個階段,逐一進行實現,具體如下圖所示。判斷_世紀年or普通年判斷閏年or平年判斷331天or30天or28天or29天一制作一非周日的兇1號前填充空白=填充空白一XX年1月1日對應的星期+計算一兇1日為周日,用0表示年歷實現思路圖從上圖可以清晰的看到,實現年歷的制作流程共分為6個階段,第1階段和第2階段的判斷是為了確定第3階段2月份的天數,閏年2月份29天,平年28天。接著在第4階段將每月
3、的1日設置為周天,使用0表示,周一到周六分別使用16表示,循環輸出年歷。然后利用蔡勒公式計算用戶給定年份的1月1日對應的星期。最后對每月1號不是周日的月份日期,在輸出前進行空白填充。2.1.3必備技術(一)網頁技術(HTML+CSS)1. HTML網頁構建的基本設計;2. HTML網頁樣式的基本設計;(二)PHP開發語言1 .變量2 .運算符3 .if語句4 .for語句5 .1.4學時分配實訓課程學時安排可參考下表。學時實訓內容第1學時判斷世紀年和普通年判斷閏年和平年第2學時判斷每月最大的日期輸出年月日對應的日期6 .1.5實訓I目標1 .熟練掌握if、for、邏輯運算符的使用。2 .掌握編
4、程實現網頁年歷的生成。2.2 準備開發環境本項目支持如下軟件版本的運行環境:Apache2.22.4PHP5.37.1支持WampServer、XAMPP等集成環境2.3 實訓任務描述任務一:判斷世紀年和普通年【任務描述】通常來講,一百年是一個世紀,因此,只要用戶給定的年份除以100,余數為0則表示該年份為世紀年,否則為普通年。編寫PHP文件calendar.php,具體代碼如下所示。1 ?php2 =2017;*3 /判斷世紀年和普通年,4 if(5year%100=0)4”5 echo$year.,年是世紀年6 else+7 echoSyear.,年是普通年ebI在上述代碼中,變量$yea
5、r用于保存用戶給出的4位數字表示的年份,如2008表示2008年,1998表示1998年。當$丫32是世紀年時,表達式“$year%100”的結果為0,與0相等結果為真,則if語句判斷為真,輸出第5行提示語句,否則輸出第7行的提示語句。值得一提的是,第4行的判斷語句中,表達式“$year%100”的結果有兩種情況,分別是0和任意正整數,而任意正整數在條件判斷語句中會自動轉換成布爾類型值true,0轉換成false。因此,可以將第48行代碼修改成如下形式。1if(yeaT號10011echo.年是普通年以3 )else4 echo.1年是世維年5 h在程序開發中,若在不考慮程序運行的復雜程度,兩
6、種方式都可以。但若是要減少程序運行的復雜度,則建議使用第2種編寫方式。任務二:判斷閏年和平年【任務描述】閏年是為了彌補因人為歷法規定造成的年度天數與地球實際公轉周期的時間差而設立的。補上時間差的年份為閏年。其中,對于世紀年和普通年的閏年算法有所不同,具體如下:普通年閏年的判斷條件,需要同時滿足除以4余數為0且除以100余數不為0的兩種情況世紀年閏年的判斷條件,需要同時滿足除以400余數為0且除以3200余數不為0的兩種情況接下來,去掉上面輸出的提示信息,添加確定是閏年還是平年的判斷,繼續編寫PHP文件calendar.php,具體代碼如下。I1$leap=0;-2if(Syear學100+3i
7、f(SyeaH%4=0)占&(Syear皂100!=Q)4 $leap=1#-5 %6 elBe/7if($year&i4000)&$year%32C0!-0)上9$leap=1;gw|10卜上述第3-5行代碼用于判斷普通年是否為閏年,第79行代碼用于判斷世紀年是否為閏年。當為閏年時將變量$leap的值設置1,方便后面的判斷。此外,if判斷后若只有一條執行語句,則可以去掉“”,因此可以將上述第35行和第79行代碼修改成以下形式。if(year%4=0)&(5year看100!=)與1白曰口=1if($year%400=0)“($yeAt%32001=0)SLeap-1,值得一提的是,對干上述的
8、判斷還可以僅通過邏輯運算符完成,具體代碼如下.$leap=$year%4=0)&(5year3100!=0);-$leap-($yiear%400-0)&$year%3200!=0)任務三:判斷每月最大的日期【任務描述】繼續編寫calendar.php文件,實現每月最大日期的判斷。具體代碼如下所示。1for(5m=1/$m-12;(.2確定每月的最大日期,3if=1|gin=3|S|7|=8|5th=10|$ni12*45max_d-31;a5|elaeif($m-2)(.6=$Leap?25:287el&e”曰$maK_d-30”|10卜上述第3行代碼用于判斷1月、3月、5月、7月、8月、1
9、0月或12月時每月最大的日期為31,第56行用于判斷2月在閏年時最大的日期為29,普通年時為28,其余的月份最大的日期則是30。接著可以通過for循環進行測試查看,在上述第9行代碼后添加以下代碼,具體如下。for($d=1;=echo$d.6卜echo3在瀏覽器中運行calendar.php文件,效果如下圖所示。從圖中可以清晰的看出每個月共有多少天,以及各個月份天數的差別。,mi畫niA1c+C由lujirwMdkrKijr4hp育E12J4567810U121314151171619IQ212223M25冊27熊外JOV12JSb78910111214lilbL/1H192021z2JJ2A
10、JS62728i%4867gq1。It12B1415時171H19202L222324252627?SWW11j2JJ56789W1L121314LS)6P10192021222J2526272B29JO12M5678910LI12131413昉H181920212213242S26?7?82$WMJ2J456789W1112:m41S16171019?0212223J42S2627282H012U56789Wil12B14116171B15202L2223242S2627JO3112J456789inU1415|6171RJ9102122J4?526?7?8加認1J34567891IJ1L1
11、M314L&161720212J2425262726亞JO1254567B41011U13Hl&1617181920JL2223242526/7282SJO11J2345678910II1213141516L?19192021222324252627282SJOl?3d56789L0LI1314L5)617IB1920212223242526?72S3031任務四:輸由年月日對應的日期【任務描述】1 .分行輸出年歷獲取到每月共多少天后,接下來將每個月的日期按照星期的設置格式在表格中輸出展示。其中,關于如何實現7個日期一行的設計思路如下所示。(1)根據需求分析,得到星期輸出順序為“日、一、二、三
12、、四、五、六”。(2)設定星期使用06之間的7位數字進行表示,0表示星期日,1表示星期一,依次類推。(3)將用戶給定年份的每月1日對應的星期變量$w這里先假設為0(4)在循環每月的日期時,動態為星期變量$w加1,并判斷$w的值是否大于6,若大于6,重置為0。(5)當星期變量$w等于6且不是最后一天時,設置換行按照上面的設計思路,修改calendar.php文件,并去掉測試查看代碼。在確定每月的最大日期后添加日期變量$w,用于保存假設的某年某月1日對應的星期。具體代碼如下。1H循鄴輸出每月的日期.2for=1;$m-12*+$m3,/確定每月的最大日明5 /候設用.戶給定年份的1月1日為周日,使
13、用C表示-6 =。1etzho1*.$year.1年,.gm=1,;SeciioTBE55Af;9echo,10tor($d=1;$d-$max_d;+$d)-11 echot,.$d.七12 H如果是星期六且不是最后一天,則換行“13 tf&?d-$max_d)echoT*14 地置星期變動15 $w5M+1)6?0:+l;v1G打17echo,TIB上述第78行用于輸出日歷的標題和星期,第10行用于循環每月的日期,第11行用于在表格中輸出日期,第12行用于在表格中實現換行,即結束當前行,并開始下一行。第15行用于設置星期的變動。修改完成后,在瀏覽器中進行預覽,效果如下圖所示。分行展示年歷從
14、上述的預覽效果中可以看出,每月的日期按照星期的格式展示,但是每個日期對應的星期并不符合日期的算法。因此,接下來我們利用蔡勒公式計算出年月日對應的星期。2.按星期輸出年歷在完成對應星期的計算前,首先具體看一下蔡勒公式以及其涉及到的具體變量含義,具體如下。w=(d+1+2*m+3*(m+1)/5+y+y/4y/100+y/400)%7在上述給出的蔡勒公式中,共出現了4個變量,分別為w、v、m和do這些變量的具體含義如下所示。w:表示星期,其值取值范圍是06,0表示星期日,1表示星期一,依次類推。V:4位數字表示的年份,其有效可以計算的范圍是從1582年10月起。如2020表示2020年。m:表示月
15、份,其取值范圍是314,3表示3月,4表示4月,依次類推。值得注意的是,在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算。如2020年1月10日將要看作2019年的13月1日來計算。d:表示日,其取值范圍是131了解蔡勒公式的規定后,刪除calendar.php文件中設置的星期變量$w,在判斷每月的日期前添加以下代碼,具體如下:1 /根據蔡勒公式計算1月1日是星期幾.2 -$year-1;/年份減1*3 $m=13;/1月利用13表示一4 3d=15 $w=+1+2*$m+(int)3*+1)/5)+lint)/4)-(int)(5y/100)十Clnt)/400)%7;-在上述代
16、碼中,在利用蔡勒公式計算年月日對應的星期時,對于執行除法(/)的運算要利用強制類型轉換取整,防止出現小數的情況。其中,當某月的1號不是星期日時,我們需要在1號輸出前填充空白占位。繼續編寫calendar.php文件,添加填充空白的代碼。具體實現如下。甲2 for消d_1;Sd-Smax_d;卜3 /若某年某月1號不是星期日,在1號輸出前填充空白4 if($w&d=1)(5 echon6 ,7 echo11.?d.9 卜10.上述第4行代碼用于判斷當前日期為1號,且對應的星期不是星期日時,執行第5行代碼填充空白。這里是通過合并單元格的方式實現,當然還可以采用其他方式,如添加空白占位符。為了讓年歷的展示更加的精美,可按照個人喜好設置CSS樣式,參考效果如圖所示。zLAJLrIQ.IJ?Jl/D,的GC。WQh。a12O170M30月H-=HE5nH-=ZEBn5-=DanH-=Dfin12345i12)11234(23,56?g7t91011Q1)45719W.C70W1112H)11U13M,51
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國家紡市場消費渠道及營銷推廣模式建議報告
- 2025至2030中國寵物罐頭行業市場深度調研及供需趨勢及有效策略與實施路徑評估報告
- 2025至2030中國女式套穿鞋行業產業運行態勢及投資規劃深度研究報告
- 彩妝護膚 如何通過彩妝來維護肌膚健康
- 施工現場生態環境保護措施
- 國潮風下的小年夜故事
- 小學三年級數學三位數乘以一位數競賽自測例題大全附答案
- 四年級數學幾百幾十數乘以一位數水平檢測習題
- 一件小事800字(10篇)
- 《空間想象訓練:初中空間幾何教案》
- 譯林牛津版英語五年級上冊全冊課件【精品】
- 特發性血小板減少性紫癜病人的護理教學查房ppt
- (完整版)車間班組長績效考核表
- 日照旅游PPT介紹日照幻燈片模板
- 城市管理行政執法專題講座培訓材料優質課件
- 細胞生物學丁明孝5版考研題
- 關于與旅游發展集團成立合資公司的可行性研究報告
- 2022-2023學年北京市昌平區八年級(下)期末英語試卷(含解析)
- 佛山市順德區2023年數學六下期末學業質量監測試題含解析
- 2023年云南省中考地理真題及參考答案
- 稻盛和夫之六項精進課件
評論
0/150
提交評論