電力系統(tǒng)綜合實驗與調(diào)度自動化 綜合實驗指導(dǎo)書修正版V16_第1頁
電力系統(tǒng)綜合實驗與調(diào)度自動化 綜合實驗指導(dǎo)書修正版V16_第2頁
電力系統(tǒng)綜合實驗與調(diào)度自動化 綜合實驗指導(dǎo)書修正版V16_第3頁
電力系統(tǒng)綜合實驗與調(diào)度自動化 綜合實驗指導(dǎo)書修正版V16_第4頁
電力系統(tǒng)綜合實驗與調(diào)度自動化 綜合實驗指導(dǎo)書修正版V16_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電力系統(tǒng)運行與保護課設(shè)運行部分指導(dǎo)書電氣與自動化工程學(xué)院新能源利用與電氣控制實驗教學(xué)示范中心目錄目錄2實驗注意事項3基礎(chǔ)實驗一 Visual Studio 2008使用5基礎(chǔ)實驗二 類與對象30基礎(chǔ)實驗三 STL中vector、map、string的使用43綜合實驗一 電力系統(tǒng)潮流計算58綜合實驗二 電力系統(tǒng)狀態(tài)估計85綜合實驗三 電力系統(tǒng)負(fù)荷預(yù)測106實驗注意事項實驗是教學(xué)的重要環(huán)節(jié)之一,通過實驗可以鞏固和豐富已學(xué)到的理論知識,發(fā)現(xiàn)和探討實驗中出現(xiàn)的新問題;培養(yǎng)實事求是、科學(xué)嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng);并能進一步培養(yǎng)實驗技能,為學(xué)生今后走上工作崗位打下良好基礎(chǔ)。為保證實驗正常順利進行,保證實驗教學(xué)質(zhì)量,

2、實驗者應(yīng)遵循以下規(guī)定:1、實驗前做好充分預(yù)習(xí),明確實驗?zāi)康?、要求、方法、和步驟。2、通電前,必須經(jīng)老師檢查電路接線,確認(rèn)無誤后,方可通電實驗。3、愛護計算機及實驗設(shè)備,未搞清使用方法之前,不準(zhǔn)隨便使用。4、實驗中要隨時注意現(xiàn)象的觀察,如果發(fā)生故障或異常(保險熔斷,表計指示不正常,電路出現(xiàn)冒煙等),必須立即斷開電源,并告知老師。5、對違反操作規(guī)定以及損壞儀器、設(shè)備、工具和元器件者應(yīng)檢查原因,對情節(jié)嚴(yán)重者,還要按學(xué)校有關(guān)規(guī)定進行賠償。6、要始終保持實驗室安靜和整潔,不得在室內(nèi)喧嘩、打鬧、隨意走動。7、實驗結(jié)束,應(yīng)先斷開各儀器電源開關(guān),再斷開實驗臺上電源開關(guān)。把所有儀器設(shè)備、導(dǎo)線、座位等歸位,整理就

3、緒,清掃后經(jīng)允許才能離開。電力系統(tǒng)繼電保護與調(diào)度自動化綜合實驗實驗指導(dǎo)書調(diào)度部分基礎(chǔ)實驗一 Visual Studio 2008使用1 實驗?zāi)康?) 掌握在Visual Studio 2008上建立C+程序的步驟2) 掌握Visual Studio 2008進行程序編譯、調(diào)試的基本步驟3) 掌握C+輸入輸出流中標(biāo)準(zhǔn)輸入輸出流、文件輸入輸出流的使用4) 編程中變量命名規(guī)則2 實驗原理2.1 C程序和C+程序介紹2.1.1 C+的主要特點l C+是由C擴充而來,因此,除了與C兼容,C+還繼承了C的以下特點:豐富的運算符和數(shù)據(jù)類型、結(jié)構(gòu)化的程序設(shè)計方法、高效的機器代碼、良好的可移植性。l 支持面向?qū)?/p>

4、象程序設(shè)計的方法。l C+的錯誤檢查機制強,提供了專門的機制檢查類和異常處理功能。l C+有很多成熟的編譯器:Visual C+、Inprise(被Borland兼并)的C+ Builder、Borland的Borland C+和IBM的Visual Age C+。2.1.2 C語言程序:/* 這是一個簡單的C程序: HelloWorld.cpp */#include <stdio.h>#include <stdlib.h>/為了使用system功能void main(void)printf( " Hello World !n " ) ; / 輸出字

5、符串 /為了使控制臺程序的界面停留,加了下面這一句話system("pause");程序運行后顯示:、用C+語言編寫同樣功能的程序C+語言程序:/ 這是一個簡單的C+程序:simple.cpp#include "stdafx.h"#include <iostream>#include <stdlib.h> /提供system命令using namespace std;int _tmain(int argc, _TCHAR* argv)cout<<" Hello World !n " / 輸出字符串s

