機房收費系統陸陸續續都要結束了,回顧自己敲機房的經歷,一路上真的收穫了不少。
技術篇
在實現功能的時候,有的東西以前接觸的不是很多,像資料匯出到excel,組合查詢,做報表等等,不過我們還是通過自己的思考和網路上的知識做到了。下面就具體分享一些具體的小細節
1.下手之前多乙份思考
if instr("insert,delete,update", ucase$(stokens(0))) then
cnn.execute sql
msgstring = stokens(0) & "query successful"
else
set rst = new adodb.recordset
rst.open trim$(sql), cnn, adopenkeyset, adlockoptimistic
set executesql = rst
msgstring = "查詢到" & rst.recordcount & "條記錄"
end if
在**中也寫到了關於insert,delete的內容,所以我們在遇到一些能使用update,delete 或是 insert 語句的時候,也可以試著直接使用一些這個語句。
比如說在新增和刪除使用者的窗體中,想要刪除某乙個使用者,就可以這麼寫
txtsql = "delect user_info where "
call executesql(txtsql, msgtext)
新增乙個新使用者時
txtsql = "insert into user_info values('" & txtuser.text & "','" & txtpwd.text & "','" & combouserlevel.text & "','" & txtname.text & _ "','" & head & "')"
call executesql(txtsql, msgtext)
更新某個使用者資訊
txtsql = "update user_info set userid = ' "
call executesql(txtsql, msgtext)
這樣就省去了很多**,而且節省了很多時間,還避免了插入的資料跟資料庫中的字段不對應的錯誤。
2.對功能不斷完善
以註冊使用者資訊為例,
首先註冊卡號為 「1011」的使用者,使用者資訊為張三的個人資訊,用了一段時間,張三退卡了,那麼1011這個卡號還可以再次註冊,而且使用者資訊為李四的資訊,這樣的情況可以嗎?
這個問題說明我們的程式還不夠完善,所以可以多加一些限定條件,比如說
txtsql = "select * from student_info where cardno= '" & trim(txtcardno.text) & "'" '查詢卡號
set mrc = executesql(txtsql, msgtext)
if mrc.eof = false then
if trim(mrc.fields(10)) = trim("不使用") then 』判斷是否已經退卡
a = msgbox("此卡已登出,是否要啟用?", vbyesno + vbquestion, "提示") '如果已退卡,詢問是否要啟用
if a = vbyes then
txtsql = "update student_info set status= '" & trim("使用") & "' where cardno = '" & txtcardno.text & "'"
call executesql(txtsql, msgtext)
exit sub
end if
end if
end if
通過以上**也可以看出,在這中條件下,卡號和使用者是一對一的關係。當然還有其他的處理方法,這只是其中一種,我覺得只要合理就可以。
3.多次重複的**該怎麼辦
物件導向的乙個好處就是封裝好的物件可以服用,我們在敲**的時候,不妨也可以這麼想,如果一段**總是重複實現,是不是可以寫成乙個公共的函式來呼叫呢?
比如說想要清空註冊窗體中的內容,是直接就寫 text1.text = " " 呢,還是有其他更好的辦法。這是在賈文靜同學的部落格中看到的一種辦法
for each ctrl in me.controls
if typeof ctrl is textbox then
ctrl.text = ""
end if
next
這裡用了乙個迴圈語句,就做到了,而且還避免了遺漏某些文字框的可能。
還有就是在優化的時候,比如說註冊使用者時班級填錯了
首先是txtclass. setfocus,
然後是txtclass.selstart = 0
txtclass.sellength = len(txtcardno.text)
其中每乙個資訊都有可能填錯,所以也可以把這幾行**拿出來單獨定義為乙個函式再呼叫。
程式中還有很多細節值得我們去思考,去優化,我們可以做的更好。
經驗篇
1.just to do it
記得剛開始敲機房的時候,就乙個登陸窗體就做了好幾天,**檢查了一遍又一遍,就是登陸不了,再加上這是第一次自己敲**,很受挫,就覺得自己做不下去了,就因為這個還跟**聊了一晚上,於是又有不得不再繼續進行,這不自己也做出來了嗎!所以有時候不能因為一點點困難就想到要放棄,沒有什麼事是過不去的,世上無難事,只要肯登攀!
2.學習生活化
一開始接觸機房,我們肯定對這個系統不是很了解,尤其是像一般使用者,操作員,管理員的職能範圍還不同,所以我們可以靜下來想想,生活中的很多地方都跟我們這個很相似,就像咱們圖書館的上機系統。
咱們去圖書館上網,在屋裡的老師就相當於一般使用者,可以執行一些簡單的查詢功能。當我們的卡里餘額不足時,就得去新圖書館找專門的老師充值,這個老師就相當於我們的操作員,可以註冊,對使用者充值,並執行一些相應的查詢。再高一級的負責人就相當於管理員,可以新增,刪除工作人員,像一般使用者,操作員,管理員等,並對相應的資料進行結賬,日結賬單反映了一天的收益情況,周結賬單的記錄就反映了一周的收益情況,管理者可以根據這一周的情況進行分析,並對接下來的工作作出指導。
我們也可以把這個系統和網咖的收費聯絡對比,也可以是其他的,不管怎麼理解,合理就好。
下面是對機房整體的回顧,還有每個窗體中用到的資料庫中的表,有的窗體中乙個功能就可能用到三四張表,所以要好好分析分析,乙個都不能落下。
裡面的資訊可能還有不完善的地方,還請大家多多指教。
linux 再回首 關於程序
1 全格式顯示系統中所有的程序資訊 ps ef 全格式顯示系統中所有的程序資訊 uid pid ppid c stime tty time cmd root 1 0 0 aug14 00 17 46 usr lib systemd systemd system deserialize 22 root...
再回首 回文字串
最長回文串 include include include define maxn 500 char buf maxn s maxn buffer 緩衝區 int p maxn int main 上述toupper函式如果c為小寫英文本母,則返回對應的大寫字母 否則返回原來的值 也就是在這個轉換的過...
再回首 我的自考之路
在寫這篇部落格之前,我翻看了去年寫的自考總結,結合這次自考的收穫,決定再次深刻的認識一下我們的自學考試。經濟基礎決定上層建築,思想的高度決定部落格的質量,對自考的認識態度決定自考的學習效果。我打算從學習思想 學習方法和總結三個方面來分析自考。俗話說得好,磨刀不誤砍柴工,解決了思想上的問題,扔掉套在我...