企業(yè)人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGEPAGEIII畢業(yè)設(shè)計(jì)(論文)企業(yè)人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要在當(dāng)今社會(huì),互聯(lián)網(wǎng)空前的發(fā)展,給人們的工作和生活帶來了極大的便利和高效,信息化,電子化已經(jīng)成為節(jié)約運(yùn)營(yíng)成本,提高工作效率的首選??紤]到當(dāng)前大量企業(yè)的人事管理尚處于手工作業(yè)階段,不但效率低下,還常常因?yàn)楣芾淼牟簧鞫霈F(xiàn)紕漏。因此根據(jù)部分企業(yè)提供的需求,設(shè)計(jì)此企業(yè)人事管理系統(tǒng),以幫助企業(yè)達(dá)到人事管理辦公自動(dòng)化、節(jié)約管理成本、提高企業(yè)工作效率的目的。本企業(yè)人事管理系統(tǒng)采用C/S結(jié)構(gòu),主要對(duì)企業(yè)員工的信息以及跟人事相關(guān)的工作流程進(jìn)行集中的管理,方便企業(yè)建立一個(gè)完善的、強(qiáng)大的員工信息數(shù)據(jù)庫。它是以.NET2005.和SQL2005Express數(shù)據(jù)庫作為開發(fā)平臺(tái)。使用C#設(shè)計(jì)操作控件和編寫操作程序,完成數(shù)據(jù)輸入、修改、存儲(chǔ)、調(diào)用查詢等功能;并使用SQL2005數(shù)據(jù)庫形成數(shù)據(jù)表,進(jìn)行數(shù)據(jù)存儲(chǔ)。本文詳細(xì)介紹了企業(yè)人事管理系統(tǒng)的功能需求,系統(tǒng)設(shè)計(jì)和具體實(shí)現(xiàn)。并簡(jiǎn)要介紹了系統(tǒng)開發(fā)采用的過程方法。

關(guān)鍵詞

企業(yè)人事管理系統(tǒng);C/S;員工信息數(shù)據(jù)庫TheDesignandImplementationofEnterprisePersonnelManagementSystemBasedonC/SAbstractInoursociety,theunprecedenteddevelopmentofInternethasbroughtusgreatconvenienceandefficiency.Informatizationandelectronizationhavebecomethefirstchoiceofsavingoperationcostandimprovingworkefficiency.Manyenterprises'personneladministrationsystemslieinthephaseofmanualmanagementwhich阿惹inefficientandeasytogowrongbycarelessness.Therefore,thisMIS(ManagementInformationSystem)isdesigned

tomakethepersonneladministrationmorescientific,normativeandefficient.Thesystemadoptsthestructuremodeofclient/server(C/S),WindowsXPastheoperationsystem,SQL2005Expressasthebackgrounddatabase,andMicrosoftVisualStudio.NET2005asthedevelopingtool.Itcanhelpenterprisestoestablishaperfect,strongstaffinformationdatabase,whichfacilitatesthecentralizedmanagementofstaffinformationandworkflow.Thepaperexplainsthecoursedesign,systemdesignandimplementationofMIS,alsobrieflyintroducestheprocessofthesystemdevelopment.Keywords:PersonnelManagementSystem;C/S;EmployeeInformationDatabase第68頁企業(yè)人事管理系統(tǒng) 21前言 21.1應(yīng)用的目的與意義 21.2人事管理系統(tǒng)發(fā)展趨勢(shì) 31.2.2世界趨勢(shì) 31.2.3技術(shù)革新 31.2.4工作目標(biāo)和價(jià)值觀的改變 41.3系統(tǒng)調(diào)研 41.3.1社會(huì)可行性分析 41.3.2技術(shù)可行性分析 41.3.3經(jīng)濟(jì)可行性分析 51.3.4管理可行性分析 51.4研究?jī)?nèi)容 52開發(fā)工具及其語言特點(diǎn) 52.1VisualStudio.NET主要特點(diǎn)如下 52.2.1簡(jiǎn)潔的語法 72.2.2精心地面向?qū)ο笤O(shè)計(jì) 72.2.3與Web的緊密結(jié)合 82.2.4完整的安全性與錯(cuò)誤處理 92.2.5版本處理技術(shù) 92.2.6靈活性和兼容性 103.1SQL2005主要特點(diǎn) 103.1.1.NET框架 103.1.2XML技術(shù) 113.1.3ADO.NET2.0版本 113.1.4增強(qiáng)的安全性 113.1.5Transact-SQL的增強(qiáng)性能 113.1.6SQL服務(wù)中介 113.1.7通告服務(wù) 113.1.8Web服務(wù) 123.1.9報(bào)表服務(wù) 123.1.10全文搜索功能的增強(qiáng) 123.2C#與ADO.NET 123.2.1

C#中的數(shù)據(jù)庫訪問 123.2.2數(shù)據(jù)綁定 233.3SQL語言 243.3.1表定義語句 243.3.2視圖定義語句 243.3.3索引定義語句 243.3.4數(shù)據(jù)操縱語句 243.3.5INSERT語句 253.3.6UPDATE語句 253.3.7DELETE語句 253.3.8查詢語句 253.3.9條件查詢 253.3.10查詢排序 263.3.11統(tǒng)計(jì)查詢 263.3.12Groupby子句 263.3.13Distinct關(guān)鍵詞 263.3.14Top關(guān)鍵詞 263.3.15多表查詢 273.3.16多重查詢 273.3.17EXISTS關(guān)鍵詞 274系統(tǒng)需求分析 274.1系統(tǒng)流程圖如下 275致謝 49附錄F各模塊實(shí)現(xiàn)的主要源代碼 50F1.1登錄模塊的設(shè)計(jì)與實(shí)現(xiàn)的主要代碼 50} 51F1.2登陸實(shí)體類: 51F1.3員工管理模塊的設(shè)計(jì)與實(shí)現(xiàn)的主要代碼 52F1.3.1員工管理實(shí)現(xiàn)的主要代碼: 52F1.3.2部門管理實(shí)現(xiàn)主要代碼: 53} 55F1.3.3工資管理主要代碼: 55} 59F1.3.4考勤信息設(shè)計(jì)與實(shí)現(xiàn)主要代碼: 59} 62F1.4數(shù)據(jù)訪問類: 62} 65F1.5生日提醒主要代碼: 65F1.6啟動(dòng)第三方EXE文件操作類: 65} 66企業(yè)人事管理系統(tǒng)1前言1.1應(yīng)用的目的與意義人的管理是一切管理工作的核心。員工代表一個(gè)企業(yè)的形象,因而人事管理機(jī)制設(shè)計(jì)的好壞,直接影響一個(gè)企業(yè)的成敗。