6、ystem("pause");/調(diào)用系統(tǒng)的dos命令:pause 顯示:"按任意鍵繼續(xù)。return 0;程序運行后顯示:2.1.3 C+程序與C程序的比較:l C+程序與C程序的結(jié)構(gòu)完全相同。l C源程序文件的擴展名為C,C+源程序文件的擴展名為CPP。l C注釋使用符號“/*”和“*/”,表示符號“/*”和“*/”之間的內(nèi)容都是注釋;C+除了支持這種注釋,還提供了一個雙斜線“/”注釋符,表示“/”之后的本行內(nèi)容是注釋,注釋在行尾自動結(jié)束。 l C程序所包含的標(biāo)準(zhǔn)輸入、輸出的頭文件是stdio.h,輸入、輸出通常通過調(diào)用函數(shù)來完成;而C+程序可以包含標(biāo)準(zhǔn)輸入、輸

7、出流的頭文件iostream.h,輸入、輸出可以通過使用標(biāo)準(zhǔn)輸入、輸出流對象來完成。2.1.4 C+程序基本結(jié)構(gòu):l 一個C+程序可以由多個函數(shù)構(gòu)成;l 每個程序都從主函數(shù)main()開始執(zhí)行,從主函數(shù)返回時結(jié)束執(zhí)行;l 組成程序的語句主要包括聲明語句和執(zhí)行語句;l 聲明語句用于聲明變量和函數(shù),變量聲明語句說明變量的名稱和數(shù)據(jù)類型,函數(shù)聲明語句說明函數(shù)的名稱、參數(shù)類型和返回值;l 執(zhí)行語句包括:賦值語句、表達式語句、函數(shù)調(diào)用語句和流程控制語句等,它們寫在一個函數(shù)中(包括主函數(shù))。 2.1.5 C+對C的一般擴充l C+用new和delete運算符取代C的內(nèi)存分配和釋放函數(shù)malloc()和fr

8、ee()。l 標(biāo)準(zhǔn)C+提供了字符串類,可以替代C函數(shù)庫中的字符數(shù)組處理函數(shù)。l 進行輸入、輸出操作時,C+用控制臺輸入、輸出流對象(在頭文件iostream.h中進行了類的聲明)替代C的stdio函數(shù)庫,利用“>>”流提取運算符或“<<”流插入運算符,分別將數(shù)據(jù)對象從輸入流提取出來或插入到輸出流,從而完成數(shù)據(jù)的輸入和輸出。l 使用C+面向流的輸入、輸出方式提高了程序的可讀性,減少了錯誤的發(fā)生。2.2 Visual Studio 2008的使用2.2.1 Visual Studio 2008 介紹Microsoft Visual Studio(簡稱VS)是美國微軟公司的開

9、發(fā)工具包系列產(chǎn)品。VS是一個基本完整的開發(fā)工具集,它包括了整個軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境等等。所寫的目標(biāo)代碼適用于微軟支持的所有平臺,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight。微軟在2008年2月1日上市。支持.NET Framework 2.0/3.0/3.5。Visual Studio 2008總計新增了逾250個新功能7。Visual Studio 2008 SP1發(fā)布于2

10、008年8月11日,同時更新.NET Framework至3.5 SP1。目前VS的最新版本為2010。本實驗系統(tǒng)中的開發(fā)設(shè)計均是以VS08作為平臺進行的,后續(xù)試驗均是在VS08中建立C+程序,并進行調(diào)試運行。2.2.2 VS08 建立C+程序 一般步驟本系統(tǒng)的基礎(chǔ)實驗均以win32控制臺程序作為設(shè)計程序的基本運行背景。(1)控制臺程序的建立1)啟動Microsoft Visual Studio 2008,關(guān)閉起始頁,如圖2.1所示。圖 2.1 Microsoft Visual Studio 2008初始界面2) 單擊“文件”菜單,選擇“新建”"項目”,如圖2.2所示。

11、圖 2.2 選擇文件新建項目菜單項3) 在“新建項目”窗口“項目類型”下,選擇左鍵雙擊“Visual C+”,選擇“Win32”;在“模版”中選擇“Win32控制應(yīng)用平臺”,在“名稱”欄輸入新建項目的名稱,如test,“位置”欄選擇項目文件保存的位置,“解決方案名稱”默認(rèn)同項目名稱,點擊“確定”,如圖2.3。圖2.3 新建一個控制平臺項目4) 在生成的Win32應(yīng)用程序向?qū)Т翱趩螕簟跋乱徊健保鐖D2.4。圖2.4 Win32應(yīng)用程序向?qū)?) 在“應(yīng)用程序類型”下選擇“控制應(yīng)用平臺”,“附加選項”下“預(yù)編譯頭”可選也可不選,單擊“完成”,如圖2.5,這樣就新建了一個含有一段空程序的“控制應(yīng)用平臺

12、”,界面如圖2.6。圖2.5 Win32應(yīng)用程序向?qū)D2.6 項目test初始界面l main與_tmain區(qū)別注意圖中所示的程序中未出現(xiàn)main而是_tmain。main是C程序的函數(shù),_tmain是main為了支持unicode所使用的main的別名,對于使用非unicode字符集的工程來說,實際上和main沒有差別。_tmain的定義在<tchar.h>可以找到,如#define _tmain main,所以要加include <tchar.h>才能用。通常情況下,我們不要關(guān)心_tmain和main,可以認(rèn)為兩者一樣。(2)項目的調(diào)試下面對圖2.6中的程序進行調(diào)試

