《C++程序設(shè)計(jì)》教學(xué)實(shí)習(xí)報(bào)告-08信息.doc_第1頁
《C++程序設(shè)計(jì)》教學(xué)實(shí)習(xí)報(bào)告-08信息.doc_第2頁
《C++程序設(shè)計(jì)》教學(xué)實(shí)習(xí)報(bào)告-08信息.doc_第3頁
《C++程序設(shè)計(jì)》教學(xué)實(shí)習(xí)報(bào)告-08信息.doc_第4頁
《C++程序設(shè)計(jì)》教學(xué)實(shí)習(xí)報(bào)告-08信息.doc_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

天津農(nóng)學(xué)院計(jì)算機(jī)科學(xué)與信息工程系C+程序設(shè)計(jì)教學(xué)實(shí)習(xí)報(bào)告實(shí)習(xí)名稱: C+程序設(shè)計(jì) 專 業(yè): 信息管理與信息系統(tǒng) 班 級(jí): 2008級(jí) 2 班 學(xué) 號(hào): 0808044227 姓 名: 李立 指導(dǎo)教師: 趙光煜 成 績: 二00九年 七 月 十 日15 目 錄 1 教學(xué)實(shí)習(xí)的內(nèi)容12 教學(xué)實(shí)習(xí)的目的13 教學(xué)實(shí)習(xí)設(shè)計(jì)介紹14 總結(jié)與體會(huì)141 教學(xué)實(shí)習(xí)的內(nèi)容通過使用所學(xué)的C+語言的基本詞法和語法規(guī)則(字符集、詞法規(guī)則、程序結(jié)構(gòu)、運(yùn)算符和表達(dá)式、各類語句、函數(shù)格式和調(diào)用方式、作用域及存儲(chǔ)類)以及一些面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(類和對(duì)象的概念及定義格式、對(duì)象的賦值和運(yùn)算、繼承性和派生類、多態(tài)性和虛函數(shù))等知識(shí),熟練掌握其內(nèi)涵并且達(dá)到自己編譯程序的目的。使用C+開發(fā)環(huán)境進(jìn)行C+程序的設(shè)計(jì)、編輯、編譯、調(diào)試、運(yùn)行、測試,完成實(shí)習(xí)報(bào)告。2 教學(xué)實(shí)習(xí)的目的完成C+程序設(shè)計(jì)課程學(xué)習(xí)后,通過本次教學(xué)實(shí)習(xí),對(duì)所學(xué)的C+專業(yè)知識(shí)進(jìn)一步消化、理解并且掌握程序設(shè)計(jì)方法,把所學(xué)的C+專業(yè)知識(shí)靈活運(yùn)用到現(xiàn)實(shí)問題中,鍛煉和提高綜合運(yùn)用所學(xué)面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和其他的一些知識(shí)結(jié)合起來解決實(shí)際問題的能力。而且,通過學(xué)習(xí)C+知識(shí)讓我利用另外一種方式去發(fā)現(xiàn)問題、分析問題和解決問題的重要性3 教學(xué)實(shí)習(xí)設(shè)計(jì)介紹 對(duì)整個(gè)系統(tǒng)的設(shè)計(jì)思路是這樣的,首先由員工輸入用戶信息,包括編號(hào)、姓名和職務(wù);然后,在計(jì)算某為職工的當(dāng)月工資時(shí),系統(tǒng)先從一輸入的職工信息文件中獲取職工的工作類型,接著調(diào)用不同的處理程序進(jìn)行計(jì)算;最后將結(jié)果存檔。從用戶的需求中,可以發(fā)現(xiàn)5種類型的職員都可以分別設(shè)計(jì)為一個(gè)類。首先,他們都屬于雇員,因此可以設(shè)計(jì)一個(gè)基類employee(雇員),然后從中派生出technician(技術(shù)人員)類、salesman(銷售人員)類、secretary(文秘)類。對(duì)于技術(shù)經(jīng)理和銷售經(jīng)理來說,他們都屬于經(jīng)理,所以設(shè)計(jì)時(shí)可以從employee類中派生出一個(gè)manager(經(jīng)理)類作為techmanager(技術(shù)人員)類、salesman(銷售人員)類、secretary(文秘)類的父類。而經(jīng)理類本身并不對(duì)應(yīng)實(shí)際的工作類型,由于技術(shù)經(jīng)理有技術(shù)人員和經(jīng)理的雙重特點(diǎn),因此techmanager類同時(shí)繼承technician類和manager類;銷售經(jīng)理有銷售人員和經(jīng)理的雙重特點(diǎn),因此salesmanager類同時(shí)繼承salesman類和manager類。根據(jù)用戶需求,employee類應(yīng)該擁有的屬性有:編號(hào)、姓名、職務(wù)、月份和工資。Employee類的服務(wù)可以包括info()、search()、countsalary()、recordinfo()和recordsalary()。其中info()函數(shù)用于接收用戶輸入的職工信息;search()函數(shù)用來根據(jù)職工名查找職工信息;countsalary()函數(shù)為工資計(jì)算函數(shù),但在基類中為空,原因是各類人員的工資計(jì)算方法不同,無法在基類中統(tǒng)一定義,必須在派生類中分別定義。Recordinfo()函數(shù)和recordsalary()函數(shù)分別是職工信息和職工工資的記錄函數(shù),分別將信息存入文件info.txt和salary.txt。該系統(tǒng)的源程序如下,salary.h為頭文件,定義了所有的類,salary.cpp實(shí)現(xiàn)了所有的類,manager.cpp為主程序,實(shí)現(xiàn)了整個(gè)管理流程。/*/ */ salary.h */ 定義對(duì)所有的類 */ */*class employeepublic:int number; /編號(hào)char *name; /姓名int status; /職務(wù)代碼,1:技術(shù)經(jīng)理;2:銷售經(jīng)理;3:技術(shù)人員;4:銷售人員5:文秘int month; / 所計(jì)算工資的月份float salary; / 工資額public:void info(); /接受用戶輸入的職工信息bool search(); /根據(jù)姓名查找職工信息virtual void countSalary()=0; /計(jì)算工資函數(shù),純虛函數(shù)用于被重載int recordInfo(); /記錄職工信息int recordSalary(); /記錄職工工資信息;class technician: virtual public employeeprotected:int workHour; /本月工作小時(shí)數(shù)float hourlySalary; /時(shí)薪public:technician(float x=35); /構(gòu)造函數(shù)void countSalary(); /技術(shù)人員工資計(jì)算函數(shù);/銷售人員類class salesman: virtual public employeeprotected:float saleSum; / 本月銷售額double getRate; /提成比率public:salesman(float x=0.05); /構(gòu)造函數(shù)void countSalay(); /銷售人員工資計(jì)算函數(shù);/經(jīng)理類,不對(duì)應(yīng)實(shí)際職務(wù)class manager:virtual public employeeprotected:float fixedSalary; /經(jīng)理的固定工資public:manager(float x=6000); /構(gòu)造函數(shù)void countSalary();/經(jīng)歷的工資計(jì)算函數(shù),為空;/文秘類class secretary: public employeefloat fixedSalary; /文秘的固定工資float bonus; /文秘的獎(jiǎng)金public:secretary(float x=4000); /構(gòu)造函數(shù)void countSalary(); /文秘的工資計(jì)算函數(shù);/技術(shù)經(jīng)理類class techmanager: public technician, public managerfloat gradeBonus; /技術(shù)經(jīng)理的業(yè)績等級(jí)獎(jiǎng)(每級(jí))int grade; /技術(shù)經(jīng)理的業(yè)績等級(jí)public:techmanager(float x=1000);/構(gòu)造函數(shù)void countSalary();/技術(shù)經(jīng)歷的工資計(jì)算函數(shù);/銷售經(jīng)理類class salesmanager: public salesman, public managerpublic:salesmanager(float x=0.02);/構(gòu)造函數(shù)void countSalary();/銷售經(jīng)歷的工資計(jì)算函數(shù);/*/ */ salary.cpp */ 實(shí)現(xiàn)所有的類 */ */*#include #include#includesalary.husing namespace std;struct infoRecorderint number;char name30;int status; irl; /職工信息結(jié)構(gòu),用于將職工信息寫入文件struct salaryRecorderchar name30;int month;float salary; srl; /職工工資信息結(jié)構(gòu),用于將職工信息寫入文件void employee:info()char namestr30; /用于臨時(shí)存放職工姓名coutendlnamestr;name=new charstrlen(namestr)+1; /動(dòng)態(tài)申請(qǐng)內(nèi)存空間strcpy(name,namestr); /拷貝職工姓名到namecoutnumber;while(number9999) /檢查員工編號(hào)coutnumber;countstatus;while (status5) /檢查員工職務(wù)代碼coutstatus;bool employee:search()int i:ifstream ifile(info.txt,ios:in|ios:binary); /打開員工信息文件info.txtif(! ifile)cerrend員工信息文件讀取錯(cuò)誤!endl;return false;while (! ifile.eof() / 根據(jù)職工名查找職工信息ifile.read( (char *)&irl, sizeof(irl) ); /讀取一條記錄i=strcmp(,name);/比較職工名是否匹配if(i=0) 如果匹配就讀取職工信息number=irl.number;status=irl.status;ifile.close();return true; /查找到職工信息ifile.close();return false; /未查找到職工信息int employee:recordIfo()strcpy(,name);/先將職工信息存入結(jié)構(gòu)inforecorder中irl.status=status;ofstream ofile(info.txt, ios:app|ios:binary);/使用追加方式打開員工信息文件info.txtif(! ofile)cerrendl員工信息文件打開錯(cuò)誤!endl;return 0;ofile.write( (char *)&irl, sizeof(irl) );/寫入一個(gè)記錄ofile.close();return 1;int employee:recordSalary()char ch1;coutendlch1;/獲取用戶輸入while (ch1 =Y&ch1! =y&ch1! =N&ch1! =n)cinch1;if( ch1=N|ch1n) return 0;/不存檔else /存檔strcpy(,name);/將職工工資信息先存入結(jié)構(gòu)salaryrecorder中coutendlsrl.month; while(sr1.month12)/檢查輸入月份 Coutendlsr1.month; srl.salary=salary; ofstream ofile(salary.txt,ios:app|ios:binary);/打開文件salary.txt if(! ofile) cerrendl員工工資文件打開錯(cuò)誤!endl; return 0; ofile.write( (char *)&srl,sizeof(srl) );/寫入一條記錄ofile.close();return 1;technician:technician(float x)hourlySalary=x;/技術(shù)人員時(shí)薪默認(rèn)為35元void technician:countSalary()cout請(qǐng)輸入技術(shù)員nameworkHour;/輸入工作時(shí)數(shù)salary=workHour*hourlySalary;/工資=工作時(shí)數(shù)*cout技術(shù)員salaryendl;/class salesman/salesman:salesman(float x)getRate=x; / 銷售員提成比率為5%void salesman:countSalary()cout請(qǐng)輸入銷售員namesaleSum; /輸入銷售額salary=saleSum*getRate; /工資=銷售額*提成比率cout銷售員name編號(hào)number本月工資為:salaryendl;/class manager/manager:manager(float x)fixedSalary=x; / 經(jīng)理的固定工資為6000元void manager:countSalary()/class secretary/secretary:secretary(float x)fixedSalary=4000; /文秘的固定工資為4000元void secretary:countSalary()cout請(qǐng)輸入文秘namebonus; /輸入文秘當(dāng)月獎(jiǎng)金salary=fixedSalary+bonus; /工資=固定工資+獎(jiǎng)金coutendl文秘name編號(hào)number本月工資為:salaryendl;/class techmanager/techmanager:teachmanager(float x)gradeBonus=x; /技術(shù)經(jīng)理工作業(yè)績每等級(jí)的獎(jiǎng)金void techmanager:countSalary()cout請(qǐng)輸入技術(shù)經(jīng)理namegrade; / 輸入工作業(yè)績等級(jí)while( grade3) /檢查輸入工作業(yè)績等級(jí)coutendl工作業(yè)績等級(jí)錯(cuò)誤,工作業(yè)績等級(jí)必須為1、2、3,請(qǐng)重新輸入:;salary=fixedSalary+grade*gradeBonus; /工資=固定工資+業(yè)績等級(jí)*每級(jí)獎(jiǎng)金coutendl技術(shù)經(jīng)理name編號(hào)number本月工資為:salaryendl;/class salesmanafer/salesmanager:salesmanager(float x)getRate=x;/銷售經(jīng)理的銷售總額提成比率void salesmanager:countSalary()cout請(qǐng)輸入銷售經(jīng)理namesaleSum;/當(dāng)月銷售總額salary=fixedSalary+saleSum*getRate;/工資=固定工資+當(dāng)月銷售額*提成比率coutendl銷售經(jīng)理name編號(hào)number本月工資為:salaryendl;/*/ */ manager.cpp */ 主程序 * / * /*#include#include#includesalary.husing namespace std;void main()char ch1; /用于臨時(shí)存放姓名char namestr30; /分別定義各個(gè)類的實(shí)例technician em, te;salesman sa;secretary se;manager ma;techmanager tm;salesmanager sm; /定義一個(gè)基類指針數(shù)組分別指向各個(gè)派生類的對(duì)象employee *pem6=&ma,&tm,&sm,&te,&sa,&se;int i;coutendl=; coutendl=職工工資管理系統(tǒng)=; coutendl=;while(true) /設(shè)定循環(huán)操作coutendlch1;while( ch1 =1 & ch1!=2 & ch1!=3 )/檢查用戶輸入cinch1;if( ch1=1 ) /輸入員工信息(); /接受用戶輸入員工信息em.recordInfo(); / 記錄員工信息else if( ch1=2 ) /計(jì)算員工工資coutendlnamestr;=new charstrlen(namestr)+1; / 申請(qǐng)內(nèi)存空間存放姓名strcpy(,namestr); / 復(fù)制姓名while( ! em.search() ) /根據(jù)姓名查找員工信息coutendlnamestr; /如輸入員工姓名錯(cuò)誤,則重復(fù)上述步驟=new charstrlen(namestr)+1;strcpy(,namestr);i=em.status; /獲得該名職工的職務(wù)代碼pemi-name=; /將獲得的職工信息輸入到對(duì)應(yīng)的派生類對(duì)象pemi-number=em.number;pemi-status=em.status;pemi-countSalary(); / 根據(jù)職務(wù)代碼調(diào)用不同派生類的函數(shù)pemi-recordSalary(); /刪除動(dòng)態(tài)申請(qǐng)的空間else break; /如果用戶選擇3,則退出程序運(yùn)行結(jié)果如下:= 職工工資管理系統(tǒng)=請(qǐng)選擇操作:1.輸入員工信息;2。計(jì)算員工工資;3.退出。請(qǐng)輸入員工姓名:Tom請(qǐng)輸入員工編號(hào):1001請(qǐng)輸入員工職務(wù)代

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論