计算机计算机及应用课程实验_第1页
计算机计算机及应用课程实验_第2页
计算机计算机及应用课程实验_第3页
计算机计算机及应用课程实验_第4页
计算机计算机及应用课程实验_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自考C++实践试题

202X.9B卷

1.建设一个工厂的治理软件经理工资=根本工资+分红治理者工资=根本工资+

工程提成员工工资=根本工资+补助,假设工厂的全部收益都来自于工程

2.生成一个Employee基类,有纯虚函数Calculate计算每个员工的工资,全部人

的根本信息,工厂有三类人Leader,Manager,Worker,

重载>>操作符(用cin输入员工信息)

3.有个员工查询系统,治理每个员工信息和工资,能够查询每一类人的总工资和此

类人工资占总收益的比例

4.工程类包含工程的名称,工程负责人,工程资金,工程收益,工程起始时间,

工程结束时间

有个工程治理系统,用来查询工程负责人的负责工程(一人可能负责多个工程)

5.有个输入治理系统,从在>>操作符或用cin输入员工信息和工程信息,并将员

工的信息和工资情况打印出来,格式自定,要求清楚

6.设计main函数,在main中调用

202X.9.13(AB)

A卷

请完成一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种

数据结构,按照先进先出的顺序治理进、出队列的元素。此题要求完成:

(1)完成描述队列的类Queue,其中定义了队列的大小Size(即队列中可

以存放的元素个数),并包含进队列函数Add,出队列函数Pop、显示队列头部

元素的函数getFirst和显示队列尾部元素的函数getLast.

(2)定义基类Element,至少包含纯虚函数ShowMe.

13)从基类Element中派生整数类Mylnteger和字符串类MyString,具体

完成上述纯虚函数ShowMe,显示该元素的类型和相应的值。

(4)重载输入">>”操作符,使得可以通过cin直接读入上述整数类和字

符串类的对象值。重载输出“<<”操作符,使得可以通过cout直接输出上述整

数类和字符串类的对象值。

(5)编写main函数,测试上述所要求的各种功能,

B卷

学生成绩治理系统可以方便老师治理学生的成绩记录,请完成一个简易成绩治理

系统。具体要求如下:

(1)完成一个治理类Managementsystem。要能添加、删除和查询学生记录。

(2)完成基类Student,至少包含纯虚函数showPerformance。

(3)完成类本科生Undergraduate和研究生Graduate,它们继承自基类

Studento本科生的成绩单上有数学、物理、英语、计算机等课的成绩;

研究生有软件工程、网络实习、体系结构等课的成绩。并具体完成

showPerformance,输出学生的各科成绩。

(4)重载“<<”操作符,使得可以通过cout直接输出学生成绩。

(5)编写main函数,测试上述要求的全部功能。

202XA

奇数题目:

X大学要举办一次趣味射箭比赛。请依据题目要求完成简单的比赛计分程序:

1、比赛规则如下:50M开外的三块目标板,上面分别是同心园靶、10个气球

和一张怪物面具。每位选手有5次射箭时机,得分依据每一次的表现累加获得。

2、设计出计分系统计算每位选手最后的得分:定义描述选手的类Comperitor,

其中包含有3个从Board基类派生来的派生类,分别是Target,Balloon,

Masko还应包含有选手姓名(string),编号(int)、一个用于计算总得分的

函数getTotalScore。和用于显示3个目标板命中情况的函数showDetail().

3、三个目标板的分数计算方法如下

Target:10个同心圆,命中中心环为10分,命中次外环为9分,依次类推,

最外环以外为。分。

Balloon:共有10颗球。命中一个得一分。

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

4、重载输入操作符">>",使得可以通过cin直接读入每位选手的相应信息。要

求game.exe能给出适当的输入格式提示。

5、编写main函数,测试上述所要求的各种功能,提示:基类Board的定义至

少包含一下纯虚函数getScore

classBoard