13、。1)通過鍵盤快捷操作進行調(diào)試使用快捷操作分成兩個步驟步驟一、程序編譯 按F7生成項目,即對程序進行編譯;如果編譯過程中出現(xiàn)錯誤,將在VS界面的輸出窗口顯示。步驟二、按F5運行調(diào)試程序,按Ctrl+F5在屏幕上顯示運行結(jié)果,結(jié)果如圖2.7,結(jié)合上述代碼可以看出程序?qū)嶋H什么事情也沒做。圖 2.7 空程序運行結(jié)果界面 2)通過工具欄中的調(diào)試鍵進行調(diào)試通過工具欄中調(diào)試鍵進行操作時,VS將編譯、鏈接和運行按順序執(zhí)行。即按編譯、鏈接、運行的過程順序處理。在一個過程中出現(xiàn)錯誤,如編譯過程中出現(xiàn)語法錯誤,都將停止調(diào)試,同時在輸出窗口給出錯誤信息。如果成功,將運行程序,在輸出窗口也將給出提示信息,見圖2.8圖

14、2.12。圖2.8 工具欄生成解決方案選項圖2.9 生成過程成功時輸出窗口顯示的信息圖2.10 工具欄“啟動調(diào)試”選項圖2.11 啟動調(diào)試成功時輸出窗口顯示的信息圖2.12 工具欄“開始執(zhí)行”顯示屏幕信息的選項將初始界面空程序中的“return 0;”改為“return 0”,選擇“生成解決方案”選項(F7),輸出窗口會顯示錯誤信息及錯誤原因(return 0后面缺少“;”),鼠標(biāo)雙擊輸出窗口的錯誤信息,程序窗口會顯示錯誤的地方(程序最左端有個箭頭),如圖2.13.圖2.13 編譯出錯時錯誤信息顯示(3)完成輸出“Hello world!”功能的項目 利用C語言及printf函數(shù),在上述空程序

15、中通過添加一些程序可以完成輸出“Hello world!”功能的項目,程序如下:#include "stdafx.h"#include <iostream>#include <stdlib.h> /提供system命令using namespace std;int _tmain(int argc, _TCHAR* argv)cout<<" Hello World !n " / 輸出字符串system("pause");/調(diào)用系統(tǒng)的dos命令:pause 顯示:"按任意鍵繼續(xù)。return

16、0;按Ctrl+F5,運行調(diào)試結(jié)果如圖2.14圖2.14 Hello word輸出界面(4)完成正方形信息的輸出 用變量名SideLength表示正方形邊長,Perimeter表示正方形周長,Area表示正方形面積,變量名采用帕斯卡命名方法(詳細(xì)見節(jié))。程序信息如下:/ Square.cpp : 定義控制臺應(yīng)用程序的入口點。/#include "stdafx.h"#include<iostream>using namespace std; int _tmain(int argc, _TCHAR* argv) float SideLength, Perimeter

17、 ,Area; cout<<"請入正方形邊長SideLength="<<endl; cin>>SideLength; / 輸入a值 Perimeter = 4*SideLength; Area = SideLength*SideLength; cout<<"正方形周長Perimeter="<<Perimeter<<endl; /輸出正方形周長 cout<<"正方形面積Area="<<Area<<endl; / 輸出正方形面積 c

18、out<<"HelloWorld;"<<endl; system("pause"); / 暫停指令,調(diào)試結(jié)果在屏幕一直顯示(或去掉該句,/在調(diào)試結(jié)束后,按Ctrl+F5)return 0;在完成一個完整程序后,在“生成”菜單中選“生成解決方案”(或直接按快捷鍵F7),如果程序沒有錯誤,在最下面輸出窗口里會顯示生成:成功 1個,失敗 0個···,如圖2.15。圖2.15 項目文件生成然后進行調(diào)試。在“調(diào)試”菜單中選“啟動調(diào)試”(或按快捷鍵F5)程序會自動運行一遍,如圖2.16。選“逐語句”(快捷鍵F11

19、)程序會單步調(diào)試,選”逐過程”(快捷鍵F10)以函數(shù)為單位調(diào)試,還可以進行斷點調(diào)試(鼠標(biāo)單擊每行程序首字母左面空白處會出現(xiàn)斷點,然后選擇F5、F10、F11任一種方式調(diào)試)。逐語句是進入函數(shù)內(nèi)部,進行單步調(diào)試,逐過程把一個函數(shù)當(dāng)成一條語句,不進入函數(shù)內(nèi)部,斷點調(diào)試可以設(shè)置多個斷點,程序從開頭每運行一次經(jīng)過一個斷點,常用于快速檢查程序錯誤處。選擇“逐語句”、“逐過程”和“斷點”調(diào)試時,在底部左半部分“自動窗口”(沒有的話可以選“調(diào)試”“窗口”“自動窗口”添加)會顯示變量的值,如圖2.17、圖2.18和圖2.19。在調(diào)試過程中按快捷鍵shift+F5可以結(jié)束調(diào)試。在屏幕上輸入“4”,按Enter鍵

