計算機(jī)計算機(jī)及應(yīng)用課程實驗_第1頁
計算機(jī)計算機(jī)及應(yīng)用課程實驗_第2頁
計算機(jī)計算機(jī)及應(yīng)用課程實驗_第3頁
計算機(jī)計算機(jī)及應(yīng)用課程實驗_第4頁
計算機(jī)計算機(jī)及應(yīng)用課程實驗_第5頁
已閱讀5頁,還剩114頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

自考C++實踐試題

202X.9B卷

1.建設(shè)一個工廠的治理軟件經(jīng)理工資=根本工資+分紅治理者工資=根本工資+

工程提成員工工資=根本工資+補(bǔ)助,假設(shè)工廠的全部收益都來自于工程

2.生成一個Employee基類,有純虛函數(shù)Calculate計算每個員工的工資,全部人

的根本信息,工廠有三類人Leader,Manager,Worker,

重載>>操作符(用cin輸入員工信息)

3.有個員工查詢系統(tǒng),治理每個員工信息和工資,能夠查詢每一類人的總工資和此

類人工資占總收益的比例

4.工程類包含工程的名稱,工程負(fù)責(zé)人,工程資金,工程收益,工程起始時間,

工程結(jié)束時間

有個工程治理系統(tǒng),用來查詢工程負(fù)責(zé)人的負(fù)責(zé)工程(一人可能負(fù)責(zé)多個工程)

5.有個輸入治理系統(tǒng),從在>>操作符或用cin輸入員工信息和工程信息,并將員

工的信息和工資情況打印出來,格式自定,要求清楚

6.設(shè)計main函數(shù),在main中調(diào)用

202X.9.13(AB)

A卷

請完成一個隊列,既可以存放整數(shù),又可以存放字符串。簡單的說,隊列是一種

數(shù)據(jù)結(jié)構(gòu),按照先進(jìn)先出的順序治理進(jìn)、出隊列的元素。此題要求完成:

(1)完成描述隊列的類Queue,其中定義了隊列的大小Size(即隊列中可

以存放的元素個數(shù)),并包含進(jìn)隊列函數(shù)Add,出隊列函數(shù)Pop、顯示隊列頭部

元素的函數(shù)getFirst和顯示隊列尾部元素的函數(shù)getLast.

(2)定義基類Element,至少包含純虛函數(shù)ShowMe.

13)從基類Element中派生整數(shù)類Mylnteger和字符串類MyString,具體

完成上述純虛函數(shù)ShowMe,顯示該元素的類型和相應(yīng)的值。

(4)重載輸入">>”操作符,使得可以通過cin直接讀入上述整數(shù)類和字

符串類的對象值。重載輸出“<<”操作符,使得可以通過cout直接輸出上述整

數(shù)類和字符串類的對象值。

(5)編寫main函數(shù),測試上述所要求的各種功能,

B卷

學(xué)生成績治理系統(tǒng)可以方便老師治理學(xué)生的成績記錄,請完成一個簡易成績治理

系統(tǒng)。具體要求如下:

(1)完成一個治理類Managementsystem。要能添加、刪除和查詢學(xué)生記錄。

(2)完成基類Student,至少包含純虛函數(shù)showPerformance。

(3)完成類本科生Undergraduate和研究生Graduate,它們繼承自基類

Studento本科生的成績單上有數(shù)學(xué)、物理、英語、計算機(jī)等課的成績;

研究生有軟件工程、網(wǎng)絡(luò)實習(xí)、體系結(jié)構(gòu)等課的成績。并具體完成

showPerformance,輸出學(xué)生的各科成績。

(4)重載“<<”操作符,使得可以通過cout直接輸出學(xué)生成績。

(5)編寫main函數(shù),測試上述要求的全部功能。

202XA

奇數(shù)題目:

X大學(xué)要舉辦一次趣味射箭比賽。請依據(jù)題目要求完成簡單的比賽計分程序:

1、比賽規(guī)則如下:50M開外的三塊目標(biāo)板,上面分別是同心園靶、10個氣球

和一張怪物面具。每位選手有5次射箭時機(jī),得分依據(jù)每一次的表現(xiàn)累加獲得。

2、設(shè)計出計分系統(tǒng)計算每位選手最后的得分:定義描述選手的類Comperitor,

其中包含有3個從Board基類派生來的派生類,分別是Target,Balloon,

Masko還應(yīng)包含有選手姓名(string),編號(int)、一個用于計算總得分的

函數(shù)getTotalScore。和用于顯示3個目標(biāo)板命中情況的函數(shù)showDetail().

3、三個目標(biāo)板的分?jǐn)?shù)計算方法如下

Target:10個同心圓,命中中心環(huán)為10分,命中次外環(huán)為9分,依次類推,

最外環(huán)以外為。分。

Balloon:共有10顆球。命中一個得一分。

Mask:最多只能命中一次,屢次命中按一分算。中得3分,不中0分。

4、重載輸入操作符">>",使得可以通過cin直接讀入每位選手的相應(yīng)信息。要

求game.exe能給出適當(dāng)?shù)妮斎敫袷教崾尽?/p>

5、編寫main函數(shù),測試上述所要求的各種功能,提示:基類Board的定義至

少包含一下純虛函數(shù)getScore

