




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
銀行卡開戶管理任務1:銀行業務類定義任務2:銀行卡賬戶類定義任務3:銀行卡賬戶開戶實現項目三一般銀行賬戶分為:借記卡賬戶和信用卡賬戶,銀行卡開戶管理項目實現了銀行新賬戶開戶,模擬了ATM機上的存款、取款和余額查詢操作。為解決早期面向過程語言基于模塊設計方式,導致軟件修改困難等缺陷,面向對象的技術應運而生,它是一種強有力的軟件開發方法,它將數據和對數據的操作(數據和操作該數據的方法)作為一個相互依賴、不可分割的整體,力圖使對現實世界問題的求解簡單化。它符合人們的思維習慣,同時有助于控制軟件的復雜性,提高軟件的生產效率,從而得到了廣泛的應用,已成為目前最為流行的一種軟件開發方法。C#作為面向對象程序設計語言代表之一,項目由C#面向對象語言完成。通過項目的實現,有助于理解類和對象的定義、成員變量和方法、構造方法、繼承和多態等C#面向對象基礎和應用。項目引入掌握類的概念和定義掌握對象的意義和實例化對象掌握成員方法的定義掌握構造方法的定義和作用掌握繼承的概念及使用掌握多態的概念及使用學習目標借記卡賬戶:是指先存款后消費(或取現),沒有透支功能的銀行卡,即存儲卡賬戶。信用卡賬戶:信用卡是一種非現金交易付款的方式,是簡單的信貸服務。在借記卡功能的基礎上可以透支,但是有透支額度,即透支只能在一定的金額范圍內透支。銀行卡開戶管理項目實現了銀行新賬戶開戶,模擬了ATM機上的存款、取款和余額查詢功能。項目首先顯示歡迎使用銀行系統,要求用戶進行開戶或登錄,如圖3-1所示:項目描述用戶首先選擇開戶功能,系統顯示選擇開戶類型:借記卡賬戶和信用卡賬戶供用戶選擇將要開戶的賬戶類型,也可選擇退出系統,系統則自動退出,如圖3-2所示:如果選擇借記卡賬戶開戶菜單,顯示借記卡賬戶用戶輸入開戶信息提示,用戶正確輸入相關信息后,并顯示用戶開戶成功及相關開戶信息,如圖3-3所示:項目描述如果選擇信用卡賬戶開戶菜單,顯示信用卡賬戶用戶輸入開戶信息提示,用戶正確輸入相關信息后,顯示用戶開戶成功及相關開戶信息,如圖3-4所示:如果繼續選擇主菜單2,則進入登錄功能,要求輸入登錄的用戶名和密碼,用戶輸入正確的用戶名和密碼后,進入銀行卡存未、取款和查詢余額菜單。如圖3-5所示:項目描述當用戶輸入1時,則進入存款功能,此時要求用戶輸入存款金額,用戶輸入正確存款金額后,系統提示存款成功,并回到主菜單。如圖3-6所示:當用戶輸入2時,則進入取款功能,此時要求用戶輸入取款金額,用戶輸入正確取款金額后,系統提示取款成功,并回到主菜單。如圖3-7所示:項目描述當用戶輸入3時,則進入查詢余額功能,則能看到已經改變后的賬戶金額并回到主菜單。如圖3-8所示:如果輸入1或2以外的鍵,則系統正常退出。如圖3-9所示:項目描述任務1:銀行業務類定義任務2:銀行卡賬戶類定義任務3:銀行卡賬戶開戶實現工作任務任務描述
定義銀行業務類的成員變量和方法,實現主菜單顯示,當用戶選擇菜單后,執行菜單對應代碼塊,如果輸入菜單不存在,則退出系統。任務1銀行業務類定義1.類和對象
面向對象程序設計(ObjectOrientedProgramming)是一種軟件開發方法,是一種對現實世界理解和抽象的方法,是計算機編程技術發展到一定階段后的產物。在面向對象的程序設計中,包括了類、對象、繼承、封裝、多態性等概念。
現實世界中的每一個東西(萬事萬物),既具有獨特的特征(數據),又具有獨特的行為(方法),那么面向對象語言就必須把事物的特征和行為定義在一起,這個概念和語法就是類。知識引入任務1銀行業務類定義1.類和對象知識引入任務1銀行業務類定義類的定義【例3-1】定義一個Person類,包含相應的成員變量和成員方法。ClassPerson{//成員變量(屬性/字段)publicstringname;//姓名publicstringsex;//性別
publicintage;//年齡
publicvoidsleep()//成員方法{Console.WriteLine("是人都要睡覺!");}publicvoidshow()//成員方法{Console.WriteLine("姓名:"+name);Console.WriteLine("性別:"+sex);Console.WriteLine("年齡:"+age);}}1.類和對象知識引入任務1銀行業務類定義對象的定義類是一種抽象,而對象則是實例,是具體的。把程序中要操作的具有相同數據和方法的“對象”歸納起來,定義成類。但是,如果想要執行類里面的方法(如學生類的sleep方法),訪問里面的變量,就會發現執行不了,必須要用類來定義一個對象(專業術語叫做實例化對象),才能執行類里面的方法,才能給里面的變量賦值。例:Personp1;//聲明對象p1=newPerson();//實例化對象1.類和對象知識引入任務1銀行業務類定義成員方法是定義在類內部的方法,反映這個類具有的行為。在上例中,Person類就有一個成員方法。在上例Person類中,需要注意四個要素:public——訪問修飾符:void——返回值類型,該方法沒有返回值;Study——方法名;一對圓括號里面的參數列表。一共由四個部分組成,語法格式如下:[訪問修飾符]返回類型<方法名>(<參數列表>){//方法體}1.類和對象知識引入任務1銀行業務類定義【例3-2】演示如何實例化一個Person類的對象和調用類中的方法。classProgram{staticvoidMain(string[]args){//實例化對象,調用方法Personp1;//聲明對象p1=newPerson();//實例化對象
作用:只有對象才能訪問類的成員="劉邦";//設置對象屬性(name)的值p1.sex="男";p1.age=32;Console.WriteLine("********調用對象p1的成員方法************");p1.show();p1.sleep();//調用對象p1的成員方法sleep()Personp2=newPerson();//聲明并實例化對象="毛毛";p2.sex="女";p2.age=18;Console.WriteLine("********調用對象p2的成員方法************");p2.show();}}任務1
銀行業務類定義任務實現【例3-3】classBank//銀行業務類{protectedstaticList<Account>list=newList<Account>();//使用泛型集合存放賬戶privatestaticlongi=11000000;//指借記卡卡號,每增加一個用戶,i自增1privatestaticlongj=81000000;//指信用卡卡號,每增加一個用戶,j自增1//開戶成員方法publicvoidopenAccount(){Console.WriteLine("這是實現銀行卡賬戶開戶的方法...");}//登錄成員方法publicvoidlogin(){Console.WriteLine("這是實現用戶登錄的方法...");
}//存款成員方法publicvoidsaveMoney(Accountat){ Console.WriteLine("這是實現用戶存款的方法...");}//取款成員方法publicvoidtakeMoney(Accountat){Console.WriteLine("這是實現用戶取款的方法...");}//查詢余額成員方法publicvoidloopMoney(Accountat){Console.WriteLine("這是實現用戶查詢余額的方法...");}}任務1
銀行業務類定義任務實現switch(choice){case1:bk.openAccount();break;case2:bk.login();break;}}while(choice!=0);}}//實現系統主菜單類classProgram{staticvoidMain(string[]args){Bankbk=newBank();//實例化對象intchoice;do{Console.WriteLine("****************歡迎使用銀行系統****************");Console.WriteLine("請選擇功能(按其它鍵退出):");Console.WriteLine("1.開戶");Console.WriteLine("2.登錄");choice=Convert.ToInt32(Console.ReadLine());if(choice!=1&&choice!=2){Console.WriteLine("感謝您的使用,歡迎下次光臨!");break;
}類是C#一種自定義數據類型,反映了一組相似事物(對象)共同具有的數據和行為。對象是具體的實物,是類具體的一個個體。在一個類中,成員變量表示類的屬性,成員方法反映類的行為。任務1
銀行業務類定義任務小結任務描述定義銀行卡基類(Account類),并分別定義兩個子類:借記卡賬戶子類(DebitAcc)和信用卡賬戶子類(CreditAccount)。任務2
銀行卡賬戶類定義1.構造方法構造方法就是一種特殊的方法,它主要用于為對象分配存儲空間,完成對象初始化工作,必須在實例化對象的時候調用。定義構造方法的語法如下:Public類名(參數列表)//構造方法名與類名同名,沒有返回值類型{//構造方法體}任務2銀行卡賬戶類定義知識引入1.構造方法任務2銀行卡賬戶類定義知識引入【例3-4】結合上例3-1,給Person類加上無參構造方法和帶參構造方法。ClassPerson{//成員變量(屬性/字段)publicstringname;//姓名publicstringsex;//性別
publicintage;//年齡
//無參構造方法publicPerson(){}//帶參構造方法publicPerson(stringname,stringsex,intage){//this表示當前類的對象this.用于訪問當前類的成員=name;//訪問的是成員。name訪問的是參數this.sex=sex;this.age=age;}publicvoidsleep()//成員方法{Console.WriteLine("是人都要睡覺!");}publicvoidshow()//成員方法{Console.WriteLine("姓名:"+name);Console.WriteLine("性別:"+sex);Console.WriteLine("年齡:"+age);}}1.構造方法任務2銀行卡賬戶類定義知識引入【例3-5】分別調用無參構造方法和帶參構造方法實例化對象。classProgram{staticvoidMain(string[]args){Personp1=newPerson();//調用無參構造方法實例化p1對象Personp2=newPerson("張三豐","男",21);//調用帶參構造方法實例化p2對象p2.show();}}1.構造方法任務2銀行卡賬戶類定義知識引入構造方法名與類同名不能有返回值,且不能寫void構造方法的作用如下:
·構造方法可以更簡捷地為對象賦初值。實例化對象的同時,就可以給該對象的所有成員變量賦初值
·對象的每一個成員變量要存儲數據,就要在內存中開辟空間。類的構造方法最大的作用,就是為對象開辟內存空間,以存儲數據。這也是為什么實例化對象的時候,一定要調用構造方法的原因
·構造方法只有實例化對象的時候才能調用,不能像其他方法那樣通過方法名調用
在前面學習到,定義一個變量就會在內存中開辟一個空間存儲數據。實例化一個對象后,對象的成員變量也要開辟內存空間,這個重要的任務就是構造方法完成的。2.屬性任務2銀行卡賬戶類定義知識引入在C#中有兩個常用的訪問修飾符:private和public。程序中一般用public修飾符來定義成員變量和成員方法,這樣就可以在別的類中來訪問它,但這其實破壞了類的封裝性,因任何類都可以訪問public成員。定義屬性的語法如下:訪問修飾符
數據類型
屬性名{get{
返回私有成員變量;}set{
設置私有成員變量;}}2.屬性任務2銀行卡賬戶類定義知識引入【例3-6】定義屬性和使用屬性訪問成員變量。·定義屬性classPerson{privatestringname;privateintage;publicPerson(){}publicPerson(stringname,intage){this.Name=name;this.Age=age;}publicstringName{get{return;}set{=value;//value是隱式的變量}}
publicintAge{get{returnthis.age;}set{this.age=value;//value是隱式的變量}}publicvoidShow(){Console.WriteLine("姓名:"+Name);Console.WriteLine("年齡:"+Age);}}2.屬性任務2銀行卡賬戶類定義知識引入【例3-6】classProgram{staticvoidMain(string[]args){Personp1=newPerson("張三",19);p1.Show();Personp2=newPerson();p2.Name="毛毛";//對Name屬性賦值,即是對私有成員name賦值p2.Age=17;p2.Show();}}
3.繼承和多態任務2銀行卡賬戶類定義知識引入繼承在面向對象技術中,繼承是提高軟件開發效率的重要因素之一,指特殊類的對象擁有其一般類的全部屬性與方法,稱作特殊類對一般類的繼承。繼承是面向對象程序設計的主要特征之一,它可以讓用戶重用代碼,也可以節省程序設計的時間。繼承就是在類之間建立一種從屬關系,使得新定義的子類(也叫派生類)的實例具有父類(也叫基類)的特征和能力。任何類都可以繼承其他的類,這也就是說,這個類擁有它繼承的類的所有成員。在OOP中,被繼承的類稱為父類或者基類,繼承了其他類的類叫子類或者派生類。繼承的語法格式為:Class類名:父類類名{
類體}3.繼承和多態任務2銀行卡賬戶類定義知識引入【例3-7】classPerson//定義Person類,父類{publicstringname;publicintage;publicvoidSay(){Console.WriteLine("你好,我是{0},我今年{1}歲",name,age);}}classMan{publicvoidEat(){Console.WriteLine("我正在吃大閘蟹!");}}3.繼承和多態任務2銀行卡賬戶類定義知識引入【例3-7】//Student類繼承了Person類,它也具備了Person類的所有成員變量和方法classStudent:Person{//也可以在子類中添加新的成員變量和成員方法publicstringsex;publicvoidPlay(){Console.WriteLine("我是{0}生我怕誰,我在玩天天酷跑.....",sex);}}classProgram{staticvoidMain(string[]args){Studentst=newStudent();="劉備";st.age=18;st.Say();st.sex="男";st.Play();}}3.繼承和多態任務2銀行卡賬戶類定義知識引入多態多態性是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同數據類型或表現出不同的行為。這使得同一個屬性或行為在一般及期限各個特殊類中具有不同的語義。當子類繼承父類后,如何讓子類和父類的方法執行起來不一樣,每個子類都有自己的方式執行該“行動”?這就是多態的一個重要特性——重寫。子類重寫父類的方法,重寫需要用到兩個關鍵字:vartual和override。3.繼承和多態任務2銀行卡賬戶類定義知識引入【例3-8】classAnimal//動物類{publicstringname;publicvirtualvoidsay()//定義為虛方法,子類可以對父類方法重寫{Console.WriteLine("Animalhou......");}publicvoidrun(){Console.WriteLine("Animalrun......");}}classCat:Animal//貓類{publicoverridevoidsay()//對父類方法進行重寫{Console.WriteLine(“Tom:”+"喵喵喵......");}}classMouse:Animal//老鼠類{publicoverridevoidsay(){Console.WriteLine(“Jerry:”+"吱吱吱......");}}classDog:Animal//狗類{publicoverridevoidsay(){Console.WriteLine(“旺財:”+"汪汪汪......");}}3.繼承和多態任務2銀行卡賬戶類定義知識引入【例3-8】classProgram{staticvoidMain(string[]args){////父類的句柄可以指向子類的對象,反之則不行//Animalan1=newCat();//an1.say();Catct=newCat();Mousemou=newMouse();Dogd=newDog();PolymorphicTest(ct);PolymorphicTest(mou);PolymorphicTest(d);}staticvoidPolymorphicTest(Animalan){an.say();//多態性}}【例3-9】實現銀行卡賬戶類定義,程序代碼如下:classAccount//賬戶類,父類,以下是共有屬性和方法{publiclongaid;//賬戶編號publicstringaname;//儲戶姓名publicstringpersonId;//身份證號publicstringpassword;//密碼publicdoublebalance;//賬戶余額publicAccount(){}publicAccount(longaid,stringaname,stringpersonId,stringpassword,doublebalance){this.aid=aid;this.aname=aname;this.personId=personId;this.password=password;this.balance=balance;}
}任務2銀行卡賬戶類定義任務實現classDebitAcc:Account//借記卡子類{publicDebitAcc(longaid,stringaname,stringpersonId,stringpassword,doublebalance):base(aid,aname,personId,password,balance){}}classCreditAccount:Account//信用卡子類{privatedoubleoverdraft;//透支金額publicCreditAccount(longaid,stringaname,stringpersonId,stringpassword,doublebalance,doubleoverdraft):base(aid,aname,personId,password,balance){this.overdraft=overdraft;}
}構造方法用于實例化對象,并為對象分配空間。C#中只能單繼承,不支持多繼承,子類中可以通過使用base關鍵字調用父類的成員方法或構造方法。任務小結任務2銀行卡賬戶類定義用戶進入系統主菜單后,用戶選擇開戶功能后,顯示借記卡賬戶和信用卡賬戶開戶菜單,用戶選擇其中一種需開戶賬戶后,輸入相關開戶賬戶信息,當用戶輸入信息有誤時,能檢測出異常并輸出相關異常信息;當用戶輸入信息正確無誤后,系統提示開戶成功信息。任務描述任務3銀行卡賬戶開戶實現異常異常是程序運行時發生的錯誤或出現某種意想不到的狀態。如被零除、溢出、數組下標越界或內存不足等。C#提供了捕捉和處理異常機制可以處理這些錯誤,當程序運行時出現上述某種異常后,就會引發異常,轉而搜索對應異常處理程序,當前程序停止執行。C#中異常是以類的形式出現的。所有異常類都必須繼承Exception類,也就是說Exception類是所有異常類的基類。引發異常后,應用程序或默認異常處理程序將處理異常。知識引入任務3銀行卡賬戶開戶實現異常知識引入任務3銀行卡賬戶開戶實現Exception類描
述Exception異常層次結構的根類ArgumentException向方法提供的任意一個參數無效時引發的異常ArithmeticException算術錯誤,如除數為0FormatException參數的格式不符合調用方法的參數規范時引發的異常RuntimeException當出現運行時錯誤,并且無法確定具體原因時,引發的異常。DavideByZeroException除數為0時引發的異常IndexOutOfBoundsException數組下標越界時引發的異常NullReferenceException嘗試取消引用空對象引用時引發的異常IOException出現I/O錯誤時引發的異常SQLExceptionSQL數據庫異常時引發的異常異常知識引入任務3銀行卡賬戶開戶實現(1)使用try/catch語句為捕獲和處理異常,將可能出現異常的語句放到try子句中,當執行這些語句出現異常時,try子句會捕獲這些異常,然后程序執行方向轉到catch子句中;如果沒有出現異常,程序就會執行try…catch后面的代碼,而不會執行catch子句中的代碼。try…catch子句通用語法如下:try{//程序代碼段}catch(Exceptione){//錯誤處理代碼}異常知識引入任務3銀行卡賬戶開戶實現(1)使用try/catch語句【例3-10】數組下標越界處理異常。classProgram{staticvoidMain(string[]args){//使用異常處理機制int[]arr={1,2,3};try{for(inti=0;i<=3;i++)//出現異常,使用異常處理機制{Console.WriteLine("arr[{0}]={1}",i,arr[i]);}}catch(IndexOutOfRangeExceptionex1){Console.WriteLine(ex1.Message);}}}異常知識引入任務3銀行卡賬戶開戶實現(2)使用throw語句拋出異常程序運行時可以捕獲由C#自動產生的異常,C#也提供使用throw語句拋出異常,使用throw語句既可以拋出系統異常,也可以拋出開發人員自己創建的自定義異常。throw的通用語法如下:throw異常對象異常知識引入任務3銀行卡賬戶開戶實現(2)使用throw語句拋出異常【例3-11】classProgram{staticvoidMain(string[]args){//使用異常處理機制int[]arr={1,2,3};try{for(inti=0;i<=3;i++)//出現異常,使用異常處理機制{Console.WriteLine("arr[{0}]={1}",i,arr[i]);}thrownewIndexOutOfRangeException();//拋出異常}catch(IndexOutOfRangeExceptione)//捕獲異常{Console.WriteLine(e.Message);}}}異常知識引入任務3銀行卡賬戶開戶實現(3)使用多重catch語句Catch塊捕獲try塊引發的異常,有時一個try塊可能需要多個catch塊捕獲多個異常,則必須具有多個catch塊,多重catch語句語法如下:try{//程序代碼}catch(異常類型1e){//錯誤處理代碼}catch(異常類型2e){//錯誤處理代碼}一個try塊可以有多個catch塊,但只能有一個通用的catch塊,且通用的catch塊必須放到最后一個,否則將產生編譯錯誤。(4)使用finally語句當與try塊一起使用時,不管是否發生了異常,都將執行finally塊中的語句。因此,一般情況下,finally塊中執行一些清除資源的操作。異常知識引入任務3銀行卡賬戶開戶實現【例3-12】classProgram{staticvoidMain(string[]args){//使用異常處理機制int[]arr={1,2,3};try{for(inti=0;i<=3;i++)//出現異常,使用異常處理機制{Console.WriteLine("arr[{0}]={1}",i,arr[i]);}}catch(IndexOutOfRangeExceptionex1){Console.WriteLine(ex1.Message);}catch(Exceptionex2){Console.WriteLine(ex2.Message);Console.WriteLine("Exception............");}finally{Console.WriteLine("AfterException..........");}}}1.定義銀行賬戶類銀行賬戶類作為借記卡子類和信用卡子類的父類,類中定義了子類共有的屬性和開戶時需用使用的構造方法。classAccount//賬戶類,父類,以下是共有屬性和方法{
……..
}2.定義借記卡子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年酶(酵)素制劑項目資金需求報告代可行性研究報告
- 2025建筑裝飾分包合同(室內外裝修及材料供應)
- 2025中國建設銀行擔保借款合同
- 2025裝修施工合同樣本
- 2025授權招聘人才合同樣本
- 2025工藝品購銷合同范本
- 2025商標專利合同范本 技術轉讓合同協議
- 2025聘請財務與市場顧問合同「樣本」
- 2025辦公室租賃合同概述
- 2025標準租賃合同書寫范本
- (高清正版)T_CAGHP 055—2019 滑坡崩塌防治削方減載工程設計規范(試行)
- 預制箱梁回彈強度偏低及原因報告
- H型鋼力學性能計算表
- 有效提升投訴客戶滿意度QC小組成果材料
- ISP98備用信用證中英文對照.doc
- F5負載均衡運維配置手冊V10
- 二年級數學上冊《認識銳角和鈍角》PPT課件(1)
- 管道支架重量計算表(計算支架)
- 關于進一步提高干部考察材料撰寫質量的思考
- 湖北省普通高級中學學生檔案
- PEEK耐腐蝕性數據表
評論
0/150
提交評論