員工的檔案管理是企業(yè)人事管理的基礎(chǔ),在企業(yè)員工普遍流失的今天,一個(gè)準(zhǔn)確而及時(shí)的人事管理系統(tǒng),有利于人事部門對(duì)員工流動(dòng)進(jìn)行分析、編制,為企業(yè)所需人員提供了保障。人力資源部那些重復(fù)的,事務(wù)性的工作交給HRP(HumanResourcePlanning,人力資源管理系統(tǒng))來解決,可以省去用戶以往人力資源管理工作的繁瑣、枯燥;用領(lǐng)先的人力資源管理理念,把人力資源管理的作業(yè)流程控制和戰(zhàn)略規(guī)劃設(shè)計(jì)巧妙地集合于一體;系統(tǒng)重點(diǎn)涉及到人力資源管理工作中的薪資、考勤、績(jī)效、調(diào)動(dòng)、基本信息、用戶管理以及用戶切換等方面,并有綜合的系統(tǒng)安全設(shè)置、報(bào)表綜合管理模塊??梢院芎玫貫橛脩舻娜肆Y源管理部門在對(duì)員工的成本管理、知識(shí)管理、績(jī)效管理等綜合管理給予幫助。以每個(gè)月中所發(fā)工資為例,其中包括考勤、人事信息變動(dòng)、獎(jiǎng)懲、遲到和曠工對(duì)本月的薪資計(jì)算都有影響,為了及時(shí)的計(jì)算發(fā)放工資往往要提前一個(gè)星期花費(fèi)大量時(shí)間,加班加點(diǎn)才能及時(shí)完成,而這樣做無論從工作效率還是準(zhǔn)確度方面,都不允許,而且還浪費(fèi)大量的人力財(cái)力。如果改用HRP管理做到高效、高精度,還可以減少管理時(shí)帶來的一些繁瑣的工作,節(jié)約管理帶來的開支。1.2人事管理系統(tǒng)發(fā)展趨勢(shì)1.2.2世界趨勢(shì)人力資源管理系統(tǒng)主導(dǎo)21世紀(jì),無論是發(fā)達(dá)國(guó)家還是發(fā)展中國(guó)家,對(duì)人力資源的戰(zhàn)略性意義都有了深刻的認(rèn)識(shí),并開始付諸行動(dòng)。世界公認(rèn),21世紀(jì)將是人力資源的世紀(jì);人力資源問題將主導(dǎo)整個(gè)21世紀(jì)甚至更為遙遠(yuǎn),這種狀況的變化起因于競(jìng)爭(zhēng)壓力。目前,世界經(jīng)濟(jì)趨向全球化。世界經(jīng)濟(jì)的全球化過程和國(guó)家的開放過程,要求組織的管理部門降低管理成本以減少競(jìng)爭(zhēng)壓力和增強(qiáng)競(jìng)爭(zhēng)能力。對(duì)于不同的組織,人力資源成本在總成本中的比例是不一樣的。1.2.3技術(shù)革新無論是現(xiàn)在還是將來,工業(yè)的發(fā)展越來越多地取決于科學(xué)和技術(shù)、知識(shí)與技能。高新科技產(chǎn)業(yè)更是如此。這不僅要求員工尤其是技術(shù)人員掌握新的科學(xué)知識(shí)和技術(shù)能力,而且更重要的在于要求員工深入而快捷地掌握和應(yīng)用這些知識(shí)和技能。這就導(dǎo)致了兩個(gè)問題。第一,隨著這種技術(shù)革新的發(fā)展和知識(shí)更新速度的加快,人們有更多的職業(yè)選擇機(jī)會(huì)。第二,伴隨著這種發(fā)展以及職業(yè)選擇機(jī)會(huì)的增多,人力資源管理活動(dòng)和頻繁程度加?。欢疫@種活動(dòng)對(duì)科學(xué)技術(shù)的要求與它的反應(yīng)程度也更高了,進(jìn)而提高了人力資源成本。1.2.4工作目標(biāo)和價(jià)值觀的改變隨著社會(huì)政治和經(jīng)濟(jì)的發(fā)展,人們的工作目標(biāo)和價(jià)值觀也都發(fā)生了重要的變化。這就對(duì)人事管理部門和管理人員提出了新的要求和新的問題,不得不考慮諸如工作類型設(shè)計(jì)、崗位分析、充分尊重員工以及為他們提供良好的個(gè)人發(fā)展和自我價(jià)值實(shí)現(xiàn)的環(huán)境與條件等問題。這樣,人力資源管理就派上了用場(chǎng)。1.3系統(tǒng)調(diào)研1.3.1社會(huì)可行性分析隨著計(jì)算機(jī)的發(fā)展與普及,以及互聯(lián)網(wǎng)技術(shù)的擴(kuò)展,日常勞資人事管理必將實(shí)現(xiàn)無紙化辦公,并且加入到公司內(nèi)部的Intranet或者是Internet上去,實(shí)現(xiàn)數(shù)據(jù)的共享,這樣有利于勞資人事信息在單位內(nèi)部的查詢,提高了數(shù)據(jù)資源的利用,并且能及時(shí)的得到更新,不需要象過去那樣浪費(fèi)大量的人力物力去進(jìn)行抄寫,提高了工作的效率1.3.2技術(shù)可行性分析VisualStudio.NET提供了一個(gè)統(tǒng)一的、緊密集成的可視化編程環(huán)境,簡(jiǎn)化了開發(fā)應(yīng)用程序的過程,縮短了實(shí)用方法的時(shí)間。利用VisualStudio.NET,可以非常輕松地創(chuàng)建具有自動(dòng)伸縮能力的可靠的應(yīng)用程序和組件。而且微軟的優(yōu)秀成果c#語言保持了c/c++所特有的強(qiáng)大功能和控制能力。與c++十分相似的模型和語法,具有與COM+服務(wù)完全的交互性和完全支持能力,能夠輕松地遷移現(xiàn)有的代碼。數(shù)據(jù)庫方面SQL2005已經(jīng)可以滿足中小型企業(yè)的數(shù)據(jù)要求,甚至有些大型企業(yè)都可以達(dá)到要求。如今進(jìn)算計(jì)普及程度日益推廣,計(jì)算機(jī)配置日新月異,能承載此系統(tǒng)的機(jī)器就如辦公的機(jī)器都可以達(dá)到要求。所以說本系統(tǒng)具有技術(shù)可行性。1.3.3經(jīng)濟(jì)可行性分析 采用傳統(tǒng)的手工輸入方法,不僅工作繁瑣而且需要人力輸入多,記錄容易出錯(cuò),那樣產(chǎn)生了成本高,效果差的弊病,對(duì)于一個(gè)企業(yè)的資料庫建立是十分困難和麻煩的。而采用這種系統(tǒng)所發(fā)費(fèi)的成本,精力都遠(yuǎn)遠(yuǎn)低于手工,并且實(shí)用十分方便,更新也簡(jiǎn)易,每個(gè)部門只需一個(gè)人統(tǒng)一管理,對(duì)企業(yè)實(shí)現(xiàn)辦公無紙化能起到很大的作用。所以此系統(tǒng)經(jīng)濟(jì)可行性也具備了。1.3.4管理可行性分析本系統(tǒng)采用了系統(tǒng)數(shù)據(jù)備份、恢復(fù)的功能,而且界面層次分明,一目了然,加上設(shè)計(jì)方面加入了人性化元素。管理此系統(tǒng)并不難,易學(xué)易會(huì)。1.4研究?jī)?nèi)容本論文共分為5章。第1章緒論,介紹了本課題的應(yīng)用目的和意義、人事管理系統(tǒng)、可行性分析和研究?jī)?nèi)容。第2章介紹了開發(fā)工具及其特點(diǎn)、數(shù)據(jù)庫技術(shù)。第3章主要介紹了系統(tǒng)的設(shè)計(jì)與分析,包括總體設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、詳細(xì)設(shè)計(jì)等。第4章主要介紹系統(tǒng)實(shí)現(xiàn),即系統(tǒng)各種模塊的功能實(shí)現(xiàn)。第5章為本課題完成成果和發(fā)展期望的總結(jié)。本論文主要利用C#可視化技術(shù)及SQL數(shù)據(jù)庫開發(fā)技術(shù),對(duì)員工管理與考勤管理系統(tǒng)進(jìn)行系統(tǒng)化、細(xì)致化和完善化的分析研究。2開發(fā)工具及其語言特點(diǎn)2.1VisualStudio.NET主要特點(diǎn)如下

2.1.1提供加速開發(fā)過程的高效工具VisualStudio.NET提供了一個(gè)統(tǒng)一的、緊密集成的可視化編程環(huán)境,以幫助用戶簡(jiǎn)化開發(fā)網(wǎng)絡(luò)應(yīng)用程序的過程,縮短學(xué)習(xí)使用方法的時(shí)間。它提供了一種新的語言——C#。通過共享的HTML、XML和樣式單編輯器,用戶可以輕松地借助包括C#在內(nèi)的任何一種VisualStudio語言來開發(fā)網(wǎng)絡(luò)應(yīng)用程序。

2.1.2提供對(duì)各種網(wǎng)絡(luò)應(yīng)用程序的快速設(shè)計(jì)能力借助WebForm,用戶可以用他們?cè)陂_發(fā)基于窗體的桌面應(yīng)用程序時(shí)所使用的技巧來創(chuàng)建跨平臺(tái)、跨瀏覽器的網(wǎng)絡(luò)應(yīng)用程序。

2.1.3利用XML和WebService來簡(jiǎn)化分布式計(jì)算WebService借助標(biāo)準(zhǔn)的Intemet協(xié)議在網(wǎng)絡(luò)上調(diào)用商務(wù)邏輯。HTTP被作為WebService傳輸?shù)幕A(chǔ)協(xié)議,該協(xié)議使得對(duì)功能的請(qǐng)求能夠穿越各種團(tuán)體所使用的防火墻。XML被用來對(duì)上述功能請(qǐng)求的參數(shù)進(jìn)行格式統(tǒng)一,從而使這些請(qǐng)求能夠使用于所有的軟件和硬件。這樣使得對(duì)WebService的訪問可以通過任何一種語言、使用任何一種組件模型在任何一種操作系統(tǒng)上實(shí)現(xiàn)。

2.1.4快速構(gòu)建中間層商務(wù)組件VisualStudio的一個(gè)核心目標(biāo)就是要為基于服務(wù)器的應(yīng)用程序提供應(yīng)用程序快速部署工具。利用VisualStudio.NET創(chuàng)建的組件將為您的商務(wù)運(yùn)作提供足夠的功能和伸縮性。

2.1.5構(gòu)建可靠的可伸縮解決方案利用VisualStudio.NET,用戶可以非常輕松地創(chuàng)建具有自動(dòng)伸縮能力的可靠的應(yīng)用程序和組件。

