南昌航空大學(xué)C++實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
南昌航空大學(xué)C++實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
南昌航空大學(xué)C++實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
南昌航空大學(xué)C++實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
南昌航空大學(xué)C++實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)任課教師:陳斌全二零零七年九月前 言本指導(dǎo)書(shū)是軟件工程專業(yè)本科課程面向?qū)ο蟪绦蛟O(shè)計(jì)B的實(shí)驗(yàn)指導(dǎo)書(shū),一般人員也可以使用它作為學(xué)習(xí)C+語(yǔ)言的上機(jī)指導(dǎo)。因?yàn)檫x擇以Microsoft公司的C+開(kāi)發(fā)環(huán)境Visual C+6.0作為實(shí)驗(yàn)環(huán)境,因此書(shū)的前一部分介紹了Visual C+的一些基本知識(shí),并且在實(shí)驗(yàn)進(jìn)行的過(guò)程中穿插介紹使用Visual C+的一些技巧。書(shū)的內(nèi)容分為兩大部分:第一部分介紹Visual C+實(shí)驗(yàn)環(huán)境;第二部分是具體的實(shí)驗(yàn)安排。使用本書(shū)前,請(qǐng)先閱讀以下內(nèi)容:1C+語(yǔ)言實(shí)驗(yàn)環(huán)境配置要求硬件配置:586以上PC兼容機(jī)或品牌機(jī),配有彩色顯示器、鼠標(biāo)、鍵盤(pán),內(nèi)存不小于2

2、0MB,硬盤(pán)自由空間不少于60MB。推薦配置為內(nèi)存32MB或64MB(或以上),硬盤(pán)自由空間500MB以上。軟件配置:操作系統(tǒng):Windows95, Windows98, Windows NT3.51以上版本。開(kāi)發(fā)集成環(huán)境:Microsoft Visual C+5.0以上版本2建立自己的工作目錄你需要在計(jì)算機(jī)上先建立自己的工作目錄,所有的實(shí)驗(yàn)都在該工作目錄下進(jìn)行。使用Visual C+建立新項(xiàng)目時(shí),需要指定該目錄作為項(xiàng)目所在的目錄。本書(shū)中假設(shè)你的工作目錄為c:studentyour_name,具體的實(shí)驗(yàn)?zāi)夸浻赡愕闹笇?dǎo)教師指定。3安裝Visual C+Visual C+ 6.0和Visual C

3、+ 5.0最大的不同是在聯(lián)機(jī)幫助系統(tǒng)上做了很大改變。Visual C+ 5.0的幫助系統(tǒng)直接集成在開(kāi)發(fā)環(huán)境之中,在安裝Visual C+ 5.0時(shí)就可以選擇安裝幫助內(nèi)容。而Visual C+ 6.0的聯(lián)機(jī)幫助系統(tǒng)采用了MSDN(Microsoft Developer Network)庫(kù),在安裝Visual C+ 6.0時(shí),只安裝了MSDN的索引,實(shí)際的內(nèi)容在光盤(pán)上。如果希望能脫離光盤(pán)使用幫助系統(tǒng),需要在安裝了Visual C+ 6.0以后,再運(yùn)行MSDN的安裝程序,把完整的庫(kù)裝到硬盤(pán)上。第一部分 Visual C+實(shí)驗(yàn)環(huán)境介紹一、Visual C+簡(jiǎn)介Visual C+是Microsoft公司

4、的Visual Studio開(kāi)發(fā)工具箱中的一個(gè)C+程序開(kāi)發(fā)包。VisualStudio提供了一整套開(kāi)發(fā)Internet和Windows應(yīng)用程序的工具,包括VisualC+, Visual Basic, Visual Foxpro, Visual InterDev, Visual J+以及其他輔助工具,如代碼管理工具Visual SourceSafe和聯(lián)機(jī)幫助系統(tǒng)MSDN。Visual C+包中除包括C+編譯器外,還包括所有的庫(kù)、例子和為創(chuàng)建Windows應(yīng)用程序所需要的文檔。從最早期的1.0版本,發(fā)展到最新的6.0版本,Visual C+已經(jīng)有了很大的變化,在界面、功能、庫(kù)支持方面都有許多的增

5、強(qiáng)。最新的6.0版本在編譯器、MFC類(lèi)庫(kù)、編輯器以及聯(lián)機(jī)幫助系統(tǒng)等方面都比以前的版本做了較大改進(jìn)。Visual C+一般分為三個(gè)版本:學(xué)習(xí)版、專業(yè)版和企業(yè)版,不同的版本適合于不同類(lèi)型的應(yīng)用開(kāi)發(fā)。實(shí)驗(yàn)中可以使用這三個(gè)版本的任意一種。Visual C+集成開(kāi)發(fā)環(huán)境(IDE)集成開(kāi)發(fā)環(huán)境(IDE)是一個(gè)將程序編輯器、編譯器、調(diào)試工具和其他建立應(yīng)用程序的工具集成在一起的用于開(kāi)發(fā)應(yīng)用程序的軟件系統(tǒng)。Visual C+軟件包中的Developer Studio就是一個(gè)集成開(kāi)發(fā)環(huán)境,它集成了各種開(kāi)發(fā)工具和VC編譯器。程序員可以在不離開(kāi)該環(huán)境的情況下編輯、編譯、調(diào)試和運(yùn)行一個(gè)應(yīng)用程序。IDE中還提供大量在線幫

6、助信息協(xié)助程序員做好開(kāi)發(fā)工作。Developer Studio中除了程序編輯器、資源編輯器、編譯器、調(diào)試器外,還有各種工具和向?qū)Вㄈ鏏ppWizard和ClassWizard),以及MFC類(lèi)庫(kù),這些都可以幫助程序員快速而正確地開(kāi)發(fā)出應(yīng)用程序。向?qū)?Wizard)向?qū)且粋€(gè)通過(guò)一步步的幫助引導(dǎo)你工作的工具。Developer Studio中包含三個(gè)向?qū)?,用?lái)幫助程序員開(kāi)發(fā)簡(jiǎn)單的Windows程序,它們是:AppWizard:用來(lái)創(chuàng)建一個(gè)Windows程序的基本框架結(jié)構(gòu)。AppWizard向?qū)?huì)一步步向程序員提出問(wèn)題,詢問(wèn)他所創(chuàng)建的項(xiàng)目的特征,然后AppWizard會(huì)根據(jù)這些特征自動(dòng)生成一個(gè)可以執(zhí)

