C程序設計實驗指導書及答案_第1頁
C程序設計實驗指導書及答案_第2頁
C程序設計實驗指導書及答案_第3頁
C程序設計實驗指導書及答案_第4頁
C程序設計實驗指導書及答案_第5頁
已閱讀5頁,還剩241頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

長春理工大學計算機科學及技術專業(yè)C#程序設計實驗指導C#程序設計實驗指導書實驗須知1.實驗前,應認真閱讀實驗指導書,明確實驗目的、實驗內容和實驗步驟,做好實驗準備。實驗中,積極思考,及時記錄,有疑問及時解決,當堂完成實驗內容和實驗報告。實驗中嚴格遵守實驗室管理規(guī)則,珍惜實驗時間,不做及實驗無關的事。實驗結束,按要求填寫實驗機器使用記錄單,正確關閉實驗用機,整理好鍵盤和椅子,值日生認真打掃實驗室衛(wèi)生。目錄TOC\o"1-2"\h\z\u任務一熟悉VS2005開發(fā)環(huán)境1任務二掌握基本程序邏輯8任務三掌握循環(huán)語句13任務四創(chuàng)建類及對象18任務五創(chuàng)建靜態(tài)類及靜態(tài)方法25任務六實現(xiàn)繼承和抽象類32任務七掌握多態(tài)的應用40任務八掌握接口的實現(xiàn)47任務九實現(xiàn)對數(shù)組的操作57任務十實現(xiàn)隊列、棧的操作64任務十一實現(xiàn)進銷存系統(tǒng)供應商信息維護67任務十二掌握開發(fā)WinForms應用程序的步驟73任務十三掌握系統(tǒng)主界面設計90任務十四掌握委托及事件處理機制100任務十五訪問SQLServer數(shù)據庫106任務十六訪問Access數(shù)據庫120任務十七了解字符串操作(選做)129任務十八掌握文件操作(選做)136任務一熟悉VS2005開發(fā)環(huán)境實驗目的掌握VS2005開發(fā)C#應用程序的步驟掌握VS2005調試器的使用第一部分上機訓練1、采用VS2005編寫HelloWorld應用程序1)打開VS2005開發(fā)工具2)在VS2005主界面下選擇菜單【文件】|【新建】|【項目】3)在新建項目對話框中選擇VisualC#,模板選擇控制臺應用程序,給項目命名為HelloWorld,然后點“瀏覽”按鈕,選擇項目的存儲目錄4)程序生成的文件如下5)雙擊Program.cs,鍵入代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceHelloWorld{classProgram{staticvoidMain(string[]args){Console.WriteLine("HelloWorld");}}}6)在菜單上選擇【生成】|【生成解決方案】7)按F5或者點啟動調試按鈕運行程序8)這時會發(fā)現(xiàn)DOS窗口一閃不見,按Ctrl+F5,或者在菜單上選擇【調試】|【開始執(zhí)行(不調試)】,可以解決這個問題9)運行結果如下:2、斷點的設置及調試1)按上述步驟創(chuàng)建名為BreakPoint的控制臺應用程序2)在Program.cs中輸入如下代碼:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceBreakPoint{classProgram{staticvoidMain(string[]args){inti=5;intj=i*2;Console.WriteLine("{0}{1}",i,j);}}}3)給intj=i*2;行設置斷點,只需點左邊的空白欄4)按F5執(zhí)行程序,會發(fā)現(xiàn)程序執(zhí)行到斷點處停止,移動鼠標到i和j上,觀察i,j的當前值5)選擇工具欄的逐語句按鈕或者按F11,單步執(zhí)行程序9)再次觀察i,j的值10)注意下面的調試監(jiān)視窗口:第二部分實戰(zhàn)提高請修改HelloWorld應用程序,輸出自己的班級、學號、姓名,自我介紹。代碼寫在下面:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceHelloWorld{classProgram{staticvoidMain(string[]args){Console.WriteLine("HelloWorld");Console.WriteLine("班級:級網絡工程班");Console.WriteLine("學號:");Console.WriteLine("姓名:劉群");Console.WriteLine("自我介紹:");Console.WriteLine("我來自四川,現(xiàn)就讀于華僑大學計算機科學及技術學院。");Console.ReadKey();}}}第三部分知識總結學生總結請將問題答案寫在下面空白處完成上機訓練模塊花費的時間10min完成實戰(zhàn)提高模塊花費的時間5min本次實驗對你而言的難點斷點調試本次實驗的收獲斷點調試希望老師強化講解的知識要點斷點調試希望老師幫助回答的問題本次實驗自評分數(shù)(五分制)5教師評價請將評語、分數(shù)等寫在下面空白處問題答疑實驗評語實驗得分任務二掌握基本程序邏輯實驗目的編寫應用程序掌握變量、常量、枚舉的使用掌握表達式的應用掌握分支語句的應用第一部分上機訓練1、編寫一個程序,列舉班級所有班委,然后使用這個枚舉1)創(chuàng)建一個名位TestEnum的控制臺應用程序2)在namespaceTestEnum{和classProgram之間輸入:enum班委{班長,團支書,生活委員,體育委員,勞動委員,} 注意縮進和對齊3)在staticvoidMain(string[]args)方法中輸入:班委classTeam=班委.生活委員;switch(classTeam){case班委.班長:Console.WriteLine("我是班長");break;case班委.團支書:Console.WriteLine("我是團支書");break;case班委.生活委員:Console.WriteLine("我是生活委員");break;case班委.體育委員:Console.WriteLine("我是體育委員");break;case班委.勞動委員:Console.WriteLine("我是勞動委員");break;default:Console.WriteLine("為什么我不是班委?");break;}4)按CTRL+F5查看運行結果2、計算圓面積,圓面積公式為Area=∏×R2,這種表示符號,在計算機中只能表示為Area=PI*R*R,在本例中,我們希望用戶輸入圓的半徑,但是用戶的輸入只能是字符串,因此,這里我們要用到數(shù)制的轉換,注意數(shù)制的轉換方法1)新建一個名為CircleArea的控制臺應用程序2)輸入如下代碼:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceCircleArea{classProgram{staticvoidMain(string[]args){//定義常量constfloatPI=3.1415926f;Console.Write("請輸入圓的半徑:");//獲取用戶的輸入stringinput=Console.ReadLine();//將字符串轉化為浮點數(shù)floatradius=float.Parse(input);//計算圓面積floatcirclArea=radius*radius*PI;//輸出結果Console.WriteLine("圓面積為:{0}",circlArea);}}}3)按Ctrl+F5運行程序4)補充:數(shù)制的轉換將字符串轉換成某種類型,只需直接寫成類似int.Parse(”11”第二部分實戰(zhàn)提高1、編寫一個程序接受用戶輸入的字符串。如果輸入的字母是”a”、”e”、”i”、”o”或”u”中的一個,則顯示“您輸入了一個元音”,否則顯示“這不是一個元音”。singSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceVowel{classProgram{staticvoidMain(string[]args){Console.WriteLine("請輸入一個英文字母:");stringinput=Console.ReadLine();//chara,e,i,o,u;if(input=="a"||input=="e"||input=="i"||input=="o"||input=="u")Console.WriteLine("您輸入了一個元音");elseConsole.WriteLine("您輸入的不是一個元音");Console.ReadKey();}}}2、人有胖瘦之分,體重過輕則為瘦,過重則為胖,則以什么樣的標準來衡量是胖還是瘦呢?這當然必須有個參照值,這個參照值,我們就把它稱之為標準體重。目前在我國尚沒有統(tǒng)一的標準體重數(shù)據。除了國際流行的體重計算方法外,軍事科學院還推出一計算中國人理想體重的方法:北方人理想體重(千克)=(身高厘米-150)x0.6+50,南方人理想體重(千克)=(身高厘米-150)x0.6+48,這一計算方法,似乎比較適合南北地區(qū)中國人。正常體重一般在標準體重+-10%以內的范圍。超過這一范圍,就可稱之為異常體重。實測體重超過標準體重,但超出部分<20%者稱為超重;實測體重超過標準體重20%以上,并有脂肪百分率(F%)超過30%者則可診斷為肥胖病。體重超過標準體重的30%一50%,F(xiàn)%超過35%一45%者稱中度肥胖??;超過標準體重50%以上,F(xiàn)%超過45%以上者稱為重度肥胖病。根據以上描述,要求用戶輸入以下內容:1)北方人/南方人2)身高(厘米)3)體重(公斤)4)脂肪百分率(F%)根據以上公式和描述告訴客戶是否超重,如果超重,再告之其是何種肥胖病usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceWeight{classProgram{staticvoidMain(string[]args){doublearea,high,weight,percent,idealweight,F;Console.WriteLine("請輸入你所屬地區(qū)(北方=1/南方=2):");area=double.Parse(Console.ReadLine());//轉換成double型Console.WriteLine("請輸入您的身高(厘米)");high=Convert.ToDouble(Console.ReadLine());//另一個函數(shù)轉換類型Console.WriteLine("請輸入您的體重(公斤)");weight=Convert.ToDouble(Console.ReadLine());Console.WriteLine("請輸入您的脂肪百分率(F%)");F=double.Parse(Console.ReadLine());if(area==1){idealweight=(high-150)*0.6+50;percent=weight/idealweight;}else{idealweight=(high-150)*0.6+48;percent=weight/idealweight;}if(percent<0.9)Console.WriteLine("偏輕");else{if(percent<=1.1)Console.WriteLine("正常體重");else{if(percent<=1.2)Console.WriteLine("您超重了!");else{if(percent<=1.3){Console.WriteLine("您超重了!");if(F>30)Console.WriteLine("您患有肥胖病!");}else{if(percent<=1.5){Console.WriteLine("你超重了!");if(F>=35&&F<=45)Console.WriteLine("您患有中度肥胖??!");}else{Console.WriteLine("您超重了!");if(F>45)Console.WriteLine("您患有重度肥胖?。?);}}}}}Console.ReadKey();}}}第三部分知識總結學生總結請將問題答案寫在下面空白處完成上機訓練模塊花費的時間25min完成實戰(zhàn)提高模塊花費的時間50min本次實驗對你而言的難點本次實驗的收獲希望老師強化講解的知識要點希望老師幫助回答的問題本次實驗自評分數(shù)(五分制)教師評價請將評語、分數(shù)等寫在下面空白處問題答疑實驗評語實驗得分任務三掌握循環(huán)語句實驗目的掌握while循環(huán)掌握for循環(huán)第一部分上機訓練1、實現(xiàn)n的階乘1)新建一個名為Factorial的控制臺應用程序2)輸入如下代碼usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceFactorial{classProgram{staticvoidMain(string[]args){Console.Write("請輸入一個正整數(shù):");//接收用戶輸入stringinput=Console.ReadLine();//轉化為整數(shù)intn=int.Parse(input);//以上代碼可以合寫為//intn=int.Parse(Console.ReadLine());inti=1;intresult=1;while(i<=n){result=result*i;//或者寫成result*=i;i++;}Console.WriteLine("{0}的階乘為{1}",n,result);}}}3)Ctrl+F5運行查看結果2、打印9*9乘法表1)新建一個名為MutiTable的控制臺應用程序2)輸入如下代碼usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceMultiTable{classProgram{staticvoidMain(string[]args){//9行for(inti=1;i<=9;i++){//每行最多i列for(intj=1;j<=i;j++){Console.Write("{0}*{1}={2}\t",i,j,i*j);}//換行Console.WriteLine();}}}}Pathlin3)Ctrl+F5運行查看結果第二部分實戰(zhàn)提高1、改寫n的階乘計算程序,改用for循環(huán)usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceFactorial2{classProgram{staticvoidMain(string[]args){Console.Write("請輸入一個正整數(shù):");stringinput=Console.ReadLine();intn=int.Parse(input);intresult=1;for(inti=1;i<=n;i++){result=result*i;}Console.WriteLine("{0}的階乘為{1}",n,result);Console.ReadKey();}}}2、打印9*9加法表usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace加法表{classProgram{staticvoidMain(string[]args){//9行for(inti=1;i<=9;i++){//每行最多i列for(intj=1;j<=i;j++){Console.Write("{0}+{1}={2}\t",j,i,i+j);}//換行Console.WriteLine();}Console.ReadKey();}}}第三部分知識總結學生總結請將問題答案寫在下面空白處完成上機訓練模塊花費的時間完成實戰(zhàn)提高模塊花費的時間本次實驗對你而言的難點本次實驗的收獲希望老師強化講解的知識要點希望老師幫助回答的問題本次實驗自評分數(shù)(五分制)教師評價請將評語、分數(shù)等寫在下面空白處問題答疑實驗評語實驗得分任務四創(chuàng)建類及對象實驗目的理解面向對象的概念掌握C#創(chuàng)建類和對象的方法第一部分上機訓練1、很多軟件都要求我們先輸入用戶名和密碼才能使用,最常見的例子當屬Windows操作系統(tǒng),制作一個類,完成系統(tǒng)的登錄驗證工作1)新建一個名為MySoftware的控制臺應用程序2)在解決方案資源管理器中選中該項目,點鼠標右鍵盤,在彈出的菜單中選擇【添加】|【類】3)在彈出的對話框中將類名改為Login4)在代碼classLogin前添加public關鍵字5)添加Login類的成員變量privatestring_userName;privatestring_password;6)添加Login類的屬性publicstringUserName{get{returnuserName;}set{userName=value;}}publicstringPassword{get{returnpassword;}set{password=value;}}7)添加Login類的方法//方法publicboolIsValidateUser(){if(userName.Equals("admin")&&password.Equals("admin"))returntrue;elsereturnfalse;}8)完整代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceMySoftware{publicclassLogin{//私有字段privatestringuserName;privatestringpassword;//屬性publicstringUserName{get{returnuserName;}set{userName=value;}}publicstringPassword{get{returnpassword;}set{password=value;}}//方法publicboolIsValidateUser(){if(userName.Equals("admin")&&password.Equals("admin"))returntrue;elsereturnfalse;}}}9)雙擊Program.cs,在Main方法中輸入如下代碼:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceMySoftware{classProgram{staticvoidMain(string[]args){LoginloginModule=newLogin();Console.WriteLine("####################################################");Console.WriteLine("C#之星V1.0Beata版");Console.WriteLine("####################################################");Console.WriteLine("");Console.WriteLine("");Console.Write("請輸入您的用戶名:");stringuserName=Console.ReadLine();Console.Write("請輸入您的密碼:");stringpassword=Console.ReadLine();loginModule.UserName=userName;loginModule.Password=password;if(loginModule.IsValidateUser())Console.WriteLine("歡迎使用C#之星軟件V1.0版本");elseConsole.WriteLine("您的用戶名輸入錯誤,系統(tǒng)拒絕登錄!");}}}10)按Ctrl+F5運行程序,查看程序執(zhí)行效果第二部分實戰(zhàn)提高擴展登錄類,實現(xiàn)以下功能:1)在命名空間中增加用戶類型枚舉,包括管理員、普通用戶兩種2)在Login類中添加枚舉類型對應的成員變量,并將該變量封裝成屬性3)修改IsValidateUser()方法,對于不同的用戶身份,進入不同的歡迎界面4)用戶擁有5次登錄嘗試機會,如果5次登錄都失敗,程序結束,否則,允許用戶重新輸入用戶名和密碼。第三部分知識總結學生總結請將問題答案寫在下面空白處完成上機訓練模塊花費的時間完成實戰(zhàn)提高模塊花費的時間本次實驗對你而言的難點本次實驗的收獲希望老師強化講解的知識要點希望老師幫助回答的問題本次實驗自評分數(shù)(五分制)教師評價請將評語、分數(shù)等寫在下面空白處問題答疑實驗評語實驗得分任務五創(chuàng)建靜態(tài)類及靜態(tài)方法實驗目的掌握this的使用掌握靜態(tài)成員和靜態(tài)方法的應用掌握構造方法的使用第一部分上機訓練1、個人銀行業(yè)務主要由存款、取款、查詢余額、轉帳組成,一般銀行為我們辦理個人業(yè)務時,需要我們實現(xiàn)存入一部分錢方可為我們開戶,創(chuàng)建一個PersonalAccount類,實現(xiàn)以上功能。1)創(chuàng)建一個名為Bank的控制臺應用程序2)對于一個軟件系統(tǒng),我們需要顯示其版本號,軟件名稱,注冊碼等信息,這些信息可以用靜態(tài)成員變量保存。因此首先我們可以建一個GlobalSettings類存儲這些一般信息,類的創(chuàng)建方法和實驗四相同,注意不要忘記類名前加public,GlobalSettings類的代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceBank{publicclassGlobalSettings{privatestaticstringsoftwareName="創(chuàng)新銀行個人業(yè)務管理系統(tǒng)";publicstaticstringSoftwareName{get{returnGlobalSettings.softwareName;}set{GlobalSettings.softwareName=value;}}privatestaticstringsoftwareVersion="1.0版";publicstaticstringSoftwareVersion{get{returnGlobalSettings.softwareVersion;}set{GlobalSettings.softwareVersion=value;}}privatestaticstringsoftwareCompany="淮安信息職業(yè)技術學院計算機系創(chuàng)新實驗室--宋桂嶺";publicstaticstringSoftwareCompany{get{returnGlobalSettings.softwareCompany;}set{GlobalSettings.softwareCompany=value;}}privatestaticstringsoftwareDescribe="本系統(tǒng)的創(chuàng)意、著作權均歸作者本人所有,任何單位和個人如果引用本系統(tǒng)的任何內容,\n作者保留追究其法律責任的權利,特此聲明。";publicstaticstringSoftwareDescribe{get{returnGlobalSettings.softwareDescribe;}set{GlobalSettings.softwareDescribe=value;}}}}3)創(chuàng)建PersonalAccount類,利用構造方法實現(xiàn)開戶,利用成員方法實現(xiàn)余額查詢、存入、提取、轉帳等功能,完整代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceBank{publicclassPersonalAccount{privatedoubleaccountRemainValue;//余額privatestringaccountName;//姓名publicdoubleAccountRemainValue{get{returnaccountRemainValue;}set{accountRemainValue=value;}}publicstringAccountName{get{returnaccountName;}set{accountName=value;}}#region開戶//利用構造方法實現(xiàn)開戶publicPersonalAccount(stringaccountName,doubleaccountRemainValue){//注意this用法this.accountName=accountName;this.accountRemainValue=accountRemainValue;}#endregion#region存、取、轉帳publicvoidDeposit(doublevalue){this.accountRemainValue+=value;}publicvoidWithDraw(doublevalue){this.accountRemainValue-=value;}publicvoidTransfer(PersonalAccounttoAccount,doublevalue){this.accountRemainValue-=value;toAccount.AccountRemainValue+=value;}#endregion#region顯示余額publicvoidDisplayRemainAccount(){Console.WriteLine("尊敬的{0}先生/女士,您好,您的帳戶余額為{1:0.00}元",accountName,AccountRemainValue);}#endregion}}4)在Program.cs中輸入如下代碼,實現(xiàn)系統(tǒng)功能:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceBank{classProgram{staticvoidMain(string[]args){Console.WriteLine("############################################################################");Console.WriteLine();Console.WriteLine(""+GlobalSettings.SoftwareName+GlobalSettings.SoftwareVersion);Console.WriteLine();Console.WriteLine(""+"制作單位:"+GlobalSettings.SoftwareCompany);Console.WriteLine();Console.WriteLine(""+GlobalSettings.SoftwareDescribe);Console.WriteLine();Console.WriteLine("############################################################################");//開戶PersonalAccountmyAccount=newPersonalAccount("關羽",200);PersonalAccountsheAccount=newPersonalAccount("關夫人",30000);//業(yè)務boolop=true;while(op){Console.WriteLine();Console.WriteLine("請輸入您要辦理的業(yè)務:1.存款2.提款3.轉帳4.退出");stringcmd=Console.ReadLine();switch(cmd){case"1":HandleDesposit(myAccount);break;case"2":HandleWithDraw(myAccount);break;case"3":HandleTransfer(myAccount,sheAccount);break;case"4":op=false;break;}}}staticvoidHandleDesposit(PersonalAccountaccount){Console.Write("請輸入存款金額:");doublevalue=double.Parse(Console.ReadLine());account.AccountRemainValue+=value;Console.WriteLine("存款操作完成!");account.DisplayRemainAccount();}staticvoidHandleWithDraw(PersonalAccountaccount){Console.Write("請輸入取款金額:");doublevalue=double.Parse(Console.ReadLine());if(account.AccountRemainValue<value){Console.WriteLine("帳戶余額不足,取款操作失??!");return;}account.AccountRemainValue-=value;Console.WriteLine("取款操作完成!");account.DisplayRemainAccount();}staticvoidHandleTransfer(PersonalAccountfromAccount,PersonalAccounttoAccount){Console.Write("請輸入轉帳金額:");doublevalue=double.Parse(Console.ReadLine());if(fromAccount.AccountRemainValue<value){Console.WriteLine("帳戶余額不足,取款操作失??!");return;}fromAccount.AccountRemainValue-=value;toAccount.AccountRemainValue+=value;Console.WriteLine("轉帳操作完成!");fromAccount.DisplayRemainAccount();toAccount.DisplayRemainAccount();//實際中你是看不到對方的余額的,所以運行結果有點奇怪,不是嗎?}}}第二部分實戰(zhàn)提高本實驗內容較多,故希望同學能仔細理解上述代碼,分析清楚,將自己對代碼的理解寫在下面,寫清代碼是如何完成銀行個人業(yè)務系統(tǒng)的功能的(定義了哪些類,業(yè)務流程控制等等)。答:首先創(chuàng)建了一個名為“關羽”和“關夫人”的用戶用來測試程序。進入用戶界面,看到銀行信息介紹及提供的業(yè)務,由while構成的循環(huán)用戶可以持續(xù)選擇辦理各種業(yè)務直至選擇“4退出”.選擇1,則進入“存款”操作,調用函數(shù)HandleDesposit。輸入存款金額并更改賬戶余額信息,提示操作成功。調用DisplayRemainAccount函數(shù)顯示操作后的賬戶信息。選擇2,則進入“提款”操作,調用HandleWithDraw函數(shù)。根據提示輸入提款金額,通過if條件判斷,若輸入金額大于余額,則提示操作失敗。若合法,則從賬戶中減去提款金額,提示操作成功。并調用DisplayRemainValue函數(shù)顯示操作后的賬戶信息。選擇3,則進入“轉賬”操作,調用函數(shù)HandleTransfer,此函數(shù)有兩個參數(shù),一個是轉出賬戶,一個是轉入賬戶。通過if條件判斷合法性,若合法則對相應的轉出和轉入賬戶的余額進行加減。(此程序默認由關羽賬戶轉入關夫人賬戶)選擇4,則循環(huán)結束,程序結束運行此程序定義了一個PersonalAccount的類,成員為一個賬戶的基本信息定義了一個GlobalSettings的類,成員為此程序,銀行和創(chuàng)建者的相關信息。第三部分知識總結學生總結請將問題答案寫在下面空白處完成上機訓練模塊花費的時間完成實戰(zhàn)提高模塊花費的時間本次實驗對你而言的難點本次實驗的收獲希望老師強化講解的知識要點希望老師幫助回答的問題本次實驗自評分數(shù)(五分制)教師評價請將評語、分數(shù)等寫在下面空白處問題答疑實驗評語實驗得分任務六實現(xiàn)繼承和抽象類實驗目的編寫一個單一繼承的C#程序編寫一個抽象類,并用一個類繼承這個抽象類第一部分上機訓練1、在學校教務管理系統(tǒng)中,有三種用戶,一種是系統(tǒng)管理員,一種是學生,一種是教師,編寫C#類實現(xiàn)該繼承關系。系統(tǒng)管理員/學生/教師都有用戶名和密碼屬性,并都有Login和顯示自身信息的方法,另外,學生擁有班級和成績兩個特殊屬性以及查詢成績這一方法,教師擁有部門和工資兩個特殊屬性以及查詢工資這一方法,系統(tǒng)管理員可以添加學生和教師信息。由于教師和學生個人信息不同,所以學生和教師重載基類的DisplayInfo方法。(本例和教材一致,再次出現(xiàn)的目的是通過反復訓練,理解繼承的作用)1)類的繼承關系可以表示如下:2)創(chuàng)建控制臺應用程序,命名為SchoolManagement3)創(chuàng)建名為User的基類,基類定義了用戶名和密碼屬性,以及Login和DisplayInfo方法usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceSchoolManagement{publicclassUser{privatestringuserName;//用戶名publicstringName{get{returnuserName;}set{userName=value;}}privatestringpassword;//密碼publicstringPassword{get{returnpassword;}set{password=value;}}privatestringuserType;//用戶類型publicstringUserType{get{returnuserType;}set{userType=value;}}publicvoidLogin(){if(userName.Equals("1")&&password.Equals("1")){DisplayPersonInfo();}}publicvirtualvoidDisplayPersonInfo()//注意virtual關鍵字{Console.WriteLine("姓名:{0}",userName);Console.WriteLine("用戶類型:{0}",userType);}}}2)創(chuàng)建名為Student的派生類,具備班級和成績兩個特殊屬性,以及查詢成績的特殊方法,覆蓋基類的顯示個人信息方法usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceSchoolManagement{publicclassStudent:User{privatestringclassID;publicstringClassID{get{returnclassID;}set{classID=value;}}privatefloatstuScore;publicfloatStuScore{get{returnstuScore;}set{stuScore=value;}}publicStudent(){UserType="學生";}publicoverridevoidDisplayPersonInfo(){base.DisplayPersonInfo();Console.WriteLine("班級:{0}",classID);}publicvoidCheckScore(){Console.WriteLine("成績:{0}",this.stuScore);}}}3)創(chuàng)建名為Teacher的派生類,具備部門和工資兩個特殊屬性,以及查詢工資的特殊方法,覆蓋基類的顯示個人信息方法。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceSchoolManagement{publicclassTeacher:User{privatestringdepartment;//部門publicstringDepartment{get{returndepartment;}set{department=value;}}privatefloatsalary;//工資publicfloatSalary{get{returnsalary;}set{salary=value;}}publicTeacher(){UserType="教師";}publicoverridevoidDisplayPersonInfo(){base.DisplayPersonInfo();Console.WriteLine("部門:"+this.department);}publicvoidcheckSalary(){Console.WriteLine("工資:"+this.salary);}}}4)創(chuàng)建名為SysManager的派生類,具備插入學生信息和插入教師信息兩個方法usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceSchoolManagement{publicclassSysManager:User{publicSysManager(){UserType="管理員";}publicStudentInsertStudent(){Studentstu=newStudent();stu.Name="張郭郭";stu.UserType="教師";stu.ClassID="310730";stu.StuScore=70;returnstu;}publicTeacherInsertTeacher(){Teacherteacher=newTeacher();teacher.Name="李沙沙";teacher.Department="計算機系";teacher.Salary=5000;returnteacher;}}}5)在Program.cs的Main方法中調用以上類,測試效果如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceSchoolManagement{classProgram{staticvoidMain(string[]args){//系統(tǒng)管理員登錄SysManagersys=newSysManager();sys.Name="1";sys.Password="1";sys.Login();Console.WriteLine("");//系統(tǒng)管理員錄入學生和教師信息Teacherteacher=sys.InsertTeacher();Studentstu=sys.InsertStudent();//顯示教師信息,查詢工資teacher.DisplayPersonInfo();teacher.checkSalary();Console.WriteLine("");//顯示學生信息,查詢成績stu.DisplayPersonInfo();stu.CheckScore();Console.WriteLine("");}}}6)最終運行效果如下第二部分實戰(zhàn)提高建立名為Shape的基類,要求是抽象類,在該類中提供一個publicabstractdoubleArea()的抽象方法,建立名為Circle的派生類,包括半徑屬性,實現(xiàn)面積計算,再建立一個名為Rectangle的派生類,包括長和寬兩個屬性,實現(xiàn)面積的計算。第三部分知識總結學生總結請將問題答案寫在下面空白處完成上機訓練模塊花費的時間完成實戰(zhàn)提高模塊花費的時間本次實驗對你而言的難點本次實驗的收獲希望老師強化講解的知識要點希望老師幫助回答的問題本次實驗自評分數(shù)(五分制)教師評價請將評語、分數(shù)等寫在下面空白處問題答疑實驗評語實驗得分任務七掌握多態(tài)的應用實驗目的理解多態(tài)的意義了解多態(tài)的應用掌握多態(tài)的C#實現(xiàn)第一部分上機訓練1、在俄羅斯方塊程序中,有L形,T形,田形等多種形狀,它們是圖形的多種形態(tài),可以創(chuàng)建一個名為Shape的基類,而后派生L形,T形等,之后可以在運行時動態(tài)繪制各種形狀。1)創(chuàng)建一個名位Teris的控制臺應用程序、2)各個類之間的關系如下圖所示:3)創(chuàng)建名為Shape的抽象類,包括ShapeType屬性和顯示信息方法,以及抽象方法繪制:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceTeris{publicabstractclassShape{privatestringshapeType;publicstringShapeType{get{returnshapeType;}set{shapeType=value;}}publicvoidDisplayInfo(){Console.WriteLine("當前圖形類型"+shapeType);}publicabstractvoidDraw();}}4)創(chuàng)建名為ShapeL的派生類,實現(xiàn)基類的繪制usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceTeris{publicclassShapeL:Shape{publicShapeL(){ShapeType="L形";}publicoverridevoidDraw(){Console.WriteLine("|");Console.WriteLine("|");Console.Write("|");Console.WriteLine("__");}}}5)創(chuàng)建名為ShapeT的派生類,實現(xiàn)基類的繪制usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceTeris{publicclassShapeT:Shape{publicShapeT(){ShapeType="T形";}publicoverridevoidDraw(){Console.WriteLine("_______");Console.WriteLine("|");Console.WriteLine("|");}}}6)創(chuàng)建名為ShapeZ的派生類,實現(xiàn)基類的繪制usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceTeris{publicclassShapeZ:Shape{publicShapeZ(){ShapeType="Z形";}publicoverridevoidDraw(){Console.WriteLine("");Console.WriteLine("|");Console.WriteLine("|");Console.WriteLine("");}}}7)創(chuàng)建名為ShapeBlock(田字形)的派生類,實現(xiàn)基類的繪制usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceTeris{classShapeBlock:Shape{publicShapeBlock(){ShapeType="田形";}publicoverridevoidDraw(){Console.WriteLine("_________");Console.WriteLine("|||");Console.WriteLine("|||");Console.WriteLine("");Console.WriteLine("|||");Console.WriteLine("|||");Console.WriteLine("");}}}8)在Program.cs中添加如下代碼,實現(xiàn)隨機生成圖形:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Threading;namespaceTeris{enumShapeType{Block=0,L,T,Z}classProgram{staticvoidMain(string[]args){Randomrnd=newRandom();{Shapeshape=null;ShapeTypetype=(ShapeType)rnd.Next(4);switch(type){caseShapeType.Block:shape=newShapeBlock();break;caseShapeType.L:shape=newShapeL();break;caseShapeType.T:shape=newShapeT();break;caseShapeType.Z:shape=newShapeZ();break;}if(shape!=null){shape.DisplayInfo();shape.Draw();Console.WriteLine("");Thread.Sleep(1000);//防止刷新太快,讓系統(tǒng)停止1秒}}}}}}注意Random類和Thread類的使用第二部分實戰(zhàn)提高當我們在中秋或春節(jié)的時候,往往喜歡回家過節(jié),這時我們要選擇一種交通工具回去,可供選擇的有長途汽車、火車、飛機等,眾所周知,這幾種交通工具的運輸方式是各不相同的,但是他們都能夠運輸旅客,請采用多態(tài)機制實現(xiàn)以上問題模型。enumtoolType{car,train,plane}classProgram{staticvoidMain(string[]args){Randomrnd=newRandom();Tooltool=null;toolTypetype=(toolType)rnd.Next(3);switch(type){casetoolType.car:tool=newCar();break;casetoolType.train:tool=newTrain();break;casetoolType.plane:tool=newPlane();break;}if(tool!=null)tool.Select();Console.ReadLine();}}//baseclasspublicabstractclassTool{privatestringtoolType;publicstringToolType{get{returntoolType;}set{toolType=value;}}publicabstractvoidSelect();}//extendclasspublicclassCar:Tool{publicCar(){ToolType="car";}publicoverridevoidSelect(){Console.WriteLine("選擇的交通工具:長途汽車。");}}publicclassTrain:Tool{publicTrain(){ToolType="train";}publicoverridevoidSelect(){Console.WriteLine("選擇的交通工具:火車。");}}publicclassPlane:Tool{publicPlane(){ToolType="plane";}publicoverridevoidSelect(){Console.WriteLine("選擇的交通工具:飛機。");}}第三部分知識總結學生總結請將問題答案寫在下面空白處完成上機訓練模塊花費的時間完成實戰(zhàn)提高模塊花費的時間本次實驗對你而言的難點本次實驗的收獲希望老師強化講解的知識要點希望老師幫助回答的問題本次實驗自評分數(shù)(五分制)教師評價請將評語、分數(shù)等寫在下面空白處問題答疑實驗評語實驗得分任務八掌握接口的實現(xiàn)實驗目的:理解接口的意義掌握接口的C#實現(xiàn)第一部分上機訓練1、在游戲編程中,需要對怪物的屬性做統(tǒng)一的約定,例如所有的怪物都有生命、魔法、攻擊、命中、防御、閃避等屬性,所有的怪物都能攻擊、站立、防御等,這些統(tǒng)一的約定可以做成接口,然后分別定義人類、獸類等來實現(xiàn)怪物接口。1)創(chuàng)建名為Game的控制臺應用程序2)建立名為Monster的接口3)定義該接口如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceGame{publicinterfaceMonster{stringName{get;set;}intHP{get;set;}intMP{get;set;}intDefense{get;set;}intAttack{get;set;}intDodge{get;set;}intAccuracy{get;set;}voidDoAttack();voidDoStand();voidDoDefense();voidDisplayInfo();}}4)新建一個Human類,實現(xiàn)Monster接口usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceGame{classHuman:Monster{privateinthealthPower;//生命privateintmagicPower;//魔法privateintdefense;//防御privateintattack;//攻擊privateintdodge;//躲閃privateintaccuracy;//命中privatestringname;publicintHP{get{returnhealthPower;}set{healthPower=value;}}publicintMP{get{returnmagicPower;}set{magicPower=value;}}publicintDefense{get{returndefense;}set{defense=value;}}publicintAttack{get{returnattack;}set{attack=value;}}publicintDodge{get{returndodge;}set{dodge=value;}}publicintAccuracy{get{returnaccuracy;}set{accuracy=value;}}publicstringName{get{returnname;}set{name=value;}}publicvoidDoAttack(){Console.WriteLine(name+"的攻擊動作很華麗!===!=========>");}publicvoidDoStand(){Console.WriteLine(name+"站在那里,果然是偉岸英挺,氣宇軒昂,簡直是人中龍鳳!"

溫馨提示

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

評論

0/150

提交評論