2.2C#技術(shù)概述C#在帶來對(duì)應(yīng)用程序的快速開發(fā)能力的同時(shí),并沒有犧牲C與C++程序員所關(guān)心的各種特性。它忠實(shí)地繼承了C和C++的優(yōu)點(diǎn)。如果你對(duì)C或C++有所了解,你會(huì)發(fā)現(xiàn)它是那樣的熟悉。即使你是一位新手,C#也不會(huì)給你帶來任何其它的麻煩,快速應(yīng)用程序開發(fā)(RapidApplicationDevelopment,RAD)的思想與簡(jiǎn)潔的語法將會(huì)使你迅速成為一名熟練的開發(fā)人員。C#是專門為.NET應(yīng)用而開發(fā)出的語言。這從根本上保證了C#與.NET框架的完美結(jié)合。在.NET運(yùn)行庫的支持下,.NET框架的各種優(yōu)點(diǎn)在C#中表現(xiàn)得淋漓盡致。C#的一些突出的特點(diǎn)●簡(jiǎn)潔的語法●精心地面向?qū)ο笤O(shè)計(jì)●與Web的緊密結(jié)合●完整的安全性與錯(cuò)誤處理●版本處理技術(shù)●靈活性與兼容性2.2.1簡(jiǎn)潔的語法在缺省的情況下,C#的代碼在.NET框架提供的“可操縱”環(huán)境下運(yùn)行,不允許直接地內(nèi)存操作。它所帶來的最大的特色是沒有了指針。與此相關(guān)的是,那些在C++中被瘋狂使用的操作符(例如:“::”、“->”和“.,”)已經(jīng)不再出現(xiàn)。C#只支持一個(gè)“.”,對(duì)于我們來說,現(xiàn)在需要理解的一切僅僅是名字的嵌套而已。C#用真正的關(guān)鍵字換掉了那些把活動(dòng)模板庫(ActiveTemplateLibrary,ALT)和COM搞得亂糟糟的偽關(guān)鍵字,如OLE_COLOR、BOOL、VARIANT_BOOL、DISPID_XXXXX等等。每種C#操作符在.NET類庫中都有了新名字。語法中的冗余是C++中的常見的問題,比如"const"和"#define"、各種各樣的字符類型等等。C#對(duì)此進(jìn)行了簡(jiǎn)化,只保留了常見的形式,而別的冗余形式從它的語法結(jié)構(gòu)中被清除了出去。2.2.2精心地面向?qū)ο笤O(shè)計(jì)從Smalltalk開始,面向?qū)ο蟮脑掝}就始終纏繞著任何一種現(xiàn)代程序設(shè)計(jì)語言。的確,C#具有面向?qū)ο蟮恼Z言所應(yīng)有的一切特性:封裝、繼承與多態(tài)性,這并不出奇。然而,通過精心地面向?qū)ο笤O(shè)計(jì),從高級(jí)商業(yè)對(duì)象到系統(tǒng)級(jí)應(yīng)用,C#建造廣泛組件的絕對(duì)選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個(gè)對(duì)象。C#提供了一個(gè)叫做裝箱(boxing)與拆箱(unboxing)的機(jī)制來完成這種操作,而不給使用者帶來麻煩,這在以后的章節(jié)中將進(jìn)行更為詳細(xì)的介紹。C#只允許單繼承,即一個(gè)類不會(huì)有多個(gè)基類,從而避免了類型定義的混亂。在后面的學(xué)習(xí)中你很快會(huì)發(fā)現(xiàn),C#中沒有了全局函數(shù),沒有了全局變量,也沒有了全局常數(shù)。一切的一切,都必須封裝在一個(gè)類之中。你的代碼將具有更好的可讀性,并且減少了發(fā)生命名沖突的可能。整個(gè)C#的類模型是建立在.NET虛擬對(duì)象系統(tǒng)(VisualObjectSystem,VOS)的基礎(chǔ)之上,其對(duì)象模型是.NET基礎(chǔ)架構(gòu)的一部分,而不再是其本身的組成部分。在下面將會(huì)談到,這樣做的另一個(gè)好處是兼容性。借助于從VB中得來的豐富的RAD經(jīng)驗(yàn),C#具備了良好的開發(fā)環(huán)境。結(jié)合自身強(qiáng)大的面向?qū)ο蠊δ?,C#使得開發(fā)人員的生產(chǎn)效率得到極大的提高。對(duì)于公司而言,軟件開發(fā)周期的縮短將能使它們更好應(yīng)付網(wǎng)絡(luò)經(jīng)濟(jì)的競(jìng)爭(zhēng)。在功能與效率的杠桿上人們終于找到了支點(diǎn)。2.2.3與Web的緊密結(jié)合.NET中新的應(yīng)用程序開發(fā)模型意味著越來越多的解決方案需要與Web標(biāo)準(zhǔn)相統(tǒng)一,例如超文本標(biāo)記語言(HypertextMarkupLanguage,HTML)和XML。由于歷史的原因,現(xiàn)存的一些開發(fā)工具不能與Web緊密地結(jié)合。SOAP的使用使得C#克服了這一缺陷,大規(guī)模深層次的分布式開發(fā)從此成為可能。由于有了Web服務(wù)框架的幫助,對(duì)程序員來說,網(wǎng)絡(luò)服務(wù)看起來就象是C#的本地對(duì)象。程序員們能夠利用他們已有的面向?qū)ο蟮闹R(shí)與技巧開發(fā)Web服務(wù)。僅需要使用簡(jiǎn)單的C#語言結(jié)構(gòu),C#組件將能夠方便地為Web服務(wù),并允許它們通過Internet被運(yùn)行在任何操作系統(tǒng)上的任何語言所調(diào)用。舉個(gè)例子,XML已經(jīng)成為網(wǎng)絡(luò)中數(shù)據(jù)結(jié)構(gòu)傳遞的標(biāo)準(zhǔn),為了提高效率,C#允許直接將XML數(shù)據(jù)映射成為結(jié)構(gòu)。這樣就可以有效的處理各種數(shù)據(jù)。2.2.4完整的安全性與錯(cuò)誤處理語言的安全性與錯(cuò)誤處理能力,是衡量一種語言是否優(yōu)秀的重要依據(jù)。任何人都會(huì)犯錯(cuò)誤,即使是最熟練的程序員也不例外:忘記變量的初始化,對(duì)不屬于自己管理范圍的內(nèi)存空間進(jìn)行修改,這些錯(cuò)誤常常產(chǎn)生難以預(yù)見的后果。一旦這樣的軟件被投入使用,尋找與改正這些簡(jiǎn)單錯(cuò)誤的代價(jià)將會(huì)是讓人無法承受的。C#的先進(jìn)設(shè)計(jì)思想可以消除軟件開發(fā)中的許多常見錯(cuò)誤,并提供了包括類型安全在內(nèi)的完整的安全性能。為了減少開發(fā)中的錯(cuò)誤,C#會(huì)幫助開發(fā)者通過更少的代碼完成相同的功能,這不但減輕了編程人員的工作量,同時(shí)更有效地避免了錯(cuò)誤的發(fā)生。.NET運(yùn)行庫提供了代碼訪問安全特性,它允許管理員和用戶根據(jù)代碼的ID來配置安全等級(jí)。在缺省情況下,從Internet和Intranet下載的代碼都不允許訪問任何本地文件和資源。比方說,一個(gè)在網(wǎng)絡(luò)上的共享目錄中運(yùn)行的程序,如果它要訪問本地的一些資源,那么異常將被觸發(fā),它將會(huì)無情地被異常扔出去,若拷貝到本地硬盤上運(yùn)行則一切正常。內(nèi)存管理中的垃圾收集機(jī)制減輕了開發(fā)人員對(duì)內(nèi)存管理的負(fù)擔(dān)。.NET平臺(tái)提供的垃圾收集器(GarbageCollection,GC)將負(fù)責(zé)資源的釋放與對(duì)象撤銷時(shí)的內(nèi)存清理工作。變量類型是安全的。C#中不能使用未初始化的變量,對(duì)象的成員變量由編譯器負(fù)責(zé)將其置為零,當(dāng)局部變量未經(jīng)初始化而被使用時(shí),編譯器將做出提醒;C#不支持不安全的指向,不能將整數(shù)指向引用類型,例如對(duì)象,當(dāng)進(jìn)行下行指向時(shí),C#將自動(dòng)驗(yàn)證指向的有效性;C#中提供了邊界檢查與溢出檢查功能。2.2.5版本處理技術(shù)C#提供內(nèi)置的版本支持來減少開發(fā)費(fèi)用,使用C#將會(huì)使開發(fā)人員更加輕易地開發(fā)和維護(hù)各種商業(yè)用戶。升級(jí)軟件系統(tǒng)中的組件(模塊)是一件容易產(chǎn)生錯(cuò)誤的工作。在代碼修改過程中可能對(duì)現(xiàn)存的軟件產(chǎn)生影響,很有可能導(dǎo)致程序的崩潰。為了幫助開發(fā)人員處理這些問題,C#在語言中內(nèi)置了版本控制功能。例如:函數(shù)重載必須被顯式聲明,而不會(huì)象在C++或java中經(jīng)常發(fā)生的那樣不經(jīng)意地被進(jìn)行,這可以防止代碼級(jí)錯(cuò)誤和保留版本化的特性。另一個(gè)相關(guān)的特性是接口和接口繼承的支持。這些特性可以保證復(fù)雜的軟件可以被方便地開發(fā)和升級(jí)。2.2.6靈活性和兼容性在簡(jiǎn)化語法的同時(shí),C#并沒有失去靈活性。盡管它不是一種無限制語言,比如:它不能用來開發(fā)硬件驅(qū)動(dòng)程序,在默認(rèn)的狀態(tài)下沒有指針等等,但是,在學(xué)習(xí)過程中你將發(fā)現(xiàn),它仍然是那樣的靈巧。如果需要,C#允許你將某些類或者類的某些方法聲明為非安全的。這樣一來,你將能夠使用指針、結(jié)構(gòu)和靜態(tài)數(shù)組,并且調(diào)用這些非安全代碼不會(huì)帶來任何其它的問題。此外,它還提供了一個(gè)另外的東西(這樣的稱呼多少有些不敬)來模擬指針的功能--delegates,代表。再舉一個(gè)例子:C#不支持類的多繼承,但是通過對(duì)接口的繼承,你將獲得這一功能。2.2.7安全性正是由于其靈活性,C#允許與C風(fēng)格的需要傳遞指針型參數(shù)的API進(jìn)行交互操作,DLL的任何入口點(diǎn)都可以在程序中進(jìn)行訪問。C#遵守.NET公用語言規(guī)范(CommonLanguageSpecification,CLS),從而保證了C#組件與其它語言組件間的互操作性。元數(shù)據(jù)(Metadata)概念的引入既保證了兼容性,又實(shí)現(xiàn)了類型安全。3.1SQL2005主要特點(diǎn)3.1.1.NET框架使用SQLServer2005,開發(fā)人員通過使用相似的語言,例如微軟的VisualC#.NET和微軟的VisualBasic,將能夠創(chuàng)立數(shù)據(jù)庫對(duì)象。開發(fā)人員還將能夠建立兩個(gè)新的對(duì)象——用戶定義的類和集合。3.1.2XML技術(shù)在使用本地網(wǎng)絡(luò)和互聯(lián)網(wǎng)的情況下,在不同應(yīng)用軟件之間散步數(shù)據(jù)的時(shí)候,可擴(kuò)展標(biāo)記語言(XML)是一個(gè)重要的標(biāo)準(zhǔn)。SQLServer2005將會(huì)自身支持存儲(chǔ)和查詢可擴(kuò)展標(biāo)記語言文件。3.1.3ADO.NET2.0版本從對(duì)SQL類的新的支持,到多活動(dòng)結(jié)果集(MARS),SQLServer2005中的ADO.NET將推動(dòng)數(shù)據(jù)集的存取和操縱,實(shí)現(xiàn)更大的可升級(jí)性和靈活性。3.1.4增強(qiáng)的安全性SQLServer2005中的新安全模式將用戶和對(duì)象分開,提供fine-grainaccess存取、并允許對(duì)數(shù)據(jù)存取進(jìn)行更大的控制。另外,所有系統(tǒng)表格將作為視圖得到實(shí)施,對(duì)數(shù)據(jù)庫系統(tǒng)對(duì)象進(jìn)行了更大程度的控制。3.1.5Transact-SQL的增強(qiáng)性能SQLServer2005為開發(fā)可升級(jí)的數(shù)據(jù)庫應(yīng)用軟件,提供了新的語言功能。這些增強(qiáng)的性能包括處理錯(cuò)誤、遞歸查詢功能、關(guān)系運(yùn)算符PIVOT,APPLY,ROW_NUMBER和其他數(shù)據(jù)列排行功能,等等。3.1.6SQL服務(wù)中介SQL服務(wù)中介將為大型、營(yíng)業(yè)范圍內(nèi)的應(yīng)用軟件,提供一個(gè)分布式的、異步應(yīng)用框架。3.1.7通告服務(wù)通告服務(wù)使得業(yè)務(wù)可以建立豐富的通知應(yīng)用軟件,向任何設(shè)備,提供個(gè)人化的和及時(shí)的信息,例如股市警報(bào)、新聞?dòng)嗛?、包裹遞送警報(bào)、航空公司票價(jià)等。在SQLServer2005中,通告服務(wù)和其他技術(shù)更加緊密地融合在了一起,這些技術(shù)包括分析服務(wù)、SQLServerManagementStudio。3.1.8Web服務(wù)使用SQLServer2005,開發(fā)人員將能夠在數(shù)據(jù)庫層開發(fā)Web服務(wù),將SQLServer當(dāng)作一個(gè)超文本傳輸協(xié)議(HTTP)偵聽器,并且為網(wǎng)絡(luò)服務(wù)中心應(yīng)用軟件提供一個(gè)新型的數(shù)據(jù)存取功能。3.1.9報(bào)表服務(wù)利用SQLServer2005,報(bào)表服務(wù)可以提供報(bào)表控制,可以通過VisualStudio2005發(fā)行。3.1.10全文搜索功能的增強(qiáng)SQLServer2005將支持豐富的全文應(yīng)用軟件。服務(wù)器的編目功能將得到增強(qiáng),對(duì)編目的對(duì)象提供更大的靈活性。查詢性能和可升級(jí)性將大幅得到改進(jìn),同時(shí)新的管理工具將為有關(guān)全文功能的運(yùn)行,提供更深入的了解。3.2C#與ADO.NET3.2.1