7、行的程序框架,程序員然后可以在這個(gè)框架下進(jìn)一步填充內(nèi)容。AppWizard支持三類(lèi)程序:基于視圖/文檔結(jié)構(gòu)的單文檔應(yīng)用、基于視圖/文檔結(jié)構(gòu)的多文檔應(yīng)用程序和基于對(duì)話框的應(yīng)用程序。也可以利用AppWizard生成最簡(jiǎn)單的控制臺(tái)應(yīng)用程序(類(lèi)似于DOS下用字符輸入輸出的程序)。ClassWizard:用來(lái)定義AppWizard所創(chuàng)建的程序中的類(lèi)??梢岳肅lassWizard在項(xiàng)目中增加類(lèi)、為類(lèi)增加處理消息的函數(shù)等。ClassWizard也可以管理包含在對(duì)話框中的控件,它可以將MFC對(duì)象或者類(lèi)的成員變量與對(duì)話框中的控件聯(lián)系起來(lái)。ActiveX Control Wizard:用于創(chuàng)建一個(gè)ActiveX

8、控件的基本框架結(jié)構(gòu)。ActiveX控件是用戶自定義的控件,它支持一系列定義的接口,可以作為一個(gè)可再利用的組件。MFC庫(kù)庫(kù)(library)是可以重復(fù)使用的源代碼和目標(biāo)代碼的集合。MFC(Microsoft Fundamental Casses)是Visual C+開(kāi)發(fā)環(huán)境所帶的類(lèi)庫(kù),在該類(lèi)庫(kù)中提供了大量的類(lèi),可以幫助開(kāi)發(fā)人員快速建立應(yīng)用程序。這些類(lèi)可以提供程序框架、進(jìn)行文件和數(shù)據(jù)庫(kù)操作、建立網(wǎng)絡(luò)連接、進(jìn)行繪圖和打印等各種通用的應(yīng)用程序操作。使用MFC庫(kù)開(kāi)發(fā)應(yīng)用程序可以減少很多工作量。 二、項(xiàng)目開(kāi)發(fā)過(guò)程在一個(gè)集成的開(kāi)發(fā)環(huán)境中開(kāi)發(fā)項(xiàng)目非常容易。一個(gè)用C+開(kāi)發(fā)的項(xiàng)目的通用開(kāi)發(fā)過(guò)程可以用左圖表示。建立

9、一個(gè)項(xiàng)目的第一步是利用編輯器建立程序代碼文件,包括頭文件、代碼文件、資源文件等。然后,啟動(dòng)編譯程序,編譯程序首先調(diào)用預(yù)處理程序處理程序中的預(yù)處理命令(如#include,#define等),經(jīng)過(guò)預(yù)處理程序處理的代碼將作為編譯程序的輸入。編譯對(duì)用戶程序進(jìn)行詞法和語(yǔ)法分析,建立目標(biāo)文件,文件中包括機(jī)器代碼、連接指令、外部引用以及從該源文件中產(chǎn)生的函數(shù)和數(shù)據(jù)名。此后,連接程序?qū)⑺械哪繕?biāo)代碼和用到的靜態(tài)連接庫(kù)的代碼連接起來(lái),為所有的外部變量和函數(shù)找到其提供地點(diǎn),最后產(chǎn)生一個(gè)可執(zhí)行文件。一般有一個(gè)makefile文件來(lái)協(xié)調(diào)各個(gè)部分產(chǎn)生可執(zhí)行文件。 可執(zhí)行文件分為兩種版本:Debug和Release。D

10、ebug版本用于程序的開(kāi)發(fā)過(guò)程,該版本產(chǎn)生的可執(zhí)行程序帶有大量的調(diào)試信息,可以供調(diào)試程序使用,而Release版本作為最終的發(fā)行版本,沒(méi)有調(diào)試信息,并且?guī)в心撤N形式的優(yōu)化。學(xué)員在上機(jī)實(shí)習(xí)過(guò)程中可以采用Debug版本,這樣便于調(diào)試。選擇是產(chǎn)生Debug版本還是Release版本的方法是:在Developer Studio中選擇菜單Build|Set Active Configuration,在彈出的對(duì)話框中,選擇所要的類(lèi)型,然后選擇OK關(guān)閉對(duì)話框。Visual C+ 集成開(kāi)發(fā)環(huán)境中集成了編輯器、編譯器、連接器以及調(diào)試程序,覆蓋了的開(kāi)發(fā)應(yīng)用程序的整個(gè)過(guò)程,程序員不需要脫離這個(gè)開(kāi)發(fā)環(huán)境就可以開(kāi)發(fā)出完

11、整的應(yīng)用程序。三、集成開(kāi)發(fā)環(huán)境Developer Studio進(jìn)入Developer Studio如果你使用的是Visual C+ 6.0,則要進(jìn)入Developer Studio,需要單擊任務(wù)欄中“開(kāi)始”后選擇“程序”,找到Microsoft Visual Studio 6.0文件夾后,單擊其中的Microsoft Visual C+6.0圖標(biāo),則可以啟動(dòng)Developer Studio。如果你使用的是Visual C+ 5.0,則要進(jìn)入Developer Studio,需要單擊任務(wù)欄中“開(kāi)始”后選擇“程序”,找到Microsoft Visual C+ 5.0文件夾后,單擊其中的Micros

