日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

机房收费系统学生下机结账小结

發布時間:2024/4/15 windows 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机房收费系统学生下机结账小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??

? 這幾天一直在考慮機房收費系統學生下機操作。學生下機,一則須要加入學生下機記錄信息;還須要計算學生在整

個上機過程中所花費的金額,而且更新學生剩余金額。那么如何做在性能上或者擴展上更好一些呢?

?操作?

?

? 1.加入學生下機信息

? 2.計算學生上機時間

? 3.依據上機時間來計算學生所花費的金額

? 4.更新學生的剩余金額

設計模式

?

在通過學生上機時間來計算學生所花費的金額這步操作上,須要進行一些條件分支語句的推斷。由于上機時間被分為

了三部分:準備時間、至少上機時間、上機時間。所以在步驟3中有大量的條件分支語句,從某種程度上看,這是一

種不好的現象。

?

為了解決問題,能夠增加設計模式來解除大量的條件分支語句的推斷。

?

?? 策略模式

http://blog.csdn.net/luckyzhoustar/article/details/27661807

????????

策略模式的使用,封裝了不同類型用戶之間計算消費金額的算法,對于以后的擴展極其有利。比方說假設以后,學生

能夠採取一小時一積分的形式,來兌換一些禮品或者一些其它的增值服務的話,那么策略模式就特別的easy擴展,僅僅

須要添加一個策略就能夠了。可是也有一些問題,假設全部同一時候強制下機的話,人數過多的話,須要不斷的計算消費

金額和更新后臺數據庫,easy導致系統崩潰的狀態。

?狀態模式?

http://blog.csdn.net/luckyzhoustar/article/details/27679497

?????

狀態模式的應用,僅僅只是簡單的接觸了if……else分支推斷的操作,對于系統以后假設在時間上有所擴展的話,比較有

優勢,比方說學生連續上機超過4小時的話,能夠免費添加一小時上網時間,這時候僅僅要簡單的添加一個狀態就可以,

也是比較easy擴展的。

職責鏈模式

http://blog.csdn.net/luckyzhoustar/article/details/27689679

???

職責鏈模式的應用跟狀態模式同樣也是解除了If……else分支推斷的操作,沒有太大實質性的意義。

小結?

? 關于以上三種模式對于學生下機計算消費金額的操作中,后兩種模式可能加起來有些牽強,僅僅是單純的為了解除

if……else分支推斷的耦合操作,沒有太大實質性的意義。而策略模式才是王道,才真真正正的符合這個場景。由于策

略模式從本身上來說,就是定義算法家族,分別封裝起來,讓它們之間能夠互相替換。

? 可是我們從三種模式中發現,假設一旦強制全部人下機的話,而且在上機人數過多的情況下,前臺須要不斷地與后

臺server打交道,可能會出現崩潰的狀況,為了解決問題,小編又有了新的想法。

建議:對于設計模式,在這個階段能夠大膽的嘗試創新,這也是對自己前段時間學習的一種磨練,不管用的好與壞這都無所謂。僅僅有你不斷的利用,你才會掌握設計模式的真諦。

觸發器

是SQL server 提供給程序猿和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的運行不是由程序調用,也不是手工啟動,而是由事件來觸發。

因此我們能夠通過觸發器的操作,在后臺數據庫中自己主動的實現更新學生下機金額的計算。我們把算法所有封裝到觸發器中,全然的解除前段與數據庫的聯系,當前段更新學生下機記錄的時候,直接觸發觸發器,自己主動的完畢學生剩余金額的更新操作。這樣在某種程度上就降低了當眾多人強制下機的時候,系統出現崩潰的狀況。

代碼

<span style="font-size:18px;"><span style="font-size:24px;">--假設這個存儲過程存在的話,就刪除 if(OBJECT_ID('tgr_UpdateOffline','tr') is not null) drop trigger tgr_UpdateOffline go create trigger tgr_UpdateOffline on onlineInfo for insert--插入觸發 as --定義變量 declare @regulareUser float,@instantUser float, @atleastTime float,@prepareTime float,@stuid char(11), @consumeTime float,@money float,@atleastMoney float select @regulareUser =RegularUser,@instantUser =instantUser,@atleastTime=atleastTime,@prepareTime =preparetime,@atleastMoney=AtLeastMoney from BasicData --計算出學生上機消費時間 select @stuid=stuid,@consumeTime= datediff(minute,convert(time(0),offTime),convert(time(0),onlineTime)) from inserted --開始推斷學生上機花費的時間 --begin...and操作封裝計算學生剩余金額操作 begin if @consumeTime -@prepareTime <0 set @money=0 else if @consumeTime -@prepareTime -@atleastTime <0 set @money=@atleastMoney else set @money=@instantUser/60 * @consumeTime end--最后更新學生剩余金額操作 update StudentInfo set money =money-@money where stuid=@stuid </span></span>

當然了為了能夠優化觸發器,在更新學生剩余金額表上能夠建立有關于學生卡號的索引,能夠提高執行速度。?

以上就是小編對于學生下機計算金額操作的小結,假設各位有更好的建議,能夠多多交流。

?

總結

以上是生活随笔為你收集整理的机房收费系统学生下机结账小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。