C#中的數(shù)據(jù)庫訪問用.NET框架編寫的(當(dāng)然也包括用C#編寫的應(yīng)用程序)應(yīng)用程序需要訪問數(shù)據(jù)庫時(shí),將使用ADO.NET來實(shí)現(xiàn)數(shù)據(jù)庫訪問。數(shù)據(jù)綁定是一種非常有用的訪問數(shù)據(jù)庫的方法,能夠減少需要編寫的代碼量。很多簡(jiǎn)單任務(wù)可以通過純粹聲明式代碼來完成。<1>ADO.NETADO.NET是微軟的數(shù)據(jù)訪問框架的最新產(chǎn)物,它是.NET框架的一部分。在ADO.NET之前,程序員在ASP(ActiveServerPages)或VisualBasic中使用ADO(AtiveXDataObjects),這是一組COM(ComponentObjectModel,組件對(duì)象模型)組件,它通過一個(gè)易于使用的封裝類提供對(duì)底層數(shù)據(jù)訪問代碼的訪問。雖然ADO大大簡(jiǎn)化了數(shù)據(jù)庫訪問,但更高級(jí)的程序員(特別是C++程序員)通常更喜歡使用更直接、更快的代碼,如OLEDB(ObjectLinkingandEmbeddingforDatabases)代碼庫。ADO.NET比ADO的功能更強(qiáng)大。它是在.NET代碼中訪問數(shù)據(jù)庫的最好工具。.NET框架中的ADO.NET類型(在System.Data命名空間及其子空間下的所有類型)包括那些為訪問SQLServer、OLEDB、ODBC和Oracle數(shù)據(jù)庫而優(yōu)化的類型。它們都是基于通用類的,因此使用ADO.NET訪問不同的DBMS是相似的。ADO.NET類型實(shí)現(xiàn)兩個(gè)主要的功能。

數(shù)據(jù)訪問:用于訪問數(shù)據(jù)庫中數(shù)據(jù)和操作數(shù)據(jù)庫的類型;

數(shù)據(jù)表示:用于包含數(shù)據(jù)庫數(shù)據(jù)(如數(shù)據(jù)表)的類型。這兩種類型之間聯(lián)系密切,在數(shù)據(jù)庫開發(fā)中兩種類型都會(huì)用到。嚴(yán)格地說,可以只用一種數(shù)據(jù)庫訪問類型。然而,如果使用數(shù)據(jù)訪問類型來填充數(shù)據(jù)表示類型將節(jié)省大量工作。ADO.NET包含7個(gè)重要的基類,其中4個(gè)是數(shù)據(jù)訪問類:

DbConnection;

●DbCommand;

●DbDataReader;

●DbDataAdapter。其他3個(gè)類是數(shù)據(jù)表示類:

DataTable;

●DataRelation;

●DataSet。DataTable類使用了其他一些重要的類:DataColum、Constraint和DataRow,本節(jié)也將介紹它們。1.DbConnectionDbConnection類提供與數(shù)據(jù)庫的連接。創(chuàng)建DbConnection對(duì)象時(shí),應(yīng)提供與DBMS通信所需的所有信息,如數(shù)據(jù)庫的位置、用于認(rèn)證的用戶名和密碼以及要訪問的DBMS中的數(shù)據(jù)庫。所有其他ADO.NET數(shù)據(jù)訪問類都依靠DbConnection與數(shù)據(jù)庫進(jìn)行通信。DbConnection類的扮演角色如圖2.1所示。圖3.2.1

DbConnection類在從DbConnection派生而來的類中,到數(shù)據(jù)庫的連接都是由連接字符串定義的,該字符串存儲(chǔ)在屬性DbConnection.ConnectionString中。數(shù)據(jù)庫連接應(yīng)只在傳輸數(shù)據(jù)時(shí)才打開,因此創(chuàng)建DbConnection實(shí)例時(shí)并不自動(dòng)連接到數(shù)據(jù)庫。DbConnection類定義了Open()方法和Close()方法,用于控制連接何時(shí)可用。很多其他的ADO.NET類也能控制連接狀態(tài),例如,有些類在完成操作后關(guān)閉它們使用的連接。DbConnection對(duì)象還能參與事務(wù)??捎肈bConnection.BeginTransaction()方法開始事務(wù),或使用DbConnection.EnlistTransaction()作為已有事務(wù)的一部分執(zhí)行操作。訪問SQLServer或SQLServer速成版中的數(shù)據(jù)時(shí),使用SqlConnection,該類是DbConnection的子類。一般來說,DbConnection和SqlConnection及其他子類都稱為連接類。2.DbCommandDbCommand類提供與數(shù)據(jù)庫交互的主要方法??梢杂肈bCommand對(duì)象來執(zhí)行SQL語句、運(yùn)行存儲(chǔ)過程等。DbCommand及其派生類稱為命令類。大部分時(shí)候并不直接使用DbCommand,而是用封裝了DbCommand的其他對(duì)象。但有時(shí)候需要對(duì)數(shù)據(jù)庫通信進(jìn)行更多的控制,這時(shí)就可以使用DbCommand對(duì)象。DbCommand對(duì)象的扮演角色如圖2.2所示。圖3.2.2

