本文獻上PHP程序設計實例之萬年歷
目錄:
前言:..... 3
設計目的:..... 3
設計內容:..... 4
設計功能:..... 4
設計步驟:..... 4
需求分析:... 4
程序設計:... 4
萬年歷核心代碼:... 6
附:萬年歷頁面顯示截圖... 9
結語:... 9
前言:
為檢驗本學期的PHP程序設計學習成果,在講師提出進行PHP程序設計實訓時,經過本小組成員的集體討論,一致決定,以PHP萬年歷設計作為今年的實訓主題。“一寸光陰一寸金,寸金難買寸光陰”,不僅僅是為了完成學習任務,更重要的是希望通過萬年歷,警醒正在浪費時間的人們——陽光正明媚,勿虛度光陰。
設計目的:
檢驗本學期的PHP程序設計學習成果,本著學習的心態,了解有關PHP等程序的相關信息,警醒正在虛度光陰的人們,一寸光陰一寸金,寸金難買寸光陰。同時,希望通過本次制作過程,提高本小組成員之間的凝聚力,加強組員之間的思想交流,樹立團隊意識,為以後的大型的團隊合作項目打下基礎。
設計內容:PHP萬年歷制作
設計功能:實現本地計算機的時間、年月日、星期顯示,以及各年月之間的自由切換。
設計步驟:
需求分析:
通過本小組成員的商討,共同擬定了本次設計主題,以及需求分析。萬年歷,其主要功能就是達到對日期的查詢。本小組設想,每逢節日,用節日名取代日期顯示,並同步顯示陰歷,譬如4月5日清明節,在日歷上,實現其顯示為“清明節”,但由於技術問題,本設想目前沒有得以實施,故我們從最簡單的萬年歷著手,相信最簡單的就是最好的。
程序設計:
A. 本地日期與時間顯示:由於PHP技術支持問題,本程序求助於網友,采用Java程序語言:
Ø 本地日期顯示:
tmpDate=new Date();date=tmpDate.getDate();month=tmpDate.getMonth()+1;year=tmpDate.getYear();document.write
(year);document.write(".");document.write(month);document.write(".");document.write(date);document.write(" ");myArray=new
Array(6);myArray[0]="星期日 "
myArray[1]="星期一 "
myArray[2]="星期二 "
myArray[3]="星期三 "
myArray[4]="星期四 "
myArray[5]="星期五 "
myArray[6]="星期六 "
weekday=tmpDate.getDay();if(weekday==0|weekday==6)
{document.write(myArray[weekday])
}else
{document.write(myArray[weekday])
};
Ø 本地時間顯示:
var tags_before_clock = ""
var tags_after_clock = ""
if(navigator.appName == "Netscape") {
document.write('<layer id="clock"></layer>');
}
if (navigator.appVersion.indexOf("MSIE") != -1){
document.write('<span id="clock"></span>');
}
function showclock()
{
var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
var col = ":";
var spc = " ";
var apm;
if ( hour >12 )
{
apm="P.M.";
hour=hour-12;
}
else
{
apm="A.M.";
}
if (hour == 0) hour=12;
if (min<=9) min="0"+min;
if (sec<=9) sec="0"+sec;
if(navigator.appName == "Netscape")
{
document.clock.document.write(tags_before_clock
+hour+col+min+col+sec+spc+tags_after_clock);
document.clock.document.close();
}
if (navigator.appVersion.indexOf("MSIE") != -1)
{
clock.innerHtml = tags_before_clock+hour
+col+min+col+sec;
}
}
setInterval("showclock()",1000);
處理通過GET方法提交的變量
萬年歷核心代碼:
<?PHP
//<--
if($HTTP_GET_VARS[year]=="")
{
$HTTP_GET_VARS[year]=date("Y");
}
if($HTTP_GET_VARS[month]=="")
{
$HTTP_GET_VARS[month]=date("n");
}
$month=$HTTP_GET_VARS[month];
$year=$HTTP_GET_VARS[year];
當年份小於1971時,系統報錯
//-->
if($year<1971)
{
echo "出錯!";
echo "<BR>";
echo "<a href=$HTTP_SERVER_VARS[PHP_SELF]>Back</a>";
exit();
Html程序
}
?>
<table width="400" border="1" cellspacing="0" cellpadding="0" bordercolor="#E7E7E7"
align="center">
<tr align="center"><td colspan="2">
當月份超出1至12時的處理
<?PHP
if($month<1)
{
$month=12;
$year-=1;
}
上一年,下一年,上月,下月的連接處理及輸出
if($month>12)
{
$month=1;
$year+=1;
}
echo "<a href=$HTTP_SERVER_VARS[PHP_SELF]?year=".($year-1)."&month=".$month.">←</a>年<a href=$HTTP_SERVER_VARS
[PHP_SELF]?year=".($year+1)."&month=".$month.">→</a>";
?>
</td><td colspan="3"><?PHP echo $year."年".$month."月";?>
</td><td colspan="2">
<?PHP
echo "<a href=$HTTP_SERVER_VARS[PHP_SELF]?month=".($month-1)."&year=".$year.">←</a>月<a href=$HTTP_SERVER_VARS
[PHP_SELF]?month=".($month+1)."&year=".$year.">→</a>";
?></td></tr>
<tr align=center><td><font color="red">日</font></td>
<td>一</td>
<td>二</td>
<td>三</td>
取得任何一個月的一號是星期幾,用於計算一號是由表格的第幾格開始
<td>四</td>
<td>五</td>
<td>六</td>
</tr><tr>
<?PHP
$d=date("d");
$FirstDay=date("w",mktime(0,0,0,$month,1,$year));
$bgtoday=date("d");
function font_color($month,$today,$year)
{
$sunday=date("w",mktime(0,0,0,$month,$today,$year));
if($sunday=="0")
{
$FontColor="red";
}
else
當該日為星期天時,以紅色顯示,並改變其顯示風格
{
$FontColor="black";
}
return $FontColor;
}
function font_style($month,$today,$year)//
{
$sunday=date("w",mktime(0,0,0,$month,$today,$year));
if($sunday=="0")
{
$Font;
}
else
{
$Font;
}
return $FontStyle;
}
輸出某個月的一日位置
for($i=0;$i<=$FirstDay;$i++)
{
for($i;$i<$FirstDay;$i++)
{
echo "<td align=center> </td>\n";
}
if($i==$FirstDay)
{
echo "<td align=center ".bgcolor($month,$bgtoday,1,$year)."><font color=".font_color($month,1,$year).">".font_style
($month,1,$year)."1</font></td>\n";
if($FirstDay==6)
判斷1日是否星期六
{
判斷某月的總天數
echo "</tr>";
}
}
}
$countMonth=date("t",mktime(0,0,0,$month,1,$year));
for($i=2;$i<=$countMonth;$i++)
{
echo "<td align=center ".bgcolor($month,$bgtoday,$i,$year)."><font color=".font_color($month,$i,$year).">".font_style
($month,$i,$year)."$i</font></td>\n";
輸出由1日定位,隨後2日直至月尾的所有日期數
if(date("w",mktime(0,0,0,$month,$i,$year))==6)
{
判斷該日是否星期六
echo "</tr>\n";
}
}
?>
注:紅字部分為PHP程序核心代碼,請勿隨意復制或者使用,一經使用,本小組有權追究其法律責任。由於未經本小組授權而任意使用造成的後果,概不負責。
附:萬年歷頁面顯示截圖
結語:本程序最終得以完成,離不開小組成員的密切配合,齊心協力,解決了程序和頁面上的很多難題。當然,也離不開網友一葉扁舟的鼎力支持,以及老師平時傳授的PHP程序精華。但是,本程序定然存在很多纰漏,算法定然不嚴謹,我們會在以後的學習中繼續改進,也一定會虛心接受有識之士的批評與指導,相信我們會在以後的路上越走越好,謝謝!