classBoard

{//……

public:

virtualintgetSocre()=0;

//……

偶數(shù)題:

1、比賽規(guī)則如下:50M開外的三塊目標(biāo)板,上面分別是同心園靶、10個氣球

和一張怪物面具。每位選手有5次射箭時機(jī),得分依據(jù)每一次的表現(xiàn)累加獲得。

2、設(shè)計出計分系統(tǒng)計算每位選手最后的得分:定義描述選手的類Comperitor,

其中包含有3個從Board基類派生來的派生類,分別是Target,Balloon,

Masko還應(yīng)包含有選手姓名(string),編號(int)、一個用于計算總得分的

函數(shù)getTotalScore。和用于顯示3個目標(biāo)板命中情況的函數(shù)showDetail。.

3、三個目標(biāo)板的分?jǐn)?shù)計算方法如下

Target:10個同心圓,命中中心環(huán)為10分,命中次外環(huán)為9分,依次類推,

最外環(huán)以外為0分。

Balloon:共有10顆球。命中一個得一分。

Mask:最多只能命中一次,屢次命中按一分算。中得3分,不中0分。

4、定義一個排名類Rank,依據(jù)自己的情況定義一個數(shù)據(jù)結(jié)構(gòu)來包含3個參賽

選手并完成依據(jù)總得分的排位顯示功能。顯示格式如下:

RankNoNameScore

15Obama18

29McCain13

32Hilary11

5、重載輸入操作符">>",使得可以通過cin直接讀入每位選手的相應(yīng)信息。要

求game.exe能給出適當(dāng)?shù)妮斎敫袷教崾尽?/p>

6、編寫main函數(shù),測試上述所要求的各種功能,提示:基類Board的定義至

少包含一下純虛函數(shù)getScore

classBoard

{//……

public:

virtualintgetSocre()=0;

【實驗編號】1

【實驗名稱】數(shù)據(jù)類型與表達(dá)式

【實驗?zāi)康摹?/p>

(1)掌握C++言語數(shù)據(jù)類型,熟悉如何定義變量,以及對它們賦值

的方法;

(2)學(xué)會使用C++有關(guān)算術(shù)運算符,以及包含這些運算符的表達(dá)式;

(3)熟悉C++程序的結(jié)構(gòu),以及C++程序的編輯、編譯、連接和運行

的過程。

【實驗內(nèi)容和步驟】include<iostream>

usingnamespacestd;

intmain()

(

inta,b;

charcl/c2;

cin?a?b;

cl=++a;

c2=b++;

cout?,,cl=,,?cl?M,c2=H?c2?endl;

return0;

)

include<iostream>

usingnamespacestd;

intmain()

(

",,,,,

charcl=C/c2=+/c3=+;

cout?"l

cout?"\t\t"?"Hesays:\HC++isveryinteresting!\,,,'?"\n,';

return0;

)

include<iostream>

usingnamespacestd;

intmain()

int

i=8;

j=10;

m=i+++j++;

n=(i++)+(j++)+m;

cout?++i?,\t,?++j?,\t'?++m?,\t,?++n?endl;

return0;

)

include<iostream>

usingnamespacestd;

intmain()

(

charcl,c2,c3,c4,c5;

cl=,C,;c2=,h,;c3=,i,;c4=,n,;c5=,a,;

cl=cl+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;

cout?cl?c2?c3?c4?c5?endl;

return0;

)

【實驗結(jié)果】

9797

c1-b,c2=a

Isay:℃++MHesays:"C++isueryinteresting?

請按任意鍵繼續(xù)...

lii13193,J圈

Glnre

請按任意鍵繼續(xù)...

【實驗編號】2

【實驗名稱】C++程序設(shè)計初步

【實驗?zāi)康摹?/p>

(1)掌握簡單的C++程序的編寫和調(diào)試方法;

(2)掌握C++程序中使用最多的語句一賦值語句和輸入輸出的使用

方法;

(3)掌握結(jié)構(gòu)化程序的三種根本結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)

構(gòu))在C++中的完成。

【實驗內(nèi)容和步驟】

include<iostream>

usingnamespacestd;

intmain()

{

floatx,y;

cin?x;

if(x<l){

y=x;

)

elseif(x<10&x>=l){

y=2Xx-l;

)

elseif(x>=10)

(

y=3Xx-U;

)

cout?y?endl;

return0;

)

include<iostream>

include<cmath>

usingnamespacestd;

intmainO{

floata,xO,xl;

cout?/zenterapositivenumber:";

cin?a;

x0=a/2;

xl=(xO+a/xO)/2;

while(fabs(x0-xl)>=le-5){

xO=xl;

xl=(x0+a/x0)/2;

)

cout?,zThesquareroot'<<a?''<<"is"?’,?xl?endl;

return0;

)

include<iostream>

usingnamespacestd;

intmainO{

inti,a,n,s;

intklOO];

for(a=2;a<=1000;a++)

(

n=0;

s=a;

for(i=l;i<a;i-H-)

if((a%i)==0){

n++;

s=s-i;

kn]=i;

)

if(s=0)

{

cout?a?*,

cout?*itsfactorsare:";

for(i=l;i<n;i++)

cout?ki]?*

cout?kn]?endl;

)

)

return0;

)

