版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C+世界地圖C+世界眾生相用函數(shù)封裝程序C+的面向?qū)ο驝+的異常處理STL的魅力總結(jié)經(jīng)驗1.C+世界地圖有人說,C+是一種高級程序設(shè)計語言;有人說,C+是C語言的繼承者;有人說,C+是一種面向?qū)ο蟮乃季S方式。這些答案都從某個側(cè)面回答了“C+是什么”,在這里我不能給您所謂的完美的答案。我所能做到的是如實的講述C+時間的各色公民、風俗見聞,作一個導(dǎo)游為各位旅行者指引方向和路徑。等各位完成C+世界之旅后,會有自己的答案。首先了解C+的發(fā)展歷史,可以加深我們了解C+的文化,從而更好的掌握這門語言。很久以前.1967年,計算機科學(xué)家丹尼斯.里奇進入美國AT&T的貝爾實驗室工作,里奇和同事肯.湯普
2、森發(fā)現(xiàn)在DEC PDP-7機器上編寫程序很困難,只能用匯編語言編程,于是湯普森設(shè)計了一門高級語言,命名為B語言(他妻子名字的第一個字母是B),但是B語言本身設(shè)計的缺陷使得湯普森在內(nèi)存的限制面前一籌莫展。到了1973年,里奇對B語言進行改良,他賦予這門新語言強有力的系統(tǒng)控制方面的能力。新語言非常簡潔、高效,里奇把它命名為C語言,意為B語言的下一代程序設(shè)計語言。1978年里奇和布萊恩.科爾尼一起出版了C程序設(shè)計語言。1989年,C語言被ANSI標準化。20世紀90年代,標準再次更新,就是C99,2000年ANSI采用了這個標準。1979年貝爾實驗室的本賈尼.斯特勞斯特盧普和同事使用C語言編程分析U
3、NIX內(nèi)核的時候,為了使得程序更好用給C語言加入了Simula語言的類機制。這個時候盧普產(chǎn)生了發(fā)明新語言的想法。盧普為了突破C語言的種種局限,借鑒了其他語言的優(yōu)點,開發(fā)出C+語言,實現(xiàn)了C到C+的進化。1985年盧普完成了C+程序設(shè)計語言第一版。 到了1990年C+里又出現(xiàn)了標準模板庫(STL)和異常處理,使其功能變得更強大。2003年推出了C+03標準,最新的C+0 x等待公布。微軟開發(fā)了C#,C#繼承了C+的很多特性,配合.NET Framework,C#的開發(fā)越來越簡單,但是同樣受制于.NET Framework,同樣的功能使用C#只有一種方法,因為很多功能框架就定死了,而使用C+,我們
4、就可以用不同的方法實現(xiàn),因為C+更貼近操作系統(tǒng),只要了解背后的機制就能編寫對應(yīng)的方法去處理問題。與windows系統(tǒng)1985年蓋茨用C+完成了windows1.0,C+就和windows緊密連接在一起,windows的底層是用C+開發(fā)的,大多數(shù)應(yīng)用也是C+開發(fā)的,windows系統(tǒng)里流淌著C+的血液,這使得C+調(diào)用windows API具有優(yōu)勢。與linux操作系統(tǒng)Linux本身是C語言開發(fā)的,C與C+有這一脈相承的關(guān)系,使得linux對C+的開發(fā)非常友好。Linux上的多數(shù)的應(yīng)用都是C+開發(fā)的,比如Apache、MySOL等。與嵌入式系統(tǒng)嵌入式系統(tǒng)內(nèi)存容量低、CPU主頻低,要求代碼執(zhí)行效率高
5、,同時為了提高開發(fā)效率,要求高級語言,嵌入式系統(tǒng)對開發(fā)語言的苛刻要求,是C+的優(yōu)勢所在。除了低級的匯編語言外,C+很具優(yōu)勢。編程的過程是將自然語言翻譯成C+語言的過程舉個例子:有個男孩叫小茗,有個女孩叫小云。男孩向女孩主動示愛。女孩對男孩進行考察,如果男孩有房有車,則與男孩交往;如果沒有,則與男孩拜拜。男孩:小茗男孩:小云男孩向女孩示愛女孩進行考察與男孩拜拜與男孩交往有房有車沒房或沒車boy:xm男孩:xyxm.ShowLoveTo(xy)If(xm.HasHouseAndCar()xy.SayByeTo(xm)xy.SayHelloTo(xm)true false自然語言轉(zhuǎn)成程序流程自然語言
6、翻譯成C+如下Boy xm;/聲明對象xmGirl xy; /聲明對象xy/男孩向女孩示愛xm.ShowLoveTo(xy);/女孩考察男孩,如果男孩有房又有車If(xm.HasHouseAndCar() xy.SayHelloTo(xm); /女孩和男孩交往Else xy.SayByeTo(xm); /女孩和男孩拜拜程序員利用程序設(shè)計語言準確定義計算機需要使用的數(shù)據(jù),并定義在不同情況下所應(yīng)當采取的行動,讓計算機完成特定的任務(wù)。包含數(shù)據(jù)成分、運算成分、控制成分、傳輸成分。多讀多寫程序是掌握編程的不二法門。和Google、電驢、MSDN做朋友學(xué)好C+C+世界的迎賓:“HelloWorld.exe
7、”C+程序的創(chuàng)建 用Visual Studio創(chuàng)建C+程序C+程序的構(gòu)成 C+程序=預(yù)編譯指令+程序代碼+注釋 /HelloWorld.cpp:定義控制臺應(yīng)用程序的入口點#include “stdafx.h”#include using namespace std;Int_tmain(int argc,_TCHAR* argv) cout“Hello world!”end;return 0; /屏幕上打印“Hello World!”注釋預(yù)編譯指令程序代碼C+程序執(zhí)行過程源代碼文件經(jīng)過預(yù)編譯(展開源代碼中的宏,引入相應(yīng)的頭文件等)形成預(yù)處理后的源文件,編譯器將預(yù)處理后的源文件編譯成目標代碼文件,
8、形成目標文件,鏈接器將多個目標文件和庫函數(shù)的目標文件進行連接,形成可執(zhí)行程序。/編譯源文件成為目標文件Cl /c /EHsc HelloWorld.cpp/鏈接目標文件Link HelloWorld.obj 執(zhí)行的時候由操作系統(tǒng)初始化定義的全局變量,調(diào)用全局對象的構(gòu)造函數(shù)。最后進入程序的入口,就是_tmain(),在_tmain()里一條語句接著一條語句執(zhí)行,遇到return 0,_tmanin()執(zhí)行結(jié)束,程序也就結(jié)束。 .cpp源文件.obj目標文件.exe可執(zhí)行程序編譯器cl.exe鏈接器link.exe函數(shù)庫文件HelloWorld.objHelloWorld.exe基本輸入輸出流C+
9、使用標準類庫iostream實現(xiàn)基本數(shù)據(jù)的輸入輸出Cout:處理標準輸出,就是屏幕輸出cout“Hello World”;Cout“1+2=”1+2;cin:處理標準輸入,就是鍵盤輸入int nAge;string strName;cinnAgestrName;實例:cin&cout配合使用#include “stdafx.h”#include /引入定義輸入輸出流對象的頭文件using namespace std; /引入std名字空間int _tmain(int argc, _TCHAR* argv)cout “請輸入兩個整數(shù):” v1 v2; /從鍵盤輸入提取用戶輸入的整數(shù)cou
10、t “兩個整數(shù)” v1 “和” v2 /將計算結(jié)果輸出到屏幕 “的和是” v1+v2 endl;return 0;讀/寫文件(ofstream&ifstream)#include “stdafx.h”#include #include using namespace std;Int _tmain(int argc, _TCHAR* argv) int nYear, nMonth, nDate; ifstream fin(“Date.txt”) if(!fin.bad() /嘗試打開文件并將文件數(shù)據(jù)打印到屏幕上fin.ignore(256,n); fin nYear nMonth nDa
11、te; cout “文件中的日期是” nYear“-”nMonth“-”nDateendl; fin.close();elsecout “無法打開文件并進行讀取”endl;讀/寫文件(ofstream&ifstream)cout “請輸入當前日期(年月日):”nYearnMonthnDate;ofstream fout(“Date.txt”);If(!fout.bad()fout“用戶輸入的當前日期是:n” nYear“ “nMonth“ “nDate;fout.close();elsecout“無法打開文件并進行寫入”endl;return 0;上述程序中,首先創(chuàng)建一個輸入文件流if
12、stream的對象fin,并利用它的構(gòu)造函數(shù)將其連接到一個文本文件Date.txt.當利用fin對象成功打開一個文件后,就利用提取符“”從fin中提取數(shù)據(jù)。“”會以空格為分隔符逐個從文件中讀取數(shù)據(jù),并通過ofstream對象保存到文件中。2.C+世界眾生相l(xiāng)基本數(shù)據(jù)類型p 整型,int,p 字符型, char,p 實型, float, double,p 邏輯型, bool ( standard c+ new feature ! ) /bool類型轉(zhuǎn)成整型,false就是0 /true就是 1 char, unsigned char, signed char, int, unsigned int
13、, signed int, short int, unsigned short int, signed short int, long int, signed long int, unsigned long int, float, double, long double,實型數(shù)據(jù) (float, double) 無unsigned編寫一個程序,打印出所有C+基本類型的大小#include using namespace std;int main() cout size of char is: sizeof(char) endl; cout size of unsigned char is: s
14、izeof(unsigned char) endl; cout size of signed char is: sizeof(signed char) endl; cout size of int is: sizeof(int) endl; cout size of unsigned int is: sizeof(unsigned int) endl; cout size of signed int is: sizeof(signed int) endl; cout size of short int is: sizeof(short int) endl; cout size of long
15、int is: sizeof(long int) endl;l構(gòu)造數(shù)據(jù)類型p數(shù)組類型p結(jié)構(gòu)類型/長方形數(shù)據(jù)結(jié)構(gòu)struct Rectint m_nLength; /長int m_nWidth; /寬;p聯(lián)合類型p枚舉類型:enum Weekdaymon,tue,wed,thu,fri,sat,sun; /每個枚舉元素都代表一個整數(shù) /*在沒有賦值的情況下,每個枚舉元素都有一個默認的 整數(shù)值,依次是0、1、2、3.*/Weekday nDay = Weekday:sun; / 將其初始值設(shè)置為周日nDay=7 /編譯報錯,只能使用枚舉類型的某個可選值對枚舉型變量賦值。 /枚舉元素一旦在定義過程中
16、賦值,以后不能改變,當作常量使用。 /如果想把某個變量限制在某幾個可選值范圍之內(nèi),可以聲明該變量為枚舉類型。l變量必須先聲明后使用p語法格式舉例:int nStudentNum ;int nStudentID, nClass, nAge;float fScore;int case;int 3member;bool do you knowp變量命名:匈牙利命名法:變量名=屬性+類型+對象描述大多數(shù)項目成員能夠認識就是好的命名規(guī)則p變量初始化Int nHeight=178;String strName(“XiaoMing”); /建議對變量進行初始化,否則系統(tǒng)分配一個隨機值l常量無需聲明直接使用p
17、整型常數(shù)nHeight=173; /十進制常數(shù)nHeight=0255; /八進制常數(shù)nHeight=0 xAD; /十六進制常數(shù)p浮點型常數(shù)1.0、0.125、0.0 1.1e5=1.1105p字符常量char aMark=A;cout!end1;p字符串常量strName=“huawei”;cout“你的名字是: ”賽門鐵克” “end1;l用宏與const關(guān)鍵字定義常量p用#define預(yù)編譯指令來定義一個宏:#define PI 3.15159 Double fCircle=2*PI*fR /利用宏代替常量計算圓的周長,宏的本質(zhì)是替代 /如果預(yù)編譯程序在代碼中發(fā)現(xiàn)了宏,就會用宏的值代替
18、宏#define MIN 0#define MAX 100for(int I = MIN; i MAX; i+) /pconst關(guān)鍵字const float PI=3.141592; /PI的值不可再改,必須在定義常量的同時完成它的賦值l字符串類型C+中沒有一個單獨的字符串類型,string其實是字符數(shù)組的包裝,在字符數(shù)組中,每個位置保存一個字符,用“0”表示字符串的結(jié)束。p如果包裝的是char類型的數(shù)組,則字符串類型為string,如果包裝的是wchar_t類型的數(shù)組,則字符串類型就是wstring。例如:string strMorning(“Good Morning!”);wstring
19、strChina(“中國”);coutstrMorning;wcout.imbue(locale(“chs”); /wstring類型字符串輸出時候要使用wcout對象,并且用imbue()wcoutstrChinaendl; /設(shè)定字符的編碼方式pString 類型不僅包裝了字符數(shù)組,同時還提供了很多跟字符串相關(guān)的操作,可以獲得一個字符串的長度,或者在字符串中查找某個字符,方便了對字符串的處理。例如:String strMorning(“Good Morning!”);int nLength = strMorning.length();String:size_type nPos=strMor
20、ning.find(0);CoutstrMorning“的長度是:”nLength“n在位置”nPos“有一個字符o?!眅ndl;l數(shù)組int nSalary100;float fArray23;int point100100100;Int nArray5 = 1,2,3,4,5; /定義數(shù)組并進行初始化Float fArray23=2.3,2.5,3.6,1.8,1.9,2.8;/通過循環(huán)給數(shù)組賦值int a34;for(int i=0,i3,i+) for(int j=0; j4; j+) aij=i+j; count“輸出的數(shù):”+aij+”,”endl; cout“n”; 結(jié)構(gòu)類型/將
21、員工這個事物的多個屬性打包成一個結(jié)構(gòu)體struct Employee string m_strName; bool m_bmale; int m_nAge; int m_nSalary;const int MAX_COUNT = 1000; /表示最大員工數(shù)int main(int argc, _TCHAR* argv) Employee arrEmplyeeMAX_COUNT; cout“請輸入員工信息”arrEmployeenCount.m_strNamarrEmploynCount.m_bMalearrEmploynCount.m_nAge arrEmploynCount.m_nSala
22、ry;結(jié)構(gòu)類型/檢查是否輸入完畢If(“end”= arrEmployeenCount.m_strName)break;/開始輸入下一個員工的信息+nCount;while(nCount MAX_COUNT);/顯示所有員工的信息cout“員工信息:n 姓名 t 性別 t 年齡 t 工資” endl;for(int i=0; inCount; i+)/訪問數(shù)組中結(jié)構(gòu)體變量的成員變量,獲得員工的各種屬性coutarrEmployeei.m_strName“t” arrEmployeei.m_bMale“t” arrEmployeei.m_nAge“t” arrEmployeei.m_nSalar
23、yendl; return 0; l指針類型在典型的32 位平臺上,可以把內(nèi)存空間看成是由很多個連續(xù)的小房間構(gòu)成的,每個房間就是一個小存儲單元,大小是1 個字節(jié),房間中住著數(shù)據(jù)。有的數(shù)據(jù)比較小,比如一個char類型的字符,它只需要一個房間就夠了。而有的數(shù)據(jù)比較大,就需要占用好幾個房間,比如一個int 類型的整數(shù),其大小是4 個字節(jié),需要4 個房間才可以安置。為了方便找到住在這些房間中的數(shù)據(jù),房間就需要按照一定的規(guī)則編號,這個編號,就是通常所說的內(nèi)存地址。這些編號是用一個32 位的二進制數(shù)來編碼的,比如0 x7AE4074B、0 xFFFFFFFF 等。用于存放內(nèi)存單元地址的數(shù)據(jù)類型,就是指針。
24、int n=703;int *p = &n;int m=*p; l運算符注意:float和double的比較分支結(jié)構(gòu)比較v1和v2的大小switch語句while循環(huán)int main(int argc, _TCHAR* argv)cout “=每月收支統(tǒng)計程序=“endl;cout “請輸入你本月的收入(正數(shù))和支出(負數(shù)),0表示輸入結(jié)束?!眅ndl;Int nInput = 1;Int nTotal = 0;While (0!=nInput)cout nInput;nTotal+=nInput;cout “你本月的結(jié)余是: “ nTotal endl; /輸出結(jié)果return 0;
25、dowhile使用dowhile循環(huán)結(jié)構(gòu)改寫后,nInput無須給定初始值,可以直接由用戶輸入賦值,然后再進行條件判斷。在某些至少進行一次循環(huán)的需求中,使用dowhile比較合適for循環(huán)工資統(tǒng)計程序3.用函數(shù)封裝程序l舉例說明1int Add(int a, int b)int nResult = a+b; /聲明并定義Add函數(shù) return nResult;int _tmain(int argc, _TCHAR* argv)int a=1,b=2;int nResult = Add(a,b);couta“+”b“=“nResultendl;return 0;l舉例說明2/輸入員工的工資數(shù)據(jù)
26、到工資數(shù)組中int InputSalary(int* pSalary, const int MAX_NUM)int nTemp = 0; /暫存用戶輸入的數(shù)據(jù)Int nIndex= 0; /輸入序號docout “請輸入員工”Index“的工資:”nTemp;if(nTemp0)break;pSalarynIndex = nTemp;+nIndex;while(nIndex MAX_NUM);return nIndex; /返回輸入的數(shù)據(jù)總數(shù)l舉例說明2l舉例說明2舉例說明:inline int add(int a, int b)return a+b;int _tmain(int argc,
27、_TCHAR* argv)cout “a+b”“=“add(2,3)endl;/編譯期間編譯器把內(nèi)聯(lián)函數(shù)直接插入到調(diào)用的位置,省略了運行期間函數(shù)調(diào)用的步驟舉例說明/ 計算整型數(shù)和的Add()函數(shù)int Add( int a, int b )coutint Add( int a, int b )被調(diào)用!endl;return a + b;/ 計算浮點型數(shù)和的Add()函數(shù)float Add( float a, float b )cout float Add( float a, float b )被調(diào)用!endl;return a + b;int _tmain(int argc, _TCHAR*
28、argv)/ 因為參數(shù)是整型數(shù)int nSum = Add(2,3); / 調(diào)用int Add( int a, int b )cout 2 + 3 = nSumendl;/ 因為參數(shù)是浮點數(shù)float fSum = Add(2.5f,3.7f); / 調(diào)用float Add( float a, float b )cout 2.5 + 3.7 = fSumendl;return 0; 4.C+的面向?qū)ο箢惖穆暶饕话阍陬^文件中聲明類的所有成員聲明類的成員的屬性聲明所有接口(公共函數(shù)成員)的簽名(格式)類的定義一般放在程序文件( .cc文件)中定義類的所有成員函數(shù)的具體實現(xiàn)方法對象是類的一個實例Pe
29、rson是一個class,它是一個數(shù)據(jù)類型somebody是一個對象,它是一個具體的變量類是一類對象的描述定義結(jié)構(gòu),可以聲明許多變量定義類,可以聲明許多對象l“struct”和“class”默認情況下用“class”聲明的類成員是私有的private,而用struct聲明的類成員是公有的。struct Person char name30;unsigned int age;char address100;float salary;void setName(char*);void setAge(unsigned int);void setAddress(char*); void setSalar
30、y(float);void disp( );void Person:setName(char* str) strcpy(name, str);void Person:setAge(unsigned int yr) age = yr;void Person:setSalary(float s) salary = s;void Person:setAddress(char* addr) strcpy(address, addr);void Person:disp( )cout Name: name endl;cout Age: age endl;cout Address: address endl
31、;cout Salary: salary endl;#include int main( )Person Jack = Jack, 30, Beijing China, 8000.0;Jack.disp( );Person somebody; somebody.setName( Lisa ); somebody.setAge( 20 ); somebody.setAddress( Toronto, Canada ); somebody.setSalary(6000.0); somebody.disp( );/仍然存在的問題仍然存在的問題#include int main( )Person Ja
32、ck = Jack, 30, Beijing China, 8000.0;Jack.disp( );Jack.salary = 1000.00;Jack.disp( );引入class類型對數(shù)據(jù)成員進行保護增加存取范圍私有成員private保護成員protected公共成員publicclass Person /定義類來實現(xiàn)數(shù)據(jù)隱藏private:char name30;unsigned int age;char address100;float salary;public:void setName(char* str);void setAge(unsigned int yr);void se
33、tAddress(char *str);void setSalary(float yuan);void disp( );在C+中,class與struct的區(qū)別struct的缺省作用域為publicclass的缺省作用域為privateprivate的數(shù)據(jù)成員只能被類的成員函數(shù)所使用類的聲明一般在頭文件中聲明類的所有成員聲明類的成員的屬性聲明所有接口(公共函數(shù)成員)的簽名(格式)類的定義一般放在程序文件( .cc文件)中定義類的所有成員函數(shù)的具體實現(xiàn)方法對象是類的一個實例Person是一個class,它是一個數(shù)據(jù)類型somebody是一個對象,它是一個具體的變量類是一類對象的描述定義結(jié)構(gòu),可以
34、聲明許多變量定義類,可以聲明許多對象class Teacherpublic : void prepareLesson(); void Teacher: prepareLesson() cout“老師備課?!眕repareLesson();class Teacherpublic: Teacher(string strName) m_strName=strName;void prepareLesson();protected:string m_strName;private:;Teacher MrChen(“ChenLiangqiao”);或者 Teacher * pLiuwei=new Teacher(“Liuwei”);構(gòu)造函數(shù)一種特殊的函數(shù)沒有返回類型只能作為是公共成員只能用一個固定的名字,函數(shù)名就是類的名字構(gòu)造函數(shù)只在建立對象的時候自動被調(diào)用一次構(gòu)造函數(shù)必須是公共的,否則無法生成對象構(gòu)造函數(shù)只負責為自己的類構(gòu)造對象如果類沒有聲明構(gòu)造函數(shù),那么編譯器會為該類生成一個默認的構(gòu)造函數(shù),該函數(shù)無參數(shù),不做任何事情。 /用于處理一些對象在被銷毀前的清理工作用于處理一些對象在被銷毀前的清理工作如果沒有顯式的聲明析構(gòu)函數(shù),編譯器會為其產(chǎn)生
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文明校園演講稿范文300字(8篇)
- 護理見習自我評價
- 工作失職萬能檢討書(6篇)
- 房屋所有權(quán)證明范文
- 小區(qū)關(guān)于燃放煙花爆竹的承諾書(5篇)
- 幸運是不存在的努力才是硬道理
- 2025年山東淄博沂源縣事業(yè)單位招考115人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟寧鄒城市事業(yè)單位招聘工作人員(綜合類)113人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟寧市屬事業(yè)單位招聘47人(教育類)管理單位筆試遴選500模擬題附帶答案詳解
- 開會遲到檢討書范文
- 2023年度四川公需科目:數(shù)字經(jīng)濟與驅(qū)動發(fā)展
- 汽車制造業(yè)的柔性生產(chǎn)與敏捷制造
- 五年級上冊小數(shù)乘除練習300道及答案
- 不動產(chǎn)抵押登記手續(xù)
- 公安機關(guān)執(zhí)法執(zhí)勤規(guī)范用語
- 無人機技術(shù)在消防救援中的作用與局限
- 超越指標:存量時代降本增效的利器
- 一年級道德與法治無紙筆期末檢測質(zhì)量分析
- 形式邏輯期末考試含答案
- 自媒體賬號運營的用戶畫像分析技巧
- 醫(yī)院門窗工程施工方案與施工方法
評論
0/150
提交評論