20、,顯示結(jié)果如圖2.20。圖2.16 自動調(diào)試結(jié)束時界面圖2.17 逐句調(diào)試過程界面圖 2.18 逐過程調(diào)試過程界面及SideLength=4時顯示的變量Area、Perimeter、Area值圖2.19 斷點調(diào)試過程界面圖2.20 SideLength =4時調(diào)試結(jié)果顯示“逐語句”、“逐過程”和“斷點”調(diào)試過程中我們可以查看變量參數(shù)值。方法一是在左下部分“自動窗口”查看;方法二是鼠標(biāo)停在變量參數(shù)上會顯示變量值。以“斷點調(diào)試”為例介紹查看變量值的方法二。設(shè)置兩個斷點,程序運行到每個斷點時,鼠標(biāo)停在Perimeter變量上,Perimeter顯示的值分別如圖2.21和圖2.22。從圖中可以看出Pe

21、rimeter的值并不相同。原因是運行到第一個斷點時Perimeter=4*SideLength;語句指令還未運行,系統(tǒng)隨機賦給了Perimeter一個值;運行到第二個斷點時Perimeter=4*SideLength;語句已經(jīng)執(zhí)行,結(jié)合SideLength值為4,Perimete的值變成16。圖2.21 程序運行到第一個斷點時鼠標(biāo)顯示的Perimeter值圖2.22 程序運行到第二個斷點時時鼠標(biāo)顯示的Perimeter值2.2.3 C語法程序的修改使用printf函數(shù)實現(xiàn)控制臺輸出“My name is Jack,I can say Hello world!”;/ SayMyName.cpp

22、 : 定義控制臺應(yīng)用程序的入口點。/#include "stdafx.h"#include <stdio.h>#include <stdlib.h>int _tmain(int argc, _TCHAR* argv)printf("My name is Jack,I can say Hello world!n");system("pause");return 0;2.2.4 標(biāo)準(zhǔn)輸入輸出流(1)標(biāo)準(zhǔn)輸入輸出流在C+中預(yù)定義了三個標(biāo)準(zhǔn)輸入輸出流對象:cin(標(biāo)準(zhǔn)輸入)、cout(標(biāo)準(zhǔn)輸出)和cerr(標(biāo)準(zhǔn)錯誤輸出

23、)。cin與輸入操作符(>>)一起用于從標(biāo)準(zhǔn)輸入讀入數(shù)據(jù),cout與輸出操作符(<<)一起用于輸出數(shù)據(jù)到標(biāo)準(zhǔn)輸出上,cerr與輸出操作符(<<)一起用于輸出錯誤信息到標(biāo)準(zhǔn)錯誤上(一般同標(biāo)準(zhǔn)輸出)。默認(rèn)的標(biāo)準(zhǔn)輸入常為鍵盤,默認(rèn)的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出常為顯示器。(2)使用標(biāo)準(zhǔn)輸入輸出流進行輸出在使用標(biāo)準(zhǔn)輸入輸出流時需要包含頭文件iostream,已經(jīng)使用std的命名空間,即要添加using namespace std的語句。使用標(biāo)準(zhǔn)輸入輸出流顯示字符串:My name is Jack,I can say Hello world!#include "s

24、tdafx.h"#include<iostream>using namespace std;int _tmain(int argc, _TCHAR* argv) cout<<"Hello word!"<<endl; /輸出字符串system("pause");return 0;(3)使用標(biāo)準(zhǔn)輸入輸出流實現(xiàn)控制臺輸出“My name is Jack,I can say Hello world!”;#include "stdafx.h"#include<iostream>using

25、 namespace std;int _tmain(int argc, _TCHAR* argv) cout<<"My name is Jack,I can say Hello world!"<<endl; /輸出字符串system("pause");return 0;2.3 文件流介紹2.3.1 文件流的基本工作原理在C+中,對文件的操作是通過stream的子類fstream(file stream)來實現(xiàn)的,所以,要用這種方式操作文件,就必須加入頭文件fstream.h。C+提供了文件操作的文件流庫。其中,ifstream用于

26、支持從輸入文件中提取數(shù)據(jù)的各種操作。ofstream用于實現(xiàn)把數(shù)據(jù)寫入到文件中的各種操作,fstream用于提供從文件中提取數(shù)據(jù)或把數(shù)據(jù)寫入到文件的各種操作。文件操作一般是按打開文件、讀寫文件、關(guān)閉文件3步驟進行的。(1) 文件的打開和關(guān)閉在fstream類中,有一個成員函數(shù)open(),就是用來打開文件的,其原型是:void open(const char *filename,int mode,int access);參數(shù):filename:要打開的文件名mode:要打開文件的方式access:打開文件的屬性打開文件的方式在類ios(是所有流式I/O類的基類)中定義,常用的值如下:ios:a