include<iostream>

include<cmath>

usingnamespacestd;

intmain(){

inti,j,p;

for(i=0;i<=3;i++)

(

for(p=0;p<3-i;p++)

cout?,';

for(j=0;j<=2Xi;j++)

cout?"X";cout?endl;}

for(i=0;i<=2;i++)

(

for(p=0;p<=i;p++)

cout?*';

for(j=0;j<=4-2Xi;j++)

cout?"X";

cout?endl;

)

return0;

)

include<iostream>

usingnamespacestd;

intmain(){

chari,j,k;

for(i='X';i<=1:;i++)

for(j=XJ;j<=,Z,;j++)

if(i!=j)

for(k=,X,;k<=,Z,;k++)

if(i!=j&&j!=k)

if(i!=X'&&k!='X'&&k!=Z'&&i!=k)

cout?"A—"<<i?"B—"?j?"C—"?k?endl;

return0;

)

【實驗結(jié)果】

:一「;;;:---

enterapositivenumber:2

Thesquarerootof2is1.41421

6,itsfactorsare:123

28.itsfactorsare24714

496,itsfactorsare:1248163162124248

請按任意鍵繼續(xù)..?

【實驗編號】3

【實驗名稱】函數(shù)與預(yù)處理

【實驗?zāi)康摹?/p>

(1)熟悉定義函數(shù)的方法、函數(shù)實參與形參的對應(yīng)關(guān)系以及“值傳

遞”的方法;

(2)熟悉函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法;

(3)熟悉全局變量、局部變量概念和使用方法;

[4)熟悉編譯預(yù)處理的應(yīng)用;

(5)掌握多文件的程序的編譯和運行的方法。

【實驗內(nèi)容和步驟】

include<iostream>

include<cmath>

usingnamespacestd;

intprimedntm)

(

inti;doublek;k=sqrt(m);

for(i=2;i<=k;i++)

(

if(m%i—0)break;

)

if(i>k)return1;

elsereturn0;

)

voidgo(intn)

(

inta,b;

for(a=3;a<=n/2;a=a+2)

if(prime(a))

b=n-a;

if(prime(b))

cout?n?"="?a?"+"?b?endl;

)

)

}

intmain()

(

intn;

cout?/zinputn:";

cin?n;

go(n);

return0;

)

include<iostream>

include<cmath>

usingnamespacestd;

voidhanoi(intn,charone,chartwo,charthree)

(

voidmove(charx,chary);

if(n—1)move(one,three);

else{

hanoi(n-1,one,three,two);

move(one,three);

hanoi(n-1,two,one,three);

}

voidmove(charx,chary){

cout?x?^-->“<<y〈<endl;

)

intmainO

(

intm;

cout?/zinputthenumberofdisks:";

cin?m;

cout?”Thestepsofmoving/z?m?/zdisks:/z?endl;

hanoi(m,'A','B','C');

return0;

}

include<iostream>

include<cmath>

usingnamespacestd;

intpower(intx,inty)

(

intz,i;z=l;

for(i=l;i<=y;i++)

(

z=zXx;

)

returnz;

)

intmain()

(

inta,m;intb=2;

cout<<”請輸入整數(shù)a:”;

cin?a;

cout<<"請輸入整數(shù)m:”;

cin?m;

cout?/zaXb=*?aXb?endl;

cout?/za的m次方為“〈〈power(a,m)?endl;

return0;

【實驗結(jié)果】

inputn:34

34=3+31

34=5+29

34=11+23

34=17+17

請按任意鍵繼續(xù).

inputthenumberofdisks:4

Thestepsofnouing4disks:

A—>B

fi->C

p—>C

fi->B

C—>A

0—>B

fi—>B

p—>C

B—>C

B—>A

C—>A

B—>C

fi—>B

fi—>C

B—>C

蓍按任意鍵繼續(xù)...■

【實驗編號】4

【實驗名稱】數(shù)組

【實驗?zāi)康摹?/p>

(1)掌握一位數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;

(2)掌握字符數(shù)組和字符串函數(shù)的使用;

13)掌握與數(shù)組有關(guān)的算法(特別是排序算法)。

【實驗內(nèi)容和步驟】

include<iostream>

usingnamespacestd;

intmain()

(

intalO];intmin,t;

for(inti=0;i<=9;i++)

cin?ai];

for(intj=0;j<=9;j++)

{min=j;

for(intk=j+l;k<=9;k++)

if(ak]<amin])min=k;

t=aj];aj]=amin];amin]=t;}

for(intq=0;q<=9;q++)

cout?aq]??';

return0;}

include<iostream>

usingnamespacestd;

intmain()

(

constintn=15;

inti,number,top,bott,mid,loca,an];

boolflag=true,sign;

charc;

cout?/zenterdata:/z?endl;

cin?aO];

i=l;

while(i<n){

cin?ai];

if(ai]<=ai-l])i++;

else

cout?/zenterthisdataagain:";

)

cout?endl;

for(i=0;i<n;i++)

cout?ai]?/z

cout?endl;while(flag)

(

cout?”inputnumbertolookfor:";

cin?number;

sign=false;top=0;bott=n-l;

if((number>aO])||(number<an-l]))loca=-l;

while((!sign)&&(top<=bott))

mid=(bott+top)/2;

