版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《C++程序設(shè)計》實訓(xùn)報告實訓(xùn)目的:(1)掌握類與對象的定義與使用方法,理解面向?qū)ο蠓椒ㄖ型ㄟ^對象間傳遞消息的工作機(jī)制。(2)正確掌握類的不同屬性成員的使用方法。(3)掌握構(gòu)造函數(shù)與析構(gòu)函數(shù)的概念,理解構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行過程。(4)掌握友元函數(shù)和友元類的定義和使用。(5)基本掌握指針和引用作為函數(shù)參數(shù)的應(yīng)用。實訓(xùn)內(nèi)容:定義一個時間類Time,有三個私有成員變量Hour、Minute、Second,定義構(gòu)造函數(shù)、析構(gòu)函數(shù)以及用于改變、獲取、輸出時間信息的公有函數(shù),主函數(shù)中定義時間對象,并通過調(diào)用各種成員函數(shù)完成時間的設(shè)定、改變、獲取、輸出等功能。按要求完成類的定義與實現(xiàn)。修改數(shù)據(jù)成員的訪問方式,觀察編譯結(jié)果。在Time類中定義一個成員函數(shù),用于實現(xiàn)時間增加一秒的功能,主函數(shù)中通過對象調(diào)用該函數(shù),并輸出增加一秒后的時間信息。定義一個普通函數(shù)。voidf(Timet){t.PrintTime();}在Time類中增加拷貝構(gòu)造函數(shù)的定義,主函數(shù)中調(diào)用該函數(shù),運用調(diào)試工具跟蹤,分析整個程序調(diào)用構(gòu)造函數(shù)(包括拷貝構(gòu)造函數(shù))和析構(gòu)函數(shù)的次數(shù);再將f函數(shù)的形式參數(shù)分別修改為引用參數(shù)和指針參數(shù)(此時函數(shù)代碼修改為{t->PrintTime();},主函數(shù)中調(diào)用,再分析此時調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的次數(shù)。實訓(xùn)代碼:#include<iostream>usingnamespacestd;classTime{private:intHour,Minute,Second;public:Time(inth=0,intm=0,ints=0);Time(constTime&ob);~Time();voidChangeTime(inth,intm,ints);intGetHour();intGetMinuteO;intGetSecond();voidPrintTime();voidIncreaseOneSecondO;};Time::Time(inth,intm,ints){Hour=h;Minute=m;Second=s;}Time::Time(constTime&ob){Hour=ob?Hour;Minute=ob?Minute;Second=ob.Second;}Time::~Time(){}voidTime::ChangeTime(inth,intm,ints){Hour二h;Minute=m;Second=s;}intTime::GetHourO{returnHour;}intTime::GetMinute(){returnMinute;}intTime::GetSecond。{returnSecond;}voidTime::PrintTime(){cout?Hour<<": "<<Minute<<":"<<Second<<endl;}voidTime::IncreaseOneSecond(){Second++;}/*voidTime::f(Timet){t?PrintTime();cout<<"callf\n";}*/intmain(){Timea;Timeb(13);Timec(13,15);Timed(13,15,45);a.PrintTime();b?PrintTime();c.PrintTime();d?PrintTime();a.ChangeTime(12,15,45);b?ChangeTime(12,15,45);c.ChangeTime(12,15,45);d?ChangeTime(12,15,45);cout<<a.GetHour()〈<":"<<a.GetMinute()<<":"<<a.GetSecond()<<endl;cout<<b?GetHour()<<":"<<b?GetMinute()<<":"<<b.GetSecond()<<endl;cout<<c?GetHour()<<":"<<c?GetMinute()<<":
"<<c.GetSecond()<<endl;cout<<d.GetHour()<<":"<<d.GetMinute()<<":"<<d?GetSecond()<<endl;return0;}程序運行結(jié)果■ 、E:工++&陀14070519\Dehugl軽一一exo0:0=013:a:a13:15:Q13:15:4512:15:4512:±5:4512:±5:4512:15:45?ressanykeytocontinue實訓(xùn)小結(jié):構(gòu)造函數(shù)與析構(gòu)函數(shù)的調(diào)用方式及執(zhí)行順序是:先是構(gòu)造函數(shù)然后是析構(gòu)函數(shù)。調(diào)用方式是自動調(diào)用,執(zhí)行順序是先執(zhí)行構(gòu)造函數(shù),待程序結(jié)束時再執(zhí)行析構(gòu)函數(shù)。實訓(xùn)二:個人銀行賬戶管理程序的類設(shè)計實訓(xùn)目的:掌握面向?qū)ο笾蓄?、繼承、多態(tài)性的開發(fā)思想;掌握流的概念;獨立設(shè)計個人銀行賬戶管理程序。實訓(xùn)內(nèi)容:1、 個人銀行賬戶管理程序的類關(guān)系圖2、 個人銀行賬戶管理程序的個人賬戶設(shè)置和應(yīng)用3、 個人銀行賬戶管理程序?qū)嵱?xùn)代碼:1、個人銀行賬戶管理程序的類設(shè)計classaccount{private:std::stringid;doublebalance;staticdoubletotal;protected:account(constDate&date,conststd::string&id);voidrecord(constDate&date,doubleamount,conststd::string&desc);voiderror(conststd::string&msg)const;public:conststd::string&getId()const{returnid;}doublegetBalance()const{returnbalance;}staticdoublegettotal(){returntotal;}voidshow()const;};classSavingsAccount:publicaccount{private:accumulatoracc;doublerate;public:SavingsAccount(constDate&date,conststd::string&id,doublerate);doublegetrate()const{returnrate;}voiddeposit(constDate&date,doubleamount,conststd::string&desc);voidwithdraw(constDate&date,doubleamount,conststd::string&desc);voidsettle(constDate&date);};classcreditaccount:publicaccount{private:accumulatoracc;doublecredit;doublerate;doublefee;doublegetdebt()const{doublebalance=getBalance();return(balancevO?balance:0);}public:creditaccount(constDate&date,conststd::string&id,doublecredit,doublerate,doublefee);doublegetcredit()const{returncredit;}doublegetrate()const{returnrate;}doublegetfee()const{returnfee;}doublegetavailablecredit()const{if(getBalance()v0)returncredit+getBalance();Elsereturncredit;}voiddeposit(constDate&date,doubleamount,conststd::string&desc);voidwithdraw(constDate&date,doubleamount,conststd::string&desc);voidsettle(constDate&date);voidshow()const;};classaccumulator{private:Datelastdate;doublevalue;doublesum;public:accumulator(constDate&date,doublevalue):lastdate(date),value(value),sum(0){}doublegetsum(constDate&date)const{returnsum+value*date.distance(lastdate);}voidchange(constDate&date,doublevalue){sum=getsum(date);lastdate=date;this->value=value;}voidreset(constDate&date,doublevalue){lastdate=date;this->value=value;sum=O;}};classDate{private:intyear;intmonth;intday;inttotaldays;public:Date(intyear,intmonth,intday);intgetyear()const{returnyear;}doublegetmonth()const{returnmonth;}intgetday()const{returnday;}intgetmaxday()const;boolisleapyear()const{returnyear%4==0&&year%100!=0IIyear%400==0;}voidshow()const;intdistance(constDate&date)const{returntotaldays-date.totaldays;}};2、個人銀行賬戶管理程序的類關(guān)系圖3、個人銀行賬戶管理程序的個人賬戶設(shè)置和應(yīng)用SavingsAccountwutingming(date,"O90102O6O101",0?015);creditaccountwutingmin(date,"O9O10206O1O1",2O0O,O.O0O5,50);wutingming.deposit(Date(2008,11,5),1000,"buybook");wutingmin.withdraw(Date(2008,11,5),2000,"buyMP3");wutingming.settle(Date(2008,12,5));wutingmin.settle(Date(2008,12,5));wutingming.show();cout<<endl;wutingmin.show();cout<<endl;4、個人銀行賬戶管理程序的重點代碼#include"account.h"#include<iostream>usingnamespacestd;intmain(){Datedate(2008,11,1);SavingsAccountsa1(date,"03755217",0.015);SavingsAccountsa2(date,"02342342",0?015);SavingsAccountwutingming(date,"O90102O6O101",0.015);creditaccountca(date,"C5392394",10000,0.0005,50);creditaccountwutingmin(date,"090102060101",2000,0?0005,50);sa1.deposit(Date(2008,11,5),5000,"salary");sa2?deposit(Date(200&11,25),10000,"sellstock0323");wutingming.deposit(Date(2008,11,5),1000,"buybook");wutingmin.withdraw(Date(2008,11,5),2000,"buyMP3");ca.withdraw(Date(2008,11,15),2000,"buyacell");ca.settle(Date(2008,12,1));ca.deposit(Date(2008,12,1),2016,"repaythecredit");sa1.deposit(Date(2008,12,5),5500,"salary");sa1.settle(Date(20O9,1,1));sa2?settle(Date(20O9,1,1));wutingming.settle(Date(2008,12,5));wutingmin.settle(Date(2O08,12,5));ca?settle(Date(200&12,1));coutvvendl;sa1?show();coutvvendl;sa2?show();coutvvendl;wutingming.show();coutvvendl;wutingmin.show();coutvvendl;ca.show();coutvvendl;coutvv"total:"vvaccount::gettotal()vvendl;return0;}#include"account.h"#includeviostream>usingnamespacestd;intmain(){Datedate(2008,11,1);SavingsAccountsa1(date,"s3755217",0.015);SavingsAccountsa2(date,"02342342",0?015);SavingsAccountwutingming(date,"O90102O6O101",0.015);creditaccountca(date,"C5392394",10000,0.0005,50);account*accounts[]={&sa1,&sa2,&wutingming,&ca};constintn=sizeof(accounts)/sizeof(account*);coutvv"(d)deposit(w)withdraw(s)show(c)changday(n)nextmonth(e)exit"vvendl;charcmd;do{date.show();coutvv"\ttotal:"vvaccount::gettotal()vvendl;coutvv"command>";intindex,day,i;doubleamount;stringdesc;cin>>cmd;switch(cmd){case'd':cin?index?amount;getline(cin,desc);accounts[index]->deposit(date,amount,desc);break;case'w':cin>>index>>amount;getline(cin,desc);accounts[index]->withdraw(date,amount,desc);break;case's':for(i=0;ivn;i++){coutvv"["vvivv"]";accounts[i]->show();coutvvendl;}break;case'c':cin>>day;if(day<date.getday())cout<<"youcannotspecifyapreviousday";elseif(day>date?getmaxday())coutvv"invalidday";elsedate=Date(date.getyear(),date.getmonth(),day);break;case'n':if(date.getmonth()==12)date=Date(date.getyear()+1,1,1);elsedate=Date(date?getyear(),date?getmonth()+1,1);for(i=O;ivn;i++)accounts[i]->settle(date);break;}}while(cmd!='e');return0;}
程序運行結(jié)果匚、r\PrDgiiULFiles\Bicrusuf-tVisualS±udio\l[yProjeGts\l\Debu.g\l.eate^008-11-1#03755217created2908-11-1#02342342created2008-11-1#090102666161createdtiUUM-11-lcreated23W8-11-1created2008-1丄一5410375521756065S0Ssalary2908-11-2541823423421S0601BOG0sellstock03232008-ilG#0901S26G616116061B0GbuybuDk2908-115#0901026G@161-2060-2OG0buyMP3H008-11-1EttCE392394-2060-20G0buyacell2009-12-1ttC5292294-1G-201GIntel'sst2008-12-1ttC53922942SIG&repaytheDi'edit:#037^^2171KBSsalary-11^17Rinterest2009-1-1#0234234215.161S015..2interestE908-12-5#0901026661610.641000.64interest2008-12-5tt09Q102@6Sl@l-30-2030interest0375521?Balance:10E17.e02342342Balance:10S15.2090102060101Balance:10S0.64MYMlMbMlMlBalance:-2030auailablecredit:-30Balance:Mauailablecredit:Itl兇total;丄9503.6Presscmykeytocoiitinue_實訓(xùn)小結(jié):通過本實訓(xùn),應(yīng)用虛函數(shù)和抽象類對程序進(jìn)行改進(jìn):1) 將show函數(shù)聲明為虛函數(shù),因此通過指向creditaccount類實例的account類型的指針來調(diào)用show函數(shù)時,被實際調(diào)用的將是creditaccount類定義的show函數(shù)。這樣,如果創(chuàng)建一個account指針類型的數(shù)組,使各個元素分別指向各個賬戶對象,就可以通過一個循環(huán)來調(diào)用它們的show函數(shù)。2) 在account類中添加deposit,withdraw,settle這3個函數(shù)的聲明,且將它們都聲明為純虛函數(shù),這使得通過基類指針可以調(diào)用派生類的相應(yīng)函數(shù),而且無須給出它們在基類中的實現(xiàn)。經(jīng)過這一改動之后,account類就變成了抽象類。
實訓(xùn)三、圖書信息管理系統(tǒng)主界面實訓(xùn)目的:能夠較好的完成程序的主體設(shè)計,界面友好,功能齊全;程序思路清晰易懂,能夠充分利用所學(xué)工具實現(xiàn)各項操作。獨立力完成實訓(xùn)報告,內(nèi)容充實、觀點明確、新穎。實訓(xùn)內(nèi)容:圖書信息管理系統(tǒng),使之能提供以下功能:1、 系統(tǒng)以菜單方式工作。2、 借書3、 還書4、 圖書維護(hù)5、 讀者維護(hù)6、 退出:包括返回主界面和退出系統(tǒng)等功能。實訓(xùn)代碼:#include<stdio?h>#inc]ude<math?h>#include<string?h>#include<stdlib?h>/*作者/*書名
/*出版單author[20];bookname[20];publisher[20];/*作者/*書名
/*出版單author[20];bookname[20];publisher[20];-,char名*//char*/char
/*出版/*登陸/*出版/*登陸/*價格/*分類/*鏈表的指時間eharpbtime[i5];eharloginnum[10];號*/floatpriee;*/eharclassfy[10];號*/vo存數(shù)據(jù)藪s_list*Create_Books_Doc();Doc(struetbooks_list*head);(struetbooks_list*head,Doc(struetbooks_list*(struetbooks_list*head);jjange(struetbooks_list**ruetbooks_list*head);/*保匸r^struetbookslist*next;vo存數(shù)據(jù)藪s_list*Create_Books_Doc();Doc(struetbooks_list*head);(struetbooks_list*head,Doc(struetbooks_list*(struetbooks_list*head);jjange(struetbooks_list**ruetbooks_list*head);/*保/V新u/V插voi{t新建鏈表頭節(jié)點*/*Create_Books_Doc()'books_list*head;ize/f(struct亠{t新建鏈表頭節(jié)點*/*Create_Books_Doc()'books_list*head;ize/f(struct亠bo°ks_list));/*分ext二Null;/*頭節(jié)點指針域初始化,*strue為空護(hù)returnhead;sruet^bookslist定}/*保存s數(shù)據(jù)至文etbookslist*head){struetbooks_list*p;FILE*fp;p=head;
建并打開ena;aatxtt文件X");/*以寫方式新fprintf(fp,| | |fnirjt者廬?fpri\n");號文件輸鹿號作息點開始移動,遍歷至尾結(jié)點,依p—>nex?!=null)VpLlJ.10塔fsfnirjt者廬?fpri\n");號文件輸鹿號作息點開始移動,遍歷至尾結(jié)點,依p—>nex?!=null)VpLlJ.10塔fs」l2.12s戕一6.6sfc|ose(fp);n),Lnata.txt文件\n");已將圖書數(shù)據(jù)/*;(Oi首地:sh重變p* whiTe(p->ne}p=p->next;}/*開辟新空間,存入數(shù)據(jù),添加進(jìn)鏈表*/whiTe(fTag=='Y'||fTag=='y')id^InsertDoc(struct巒一f】aoo'汗競義醜,方便用戶選擇針量books_list*head)s指向開辟的新結(jié)點向尾結(jié)點*/、"s=(struetbooks_list*)malloc(sizeof(struetbookslist));人、口
書登陸號h""};.、 -請輸入圖臨悴^loginnum);請輸入圖書書名陀:di)請輸入圖fflush(stdin);("%\",s->bookname);f開;S->author);詼嘰("%\",s->bookname);f開;S->author);詼嘰blisher);請輸入圖請輸入圖scanf書轆:請輸入圖請輸入圖書scanf請輸入圖書丁間:?.丁間:usscan書分類號scanf書usscan書分類號scanf書請輸入圖:")\n請輸入圖丄nrintf加成功!t?\繼續(xù)添fd訕priftf(=\nN'i|flag==F)請輸入圖丄nrintf加成功!t?\繼續(xù)添fd訕priftf(=\nN'i|flag==F)if(flag=='Y'||flag=='y');…"_〃);N)、:");I"&flag);
Save(head);/*保存數(shù)據(jù)至文件*/}return;/*查詢操作*/{oidsearch_book(structbooks_list*head)struetbooks_list*p;c=ar$emp[20];intf\n");斷數(shù)據(jù)庫是否為空*/head->nex七=視⑴/*判圖書庫為空intf\n");查&請輸逬要查找的書名:");點開始移動,遍歷至尾結(jié)點,[lseprintf查&請輸逬要查找的書名:");點開始移動,遍歷至尾結(jié)點,iwJife(p->next!=NULL)if(strCmC(p->bookname,temp)==0)iwJ號:位:
間:IP唧U時isher);feftf\t\n";p->pracef;);一〉bookname);,p->author);printf("\n圖書已找到!\n");crintf("\%s\inf,(p-%牒一%s\intp'("出%s\t\npV號:位:
間:IP唧U時isher);feftf\t\n";p->pracef;);一〉bookname);,p->author);}printf("\n查詢完畢!\n");r}}e}turn;}return;/*瀏覽操作*/voidPrint_Book_Doc(struetbooks_list*head):h/ead->next==NULL)/*:h/ead->next==NULL)/*\n\n");記錄!判斷數(shù)據(jù)庫是否為1一嘔有圖書記\n\n");記錄!Ireturn;p-heaf;"PjT〃次printf(一PjT〃次點開始移動,遍歷至尾結(jié)點,依next[二null)1r,l
Lor
o、hp
讓1r,l
Lor
o、hp
讓ft>
廠2U一
%ap,
OS,s
16es?m8al—h-1廠nc廠%k>一Iopsb,S2>e61-m?62Lu/-1mb*%CUE-tJlrl裊sgK44nfoo>tl一n?>PIO-一一rippp-,■nu*J\D7p^intf("1 }printf("\n");
PandUaH=_li/*此變量用于判斷是否找到temp[20];PandUaH=_li/*此變量用于判斷是否找到temp[20];l 要修改的書名:");f("%s,temp); 、e(p->next!二NULL)請輸入char刖_("請輸入要修改的書名:");scanf(%s,twhi]e(p->nexif(strCmp(p->bookname,temp)==0)陸卡號:n);us請輸入scanf("%S",P->loginnum)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智慧校園運營管理承包經(jīng)營合同書范文4篇
- 二零二五年度抗裂抹灰材料勞務(wù)分包協(xié)議3篇
- 2025年度水利工程打樁施工合同范本(二零二五版)4篇
- 2025版汽車銷售場地租賃與客戶滿意度提升合同4篇
- 2024版施工小修簡易合同
- 2025年環(huán)保型變壓器研發(fā)與銷售合作協(xié)議范本2篇
- 2025年度智慧社區(qū)建設(shè)項目承包清工勞務(wù)合同模板4篇
- 二零二五版航空航天精密模具研發(fā)生產(chǎn)協(xié)議3篇
- 2025年度房地產(chǎn)項目合作開發(fā)合同示范文本4篇
- 2025年度美容美發(fā)行業(yè)線上線下融合發(fā)展合同4篇
- 2024年上海核工程研究設(shè)計院股份有限公司招聘筆試沖刺題(帶答案解析)
- 眼的解剖結(jié)構(gòu)與生理功能課件
- 2024年銀行考試-興業(yè)銀行筆試參考題庫含答案
- 泵站運行管理現(xiàn)狀改善措施
- 2024屆武漢市部分學(xué)校中考一模數(shù)學(xué)試題含解析
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 浙教版七年級下冊科學(xué)全冊課件
- 弧度制及弧度制與角度制的換算
- 瓦楞紙箱計算公式測量方法
- DB32-T 4004-2021水質(zhì) 17種全氟化合物的測定 高效液相色譜串聯(lián)質(zhì)譜法-(高清現(xiàn)行)
- DB15T 2724-2022 羊糞污收集處理技術(shù)規(guī)范
評論
0/150
提交評論