昨天晚上写的一个类,好玩的
时间:2007-01-30
来源:互联网
PHP代码:
<?php
/*
作者:№天♀与海
网站:http://xzy.ye55.com
本类实现的功能是自动把学生班级的编码转换成以下两种方式,
只需指定小学初中高中编码及入学年份,
本类会自己跟据现实中的年份来进行年级的调整。
有两种风格
第一种:你是初中2年级1班学生
第二种:初二(1)班
类调用方法:
$s=new classNj;
第一种风格
$s->banji("c-2005-1");
第二种风格
$s->banji2("c-2005-1");
*/
class classNj{
var $jb; //小学初中高中代码,x为小学,c为初中,g为高中
var $nf; //入学编号如2006年,四位编号
var $bh; //班号,如4班
var $jbs; //自动算出学生是小学还是初中或高中
var $nfs; //自动算出年级。
var $bjbm; //学生所在的班级编码格式 x-2005-3
var $m; //当前月份
function banji($bjbm)
{
$this->bjbm=$bjbm;
list($this->jb,$this->nf,$this->bh)=split('[-]',$this->bjbm);
switch ($this->jb){
case x:
$this->jbs="小学";break;
case c:
$this->jbs="初中";break;
case g:
$this->jbs="高中";break;
}
$this->nfs=date(Y)-$this->nf;
$this->m=date(m);
$eede="你是".$this->jbs.$this->nfs."年级".$this->bh."班学生";
if ($this->m>"09"){
$this->nfs++;
if($this->jb=="x"){
if($this->nfs>6) echo "你已毕业!";
else
{if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs; exit;} echo $eede;}
}
else {
if($this->nfs>3) echo "你已毕业!";
else {if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs; exit;} echo $eede;}
}
}
else{
if($this->jb=="x"){
if($this->nfs>6) echo "你已毕业!";
else
{if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs; exit;} echo $eede;}
}
else {
if($this->nfs>3) echo "你已毕业!";
else {if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs; exit;} echo $eede;}
}
}
}
function banji2($bjbm)
{
$this->bjbm=$bjbm;
list($this->jb,$this->nf,$this->bh)=split('[-]',$this->bjbm);
switch ($this->jb){
case x:
$this->jbs="小";break;
case c:
$this->jbs="初";break;
case g:
$this->jbs="高";break;
}
$this->nfs=date(Y)-$this->nf;
$this->m=date(m);
switch ($this->nfs){
case 1:
$this->nfs="一";break;
case 2:
$this->nfs="二";break;
case 3:
$this->nfs="三";break;
case 4:
$this->nfs="四";break;
case 5:
$this->nfs="五";break;
case 6:
$this->nfs="六";break;
}
$eede=$this->jbs.$this->nfs."(".$this->bh.")班";
if ($this->m>"09"){
$this->nfs++;
if($this->jb=="x"){
if($this->nfs>6) echo "你已毕业!";
else
{if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs;}else echo $eede;}
}
else {
if($this->nfs>3) echo "你已毕业!";
else {if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs;}else echo $eede;}
}
}
else{
if($this->jb=="x"){
if($this->nfs>6) echo "你已毕业!";
else
{if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs;}else echo $eede;}
}
else {
if($this->nfs>3) echo "你已毕业!";
else {if ($this->nfs<="0") {$this->nfs="你还没入学吧";echo $this->nfs;}else echo $eede;}
}
}
}
}
$s=new classNj;
$s->banji2("c-2005-1");
echo "<br>";
$s->banji2("g-2003-5");
echo "<br>";
$s->banji2("x-2004-4");
echo "<br>";
$s->banji2("g-2007-3");
?>
大家帮我看下哪里有错,或是哪里可以更简单,。。谢谢了。。我是新手。。
[ 本帖最后由 dmkf 于 2007-1-30 00:34 编辑 ]
作者: dmkf 发布时间: 2007-01-30
1:最好用访问修饰符private protected public 不然封装的意义不大,所以楼主赶快转到PHP5来
2:许多代码需要重构,类中的两个方法,重复的地方太多,而且做的事情太多了,方法应该细化,比如分别用几个内部方法(private)来获得入学编号,算出年级,输出信息等等,然后用两个服务方法(public)来调用这些内部方法达到目的。其实两个方法也完全可以用一个方法加上参数来实现。
面向对象设计的宗旨是可复用性和可维护性。如果按照楼主这样的设计,基本和面向过程没有什么差别。当然,我不是想贬低你的意思,呵呵,楼主继续努力。
给你推荐一本资料吧,在论坛原创区,刀客羽朋的 那本 《PHP面向对象》
相信对你帮助会很大。
作者: 玉面修罗 发布时间: 2007-01-30
作者: hobbs136 发布时间: 2007-01-30
作者: leehui1983 发布时间: 2007-01-30
作者: dmkf 发布时间: 2007-01-30
作者: 小竣 发布时间: 2007-02-02
引用:
原帖由 玉面修罗 于 2007-1-30 03:07 发表首先,我也是新手,我没完整看你的代码,不过我还是可以给你指出我认为不合理的地方:
1:最好用访问修饰符private protected public 不然封装的意义不大,所以楼主赶快转到PHP5来
2:许多代码需要重构,类中 ...
作者: zwws 发布时间: 2007-02-02
引用:
原帖由 <i>zwws</i> 于 2007-2-2 19:03 发表<br /><br />
<br />
这个是新手中的高手吧,哈哈
应该是新手中的超级高手了,呵呵
作者: emyshen 发布时间: 2007-02-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28