




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄一、課程設(shè)計(jì)目的及要求21.1設(shè)計(jì)目的21.2設(shè)計(jì)要求21.2.1封裝一個(gè)完善的字符串,實(shí)現(xiàn)字符串的基本操作21.2.2.利用C+中的類實(shí)現(xiàn)線性鏈表的常見(jiàn)操作21.2.3 編寫(xiě)一個(gè)銀行ATM自動(dòng)取款機(jī)模擬程序3二、課程設(shè)計(jì)具體實(shí)現(xiàn)32.1封裝一個(gè)完善的字符串,實(shí)現(xiàn)字符串的基本操作32.1.1總體設(shè)計(jì)(總的任務(wù)畫(huà)出總體設(shè)計(jì)圖,總體設(shè)計(jì)方案及主要設(shè)計(jì)原理;(算法的設(shè)計(jì))32.1.2詳細(xì)設(shè)計(jì)(要求詳細(xì)寫(xiě)出每個(gè)模塊的功能實(shí)現(xiàn),關(guān)鍵技術(shù),關(guān)鍵代碼解釋等。)42.1.3調(diào)試及問(wèn)題解決62.2利用C+中的類實(shí)現(xiàn)線性鏈表的常見(jiàn)操作62.2.1總體設(shè)計(jì)62.2.2詳細(xì)設(shè)計(jì)62.2.3調(diào)試及問(wèn)題解決62.3編
2、寫(xiě)一個(gè)銀行ATM自動(dòng)取款機(jī)模擬程序62.2.1總體設(shè)計(jì)62.2.2詳細(xì)設(shè)計(jì)62.2.3調(diào)試及問(wèn)題解決6三、結(jié)束語(yǔ)(包括感想、致謝、設(shè)計(jì)總結(jié))6四、源代碼(代碼要加注釋)64.1封裝一個(gè)完善的字符串,實(shí)現(xiàn)字符串的基本操作64.2利用C+中的類實(shí)現(xiàn)線性鏈表的常見(jiàn)操作94.3編寫(xiě)一個(gè)銀行ATM自動(dòng)取款機(jī)模擬程序194.3.1面向過(guò)程的程序設(shè)計(jì)194.3.2面向?qū)ο蟮某绦蛟O(shè)計(jì)24一、課程設(shè)計(jì)目的及要求1.1設(shè)計(jì)目的軟件工程專業(yè)所開(kāi)設(shè)的C+課程設(shè)計(jì)是教學(xué)實(shí)踐環(huán)節(jié)中一項(xiàng)重要內(nèi)容,進(jìn)行此課程設(shè)計(jì)的旨在:1. 提高和加強(qiáng)學(xué)生的計(jì)算機(jī)應(yīng)用與軟件開(kāi)發(fā)能力,使學(xué)生由初學(xué)者向?qū)I(yè)的程序員過(guò)渡。2. 培養(yǎng)學(xué)生獨(dú)立分析問(wèn)
3、題、解決問(wèn)題、查閱資料以及自學(xué)能力,以適應(yīng)計(jì)算機(jī)產(chǎn)業(yè)日新月異發(fā)展的形勢(shì)。3. 學(xué)習(xí)和掌握C+程序設(shè)計(jì)方法以及上機(jī)調(diào)試技巧,為今后學(xué)習(xí)其它專業(yè)課程打好基礎(chǔ)。 本次課程設(shè)計(jì)是以學(xué)生獨(dú)立思考解決問(wèn)題為主,教師指導(dǎo)為輔,結(jié)合上機(jī)操作,完成指定的任務(wù),作出設(shè)計(jì)報(bào)告。1.2設(shè)計(jì)要求1.2.1封裝一個(gè)完善的字符串,實(shí)現(xiàn)字符串的基本操作要求如下:l 定義一個(gè)串類CMyString,建立適當(dāng)?shù)臉?gòu)造函數(shù)l 字符串使用指針保存字符串l 必須實(shí)現(xiàn)如下操作,字符串比較、求串的長(zhǎng)度、判斷串是否為空、將串置空、字符串賦值(包括兩個(gè)字符串類復(fù)制,一個(gè)字符串賦值到CmyString對(duì)象)、求字符串中的一個(gè)字符或改變字符串中的一
4、個(gè)字符(采用重載),完成串的賦值與合并(重載+),得到表示字符串的指針地址l 在字符串類的基礎(chǔ)上封裝彩色字符串類。(學(xué)會(huì)使用繼承和多態(tài))可選1.2.2.利用C+中的類實(shí)現(xiàn)線性鏈表的常見(jiàn)操作 l 帶表頭結(jié)點(diǎn)(存放的是該線性鏈表的長(zhǎng)度),結(jié)點(diǎn)存放的是整型數(shù)值; l 實(shí)現(xiàn)以下操作 :n 置空MakeEmpty()n 求長(zhǎng)度Length() n 插入Insert(int x,int i): 將x插入到第i個(gè)結(jié)點(diǎn)(不含頭結(jié)點(diǎn))的之后; n 刪除Delete(int x):刪除鏈表中值為x的結(jié)點(diǎn),成功返回1,否則返回0; n 刪除 ReMove(int i):刪除鏈表中第i個(gè)結(jié)點(diǎn),成功返回1,否則返回0;
5、 n 搜索 Find(int x):在鏈表中查找數(shù)值為x的結(jié)點(diǎn),成功返回1,否則返回0;n 顯示 Display():顯示整個(gè)鏈表各結(jié)點(diǎn)的數(shù)值。 l 寫(xiě)出類的構(gòu)造函數(shù)、復(fù)制構(gòu)造函數(shù)及析構(gòu)函數(shù) l 編寫(xiě)一個(gè)函數(shù),使用戶通過(guò)選擇進(jìn)行相關(guān)鏈表操作。1.2.3 編寫(xiě)一個(gè)銀行ATM自動(dòng)取款機(jī)模擬程序?qū)崿F(xiàn)ATM取款機(jī)的基本功能,如給用戶提供查詢余額、取款、修改密碼、吃卡、退出系統(tǒng)等服務(wù),可根據(jù)實(shí)際情況添加(如繳費(fèi)、轉(zhuǎn)賬等服務(wù))。 l 對(duì)于用戶要求輸入相應(yīng)的帳號(hào)和密碼,如果三次出錯(cuò)則將卡吃掉并打印出相應(yīng)憑條。 l 若輸入的取款金額超出賬戶余額,則提示用戶輸入有誤并提供更正功能 二、課程設(shè)計(jì)具體實(shí)現(xiàn)2.1封裝
6、一個(gè)完善的字符串,實(shí)現(xiàn)字符串的基本操作2.1.1總體設(shè)計(jì)(總的任務(wù)畫(huà)出總體設(shè)計(jì)圖,總體設(shè)計(jì)方案及主要設(shè)計(jì)原理;(算法的設(shè)計(jì))CMyString-string: char *-length: int +CMyString():+ CMyString(s :char *):+ CMyString(s : CMyString &):+getlength(): int +getcontents(): void +setcontents(s : char *): void + friend void strcompare(str1:CMyString, str2:CMyString): + strjud
7、ge(): void+ operator(n : int) : char &+friend CMyString operator +( CMyString &st1, CMyString &st2):+void operator =(const CMyString &s):圖1-1-1字符串類的類圖 通過(guò)類來(lái)實(shí)現(xiàn)字符串的封裝,用成員函數(shù)和友元函數(shù)、運(yùn)算符的重載來(lái)實(shí)現(xiàn)字符串的基本操作。2.1.2詳細(xì)設(shè)計(jì)(要求詳細(xì)寫(xiě)出每個(gè)模塊的功能實(shí)現(xiàn),關(guān)鍵技術(shù),關(guān)鍵代碼解釋等。)操作模式:功能實(shí)現(xiàn):用一個(gè)主函數(shù),把許多功能融入集中關(guān)鍵代碼:void main()char str2100;for(int i=0;
8、i2;i+)cout第i+1stri;CMyString str1(str0),str2(str1);cout第一個(gè)字符串的長(zhǎng)度:str1.getlength()endl;cout第二個(gè)字符串的長(zhǎng)度:str2.getlength()endl;cout兩個(gè)字符串的比較:;strcompare(str1,str2);cout判斷字符串是否為空,并置空:endl;cout第一個(gè)字符串;str1.strjudge();cout第二個(gè)字符串;str2.strjudge();str1.setcontents(liyushan);str2.setcontents( studies hard.); CMySt
9、ring str3(chengjingui);/字符串的賦值(調(diào)用帶一個(gè)參數(shù)的構(gòu)造函數(shù))cout第三個(gè)對(duì)象的內(nèi)容:;str3.getcontents();cout輸入一個(gè)小于等于str3.getlength()j;cout輸出第j個(gè)字符是:str3j-1endl;str3=str1+str2;cout第三個(gè)字符串的長(zhǎng)度為:str3.getlength()endl;cout0) couts1.string大于s2.stringendl;else if(s0) couts1.string小于s2.stringendl;else couts1.string等于s2.stringendl;注意:1.
10、運(yùn)用到類的成員函數(shù)的類外定義2. 運(yùn)用到string.h 頭文件中的strcmp()字符串的長(zhǎng)度:代碼:void getcontents()/求字符串的內(nèi)容coutstring0) couts1.string大于s2.stringendl;else if(s0) couts1.string小于s2.stringendl;else couts1.string等于s2.stringendl;注意:1. 運(yùn)用友元函數(shù)并類外定義:先聲明再定義(不要加限定符)2. 要加關(guān)鍵字:friend 函數(shù)參數(shù)為對(duì)象3. 運(yùn)用函數(shù):strcmp()置空且賦值:功能的實(shí)現(xiàn):是先用delete 來(lái)置空,再分配內(nèi)存進(jìn)行賦
11、值代碼:void setcontents(char *s)/先置空,再重置字符串的內(nèi)容length=strlen(s);coutstring被置空endl;delete string;string=new charlength+1;strcpy(string,s);cout重置后:stringlength-1)cout整數(shù)下標(biāo)越界endl;return ch;else return *(string+n);注意:下標(biāo)運(yùn)算符的重載:返回類型是char &完成串的賦值與合并:實(shí)現(xiàn):重載+關(guān)鍵代碼:CMyString operator +( CMyString &st1, CMyString &st
12、2)/運(yùn)算符+重載的實(shí)現(xiàn)(友元函數(shù)):實(shí)現(xiàn)兩個(gè)字符串的連接CMyString t;t.length=st1.length+st2.length;/連接時(shí):先計(jì)算長(zhǎng)度,t.string=new chart.length+1;/再重新分配內(nèi)存strcpy(t.string,st1.string);/先拷貝 再連接strcat(t.string,st2.string);return t;/返回類型是對(duì)象t注意:先分配再拷貝鏈接void operator =(const CMyString &s)/運(yùn)算符=的重載delete string;string=new charstrlen(s.string+
13、1);strcpy(string,s.string);注意:參數(shù)為類的引用得到表示字符串的指針地址:void getaddress()/得到字符串的指針地址cout字符串的指針地址:&stringendl;2.1.3調(diào)試及問(wèn)題解決問(wèn)題1:出現(xiàn)亂碼,內(nèi)存為空解決:析構(gòu)與置空同時(shí)運(yùn)用,使內(nèi)存出現(xiàn)2次刪除,出現(xiàn)錯(cuò)誤 運(yùn)用默認(rèn)構(gòu)造函數(shù)問(wèn)題2:拷貝構(gòu)造函數(shù)的深淺拷貝問(wèn)題解決:定義拷貝構(gòu)造函數(shù)問(wèn)題3:運(yùn)算符的重載問(wèn)題解決:要對(duì)=進(jìn)行重載 解決問(wèn)題2.2利用C+中的類實(shí)現(xiàn)線性鏈表的常見(jiàn)操作2.2.1總體設(shè)計(jì)Nodeint Data; Node *next;圖2-2-1鏈表結(jié)構(gòu)體list-Node *head
14、; -int length;+list(); +list(list &l); +void create(); +list()delete head; +void MakeEmpty(); +int Length(); +void Insert(int x,int i);/將x插入到第i個(gè)結(jié)點(diǎn)(不含頭結(jié)點(diǎn))的之后 +int Delete(int x); /刪除鏈表中值為x的結(jié)點(diǎn),成功返回1,否則返回0 +int ReMove(int i); /刪除鏈表中第i個(gè)結(jié)點(diǎn),成功返回1,否則返回0 +int Find(int x); /在鏈表中查找數(shù)值為x的結(jié)點(diǎn),成功返回1,否則返回0 +void Dis
15、play(); /顯示整個(gè)鏈表各結(jié)點(diǎn)的數(shù)值圖2-2-2鏈表類2.2.2詳細(xì)設(shè)計(jì)登錄模式:功能的實(shí)現(xiàn):用主函數(shù):開(kāi)始出現(xiàn)功能代碼 1、創(chuàng)建一個(gè)鏈表 2、在第i個(gè)結(jié)點(diǎn)處插入值為x的結(jié)點(diǎn) 3、求鏈表的長(zhǎng)度 4、刪除值為x的結(jié)點(diǎn) 5、刪除第i個(gè)結(jié)點(diǎn) 6.搜索結(jié)點(diǎn) 7. 顯示所有的結(jié)點(diǎn) 8、置空結(jié)點(diǎn) 9. 退出函數(shù) 分別在其中調(diào)用各自的函數(shù)關(guān)鍵代碼:void main()int a;list b;cout*需要先創(chuàng)建一個(gè)鏈表再操作*endl;while(1)cout 選擇你所需要的服務(wù)endl;cout1.創(chuàng)建一個(gè)鏈表endl;cout2.在第i個(gè)結(jié)點(diǎn)后插入值為x的結(jié)點(diǎn)endl;cout3.求鏈表長(zhǎng)度e
16、ndl;cout4.刪除值為x結(jié)點(diǎn)endl;cout5.刪除第i個(gè)結(jié)點(diǎn)endl;cout6.搜索結(jié)點(diǎn)endl;cout7.顯示所有結(jié)點(diǎn)endl;cout8.置空結(jié)點(diǎn)endl;cout9.退出程序endl;cout請(qǐng)輸入功能代碼:a;if(a=1)b.create();b.Display();else if(a=2) int x,i;cout分別輸入要插入的數(shù)、位置ixi;b.Insert(x,i);b.Display();else if(a=3)cout為鏈表長(zhǎng)度:b.Length()endl;else if(a=4)cout請(qǐng)鍵入你所要?jiǎng)h除的數(shù)字c;b.Delete(c);b.Display
17、();else if(a=5) cout請(qǐng)鍵入你所要?jiǎng)h除的位置i;b.ReMove(i);b.Display(); else if(a=6)cout請(qǐng)鍵入要查詢的數(shù)e;b.Find(e); else if(a=7)b.Display();else if(a=8)b.MakeEmpty();b.Display();else if(a=9)coutBYEBYE!謝謝使用!endl;exit(1);else cout你輸入有誤.endl;continue;/結(jié)束本次循環(huán),進(jìn)行下一次的循環(huán)(continue 只能用于循環(huán)語(yǔ)句中的)cout循環(huán)結(jié)束了。endl;注意:循環(huán)的運(yùn)用 Break contin
18、ue return exit()的不同和運(yùn)用創(chuàng)建一個(gè)鏈表:功能的實(shí)現(xiàn):運(yùn)用類的成員函數(shù)關(guān)鍵代碼:void list:create()Node *p,*tail;int data,i;cout輸入鏈表的數(shù)據(jù)和長(zhǎng)度datai;if(i=0)head=NULL;cout創(chuàng)建一個(gè)空的鏈表。endl;cout重新創(chuàng)造個(gè)鏈表endl;create();/遞歸調(diào)用elsewhile(lengthData=data;elsep=new Node;p-Data=data;tail-next=p;tail=p;cout輸入下一個(gè)結(jié)點(diǎn)的值data; tail-next=NULL;length-;注意:先確定插入的鏈
19、表數(shù) 當(dāng)是0時(shí):我運(yùn)用了遞歸讓其建立一個(gè)不為空的鏈表 當(dāng)不為0時(shí),我先建立一個(gè)頭文件,再在尾部加入新的結(jié)點(diǎn),從而建立一個(gè)鏈表在第i個(gè)結(jié)點(diǎn)處插入值為x的結(jié)點(diǎn): 功能的實(shí)現(xiàn):需要找到第i個(gè)節(jié)點(diǎn)再插入x,不過(guò)要注意i的值l length:提示錯(cuò)誤,用循環(huán)重寫(xiě)l iData=x;while(1)s-Data=x; /新結(jié)點(diǎn)的數(shù)據(jù)是:xif(ilength)cout輸入有誤,請(qǐng)重新輸入:endl;coutxi;continue;elsefor(int j=1;jnext)/查找第i個(gè)結(jié)點(diǎn)j+;p=t; /p指向第i個(gè)結(jié)點(diǎn),q指向第i+1個(gè)結(jié)點(diǎn)q=p-next;if(p=NULL)head=s;s-nex
20、t=NULL;elseif(p-next!=NULL)s-next=q;p-next=s;elsep-next=s;s-next=NULL;break;求鏈表的長(zhǎng)度:功能的實(shí)現(xiàn):通過(guò)遍歷鏈表來(lái)得到鏈表的長(zhǎng)度 關(guān)鍵代碼:int list:Length()/求鏈表的長(zhǎng)度(結(jié)點(diǎn)數(shù))Node *p=head;if(p=NULL)cout該鏈表是空的。next!=NULL;p=p-next)length+;/長(zhǎng)度return length; 注意:函數(shù)類型為int 刪除值為x的結(jié)點(diǎn)功能的實(shí)現(xiàn):從頭往后找值為x的結(jié)點(diǎn),找到后將其刪除關(guān)鍵代碼: int list:Delete(int x)/刪除鏈表中值為x
21、的結(jié)點(diǎn),成功返回1,否則返回0Node *p=head,*q;/p用于指向結(jié)點(diǎn)x,q指向結(jié)點(diǎn)x的前一個(gè)結(jié)點(diǎn)(刪除值為x的結(jié)點(diǎn)p)if(p=NULL) /若是空表cout這是個(gè)空的鏈表,刪除失?。ata=x)/若是第一個(gè)結(jié)點(diǎn)head=p-next;delete p;cout刪除第一個(gè)結(jié)點(diǎn),值為xData!=x&p-next!=NULL)/查找值為x的結(jié)點(diǎn)p;q=p;p=p-next;if(p-Data=x)/如果有值為x的結(jié)點(diǎn),返回1q-next=p-next;delete p;cout刪除了值為x的結(jié)點(diǎn),刪除成功。endl;return 1;elsecout沒(méi)有該結(jié)點(diǎn),刪除失??!endl;r
22、eturn 0;/沒(méi)有,返回0 刪除第i個(gè)結(jié)點(diǎn)功能的實(shí)現(xiàn):找到結(jié)點(diǎn)將其刪除關(guān)鍵代碼:int list:ReMove(int i) /刪除鏈表中第i個(gè)結(jié)點(diǎn),成功返回1,否則返回0Node *p,*q,*t=head;for(int j=1;jnext)/查找第i個(gè)結(jié)點(diǎn)j+;p=t; /p指向第i個(gè)結(jié)點(diǎn),q指向第i+1個(gè)結(jié)點(diǎn) q=p-next;if(i=1)head=p-next;delete p;cout刪除第i個(gè)結(jié)點(diǎn),刪除成功!1&inext=p-next;delete p;cout刪除第i個(gè)結(jié)點(diǎn),刪除成功!endl;return 1;else cout鏈表中無(wú)該結(jié)點(diǎn),刪除失敗!Data!=x
23、)length+;p=p-next;if(p-Data=x)cout找到第length個(gè)結(jié)點(diǎn)是:xendl;return 1;elsecout沒(méi)有找到數(shù)據(jù)是:x的結(jié)點(diǎn)endl;return 0;顯示所有的結(jié)點(diǎn)功能的實(shí)現(xiàn):考慮空鏈表與非空的兩種情況關(guān)鍵代碼:void list:Display()/顯示整個(gè)鏈表各結(jié)點(diǎn)的數(shù)值并輸出鏈表的長(zhǎng)度Node *p=head;length=0;if(head=NULL)cout這是一個(gè)空的鏈表endl;elsecout該鏈表是:;while(p!=NULL)coutDatanext;length+; coutendl;cout該鏈表的長(zhǎng)度為:lengthnex
24、t; head=p-next; delete p;p=head;關(guān)鍵代碼:void list:MakeEmpty()/置空函數(shù)Node *p=head;if(p=NULL)cout這個(gè)鏈表是空的。next!=NULL;p=p-next)head=p-next;delete p;p=head;delete p;head=NULL;return; 退出函數(shù)功能的實(shí)現(xiàn):用exit()函數(shù)關(guān)鍵代碼:else if(a=9)coutBYEBYE!謝謝使用!endl;exit(1);注意:本操作要退出程序:就需要退出循環(huán),退出主函數(shù),則用exit()或break或return 注意他們的區(qū)別!exit()
25、重要2.2.3調(diào)試及問(wèn)題解決問(wèn)題1:鏈表的設(shè)計(jì)怎么吧?答:需要先創(chuàng)建一個(gè)非空鏈表再進(jìn)行其他的操作。問(wèn)題2:缺少頭函數(shù)?答:在用exit()時(shí)缺少頭文件。需要加上頭文件#include,從而解決問(wèn)題。問(wèn)題3:創(chuàng)建一個(gè)鏈表時(shí),當(dāng)為空時(shí)不能繼續(xù)進(jìn)行?答:采用直接遞歸調(diào)用,實(shí)現(xiàn)創(chuàng)建一個(gè)非空的鏈表。2.3編寫(xiě)一個(gè)銀行ATM自動(dòng)取款機(jī)模擬程序2.2.1總體設(shè)計(jì)開(kāi)始登陸界面輸入選擇代碼i判斷i的值i=ii=2i=3i=4i=5i=6i=7i為其他2.2.2詳細(xì)設(shè)計(jì)登陸模塊:功能的實(shí)現(xiàn):通過(guò)7個(gè)代碼實(shí)現(xiàn)功能之間的選擇1.開(kāi)戶 2.存款3.取款 4.查詢余額5.轉(zhuǎn)賬6.更改密碼7.退出關(guān)鍵代碼:void mai
26、n() int i;while(1)couttt*nendl;couttt* 歡迎使用自動(dòng)取款機(jī) *nendl;couttt-nendl; couttt請(qǐng)選擇您要辦理的手續(xù):n;couttttt1.開(kāi)戶n;couttttt2.存款n; couttttt3.取款n; couttttt4.查詢余額n; couttttt5.轉(zhuǎn)賬n;couttttt6.更改密碼n; couttttt7.退出n; couti;if(7=6)break;switch(i)case 1:openAccount();/開(kāi)戶break;case 2:saveMoney();/存款break;case 3:takeMoney()
27、;/取款break;case 4:check();/查詢余額break;case 5:transfer();/轉(zhuǎn)賬break;case 6:changepassword();break;default:coutaaatt你的輸入有誤,請(qǐng)輸入1-7之間的數(shù)!n;開(kāi)戶:功能的實(shí)現(xiàn):創(chuàng)建一個(gè)賬號(hào),用于下面的操作關(guān)鍵代碼:/開(kāi)戶函數(shù)void openAccount()couttt歡迎開(kāi)戶::n;coutname;coutcardID;coutpassword;coutmoney;couttt恭喜您,開(kāi)戶成功!n;吃卡:功能的實(shí)現(xiàn):如果密碼三次輸入錯(cuò)誤,就吃卡,退出系統(tǒng)關(guān)鍵代碼:void eatcard
28、()long cid;char password120;for( int i=0;i3;i+)coutcid;coutpassword1;if(cid=cardID&strcmp(password1,password)=0)couttt輸入正確!endl;return;elseswitch(i)case 0:case 1:cout*卡號(hào)密碼輸入有誤*ntt請(qǐng)重新輸入:endl;break;case 2:cout*吃卡*endl;exit(1);存款:功能的實(shí)現(xiàn):先輸入密碼,進(jìn)入存款關(guān)鍵代碼:/存款void saveMoney()int money1;couttt歡迎使用取款業(yè)務(wù):n;eatca
29、rd();coutmoney1;money=money+money1;couttt取款成功,卡上余額為:moneyendl;取款:功能的實(shí)現(xiàn):先輸入密碼,進(jìn)行存款關(guān)鍵代碼:/取款void takeMoney()int money1;couttt歡迎您使用取款業(yè)務(wù)n; eatcard();coutmoney1;if(money1money)cout取款超過(guò)存款金額(money),請(qǐng)重新輸入:;elsemoney=money-money1;couttt取款成功,您卡上余額為:moneyendl;return;查詢余額:先輸入密碼,進(jìn)行查詢余額功能的實(shí)現(xiàn):關(guān)鍵代碼:/查詢void check() c
30、outtt歡迎進(jìn)行查詢業(yè)務(wù)n;eatcard();couttt卡上余額為:moneyendl;轉(zhuǎn)帳:功能的實(shí)現(xiàn):先輸入密碼,再轉(zhuǎn)帳關(guān)鍵代碼:/轉(zhuǎn)賬void transfer()long bcid;int money1;couttt歡迎使用轉(zhuǎn)賬業(yè)務(wù)nendl; eatcard();coutbcid;coutmoney1;if(money1money)cout轉(zhuǎn)賬金額超過(guò)存款金額(money),請(qǐng)重新輸入:;elsemoney=money-money1;couttt轉(zhuǎn)賬成功,您卡上余額為:moneyendl;return;修改密碼:功能的實(shí)現(xiàn):輸入密碼,再改密碼關(guān)鍵代碼:void changepa
31、ssword()char password120,password220;couttt歡迎修改密碼ttendl;eatcard();while(1)coutpassword1;coutpassword2;if(strcmp(password1,password2)=0)strcpy(password,password1);cout密碼修改成功!endl;return;elsecout*更改密碼不一致*n重新輸入:;退出:功能的實(shí)現(xiàn):用break退出循環(huán)從而退出系統(tǒng)關(guān)鍵代碼:if(i=7)break;2.2.3調(diào)試及問(wèn)題解決問(wèn)題1:吃卡問(wèn)題答:通過(guò)三次的判斷,來(lái)解決問(wèn)題三、結(jié)束語(yǔ)(包括感想、致謝
32、、設(shè)計(jì)總結(jié))通過(guò)前一段時(shí)間的學(xué)習(xí),我們對(duì)c+有了一定的基礎(chǔ),我們也會(huì)編寫(xiě)一些小的程序。我認(rèn)為自己已經(jīng)學(xué)得不錯(cuò)了。但事實(shí)并非如此,我只是眼高手低。我認(rèn)識(shí)到了自己許多的不足,我認(rèn)識(shí)到了C+的重要性。經(jīng)過(guò)兩三星期的課程設(shè)計(jì),我深有感觸。我發(fā)現(xiàn)了許多,也認(rèn)識(shí)到許多。我生氣自己的不足,我放棄過(guò),我傷心過(guò),我思索過(guò)。經(jīng)過(guò)激烈的奮斗,我戰(zhàn)勝了自己,終于完成了一個(gè)又一個(gè)的程序。我是非常的喜悅,我的努力沒(méi)有白費(fèi)。我有加深了自己對(duì)知識(shí)的了解,我將更加的努力。我更深刻地明白了一個(gè)道理:我們不要害怕,我們要行動(dòng),把我們的想法寫(xiě)出了,去慢慢的實(shí)現(xiàn)。只有敢于行動(dòng),敢于下手,我們才有機(jī)會(huì)成功。我發(fā)現(xiàn)自己有一個(gè)不足:只敢想不
33、敢做。我總認(rèn)為想法不對(duì),就不敢去行動(dòng)了,從而失敗了許多次。經(jīng)過(guò)耐心的思考,我發(fā)現(xiàn)了自己的缺點(diǎn),我要努力改變自己。在設(shè)計(jì)中,我也認(rèn)識(shí)到許多基礎(chǔ)知識(shí)的重要性。不然會(huì)漏洞百出,我一定會(huì)抓住基礎(chǔ),基礎(chǔ)是成功的關(guān)鍵。更重要的是:我要多思考,多動(dòng)手,只有這樣,我們才能獲得許多。四、源代碼(代碼要加注釋)4.1封裝一個(gè)完善的字符串,實(shí)現(xiàn)字符串的基本操作/*1.封裝一個(gè),完善字符串,字符串的基本操作要求如下: 定義一個(gè)串類CMyString,建立適當(dāng)?shù)臉?gòu)造函數(shù) 字符串使用指針保存字符串 必須實(shí)現(xiàn)如下操作,字符串比較、求串的長(zhǎng)度、判斷串是否為空、將串置空、字符串賦值(包括兩個(gè)字符串類復(fù)制,一個(gè)字符串賦值到Cmy
34、String對(duì)象)、求字符串中的一個(gè)字符或改變字符串中的一個(gè)字符(采用重載),完成串的賦值與合并(重載+),得到表示字符串的指針地址 在字符串類的基礎(chǔ)上封裝彩色字符串類。(學(xué)會(huì)使用繼承和多態(tài))可選*/#include#includeclass CMyString/類的定義char *string;/字符串的內(nèi)容int length;/字符串的長(zhǎng)度public:CMyString()/不帶參數(shù)的構(gòu)造函數(shù)length=0;string=NULL;CMyString(char *s)/帶一個(gè)參數(shù)的構(gòu)造函數(shù)length=strlen(s);string=new charlength+1;strcpy(
35、string,s); CMyString(CMyString &s)/拷貝構(gòu)造函數(shù):來(lái)實(shí)現(xiàn)對(duì)象之間的拷貝length=s.length;string=s.string;int CMyString:getlength()/求字符串的長(zhǎng)度return length; void getcontents()/求字符串的內(nèi)容coutstringendl; void setcontents(char *s)/先置空,再重置字符串的內(nèi)容length=strlen(s);coutstring被置空endl;delete string;string=new charlength+1;strcpy(string,
36、s);cout重置后:stringendl;friend void strcompare(CMyString str1,CMyString str2);/友元函數(shù)實(shí)現(xiàn)兩個(gè)字符串對(duì)象的比較void strjudge()/判斷字符串是否為空if(string!=NULL) cout不為空.endl;else cout為空.length-1)cout整數(shù)下標(biāo)越界endl;return ch;else return *(string+n);friend CMyString operator +( CMyString &st1, CMyString &st2);/運(yùn)算符+號(hào)的重載的聲明void oper
37、ator =(const CMyString &s)/運(yùn)算符=的重載delete string;string=new charstrlen(s.string+1);strcpy(string,s.string);void getaddress()/得到字符串的指針地址cout字符串的指針地址:&string0) couts1.string大于s2.stringendl;else if(s0) couts1.string小于s2.stringendl;else couts1.string等于s2.stringendl;CMyString operator +( CMyString &st1, C
38、MyString &st2)/運(yùn)算符+重載的實(shí)現(xiàn)(友元函數(shù)):實(shí)現(xiàn)兩個(gè)字符串的連接CMyString t;t.length=st1.length+st2.length;/連接時(shí):先計(jì)算長(zhǎng)度,t.string=new chart.length+1;/再重新分配內(nèi)存strcpy(t.string,st1.string);/先拷貝 再連接strcat(t.string,st2.string);return t;/返回類型是對(duì)象t/*主函數(shù)*/void main()char str2100;for(int i=0;i2;i+)cout第i+1stri;CMyString str1(str0),str2(str1);cout第一個(gè)字符串的長(zhǎng)度:str1.getlength()endl;cout第二個(gè)字符串的長(zhǎng)度:str2.getlength()endl;cout兩個(gè)字符串的比較:;strcompare(str1,str2);cout判斷字符串是否為空,并置空:endl;c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)資采購(gòu)與銷售合同協(xié)議
- 標(biāo)準(zhǔn)離婚合同范本(適用于雙方)
- 能源開(kāi)發(fā)項(xiàng)目承包合同
- 6 數(shù)與代數(shù)(教學(xué)設(shè)計(jì))-2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 10《父母多愛(ài)我》第一課時(shí) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治三年級(jí)上冊(cè)統(tǒng)編版
- 擔(dān)保公司委托代理合同范本
- 親子看護(hù)合同樣本
- 建筑拆除工程安全與服務(wù)合同
- 7 小蝸牛(教學(xué)設(shè)計(jì))蘇教版一年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)
- 商鋪?zhàn)赓U合同權(quán)益轉(zhuǎn)讓協(xié)議
- 教師讀書(shū)分享《給教師的建議》課件
- 人民警察紀(jì)律條令試卷含答案
- 婚姻矛盾糾紛調(diào)解培訓(xùn)課件
- 《工程熱力學(xué)》(第四版)配套教學(xué)課件
- (更新版)HCIA安全H12-711筆試考試題庫(kù)導(dǎo)出版-上(單選、多選題)
- 漢語(yǔ)作為第二語(yǔ)言教學(xué)教學(xué)法教案(漢碩)
- 新能源技術(shù)(第二版)完整版課件(全)
- 課程改革與學(xué)前教育發(fā)展研究
- 普通昆蟲(chóng)學(xué)-實(shí)驗(yàn)指導(dǎo)
- 中職對(duì)口升學(xué)養(yǎng)殖專業(yè)獸醫(yī)基礎(chǔ)習(xí)題集判斷題詳解
- 初中物理各單元思維導(dǎo)圖
評(píng)論
0/150
提交評(píng)論