{//……

public:

virtualintgetSocre()=0;

//……

偶数题:

1、比赛规则如下:50M开外的三块目标板,上面分别是同心园靶、10个气球

和一张怪物面具。每位选手有5次射箭时机,得分依据每一次的表现累加获得。

2、设计出计分系统计算每位选手最后的得分:定义描述选手的类Comperitor,

其中包含有3个从Board基类派生来的派生类,分别是Target,Balloon,

Masko还应包含有选手姓名(string),编号(int)、一个用于计算总得分的

函数getTotalScore。和用于显示3个目标板命中情况的函数showDetail。.

3、三个目标板的分数计算方法如下

Target:10个同心圆,命中中心环为10分,命中次外环为9分,依次类推,

最外环以外为0分。

Balloon:共有10颗球。命中一个得一分。

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

4、定义一个排名类Rank,依据自己的情况定义一个数据结构来包含3个参赛

选手并完成依据总得分的排位显示功能。显示格式如下:

RankNoNameScore

15Obama18

29McCain13

32Hilary11

5、重载输入操作符">>",使得可以通过cin直接读入每位选手的相应信息。要

求game.exe能给出适当的输入格式提示。

6、编写main函数,测试上述所要求的各种功能,提示:基类Board的定义至

少包含一下纯虚函数getScore

classBoard

{//……

public:

virtualintgetSocre()=0;

【实验编号】1

【实验名称】数据类型与表达式

【实验目的】

(1)掌握C++言语数据类型,熟悉如何定义变量,以及对它们赋值

的方法;

(2)学会使用C++有关算术运算符,以及包含这些运算符的表达式;

(3)熟悉C++程序的结构,以及C++程序的编辑、编译、连接和运行

的过程。

【实验内容和步骤】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;

)

【实验结果】

9797

c1-b,c2=a

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

请按任意键继续...

lii13193,J圈

Glnre

请按任意键继续...

【实验编号】2

【实验名称】C++程序设计初步

【实验目的】

(1)掌握简单的C++程序的编写和调试方法;

(2)掌握C++程序中使用最多的语句一赋值语句和输入输出的使用

方法;

(3)掌握结构化程序的三种根本结构(顺序结构、选择结构、循环结

构)在C++中的完成。

【实验内容和步骤】

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;

)

【实验结果】

:一「;;;:---

enterapositivenumber:2

Thesquarerootof2is1.41421

6,itsfactorsare:123

28.itsfactorsare24714

496,itsfactorsare:1248163162124248

请按任意键继续..•

【实验编号】3

【实验名称】函数与预处理

【实验目的】

(1)熟悉定义函数的方法、函数实参与形参的对应关系以及“值传

递”的方法;

(2)熟悉函数的嵌套调用和递归调用的方法;

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

[4)熟悉编译预处理的应用;

(5)掌握多文件的程序的编译和运行的方法。

【实验内容和步骤】

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<<”请输入整数a:”;

cin»a;

cout<<"请输入整数m:”;

cin»m;

cout«/zaXb=*«aXb«endl;

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

return0;

【实验结果】

inputn:34

34=3+31

34=5+29

34=11+23

34=17+17

请按任意键继续.

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

蓍按任意键继续...■

【实验编号】4

【实验名称】数组

【实验目的】

(1)掌握一位数组和二维数组的定义、赋值和输入输出的方法;

(2)掌握字符数组和字符串函数的使用;

13)掌握与数组有关的算法(特别是排序算法)。

【实验内容和步骤】

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;

)

【实验结果】

6758942-9-7065

-9-70245896567请按任意键继续・.・

enterdata:

151413121110987654321

151413121110987654321

inputnumbertolookfor:14

Find14,itspositionis2

continueornot<¥/N>?y

inputnumbertolookfor:89

89hasnotfound,

continueornot<V/N>?n

请按任意键继续...・

【实验编号】5

【实验名称】指针

【实验目的】

