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

正文內(nèi)容

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

2025-06-04 16:13本頁面
  

【正文】 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)。 吉林省經(jīng)濟(jì)管理干部學(xué)院 吉林經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院 (tmp)。 } return list。 } 當(dāng) 我們小組 們需要執(zhí)行這個(gè) Execute的時(shí)候,就需要寫如下的代碼: ListTArea list=ExecuteTArea(?? ) 為每個(gè)數(shù)據(jù)對象定義屬性賦值索引類 —— T***RowMapper 接下來,就需要為每個(gè)數(shù)據(jù)模型處理他們屬性上的賦值,既 SetData方法。 因?yàn)楫?dāng)前的方法時(shí)寫在 DatabaseControl類中,該類的明確定義是只允許包含與數(shù)據(jù)庫有關(guān)的操作,而為對象賦值,并不完全屬于數(shù)據(jù)庫有關(guān)的操作,因此需要為每個(gè)數(shù)據(jù)類型再定義一個(gè)類,名稱可以為 RowMapper,既為這個(gè)數(shù)據(jù)模型的屬性賦值。 為了方便管理, 我們小組 們在 DAL工程下建立一個(gè)文件夾,文件夾 名就可以是 RowMapper,在這個(gè)文件夾下,根據(jù)數(shù) 據(jù)模型來建立類, 既需要建立: TAreaRowMapper, TGuestRowMapper, TCycleRowMapper,TGuestCycleRowMapper及 VDetailRowMapper,每個(gè) RowMapper的類都需要有一個(gè) SetData方法,參數(shù)就是 DataRow對象,返回值就是當(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)。 吉林省經(jīng)濟(jì)管理干部學(xué)院 吉林經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院 = 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)濟(jì)管理干部學(xué)院 吉林經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院 五 、收獲與心得 經(jīng)過這次課程設(shè)計(jì),我們小組掌握了采用三層結(jié)構(gòu)開發(fā)軟件的流程和技巧。三層架構(gòu)分別是數(shù)據(jù)層、業(yè)務(wù)層,表現(xiàn)層。其中最重要的是數(shù)據(jù)層,它的功能是與數(shù)據(jù)庫交互,并將數(shù)據(jù)庫的結(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ì)員之間的爭議還是會(huì)有的, 最后通過 小組組長協(xié)調(diào) ,大家共同討論 達(dá)成共識(shí)。 在 我們小組 們不懈的努力下,終于完成了課程設(shè)計(jì),但是其中也會(huì)有一部分代碼冗長復(fù)雜,在系統(tǒng)異常處理方面也做得不夠,希望在今后的學(xué)習(xí)中,我們不斷提高和完善。 我們 小組成員感謝龐英智老師以及企業(yè)教師徐鐵楠老師對 我們 的 細(xì)心 指導(dǎo)。 吉林省經(jīng)濟(jì)管理干部學(xué)院 吉林經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院 團(tuán)隊(duì)成員成績 學(xué)號(hào) 姓名 成績 11010601006 高海丹 11010601031 王秋紅 11010601022 宋飛 11010601009 矯美麗 11010601019 牟天琪 11010601004 崔志偉 11010601034 張強(qiáng) 11010601038 趙映寰 11010601025 孫博 教師評價(jià) 企業(yè) 教師評價(jià) : 指導(dǎo)教師: 日期: 校內(nèi)教師評價(jià): 指導(dǎo)教師: 日期:
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1