12、oft Visual C+5.0圖標(biāo),則可以啟動(dòng)Developer Studio。Developer Studio的界面Developer Studio用戶界面是一個(gè)由窗口、工具條、菜單、工具及其他部分組成的一個(gè)集成界面。通過(guò)這個(gè)界面,用戶可以在同一環(huán)境下創(chuàng)建、測(cè)試、調(diào)試應(yīng)用程序。VC5和VC6的Developer Studio的初始化界面有一些小的差異,VC5的界面如下:主要部分介紹如下:ü 工具條和菜單,用于提供用戶操作的命令接口。菜單以文字和層次化的方式提供命令接口,工具條由一系列按鈕組成。這些按鈕用一系列小的位圖標(biāo)志。工具條以圖標(biāo)方式提供快速的命令選擇。菜單和工具條在開(kāi)發(fā)的不

13、同進(jìn)程有不同顯示內(nèi)容。當(dāng)?shù)谝淮未蜷_(kāi)Developer Studio時(shí),標(biāo)準(zhǔn)的工具條和菜單就會(huì)顯示出來(lái),隨著開(kāi)發(fā)的不同步驟,不同的工具條就會(huì)自動(dòng)顯示出來(lái),菜單也會(huì)有所變化。工具條有很多種,你可以顯示任意多的工具條,只要屏幕空間允許。工具條可以任意移動(dòng),也可以放大縮小。工具條和菜單條功能基本相同,唯一的區(qū)別是:菜單條總占據(jù)一行,并且一般不能隱藏。ü 工作區(qū)窗口,這個(gè)窗口包含關(guān)于正在開(kāi)發(fā)的這個(gè)項(xiàng)目的有關(guān)信息。在沒(méi)有開(kāi)發(fā)任何項(xiàng)目時(shí),該窗口顯示系統(tǒng)的幫助目錄。當(dāng)打開(kāi)一個(gè)項(xiàng)目以后,工作區(qū)窗口將會(huì)顯示關(guān)于當(dāng)前項(xiàng)目的文件信息和類(lèi)的信息。下圖是打開(kāi)一個(gè)項(xiàng)目hello以后的工作區(qū)窗口(假設(shè)該項(xiàng)目由兩個(gè)文

14、件cpp1.cpp, cpp2.cpp組成)。ü 文檔窗口區(qū),這個(gè)區(qū)域可以顯示各種類(lèi)型的文檔,如源代碼文件、頭文件、資源文件等??梢酝瑫r(shí)打開(kāi)多個(gè)文檔。ü 輸出窗口,輸出窗口用來(lái)顯示幾種信息,可以通過(guò)選擇不同的標(biāo)簽顯示不同的信息。這些信息包括:編譯連接結(jié)果信息(Build標(biāo)簽)、調(diào)試信息(Debug標(biāo)簽)、查找結(jié)果信息(Find in Files標(biāo)簽)。其中查找結(jié)果信息有兩個(gè)標(biāo)簽,可以顯示兩次在文件中查找指定內(nèi)容的結(jié)果VC6因?yàn)樵诼?lián)機(jī)幫助系統(tǒng)上比VC5做了很大改進(jìn),所以在工作區(qū)窗口中沒(méi)有VC5的InfoView,初始化界面的其他部分都與VC5相似。Deleveloper St

15、udio使用Microsoft Developer Network(MSDN)庫(kù)作為它的聯(lián)機(jī)幫助系統(tǒng)。其界面如下:總的來(lái)說(shuō),窗口和命令接口(包括工具條和菜單條)是構(gòu)成界面的最主要組成部分。通常有兩種窗口:文檔窗口和可附著(docking)窗口。文檔窗口顯示在文檔窗口區(qū),用于顯示和編輯文檔,其的大小和位置可以隨其所處的Developer Studio窗口的改變而改變,可以最大化和最小化??筛街翱诳梢愿街趹?yīng)用程序窗口的邊界,也可以浮在屏幕上的任何位置??筛街翱谟校汗ぷ鲄^(qū)(workspace)窗口,輸出(output)窗口,調(diào)試窗口(包括variable, watch, local等窗口)等。

16、文檔窗口的位置、大小及是否可見(jiàn)和它所在的項(xiàng)目有關(guān),docking窗口的位置、大小及是否可見(jiàn)則與項(xiàng)目進(jìn)行的狀態(tài)以及各種編輯和調(diào)試的操作有關(guān)。各種窗口和各種工具條以及菜單構(gòu)成了界面的布局。一旦用戶決定了一種界面布局,系統(tǒng)就會(huì)為一直為用戶保持這種布局,直到用戶下一次改變?cè)摬季譃橹?。獲得幫助信息大多數(shù)時(shí)候,你可以通過(guò)按F1得到上下文幫助。如在編輯文件時(shí)按F1可以得到有關(guān)編輯的幫助,在編譯連接錯(cuò)誤信息上按F1可以得到關(guān)于該錯(cuò)誤的幫助信息。如果想系統(tǒng)地獲得幫助,在VC5中可以單擊工作區(qū)窗口的InfoView標(biāo)簽,從其中選擇要想了解的內(nèi)容。要想查找關(guān)于某個(gè)話題的幫助,可以選擇菜單Help|Search,在查

17、詢對(duì)話框中進(jìn)行查找。VC6中,可以通過(guò)選擇菜單Help|Contents來(lái)啟動(dòng)MSDN查閱器,MSDN查閱器是一個(gè)功能強(qiáng)大的程序,可以方便地瀏覽、查找信息,要想知道具體如何使用MSDN查閱器,可以在MSDN查閱器中選菜單Help下的命令。Visual C+的編輯器Developer Studio包含一個(gè)功能強(qiáng)大的編輯器,可以編輯將被編譯成Windows程序的Visual C+源文件。這個(gè)編輯器有點(diǎn)象字處理器,但是沒(méi)有字處理器具備的復(fù)雜的排版、文本格式等功能,它注重的是如何幫助程序員快速高效地編制程序。它具有以下特點(diǎn):ü 自動(dòng)語(yǔ)法。用高亮度和不同顏色的字來(lái)顯示不同的語(yǔ)法成分,如注釋、關(guān)

