freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設(shè)計(jì)---物流配送管理系統(tǒng)-資料下載頁(yè)

2025-01-17 02:18本頁(yè)面
  

【正文】 public void Close() { ()。 } public int Execute(CommandType type, string mand, SqlParameter[] para) { OpenAndCreateComm(type ,mand ,para )。 int rtl = ()。 Close()。 return rtl。 } public ListT ExecuteM, T(CommandType type, string mand, [] para) where M : IRowMapper, new() where T : new() { ListT list = new ListT()。 OpenAndCreateComm(type, mand, para)。 = m。 DataTable dt = new DataTable()。 (dt)。 foreach (DataRow tmp in ) { IRowMapper rm=new M() 。 T t = (T)(tmp)。 (t)。 } Close()。 return list。 } }}通過泛型方法解決Execute的通用問題,徹底解決代碼冗余現(xiàn)在我們小組們能夠看到,在上端代碼中加粗的代碼段使用了相同的類TArea。那么上述代碼中的TArea的部分是否可以通過泛型來定義,也就是讓T來代替TArea?Public listT ExecuteT (CommandType type, string mand, SqlParameter[] para){ ListT list = new ListT()。 OpenDatabase(type, mand, para)。 = m。 DataTable dt = new DataTable()。 (dt)。 foreach (DataRow dr in ) {T tmp = SetData(dr)。(tmp)。 } return list。}當(dāng)我們小組們需要執(zhí)行這個(gè)Execute的時(shí)候,就需要寫如下的代碼:ListTArea list=ExecuteTArea(……)為每個(gè)數(shù)據(jù)對(duì)象定義屬性賦值索引類——T***RowMapper接下來,就需要為每個(gè)數(shù)據(jù)模型處理他們屬性上的賦值,既SetData方法。因?yàn)楫?dāng)前的方法時(shí)寫在DatabaseControl類中,該類的明確定義是只允許包含與數(shù)據(jù)庫(kù)有關(guān)的操作,而為對(duì)象賦值,并不完全屬于數(shù)據(jù)庫(kù)有關(guān)的操作,因此需要為每個(gè)數(shù)據(jù)類型再定義一個(gè)類,名稱可以為RowMapper,既為這個(gè)數(shù)據(jù)模型的屬性賦值。為了方便管理,我們小組們?cè)贒AL工程下建立一個(gè)文件夾,文件夾名就可以是RowMapper,在這個(gè)文件夾下,根據(jù)數(shù)據(jù)模型來建立類,既需要建立:TAreaRowMapper, TGuestRowMapper,TCycleRowMapper,TGuestCycleRowMapper及VDetailRowMapper,每個(gè)RowMapper的類都需要有一個(gè)SetData方法,參數(shù)就是DataRow對(duì)象,返回值就是當(dāng)前類所代表的數(shù)據(jù)模型,例如:Public class TAreaRowMapper{Public TArea SetData(DataRow dr){TArea tmp = new TArea()。 = new Guid(dr[AreaID].ToString())。 = dr[AreaName].ToString()。 = dr[AreaDesc].ToString()。return tmp。}}(其他同理)SetData方法主要的目的是將DataRow的數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)模型,并為模型的屬性賦值。使用接口和泛型方法將RowMapper與Execute中調(diào)用SetData部分關(guān)聯(lián)接下來,就需要考慮如何將這個(gè)RowMapper和Execute結(jié)合到一起。在進(jìn)行這個(gè)類的建立過程中,我們小組們發(fā)現(xiàn)了無論這個(gè)類的類名是什么,返回值是什么,在這個(gè)類中只有一個(gè)方法,而且參數(shù)是相同的,這就如同是一個(gè)不成文的規(guī)定是一樣的。那么我們小組們是不是可以將這個(gè)規(guī)則定義出來,然后規(guī)定只要是RowMapper的類都需要遵循這個(gè)規(guī)則呢?根據(jù)這個(gè)特點(diǎn),我們小組們便可以聯(lián)想到能夠定義類的規(guī)則的,只有繼承類或者繼承接口。由于繼承類時(shí)我們小組們需要為父類寫SetData方法,這不現(xiàn)實(shí),因此采用通過接口的方式來定義這個(gè)規(guī)則,讓所有RowMapper類都繼承這個(gè)接口。Public interface IRowMapper{ Object SetData(DataRow dr)。}Public class TAreaRowMapper: IRowMapper {……}繼續(xù)回到Execute部分:Public listT ExecuteT (CommandType type, string mand, SqlParameter[] para){ ListT list = new ListT()。 OpenDatabase(type, mand, para)。 = m。 DataTable dt = new DataTable()。 (dt)。 foreach (DataRow dr in ) {T tmp = SetData(dr)。(tmp)。 } return list。}再次碰到這種情況,****所填寫的位置必須是跟T類型相關(guān)的T***RowMapper。在方法Execute定義的過程中,我們小組們已經(jīng)定義了T類型,那么是否可以定義另外一個(gè)類型M,讓M來代表所有的T***RowMapper?Execute的再次修改如下:Public listT ExecuteT,M (CommandType type, string mand, SqlParameter[] para){ ListT list = new ListT()。 OpenDatabase(type, mand, para)。 = m。 DataTable dt = new DataTable()。 (dt)。 foreach (DataRow dr in ) {IRowMapper row=new M()。T tmp = (T)((dr))。(tmp)。 } return list。}至此,Execute方法就算是完成了,但目前我們小組們發(fā)現(xiàn),整個(gè)方法被VS IDE標(biāo)記為紅色浪線,表示代碼依然存在問題,而整個(gè)問題,就是我們小組們所使用的泛型類T和M并沒有滿足某種條件。例如:M不一定具備SetData方法,M和T也不一定具備實(shí)例化,這時(shí),我們小組們就需要使用到反省篩選器來將泛型類進(jìn)行篩選。Public listT ExecuteT,M (CommandType type, string mand, SqlParameter[] para) where M : IRowMapper, new() //要求M所代表的類必須繼承接口IRowMapper,且必須具備可實(shí)例化能力 where T : new() //要求T所代表的類必須具備實(shí)例化的能力這樣,Execute方法才算是完成了。五、收獲與心得經(jīng)過這次課程設(shè)計(jì),我們小組掌握了采用三層結(jié)構(gòu)開發(fā)軟件的流程和技巧。三層架構(gòu)分別是數(shù)據(jù)層、業(yè)務(wù)層,表現(xiàn)層。其中最重要的是數(shù)據(jù)層,它的功能是與數(shù)據(jù)庫(kù)交互,并將數(shù)據(jù)庫(kù)的結(jié)果集返回到業(yè)務(wù)邏輯層,編譯數(shù)據(jù)層最常用的知識(shí)點(diǎn)是泛型。業(yè)務(wù)邏輯層是將數(shù)據(jù)層的結(jié)果集進(jìn)行判斷,并將結(jié)果返回到表現(xiàn)層,從而實(shí)現(xiàn)增、刪、改、查等功能。這次課程設(shè)計(jì)不僅讓我們小組能夠?qū)λ鶎W(xué)的知識(shí)學(xué)以致用,提高了實(shí)踐動(dòng)手能力,而且也讓我們小組體會(huì)到了團(tuán)隊(duì)的力量,雖然我們小組們合作的非常愉快,但是隊(duì)員之間的爭(zhēng)議還是會(huì)有的,最后通過小組組長(zhǎng)協(xié)調(diào),大家共同討論達(dá)成共識(shí)。在我們小組們不懈的努力下,終于完成了課程設(shè)計(jì),但是其中也會(huì)有一部分代碼冗長(zhǎng)復(fù)雜,在系統(tǒng)異常處理方面也做得不夠,希望在今后的學(xué)習(xí)中,我們不斷提高和完善。 我們小組成員感謝龐英智老師以及企業(yè)教師徐鐵楠老師對(duì)我們的細(xì)心指導(dǎo)。 團(tuán)隊(duì)成員成績(jī)學(xué)號(hào)姓名成績(jī)11010601006高海丹11010601031王秋紅11010601022宋飛11010601009矯美麗11010601019牟天琪11010601004崔志偉11010601034張強(qiáng)11010601038趙映寰11010601025孫博教師評(píng)價(jià)企業(yè)教師評(píng)價(jià): 指導(dǎo)教師: 日期:校內(nèi)教師評(píng)價(jià): 指導(dǎo)教師: 日期:
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1