作者game0416 (凤狼)
看板NTUE-CS102
标题Re: [闲聊] 程设作业
时间Thu May 26 00:17:22 2011
人参,我觉得下份作业比较令人恐惧..吧
总而言之该来写我自己觉得拖稿一个月的网页小算盘hmm
虽然我也觉得拿jsp或php写小算盘,从很多角度来看都乱诡异的感觉
只是说,要学习form的使用,还有基本语法等等
好像也没其他正常点的东西可以写的样子
下页正文
--
姑且先不论详细
在做之前..简单分析一下小算盘有些什麽东西,实作有多少东西要注意
: 啊..是说这题目对win7使用者意外麻烦的是找不到目标程式参考_A_
介面来看,大概是两个区块
显示数值的一块区域,跟底下各个按钮两块
这边应该不算明确的大问题,前者是个textarea,後者是群button
再来是後台,也就是运算这部分来看
这个"数值"分为两个部分,一个是要显示在画面上的(我称为
前景)
另外一个是运算子之前,那一项不会显示在萤幕上的(
後景)
以及前次要求运算的
运算子
以一个数学式为例,与颜色对照在执行上,分别会存在哪个变数就会是
1 + 2 =
3
操作流程也蛮单纯的..点1 点+ 点2 点= 萤幕上就显示3
这样做得完...
我是觉得就拿80%,那个小数没严苛要求防呆,所以是吓人用的计分标准
--
嗯..所以让我们来从介面这部分看看..
html部分大原则还蛮单纯的
一个textarea,然後大量的submit按钮
这边可以注意两个点
一是所有的submit可以全部取为name相同,value不同
反正小算盘怎样都是一次一个指令,这样做会比较好取得进来的指令
可以统一用一套格式解决所有状况
另外一个是排版这件事的话...
不要想太多,开个n*m表格就能处理掉了
不要想调整什麽东西,时间花在应该花的地方吧
此外,依据程式码变数写法部分,可以用hidden栏位做简单保留值行为
反正小算盘没有安全性需求(?)
--
看程式码部分..
简单来看这两份作业,其实就是判别使用者submit的按键是什麽
然後对照作处理、存进应该存的变数就好
首先是jsp字串处理比较复杂的要用equals这个函式处理
php只要单纯$var == "text"就能解决,无脑的好帮手(?)
用前述1+2=3,这样做code范例来说明,应该是足够表现整个内容怎麽写了..
先做点基本前提的html部分
<form action="self.php" method="post">
<input type="submit" name="cmd" value="1">
<input type="submit" name="cmd" value="2">
<input type="submit" name="cmd" value="+">
<input type="submit" name="cmd" value="=">
</form>
--
首先,取得值蛮多方法..php来说,我是习惯post就用$_POST['hash'];来取得
然後呢..小算盘可以分为运算子与数值两种输入
然後数值部分全都是同一套处理流程,所以其实可以这样写判断
<?php
$cmd = $_POST['cmd'];
if ($cmd == "+"){
}
else if ($cmd == "="){
}
else{
}
?>
else内就是数值、小数点等等的这样
不做防呆的情况..数值都可以直接把输入得到的$cmd接在字串最後
以下页为例
--
假设既有数值 102
不管下一个输入是小数点,或其他数值
都表示会变成
102. 或 1023
在程式中,这都同样能用 $fn = $fn.$cmd; 处理掉
所以else里头就只要另外注意
如果是一开始没有值要先改为0
然後原本是0,要输入进其他数字而非小数点时,要取代过去即可
: fn即指前景数
再来看($cmd == "+")的情况
因为在小算盘的功能里头,+-*/同时会先把前面的运算式做次处理
所以这里要先检查有没有前一个运算子...这里用的变数是$pastcmd
只要存在的话,就照$pastcmd所表示的运算子处理,存进$fn
若不存在,或处理完後,就把$fn存进$bg
再把这次抓取的$cmd这个运算子,存进$pastcmd
喔有点复杂...来看看这页说明的code实际长相
--
<?php
$cmd = $_POST['cmd'];
$fn = $_POST['fn'];
$bg = $_POST['bg'];
$pastcmd = $_POST['pastcmd']
if ($cmd == "+"){
if ($pastcmd == "+")
$fn = $fn + $bg;
$bg = $fn;
$fn = 0;
$pastcmd = $cmd;
}
else if ($cmd == "="){
}
else{
if ($fn!=0 || $cmd=="." )
$fn = $fn.$cmd;
else
$fn = $cmd;
}
?>
--
好,所以因为有了 + 的部分
=也是差不多的方法,此外就是-*/也用差不多的方法就能解决
要记得,php会自动转型...所以运算上可以用这麽懒(?)的方式计算
针对0. 这样的字串,也会转型成 0 来算
至於特殊功能的部分,google "php math"
查查函式,直接对$fn开下去就是
有时候我不太懂这些评分要求的实质意义在哪(?)
至於MR MC M+ M-...查一下运作模式
多用几个变数就能处理了
--
啊对,如果你们很有种的话可以putty上去伺服器,跑去隔壁的资料夹cat看code
--
所恐惧的,不是没有知识的大众 所憎恨的,不是深沉幽暗的人心
而是自以为是的思考之声 而是自恃甚高的执法者
所毁灭的,不是温馨和谐的世界 这是我最後的期许,没有愤怒、没有悔恨
而是自欺欺人的梦境 只剩下,浑沌的死亡呼吸
节自 新月神话-弑王者
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 119.14.21.184
1F:推 jerry771210:感谢 05/26 00:19
2F:→ game0416:是我要谢给成绩的,哪有你谢的Q__Q 05/26 00:22
※ 编辑: game0416 来自: 119.14.21.184 (05/26 00:22)
3F:推 CaptainWill:有见地 05/26 00:24
4F:推 jerry771210:不负责任php教学:把"%"-->"?" , "var "-->"$" 05/26 00:35
5F:→ jerry771210:把所有的变数前面加上"$",".jsp"-->".php"就成了php 05/26 00:36
6F:推 SMUGEN:jsp版的如果写乾净清楚一点 php版的只要一下子就改好了 :D 05/26 00:39