(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;

(2)能正确使用数组的指针和指向数组的指针变量;

(3〕能正确使用字符串的指针和指向字符串的指针变量;

(4)能正确使用引用型变量。

【实验内容和步骤】

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;

)

【实验结果】

inputthreeintegers:563

theorderis:356

请按任意键继续...

inputnumberofperson:n=8

thelastoneisNO.?

请按任意键继续...

input10numbers:123456789876

theyare:123456789876

请按任意键继续...■

input10strings:

cat

pig

dog

hit

she

fat

fit

tap

top

hot

thesequenceis:

cat

dog

fat

fit

hit

hot

pig

she

tap

top

请按任意键继续..

【实验编号】6

【实验名称】自定义数据类型&类和对象

【实验目的】

(1)掌握结构体类型变量的定义和使用;

(2)掌握结构体类型数组的概念和应用;

(3)了解链表的概念,初步学会对简单的链表进行操作。

(4)掌握声明类的方法,类和类的成员的概念以及定义对象的方法;

(5)初步掌握用类和对象编制基于对象的程序;

(6)学习检查和调试基于对象的程序。

【实验内容和步骤】

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;

【实验结果】

inputyear,nonth,day:199995

9/5isthe248thdayin1999.

请按任意键继续...

pleaseinputlength,width,height:102030

volumeofboxlis6000

pleaseinputlength,width,height:451020

uoluneofbox2is9000

pleaseinputlength,widthsheight:403012

uoluneo£box3is14400

,按任意键继续..,.

【实验编号】7

【实验名称】运算符重载

【实验目的】

(1)进一步了解运算符重载的概念和使用方法;

(2)掌握几种常用的运算符重载的方法;

(3)了解转换构造函数的使用方法。

(4)了解在VisualC++6.0环境下进行运算符重载要注意的问题。

【实验内容和步骤】

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;

【实验结果】

UU-,UX/

请按任意键继续...

studentl:

nun:20010

name:Wang

sex:n

score:89.5

teacher2:

nun:20010

name:Wang

sex:n

pay:1500

请按任意键继续..

【实验编号】8

【实验名称】继承与派生&多态性与虚函数

【实验目的】

(1)了解继承在面向对象程序设计中的重要作用;

(2)进一步理解继承与派生的概念;

(3)掌握通过继承派生出一个新的类的方法;

(4)了解虚基类的作用和用法;

(5)了解多态性的概念;

(6)了解虚函数的作用及使用方法;

(7)了解静态关联和动态关联的概念和用法;

(8)了解纯虚函数和抽象类的概念和用法。

【实验内容和步骤】

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;

)

【实验结果】

10101LiM20Beijing

nun:10101

name:Li

sex:M

age:20

addr:Beijing

Processexitedafter15.6secondswithreturnualue0

请按任意键继续...

areaofcircle=498.759

areaofrectangle=37.8

areaoftriangle=18.9

Processexitedafter0.06703secondswithreturnualue0

请按任意键继续...

数据库系统原理

第一套

工程(工程号,工程名,所在城市,负责人)

银行(银行号,银行名,联系,所在城市)

贷款(工程号,银行号,贷款金额,贷款日期)

1建库

2输入数据

3建一按工程号查询的程序。查到显示,查不到显示“无此工程!"

4用foxpro或SQL编写查询程序

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

于X和X的工程XX个"。

(2)列出贷款清单,要包含全部记录的全部属性,且在最后一行显示“向编号

为bl的银行贷款的总金额为XX元”。

(3)1999年贷款总额超过30万的工程的工程号、工程名、所在城市和贷款总

金额,按工程号升序排列。

(4)列出全部工程和银行在同一城市的贷款记录,包含工程名、银行名、贷款

金额、贷款日期,按贷款金额降序排列。

(02)

商品(商品号,商品名,单价,类别)

购置者(购置者号,姓名,所在城市,号码)

订单(购置者号,商品号,数量,日期)

1.建表;

2.录入适量,合理数据;(同一种商品不能同一天被订购)

3」.显示号码中包含'738'的购置者的全部信息;并在最后一行显示:

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

3_2.显示商品表的信息和平均单价(XXXXX.X元)同上

3_3.求商品号,商品名和所订购商品的合计金额,并按合计金额的降序排列;

4,编写一个商品表的修改程序;要求:除单价字段,其它字段均不得修改,其它同上

机书要求。

第二套:

现有关于商品销售治理的数据库模式如下:

雇员[雇员号,雇员名,性别,出生日期,薪金,)

商品(商品号,商品名,单价,类别,库存量)

销售]雇员号,商品号,数量,日期)

雇员与商品是N:M联系。同一种商品在同一天内所签的订单中只能出现一次。

某种单价的钢笔算是一种商品,而钢笔、铅笔、订书器等均属于文具类;毛巾、

肥皂、牙膏等属于日用品类;

还有电扇、彩电、冰箱等属于电器类等等。

要求完成如下操作:

1.建立一个数据库,并按题目要求建立各表结构,建立3个表之间的关联,要

能实施参照完整性检查。

各表各个字段的名字、数据类型、长度等依据语义和查询需求自行决定,要充分

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

(1)“雇员号”字段为文本型,形如E-001,E-002,应是大写字母。

(2)“类别”字段设置为查阅字段,商品类别有文具类、日用品类和电器类3

类。

(3)“日期”字段的格式设置为“中日期”,其标题设为“销售日期”。

(4)“单价”为货币型,保存2位小数。

2.向各表录入适量的、满足题目需要的数据。各字段的取值范围应该合理、有

效,并且要与查询要求相照应,即各查询的结果集不能为空。

3.创立一个查询,列出年龄在25至35岁之间的雇员销售购商品的信息,

包含雇员号、雇员名、商品名、单价、销售数量和金额,并按金额的降序排列。

4.创立一个更新查询,用于将“商品”表中"文具〃类商品的单价降价10%,

将“日用品”类商品的单价加价5%。

5.创立一个交叉表查询,要求用“雇员号"和"雇员名”作为行标题,用“商

品名”作列标题,在行列交叉处显示各种商品的销售数量。

6.创立一个带有选项卡的双页窗体,分别显示雇员根本信息和雇员销售商品的

信息。

7.创立一个带子报表的报表,主报表显示雇员的信息,子报表显示雇员销售商

品的信息。

在主报表页眉节给出报表名字,在页面页脚节添加当前日期和页码。

8.创立一个操纵窗体,设置6个命令按钮,点击它们可执行某种操作。其中的

前5个按钮,

分别用以执行3~7五道题目的操作,另一个用于退出。在窗体上设置2个文本

框,

一个用以显示你本人的帐号、姓名和准考证号;另一个用以显示当前的日期、时

间。

第三套:

现有关于学生成绩治理数据库的模式如下:

学生〔学号,姓名,性别,出生日期,所在系);

课程(课号,课程名,先修课号,学分);

选修1学号,课号,成绩)

学生与课程的联系是M:N联系。

1.按题目要求建立表结构,各表各个字段的名字、数据类型、长度等依据语义和

查询的需要自行决定。可依据以下题目的需要建立索引。有些题目则可能需要建

立中间表或临时表。

2.利用你所熟悉的方法向各表录入适量的、满足题目需要的数据.各数据项的取值

范围应该合理、有效,并与查询要求相照应。

3.编写一个课程信息的录入程序。要求在录入一门课程后屏幕询问:“继续录入

吗?",

依据用户答复决定程序流程。要求不退出本程序能继续进行录入操作。

4.用FoxPro言语或SQL言语编写程序完成以下查询。

(1)对学生表按系排升序,按年龄排降序,将排序结果显示出来。

(2)列出先修课号为C1的课程清单,且在最后一行显示:这些课程的总学分为

XX分。

(3)列出数学系全体学生的学号、姓名,以及所选课程的课程号和成绩。

(4)列出年龄小于20岁的学生的学号、姓名,以及所选课程的课程名、学分和

成绩。

第四套:学生1学号,姓名,性别,出生日期,系号)

课程(课号,课程名,学分)

选修1学号,课号,成绩)

1.建库

2.输数

3.编写一个课程信息的录入程序,要求在录入一门课程后屏幕询问:“继续录入

吗?"

依据用户答复决定程序流程,要求不退出本程序能继续进行录入操作。

4.用Foxpro言语或sql言语编写程序完成以下查询:

(1)列出学生名单,要包含全部学生的全部信息,且在最后一行显示“年龄小

于18岁的男生有XX人"

12)列出成绩不及格的学生的信息,要包含选修表的全部属性,且在最后一行

显示“他们的平均成绩为XX分〃

(3)统计数学系每个学生姓名,性别,年龄以及该学生所学课程的总成绩并列

表显示。

(4)检索选课在2门及2门以上的学生的学号,姓名,总学分和平均成绩,并

列表显示。(不及格的课程不统计在内)

实验一数据库的定义实验

