機房重構中上機功能相對好實現一些,下機用到了職責鏈模式和策略模式,職責鏈模式算時間,策略模式算消費金額
部分**
dal層
public class offdal:ioffidal
;string sql = "select*from card where cardno=@cardno";
datatable table = sqlhelper.executequery(sql, sqlparas, commandtype.text);
return table;
}//查詢student表
public datatable selectstudent_info(student_info student)
;string sql = "select * from student_info where cardno=@cardno"; //sql語句查詢
datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢
return dt;//返回值
}//查linelog表
public datatable selectlinelog(linelog line)
;string sql = "select * from linelog where cardno=@cardno"; //sql語句查詢
datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢
return dt;//返回值
}//查linelog表,填充下機日期
public datatable selectlinelog1(linelog line)//下機
;string sql = "select * from linelog where cardno=@cardno and offdate is null"; //sql語句查詢
datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢
return dt;//返回值
}public datatable updatelinelog1(linelog line)
;string sql = "update linelog set cardno=@cardno, offdate=@offdate,offtime=@offtime,mins=@mins,cash=@cash where cardno=@cardno"; //sql語句查詢
datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢
return dt;//返回值
}//下機,修改card表
public datatable updatecard(card card)
;string sql = "update card set balance=balance-@cash where cardno = @cardno"; //sql語句查詢
datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢
return dt;//返回值
}}
設計模式
namespace design_pattern
public linelog contextinte***ce(linelog line, basicdata basic)
}public abstract class strategy
public class strategyone : strategy
}public class strategytwo : strategy
}}
bll層
namespace bll
#endregion
return dt1;
}public datatable selectcard(card card)
//查學生表
public bool selectstudent_info(student_info student)
else
return flag;//返回flag
}//查上機表
public bool selectlinelog(linelog line)
else
return flag1;//返回flag1
}/// /// 下機
///
//////
//下機獲取下機日期
public boolean getoffdate(linelog line)
else
return flag2;
}//更新機日期
public datatable updateoffdate(linelog line)
//更新時間和餘額
public datatable updatemins(linelog line)
}}
ui層
#region 上機
private void btnup_click(object sender, eventargs e)
if (flag1 == false)//linelog表裡沒有卡號
if (flag2 != false)//下機日期為空,不可以上機
if (convert.toint32(dt.rows[0][2]) <= 1)//餘額不足
else
}#endregion
#region 下機
private void b***own_click(object sender, eventargs e)
else
else
}///flag接收學生表是否有卡號
///flag1接收上機表是否有卡號
///flag3接收上機表下機日期是否為空
//定義布林變數
bool flag1;
flag1 = off.selectlinelog(line);
bool flag3 = off.getoffdate(line);//接收b層offdate的值
datatable dt = off.updateoffdate(line);
if (flag1 == false)//上機表沒有卡號
else
else
} }}
#endregion
機房重構 下機 職責鏈模式 策略模式(理論篇)
第一次機房收費系統的時候,我們側重於功能的實現,對於大範圍的使用if.else,沒有太明顯的感覺。可當我們學完設計模式之後,才發現原來多次使用if.else,會使程式產生很高的耦合性,不便修改。對於同樣的下機內容,我們除了要用到七層的知識,可能最大的收穫就是去學習如何把設計模式運用到實踐中去了。1 ...
C 機房重構 下機(職責鏈模式)
職責鏈模式 職責鏈 當客戶提交乙個請求時,請求是沿著鏈傳遞,直至有乙個concretehandler物件負責處理,接收者和傳送者都滅有對方的明確資訊,且鏈中的物件自己也並不知道鏈的結構,僅需保持乙個指向其後繼者的引用。具體實現 在機房重構中職責鏈主要用於確定學生的消費時間,以下為具體的實現 抽象類p...
C 機房重構 下機之職責鏈模式
前言 說到設計模式,又熟悉又陌生,為什麼這麼說呢?熟悉是因為學過設計模式,明白了當時學習的例子 陌生是因為放到重構不會用,參考了很多部落格,才知道如何用這個職責鏈模式。內容 bll層 沒有設計準備時間,上機滿一分鐘即收費。public class chainbll public decimal co...