18、鍵字和一般代碼用不同的顏色顯示ü 自動(dòng)縮進(jìn)。幫助你排列源代碼,使其可讀性更強(qiáng)ü 參數(shù)幫助。在編輯時(shí)用到預(yù)定義的windows函數(shù)時(shí),可以自動(dòng)為你顯示函數(shù)參數(shù)ü 集成的關(guān)鍵字幫助。能夠使你快速得到任何關(guān)鍵字、MFC類(lèi)或Windows函數(shù)的幫助信息(按F1即可)ü 拖放編輯。能夠用鼠標(biāo)選擇文本并自由拖動(dòng)到任意位置ü 自動(dòng)錯(cuò)誤定位。能自動(dòng)將光標(biāo)移動(dòng)到有編譯錯(cuò)誤的源代碼處。當(dāng)你打開(kāi)一個(gè)源代碼文件時(shí),就可以利用編輯器對(duì)其進(jìn)行編輯。源代碼文件在文檔顯示區(qū)顯示,每個(gè)文件有獨(dú)立的顯示窗口。如果你選擇用其他編輯器編輯源文件,必須將它以純文本的方式保存。VC的編譯

19、器不能處理其中有特別格式字符的文件。四、常用功能鍵及其意義為了使程序員能夠方便快捷地完成程序開(kāi)發(fā),開(kāi)發(fā)環(huán)境提供了大量快捷方式來(lái)簡(jiǎn)化一些常用操作的步驟。鍵盤(pán)操作直接、簡(jiǎn)單,而且非常方便,因而程序員非常喜歡采用鍵盤(pán)命令來(lái)控制操作。下面是一些最常用的功能鍵,希望學(xué)員在實(shí)驗(yàn)中逐步掌握。操作類(lèi)型功能鍵對(duì)應(yīng)菜單含義文件操作Ctrl+NFile|New創(chuàng)建新的文件、項(xiàng)目等Ctrl+OFile|Open打開(kāi)項(xiàng)目、文件等Ctrl+SFile|Save保存當(dāng)前文件編輯操作Ctrl+XEdit|Cut剪切Ctrl+CEdit|Copy復(fù)制Ctrl+VEdit|Paste粘貼Ctrl+ZEdit|Undo撤消上一個(gè)操

20、作Ctrl+YEdit|Redo重復(fù)上一個(gè)操作Ctrl+AEdit|Select All全選DelEdit|Del刪除光標(biāo)后面的一個(gè)字符建立程序操作Ctrl+F7Build| Compiler current file編譯當(dāng)前源文件Ctrl+F5Build|Run exe運(yùn)行當(dāng)前項(xiàng)目F7Build|Build exe建立可執(zhí)行程序F5Build|Start Debugging啟動(dòng)調(diào)試程序調(diào)試F5Debug|Go繼續(xù)運(yùn)行F11Debug|Step into進(jìn)入函數(shù)體內(nèi)部shift+F11Debug|Step out從函數(shù)體內(nèi)部運(yùn)行出來(lái)F10Debug|Step over執(zhí)行一行語(yǔ)句F9設(shè)置/清除

21、斷點(diǎn)Ctrl+F10Debug|Run to cursor運(yùn)行到光標(biāo)所在位置shift+F9Debug|QuickWatch快速查看變量或表達(dá)式的值Shift + F5Debug|Stop debugging停止調(diào)試第二部分 實(shí)驗(yàn)注意事項(xiàng):(1) 每次實(shí)驗(yàn)以前,需要詳細(xì)閱讀實(shí)驗(yàn)?zāi)康摹?shí)驗(yàn)要求和實(shí)驗(yàn)提示,以便能準(zhǔn)確地理解實(shí)驗(yàn)要求,達(dá)到實(shí)驗(yàn)的目的。有測(cè)試數(shù)據(jù)要求的,需要給出測(cè)試結(jié)果,有要求回答問(wèn)題的,需要給出問(wèn)題的回答。每次實(shí)驗(yàn)都有幾個(gè)題目,要求為每個(gè)題目創(chuàng)建不同的項(xiàng)目,以便于檢查。(2) 有的實(shí)驗(yàn)前后有聯(lián)系,需要先完成前面的實(shí)驗(yàn)再進(jìn)行后面的實(shí)驗(yàn),如類(lèi)和繼承的實(shí)驗(yàn)。請(qǐng)務(wù)必按照先后順序完成實(shí)驗(yàn)。(3

22、) 輔導(dǎo)老師那兒有關(guān)于實(shí)驗(yàn)的詳細(xì)解答,如果有疑問(wèn),可以請(qǐng)教輔導(dǎo)老師。實(shí)驗(yàn)一 類(lèi)與結(jié)構(gòu)1、實(shí)驗(yàn)?zāi)康?#183;了解和使用 VC+的集成開(kāi)發(fā)環(huán)境。·熟悉 VC+集成開(kāi)發(fā)環(huán)境的基本編輯命令及功能鍵 , 學(xué)會(huì)常規(guī)窗口操作。熟悉常用功能菜單命令。·學(xué)習(xí)完整的 C+ 程序開(kāi)發(fā)過(guò)程 ( 編輯、編譯、連接、調(diào)試、運(yùn)行及查看結(jié)果 ).理解簡(jiǎn)單的 C+ 程序結(jié)構(gòu)。·通過(guò)實(shí)驗(yàn)理解類(lèi)與結(jié)構(gòu)的區(qū)別,掌握類(lèi)的定義,了解用戶自定義數(shù)據(jù)類(lèi)型。·理解標(biāo)準(zhǔn)庫(kù)函數(shù),學(xué)習(xí)基本流輸入輸出(cout,cin)的用法。·理解表達(dá)式的優(yōu)先級(jí)、組合方式及語(yǔ)句及語(yǔ)句塊。2、實(shí)驗(yàn)內(nèi)容應(yīng)用VC+6.

23、0的編輯環(huán)境構(gòu)造一個(gè)類(lèi)Date,該類(lèi)主要實(shí)現(xiàn)日期的基本操作,例如初始化(非構(gòu)造函數(shù))、求當(dāng)前日期為星期幾、當(dāng)前年份是否為閏年、該日為該年第幾天、輸出等,具體說(shuō)明如下:該類(lèi)擁有三個(gè)私有(或保護(hù))成員變量year、month、day,分別代表日期中的年、月、日,成員函數(shù)有初始化函數(shù)、判斷該年份是否為閏年函數(shù)、求當(dāng)前日期為星期幾函數(shù)、該日為該年第幾天,結(jié)果輸出函數(shù)等。其中:n 判斷某一年是否為閏年的算法:該年份數(shù)字能被4整除但不能被100整除,或者能被4整除同時(shí)可被400整除,則為閏年n 求當(dāng)前日期為星期幾的算法: (1)0001年1月1日為星期一,可以計(jì)算從該天到當(dāng)前日期的天數(shù),然后除7求余,如余