if(number=amid]){

loca=mid;cout?"Find”<〈number<<”,itspositioniszr?loca+l?endl;

sign=true;

)

elseif(number>amid])

bott=mid-l;

elsetop=mid+l;

)

if(!sign||loca==-l)

cout?number?^hasnotfound./z?endl;

cout<<*00111inueornot(Y/N);

cin?c;

if(c==,N'||c==,n)

flag=false;

)

return0;

)

【實驗結(jié)果】

6758942-9-7065

-9-70245896567請按任意鍵繼續(xù)?.?

enterdata:

151413121110987654321

151413121110987654321

inputnumbertolookfor:14

Find14,itspositionis2

continueornot<¥/N>?y

inputnumbertolookfor:89

89hasnotfound,

continueornot<V/N>?n

請按任意鍵繼續(xù)...?

【實驗編號】5

【實驗名稱】指針

【實驗?zāi)康摹?/p>

(1)通過實驗進(jìn)一步掌握指針的概念,會定義和使用指針變量;

(2)能正確使用數(shù)組的指針和指向數(shù)組的指針變量;

(3〕能正確使用字符串的指針和指向字符串的指針變量;

(4)能正確使用引用型變量。

【實驗內(nèi)容和步驟】

include<iostream>

usingnamespacestd;

intmainO{

voidswap(intXpl,intXp2);

intnl,n2,n3,Xpl,Xp2,Xp3;

cout?zrinputthreeintegers:*;

cin?nl?n2?n3;

pl=&nl;p2=&n2;p3=&n3;

if(nl>n2)swap(pl,p2);

if(nl>n3)swap(pl,p3);

if(n2>n3)swap(p2,p3);

cout?*theorderis:〃?nl<<""<<n2<<"*?n3?endl;

return0;

voidswap(intXpl,intXp2)

intp;

p=Xpl;Xpl=Xp2;Xp2=p;

include<iostream>

usingnamespacestd;

intmain(){

inti,k,m,n,num50],Xp;

cout?z'inputnumberofperson:n=^;

cin?n;

p=num;

for(i=0;i<n;i++)

X(p+i)=i+l;

i=0;k=0;m=0;

while(m<n-l){

if(X(p+i)!=0)k++;

if(k==3){

X(p+i)=0;

k=0;

m++;

)

i++;

if(i==n)i=0;}

while(Xp=0)p++;

cout?”ThelastoneisNO."z?Xp?endl;

return0;

)

include<iostream>

usingnamespacestd;

voidinput(intXnumber)

(

inti;

cout?^input10numbers:";

for(i=0;i<10;i++)

cin?numberi];

)

voidoutput(intXnumber)

(

intXp;

cout?z,theyare:

for(p=number;p<number+10;p++)

cout?Xp?"〃;

cout?endl;

)

intmainO{

intnumberlO];

input(number);

output(number);

}

include<iostream>

include<string.h>

usingnamespacestd;

voidsort(chars]6]){

inti,j;

charXp,temp101;

p=temp;

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(strcmp(sj],sj+l])>0)

strcpy(p,sj]);

strcpy(sj],sj+1]);

strcpy(sj+l],p);

)

)

intmain(){

inti;charstr10]6];

cout?/zinput10strings:/z?endl;

for(i=0;i<10;i++)

cin?stri];

sort(str);

cout?/zthesequenceis:*?endl;

for(i=0;i<10;i++)

cout?stri]?endl;

return0;

)

【實驗結(jié)果】

inputthreeintegers:563

theorderis:356

請按任意鍵繼續(xù)...

inputnumberofperson:n=8

thelastoneisNO.?

請按任意鍵繼續(xù)...

input10numbers:123456789876

theyare:123456789876

請按任意鍵繼續(xù)...■

input10strings:

cat

pig

dog

hit

she

fat

fit

tap

top

hot

thesequenceis:

cat

dog

fat

fit

hit

hot

pig

she

tap

top

請按任意鍵繼續(xù)..

【實驗編號】6

【實驗名稱】自定義數(shù)據(jù)類型&類和對象

【實驗?zāi)康摹?/p>

(1)掌握結(jié)構(gòu)體類型變量的定義和使用;

(2)掌握結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用;

(3)了解鏈表的概念,初步學(xué)會對簡單的鏈表進(jìn)行操作。

(4)掌握聲明類的方法,類和類的成員的概念以及定義對象的方法;

(5)初步掌握用類和對象編制基于對象的程序;

(6)學(xué)習(xí)檢查和調(diào)試基于對象的程序。

【實驗內(nèi)容和步驟】

include<iostream>

usingnamespacestd;

struct{

intyear;intmonth;intday;

}date;

intmain(){

intdays;

cout?z'inputyear,month,day:;

cin?date.year?date,month?date.day;

switch(date,month)

(

case1:days=date.day;break;

case2:days=date.day+31;break;

case3:days=date.day+59;break;

case4:days=date.day+90;break;

case5:days=date.day+120;break;

case6:days=date.day+151;break;

case7:days=date.day+181;break;

case8:days=date.day+212;break;

case9:days=date.day+243;break;

case10:days=date.day+273;break;

case11:days=date.day+304;break;

case12:days=date.day+334;break;

)

if(((date.year%4==0&&date.year%100!=0)||date.year%400==0)&&da

te.month>=3)

days+=l;

cout?date.month?z*/>y?date.day?>risthe"<<days〈<"thdayin

"〈〈date.year。"."<<endl;

return0;

)

include<iostream>

usingnamespacestd;

classBox{

public:

voidget_value();

floatvolume();

voiddisplay();

private:

floatlength;

floatwidth;

floatheight;

);

voidBox::get_value()

{cout?”pleaseinputlength,width,height:";

cin?length?width?height;

J

floatBox::volume(){

return(lengthXheightXwidth);

)

voidBox::display(){cout?volume()?endl;

}

intmain(){

Boxboxl,box2,box3;

boxl.get_value();

cout?z'volumeofboxlis

boxl.display();

box2.get_value();

cout?z'volumeofbox2is

box2.display();

box3.get_value();

cout<<"volumeofbox3is

box3.display();

return0;

【實驗結(jié)果】

inputyear,nonth,day:199995

9/5isthe248thdayin1999.

請按任意鍵繼續(xù)...

pleaseinputlength,width,height:102030

volumeofboxlis6000

pleaseinputlength,width,height:451020

uoluneofbox2is9000

pleaseinputlength,widthsheight:403012

uoluneo£box3is14400

,按任意鍵繼續(xù)..,.

【實驗編號】7

【實驗名稱】運算符重載

【實驗?zāi)康摹?/p>

(1)進(jìn)一步了解運算符重載的概念和使用方法;

(2)掌握幾種常用的運算符重載的方法;

(3)了解轉(zhuǎn)換構(gòu)造函數(shù)的使用方法。

(4)了解在VisualC++6.0環(huán)境下進(jìn)行運算符重載要注意的問題。

【實驗內(nèi)容和步驟】

include<iostream>

usingnamespacestd;

classComplex

{public:

Complex(){real=0;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

doubleget_real();doubleget_imag();voiddisplay();

private:doublereal;doubleimag;

);

doubleComplex::get_real(){returnreal;}

doubleComplex::get_imag(){returnimag;}

voidComplex::display(){cout?^(*?real?^,^?imag?^i)^?endl;}

Complexoperator+(Complex&cl,Complex&c2)

{return

Complex(cl.get_real()+c2.get_real(),cl.get_imag()+c2.get_imag());}

intmain(){

Complexcl(3,4),c2(5,-10),c3;

c3=cl+c2;

cout〈〈"c3=";

c3.display();

return0;

)

include<iostream>

include<string.h>

usingnamespacestd;

classStudent{

public:Student(int,char],char,float);

intget_num(){returnnum;}

charXget_name(){returnname;}

charget_sex(){returnsex;}

voiddisplay()

{cout〈<"num:"<〈num〈<“\nname:"<<name<〈”\nsex:"<<sex<〈”\nscore:"<<scor

e?"\n\n";}

private:intnum;charname20];charsex;floatscore;};

Student::Student(intn,charnam],chars,floatsco)

{num=n;strcpy(name,nam);sex=s;score=sco;

)

classTeacher{public:Teacher(){}

Teacher(Student&);Teacher(intn,charnam],charsex,floatpay);

voiddisplay();

private:intnum;charname20];charsex;floatpay;};

Teacher::Teacher(intn,charnam],chars,floatp){

num=n;strcpy(name,nam);sex=s;pay=p;}

Teacher::Teacher(Studentstud){

num=stud.get_num();strcpy(name,stud.get__name());sex=stud.get_sex(

);pay=1500;}

voidTeacher::display(){

cout〈<"num:"<<num〈<”\nname:“〈〈naine<<"\nsex:"<<sex〈<“\npay:"<〈pay<

<"\n\n〃;}

intmain(){

Teacherteacherl(1OOO1,"Li",'f',1234.5),teacher2;

Studentstudent1(202X0,^Wang*,Jm',89.5);

cout?zrstudentl:"<<endl;

studentl.display();

teacher2=Teacher(student1);

cout?/zteacher2:^?endl;

teacher2.display();

return0;

【實驗結(jié)果】

UU-,UX/

請按任意鍵繼續(xù)...

studentl:

nun:20010

name:Wang

sex:n

score:89.5

teacher2:

nun:20010

name:Wang

sex:n

pay:1500

請按任意鍵繼續(xù)..

【實驗編號】8

【實驗名稱】繼承與派生&多態(tài)性與虛函數(shù)

【實驗?zāi)康摹?/p>

(1)了解繼承在面向?qū)ο蟪绦蛟O(shè)計中的重要作用;

(2)進(jìn)一步理解繼承與派生的概念;

(3)掌握通過繼承派生出一個新的類的方法;

(4)了解虛基類的作用和用法;

(5)了解多態(tài)性的概念;

(6)了解虛函數(shù)的作用及使用方法;

(7)了解靜態(tài)關(guān)聯(lián)和動態(tài)關(guān)聯(lián)的概念和用法;

(8)了解純虛函數(shù)和抽象類的概念和用法。

【實驗內(nèi)容和步驟】

include<iostream>

usingnamespacestd;

classStudent

{public:

voidget__value();

voiddisplay();

protected:

intnum;

charnamelO];

charsex;

};

voidStudent::get__value()

{cin?num?name?sex;}

voidStudent::display()

{cout?,,num:"?num?endl;

cout?,,name:"?name?endl;

cout?"sex:"?sex?endl;

}

classStudentl:protectedStudent

{public:

voidget__value__l();

voiddisplayl();

private:

intage;

charaddr3O];

};

voidStudentl::get_value_l()

{get_value();

cin?age?addr;

)

voidStudentl::displayl()

{cout?"num:"?num?endl;

cout?"name:n?name?endl;

cout?"sex:"?sex?endl;

cout?"age:"?age?endl;

cout?"addr:"?addr?endl;

)

intmain()

{Studentlstudl;

studl.get_value_l();

studl.displayl();

return0;

)

include<iostream>

usingnamespacestd;

classShape

{public:

virtualdoublearea()const=0;

);

classCircle:publicShape

{public:

Circle(doubler):radius(r){}

virtualdoublearea()const{return3.14159XradiusXradius;};

protected:

doubleradius;

};

classRectangle:publicShape

{public:

Rectangle(doublew,doubleh):width(w),height(h){}

virtualdoublearea()const{returnwidthXheight;}

protected:

doublewidth,height;

);

classTriangle:publicShape

{public:

Triangle(doublew,doubleh):width(w)zheight(h){}

virtualdoublearea()const{return0.5XwidthXheight;}

protected:

doublewidth,height;

);

voidprintArea(constShape&s)

{cout?s.area()?endl;}

intmain()

{Circlecircle(12.6);

cout?"areaofcircle=";

printArea(circle);

Rectanglerectangle(4.5,8.4);

cout?"areaofrectangle=";

printArea(rectangle);

Triangletriangle(4.5,8.4);

cout?"areaoftriangle=H;

printArea(triangle);

return0;

)

【實驗結(jié)果】

10101LiM20Beijing

nun:10101

name:Li

sex:M

age:20

addr:Beijing

Processexitedafter15.6secondswithreturnualue0

請按任意鍵繼續(xù)...

areaofcircle=498.759

areaofrectangle=37.8

areaoftriangle=18.9

Processexitedafter0.06703secondswithreturnualue0

請按任意鍵繼續(xù)...

數(shù)據(jù)庫系統(tǒng)原理

第一套

工程(工程號,工程名,所在城市,負(fù)責(zé)人)

銀行(銀行號,銀行名,聯(lián)系,所在城市)

貸款(工程號,銀行號,貸款金額,貸款日期)

1建庫

2輸入數(shù)據(jù)

3建一按工程號查詢的程序。查到顯示,查不到顯示“無此工程!"

4用foxpro或SQL編寫查詢程序

(1)列出工程清單,要包含工程號。工程名和所在城市,且在最后一行顯示“位

于X和X的工程XX個"。

(2)列出貸款清單,要包含全部記錄的全部屬性,且在最后一行顯示“向編號

為bl的銀行貸款的總金額為XX元”。

(3)1999年貸款總額超過30萬的工程的工程號、工程名、所在城市和貸款總

金額,按工程號升序排列。

(4)列出全部工程和銀行在同一城市的貸款記錄,包含工程名、銀行名、貸款

金額、貸款日期,按貸款金額降序排列。

(02)

商品(商品號,商品名,單價,類別)

購置者(購置者號,姓名,所在城市,號碼)

訂單(購置者號,商品號,數(shù)量,日期)

1.建表;

2.錄入適量,合理數(shù)據(jù);(同一種商品不能同一天被訂購)

3」.顯示號碼中包含'738'的購置者的全部信息;并在最后一行顯示:

在X和X的購置者共有XX人;

3_2.顯示商品表的信息和平均單價(XXXXX.X元)同上

3_3.求商品號,商品名和所訂購商品的合計金額,并按合計金額的降序排列;

4,編寫一個商品表的修改程序;要求:除單價字段,其它字段均不得修改,其它同上

機(jī)書要求。

第二套:

現(xiàn)有關(guān)于商品銷售治理的數(shù)據(jù)庫模式如下:

雇員[雇員號,雇員名,性別,出生日期,薪金,)

商品(商品號,商品名,單價,類別,庫存量)

銷售]雇員號,商品號,數(shù)量,日期)

雇員與商品是N:M聯(lián)系。同一種商品在同一天內(nèi)所簽的訂單中只能出現(xiàn)一次。

某種單價的鋼筆算是一種商品,而鋼筆、鉛筆、訂書器等均屬于文具類;毛巾、

肥皂、牙膏等屬于日用品類;

還有電扇、彩電、冰箱等屬于電器類等等。

要求完成如下操作:

1.建立一個數(shù)據(jù)庫,并按題目要求建立各表結(jié)構(gòu),建立3個表之間的關(guān)聯(lián),要

能實施參照完整性檢查。

各表各個字段的名字、數(shù)據(jù)類型、長度等依據(jù)語義和查詢需求自行決定,要充分

注意其合理性。其它,還要求:

(1)“雇員號”字段為文本型,形如E-001,E-002,應(yīng)是大寫字母。

(2)“類別”字段設(shè)置為查閱字段,商品類別有文具類、日用品類和電器類3

類。

(3)“日期”字段的格式設(shè)置為“中日期”,其標(biāo)題設(shè)為“銷售日期”。

(4)“單價”為貨幣型,保存2位小數(shù)。

2.向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各字段的取值范圍應(yīng)該合理、有

效,并且要與查詢要求相照應(yīng),即各查詢的結(jié)果集不能為空。

3.創(chuàng)立一個查詢,列出年齡在25至35歲之間的雇員銷售購商品的信息,

包含雇員號、雇員名、商品名、單價、銷售數(shù)量和金額,并按金額的降序排列。

4.創(chuàng)立一個更新查詢,用于將“商品”表中"文具〃類商品的單價降價10%,

將“日用品”類商品的單價加價5%。

5.創(chuàng)立一個交叉表查詢,要求用“雇員號"和"雇員名”作為行標(biāo)題,用“商

品名”作列標(biāo)題,在行列交叉處顯示各種商品的銷售數(shù)量。

6.創(chuàng)立一個帶有選項卡的雙頁窗體,分別顯示雇員根本信息和雇員銷售商品的

信息。

7.創(chuàng)立一個帶子報表的報表,主報表顯示雇員的信息,子報表顯示雇員銷售商

品的信息。

在主報表頁眉節(jié)給出報表名字,在頁面頁腳節(jié)添加當(dāng)前日期和頁碼。

8.創(chuàng)立一個操縱窗體,設(shè)置6個命令按鈕,點擊它們可執(zhí)行某種操作。其中的

前5個按鈕,

分別用以執(zhí)行3~7五道題目的操作,另一個用于退出。在窗體上設(shè)置2個文本

框,

一個用以顯示你本人的帳號、姓名和準(zhǔn)考證號;另一個用以顯示當(dāng)前的日期、時

間。

第三套:

現(xiàn)有關(guān)于學(xué)生成績治理數(shù)據(jù)庫的模式如下:

學(xué)生〔學(xué)號,姓名,性別,出生日期,所在系);

課程(課號,課程名,先修課號,學(xué)分);

選修1學(xué)號,課號,成績)

學(xué)生與課程的聯(lián)系是M:N聯(lián)系。

1.按題目要求建立表結(jié)構(gòu),各表各個字段的名字、數(shù)據(jù)類型、長度等依據(jù)語義和

查詢的需要自行決定。可依據(jù)以下題目的需要建立索引。有些題目則可能需要建

立中間表或臨時表。

2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù).各數(shù)據(jù)項的取值

范圍應(yīng)該合理、有效,并與查詢要求相照應(yīng)。

3.編寫一個課程信息的錄入程序。要求在錄入一門課程后屏幕詢問:“繼續(xù)錄入

嗎?",

依據(jù)用戶答復(fù)決定程序流程。要求不退出本程序能繼續(xù)進(jìn)行錄入操作。

4.用FoxPro言語或SQL言語編寫程序完成以下查詢。

(1)對學(xué)生表按系排升序,按年齡排降序,將排序結(jié)果顯示出來。

(2)列出先修課號為C1的課程清單,且在最后一行顯示:這些課程的總學(xué)分為

XX分。

(3)列出數(shù)學(xué)系全體學(xué)生的學(xué)號、姓名,以及所選課程的課程號和成績。

(4)列出年齡小于20歲的學(xué)生的學(xué)號、姓名,以及所選課程的課程名、學(xué)分和

成績。

第四套:學(xué)生1學(xué)號,姓名,性別,出生日期,系號)

課程(課號,課程名,學(xué)分)

選修1學(xué)號,課號,成績)

1.建庫

2.輸數(shù)

3.編寫一個課程信息的錄入程序,要求在錄入一門課程后屏幕詢問:“繼續(xù)錄入

嗎?"

依據(jù)用戶答復(fù)決定程序流程,要求不退出本程序能繼續(xù)進(jìn)行錄入操作。

4.用Foxpro言語或sql言語編寫程序完成以下查詢:

(1)列出學(xué)生名單,要包含全部學(xué)生的全部信息,且在最后一行顯示“年齡小

于18歲的男生有XX人"

12)列出成績不及格的學(xué)生的信息,要包含選修表的全部屬性,且在最后一行

顯示“他們的平均成績?yōu)閄X分〃

(3)統(tǒng)計數(shù)學(xué)系每個學(xué)生姓名,性別,年齡以及該學(xué)生所學(xué)課程的總成績并列

表顯示。

(4)檢索選課在2門及2門以上的學(xué)生的學(xué)號,姓名,總學(xué)分和平均成績,并

列表顯示。(不及格的課程不統(tǒng)計在內(nèi))

實驗一數(shù)據(jù)庫的定義實驗

本實驗需要2學(xué)時。

一、實驗?zāi)康?/p>

要求學(xué)生熟練掌握和使用SQL、Transact-SQL.SQLServer企業(yè)治理器創(chuàng)立數(shù)

據(jù)庫、表、索引和修改表結(jié)構(gòu),并學(xué)會使用SQLServer查詢分析器接收

Transact-SQL語句和進(jìn)行結(jié)果分析。

二、實驗內(nèi)容

1.創(chuàng)立數(shù)據(jù)庫和查看數(shù)據(jù)庫屬性。

2.創(chuàng)立表、確定表的主碼和約束條件。為主碼建索引。

