程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php程序設計實例(萬年歷)

php程序設計實例(萬年歷)

編輯:PHP綜合

本文獻上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程序精華。但是,本程序定然存在很多纰漏,算法定然不嚴謹,我們會在以後的學習中繼續改進,也一定會虛心接受有識之士的批評與指導,相信我們會在以後的路上越走越好,謝謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved