版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆廣西玉林高中物理高二第一學(xué)期期中教學(xué)質(zhì)量檢測試題含解析
- 2025屆河南省平頂山市魯山縣第一高級中學(xué)物理高一第一學(xué)期期中質(zhì)量跟蹤監(jiān)視試題含解析
- 撫順市重點中學(xué)2025屆物理高三上期末達(dá)標(biāo)檢測模擬試題含解析
- 遼寧省鞍山市2025屆高三物理第一學(xué)期期中統(tǒng)考試題含解析
- 吉林省四平市公主嶺市范家屯鎮(zhèn)第一中學(xué)2025屆高三上物理期中復(fù)習(xí)檢測試題含解析
- 2025屆廣東廣州市增城區(qū)物理高三第一學(xué)期期中預(yù)測試題含解析
- 福建省南平市邵武市四中2025屆物理高二第一學(xué)期期中質(zhì)量檢測試題含解析
- 2025屆南京市重點中學(xué)高一物理第一學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 2025屆廣西桂梧高中物理高二第一學(xué)期期末考試試題含解析
- 云南省重點中學(xué)2025屆物理高三第一學(xué)期期末調(diào)研試題含解析
- 疫情期間學(xué)生德育工作總結(jié)
- JJF 2159-2024零氣發(fā)生器校準(zhǔn)規(guī)范
- 海底探測用自動潛航器相關(guān)項目實施方案
- 期中檢測卷(試題)-2024-2025學(xué)年統(tǒng)編版二年級語文上冊
- 2024年江蘇省氣象系統(tǒng)事業(yè)單位招聘61人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 2024年《中華人民共和國監(jiān)察法》知識測試題庫及答案
- Unit 2 Hobbies Welcome to the unit 教學(xué)設(shè)計2024-2025學(xué)年牛津譯林版英語七年級上冊
- 開卷作業(yè)風(fēng)險和隱患辨識、評估分級與控制措施一覽表
- 無人駕駛航空器安全操作理論復(fù)習(xí)測試附答案
- 鹽城市中小學(xué)“讓學(xué)引思”課堂教學(xué)改革行動方案
- 2022年1月福建省合格性考試信息技術(shù)真題卷
評論
0/150
提交評論