24、1則為星期一(2)if(month=1|month=2) year -=1; month +=12; return (day+1+2*month+3*(month+1)/5+year+(year/4)-year/100+year/400)%7;n 求該日為該年第幾天: 可以用循環(huán)實(shí)現(xiàn),注意閏年的情況。實(shí)驗(yàn)二 構(gòu)造函數(shù)1、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)驗(yàn)理解構(gòu)造函數(shù)的概念與其特殊應(yīng)用。2、實(shí)驗(yàn)內(nèi)容應(yīng)用VC+6.0的編輯環(huán)境構(gòu)造一個(gè)類(lèi)Triangle,該類(lèi)主要實(shí)現(xiàn)三角形的基本操作,例如初始化(構(gòu)造函數(shù)及構(gòu)造函數(shù)的重載)、求三角形的周長(zhǎng)、面積、判斷該三角形是什么三角形(等邊、等腰、直角、等邊直角、一般三角形、非三角

25、形)、輸出等,具體說(shuō)明如下:class Trianglepublic:Triangle(double,double,double);Triangle(double,double);Triangle(double);Triangle();double GetArea();double GetPerimeter();double Show();private:double a,b,c;實(shí)驗(yàn)三 析構(gòu)函數(shù)1、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)驗(yàn)理解析構(gòu)函數(shù)的概念與其特殊應(yīng)用。2、實(shí)驗(yàn)內(nèi)容應(yīng)用VC+6.0的編輯環(huán)境構(gòu)造一個(gè)類(lèi)Student,該類(lèi)主要實(shí)現(xiàn)學(xué)生的基本操作,該學(xué)生類(lèi)包含學(xué)生姓名、學(xué)生學(xué)號(hào)、學(xué)生成績(jī)(課程數(shù)目不定,

26、其存儲(chǔ)空間應(yīng)動(dòng)態(tài)申請(qǐng)),實(shí)現(xiàn)對(duì)該學(xué)生信息的初始化、求該學(xué)生的總成績(jī)、平均成績(jī)、最高分與最低分以及最后輸出,具體說(shuō)明如下:class Studentpublic:Student(char *n,char *s,int num,double *s);Student();double GetSum();double GetAver();double GetMax();double GetMin();void Show();private:char *name;/student namechar *stuno;/student noint score_num;/score numberdouble *

27、score;/student score;實(shí)驗(yàn)四 靜態(tài)成員與友元1、實(shí)驗(yàn)?zāi)康模?)學(xué)習(xí)靜態(tài)成員的使用,理解靜態(tài)成員的特殊用途。(2)學(xué)習(xí)友元函數(shù)及友元類(lèi),領(lǐng)會(huì)友元類(lèi)的作用。2、實(shí)驗(yàn)內(nèi)容應(yīng)用VC+6.0的編輯環(huán)境構(gòu)造一個(gè)類(lèi)Stack,設(shè)計(jì)一個(gè)整數(shù)鏈表類(lèi),實(shí)現(xiàn)棧操作。類(lèi)中需有記錄結(jié)點(diǎn)個(gè)數(shù)的數(shù)據(jù)成員(靜態(tài)成員),要有判空操作。編制應(yīng)用程序,取100次隨機(jī)數(shù)(<1000),如果取到的隨機(jī)數(shù)比前一個(gè)隨機(jī)數(shù)大的話,入棧,然后逐個(gè)取出(即出棧過(guò)程)求其和。用堆分配方法逐個(gè)產(chǎn)生滿足條件(遞增有序)的結(jié)點(diǎn),插入棧中,每當(dāng)出棧時(shí),要及時(shí)將結(jié)點(diǎn)刪除,求和工作放在類(lèi)定義外(友元)。注意:棧中最多會(huì)有100個(gè)元素

28、,最少會(huì)有一個(gè)元素,這是由條件(遞增有序)決定的。具體說(shuō)明如下:struct SNode int data; SNode *next;class Stackpublic:Stack();Stack();void Push(int e);/insert a data into stackint Pop();/delete a data from stackfriend int GetSum(Stack &);/get sum of stack,friend function /friend class getsum;/ get sum of stack,friend class,you

29、can try it using friend classstatic int num;/static numberprivate:SNode *head;對(duì)棧的入棧過(guò)程與出棧過(guò)程說(shuō)明如下:(1) 入棧,即向棧中添加一個(gè)元素,且該元素只能添加到當(dāng)前鏈表最后一個(gè)數(shù)據(jù)元素之后,此時(shí)記錄數(shù)組元素?cái)?shù)據(jù)個(gè)數(shù)的變量應(yīng)該進(jìn)行+操作;(2) 出棧,即從鏈表中刪除一個(gè)數(shù)據(jù)元素,且該元素只能是當(dāng)前棧中最后的一個(gè)元素,此時(shí)記錄數(shù)據(jù)元素個(gè)數(shù)的變量應(yīng)該進(jìn)行-操作,也就是說(shuō),入棧及出棧的操作標(biāo)識(shí)實(shí)際上是由記錄數(shù)組中數(shù)據(jù)元素個(gè)數(shù)的變量實(shí)現(xiàn)的。(3) 判空,即判斷當(dāng)前棧(即鏈表)是否為空,也就是判斷記錄數(shù)組中數(shù)據(jù)元素個(gè)數(shù)的變

30、量是否為0。rand()函數(shù)與srand()函數(shù)的使用說(shuō)明:rand/srandGenerates a pseudorandom(偽隨機(jī)的) rand( void );RoutineRequired HeaderCompatibilityrand<stdlib.h>ANSI, Win 95, Win NTvoid srand( unsigned int seed );Return Valuerand returns a pseudorandom number, as described above. There is no error return.Remar