本实验需要2学时。

一、实验目的

要求学生熟练掌握和使用SQL、Transact-SQL.SQLServer企业治理器创立数

据库、表、索引和修改表结构,并学会使用SQLServer查询分析器接收

Transact-SQL语句和进行结果分析。

二、实验内容

1.创立数据库和查看数据库属性。

2.创立表、确定表的主码和约束条件。为主码建索引。

3.查看和修改表结构。

4.熟悉SQLServer企业治理器和查询分析器工具的使用方法。

三、实验步骤

1.根本操作实验

(1)使用企业治理器按教材中的内容建立图书一读者数据库。

(2)在企业治理器中查看图书读者数据库的属性,并进行修改,使之符合

要求。

(3)通过企业治理器,在建好的图书借阅数据库中建立图书、读者和借阅

3个表,其结构为;

图书(书号,类别,出版社,作者,书名,定价);

读者1编号,姓名,单位,性别,);

借阅(书号,读者编号,借阅日期)

要求为属性选择适宜的数据类型,定义每个表的主码,是否同意空值和默认

值等列级数据约束。

(4)在企业治理器中建立图书、读者和借阅3个表的表级约束:每个表的

主码约束;借阅表与图书表间、借阅表与读者表之间的外码约束,要求按语义先

确定外码约束表达式,再通过操作予以完成;完成借阅表的书号和读者编号的惟

一性约束:完成读者性别只能是“男”或"女"的Check(检查)约束。

2.提高操作实验

(1)参考教材,在查询分析器中完成用Transact-SQL命令建立学生-课程数

据库及表的操作。其中表结构为:

学生(学号,姓名,年龄,性别,所在系);

课程(课程号,课程名,先行课,学分);

选课1学号,课程号,成绩)

要求:

1)用SQL命令建库、建表和建立表间联系。

2)选择适宜的数据类型。

3)定义必要的索引、列级约束和表级约束.

四、实验方法

I.创立数据库

(1)使用企业治理器创立数据库的步骤

1)从"开始”菜单中选择;“程序”-uMicrosoftSQLServer202X,z—“企

业治理器"。

2)选中需要在其上创立数据库的效劳器,单击前面的“+”号,使其展示

为树形目录。

3)选中“数据库”文件夹,单击鼠标右键,在弹出的菜单上选择“新建数

据库”选项,如图1。随后在“数据库属性”对话框的“常规”选项卡中,输入

数据库名,选择SQL效劳器,如图2所示。

[7SQtServerEnterpriseManaqer-ISM6VS泉\Mkrs“tSQtServgSqtServerM\lC恨务伟星性一图书一读,

VRW)«»xa)

I/定I取消I,助

图1在数据库弹出菜单中选择“新建数据库"图2数据库

属性对话框

“数据库”属性对话框中有三个选项卡:常规选项卡、数据文件选项卡和事

务日志选项卡。数据文件选项卡和事务日志选项卡主要用来定义数据库的数据文

件和日志文件的属性。

4)选择“数据文件”选项卡,输入图书-读者数据库的数据文件属性。包含

文件名、存放位置、和文件属性,如图3所示:再选择“事务日志”选项卡,输

入数据库的日志文件属性,包含文件名、存放位置、大小和文件属性,如图4

所示。在选择文件位置时,可以单击位于“位置〃列的“…〃按钮。在调出的文

件选择器中进行位置选择。

图3数据库属性对话框中的数据文件选项图4数据库属性对话框中的

事务日志这项卡

5)单击“确定〃按钮,关闭对话框。在企业治理器窗口中出现“图书-读者〃

数据库标志,这说明建库工作已经完成。

(2)文件属性参数说明

文件属性栏设在页面的下部,它包含以下3个选项;

I)文件自动增长复选框:选中后同意文件放满数据时自动增长。

2)文件增长单项选择框:同意文件自动增长时。设置每次文件增长的大小。

例如,选“按兆字节〃项。则设置文件增长为固定的大小;单位是MB;选''按

百分比”项,则文件按指定比例数增长,单位是%。

3)最大文件大小单项选择钮:设置当同意文件扩展时,设置数据文件能够

增长的最大值。选“文件增长不受限制”项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论