27、pp:以追加的方式打開文件ios:ate:文件打開后定位到文件尾,新的內(nèi)容添加在文件尾,下一次添加卻在當(dāng)前位置處進行ios:binary:以二進制方式打開文件,(默認(rèn)時是文本方式)ios:in: 文件以輸入方式打開(文件數(shù)據(jù)輸入到內(nèi)存),若文件存在,不清除原文件內(nèi)容ios:out:文件以輸出方式打開(內(nèi)存數(shù)據(jù)輸出到文件)ios:nocreate: 不建立文件,所以文件不存在時打開失敗ios:noreplace:不覆蓋文件,所以打開文件時如果文件存在失敗ios:trunc:如果文件存在,清除文件原油內(nèi)容可以用“或”把以上屬性連接起來,如ios:out|ios:binary打開文件的屬性取值是:0

28、:普通文件,打開訪問1:只讀文件2:隱含文件4:系統(tǒng)文件可以用“或”或者“+”把以上屬性連接起來,如3或1|2就是以只讀和隱含屬性打開文件。例如:以二進制方式打開文件C:test.txtfstream file;file.open(“C:test.txt”,ios:binary|ios:in,0);或者寫為fstream file(“C:test.txt”,ios:binary|ios:in,0);如果open函數(shù)只有文件名一個參數(shù),則是以讀/寫普通文件打開,即:file1.open("c:config.sys"); <=> file1.open("c

29、:config.sys",ios:in|ios:out,0);在實際應(yīng)用中,根據(jù)需要的不同,可以通過選擇不同的類來定義打開文件的對象。如果想以輸入方式打開,就用ifstream來定義;如果想以輸出方式打開,就用ofstream來定義;如果想以輸入/輸出方式來打開,就用fstream來定義。(2)文件的讀寫l 文本文件的讀寫文本文件的讀寫很簡單:用插入器(<<)向文件輸出;用析取器(>>)從文件輸入。假設(shè)file1是以輸入方式打開,file2以輸出打開。示例如下:file2<<”Hello word!”;/向文件寫入字符串“Hello word!”i

30、nt i; file1>>i;/從文件輸入一個整數(shù)值(2)文件的關(guān)閉 打開的文件使用完成后一定要關(guān)閉,fstream提供了成員函數(shù)close()來完成此操作,如:file1.close();就把file1相連的文件關(guān)閉。(3)文件打開是否成功的檢測上述Open方法,僅是按照形參中的文件路徑和文件名進行文件的打開操作。但實際情況下,給定的文件可能不存在或者損壞無法打開。因此在具體通過文件流進行文件操作時,在調(diào)用open方法后,必須進行文件是否打開的檢驗操作。打開成功才能進行正確的操作。進行檢驗的具體方法如下:fstream file;file.open(“C:test.txt”);i

31、f(!file)/括號內(nèi)為不成功時的操作 else/成功時的操作,即正常的文件操作2.3.2 示例向Hello.txt文件中寫入 Hello world!請在路徑D:EMSLab下新建文件夾Example,以及在文件夾下新建文件Hello.txt。#include "stdafx.h"#include<iostream>#include<fstream>#include <stdlib.h>using namespace std;int _tmain(int argc, _TCHAR* argv)fstream File; /定義一個fs

32、tream類對象用于寫 File.open("D:EMSLabExampleHello.txt",ios:out); /打開文件 if(!File) cout<<"Hello.txt不能打開!n" system("pause"); return 0; File<<"Hello world!" /向文件寫入字符串cout<<"Hello world!"<<endl; /將字符串輸出到屏幕顯示File.close(); /關(guān)閉文件system(&quo

33、t;pause");return 0;注:包括本例在內(nèi)的以下幾個實例需要的讀寫文件都默認(rèn)在D:EMSLabExample路徑下。使用文件流讀入文件FileEx.txt中的數(shù)據(jù)到程序中的變量中,注意變量的類型和文件中數(shù)據(jù)的類型必須一致。并將讀入的數(shù)據(jù)顯示在控制臺中,同時再將讀入的數(shù)據(jù)寫入到FileExeCopy.txt;文件路徑仍為D:EMSLabExample。請首先在文件路徑為D:EMSLabExample目錄下建立文件FileExe.txt,然后在文件中輸入字符MyNameIs*。*為實驗學(xué)生的拼音,注意字符串中不要用空格。/ ReadAndWriteData.cpp : 定義控

34、制臺應(yīng)用程序的入口點。/從文件FileExe.txt中讀取數(shù)據(jù)后,并將讀取到的數(shù)據(jù)顯示到控制臺界面和寫入文件FileExeCopy.txt中。#include "stdafx.h"#include<iostream>#include<fstream>using namespace std;int _tmain(int argc, _TCHAR* argv)fstream File1; /定義一個fstream類的對象用于讀File1.open("D:EMSLabExampleFileExe.txt",ios:in); /打開一個已

35、存在的文件if(!File1) /判斷文件能否打開cout<<"FileEx.txt不能打開!n"system("pause");return 0; fstream File2; /定義一個fstream類的對象用于寫File2.open("D:EMSLabExampleFileExeCopy.txt",ios:out); /打開文件if(!File2)cout<<"FileExeCopy.txt不能打開!n"File1.close();system("pause");r

36、eturn 0; char ch; / 定義一個字符緩沖區(qū)while(!File1.eof() /判斷文件FileEx.txt是否讀完 File1.read (&ch,1); /從文件FileEx.txt讀取一個字符存放到ch中 cout<<ch; /顯示輸出到屏幕 File2.write (&ch,1); /將ch中字符寫入文件、/FileExeCopy.txt中 File2.close (); File1.close(); /關(guān)閉文件system("pause");return 0;2.4 結(jié)構(gòu)體和文件流的聯(lián)合使用2.4.1 結(jié)構(gòu)體介紹(1)

37、結(jié)構(gòu)體定義定義方法:方法一:在定義結(jié)構(gòu)體類型的同時,直接給出結(jié)構(gòu)體變量。如: struct 結(jié)構(gòu)體名 結(jié)構(gòu)體成員變量的定義; 變量名1,變量名2,.,變量名n;例如:struct tagStudent int number; char name20;char sex; int age;float score; Student1, Student2;方法二:先給出結(jié)構(gòu)體類型的定義,再定義結(jié)構(gòu)體變量。如: struct 結(jié)構(gòu)體名 結(jié)構(gòu)體成員變量的定義; ;struct 結(jié)構(gòu)體名 變量名1,變量名2,.,變量名n;例如:struct tagStudent int number;char name20

38、;char sex;int age;float score;struct tagStudent Student1,Student2;方法三:typedef struct tagStudent int number;char name20;char sex;int age;float score;Student;Student Student1, Student2;第三種是最常用的。用typedef把結(jié)構(gòu)體struct TagStudent重新定義為Student,即引用Student就相當(dāng)于使用struct tagStudent。(2)結(jié)構(gòu)體變量的引用及初始化 原則是通過結(jié)構(gòu)體的成員來引用結(jié)構(gòu)

39、體變量。成員的引用方法為:結(jié)構(gòu)體變量名.成員名。例如:student1.num。結(jié)構(gòu)體變量初始化原則為:只可以給主函數(shù)中或外部存儲類別和靜態(tài)存儲類別的結(jié)構(gòu)體變量、數(shù)組賦初值。給結(jié)構(gòu)體變量賦初值不能跨越前面的成員而只給后面的成員變量賦值。例如:Typedef struct tagStudent long number; char name20;char sex; int age;float score; Student;Student Student1=99641,”Li Ping”,M ;main() printf(“No.:%ldnname:%snsex:%cn”,Student1.num,

40、 S, Student1.sex,);2.4.2 學(xué)生結(jié)構(gòu)體及標(biāo)準(zhǔn)輸入輸出流一個包含LiMing和XiaoQiang兩個學(xué)生姓名、學(xué)號、性別、年齡、成績信息的學(xué)生結(jié)構(gòu)體可以定義如下:typedef struct tagStudentchar name40;long number;char sex;int age;float score; Student;Student Student1=LiMing,20120004,M,21,89,Student2=XiaoQiang,2012003,M,21,89;結(jié)構(gòu)體標(biāo)準(zhǔn)輸入輸出流也為cin和cout。例如:cout<&l

41、t; S /輸出姓名“LiMing”cin>>S /輸入一個姓名2.5 文件流和結(jié)構(gòu)體的聯(lián)合使用從文件LiMing.txt中讀出學(xué)生的信息,并將信息寫入到NewStudent.txt中、輸出到控制臺中。#include "stdafx.h"#include<iostream>#include<fstream>#include <stdlib.h>using namespace std;typedef struct tagStudentchar name40;long number

42、;char sex;int age;char telephone15;Student;int _tmain(int argc, _TCHAR* argv)Student Student1; /定義結(jié)構(gòu)體fstream InputData("D:EMSLabExampleLiMing.txt",ios:in); /打開文件if(!InputData)cout<<"LiMing.txt不能打開!n"system("pause");return 0; /判斷文件能否打開/注意這里的讀取數(shù)據(jù)的順序適合結(jié)構(gòu)體中變量類型密切相關(guān)的/即

43、什么類型數(shù)據(jù)必須讀入到對應(yīng)的變量中去InputData>>S>>Student1.number>>Student1.sex>>Student1.age>>Student1.telephone; /讀文件 InputData.close();/用完就關(guān)是個好習(xí)慣fstream OutPutData("D:EMSLabExampleNewStudent.txt",ios:out|ios:app); /打開文件 if(!OutPutData)cout<<"NewStudent

44、.txt不能打開!n"system("pause");return 0; OutPutData<<endl<<S<<""<<Student1.number<<""<<Student1.sex<<""<<Student1.age<<""<<Student1.telephone<<endl; /寫文件cout<<Studen

45、<<" "<<Student1.number<<" "<<Student1.sex<<" "<<Student1.age<<" "<<Student1.telephone<<endl; /顯示文件LiMing.txt內(nèi)容OutPutData.close (); /關(guān)閉文件system("pause");return 0;注:為了顯示美觀,OutPutData<<e

46、ndl<<S<<""<<Student1.number<<""<<Student1.sex<<""<<Student1.age<<""<<Student1.score<<""<<Student1.address<<""<<Student1.telephone<<endl;語句中,第一個雙

47、引號之間為兩個Tab鍵距離,其余雙引號之間為一個Tab鍵距離。cout<<S<<" "<<Student1.number<<" "<<Student1.sex<<" "<<Student1.age<<" "<<Student1.telephone<<endl;語句中雙引號之間為一個空格鍵距離。2.6 程序中變量命名2.6.1 匈牙利命名法:是一種編程時的命名規(guī)范。原則:匈牙

48、利命名法是一種編程時的命名規(guī)范?;驹瓌t是:變量名屬性類型對象描述,其中每一對象的名稱都要求有明確含義,可以取對象名字全稱或名字的一部分。命名要基于容易記憶容易理解的原則。保證名字的連貫性是非常重要的。例子:舉例來說,表單的名稱為form,那么在匈牙利命名法中可以簡寫為frm,則當(dāng)表單變量名稱為Switchboard時,變量全稱應(yīng)該為frmSwitchboard。這樣可以很容易從變量名看出Switchboard是一個表單,同樣,如果此變量類型為標(biāo)簽,那么就應(yīng)命名成lblSwitchboard??梢钥闯?,匈牙利命名法非常便于記憶,而且使變量名非常清晰易懂,這樣,增強了代碼的可讀性,方便各程序員之

49、間相互交流代碼。據(jù)說這種命名法是一位叫CharlesSimonyi的匈牙利程序員發(fā)明的,后來他在微軟呆了幾年,于是這種命名法就通過微軟的各種產(chǎn)品和文檔資料向世界傳播開了。現(xiàn)在,大部分程序員不管自己使用什么軟件進行開發(fā),或多或少都使用了這種命名法。這種命名法的出發(fā)點是把變量名按:屬性+類型+對象描述的順序組合起來,以使程序員作變量時對變量的類型和其它屬性有直觀的了解。 2.6.2 駱駝命名法正如它的名稱所表示的那樣,是指混合使用大小寫字母來構(gòu)成變量和函數(shù)的名字。例如,下面是分別用駱駝式命名法和下劃線法命名的同一個函數(shù):printEmployeePaychecks();print_emp

50、loyee_paychecks();第一個函數(shù)名使用了駱駝式命名法函數(shù)名中的每一個邏輯斷點都有一個大寫字母來標(biāo)記;第二個函數(shù)名使用了下劃線法-函數(shù)名中的每一個邏輯斷點都有一個下劃線來標(biāo)記。駱駝式命名法近年來越來越流行了,在許多新的函數(shù)庫和MicrosoftWindows這樣的環(huán)境中,它使用得當(dāng)相多。另一方面,下劃線法是c出現(xiàn)后開始流行起來的,在許多舊的程序和UNIX這樣的環(huán)境中,它的使用非常普遍。2.6.3 帕斯卡命名法在編程中將首字母大寫,如:程序代碼public void DisplayInfo();string UserName;二者都是采用了帕斯卡命名法。2.6.4 說明各種命名法的命

51、名規(guī)則可視為一種慣例,并無絕對與強制,為的是增加識別和可讀性。本實驗中推薦使用帕斯卡命名方法。3 實驗設(shè)備與器材1. 軟件環(huán)境: 操作系統(tǒng):WIN98/ME/2000/XP; 軟件工具:Visual C+20082. 硬件環(huán)境:個人電腦 4 實驗內(nèi)容與記錄1)在VC+2008中實現(xiàn)指導(dǎo)書中示例程序。并嘗試改變輸出內(nèi)容。2)程序設(shè)計題VS08中實現(xiàn)向文件:test.txt中寫入double類型數(shù)據(jù)3.1415926,和字符串“3.1415926 is pi value”。然后從文件中讀入3.1415926到程序中的double型變量pi中。并將pi值顯示在屏幕上。注意:如果直接使用cout<

52、;<3.1415926或是文件方式寫入文件時,寫入double類型的數(shù)據(jù),默認(rèn)是6為有效數(shù)字,即寫入的數(shù)是3.14159??梢酝ㄟ^如下方式實現(xiàn)寫入3.1415926,通過包含頭文件,測試如下兩行代碼,然后用于本題設(shè)計中。#include “iomanip”/注意下面兩行代碼的不同結(jié)果cout<<3.1415926;cout<<setprecision(8)<<3.1415926;5 實驗預(yù)習(xí)與思考題1. C語言的基本語法與C+的基本語法2. 預(yù)習(xí)C+的輸入輸出流和文件流的相關(guān)知識3. 建立win32控制臺程序的基本概念(console)。4. 閱讀Vi

53、sualC+2008 經(jīng)典入門 第一章1.4.4 1.5 1.6 節(jié)內(nèi)容6 實驗報告要求1. 實驗分為三環(huán)節(jié):實驗預(yù)習(xí),實驗操作,報告完成。其中“實驗預(yù)習(xí)”環(huán)節(jié)要求學(xué)生在實驗課前完成,涉及與實驗相關(guān)知識點的復(fù)習(xí)與程序的編寫;“實驗操作”環(huán)節(jié)在實驗課上完成,主要涉及程序的調(diào)試;實驗課后,完成實驗報告的撰寫。2. 實驗報告格式統(tǒng)一,使用實驗報告紙打印,黏貼后上交。3. 實驗內(nèi)容與記錄中,應(yīng)包含程序說明性文字,程序核心代碼及相關(guān)注釋,最后附上程序運行結(jié)果基礎(chǔ)實驗二 類與對象1 實驗?zāi)康?) 掌握類與對象的創(chuàng)建2) 理解類的定義,聲明,實現(xiàn)的基本概念,理解對象創(chuàng)建的概念3) 正確區(qū)分類的三種訪問屬性4