31、ksThe rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand.The srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator, use 1 as the

32、 seed argument. Any other value for seed sets the generator to a random starting point. rand retrieves the pseudorandom numbers that are generated. Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.Example/* RAND.C: This program seeds the random

33、-number generator * with the time, then displays 10 random integers. */#include <stdlib.h>#include <stdio.h>#include <time.h>void main( void )   int i;   /* Seed the random-number generator with current time so that    * the numbers will be different every time

34、we run.    */   srand( (unsigned)time( NULL ) );   /* Display 10 numbers. */   for( i = 0;   i < 10;i+ )      printf( "  %6dn", rand() );Output    6929    8026   21987   30734   2058

35、7    6699   22034   25051    7988   10104實(shí)驗(yàn)五 繼承與多態(tài)性1、實(shí)驗(yàn)?zāi)康母鶕?jù)現(xiàn)有類(lèi)建立新類(lèi);學(xué)習(xí)構(gòu)造基類(lèi)和虛函數(shù)的用法。2、實(shí)驗(yàn)內(nèi)容應(yīng)用VC+6.0的編輯環(huán)境構(gòu)造一個(gè)類(lèi)Jhtx及其派生類(lèi),該類(lèi)主要實(shí)現(xiàn)關(guān)于幾何圖形的基本操作。對(duì)于基類(lèi)“幾何圖形”,有求面積、求體積的函數(shù)(純虛函數(shù)),其派生類(lèi)圓和矩形主要有初始化(構(gòu)造函數(shù)),求面積,求周長(zhǎng)操作,類(lèi)圓的派生類(lèi)圓球和圓柱有求表面積、體積操作。 試在主函數(shù)中分別定義圓、圓球、圓柱以及矩形的對(duì)象,并調(diào)用其成員函數(shù)實(shí)現(xiàn)其相應(yīng)操作。Circlera

36、diumsCircle()Circle()BallBall()Ball()GeometryGeometry()Geometry()GetArea()GetPerimeter()Getcolume()show()ColumnColumn()Column()RectangleRectangle()Rectangle()實(shí)驗(yàn)六 運(yùn)算符重載1、實(shí)驗(yàn)?zāi)康睦斫膺\(yùn)算符重載(非成員形式和成員形式)、學(xué)習(xí)重載幾類(lèi)運(yùn)算符(+,=,!=,+,-,=等)。2、實(shí)驗(yàn)內(nèi)容應(yīng)用VC+6.0的構(gòu)建一個(gè)復(fù)數(shù)類(lèi)Complex,試對(duì)下列幾個(gè)運(yùn)算符進(jìn)行重載:+,=,!=,+,-,=,其中要求要有成員重載形式和友元重載形式,而且,+運(yùn)

37、算符要求實(shí)現(xiàn)先加和后加兩種形式。該類(lèi)定義原型說(shuō)明:class complexpublic:complex(double r=0,double i=0);complex &operator +(complex &c);complex operator -(complex &c);complex operator *(complex &c);friend complex operator /(complex &c1,complex &c2);friend int operator =(complex &c1,complex &c2);

38、friend int operator !=(complex &c1,complex &c2);/friend complex operator+(complex &c);complex operator+();void disp();private:double real; double imag;實(shí)驗(yàn)七 動(dòng)態(tài)鏈接庫(kù)的制作與調(diào)用(多項(xiàng)式矩陣定義)1、實(shí)驗(yàn)?zāi)康木C合運(yùn)用所學(xué)面向?qū)ο缶幊讨R(shí)完成動(dòng)態(tài)鏈接庫(kù)文件的創(chuàng)建、調(diào)用,理解動(dòng)態(tài)鏈接庫(kù)的工作原理,體會(huì)聲明和定義分開(kāi)方法在程序設(shè)計(jì)中的優(yōu)勢(shì),掌握利用動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)不同開(kāi)發(fā)平臺(tái)間混合編程的方法,掌握利用動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)代碼可復(fù)用技

39、術(shù),進(jìn)一步掌握混合開(kāi)發(fā)的方法。2、實(shí)驗(yàn)內(nèi)容綜合應(yīng)用所學(xué)面向?qū)ο缶幊讨R(shí)定義一個(gè)多項(xiàng)式矩陣類(lèi)并應(yīng)用該類(lèi)實(shí)現(xiàn)多項(xiàng)式矩陣類(lèi)的運(yùn)算。具體實(shí)現(xiàn)該矩陣的加法(采用運(yùn)算符“+”重載)、轉(zhuǎn)置(采用運(yùn)算符“-”重載)及輸出(采用運(yùn)算符“<<”重載)操作。將該類(lèi)制作為動(dòng)態(tài)鏈接庫(kù),然后在其他工程中對(duì)該動(dòng)態(tài)鏈接庫(kù)進(jìn)行調(diào)用。注:本次實(shí)驗(yàn)為四學(xué)時(shí),其中前兩個(gè)學(xué)時(shí)完成下面實(shí)驗(yàn)指導(dǎo)中給出的一個(gè)動(dòng)態(tài)鏈接庫(kù)的制作實(shí)例,后面兩個(gè)學(xué)時(shí)在前面示例的基礎(chǔ)上自行設(shè)計(jì)多項(xiàng)式矩陣的類(lèi)的定義與使用。實(shí)驗(yàn)指導(dǎo):先來(lái)闡述一下DLL(Dynamic Linkable Library)的概念,你可以簡(jiǎn)單的把DLL看成一種倉(cāng)庫(kù),它提供給你一些

