建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > PHP教程 >

php程序设计实例(万年历)

时间:2011-01-08 12:47来源: 作者: 点击:
本文献上PHP程序设计实例之万年历  目录: 前言:..... 3 设计目的:..... 3 设计内容:..... 4 设计功能:..... 4 设计步骤:..... 4 需求分析:... 4 程序设计:... 4 万年历核心代码:... 6 附:万年历页面显示截图... 9 结语:... 9 前言: 为检验本学

本文献上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" style="font-size:24px;"


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")

{

$FontStyle="<strong>";

}

else

{

$FontStyle="";

}

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程序精华。但是,本程序定然存在很多纰漏,算法定然不严谨,我们会在以后的学习中继续改进,也一定会虚心接受有识之士的批评与指导,相信我们会在以后的路上越走越好,谢谢!

 

(责任编辑:admin)
织梦二维码生成器
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片