54、) 理解構(gòu)造函數(shù)以及析構(gòu)函數(shù)的功能,掌握構(gòu)造函數(shù)及析構(gòu)函數(shù)的定義2 實驗原理2.1 類的定義與實現(xiàn)C+類將對象的屬性抽象為數(shù)據(jù)成員,將對象的行為抽象為成員函數(shù),并對它們進行封裝。數(shù)據(jù)成員又稱成員變量,成員函數(shù)又稱為方法。1) C+類定義的基本形式:class <類名>private:<私有數(shù)據(jù)成員和私有成員函數(shù)的聲明列表>public:<公有數(shù)據(jù)成員和公有成員函數(shù)的聲明列表>protected:<保護數(shù)據(jù)成員和保護成員函數(shù)的聲明列表>2.1.1 類的實現(xiàn)(1)利用C+類進行面向?qū)ο缶幊?,定義類的成員只是完成了工作的第一步,最重要的工作是實現(xiàn)定義的

55、類。(2)類的實現(xiàn)實質(zhì)上是類的成員函數(shù)的實現(xiàn),即定義類的成員函數(shù)。(3)成員函數(shù)的定義形式與一般函數(shù)的定義形式基本相同,但必須在成員函數(shù)名前加上類名和作用域限定符(:)。(4)成員函數(shù)的定義也可放在類體內(nèi)(該函數(shù)聲明之處),這時成員函數(shù)將變成內(nèi)聯(lián)函數(shù)。2.1.2 利用類聲明對象對象是類的一個實例,定義并實現(xiàn)了類,就可以利用定義好的類來聲明對象,即創(chuàng)建對象。聲明對象的形式與聲明普通變量類似,例如:Time t1, start ;point *pt1=&t1注意:在利用定義好的類來聲明對象,即創(chuàng)建對象時,會默認(rèn)調(diào)用類的構(gòu)造函數(shù)。2.1.3 構(gòu)造函數(shù)和析構(gòu)函數(shù)成員變量的初始化一般是利用一個名