DbCommand類DbCommand中最重要的屬性是DbCommand.CommandText。要執(zhí)行SQL語句,就要將語句文本放在這個(gè)屬性中??梢杂肈bCommand.CommandType來指定要執(zhí)行的語句類型,使用DbCommand.Connection和DbCommand.Tranction來訪問底層的連接或事務(wù)。要注意,DbCommand對(duì)象可能有參數(shù)化的命令字符串,命令中的參數(shù)來自類型為DbCommand.Parameters集合的屬性。這與直接在命令字符串中輸入?yún)?shù)相比有很多優(yōu)點(diǎn),在本書后面部分將會(huì)看到。要使用DbCommand對(duì)象執(zhí)行命令,有三種選擇,這取決于要執(zhí)行的命令是什么。有些命令不返回結(jié)果,這種情況下可以用DbCommand.ExecuteNonQuery()方法;有些命令返回一個(gè)結(jié)果,這時(shí)可用DbCommand.ExecuteScalar()方法;最后,有很多命令返回多行數(shù)據(jù),這時(shí)可用DbCommand.ExecuteReader()方法,它將返回一個(gè)DbDataReader對(duì)象(下一小節(jié)將解釋)。SQLServer的DbCommand版本名為SqlCommand。它有自己的一些特殊方法,如SqlCommand.ExecuteXmlReader()方法,它直接以XML格式返回結(jié)果。3.DbDataReader使用DbDataReader類可以從結(jié)果集中讀取數(shù)據(jù),如從執(zhí)行存儲(chǔ)在命令對(duì)象中的命令生成的結(jié)果集中讀取數(shù)據(jù)。該類經(jīng)過高度優(yōu)化,可以很快地訪問數(shù)據(jù)庫中的數(shù)據(jù)。然而,這種優(yōu)化也有些副作用,例如,只能以串行方式一次讀取一行數(shù)據(jù)。不能讀完兩行后再返回去讀取第一行。通常,可以用DbDataReader對(duì)象(更確切地說,是數(shù)據(jù)閱讀器的子類對(duì)象)來提取要使用的行數(shù)據(jù),并將其存儲(chǔ)在其他對(duì)象中。例如,可以讀取一個(gè)結(jié)果集中的每行,將其存儲(chǔ)到在自定義集合或泛型列表對(duì)象中的自定義類中。與命令對(duì)象一樣,很多時(shí)候數(shù)據(jù)閱讀器對(duì)象是由ADO.NET命名空間下的其他類使用的,用戶不必直接使用它們。圖3.2.3說明了如何在數(shù)據(jù)庫應(yīng)用程序中使用數(shù)據(jù)閱讀器。要使用數(shù)據(jù)閱讀器對(duì)象,首先必須調(diào)用DbDataReader.Read()方法選擇結(jié)果集中的第一行。可不斷調(diào)用該方法來移動(dòng)數(shù)據(jù)閱讀器,使數(shù)據(jù)閱讀器像結(jié)果集中的游標(biāo)一樣總是指向一行。獲取一行時(shí),Read()方法返回true;否則返回false—如當(dāng)所有行都已經(jīng)讀完時(shí)。也可以用DbDataReader.HasRows屬性來判斷結(jié)果集中是否還有其他行。圖3.2.4

DbDataReader類很多屬性和方法可用于檢查當(dāng)前選中的行。DbDataReader.FieldCount查看當(dāng)前行包含多少列,并用DbDataReader的重載索引器訪問各列。如果知道要訪問的列名,可用基于字符串的索引器來獲得列值,也可以使用基于整數(shù)的索引器通過位置獲得列。在這兩種情況下,這種方法都將返回object值,可將其轉(zhuǎn)化為其他類型的數(shù)據(jù)。也可以使用DbDataReader提供的多個(gè)方法直接獲得類型化數(shù)據(jù),如GetString()和GetInt32()分別將指定列以string和int值返回,列通過其索引選擇。要使用這些方法獲得值類型,必須首先使用DbDataReader.IsDBNull檢查空值;否則,空值將引發(fā)異常。檢查空值是必須的,因?yàn)椴还苁裁磾?shù)據(jù)庫類型都可以為空。這與.NET中的值類型不同,可為空的值類型(如int)在這種上下文環(huán)境中是不受支持的。DbDataReader也能夠獲得關(guān)于它包含的數(shù)據(jù)的元信息—使用DbDataReader.GetSchemaTable()方法,這樣就可以知道列的名稱、數(shù)據(jù)類型和其他信息,如列是否包含空值。與前面的其他類一樣,也有專門用于SQLServer的數(shù)據(jù)閱讀器類,這就是SqlDataReader,本書將使用該類。該類繼承DbDataReader,提供將數(shù)據(jù)讀取為本地SQL類型的方法,這樣就能夠避免空類型的問題。這些類型包含在System.Data.Sqltypes命名空間中,是可為空的;如SqlDouble和SqlInt32。雖然這些類型也可以像標(biāo)準(zhǔn)的值類型那樣進(jìn)行操作,但它們實(shí)際上是引用類型。4.DbDataAdapter在ADO.NET的核心數(shù)據(jù)訪問類中,最后一個(gè)是DbDataAdapter類。它比前面介紹過的類型要復(fù)雜得多,設(shè)計(jì)該類的目的只有一個(gè):減少存儲(chǔ)在數(shù)據(jù)集對(duì)象中的數(shù)據(jù)與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交換時(shí)的干擾。與前面的類一樣,DbDataAdapter類也有很多派生類,它們統(tǒng)稱為數(shù)據(jù)適配器類。稍后將詳細(xì)解釋什么是數(shù)據(jù)集對(duì)象,簡(jiǎn)單地說,它們是能夠以.NET對(duì)象的形來表示數(shù)據(jù)庫中數(shù)據(jù)的對(duì)象。數(shù)據(jù)集對(duì)象可以包含整個(gè)表或多個(gè)表的數(shù)據(jù)。數(shù)據(jù)適配器既可以將數(shù)據(jù)庫中的數(shù)據(jù)傳輸給包含在數(shù)據(jù)集中的表,也可以將數(shù)據(jù)集中的數(shù)據(jù)傳輸?shù)綌?shù)據(jù)庫中。這個(gè)功能由命令對(duì)象和數(shù)據(jù)閱讀器對(duì)象執(zhí)行,因此大部分時(shí)候用戶不必考慮它。然而,DbDataAdapter最重要的(也是最有用的)特性之一是,它用于傳輸數(shù)據(jù)的命令對(duì)象被暴露出來,因此可以根據(jù)需要對(duì)它們進(jìn)行定制。圖2.4說明了DbDataAdapter類的工作原理,包括它包含的命令對(duì)象。圖3.2.4

DbDataAdapter類數(shù)據(jù)適配器使用的4個(gè)命令對(duì)象存儲(chǔ)在4個(gè)屬性中:SelectCommand(用于查詢數(shù)據(jù))、InsertCommand(用于添加數(shù)據(jù))、UpdateCommand(用于編輯數(shù)據(jù))和DeleteCommand(用于刪除數(shù)據(jù))。要使用適配器,并不一定全部用到這4個(gè)屬性,例如,可以只用適配器來查詢數(shù)據(jù)。另外,.NET框架可以根據(jù)其他命令的值推斷出命令的值,例如,可以根據(jù)查詢命令來生成更新、插入和刪除命令。然而,這種自動(dòng)生成的命令的效率可能不如手工提供的高。本書稍后還會(huì)討論這個(gè)問題。數(shù)據(jù)適配器中最常用的兩個(gè)方法是DbDataAdapter.Fill()和DbDataAdapter.Update()。Fill()方法從數(shù)據(jù)庫中獲取數(shù)據(jù);Update()方法更新數(shù)據(jù)庫中的數(shù)據(jù)。這兩個(gè)方法都可以用于數(shù)據(jù)集或單個(gè)數(shù)據(jù)表。另外,可以使用DbDataAdapter.FillSchema()獲取架構(gòu)數(shù)據(jù)。SQLServer中的DbDataAdapter版本是SqlDbDataAdapter。5.DataTableDataTable是ADO.NET提供的第一個(gè)數(shù)據(jù)表示類。與數(shù)據(jù)訪問類不同,數(shù)據(jù)表示類沒有專門用于特定數(shù)據(jù)庫管理系統(tǒng)(如SQLServer)的子類,它們獨(dú)立于平臺(tái)。實(shí)際上,如果需要的話,數(shù)據(jù)表示類完全可以獨(dú)立于數(shù)據(jù)庫使用,它們只是存儲(chǔ)數(shù)據(jù)的一種方便的方法。DataTable類用于存儲(chǔ)(讀者可能對(duì)此感到不解)數(shù)據(jù)表。在繼續(xù)討論這個(gè)類之前需要澄清一件事情:以DataTable對(duì)象存儲(chǔ)的表不一定要映射到數(shù)據(jù)庫中的表。DataTable可能包含表中數(shù)據(jù)的一個(gè)子集,該子集可能只包含數(shù)據(jù)庫表的部分行、部分列,可能是由數(shù)據(jù)庫中多個(gè)表組合而成的數(shù)據(jù),還可能是所有這些的組合,這取決于用于獲得數(shù)據(jù)的查詢語句。通常,DataTable與數(shù)據(jù)庫中的表匹配,但仍然要知道上面提到的事實(shí)。圖3.2.5說明了DataTable與其他ADO.NET對(duì)象之間的關(guān)系。圖2.5

