3/28/2011

成績寄送系統記錄

因為註冊組業務工作上需要:每次段考後需寄送成績單給導師檢閱、核對成績是否正確。而隨著年級班級數的增加,這項重複的工作也會越來越繁瑣。因為註冊組已先將全校的班級成績由學務系統抓下來按年級做成一個檔案,想了一下,應該只要將檔案打開,再按班級、學生數讀入,再分別按照班級、導師信箱及班級檔案寄送即可。

為了避免忘記,趁還記得的時候,先將相關的作業及用到的東西,將它記錄下來,以後若有需要再修改或用到,才找得到修改的地方,而不需從頭再看一次,還不一定找的到…


實際的作法:

  1. 先按年級、班級建立好導師的電子郵件,班級學生人數的csv檔。因為php可直接處理csv檔,若要處理Excel的檔案,還要借用其他物件、程式(也是在處理csv資料時,在網路上看到的)。初步只想先解決目前的問題,複雜的內容(直接抓取excel檔中的sheet)等以後有空再處理。

    • 因為要能上傳並在瀏覽器上正確顯示(系統是UTF-8)資料,所以基本資料需存成utf-8的編碼方式

    • 上傳的資料還要能線上修改



  2. 上傳年級成績檔案。

    • 將成績檔由試算表中另存成csv檔。因為Excel的檔案無法直接另存成csv格式,也不需要在線上修改成績,所以存成的csv檔就不再處理。而且在Windows的系統上若將csv檔編碼轉成utf-8的格式時,許多中文字反而會變成亂碼,就不再處理

    • 依序輸入學年度、學期、次,並以其做為上傳後新檔名,做為成績寄送時的讀取依據

    • 轉成csv的檔案,標題也需保留。

    • 可瀏覽已上傳檔案



  3. 以步驟2上傳的檔案寄送成績。

    • 第1次畫面上會出現各班成績表,因為主機系統是utf-8編碼,與上傳的csv檔編碼方式不同,故會出現亂碼。主要是再檢視內容各班的名單有無問題,亂碼無需理會

    • 確定後送出,會將各班的成績檔案以csv檔(ansi編碼)用附件個別寄到導師的信箱中




其他事項:

  1. 有、無標題列處理的參數不同。若無標題,則需修改do.php、scoremail.php程式中的相關參數。do這支是用來顯示在畫面上,scoremail這支是實際將檔案分成不同班級的csv(ansi)檔,並寄送至每個導師信箱

  2. 寄送附件目前以最簡便的系統mutt寄送,也不會有什麼編碼問題,也省了用php的mail()功能函數,還有一大堆語法

  3. 用到的想法或內容:

    • 將csv以陣列讀取、處理。用到相關陣列觀念。使用explode取出相關參數,使用substr取出相關參數

    • 使用檔案函數fopen,使用r僅讀資料,使用w覆寫,使用a附加。寫出各班檔案時,先使用w將舊的資料全覆寫,並加上標題列,再以a的方式,將陣列資料依序附加寫入

    • 資料先讀取能正確顯示後,再改寫成可以寫入或處理的程式,或將程式轉向至新程式

    • 最後再加上一些css語法與圖片,讓畫面稍微美觀些

    • 為求資料隱密,再加上簡易的認證



  4. 保持頭腦清醒,不然一個簡單的陣列資料處理,白白耗掉幾個小時

  5. 網路上的資訊與文件,需耗時去過濾一下。很多人用的,不一定有用,有時反而是誤導。而有時簡短幾行,卻有可能是解決問題的關鍵


有圖有真相…

[caption id="attachment_184" align="alignnone" width="150" caption="成績寄送處理程式"][/caption]

[caption id="attachment_206" align="alignnone" width="150" caption="成績寄送系統內部處理"]成績寄送系統內部處理[/caption]

沒有留言:

Raspberry Pi 3 安裝 LibreElec 介面中文化

將Raspberry pi 拿來作為媒體播放器,接上外接的1TB硬碟也沒有電源問題。安裝的是Kodi核心的LibreElec,不過介面是英文的。 介面中文化的方式:(進入設定) 1. 在Skin中,先將字型(Font)改為Airal(based),等它生效 2. Appe...