3.查看和修改表結(jié)構(gòu)。

4.熟悉SQLServer企業(yè)治理器和查詢分析器工具的使用方法。

三、實驗步驟

1.根本操作實驗

(1)使用企業(yè)治理器按教材中的內(nèi)容建立圖書一讀者數(shù)據(jù)庫。

(2)在企業(yè)治理器中查看圖書讀者數(shù)據(jù)庫的屬性,并進(jìn)行修改,使之符合

要求。

(3)通過企業(yè)治理器,在建好的圖書借閱數(shù)據(jù)庫中建立圖書、讀者和借閱

3個表,其結(jié)構(gòu)為;

圖書(書號,類別,出版社,作者,書名,定價);

讀者1編號,姓名,單位,性別,);

借閱(書號,讀者編號,借閱日期)

要求為屬性選擇適宜的數(shù)據(jù)類型,定義每個表的主碼,是否同意空值和默認(rèn)

值等列級數(shù)據(jù)約束。

(4)在企業(yè)治理器中建立圖書、讀者和借閱3個表的表級約束:每個表的

主碼約束;借閱表與圖書表間、借閱表與讀者表之間的外碼約束,要求按語義先

確定外碼約束表達(dá)式,再通過操作予以完成;完成借閱表的書號和讀者編號的惟

一性約束:完成讀者性別只能是“男”或"女"的Check(檢查)約束。

2.提高操作實驗

(1)參考教材,在查詢分析器中完成用Transact-SQL命令建立學(xué)生-課程數(shù)

據(jù)庫及表的操作。其中表結(jié)構(gòu)為:

學(xué)生(學(xué)號,姓名,年齡,性別,所在系);

課程(課程號,課程名,先行課,學(xué)分);

選課1學(xué)號,課程號,成績)

要求:

1)用SQL命令建庫、建表和建立表間聯(lián)系。

2)選擇適宜的數(shù)據(jù)類型。

3)定義必要的索引、列級約束和表級約束.

四、實驗方法

I.創(chuàng)立數(shù)據(jù)庫

(1)使用企業(yè)治理器創(chuàng)立數(shù)據(jù)庫的步驟

1)從"開始”菜單中選擇;“程序”-uMicrosoftSQLServer202X,z—“企

業(yè)治理器"。

2)選中需要在其上創(chuàng)立數(shù)據(jù)庫的效勞器,單擊前面的“+”號,使其展示

為樹形目錄。

3)選中“數(shù)據(jù)庫”文件夾,單擊鼠標(biāo)右鍵,在彈出的菜單上選擇“新建數(shù)

據(jù)庫”選項,如圖1。隨后在“數(shù)據(jù)庫屬性”對話框的“常規(guī)”選項卡中,輸入

數(shù)據(jù)庫名,選擇SQL效勞器,如圖2所示。

[7SQtServerEnterpriseManaqer-ISM6VS泉\Mkrs“tSQtServgSqtServerM\lC恨務(wù)偉星性一圖書一讀,

VRW)??xa)

I/定I取消I,助

圖1在數(shù)據(jù)庫彈出菜單中選擇“新建數(shù)據(jù)庫"圖2數(shù)據(jù)庫

屬性對話框

“數(shù)據(jù)庫”屬性對話框中有三個選項卡:常規(guī)選項卡、數(shù)據(jù)文件選項卡和事

務(wù)日志選項卡。數(shù)據(jù)文件選項卡和事務(wù)日志選項卡主要用來定義數(shù)據(jù)庫的數(shù)據(jù)文

件和日志文件的屬性。

4)選擇“數(shù)據(jù)文件”選項卡,輸入圖書-讀者數(shù)據(jù)庫的數(shù)據(jù)文件屬性。包含

文件名、存放位置、和文件屬性,如圖3所示:再選擇“事務(wù)日志”選項卡,輸

入數(shù)據(jù)庫的日志文件屬性,包含文件名、存放位置、大小和文件屬性,如圖4

所示。在選擇文件位置時,可以單擊位于“位置〃列的“…〃按鈕。在調(diào)出的文

件選擇器中進(jìn)行位置選擇。

圖3數(shù)據(jù)庫屬性對話框中的數(shù)據(jù)文件選項圖4數(shù)據(jù)庫屬性對話框中的

事務(wù)日志這項卡

5)單擊“確定〃按鈕,關(guān)閉對話框。在企業(yè)治理器窗口中出現(xiàn)“圖書-讀者〃

數(shù)據(jù)庫標(biāo)志,這說明建庫工作已經(jīng)完成。

(2)文件屬性參數(shù)說明

文件屬性欄設(shè)在頁面的下部,它包含以下3個選項;

I)文件自動增長復(fù)選框:選中后同意文件放滿數(shù)據(jù)時自動增長。

2)文件增長單項選擇框:同意文件自動增長時。設(shè)置每次文件增長的大小。

例如,選“按兆字節(jié)〃項。則設(shè)置文件增長為固定的大小;單位是MB;選''按

百分比”項,則文件按指定比例數(shù)增長,單位是%。

3)最大文件大小單項選擇鈕:設(shè)置當(dāng)同意文件擴(kuò)展時,設(shè)置數(shù)據(jù)文件能夠

增長的最大值。選“文件增長不受限制”項

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論