DataTable要獲得完全填充的DataTable,可使用數(shù)據(jù)適配器。有包含數(shù)據(jù)的DataTable后,就可以訪問行、列、約束和它包含的其他信息。這些信息可以通過命名恰切的屬性來訪問,包括Rows、Columns和Contraints等。上面提到的3個(gè)屬性都返回一個(gè)集合類(DataRowCollection、DataColumnCollection和ConstaintCollection)對(duì)象。與其他集合類一樣,這些類可用于在它們包含的對(duì)象集合中導(dǎo)航,添加或刪除項(xiàng)等。稍后將介紹這些集合包含的類。DataTable類另一個(gè)非常重要的方面是,如何處理數(shù)據(jù)修改。例如,如果刪除DataTable中的一行,數(shù)據(jù)適配器如何知道在數(shù)據(jù)庫中刪除對(duì)應(yīng)的數(shù)據(jù)?DataTable對(duì)象記錄了對(duì)原始數(shù)據(jù)的修改,而不只是數(shù)據(jù)的當(dāng)前狀態(tài)。從DataTable中刪除一行并不會(huì)真的刪除這些數(shù)據(jù),而只是數(shù)據(jù)被標(biāo)記為已刪除。在DataTable對(duì)象的消費(fèi)方(如應(yīng)用程序)看來,就像數(shù)據(jù)已被刪除,但實(shí)際上并沒有刪除。任何時(shí)候都可以使用GetChanges()方法獲得關(guān)于對(duì)DataTable對(duì)象所做的修改列表(以另一個(gè)DataTable對(duì)象的形式)??梢栽谶m當(dāng)時(shí)使用AcceptChanges()方法接受已做的修改,從而覆蓋原來的數(shù)據(jù)。例如,可以在修改提交到數(shù)據(jù)庫后這樣做。也可以使用RejectChanges()撤銷所有的修改,如當(dāng)最終用戶單擊“取消”按鈕時(shí)。DataTable對(duì)象也暴露了很多事件,在應(yīng)用程序中可以定制這些事件,如RowDeleted和ColumnChanged。使用這些事件可以保證應(yīng)用程序?qū)κ录M(jìn)行響應(yīng),還可以實(shí)現(xiàn)其他功能,例如,確保底層數(shù)據(jù)庫在數(shù)據(jù)發(fā)生修改時(shí)立即更新。(1)DataColumn。DataColumn存儲(chǔ)了在數(shù)據(jù)表中定義列所需的所有信息。在DataTable中,Columns屬性包含一個(gè)DataColumnCollection,這是一個(gè)DataColumn對(duì)象集合。DataColumn還包含與DBMD匹配的屬性,包括ColumnName、Dataype、AllowDBNull和DefaultValue。它的屬性可能比使用的DBMS的屬性還要多,但如果使用過不同的DBMS,這一點(diǎn)將顯而易見。對(duì)于SQLServer,這并不是問題。(2)Constaint。Constaint對(duì)象(在ConstaintCollection中,可通過DataTable.Constaints訪問)用于包含表的所有元數(shù)據(jù),這些數(shù)據(jù)不包含在DataColumn對(duì)象中。Constaint類作為更具體類的基類,這些具體類包括UniqueConstaint—用于確保給定列或列組合的值是唯一的(例如,這對(duì)于主鍵是必須的)和ForeingKeyConstaint—用于實(shí)現(xiàn)表之間的關(guān)系。(3)DataRow。DataRow類用于存儲(chǔ)表中一行包含的數(shù)據(jù)。通過DataTable.Rows屬性可以訪問DataRowCollection對(duì)象,后者存儲(chǔ)了組成表數(shù)據(jù)的多個(gè)DataRow對(duì)象。一行數(shù)據(jù)中的各列可通過索引器來訪問,索引器讓你能夠通過列名、索引和版本(例如,如果行被修改)來訪問列。行的當(dāng)前狀態(tài),即它是否被修改、刪除或以某種方式改變,可通過DataRowState屬性訪問。該屬性的值為DataRowState類型,這是一種包含所有可能行狀態(tài)的枚舉類型。各個(gè)DataRow對(duì)象也有與DataTable對(duì)應(yīng)的方法,用于接受、拒絕和獲得更改。例如,可以推斷出,調(diào)用DataTable.AcceptChanges()將級(jí)聯(lián)地對(duì)表的每行調(diào)用DataRowAcceptChanges()。6.DataRelation在處理多個(gè)DataTable對(duì)象時(shí),通常需要表示(并實(shí)施)表數(shù)據(jù)之間的關(guān)系。這由DataRelation類來完成??蓪⒍鄠€(gè)DataRelation對(duì)象組合起來,構(gòu)成一個(gè)DataRelationCollection對(duì)象。關(guān)系可以用DataRelation類的多個(gè)屬性來定義,包括ChildTable、ChildColumns、ChildKeyConstraint、ParentTable和ParentKeyConstraint等。這些屬性都是對(duì)相應(yīng)的對(duì)象的引用,如DataTable和DataColumn對(duì)象。關(guān)系名也被存儲(chǔ)在DataRelation.RelationName屬性中?,F(xiàn)在還不用太擔(dān)心DataRelation對(duì)象,因?yàn)樗鼈兎庋b了ADO.NET比較高級(jí)的方面,這在本書后面將介紹。7.DataSet現(xiàn)在到了ADO.NET中最重要的類—DataSet。從某種程度上說,該類只是DataTable對(duì)象和DataRelation對(duì)象的集合(如圖2.6所示)。然而,DataSet的強(qiáng)大功能體現(xiàn)在與其他對(duì)象結(jié)合使用,包括用于Web應(yīng)用程序和Windows應(yīng)用程序的控件、Web服務(wù)和XML文檔。DataSet類包含很多屬性和方法;其中很多與其組成部分的屬性和方法類似,例如,GetChanges()和RejectChanges()。還有一些重要的屬性,如Tables(以DataTableCollection類的形式包含DataSet中的表集合)、Relations(包含一個(gè)DataRelationCollection類,其中的Relation對(duì)象定義了表之間的關(guān)系)。數(shù)據(jù)表之間的關(guān)系及應(yīng)用于數(shù)據(jù)的約束使得對(duì)DataSet的操作很麻煩。例如,如果兩個(gè)表之間存在一對(duì)多關(guān)系,則添加一行到其中一個(gè)表中,可能要求另一個(gè)表中存在一行。而這行可能不存在(例如,如果兩行同時(shí)添加時(shí)),這時(shí),為避免錯(cuò)誤,添加這些行的順序?qū)⒑苤匾?;必須先添加位于關(guān)系“一”端的行。也可以將DataSet.EnforceConstraints屬性設(shè)置為false,這樣在執(zhí)行編輯操作時(shí)將忽略關(guān)系。(1)DataSet對(duì)象和XML之間的關(guān)系。與ADO.NET的其他對(duì)象一樣,設(shè)計(jì)DataSet對(duì)象時(shí)也考慮了XML數(shù)據(jù)。使用DataSet.GetXml()方法,可將數(shù)據(jù)集轉(zhuǎn)換為XML文檔;還可以使用DataSet.GetXmlSchema()方法只提取數(shù)據(jù)集中的架構(gòu)(包括數(shù)據(jù)集包含的所有表和其他對(duì)象的架構(gòu))作為XML文檔。還可使用序列化技術(shù)在DataSet和XML文檔之間進(jìn)行轉(zhuǎn)換,因?yàn)镈ataSet類實(shí)現(xiàn)了IxmlSeria-lizable接口。DataSet對(duì)象與XML之間的關(guān)系以及使用序列化在這兩種表示格式之間進(jìn)行轉(zhuǎn)換,在.NET框架中運(yùn)用相當(dāng)廣泛。它提供了一種在應(yīng)用程序?qū)又g和通過Internet交換數(shù)據(jù)的很好方法。特別地,有了數(shù)據(jù)集的XML表示形式后,就可以在Web服務(wù)之間進(jìn)行交換DataSet對(duì)象。(2)類型化數(shù)據(jù)集(typeddataset)。DataSet對(duì)象的功能很強(qiáng)大,但它們并不是最容易使用或最合乎邏輯的。例如,要訪問表中的特定行,使用它就顯得很笨拙。必須使用DataSet.Tables集合獲得正確的表,用DataTable.Rows集合獲得正確的行,然后以對(duì)象引用的形式或通過DataColumn的方法提取列數(shù)據(jù)—這些都不容易。訪問特定列的代碼行可能如下所示:intresult=(int)myDataSet.Tables["myTable"].Rows[5]["IntegerColumn"];還有一種方法,那就是使用類型化數(shù)據(jù)集。類型化數(shù)據(jù)集是DataSet的子類,但它包含強(qiáng)類型屬性和方法,使得數(shù)據(jù)操作更容易。如果使用類型化數(shù)據(jù)集,上面的代碼就可以簡(jiǎn)化為如下所示:intresult=myTypedDataSet.MyTable[5].IntegerColumn;雖然這并不影響代碼的功能,但輸入更容易(尤其是啟用了智能感知功能時(shí)),以后閱讀代碼時(shí)也更容易理解。唯一的限制是,需要在設(shè)計(jì)時(shí)就知道數(shù)據(jù)集中將包含的數(shù)據(jù)的結(jié)構(gòu)。然而,因?yàn)閿?shù)據(jù)庫的結(jié)構(gòu)不大可能有很大的改變,因此這通常不成問題??梢允褂脁sd.exe工具或通過VisualC#速成版界面自動(dòng)創(chuàng)建類型化數(shù)據(jù)集。xsd.exe工具要求提供一個(gè)架構(gòu)(schema),這是以擴(kuò)展名為.xsd的XML架構(gòu)文件提供的。VisualC#速成版在創(chuàng)建類型化數(shù)據(jù)集時(shí)也要使用架構(gòu)信息,但它直接從數(shù)據(jù)庫獲取這些信息,這使得對(duì)數(shù)據(jù)集的結(jié)構(gòu)進(jìn)行操作更容易。(3)性能。有些人認(rèn)為應(yīng)盡量避免使用數(shù)據(jù)集。這是因?yàn)樗鼈兪恰爸亓考?jí)”對(duì)象,帶來的開銷在高性能應(yīng)用程序中可能很大。另外,以數(shù)據(jù)集的形式通過Web傳輸數(shù)據(jù)可能意味著要傳輸大量的XML數(shù)據(jù)。從某種程度上說,這些擔(dān)憂是正確的。如果性能很重要,可以設(shè)計(jì)自己的類,并直接使用數(shù)據(jù)閱讀器提供的數(shù)據(jù)進(jìn)行填充。然而,數(shù)據(jù)集(特別是類型化數(shù)據(jù)集)自有它們的用處。它們提供了很多特性,只需少量代碼就可以使用這些特性,且用于操作它們的代碼通常很簡(jiǎn)單。例如,如果不沒有數(shù)據(jù)集,要表示數(shù)據(jù)庫的數(shù)據(jù),同時(shí)在類中記錄所有編輯,且這些編輯可以很容易地傳輸?shù)綌?shù)據(jù)庫,可能需要大量的代碼,且實(shí)現(xiàn)起來相當(dāng)困難。3.2.2數(shù)據(jù)綁定數(shù)據(jù)綁定是程序員只需做少量工作就可以用數(shù)據(jù)庫中的數(shù)據(jù)填充Windows或Web控件的一種技術(shù)。.NET框架讓程序員只需使用簡(jiǎn)單的代碼就可以將數(shù)據(jù)源與控件關(guān)聯(lián)起來,實(shí)際上,可以通過GUI實(shí)現(xiàn)很多功能,而不需要編寫大量C#代碼。數(shù)據(jù)綁定有兩點(diǎn)要求:數(shù)據(jù)源和要綁定數(shù)據(jù)的控件。數(shù)據(jù)源包括數(shù)據(jù)庫連接,但不僅限于此,也可以使用對(duì)象或來自Web服務(wù)的數(shù)據(jù)作為數(shù)據(jù)源。使用對(duì)象作為數(shù)據(jù)源是一種功能強(qiáng)大的方法,可以利用自定義的集合和自己設(shè)計(jì)的類,但這有點(diǎn)偏題了。本書大部分時(shí)候使用的數(shù)據(jù)源類型都是數(shù)據(jù)庫數(shù)據(jù)源,它有Web控件形式,也有Windows控件形式。生成數(shù)據(jù)庫數(shù)據(jù)源時(shí),通常不僅需要配置連接。數(shù)據(jù)庫數(shù)據(jù)源包括關(guān)于要訪問數(shù)據(jù)庫中哪些對(duì)象的信息。實(shí)際上,在幕后通常將生成類型化數(shù)據(jù)集。此外,幕后還將用到前面介紹的ADO.NET對(duì)象(連接、命令、數(shù)據(jù)閱讀器和數(shù)據(jù)適配器協(xié)同工作來創(chuàng)建數(shù)據(jù)源)。然而,程序員不必太擔(dān)心這一點(diǎn),而只需創(chuàng)建一個(gè)數(shù)據(jù)源并將它綁定到控件,如圖2.7所示。圖2.7

