




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、面向?qū)ο蟮某绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告姓 名: 學(xué) 號(hào): 班 級(jí): 院 系: 日 期: 一設(shè)計(jì)目的課程設(shè)計(jì)是課程教學(xué)中的一項(xiàng)重要內(nèi)容,是完成教學(xué)計(jì)劃達(dá)到教學(xué)目標(biāo)的重要環(huán)節(jié),是教學(xué)計(jì)劃中綜合性較強(qiáng)的實(shí)踐教學(xué)環(huán)節(jié),它對(duì)幫助學(xué)生全面牢固地掌握課堂教學(xué)內(nèi)容、培養(yǎng)學(xué)生的實(shí)踐和實(shí)際動(dòng)手能力、提高學(xué)生全面素質(zhì)具有很重要的意義。本次課程設(shè)計(jì)通過設(shè)計(jì)和實(shí)現(xiàn)幾個(gè)應(yīng)用程序,達(dá)到以下目標(biāo):1.使學(xué)生能夠比較熟練地掌握c+語(yǔ)言的基本語(yǔ)法規(guī)則;2.熟練掌握基本的面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,如類的實(shí)現(xiàn)、創(chuàng)建類的實(shí)例對(duì)象、實(shí)現(xiàn)類的繼承等;3.掌握各種面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),如繼承和派生,虛繼承、虛函數(shù)、抽象類、多態(tài)的實(shí)現(xiàn)、運(yùn)算符重載、使
2、用c+標(biāo)準(zhǔn)庫(kù)等;4.掌握在vc+平臺(tái)上進(jìn)行程序設(shè)計(jì)和調(diào)試的方法。二內(nèi)容及要求1. 內(nèi)容與功能要求 題目一:通過組合和派生構(gòu)成新的類本設(shè)計(jì)題目的任務(wù)是使用point類產(chǎn)生line類。分別通過組合類及派生類兩種方法實(shí)現(xiàn),并要求分別給出使用類模板實(shí)現(xiàn)的程序。本設(shè)計(jì)題的目的是使學(xué)生掌握在不同的實(shí)現(xiàn)方法中,如何設(shè)計(jì)相應(yīng)的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),進(jìn)一步理解程序調(diào)用它們及析構(gòu)函數(shù)的執(zhí)行順序,掌握組合類和派生類。另外本設(shè)計(jì)題目要讓學(xué)生進(jìn)一步掌握和理解類模板的技術(shù)及其實(shí)現(xiàn)方法。題目二:人員信息管理系統(tǒng)設(shè)計(jì)題目:本設(shè)計(jì)題目的任務(wù)是設(shè)計(jì)一個(gè)人員信息管理系統(tǒng),并使用虛函數(shù)實(shí)現(xiàn)多態(tài)性,完成顯示不同人員信息的任務(wù)。設(shè)計(jì)要
3、求:設(shè)計(jì)employee類,用來存儲(chǔ)雇員的編號(hào),級(jí)別,月薪等信息,能夠?qū)ζ溥M(jìn)行操作和顯示。以employee為基類派生出technician類,表示兼職技術(shù)人員,以及manager類,表示經(jīng)理,以及salesman類,表示兼職推銷員。利用manage類和salesman類派生出salesmanager類,表示銷售經(jīng)理。注意使用虛基類。題目三:學(xué)生考勤管理系統(tǒng)設(shè)計(jì)題目:在學(xué)生考勤管理系統(tǒng)中,考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型(遲到、早退、請(qǐng)假及曠課)。系統(tǒng)功能包括信息錄入、修改、查詢、統(tǒng)計(jì)等。設(shè)計(jì)要求:錄入學(xué)生的缺課記錄; 修改某個(gè)學(xué)生的缺課記
4、錄;查詢某個(gè)學(xué)生的缺課情況;統(tǒng)計(jì)某段時(shí)間內(nèi),曠課學(xué)生姓名及曠課次數(shù),按曠課次數(shù)由多到少排序; 統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序;2. 軟件開發(fā)環(huán)境 windows 7,visual c+6.0 第一題 通過組合和派生構(gòu)成新的類1. 設(shè)計(jì)思路本題目的任務(wù)是使用point類產(chǎn)生line類。分別通過組合類及派生類兩種方法實(shí)現(xiàn),并要求分別給出使用類模板實(shí)現(xiàn)的程序。本題目的目的是使學(xué)生掌握在不同的實(shí)現(xiàn)方法中,如何設(shè)計(jì)相應(yīng)的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),進(jìn)一步理解程序調(diào)用它們及析構(gòu)函數(shù)的執(zhí)行順序,掌握組合類和派生類。另外本設(shè)計(jì)題目要讓學(xué)生進(jìn)一步掌握和理解類模板的技術(shù)及其實(shí)現(xiàn)方法
5、。2.程序詳細(xì)代碼及描述(1)/cpp1.h頭文件#if !defined(cpp1_h)#define cpp1_h#include #include class pointdouble x,y;public:point(double=0,double=0);point(point&);void display()coutx=x,y=yendl;double distance(point&);double getx()return x;double gety()return y;point();struct cowint color;int width;class linepoint a,b
6、;cow cw;public:line(point&,point&,cow&);double display(line&);line(line&);line();#endif(2)/cpp1.cpp文件#include cpp1.hpoint:point(double a,double b):x(a),y(b)cout調(diào)用point的構(gòu)造函數(shù)endl;point:point(point&a)x=a.x;y=a.y;cout調(diào)用point復(fù)制函數(shù)endl;point:point()coutdelete pointx yendl;double point:distance(point&a)retu
7、rn sqrt(x-a.x)*(x-a.x)+(y-a.y)*(y-a.y);line:line(point&a1,point&a2,cow&a3):a(a1),b(a2),cw(a3)cout調(diào)用line的構(gòu)造函數(shù)endl;line:line(line&s):a(s.a),b(s.b),cw(s.cw)cout調(diào)用line的復(fù)制構(gòu)造函數(shù)endl;line:line()coutdelete lineendl;double line:display(line&a)a.a.display();a.b.display();coutcolor=a.cw.color,width=a.cw.widthen
8、dl;double x=a.a.getx()-a.b.getx();double y=a.a.gety()-a.b.gety();return sqrt(x*x+y*y);void main()point a;point b(5.2,11.8),c(38.9,85.6)a=c;cout兩點(diǎn)之距為:a.distance(b)endl;cow cw=3,5;line s(a,b,cw);line s1(s);couts1.display(s1)endl;使用模板的方法(1)/cpp11.h文件#if !defined(cpp11_h)#define cpp11_h#include #include
9、 /聲明point類template class pointt x,y;public:point(t=0,t=0);point(point&);void display()coutx=x,y=yendl;t distance(point&);point();t getx()return x;t gety()return y;/聲明結(jié)構(gòu)struct cowint color;int width;/實(shí)現(xiàn)point類template point:point(t a,t b):x(a),y(b)cout調(diào)用point的構(gòu)造函數(shù)endl;template point:point(point&a)x=a.
10、x;y=a.y;cout調(diào)用point的復(fù)制構(gòu)造函數(shù)endl;template t point:distance(point&a)return sqrt(x-a.x)*(x-a.x)+(y-a.y)*(y-a.y);template point:point()coutdelete pointx yendl;/聲明line類template class linepoint a,b;cow cw;public:line(point&,point&,cow&);line(line&);t display(line&);line();/實(shí)現(xiàn)line類template line:line(point&a
11、1,point&a2,cow&a3):a(a1),b(a2),cw(a3)cout調(diào)用line的構(gòu)造函數(shù)endl;template line:line(line&s):a(s.a),b(s.b),cw(s.cw)cout調(diào)用line的復(fù)制構(gòu)造函數(shù)endl;template line:line()coutdelete lineendl;template t line:display(line&a)a.a.display();a.b.display();t x=a.a.getx()-a.b.getx();t y=a.a.gety()-a.b.gety(); return sqrt(x*x+y*y)
12、;#endif(2)/cpp11.cpp文件#include cpp13.hvoid main()point a; point b(5.2,11.8),c(38.9,85.6)a=c;cout兩點(diǎn)之距為:a.distance(b)endl;cow cw=3,5;lines(a,b,cw);line s1(s);couts1.display(s1)endl;使用繼承的方法(1)cpp13.h文件#if !defined(pp13_h)#define cpp13_h#include #include /using namespace std;class pointdouble x,y;public
13、:point(double=0,double=0);point(point&);void display()coutx=x,y=yendl;double distance(point&);point()coutdelete pointx yendl;double getx()return x;double gety()return y;struct cowint color;int width;class line:public pointdouble x2,y2;cow cw;public:line(double,double,double,double,cow&);line(line&);
14、double display(line&);line()coutdelete lineendl;#endif(2)cpp13.cpp文件#includecpp13.hpoint:point(double a,double b):x(a),y(b)cout調(diào)用point的構(gòu)造函數(shù)endl;point:point(point&a)x=a.x;y=a.y;cout調(diào)用point的復(fù)制構(gòu)造函數(shù)endl;inline double point:distance(point&a)return sqrt(x-a.x)*(x-a.x)+(y-a.y)*(y-a.y);line:line(double a1,d
15、ouble a2,double a3,double a4,cow&c):point(a1,a2),x2(a3),y2(a4),cw(c)cout調(diào)用line的構(gòu)造函數(shù)endl;line:line(line&s):point(s),x2(s.x2),y2(s.y2),cw(s.cw)cout調(diào)用line的復(fù)制構(gòu)造函數(shù)endl;double line:display(line&a)point:display();coutx2=x2,y2=y2endl;coutcolor=a.cw.color,width=a.cw.widthendl;double x=x2-getx();double y=y2-g
16、ety();return sqrt(x*x+y*y);void main()point a;point b(5.2,11.8),c(38.9,85.6);a=c;cout兩點(diǎn)之距為:a.distance(b)endl;cow cw=3,5;line s(5.2,11.8,38.9,85.6),cw);line s1(s);couts1.display(s1)endl;cout基類對(duì)象的屬性endl;a.display();a=s;cout派生類的對(duì)象賦給基類對(duì)象endl;a.display();cout派生類的對(duì)象賦給基類的指針:endl;point &d=s1;d.display();使用模
17、板繼承的方法(1)cpp14.h文件#if !defined(cpp14_h)#define cpp14_h#include #include template class pointt x,y;public:point(t=0,t=0);point(point&);void display()coutx=x,y=yendl;double distance(point&);t getx()return x;t gety()return y;point()coutdelete pointx yendl;template point:point(t a,t b):x(a),y(b)cout調(diào)用po
18、int的構(gòu)造函數(shù)endl;template point:point(point&a)x=a.x;y=a.y;cout調(diào)用point的復(fù)制構(gòu)造函數(shù)endl;template double point:distance(point&a)return sqrt(x-a.x)*(x-a.x)+(y-a.y)*(y-a.y);struct cowint color;int width;template class line:public pointt x2,y2;cow cw;public:line(t,t,t,t,cow&);line(line&);double display(line&);line
19、()coutdelete lineendl;template line:line(t a1,t a2,t a3,t a4,cow&c):point(a1,a2),x2(a2),y2(a4),cw(c)cout調(diào)用line的構(gòu)造函數(shù)endl;template line:line(line&s):point(s),x2(s.x2),y2(s.y2),cw(s.cw)cout調(diào)用line的復(fù)制構(gòu)造函數(shù)endl;template double line:display(line&a)point:display();coutx2=x2,y2=y2endl;coutcolor=a.cw.color,wid
20、th=a.cw.widthendl;double x=x2-getx();double y=y2-gety();return sqrt(x*x+y*y);#endif(2)cpp14.cpp文件#include cpp14.hvoid main()pointa;point b(7.8,9.8),c(34.5,67.8);a=c;cout兩點(diǎn)之距為:a.distance(b)endl;cow cw=3,5;lines(7.8,9.8,34.5,67.8,cw);lines1(s);couts1.display(s1)endl;cout基類的對(duì)象屬性:endl;a.display();a=s;co
21、ut派生類對(duì)象賦給基類對(duì)象:endl;a.display();cout派生類指針賦給基類指針:endl;point*p=&s1;p-display();cout基類對(duì)象引用派生類對(duì)象:endl;point &d=s1;d.display();4.運(yùn)行結(jié)果及分析(1)用包含的方法構(gòu)成的新類(2)使用模板的方法構(gòu)成的新類(3) 通過繼承的方法構(gòu)成的新類(4) 通過模板繼承的方法構(gòu)成的新類程序完成了實(shí)驗(yàn)要求。第二題 人員信息管理系統(tǒng)1. 設(shè)計(jì)思路本題目的任務(wù)是設(shè)計(jì)一個(gè)人員信息管理系統(tǒng),并使用虛函數(shù)實(shí)現(xiàn)多態(tài)性,完成顯示不同人員信息的任務(wù)。設(shè)計(jì)employee類,用來存儲(chǔ)雇員的編號(hào),級(jí)別,月薪等信息,能
22、夠?qū)ζ溥M(jìn)行操作和顯示。以employee為基類派生出technician類,表示兼職技術(shù)人員,以及manager類,表示經(jīng)理,以及salesman類,表示兼職推銷員。利用manage類和salesman類派生出salesmanager類,表示銷售經(jīng)理。注意使用虛基類。2.程序詳細(xì)代碼及描述#include #include #include #include /全局?jǐn)?shù)據(jù),對(duì)象double managersalary; /經(jīng)理固定月薪double salesmanagersalary; /銷售經(jīng)理固定月薪double salesmanagerpercent; /銷售經(jīng)理提成double sale
23、spercent; /兼職推銷員提成double wageperhour; /兼職技術(shù)人員小時(shí)工資int id; /員工標(biāo)識(shí)class employee /員工類protected: int no; /編號(hào) char name20; /姓名 int birthday; /生日 char specialty20; /特長(zhǎng) char bloodtype; /血型 int attend; /加入公司時(shí)間 int duty; /崗位 double earning; /收入 employee *next;public: employee(char id,char *name,int duty) this
24、-duty=duty; strcpy(this-name,name); this-no=id; virtual void calcsalary()=0; virtual void output()=0; friend class company;class manager:public employee /經(jīng)理類public: manager(char id,char *name,int duty):employee(id,name,duty) void calcsalary()earning=managersalary; void output() calcsalary(); coutnot
25、namet經(jīng)理tearningendl; ;class salesmanager:public employee /銷售經(jīng)理類private: double amount;public: salesmanager(char id,char *name,int duty):employee(id,name,duty) void setamount(double s) amount=s; void calcsalary() earning=salesmanagersalary+amount*salesmanagerpercent/100; void output() calcsalary(); c
26、outnotnamet銷售經(jīng)理tearningt=t; double gett() return t; void sett(double t) this-t=t; void calcsalary() earning=wageperhour*t; void output() calcsalary(); coutnotnamet兼職技術(shù)人員tttearningamount=amount; double getamount() return amount; void setamount(double amount) this-amount=amount; void calcsalary() earn
27、ing=salespercent/100*amount; void output() calcsalary(); coutnotnamet兼職推銷員tamounttearningnext; delete worker; worker=p; worker=0; void add(); /增加人員 void delete(); /刪除人員 void modify(); /修改人員 void query(); /查詢?nèi)藛T void set(); /基礎(chǔ)數(shù)據(jù)設(shè)置 void save(); /數(shù)據(jù)存盤 void load(); /數(shù)據(jù)載入; void company:clear() /清除內(nèi)存中人員數(shù)據(jù)
28、 employee *p=worker; while(p) worker=p-next; delete p; p=worker; void company:add() employee *p; /新結(jié)點(diǎn)指針 int duty; char name20; int birthday; char specialty20; char bloodtype; int attend; double amount,t; coutn# 新增員工 #n; /輸入員工信息 id+; coutduty; coutname; coutbirthday; coutspecialty; coutbloodtype; cou
29、tattend; if(duty=3) coutamount; else if(duty=4) coutt; /創(chuàng)建新員工結(jié)點(diǎn) switch(duty) case 1:p=new manager(id,name,duty); break; case 2:p=new salesmanager(id,name,duty); break; case 3:p=new salesman(id,name,duty,amount); break; case 4:p=new technician(id,name,duty,t); break; p-next=0; /員工結(jié)點(diǎn)加入鏈表 if(worker) /若
30、已經(jīng)存在結(jié)點(diǎn) employee *p2; p2=worker; while(p2-next) /查找尾結(jié)點(diǎn) p2=p2-next; p2-next=p; /連接 else /若不存在結(jié)點(diǎn)(表空) worker=p; /連接 void company:delete() /刪除人員 int no; coutn# 刪除員工 #n; coutno; /查找要?jiǎng)h除的結(jié)點(diǎn) employee *p1,*p2; p1=worker; while(p1) if(p1-no=no) break; else p2=p1; p1=p1-next; /刪除結(jié)點(diǎn) if(p1!=null) /若找到結(jié)點(diǎn),則刪除 if(p1
31、=worker) /若要?jiǎng)h除的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) worker=p1-next; delete p1; else /若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn) p2-next=p1-next; delete p1; cout找到并刪除n; else /未找到結(jié)點(diǎn) cout未找到此員工!n;void company:modify() int no,duty; char name20; int birthday; char specialty20; char bloodtype; int attend; double amount,t; coutn# 修改員工 #n; coutno; /查找要修改的結(jié)點(diǎn) employ
32、ee *p1,*p2; p1=worker; while(p1) if(p1-no=no) break; else p2=p1; p1=p1-next; /修改結(jié)點(diǎn) if(p1!=null) /若找到結(jié)點(diǎn) p1-output(); coutduty; if(p1-duty!=duty) /若崗位發(fā)生變動(dòng) coutname; if(duty=3) coutamount; else if(duty=4) coutt; /創(chuàng)建新員工結(jié)點(diǎn) employee *p3; switch(duty) case 1:p3=new manager(p1-no,name,duty); break; case 2:p
33、3=new salesmanager(p1-no,name,duty); break; case 3:p3=new salesman(p1-no,name,duty,amount); break; case 4:p3=new technician(p1-no,name,duty,t); break; /員工結(jié)點(diǎn)替換到鏈表 p3-next=p1-next; if(p1=worker) /若要替換的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) worker=p3; else /若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn) p2-next=p3; /刪除原來的員工結(jié)點(diǎn) delete p1; else /若崗位沒有變動(dòng) coutp1-name; cinp1-birthday; cinp1-specialty; cinp1-bloodtype; cinp1-attend; if(duty=3) coutamount; (salesman *)p1)-setamount(amount); else if(duty=4) coutt; (technician *
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆醫(yī)科大學(xué)《三維動(dòng)畫MAYA》2023-2024學(xué)年第一學(xué)期期末試卷
- 石家莊財(cái)經(jīng)職業(yè)學(xué)院《大學(xué)語(yǔ)三》2023-2024學(xué)年第二學(xué)期期末試卷
- 安徽藝術(shù)職業(yè)學(xué)院《無線通信網(wǎng)絡(luò)規(guī)劃與優(yōu)化》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川傳媒學(xué)院《影視欄目包裝專題設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣西壯族河池市金城江區(qū)2024-2025學(xué)年數(shù)學(xué)四下期末綜合測(cè)試模擬試題含解析
- 馬鞍山職業(yè)技術(shù)學(xué)院《材質(zhì)渲染綜合應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國(guó)2025年黃金產(chǎn)業(yè)布局:供需兩端驅(qū)動(dòng)產(chǎn)業(yè)升級(jí)
- 丙烷管道跨接施工方案
- 上海市浦東新區(qū)2024-2025學(xué)年八年級(jí)(上)月考生物試卷(12份)(含解析)
- 路燈安裝工程施工方案
- 2024年高考英語(yǔ)新課標(biāo)1卷讀后續(xù)寫教學(xué)設(shè)計(jì)
- 河南省洛陽(yáng)市瀍河回族區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末語(yǔ)文試題
- SLT 478-2021 水利數(shù)據(jù)庫(kù)表結(jié)構(gòu)及標(biāo)識(shí)符編制總則
- 【異丙苯法生產(chǎn)苯酚的工藝設(shè)計(jì)18000字(論文)】
- 題庫(kù)基本(計(jì)算機(jī)硬件技術(shù)基礎(chǔ)-題庫(kù))
- 安全生產(chǎn)管理人員職責(zé)與勝任力
- 復(fù)調(diào)音樂巡禮-巴赫勃蘭登堡協(xié)奏曲 課件-2023-2024學(xué)年高中音樂人音版(2019)必修音樂鑒賞
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》考試參考題庫(kù)120題(含答案)
- 2024新人教版初中英語(yǔ)單詞表匯總(七-九年級(jí))中考復(fù)習(xí)必背
- 汽車維修保養(yǎng)工作質(zhì)量考核表
- 應(yīng)急救援專項(xiàng)方案
評(píng)論
0/150
提交評(píng)論