56、為構(gòu)造函數(shù)的成員函數(shù)來完成。構(gòu)造函數(shù)是一種特殊的成員函數(shù),它是在創(chuàng)建對象時(聲明或new動態(tài)創(chuàng)建)系統(tǒng)自動調(diào)用的成員函數(shù)。析構(gòu)函數(shù)也是一種特殊的成員函數(shù),它是在對象生存期結(jié)束時系統(tǒng)自動調(diào)用的成員函數(shù)。2.2 程序示例2.2.1 鐘表的示例現(xiàn)實生活中,大家都有使用電子表的經(jīng)歷,當(dāng)我們將手頭的一塊電子表進行時間設(shè)置后,電子表就可以顯示時間,并隨著時間的流逝,不斷更新時間顯示。本例說明通過對鐘表進行設(shè)置時間以及可以顯示時間作為目標(biāo)進行建模,設(shè)計鐘表類,進行面向?qū)ο笾惺褂妙愡M行程序設(shè)計的說明。 鐘表提供的成員函數(shù)(方法)鐘表的基本功能應(yīng)該可以設(shè)置時間和顯示時間。因此對于鐘表,我們可以認(rèn)為

57、其可以提供兩個基本功能(后續(xù)變量命名采用帕斯卡命名法):(1)設(shè)置時間 SetTime(2)顯示時間 ShowTime歸結(jié)到鐘表CClock(CClock第一C表示Clock是C+語言實現(xiàn)的類)類中即其有如下兩個成員函數(shù):void SetTime(int _Hour, int _Minute, int _Second);void ShowTime();其中void SetTime(int NewH, int NewM, int NewS)函數(shù)的形參為時、分、秒,即我們需要設(shè)置的具體時間。void ShowTime()用于顯示時間,因為顯示功能不需要傳遞形參,所以未設(shè)置形參。當(dāng)然如果考慮顯示是以24進制或是12進制顯示時,可以增加一個用于區(qū)分小時制的形參。 鐘表的成員變量(屬性)對于一個鐘表而言,其顯示的時間由時、分、秒組成,所謂設(shè)置時間即是設(shè)定時、分、秒對應(yīng)的值,顯示時間即是將時、分、秒所對應(yīng)的值顯示出來。所以很自然想到為鐘表CClock類添加三個成員變量,分別對應(yīng)鐘表的時、分、秒。這里不妨設(shè)為 Hour,Minute,Second

溫馨提示

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

評論

0/150

提交評論