40、可以直接拿來(lái)用的變量、函數(shù)或類(lèi)。在倉(cāng)庫(kù)的發(fā)展史上經(jīng)歷了“無(wú)庫(kù)靜態(tài)鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù)”的時(shí)代。靜態(tài)鏈接庫(kù)與動(dòng)態(tài)鏈接庫(kù)都是共享代碼的方式,如果采用靜態(tài)鏈接庫(kù),則無(wú)論你愿不愿意,lib中的指令都被直接包含在最終生成的EXE文件中了。但是若使用DLL,該DLL不必被包含在最終EXE文件中,EXE文件執(zhí)行時(shí)可以“動(dòng)態(tài)”地引用和卸載這個(gè)與EXE獨(dú)立的DLL文件。靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)的另外一個(gè)區(qū)別在于靜態(tài)鏈接庫(kù)中不能再包含其他的動(dòng)態(tài)鏈接庫(kù)或者靜態(tài)庫(kù),而在動(dòng)態(tài)鏈接庫(kù)中還可以再包含其他的動(dòng)態(tài)或靜態(tài)鏈接庫(kù)。對(duì)動(dòng)態(tài)鏈接庫(kù),我們還需建立如下概念:(1)DLL 的編制與具體的編程語(yǔ)言及編譯器無(wú)關(guān)只要遵循約定的DLL接口

41、規(guī)范和調(diào)用方式,用各種語(yǔ)言編寫(xiě)的DLL都可以相互調(diào)用。譬如Windows提供的系統(tǒng)DLL(其中包括了Windows的API),在任何開(kāi)發(fā)環(huán)境中都能被調(diào)用,不在乎其是Visual Basic、Visual C+還是Delphi。(2)動(dòng)態(tài)鏈接庫(kù)隨處可見(jiàn)我們?cè)赪indows目錄下的system32文件夾中會(huì)看到kernel32.dll、user32.dll和gdi32.dll,windows的大多數(shù)API都包含在這些DLL中。kernel32.dll中的函數(shù)主要處理內(nèi)存管理和進(jìn)程調(diào)度;user32.dll中的函數(shù)主要控制用戶界面;gdi32.dll中的函數(shù)則負(fù)責(zé)圖形方面的操作。一般的程序員都用過(guò)類(lèi)

42、似MessageBox的函數(shù),其實(shí)它就包含在user32.dll這個(gè)動(dòng)態(tài)鏈接庫(kù)中。由此可見(jiàn)DLL對(duì)我們來(lái)說(shuō)其實(shí)并不陌生。(3)VC動(dòng)態(tài)鏈接庫(kù)的分類(lèi)Visual C+支持三種DLL,它們分別是Non-MFC DLL(非MFC動(dòng)態(tài)庫(kù))、MFC Regular DLL(MFC規(guī)則DLL)、MFC Extension DLL(MFC擴(kuò)展DLL)。非MFC動(dòng)態(tài)庫(kù)不采用MFC類(lèi)庫(kù)結(jié)構(gòu),其導(dǎo)出函數(shù)為標(biāo)準(zhǔn)的C接口,能被非MFC或MFC編寫(xiě)的應(yīng)用程序所調(diào)用;MFC規(guī)則DLL 包含一個(gè)繼承自CWinApp的類(lèi),但其無(wú)消息循環(huán);MFC擴(kuò)展DLL采用MFC的動(dòng)態(tài)鏈接版本創(chuàng)建,它只能被用MFC類(lèi)庫(kù)所編寫(xiě)的應(yīng)用程序所調(diào)用

43、。一個(gè)動(dòng)態(tài)鏈接庫(kù)的示例:首先我們做一個(gè)動(dòng)態(tài)鏈接庫(kù)提供add函數(shù)接口的方法,如圖1,在VC+中new一個(gè)Win32 Dynamic-Link Library工程dllTest。注意不要選擇MFC AppWizard(dll)。圖1 建立一個(gè)非MFC DLL在建立的工程中添加lib.h及l(fā)ib.cpp文件,源代碼如下:/* 文件名:lib.h*/#ifndef LIB_H#define LIB_Hextern "C" int _declspec(dllexport)add(int x, int y);#endif/* 文件名:lib.cpp*/#include "li

44、b.h"int add(int x, int y)return x + y;這兩個(gè)文件建立結(jié)束后,執(zhí)行“build”命令完成動(dòng)態(tài)鏈接庫(kù)的編譯與生成,此時(shí),在該工程目錄下的“debug”目錄下則會(huì)生成dllTest.dll和dllTest.lib文件。然后,我們也建立一個(gè)與DLL工程處于同一工作區(qū)的應(yīng)用工程dllCall,將剛剛生成的兩個(gè)文件拷貝到該共分成目錄下,它調(diào)用DLL中的函數(shù)add,其源代碼如下:/一、動(dòng)態(tài)調(diào)用動(dòng)態(tài)鏈接庫(kù)方式#include <stdio.h>#include <windows.h>typedef int(*lpAddFun)(int,

45、int); /宏定義函數(shù)指針類(lèi)型int main(int argc, char *argv)HINSTANCE hDll; /DLL句柄 lpAddFun addFun; /函數(shù)指針hDll = LoadLibrary(".DebugdllTest.dll");if (hDll != NULL)addFun = (lpAddFun)GetProcAddress(hDll, "add");if (addFun != NULL)int result = addFun(2, 3);printf("%d", result);FreeLibra

46、ry(hDll);return 0;分析上述代碼,在lib.h對(duì)函數(shù)add的聲明前面添加了_declspec(dllexport)語(yǔ)句。這個(gè)語(yǔ)句的含義是聲明函數(shù)add為DLL的導(dǎo)出函數(shù)。DLL內(nèi)的函數(shù)分為兩種:(1)DLL導(dǎo)出函數(shù),可供應(yīng)用程序調(diào)用;(2)DLL內(nèi)部函數(shù),只能在DLL程序使用,應(yīng)用程序無(wú)法調(diào)用它們。對(duì)下面語(yǔ)句進(jìn)行逐一分析:首先,語(yǔ)句typedef int ( * lpAddFun)(int,int)定義了一個(gè)與add函數(shù)接受參數(shù)類(lèi)型和返回值均相同的函數(shù)指針類(lèi)型。隨后,在main函數(shù)中定義了lpAddFun的實(shí)例addFun;其次,在函數(shù)main中定義了一個(gè)DLL HINSTAN

