機房重構之餘額實時判斷

2021-08-26 20:48:00 字數 2510 閱讀 2364

機房重構經過近乙個月的努力,終於成型了!在優化的過程中,注意到非常多的問題,今天就來總結一下上機使用者的餘額實時判斷。

大家應該對網咖的收費系統有所了解,如果你上機的時候充值了5元,網咖的收費是每小時5元,也就是你的金錢只可以上機乙個小時,當快到乙個小時的時候,系統會提醒你的餘額不足,讓你充值,如果不充值,就會自動下機!同理機房收費系統也需要同樣的機制,要不然,老闆會賠錢的!哈哈!

說說之前的版本,沒有這個判斷機制,乙個卡片裡面有5元(大於最低金額),上機之後,如果使用者不下機,便可以一直上機,當使用者下機之後,會發現欠下鉅額的費用,這種機制已經不符合實際情況了。

1、要實現實時的判斷使用者的餘額,那就需要乙個計算使用者餘額的方法。

2、方法裡要注意對於不同型別的使用者,採用不同的收費政策。固定使用者和臨時使用者的收費策略不一樣。

3、這個方法要根據時間的間隔自動執行計算,並實時更新到使用者的餘額中。採用timer控制項。

4、計算出使用者的實時餘額後,還不行!還需要乙個判斷機制,判斷使用者的餘額是否充足。也就是將餘額的不同切位幾個不同的狀態,比如大於10元的狀態,不進行提示,不足10元的狀態,提醒使用者充值,然後不足5元的狀態,讓使用者下機。這種在不同的狀態間轉換的情況,讓我突然想起了設計模式中的狀態模式

2、結合設計模式中的狀態模式,很好的對使用者的餘額進行判斷,並進行不同狀態的提示!很方便!

1、首先需要封裝乙個計算餘額的方法

//定義計算固定使用者花費金額的方法,括號裡的是需要傳進來的引數,也就是基本收據中的引數。因為結算需要基本資料中的資料

public

double

regularuser(out

double casttime, double rate,double preparetime,double unittime,datetime startdate, datetime starttime, datetime enddate, datetime endtime)

else

//如果上機時間大於準備時間,計算

return castcash;//返回計算好的消費時間

}//臨時使用者的同理

public

double

casualuser(out

double casttime,double tmprate, double preparetime, double unittime, datetime startdate, datetime starttime, datetime enddate, datetime endtime)

else

return castcash;

}

2、狀態模式的建立

計算餘額的方法已經封裝好了,接下來建立狀態模式。

ps:我是按照設計模式的書,先把狀態模式基本的**敲出來了,然後根據自己的需要進行的改變,這也能看出來,自己對狀態模式的應用不夠熟悉。

public

abstract

class state//建立乙個抽象的狀態類

public

class context//建立了乙個環境類

public

int cardno

public

double limitcash

public

void

setstate(state s)//設定狀態的方法

public

void

checkbalance()//狀態模式中狀態轉換時執行的方法

}class concretestatec : state//具體的狀態類c

else}}

public

class concretestatea:state//具體的狀態類a

else}}

public

class concretestateb : state

else

}}

3、在客戶端中實現。

要想將這個實現,需要你已經完成了下機!如果你已經完成了下機的方法,並建立了相應的層。接下來就開始實現。

首先需要新增乙個timer控制項

在窗體的load事件中新增一下**。

timer1.interval = 60000;//計時器的計算時間間隔,這裡設定1分鐘,也就每隔一分鐘觸發一次事件

timer1.tick += new eventhandler(timer1_tick);

timer1.start();

private void timer1_tick(object sender, eventargs e)

catch (exception ex)

finally

else}}

else

catch (exception ex)

finally}}

}}

}}

未完,還將更改!

機房重構 動態更新餘額

之前的動態下機通過實時檢查資料庫,這會使程式增加負擔,這次將餘額更新到了label控制項中顯示,更新label控制項就可以了。顧客通過登入介面直接進入上機介面,將上機的資訊顯示在狀態列中,實時更新顯示餘額的label控制項,經過乙個晚上的上機如下 實在主窗體寫的,如下 更新餘額的timer事件 pr...

C 機房重構之實時更新餘額

根據自己設定的基本資料表查詢用卡使用者的基本資料,判斷每小時的單價。datatable dtbasic loginfacade.inquirybasicdatainfo basic 呼叫查詢基礎資料的方法 判斷使用者型別,如果時會員卡就返回會員卡的單價,否則就執行非會員卡的單價 if dtcard....

以太坊錢包之餘額該咋整?

自從做了錢包,餘額就一直是個不大不小的問題,說問題大吧,那是因為使用者看到自己的不對了,立刻 說其小是因為,其實錢包裡餘額是水中月亮,月亮還是那個月亮,你的錢還是你的錢,只是偶爾有點水波盪漾,影子有點模糊。由於eth的效能不像eos這麼屌,你剛轉賬立刻就到賬了 eth是需要一段時間的,就是這一段時間...