版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一、課程設(shè)計目的1、使學生能夠比較熟練地掌握c+語言的基本語法規(guī)則;2、熟練掌握基本的面向?qū)ο蟮某绦蛟O(shè)計方法,如類的實現(xiàn)、創(chuàng)建類的實例對象、實現(xiàn)類的繼承等;3、掌握各種面向?qū)ο蟮某绦蛟O(shè)計技術(shù),如多態(tài)的實現(xiàn)、運算符重載、使用c+標準庫等。4、掌握在vc+平臺上進行程序設(shè)計和調(diào)試的方法。二、系統(tǒng)設(shè)計要求題目1:通過組合和派生構(gòu)成新的類本設(shè)計題目的任務(wù)是使用point類產(chǎn)生line類。分別通過組合類及派生類兩種方法實現(xiàn),并要求分別給出使用類模板實現(xiàn)的程序。題目2:人員信息管理系統(tǒng)本設(shè)計題目的任務(wù)是設(shè)計一個人員信息管理系統(tǒng),并使用虛函數(shù)實現(xiàn)多態(tài)性,完成顯示不同人員信息的任務(wù)。設(shè)計employee類,用
2、來存儲雇員的編號,級別,月薪等信息,能夠?qū)ζ溥M行操作和顯示。以employee為基類派生出technician類,表示兼職技術(shù)人員,以及manager類,表示經(jīng)理,以及salesman類,表示兼職推銷員。利用manage類和salesman類派生出salesmanager類,表示銷售經(jīng)理。注意使用虛基類。進一步使用虛函數(shù)和抽象類改進上面的程序。題目3:成績管理系統(tǒng) 輸入一個班級的學生基本信息(包括學號,姓名,性別,科目),對n門考試的成績進行管理要求 l 用戶錄入每個學生每門課程的分數(shù); l 能夠計算每個學生的各門功課總分和平均分,并按總分將成績排序,顯示每個學生的總分和排名; l 計算全班各
3、門功課的平均分,顯示每門課程中低于平均分的每一個學生的學號,姓名,性別,科目,成績等信息; l 顯示每門科目中,成績在90分以上的學生信息。另外還輸出每門科目中不及格的學生信息; l 能按姓名或者學號查找,增加,刪除和保存各個學生的信息。三、設(shè)計思路line類起點:beginpoint終點:endpoint長度:length1.1、point類橫坐標:x縱坐標:y豎坐標:z類的組合類的派生line類起點:beginpoint終點:endpoint長度:lengthpoint類橫坐標:x縱坐標:y豎坐標:z1.2、23、print() 界面函數(shù),主界面如下searchno() 按照編號查找學生信
4、息saveinfo() 將學生信息保存到文件setup () 查找失敗后創(chuàng)建一個新同學sort() 學生成績總分排序瀏覽avescore() 計算各科平均成績higer() 查看成績高于90分的學生信息failed() 查看成績不及格的學生信息searchname() 按照姓名查找學生信息exit(0) 退出系統(tǒng)四、調(diào)試過程1首先由于剛開始沒讀懂題意,我直接把課題一的模板類實現(xiàn)做成只有一個display()函數(shù),根本沒有真正顯示出模板類的優(yōu)點,后來通過和其他同學的討論研究才發(fā)現(xiàn)自己在理解上有些偏差,于是我毫不猶豫地把原來學的程序放棄了,直接重新開始我的新任務(wù),最后終于搞出來時,心情異常激動。2
5、.對于第二個課題,原本以為很簡單的事,忽然發(fā)現(xiàn)運行時總是提醒調(diào)用了private的數(shù)據(jù)成員,搞得我很迷糊,雖然很努力的整天對著電腦修改錯誤,但結(jié)果收效甚微,錯誤沒改好,貌似又出現(xiàn)了更多的錯誤,簡直是一團亂麻,當時真想放棄,最終在同學的幫忙下終于做完,有點身心疲憊的感覺。3.第三個題目很有挑戰(zhàn)性,因為越做越覺得很吸引我,它一點一點促使我向前進。在可以運行時我激動地摟著宿舍同學跳啊跳的,但是程序運行一段時間后就會自動中止,這讓我很頭疼,實在是有種受不了的感覺,看看其他同學也是很郁悶,但總不能只做一半就放棄,于是我上網(wǎng)看程序、圖書館查資料、看課本,終于成功了!五、程序源代碼實驗一# include
6、# include using namespace std;template class pointpublic:point(); /point類的默認構(gòu)造函數(shù)point(t,t,t); /point類的帶參數(shù)的構(gòu)造函數(shù)point(point &); /point類的拷貝構(gòu)造函數(shù)point(); /point類的析構(gòu)函數(shù)void setx(t x1) /設(shè)置x的函數(shù)x=x1;void sety(t y1) /設(shè)置y的函數(shù)y=y1;void setz(t z1) /設(shè)置z的函數(shù)z=z1;t getx() /讀取x的函數(shù)return x;t gety() /讀取y的函數(shù)return y;t get
7、z() /讀取z的函數(shù)return z;void display(); /在屏幕上顯示pointprotected:t x; /point類的橫坐標t y; /point類的縱坐標t z; /point類的豎坐標;template point:point()x=y=z=0;coutpoint類的默認構(gòu)造函數(shù)被調(diào)用!endl;template point:point(t x,t y,t z)this-x=x;this-y=y;this-z=z;coutpoint類的帶參數(shù)的構(gòu)造函數(shù)被調(diào)用!endl;template point:point(point &p)x=p.x;y=p.y;z=p.z;c
8、outpoint類的拷貝構(gòu)造函數(shù)被調(diào)用!endl;template point:point()coutpoint類的析構(gòu)函數(shù)被調(diào)用!endl;template void point:display()cout(x,y,z);template class line:public pointpublic:line(); /line類的默認構(gòu)造函數(shù)line(t,t,t,t,t,t); /line類的帶參數(shù)的構(gòu)造函數(shù)line(line &); /line類的拷貝構(gòu)造函數(shù)line(); /line類的析構(gòu)函數(shù)void setbeginpoint(t x1,t y1,t z1) /設(shè)置起點beginpoi
9、nt.setx(x1);beginpoint.sety(y1);beginpoint.setz(z1);void setendpoint(t x2,t y2,t z2) /設(shè)置終點endpoint.setx(x2);endpoint.sety(y2);endpoint.setz(z2);point getbeginpoint() /讀取起點return beginpoint;point getendpoint() /讀取終點return endpoint;void clength() /計算長度t l1;l1=pow(endpoint.getx()-beginpoint.getx(),2)+p
10、ow(endpoint.gety()-beginpoint.gety(),2)+pow(endpoint.getz()-beginpoint.getz(),2);length=sqrt(l1);t getlength() /讀取長度return length;void display(); /在屏幕上顯示lineprivate:point beginpoint; /起點point endpoint; /終點t length; /長度;template line:line()length=0.0;coutline類的默認構(gòu)造函數(shù)被調(diào)用!endl;template line:line(t x1,t
11、 y1,t z1,t x2,t y2,t z2):beginpoint(x1,y1,z1),endpoint(x2,y2,z2)clength();coutline類的帶參數(shù)的構(gòu)造函數(shù)被調(diào)用!endl;template line:line(line &l):beginpoint(l.beginpoint),endpoint(l.endpoint)length=l.length;coutline類的拷貝構(gòu)造函數(shù)被調(diào)用!endl;template line:line()coutline類的析構(gòu)函數(shù)被調(diào)用!endl;template void line:display()beginpoint.dis
12、play();cout;endpoint.display();cout它的長度是lengthendl;void main()cout創(chuàng)建line類的對象時,不傳遞參數(shù):n構(gòu)造函數(shù)的調(diào)用順序如下endl;line line1;line1.display();cout創(chuàng)建line類的對象時,傳遞參數(shù):n構(gòu)造函數(shù)的調(diào)用順序如下endl;line line2(0,0,0,1,1,1);line2.display();cout創(chuàng)建line類的對象時,傳遞參數(shù):n構(gòu)造函數(shù)的調(diào)用順序如下endl;line line3(0.1,0.2,0.3,1.1,1.2,1.3);line3.display();cout
13、創(chuàng)建line類的對象時,調(diào)用類的拷貝構(gòu)造函數(shù):n構(gòu)造函數(shù)的調(diào)用順序如下endl;line line4(line3);line4.display();實驗二/employee.h文件#if ! defined employee_h#define employee_h# include# includeusing namespace std;class employeepublic:employee(); /employee類的默認的構(gòu)造函數(shù)employee(string,string,string,float); /employee類的帶參數(shù)的構(gòu)造函數(shù)employee(employee &);
14、/employee類的拷貝構(gòu)造函數(shù)employee() /employee類的析構(gòu)函數(shù)bool setid(string); /設(shè)置編號的函數(shù)bool setname(string); /設(shè)置姓名的函數(shù)bool setgrade(string); /設(shè)置級別的函數(shù)bool setsalary(float); /設(shè)置月薪的函數(shù)string getid() /讀取編號的函數(shù)return id; string getname() /讀取姓名的函數(shù)return name; string getgrade() /讀取級別的函數(shù)return grade;float getsalary() /讀取月薪的函數(shù)
15、return salary;virtual void display() /在屏幕上顯示雇員信息protected:string id;string name;string grade;float salary;employee:employee()id=0000;name=noname;grade=0000;salary=0.0;employee:employee(string id,string strname,string strgrade,float s)if(sizeof(id)!=0)id=id;if(sizeof(strname)!=0)name=strname;if(sizeo
16、f(strgrade)!=0)grade=strgrade;if(s0)salary=s;employee:employee(employee &e)id=e.id;name=;grade=e.grade;salary=e.salary;bool employee:setid(string id)if(sizeof(id)!=0)id=id;return true;elsereturn false;bool employee:setname(string strname)if(sizeof(strname)!=0)name=strname;return true;elseretur
17、n false;bool employee:setgrade(string strgrade)if(sizeof(strgrade)!=0)grade=strgrade;return true;elsereturn false;bool employee:setsalary(float s)if(s0)salary=s;return true;elsereturn false;#endif/technician.h文件#if ! defined technician_h#define technician_h# includeemployee.h# include# includeusing
18、namespace std;class technician:public employee /technician技術(shù)人員類公有繼承employee雇員類public:technician() /technician類的默認的構(gòu)造函數(shù)technician(string id,string strname,string strgrade,float s); /technician類的帶參數(shù)的構(gòu)造函數(shù)technician(technician &); /technician類的拷貝構(gòu)造函數(shù)technician() /technician類的析構(gòu)函數(shù)void display(); /在屏幕上顯示t
19、echnician技術(shù)人員類的信息;technician:technician(string id,string strname,string strgrade,float s):employee(id,strname,strgrade,s)technician:technician(technician &t):employee(t)void technician:display()cout技術(shù)人員的個人信息如下:endl;cout編號t姓名t級別tt月薪endl;coutidtnametgradetsalaryendl;# endif/salesman.h文件#if ! defined s
20、alesman_h#define salesman_h# include# includeemployee.h# includeusing namespace std;class salesman:virtual public employee /salesman銷售人員類公有繼承employee雇員類public:salesman() /salesman類的默認的構(gòu)造函數(shù)salesman(string id,string strname,string strgrade,float s); /salesman類的帶參數(shù)的構(gòu)造函數(shù)salesman(salesman &); /salesman類的
21、拷貝構(gòu)造函數(shù)salesman() /salesman類的析構(gòu)函數(shù)void display(); /在屏幕上顯示salesman銷售人員類的信息;salesman:salesman(string id,string strname,string strgrade,float s):employee(id,strname,strgrade,s)salesman:salesman(salesman &s):employee(s)void salesman:display()cout銷售人員的個人信息如下:endl;cout編號t姓名t級別tt月薪endl;coutidtnametgradetsala
22、ryendl;# endif/manager.h文件#if ! defined manager_h#define manager_h# include # include # include employee.husing namespace std;class manager:virtual public employee /manager經(jīng)理類公有繼承employee雇員類public:manager() /manager類的默認構(gòu)造函數(shù)manager(string id,string strname,string strgrade,float s); /manager類的帶參數(shù)的構(gòu)造函數(shù)
23、manager(manager &); /manager類的構(gòu)造函數(shù)類manager() /manager類的析構(gòu)函數(shù)void display(); /在屏幕上顯示manager經(jīng)理類的信息;manager:manager(string id,string strname,string strgrade,float s):employee(id,strname,strgrade,s)manager:manager(manager &m):employee(m)void manager:display()cout經(jīng)理的個人信息如下:endl;cout編號t姓名t級別t月薪endl;coutidt
24、nametgradetsalaryendl;#endif/salesmanager.h文件#if ! defined salesmanager_h#define salesmanager_h# include# include# includesalesman.h# includemanager.husing namespace std;class salesmanager: public manager ,public salesman /salesmanager銷售經(jīng)理類公有繼承employee雇員類private:string id;string name;string grade;fl
25、oat salary;public:salesmanager() /salesmanager類的默認的構(gòu)造函數(shù)salesmanager(string id,string strname,string strgrade,float s); /salesmanager類的帶參數(shù)的構(gòu)造函數(shù)salesmanager(salesmanager &s); /salesmanager類的拷貝構(gòu)造函數(shù)salesmanager() /salesmanager類的析構(gòu)函數(shù)void display(); /在屏幕上顯示salesmanager銷售經(jīng)理的信息;salesmanager:salesmanager(str
26、ing id,string strname,string strgrade,float s):salesman(id,strname,strgrade,s),manager(id,strname,strgrade,s)id=id;name=strname;grade=strgrade;salary=s;salesmanager:salesmanager(salesmanager &sm):salesman(sm),manager(sm)id=sm.id;name=;grade=sm.grade;salary=sm.salary;void salesmanager:display(
27、)cout銷售經(jīng)理的個人信息如下:endl;cout編號t姓名t級別tt月薪endl;coutidtnametgradetsalaryendl;#endif/test2.cpp主函數(shù)# include# include# includesalesmanager.h# includetechnician.husing namespace std;void createmployeearray(int capacity)string id,strname,strgrade;float s;employee * ptrtoemployee;for(int i=0;icapacity;i+)cout請
28、輸入第i+1個雇員的信息endl;coutid;coutstrname;coutstrgrade;couts;if(strgrade=技術(shù)人員)technician pt(id,strname,strgrade,s);ptrtoemployee=&pt;ptrtoemployee-display();else if(strgrade=經(jīng)理)manager pm(id,strname,strgrade,s);ptrtoemployee=±ptrtoemployee-display();else if(strgrade=銷售人員)salesman ps(id,strname,strgrade
29、,s);ptrtoemployee=&ps;ptrtoemployee-display();else if(strgrade=銷售經(jīng)理)salesmanager psm(id,strname,strgrade,s);ptrtoemployee=&psm;ptrtoemployee-display();void main ()int capacity;coutcapacity;employee *ptr;createmployeearray(capacity);實驗三#include#include#include#includeusing namespace std;class student
30、friend int searchno(student* ptrs,string no,int i); /按照編號查找!friend void saveinfo(student* ptrs,int i); /保存到文件!friend student* setup(student* ptrs,int &i); /查找失敗后創(chuàng)建一個新同學!friend void sort(student* ptrs,int i); /按照總分排序!friend void higher(student* ptrs,int i); /輸出各科高于90分的同學!friend void avescore(student*
31、 ptrs,int i); /計算各科的平均成績!friend void failed(student* ptrs,int i); /輸出各科不及格同學!friend int searchname(student* ptrs,string nam,int i); /按照姓名查找!public:student();student(float math,float english,float c,float chinese,float physics,string name,string no,string sex);void createstu(); /用來輸入學生信息void display(
32、); /顯示學生相關(guān)信息void search(); /將五科成績分為三個層次記錄在a數(shù)組中private:string name,no,sex;float math,c,english,chinese,physics,sum;float average;char a5;student:student() /默認構(gòu)造函數(shù)!int i; name+=wins;no+=520325;sex=男;math=60;english=60;c=60;chinese=60;physics=60;sum=math+english+c+chinese+physics;average=sum/5; for(i=0
33、;iname=name;this-sex=sex;this-chinese=chinese;this-math=math;this-english=english;this-c=c;this-physics=physics;sum=math+english+c+chinese+physics;average=sum/5; for(i=0;i5;i+)ai=e;void student:createstu() /輸入學生信息!coutno;coutname;coutsex;coutchinese;coutmath;coutenglish;coutc;coutphysics;sum=math+en
34、glish+c+chinese+physics;average=sum/5;void student:display() /輸出學生信息coutsetw(10)編號setw(10)姓名setw(5)性別setw(5)語文setw(5)數(shù)學setw(5)英語setw(5)c語言setw(5)物理endl; coutsetw(10)nosetw(10)namesetw(5)sexsetw(5)chinesesetw(5)mathsetw(5)englishsetw(5)csetw(5)physicsendl;void student:search() /將每一門分數(shù)分為三個等級,記錄在a中!int
35、 i;for(i=0;i=90)a0=h;else if(chinese=90)a1=h;else if(math=90)a2=h;else if(english=90)a3=h;else if(c=90)a4=h;else if(physics60)a4=l;elsebreak;void sort(student*ptrs,int i) /將學生按照總分排名!int j,k,flag;student s;for(j=0;ji-1;j+) /冒泡排序flag=0; /i表示總學生人數(shù)for(k=1;ki-j;k+)if(ptrsflag.sumptrsk.sum)flag=k;s=ptrsfl
36、ag;ptrsflag=ptrsi-j-1;ptrsi-j-1=s;void main() cout welcom to =n; cout ttt *n; cout ttt * *n; cout ttt *學生成績管理系統(tǒng)*n; cout ttt * *n; cout ttt * 版主:計科薛雙 *n; cout ttt * *n; cout ttt *n; int i,j,decide;char temp;string nam;couti;student*ptrs=new studenti;for(j=0;ji;j+)ptrsj.createstu();ptrsj.search();sort
37、(ptrs,i); while(1) cout welcom to =n; cout ttt *n; cout ttt * *n; cout ttt *學生成績管理系統(tǒng)*n; cout ttt * *n; cout ttt * 版主:計科薛雙 *n; cout ttt * *n; cout ttt *n; coutt請選擇n; coutttn; couttt1. 按照總分排名 n; couttt2. 計算各門功課平均分 n; couttt3. 顯示各門成績超過九十的學生 n; couttt4. 顯示各門不及格的學生 n; couttt5. 按照姓名查找學生 n; couttt6. 按照編號查找學生 n; couttt7. 保存學生信息到文件 n; couttt8. 退出系統(tǒng) n; coutttn; cout 請選擇(1-8):n; couttttttemp; if(temp8|temp1)continue;else if(temp=8)coutttt* 謝謝使用! *endl; coutttt* 再見! *endl; exit(0); break;else switch(temp)case 1:for(j=0;ji;j+)ptrsj.displ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 親子讀書心得體會15篇
- 中學生物教研組工作總結(jié)
- 中隊委競選演講稿模板集錦9篇
- 中國醫(yī)師節(jié)致辭范文(6篇)
- 中醫(yī)院經(jīng)濟管理經(jīng)驗匯報材料-學習材料范文
- 應急值守課件教學課件
- 影像科緊急搶救預案及流程(修)
- 影響-“小組合作學習”實效性的因素及對策
- 機動車安全技術(shù)檢測儀器設(shè)備計算機控制與通信技術(shù)條件 編制說明
- wipo-文本和圖像作品的集體管理
- 前程無憂國企招聘筆試題庫
- 信息網(wǎng)絡(luò)傳播權(quán)的侵權(quán)認定及其保護
- 專題03正比例函數(shù)和反比例函數(shù)(原卷版+解析)
- DL-T956-2017火力發(fā)電廠停(備)用熱力設(shè)備防銹蝕導則
- 危險貨物道路運輸規(guī)則第5部分:托運要求(JTT617.5-2018)
- DZ/T 0462.1-2023 礦產(chǎn)資源“三率”指標要求 第1部分:煤(正式版)
- 全面推進依法治國的總目標和原則教學設(shè)計
- 嘔血窒息的護理查房
- 《紙質(zhì)文物修復與保護》課件-30古籍的版式
- 工程防滲漏培訓課件
- 鋼結(jié)構(gòu)廠房拆除施工方案案例
評論
0/150
提交評論