47、CE句柄實(shí)例hDll,通過(guò)Win32 Api函數(shù)LoadLibrary動(dòng)態(tài)加載了DLL模塊并將DLL模塊句柄賦給了hDll;再次,在函數(shù)main中通過(guò)Win32 Api函數(shù)GetProcAddress得到了所加載DLL模塊中函數(shù)add的地址并賦給了addFun。經(jīng)由函數(shù)指針addFun進(jìn)行了對(duì)DLL中add函數(shù)的調(diào)用;最后,應(yīng)用工程使用完DLL后,在函數(shù)main中通過(guò)Win32 Api函數(shù)FreeLibrary釋放了已經(jīng)加載的DLL模塊。DLL的調(diào)用方式在上面的例子中我們看到了由“LoadLibrary-GetProcAddress-FreeLibrary”系統(tǒng)Api提供的三位一體“DLL加載

48、-DLL函數(shù)地址獲取-DLL釋放”方式,這種調(diào)用方式稱為DLL的動(dòng)態(tài)調(diào)用。動(dòng)態(tài)調(diào)用方式的特點(diǎn)是完全由編程者用 API 函數(shù)加載和卸載 DLL,程序員可以決定 DLL 文件何時(shí)加載或不加載,顯式鏈接在運(yùn)行時(shí)決定加載哪個(gè) DLL 文件。靜態(tài)調(diào)用方式的特點(diǎn)是由編譯系統(tǒng)完成對(duì)DLL的加載和應(yīng)用程序結(jié)束時(shí) DLL 的卸載。當(dāng)調(diào)用某DLL的應(yīng)用程序結(jié)束時(shí),若系統(tǒng)中還有其它程序使用該 DLL,則Windows對(duì)DLL的應(yīng)用記錄減1,直到所有使用該DLL的程序都結(jié)束時(shí)才釋放它。靜態(tài)調(diào)用方式簡(jiǎn)單實(shí)用,但不如動(dòng)態(tài)調(diào)用方式靈活。下面我們來(lái)看看靜態(tài)調(diào)用的例子,將編譯dllTest工程所生成的.lib和.dll文件拷入

49、dllCall工程所在的路徑,dllCall執(zhí)行下列代碼:/二、靜態(tài)調(diào)用動(dòng)態(tài)鏈接庫(kù)方式#pragma comment(lib,"dllTest.lib") /.lib文件中僅僅是關(guān)于其對(duì)應(yīng)DLL文件中函數(shù)的重定位信息extern "C" _declspec(dllimport) add(int x,int y); int main(int argc, char* argv)int result = add(2,3); printf("%d",result);return 0;由上述代碼可以看出,靜態(tài)調(diào)用方式的順利進(jìn)行需要完成兩個(gè)動(dòng)作:

50、(1)告訴編譯器與DLL相對(duì)應(yīng)的.lib文件所在的路徑及文件名,#pragma comment(lib,"dllTest.lib")就是起這個(gè)作用。程序員在建立一個(gè)DLL文件時(shí),連接器會(huì)自動(dòng)為其生成一個(gè)對(duì)應(yīng)的.lib文件,該文件包含了DLL 導(dǎo)出函數(shù)的符號(hào)名及序號(hào)(并不含有實(shí)際的代碼)。在應(yīng)用程序里,.lib文件將作為DLL的替代文件參與編譯。(2)聲明導(dǎo)入函數(shù),extern "C" _declspec(dllimport) add(int x,int y)語(yǔ)句中的_declspec(dllimport)發(fā)揮這個(gè)作用。靜態(tài)調(diào)用方式不再需要使用系統(tǒng)API來(lái)

51、加載、卸載DLL以及獲取DLL中導(dǎo)出函數(shù)的地址。這是因?yàn)椋?dāng)程序員通過(guò)靜態(tài)鏈接方式編譯生成應(yīng)用程序時(shí),應(yīng)用程序中調(diào)用的與.lib文件中導(dǎo)出符號(hào)相匹配的函數(shù)符號(hào)將進(jìn)入到生成的EXE 文件中,.lib文件中所包含的與之對(duì)應(yīng)的DLL文件的文件名也被編譯器存儲(chǔ)在 EXE文件內(nèi)部。當(dāng)應(yīng)用程序運(yùn)行過(guò)程中需要加載DLL文件時(shí),Windows將根據(jù)這些信息發(fā)現(xiàn)并加載DLL,然后通過(guò)符號(hào)名實(shí)現(xiàn)對(duì)DLL 函數(shù)的動(dòng)態(tài)鏈接。這樣,EXE將能直接通過(guò)函數(shù)名調(diào)用DLL的輸出函數(shù),就象調(diào)用程序內(nèi)部的其他函數(shù)一樣。DLL導(dǎo)出類(lèi)(實(shí)驗(yàn)重點(diǎn)內(nèi)容)DLL中定義的類(lèi)可以在應(yīng)用工程中使用。下面的例子里,我們?cè)贒LL中定義了point和

52、circle兩個(gè)類(lèi),并在應(yīng)用工程中引用了它們。/文件名:point.h,point類(lèi)的聲明#ifndef POINT_H#define POINT_H#ifdef DLL_FILEclass _declspec(dllexport) point /導(dǎo)出類(lèi)point#elseclass _declspec(dllimport) point /導(dǎo)入類(lèi)point#endifpublic:double y;double x;point();point(double x_coordinate, double y_coordinate);#endif/文件名:point.cpp,point類(lèi)的實(shí)現(xiàn)#ifn

53、def DLL_FILE#define DLL_FILE#endif#include "point.h"/類(lèi)point的缺省構(gòu)造函數(shù)point:point()x = 0.0;y = 0.0;/類(lèi)point的構(gòu)造函數(shù)point:point(double x_coordinate, double y_coordinate)x = x_coordinate;y = y_coordinate;/文件名:circle.h,circle類(lèi)的聲明#ifndef CIRCLE_H#define CIRCLE_H#include "point.h" #ifdef DLL_FILEclass _declspec(dllexport)circle /導(dǎo)出類(lèi)circle#elseclass _declspec(dllimport)circle /導(dǎo)入類(lèi)circle#endifpublic:void SetCentre(const point &rePoint);void SetRadius(double r);double GetGirth();double GetArea();circle

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論