看板 NTUE-CS102 關於我們 聯絡資訊
人參,我覺得下份作業比較令人恐懼..吧 總而言之該來寫我自己覺得拖稿一個月的網頁小算盤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
jerry771210:感謝 05/26 00:19
game0416:是我要謝給成績的,哪有你謝的Q__Q 05/26 00:22
※ 編輯: game0416 來自: 119.14.21.184 (05/26 00:22)
CaptainWill:有見地 05/26 00:24
jerry771210:不負責任php教學:把"%"-->"?" , "var "-->"$" 05/26 00:35
jerry771210:把所有的變數前面加上"$",".jsp"-->".php"就成了php 05/26 00:36
SMUGEN:jsp版的如果寫乾淨清楚一點 php版的只要一下子就改好了 :D 05/26 00:39