數(shù)據(jù)綁定要綁定到控件,需要將控件的屬性設(shè)置為數(shù)據(jù)源的元素(從而間接地設(shè)置為數(shù)據(jù)庫的元素)。對(duì)于簡(jiǎn)單控件,如標(biāo)簽或文本框,只要將控件的Text屬性設(shè)置為數(shù)據(jù)庫中類型為文本的列。還可以將數(shù)據(jù)綁定到列表控件(包括下拉列表),這樣列表中的每項(xiàng)都綁定到數(shù)據(jù)庫表中的一行。更高級(jí)的控件(如GridView)可用于查看整個(gè)表的內(nèi)容。另外,也可以提供自定義的控件和自定義的數(shù)據(jù)綁定架構(gòu),以便使用和編輯數(shù)據(jù)庫中的數(shù)據(jù)。3.3SQL語言通用的SQL語言,最早于1974年提出,當(dāng)時(shí)稱為SEQUEL語言,后來被國(guó)際標(biāo)準(zhǔn)化組織ISO采納為國(guó)際標(biāo)準(zhǔn),現(xiàn)在大多數(shù)數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言。SQL是一種處理數(shù)據(jù)的高級(jí)語言,是非過程化語言,在查詢數(shù)據(jù)時(shí),只需指出“要什么”,而不需指出如何實(shí)現(xiàn)的過程。SQL語言包括數(shù)據(jù)定義、查詢、操縱和控制功能。SQL語言的語法格式簡(jiǎn)單,使用方便靈活。3.3.1表定義語句廣義上講,表定義語句包括數(shù)據(jù)表的創(chuàng)建語句(Create語句)、數(shù)據(jù)表修改語句(Alter語句)和數(shù)據(jù)表刪除語句(Drop語句)。3.3.2視圖定義語句視圖是對(duì)數(shù)據(jù)表中數(shù)據(jù)的一種顯示方式,用一個(gè)數(shù)據(jù)表可以有多個(gè)視圖,以根據(jù)用戶的不同需求,將數(shù)據(jù)表中用戶所關(guān)心的數(shù)據(jù)提取出來,顯示給用戶,忽略數(shù)據(jù)表中其他數(shù)據(jù)。視圖也可以理解為一種預(yù)先定義好的查詢。實(shí)際上,查詢的優(yōu)點(diǎn)在于可在多個(gè)數(shù)據(jù)表之間按指定的條件對(duì)數(shù)據(jù)進(jìn)行篩選顯示。3.3.3索引定義語句索引是加速數(shù)據(jù)查詢的重要手段,索引一旦被建立起來,就成為了數(shù)據(jù)庫的一部份,并占用數(shù)據(jù)庫的存儲(chǔ)空間。使用索引的突出優(yōu)點(diǎn)就是加快數(shù)據(jù)的查詢速度,但是,對(duì)于數(shù)據(jù)的插入、刪除和修改操作來說,索引卻降低了執(zhí)行效率。3.3.4數(shù)據(jù)操縱語句數(shù)據(jù)操縱包括數(shù)據(jù)的插入、更新和刪除等操作,數(shù)據(jù)操縱語句是應(yīng)用程序編制過程中使用較多的語句之一。3.3.5INSERT語句INSERT語句所實(shí)現(xiàn)的功能是向數(shù)據(jù)庫中插入新的數(shù)據(jù),該語句的一般語法如下:InsertintotableName[(fieldList)]values(valueList)3.3.6UPDATE語句UPDATE語句用于更新數(shù)據(jù)表中的數(shù)據(jù)。所謂的更新是指數(shù)據(jù)已經(jīng)存在于數(shù)據(jù)表,但需要對(duì)其中的數(shù)據(jù)進(jìn)行修改,此時(shí)可以使用UPDATE語句實(shí)現(xiàn)。3.3.7DELETE語句如果某些數(shù)據(jù)需要從數(shù)據(jù)表中刪除,則可以使用DELETE語句進(jìn)行,該語句的基本語法如下:DeletefromtableName[Whereselect_conditon]3.3.8查詢語句查詢語句是SQL語言中使用最為頻繁的語句,查詢可以根據(jù)需要在數(shù)據(jù)表內(nèi)或者多個(gè)數(shù)據(jù)表之間進(jìn)行數(shù)據(jù)篩選。熟練掌握數(shù)據(jù)查詢語句,才能編寫出高質(zhì)量的數(shù)據(jù)庫管理軟件。查詢是SQL語言最重要最核心的功能之一。在SQL語言中查詢是通過Select語句實(shí)現(xiàn)的,最簡(jiǎn)單的SQL語句結(jié)構(gòu)如下:Select字段列表From表名3.3.9條件查詢Select語句除了可以對(duì)字段進(jìn)行篩選以外,還可以對(duì)記錄進(jìn)行篩選和操作,此時(shí),要用到Where字句。Where子句在Select語句中用于指定查詢條件,其結(jié)構(gòu)一般如下:Select字段列表from表名Where條件表達(dá)式3.3.10查詢排序SQL語句還可以對(duì)查詢的結(jié)果進(jìn)行排序,此時(shí),要用到Orderby子句。另外,還要用到兩個(gè)負(fù)責(zé)排序方式的關(guān)鍵詞ASC和DESC,ASC指明按升序排列查詢結(jié)果;DESC則指明按降序進(jìn)行排列。排序查詢的結(jié)構(gòu)一般如下:SelectfieldlistFromtableName[Whereselect_conditon]Orderbyfield1[ASC|DESC],field2[ASC|DESC]3.3.11統(tǒng)計(jì)查詢SQL語言對(duì)數(shù)值型的字段具有統(tǒng)計(jì)的功能,該功能涉及到5個(gè)統(tǒng)計(jì)函數(shù),介紹如下:Count(*):統(tǒng)計(jì)符合查詢條件的記錄的個(gè)數(shù)。AVG(field):計(jì)算某個(gè)數(shù)值型字段的平均值。Max(field):返回某個(gè)數(shù)值型字段的最大值。Min(field):返回某個(gè)數(shù)值型字段的最小值。Sum(field):計(jì)算某個(gè)數(shù)值型字段所有記錄的和。3.3.12Groupby子句Groupby子句的作用是將查詢結(jié)果中的數(shù)據(jù)按指定字段分組,Groupby子句常與統(tǒng)計(jì)函數(shù)一起使用,以對(duì)查詢數(shù)據(jù)實(shí)現(xiàn)分組統(tǒng)計(jì)。Groupby子句的一般語法如下:Groupby字段1,字段23.3.13Distinct關(guān)鍵詞在數(shù)據(jù)表的某個(gè)字段中可能會(huì)出現(xiàn)多個(gè)重復(fù)的值,使用Distinct關(guān)鍵字可以避免查詢結(jié)果中出現(xiàn)重復(fù)的記錄。含Distinct關(guān)鍵詞的SQL語句結(jié)構(gòu)一般如下:SelectDistinct字段名列表From表名Where條件表達(dá)式3.3.14Top關(guān)鍵詞Top關(guān)鍵詞的作用是限制查詢結(jié)果的返回?cái)?shù)目。該關(guān)鍵詞常被用來限制顯示查詢結(jié)果中前多少個(gè)或者前百分之多少的記錄。因此,Top關(guān)鍵詞經(jīng)常和Orderby子句一起出現(xiàn)。Top關(guān)鍵詞的基本語法:TopnTopnPercent3.3.15多表查詢SQL語言還可以實(shí)現(xiàn)在同一個(gè)數(shù)據(jù)庫中的不同數(shù)據(jù)表之間進(jìn)行查詢。3.3.16多重查詢SQL語句允許嵌套使用,這種查詢一般是把其中一個(gè)查詢的結(jié)果作為另一個(gè)查詢語句的查詢條件。多重查詢中一般會(huì)出現(xiàn)In、NotIn、All、Some或者Any等關(guān)鍵詞。In和NotIn用來指定某值在和不在某區(qū)間或者集合;All表示集合中的全部,而Some和Any則表示集合中的一部分。3.3.17EXISTS關(guān)鍵詞EXISTS(NOTEXISTS)關(guān)鍵詞是復(fù)合查詢語句中的常用關(guān)鍵詞,其作用是判斷復(fù)合查詢語句的內(nèi)層查詢是否存在查詢結(jié)果。使用EXISTS關(guān)鍵詞時(shí)內(nèi)層查詢只是起到一個(gè)判斷是否存在查詢結(jié)果的作用,其篩選出的數(shù)據(jù)對(duì)整個(gè)查詢沒有任何作用。4系統(tǒng)需求分析4.1系統(tǒng)流程圖如下子模塊員工管理功能圖如下:用戶管理:主要用于管理不同職能的員工信息,可以實(shí)現(xiàn)創(chuàng)建,修改,刪除員工職能信息的功能。系統(tǒng)運(yùn)行界面圖如下:對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì)圖:?jiǎn)T工基本信息:企業(yè)人事檔案管理信息化模塊;具有快速、無限量員工數(shù)據(jù)輸入及保存功能;由特定權(quán)限的管理員統(tǒng)一管理員工檔案。對(duì)員工從進(jìn)入公司開始直至離職的整個(gè)過程進(jìn)行人面管理,檔案信息包括,職員編號(hào),職員姓名,出生年月,職工學(xué)歷,定時(shí)檢查更新員工信息,具有權(quán)限的使用者可以登記、查詢、修改、統(tǒng)計(jì)部門信息、崗位設(shè)置情況。圖如下:對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì)如下:社會(huì)關(guān)系:主要用于建立和保存職員的社會(huì)關(guān)系,以備侯用。運(yùn)行圖如下:對(duì)應(yīng)的數(shù)據(jù)庫系統(tǒng)設(shè)計(jì):學(xué)習(xí)經(jīng)歷維護(hù):主要記錄員工各個(gè)階段不同部門學(xué)習(xí)的情況。系統(tǒng)運(yùn)行圖對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì):部門設(shè)置:可以添加、修改、刪除部門。系統(tǒng)運(yùn)行圖:對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì):崗位調(diào)整:主要用于讓公司找到員工的強(qiáng)項(xiàng)并讓員工發(fā)揮最大作用。對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì):工資考勤信息管理功能圖如下:下載考勤信息:用于記錄員工的考勤情況。系統(tǒng)運(yùn)行圖如下:對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì)圖:考評(píng)管理:用于實(shí)時(shí)調(diào)查員工的工作情況,調(diào)整好他們最佳工作狀態(tài),可以促進(jìn)良性競(jìng)爭(zhēng)和增強(qiáng)企業(yè)的活力。系統(tǒng)運(yùn)行圖:對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì)圖如下:稅率管理:主要用于計(jì)算稅率,可以升級(jí)工資模塊,跟時(shí)代同步。系統(tǒng)運(yùn)行圖如下:相應(yīng)的數(shù)據(jù)庫設(shè)計(jì)如圖:獎(jiǎng)懲管理:賞罰分明,調(diào)動(dòng)企業(yè)工作氣氛。系統(tǒng)運(yùn)行圖如下:對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì)圖如下:工資調(diào)整管理:工資的合理調(diào)整可以有效調(diào)動(dòng)員工積極性。系統(tǒng)運(yùn)行圖如下:對(duì)應(yīng)的數(shù)據(jù)庫設(shè)計(jì)圖如下:工資項(xiàng)目管理:用于基本工資和參數(shù)的記錄和調(diào)整。系統(tǒng)運(yùn)行圖如下:對(duì)應(yīng)數(shù)據(jù)庫設(shè)計(jì)圖如下:工資匯總統(tǒng)計(jì):用于員工工資的報(bào)表顯示。如圖:系統(tǒng)設(shè)置圖如下:系統(tǒng)設(shè)置:主要用于數(shù)據(jù)庫的備份和維護(hù)。運(yùn)行圖如下:連接到數(shù)據(jù)庫:進(jìn)行數(shù)據(jù)庫備份或者恢復(fù):系統(tǒng)大概流程和功能介紹:系統(tǒng)登陸:安全作用,設(shè)置管理員的賬號(hào)用于登陸與維護(hù)。。系統(tǒng)主界面:增強(qiáng)更為人性化的功能:比如操作助手:企業(yè)員工生日提醒如圖:增強(qiáng)更為美觀的界面:參考文獻(xiàn):[1]王珊,陳紅.數(shù)據(jù)庫系統(tǒng)原理教程[M].北京:清華大學(xué)出版社,2008。[2]李曉喆.SQLServer2000管理及應(yīng)用系統(tǒng)開發(fā)[M].北京:人民郵電出版社,2002。[3]侯曉霞,柴洪輝.C#技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,2002。[4]李敏波.C#高級(jí)編程[M].北京:清華大學(xué)出版社,2005。[5]張志華,劉云鵬.C#設(shè)計(jì)模式[M].北京:電子工業(yè)出版社,2003。[6]張曉坤,譚立平,車樹良.C#編程語言詳解[M].北京:電子工業(yè)出版社,2004。[7]周存杰.Visual.C#.NET.網(wǎng)絡(luò)核心編程[M].北京:清華大學(xué)出版社,2002。[8]姜力,高群.SQLServer數(shù)據(jù)庫設(shè)計(jì)與管理[M].北京:中國(guó)林業(yè)出版社,2006。 致謝首先衷心感謝我的導(dǎo)師謝光強(qiáng)老師對(duì)我學(xué)術(shù)上的指導(dǎo)和幫助。在畢業(yè)設(shè)計(jì)和論文寫作的過程中,謝老師給我提供了各種意見與支持,并引導(dǎo)我逐步解決各種問題,使我的畢業(yè)論文條理化、規(guī)范化,同時(shí)使我增長(zhǎng)了見識(shí)、提高了水平。謝老師學(xué)識(shí)淵博、治學(xué)嚴(yán)謹(jǐn),作為我的導(dǎo)師讓我感到萬分的榮幸。同時(shí)感謝同事,他為我提供了一些c#學(xué)習(xí)資料。最后,還要感謝所有幫助過我和關(guān)心過我的人。忠心的說一聲“謝謝”。附錄F各模塊實(shí)現(xiàn)的主要源代碼F1.1登錄模塊的設(shè)計(jì)與實(shí)現(xiàn)的主要代碼if(tbxUserCode.Text.Trim()==""){BigMessageBox.Show("請(qǐng)您輸入用戶或密碼??!","警告",MessageBoxButtons.OK,MessageBoxIcon.Stop);this.tbxUserCode.Text="";this.tbxUserCode.Text="";this.tbxUserCode.Focus();return

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論