当前位置:文档之家› 华科面向对象的程序设计题库

华科面向对象的程序设计题库

华科面向对象的程序设计题库
华科面向对象的程序设计题库

1、编译时的多态性通过__重载__函数实现。

2、面向对象的四个基本特性是_抽象__、__多态性_、__继承性__和_封装性_。

3. 假定AB为一个类,则执行“AB a(2), b[4],*p[4];”语句时调用该类构造函数的次数为__5__。

4.要实现动态联编必须通过对象指针或引用来调用_虚函数_实现。

5.在函数前面用_ inline _保留字修饰时,则表示该函数表为内联函数。

6.如果将一个对象说明为常对象,则通过该对象只能调用它的__常成员__函数。

7、非成员函数应声明为类的__友元___函数才能访问这个类的private成员。

8、在用class定义一个类时,数据成员和成员函数的默认访问权限是_ 私有____。

9、运算符重载函数可能是类的_友元_函数,也可以是类的_成员_函数,还可以是普通函数。

10、__转换构造函数__函数可以将一个指定的数据转换为类的对象,_类型转换函数_函数实现类的对象转换成其它类型的数据。

11、静态多态性是通过函数重载、运算符重载、模板来实现。

12、假定AB为一个类,则执行“AB a(10), b[1],*p[10];”语句时调用该类构造函数的次数为1。

13、C++类成员函数有public、private、protected 三种类型。

14、如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数。

15、为使外部函数可访问类的私有成员,需将该函数声明为该类的友元函数。

16、类B是由类A以保护方式派生的,则类A中公有访问属性的数据成员在类B中的访问属性为保护。

17、+、=、[]、->等四种运算符中,可采用友元函数重载的运算符是+。

18、抽象类是指具有纯虚函数的类,它只能作为基类来使用。

19、类B是由类A以保护方式派生的,则类A中私有访问属性的数据成员在类B中的访问属性为不可访问。

1、什么是类模板,类模板声明的一般形式是什么?

答案:

类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。定义类模板的一般形式是:

template <类型名参数名1,类型名参数名2,…>

class 类名

{

类声明体

};

2、有哪几种继承方式?每种方式的派生类对基类成员的继承性如何?

答案:

继承方式包括:public、private、protected。

3、简述运算符重载的实现方式有哪几种?给出对应的声明语法形式。

答案:

(1)类外定义的运算符重载函数

格式为:

friend <返回类型> operator (<类型>参数1,<类型>参数2)

{ <函数体> }

(2)成员运算符重载函数

<返回类型><类名>::operator (<类型>参数)

{ <函数体> }

4、什么是this指针? 它的主要作用是什么?

答案:

this指针:隐含在非静态成员函数中的特殊指针,它是当前正在调用此成员函数的对象的指针。

作用:主要是用于保证访问不能跨界和用于区分不同的对象。成员函数对成员变量的引用实际是通过this指针访问的,也就是说:成员变量this->成员变量;另外,如果成员函数需要访问当前对象,也可以通过this指针,*this 就是当前对象。

5、什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?

答案:

多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。

派生类构造函数的执行顺序是先执行所有基类的构造函数(顺序按照定义派生类时指定的各基类顺序),再执行派生类的构造函数,析构函数执行顺序,与构造函数完全相反。

三、写出程序运行结果

1、

#include

using namespace std;

class B1{

int b1;

public:

B1(int i)

{ b1 = i; cout <<"constructor B1."<

{ cout<

};

class B2{

int b2;

public:

B2(int i)

{ b2 = i; cout<<"constructor B2."<

{ cout<

};

class B3{

int b3;

public:

B3(int i)

{ b3 = i; cout<<"constructor B3."<

int getb3()

{ return b3; }

};

class A:public B2, B1{

int a; B3 bb;

public:

A(int i,int j, int k, int l):B1(i),bb(k),B2(j)

{ a=l;cout<<"constructor A."<

void print()

{

B1::print();B2::print();

cout<

}

};

int main()

{

A aa(1,2,3,4);

aa.print();

return 0;

}

答案:

constructor B2.2

constructor B1.1

constructor B3.3

constructor A.4

1

2

4,3

2、

#include

#include

using namespace std;

class A {

char string[80];

public :

void show();

A(char * st);

~A( );

};

A::A(char * st)

{ strcpy(string, st);

cout << string << "[构造]" << endl;

}

A::~A( )

{ cout << string << "[析构]" << endl; }

void A::show()

{

cout << string << endl;

}

void fun( )

{

cout << "1 fun内" << endl;

A fun_Obj("2 fun内自动对象fun_Obj");

static A fun_sta_Obj("3 fun内静态对象fun_sta_Obj"); }

void main( )

{

A *ptrA = new A("4 main内动态分配对象m_all_Obj"); if(ptrA==NULL) return;

ptrA->show();

cout<<"5 main内调用fun函数"<< endl;

fun( );

delete ptrA;

}

static A g_sta_Obj("6 外部静态对象g_sta_Obj");

A g_glb_Obj("7 外部对象g_glb_Obj");

答案:

6 外部静态对象g_sta_Obj[构造]

7 外部对象g_glb_Obj[构造]

4 main内动态分配对象m_all_Obj[构造]

4 main内动态分配对象m_all_Obj

5 main内调用fun函数

1 fun内

2 fun内自动对象fun_Obj[构造]

3 fun内静态对象fun_sta_Obj[构造]

2 fun内自动对象fun_Obj[析构]

4 main内动态分配对象m_all_Obj[析构]

3 fun内静态对象fun_sta_Obj[析构]

7 外部对象g_glb_Obj[析构]

6 外部静态对象g_sta_Obj[析构]

3、

#include

using namespace std;

class A{

public:

virtual void Print(int a, int b=4)

{ cout << "a = " << a << " , b = " << b << endl; } };

class B : public A {

public:

virtual void Print(int a)

{ cout << "a = " << a << endl; }

virtual void Print(int a, double d)

{ cout << "a = " << a << " , d = " << d << endl; } };

void Show(A * p)

{

p -> Print( 2 );

p -> Print( 2, 6.9 );

}

void main( )

{

A * pa = new A;

B * pb = new B;

Show(pa);

Show(pb);

delete pa;

delete pb;

}

答案:

a = 2 ,

b = 4

a = 2 ,

b = 6

a = 2 ,

b = 4

a = 2 ,

b = 6

4、

#include

#include

class Person {

char * pName;

public :

Person(char * pN)

{ static int j = 0;

cout<< "第"<< ++j

<< "次调用类型转换构造函数!\n";

pName = new char[strlen(pN) + 1];

if(pName) strcpy(pName, pN);

}

Person(Person & p);

Person & operator = (Person & s);

~ Person( )

{ static int k = 0;

cout << "第"<< ++k

<< "次调用析构函数!\n";

pName[0] = '\0';

delete pName;

}

void Display( )

{ cout << pName << endl; }

};

Person::Person(Person & p)

{ cout << " 调用复制构造函数!\n";

pName=new char[strlen(p.pName)+ 1];

if(pName) strcpy(pName, p.pName);

}

Person& Person::operator = (Person & s) { cout << "调用赋值运算符函数!\n";

if(pName) {

delete pName;

pName = '\0';

}

pName=new char[strlen(s.pName) + 1];

if(pName) strcpy(pName , s.pName);

return * this;

}

void main( )

{

Person p1("OldObject");

Person p2 = p1;

p1.Display( );

p2.Display( );

Person p3("NewObject");

p3.Display( );

p3 = p1;

p3.Display( );

}

答案:

第1次调用类型转换构造函数!

调用复制构造函数!

OldObject

OldObject

第2次调用类型转换构造函数!

NewObject

调用复制构造函数!

OldObject

第1次调用析构函数!

第2次调用析构函数!

第3次调用析构函数!

5、

#include

using namespace std;

class A

{

public:

A() {m_nValue = -1;}

A(int n) {m_nValue = n;}

int m_nValue;

};

class B: virtual public A

{

public:

B(int nB, int nA) : A(nA) {m_nValueB = nB;} int m_nValueB;

};

class C: virtual public A

{

public:

C(int nC, int nA) : A(nA) {m_nValueC = nC;}

int m_nValueC;

};

class D: public B, C

{

public:

D(int nA, int nB, int nC, int nD) : C(nC, nA+20), B(nB, nA+10), A(nA+30)

{

m_nValueD = nD;

cout<< "(A,B,C,D)= "<< m_nValue << ","<

}

int m_nValueD;

};

void main() {D dd(1, 2, 3, 4);}

答案:

(A,B,C,D)= 31,2,3,4

6、

#include

#include

class Student {

char name[20];

public :

Student(char * n)

{ strcpy(name, n);

cout << " I am " << name <<“ .\n”; }

~Student(void)

{ cout << name <<“ says goodbye !" << endl; }

};

void main( )

{

Student student[3] = {"WangWei", "LiLin", "ZhangFeng"};

}

答案:

I am WangWei

I am LiLin

I am ZhangFeng

ZhangFengsays goodbye !

LiLinsays goodbye !

WangWeisays goodbye !

7、

#include

{

char c1,c2;

public:

Sample(char a){c2=(c1=a)-32;}

void disp()

{

cout<

}

};

void main()

{

Sample a('a'),b('b');

a.disp();

b.disp();

}

答案:

a转换为A

b转换为B

8、

#include

class Counter{

static long counter;

public :

Counter( ){ counter++; }

long GetCounter( ) { return counter; }

~Counter( ){ counter--; }

};

long Counter::counter = 5;

Counter c1, c2, c3;

void main( )

{ cout<<"(1)The object counter is %d"<< c3.GetCounter( ))<

Counter c4,c5,c6;

Cout<<"(2)The object counter is %d"<<

c5.GetCounter( ))<

}

答案:

(1) The object counter is 8

(2) The object counter is 11

9、

#include

class Sample

{

int n;

public:

Sample (int m){n=m;}

friend void square(Sample &s)

{

s.n=s.n*s.n;

}

void disp()

{

cout<<"n="<

}

};

void main()

{

Sample a(10);

square(a);

a.disp();

}

答案:

n=100

10、

#include

class Sample

{

int x;

public:

Sample(){ };

Sample(int a){x=a;}

Sample(Sample &a){x=a.x++ +10;}

void disp() {cout<<"x="<

void main()

{

Sample s1(2), s2(s1);

s1.disp();

s2.disp();

}

答案:

x=3

x=12

11、

#include

#include

using namespace std;

class Person

{

public:

Person(char *nam,int ag)

{ strcpy(name,nam); age = ag;

cout<<"Person类构造函数---"<

}

Person(char *nam)

{ strcpy(name,nam);

cout<<"Person类构造函数(char *nam)---"<

}

~Person()

{

cout<<"Person类析构函数---"<

}

void display()

{

cout<<"姓名:"<

}

protected:

char name[100];

int age;

};

class Teacher: public Person // 声明Teacher(教师)类

{

public: // 公用部分

Teacher(char *nam,int a,char *t):Person(nam,a) // 构造函数 { strcpy(title,t);

cout<<"Teacher类构造函数"<

}

~Teacher()

{

cout<<"Teacher类析构函数"<

}

void display1() // 输出教师有关数据{

cout<<"姓名:"<

cout<<"年龄"<

cout<<"职称:"<

}

protected: // 保护部分

char title[10]; // 职称

};

class Student: public Person

{

public:

Student(char *nam,char s,float sco):Person(nam)

{ sex=s; score=sco;

cout<<"Student类构造函数---"<

}

Student(char *nam, char s):Person(nam)

{ sex=s;

cout<<"Student类构造函数---班长:"<

}

~Student()

{

cout<<"Student类析构函数---"<

}

void display2() // 输出学生有关数据{

cout<<"姓名:"<

cout<<"性别:"<

cout<<"成绩:"<

}

char *get_name()

{

return name;

}

protected: // 保护部分

char sex;

float score; // 成绩

};

class Graduate: public Teacher, public Student

{

public:

Graduate(char *nam,int a,char s,char *t,float sco,float

w):Teacher(nam,a,t),Student(nam,s,sco),wage(w),monitor("Li Ming",'m') {

cout<<"Graduate类构造函数"<

}

~Graduate()

{

cout<<"Graduate类析构函数"<

}

void show( ) // 输出人员的有关数据{

cout<<"name:"<

cout<<"age:"<

cout<<"sex:"<

cout<<"score:"<

cout<<"title:"<

cout<<"wages:"<

cout<<"monitor:"<

}

Student monitor;

private:

float wage; // 工资

};

class Doctor:public Graduate

{

public:

Doctor(char *nam,int a,char s,char *t,float sco,float w,char *tutor): Graduate(nam,a,s,t,sco,w)

{ strcpy(tutor_name, tutor);

cout<

}

private:

char tutor_name[20];

};

int main()

{

Doctor d("Wang-li",24,'f',"assistant",89.5,1234.5,"Wang-wu");

return 0;

}

答案:

Person类构造函数---Wang-li

Teacher类构造函数

Person类构造函数(char *nam)---Wang-li

Student类构造函数---Wang-li

Person类构造函数(char *nam)---Li Ming

Student类构造函数---班长:Li Ming

Graduate类构造函数

Wang-wu

Graduate类析构函数

Student类析构函数---Li Ming

Person类析构函数---Li Ming

Student类析构函数---Wang-li

Person类析构函数---Wang-li

Teacher类析构函数

Person类析构函数---Wang-li

12、

#include

using namespace std;

class A{

public:

virtual void Print(int a, int b=5)

{ cout << "a = " << a << " , b = " << b << endl; } };

class B : public A {

public:

virtual void Print(int a)

{ cout << "a = " << a << endl; }

virtual void Print(int a, double d)

{ cout << "a = " << a << " , d = " << d << endl; } };

void Show(A * p)

{

p -> Print( 2, 6.9 );

p -> Print( 2 );

}

void main( )

{

A * pa = new A;

B * pb = new B;

Show(pa);

Show(pb);

delete pa;

delete pb;

}

答案:a = 2 , b = 6

a = 2 ,

b = 5

a = 2 ,

b = 6

a = 2 ,

b = 5

四、补全程序题

1、完成下面类中成员函数的定义。

#include

using namespace std;

class vehicle

{

________get(){return speed/10;}

};

int max(___________)

{

if(v1.get()>v2.get()) return 1;

else return 2;

}

答案:

virtual int

vehicle &v1,vehicle &v2

[解析]在基类和派生类都有get函数,输出结果是2,只有当这两个不同类型的对象,调用不同类的get函数,才能使结果为2,这就是多态性。所以将基类get定义为虚函数。max函数使用基类对象的引用的方法来实现。

2、完成下面类中成员函数的定义。

#include

#include

using namespace std;

class str

{

private:

char *st;

public:

str(char *a) {set(a); }

str & operator=(_________) {delete st; set(a.st); return *this; }

void set(char *s)//初始化st

{_________ strcpy(st,s); }

};

答案:

str &a

st=new char[strlen(s)+1];

[解析]对“=”运算符进行重载,调用时s2=s1,都是对象,所以形参使用对象的引用,不要使用对象作为形参(产生临时对象)。使用strcpy进行字符的复制,st必须有一定的空间,空间是strlen(s)+1(‘\0’作为结束符,strlen得到的长度不包括结束符)

3、在下面程序横线处填上适当内容,使程序执行结果为: S=2 S=5 S=9

#include

void sum(int i)

{

static int s; _________;

}

void main (void)

{

for (i=0;________) sum(i);

}

答案:

s=s+i+2;

i<3,i++

[解析]根据结果和调用形式,得出规律。注意静态成员能保留上次运行的结果。循环了3次,退出循环的条件。

4、下面是根据边长计算三角形面积的C++程序,在下划线处填上正确的语句。

#include

#include

void main()

{

double a,b,c;

cout<<"Input a b c:";

______________________

_____________________ //判断是否三角形,若是,则执行面积计算代码

{

cout<<"The area is:"<

}

else cout<<"Error"<

}

答案:

cin>>a>>b>>c;

if(a+b>c&&a+c>b&&c+b>a)

5、完成下面类中成员函数的定义。

#include

using namespace std;

class Counter

{

unsigned value;

_ public __ :

Counter( ) { value = 0; }

___________________operator ++(Counter &a); //前置增量运算符函数。

void Print( );

};

Counter ____________

{

a.value++; //把Counter类对象的value值增1

cout << " 调用前置增量运算符函数 !\n";

return a; //该函数的返回值是value值增1后的对象

}

void Counter::Print( )

{

static int i = 0;

cout << "(" << i << ") 对象的value值 = " << value << endl; }

void main( )

{

Counter c ;

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

c.Print( );

答案:

friend Counter

operator ++(Counter &a )

6、完成下面类中成员函数的定义。

#include

#include

using namespace std;

_____________________

{

private:

char *st;

public:

_________________ {set(a); }

str & operator=(_________)

{ delete st;

set(a.st);

return *this;

}

void set(______________) //初始化st

{ ____________________

strcpy(st,s); }

};

答案:

class str

str(char *a)

str &a

char *s

st=new char[strlen(s)+1];

7、在下面程序横线处填上适当内容,使程序执行结果为: S=2 S=5 S=9 #include

___________________

{

static int s;

__________________

__________________

}

void main (void)

{

for (i=0;____________________)

{

S = sum(i);

____________________

}

cout<

}

答案:

int sum(int i)

s=s+i+2;

return s;

i<3,i++

cout<<"S="<

8、下面是根据边长计算三角形面积的C++程序,在下划线处填上正确的语句。#include

#include

_____________________________

void main()

{

double a,b,c,s;

cout<<"Input a b c:";

______________________

_____________________ //判断是否三角形,若是,则执行面积计算代码 {

______________________

cout<<"The area is:"<

}

else cout<<"Error"<

}

double area(double a, double b, double c)

{

double s;

s = (a+b+c)/2.0;

s = sqrt(s*(s-a)*(s-b)*(s-c));

_____________________

答案:

double area(double a, double b, double c);

cin>>a>>b>>c;

if(a+b>c&&a+c>b&&c+b>a)

s=area(a,b,c);

return s;

五、改错题

1、以下程序可动态分配二维数组并释放内存,且可实现二维指针和一维指针复用,试问程序能否正常运行,如不能运行找出原因并改正之。

void ** fspace_2d(int row,int col,int lenth)

{

int i;

char *p = (char *)calloc(lenth, row*col);

void **b = (void **)calloc(sizeof(void *),row);

for(i=0;i

b[i] = (void*) (p + i*col*lenth);

return(b);

}

void ffree_2d(void **a,int row)

{

int i;

for(i=0;i

free(a);

}

答案:

运行内存访问错。ffree_2d函数体改写为

void ffree_2d(void **a,int row)

{

free(a[0]);

free(a);

}

2、

#include

template class A

{

private:

T x,y,s;

public:

A(T a,T b) {x=a,y=b;s=x+y;}

void show() {cout<<"x+y="<

};

void main()

{

A add(10,100);

add.show();

}

答案:

[修改]A add(10,100); [解析]A add(10,100);类模板的使用,参数实例化后生成模板类。用类模板定义对象时要指定

3、

#include

class Test

{

private:

int x,y=20;

};

答案:

int x,y=20;在类内部不能对数据成员直接赋值。[修改]int x,y;

4、要求下面程序的输出结果为1,试指出程序中的错误,并改正

#include

using namespace std;

class A

{

int fun(int i,int j) {x=i;y=j;}

};

void main()

{ a1.fun(2); }

答案:

void fun(int i,int j)调用时有一个参数,形参有两个,可以使第二个带默认值。[修改]void fun(int i,int j =-1)

5、

#include

using namespace std;

class A

{

int x;

int y;

public:

A(int i,int j){x=i;y=j;}

};

答案:

private:在基类中是私有成员,即使采用公有派生,但在派生类无法访问。[修改]public:或protected:

6、指出下面的代码中的一处错误,并更正后写出运行结果。

#include

using namespace std;

template class A

{

private:

T x,y,s;

public:

A(T a,T b) {x=a,y=b;s=x+y;}

void show() {cout<<"x+y="<

};

void main()

{

A add(1.5,5.3);

add.show();

华科面向对象的程序设计题库

1、编译时的多态性通过__重载__函数实现。 2、面向对象的四个基本特性是_抽象__、__多态性_、__继承性__和_封装性_。 3. 假定AB为一个类,则执行“AB a(2), b[4],*p[4];”语句时调用该类构造函数的次数为__5__。 4.要实现动态联编必须通过对象指针或引用来调用_虚函数_实现。 5.在函数前面用_ inline _保留字修饰时,则表示该函数表为内联函数。 6.如果将一个对象说明为常对象,则通过该对象只能调用它的__常成员__函数。 7、非成员函数应声明为类的__友元___函数才能访问这个类的private成员。 8、在用class定义一个类时,数据成员和成员函数的默认访问权限是_ 私有____。 9、运算符重载函数可能是类的_友元_函数,也可以是类的_成员_函数,还可以是普通函数。 10、__转换构造函数__函数可以将一个指定的数据转换为类的对象,_类型转换函数_函数实现类的对象转换成其它类型的数据。 11、静态多态性是通过函数重载、运算符重载、模板来实现。 12、假定AB为一个类,则执行“AB a(10), b[1],*p[10];”语句时调用该类构造函数的次数为1。 13、C++类成员函数有public、private、protected 三种类型。 14、如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数。 15、为使外部函数可访问类的私有成员,需将该函数声明为该类的友元函数。 16、类B是由类A以保护方式派生的,则类A中公有访问属性的数据成员在类B中的访问属性为保护。 17、+、=、[]、->等四种运算符中,可采用友元函数重载的运算符是+。 18、抽象类是指具有纯虚函数的类,它只能作为基类来使用。 19、类B是由类A以保护方式派生的,则类A中私有访问属性的数据成员在类B中的访问属性为不可访问。

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

面向对象程序设计的实训案例的设计

面向对象程序设计的实训案例的设计 一.引言 今天,面向对象编程技能作为应用软件设计人员的基本工作技能在软件业内已经深入人心:任何一个应用软件设计求职者如果敢于声称自己对面向对象编程一无所知,哪怕他其他方面再优秀,也会被公司拒绝;任何一家招聘应用软件设计职位的公司如果在招聘条件中没有列出“熟悉精通面象对象编程”这个条件,该公司一定认为这是默认的条件,没有单独列出的必要。 遗憾的是,应届大学大专毕业生动手能力不强已成为各软件用人单位的另一个共识,而把,等面向对象语言仅仅当作开发网站快速上手的工具的初学者更是大有人在。面对大街上扑天盖地的各类“计算机职业教育广告”,身为一名计算机专业教师,我觉得有必要为提高学生们的面向对象程序设计水平做点什么了。 提高学生的程序设计水平,公认最佳的途径就是多动手实践。在不给学生加负的前提下,精心选择,设计有代表性的实训案例,切实提高实训的效果,就显得尤为重要。 二.案例的评价标准 一个针对初学者的面向对象程序设计的实训案例应由案例的现实原型,案例分析设计和参考代码三个部分组成。其评价标准大致如下: 1.案例的现实原型应是同学们熟悉的题材,规模和复杂度相对较小,初学者容易把握主题。 2.案例的分析应体现出面向对象的思维方式,让同学们感受到“万物皆对象”,用面向对象的方式构建软件是一件自然而然的事情。 3.案例的设计要结构清晰,具备一定的健壮性和扩展性;在不影响结构优雅的前提下,尽可能全面应用到抽象类,接口,继承,多态,重载,覆盖等 面向对象基本特性,体现面向对象编程的特点。 4.案例的参考代码由源码实现,和伪代码相比,初学者对能编译运行的源代码更有好感。 三.案例的现实原型: 根据案例的评价标准,我选择了大家都比较熟悉的餐厅结账作为我们案例的现实原型,其功能要求如下: 1.程序功能: 这是一个餐厅计费的小程序;根据用户提供的消费清单和所应享受的折扣,算出最后用户的账单;根据用户选择,决定是否继续计算; 2.用户界面: 控制台命令行显示输出信息和接受用户输入信息; 3.折扣规定: 餐厅经营普通食品,海鲜,酒水三大类食品,其享受的折扣不同;折扣分为“进餐等待折扣”“折扣”“代金券折扣”三种。 . 进餐等待折扣:普通食品折,酒水折,海鲜不打折; 折扣:菜单总价折; 代金券折扣:总价每消费,可使用代金券,直接从总价中扣除; 补充说明:如果同时满足折扣,折扣,只能享受折扣. .帐单规定: 显示消费的食品的每条记录和单价;显示总共应付费用;显示享受折扣的名称和

计算机程序设计实践

江苏科技大学 课程实践报告 设计题目: 计算机程序设计实践(VC++) 设计时间: 2015. 3.9 至2015. 3.16 学院: 数理学院 专业班级: 13级信息与计算科学1班 学生姓名: 陈明敏学号1340501101 指导老师: 华伟 2015年5月1日

一、 实践任务 任务一:试建立一个类SP ,求(,)123k k k k f n k n =++++ ,另有辅助函数power ()用 于求 n m 。具体要求如下。 (1)私有数据成员。 Int n ,k :存放公式中n 和k 的值。 (2)公有成员函数。 ①SP(int n1,int k1):构造函数,初始化成员数据n 和k 。 ②int power(int m,int n):求n m 。 ③int fun():求公式的累加和。 ④void show():输出求得的结果。 二、源程序清单 #include class SP{ private: int n,k; public: SP(int n1,int k1); int power(int m,int n); int fun(); void show (); }; SP::SP(int n1,int k1){ n=n1; k=k1; } int SP::power(int m,int n){ int a=m; for(int i=1;i

华中科技大学工程测试与信息处理 作业及答案

1 请给出3种家用电器中的传感器及其功能。 洗衣机:水位传感器 冰箱:温度传感器 彩电:亮度传感器 热水器:温度传感器 空调:温度传感器 2 请给出智能手机中用到的测试传感器。 重力传感器、三维陀螺仪、GPS 、温度传感器、亮度传感器、摄像头等。 3 系统地提出(或介绍)你了解的(或设想的)与工程测试相关的某一(小)问题。考虑通过本门课程的学习,你如何来解决这一问题。(注意:本题的给出的答案将于课程最后的综合作业相关联,即通过本课程的学习,给出详细具体可行的解决方案) 第二章 普通作业1 请写出信号的类型 1) 简单周期信号 2) 复杂周期信号 3) 瞬态信号 准周期信号 4) 平稳噪声信号 5) 非平稳噪声信号 第二章 信号分析基础 测试题 1. 设时域信号x(t)的频谱为X(f),则时域信号(C )的频谱为X(f +fo )。 A . B. C. D. 2. 周期信号截断后的频谱必是(A )的。 A. 连续 B. 离散 C. 连续非周期 D. 离散周期 3. 不能用确定的数学公式表达的信号是 (D) 信号。 A 复杂周期 B 非周期 C 瞬态 D 随机 4. 信号的时域描述与频域描述通过 (C) 来建立关联。 A 拉氏变换 B 卷积 C 傅立叶变换 D 相乘 5. 以下 (B) 的频谱为连续频谱。 A 周期矩形脉冲 B 矩形窗函数 C 正弦函数 D 周期方波 6. 单位脉冲函数的采样特性表达式为(A ) 。 A )(d )()(00t x t t t t x =-?∞ ∞-δ B )()(*)(00t t x t t t x -=-δ C )()(*)(t x t t x =δ D 1)(?t δ 思考题 1) 从下面的信号波形图中读出其主要参数。

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.doczj.com/doc/0d4918939.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

完成Java面向对象程序设计实验课的心得体会范文

Java面向对象程序设计实验课的心得体会经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识。 学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,Java面向对象程序设计是一门实践性比较强的课程,在实际中,我们必须把理论和实践结合起来。在实验中,我们理解理论课上的知识,然后运用到实际的操作中,我们必须在现有的理论的基础上,进行实践。多次实验后,也让我看到了现在学习的一个很大弱点:只听不练,永远不会熟练运用;空记技巧,忽略思想,会在多变的习题中十分无奈。 Java思想:Java是一门面向对向语言,他定义一切都是对象面向对象,就是面对现实; 现实中的一切都是对象,他们有分类,就产生了“类”; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。

所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等 原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为“类”。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。 面向对象的编程思想就要想近世代数的分析思想,首先要确定“论域”,即工程所涉及到的所有的“对象”,然后要分类处理,把隶属同一类别的对象集合在一起(做成一个集合),定义他们之间的运算性质及可以进行的操作,这样就构建了一个类,当然以后用到这个类的对象时都要通过已经定义了的操作来完成各项功能,这就是常要求的类的“类的成员变量要通过共有函数来操作”。 我想真正的面向对象编程思想不应该是编程思想,应该是面向对象的分析方法才对! 我的理解: 1、将分析过程为抽象的过程:简言之:分成多个小问题(组成部分),

计算机程序设计(C)综合实践

计算机程序设计(C)综合 实践 设计报告 学院:电子通信与物理学院 设计名称:职工信息管理系统 专业班级:电子信息科学与技术14-2 学生:本良 学号: 201401100211 组号: 140203 指导教师:宋戈 完成时间: 2015年 7月23日

目录 第1部分实训题目与要求 (2) 1. 问题提出 (2) 2. 功能要求 (2) 3. 任务分工 (2) 第2部分设计实训题目功能......................................................................... . (3) 1. 总体设 计...................................................................... (3) 2. 数据结 构...................................................................... (4) 3. 程序设 计...................................................................... (5) 4. 测试与调 试......................................................................

(8) 第3部分实训总结......................................................................... . (12) 1. 个人总 结...................................................................... (12) 2. 结束 语...................................................................... (12) 第4部分参考文献......................................................................... . (13) 《C程序设计综合实践》评分表......................................................................... (14)

面向对象程序设计试题

《面向对象程序设计》试题(补考) (闭卷考试) 班级:学号:姓名: 1. 单项选择题(每小题3分,共60分) 1)C++语言对C语言做了很多改进。C++语言相对于C语言的最根本的变化是 ( )。 A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 2)下列描述中,不属于面向对象思想主要特征的是( )。 A.封装性B.跨平台性 C.继承性D.多态性 3)每个C++程序中都必须有且仅有一个( )。 A. 类 B. 预处理命令 C. 主函数 D. 语句 4)sizeof(float)是( )。 A. 一个双精度型表达式 B. 一个整型表达式 C. 一种函数调用 D. 一个不合法的表达式 5)设有int x=11;,则表达式(x++*2/3)的值是( )。 A. 7 B. 8 C. 11 D. 12 6)在下面的二维数组定义中,正确的是( )。 A. int a[5][]; B. int a[][5]; C. int a[][3]={{1,3,5},{2}}; D. int a[](10);

7)设有程序代码: int k=10; while(k=0) k=k-1; 则下面描述中正确的是( )。 A. 循环执行10次 B. 无限循环 C. 循环体语句一次也不执行 D. 循环体语句执行一次 8)对表达式for(表达式1; ; 表达式3)可理解为( )。 A. for(表达式1; 0; 表达式3) B. for(表达式1; 1; 表达式3) C. for(表达式1 ; 表达式3;) D. for( ; ; 表达式3) 9)下面的哪个选项不能作为函数的返回类型? ( )。 A.void B.int C.new D.long 10)有如下说明: int a[ ]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a; 则下面哪一个表达式的值为9 ( )。 A. *p+9 B. *(p+8) C. (*p += 9) D. p+8 11)有如下函数定义: void func(int a, int &b) {a++; b++;} 若执行代码段: int x=0, y=1; func(x, y); 则变量x和y值分别是( )。 A.0和1 B.1和1 C.0和2 D.1和2 12)下列写法正确的是( )。 A. int *p = 15; B. const int a; a=15; C. int& b; D. int b = 15; int* a = &b; 13)下列选项中,与实现运行时多态性无关的是( )。 A.重载函数B.虚函数C.指针D.引用 14)拷贝构造函数的参数一般是( )。 A. 某对象名 B. 某对象成员名 C. 某对象的引用名 D. 指向对象的指针名 15)对类的构造函数和析构函数描述正确的是( )。 A.构造函数可以重载,析构函数不能重载

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

华中科技大学C++实验总结报告(图形编辑器)

C++ 实验总结报告 研究课题:图形编辑器 学校:华中科技大学 院系: 班级: 姓名: 指导老师:

一、实验目的 1.熟悉C++的一些重要性质,利用封装、继承、虚 函数和多态性等特性,通过实验学习如何对各类 图元的属性和方法进行合理的封装 2.学习Microsoft的Visual C++编程工具 3.掌握MFC的相关知识 4.掌握基本的文件保存、读取以及操作封装技术 二、实验目的 设计一个简单的图形编辑器 三、实验所用仪器、设备 计算机:PentiumIII 800 以上 256M内存 操作系统:Windows 2000/XP 开发集成环境:Visual C++ 6.0 四、软件功能简介 (注:此软件是从网上下载得来) 该软件具有汉化的菜单界面(仿Windows自带画图软件),具有文件打开、编辑、保存等功能。编辑部分包括可以在编辑区域画直线、圆、矩形、曲线等矢量图

形,可插入文字,可以修改线条的线型、颜色等基本属性。 五、部分代码分析 1.直线类代码: class CCreateLine : public CCommand { private: Position m_begin; // 直线的起点 Position m_end;// 直线的终点 public: CCreateLine() ; ~CCreateLine() ; int GetType(); int OnLButtonDown(UINT nFlags, const Position& pos) ; int OnMouseMove(UINT nFlags, const Position& pos) ; int OnRButtonDown(UINT nFlags, const Position& pos) ; int Cancel() ; } ; 学习C++我们最需要理解的就是它面向对象的设计思想。这种思想可以在类和对象上得到充分的体现。 类是面向对象程序设计的核心,它实际上是由用户定义的一种新的复杂数据类型。它是通过抽象数据类型ADT方法来实现的一种数据类型, 将不同类型的数据和与这些数据相关的操作封装在一起形成一个集合体。 因此,它具有更高的抽象性,实现了信息的隐藏和封装。 对象是某种类的一个实例,是类的具体体现。一个类可以有多个对象。 分析这一段代码,编程者将直线的起始点和终止点设置为私有成员,这样做就对整条直线实现了隐藏和保护,是面向对象中封装特性的一个具 体体现;另外,此函数中还包含了构造函数与析构函数,构造函数完成对 新对象的初始化工作,析构函数是构造函数的配对物,它实现与构造函数 相反的功能。另外的几个成员函数名称形参返回值都与class Ccommand 中 的几个公有函数相同,而在class Ccommand中,这几个函数都是虚函数,这是函数重载,也是多态性的具体体现。 由这段代码我们可以了解关于类和对象的一些知识,为我们进一步了

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

《面向对象程序设计》实验指导书(实验二)

实验二类与对象㈡——对象初始化、对象数据与指针 一、实验目的 1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类; 2.理解this指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法; 3.熟悉类与对象的应用及编程。 二、实验学时 课内实验:2课时课外练习:2课时 三本实验涉及的新知识 ㈠构造函数与析构函数 在C++中,提供了两个特殊的成员函数,即构造函数和析构函数。 构造函数用于对象的初始化,即在定义一个类对象时,计算机在给对象分配相应的存储单元的同时,为对象的数据成员赋初值。 析构执行的是与构造函数相反的操作,用于撤销对象的同时释放对象所占用的内存空间。 1.构造函数 ⑴构造函数的定义 格式: 类名(形参表) { 构造函数体} ⑵构造函数的调用 构造函数的调用是在定义对象时调用的。 格式:类名对象名(实参表); 类名对象名=构造函数名(实参表); ⑶说明 ①构造函数必须与类同名。 ②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。 ③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。 ④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。 ⑤不能象普通成员函数一样单独调用。 2.析构函数 ⑴析构函数的定义 格式: ~类名(void) { 析构函数体} ⑵析构函数的调用 析构函数是在撤销对象时自动调用的。 ⑶说明

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

华科《Java程序设计》试卷

一、单项选择题(本大题共15小题,每小题2分,共30分) 1.Java应用程序经过编译后会产生一个中间代码文件,其扩展名为(B )A..java B..class C..html D..exe 2.下述字符组合不能作为Java程序标识符的是(D ) A.Aa12 B.大x C.y小D.5x 3.在下述Java语句中,错误的创建数组的方法是( D ) A.int intArray [ ]; intArray=new int[5]; B.int intArray [ ]=new int[5]; C.int [ ] intArray ={1, 2, 3, 4, 5}; D.int intArray [5]={1, 2, 3, 4, 5}; 4.在Java语言中,不允许使用指针体现出的Java特性是( B )A.可移植B.安全性C.健壮性D.解释执行5.下述关于Java构造函数的描述不正确的是( A ) A.类必须有显式定义的构造函数 B.构造函数的名字必须与它所在的类的名字完全相同 C.构造函数没有返回值类型 D.一个类可以定义多个构造函数 6.下列程序代码中,哪行会出错?(C ) 1) public void modify() { 2) int I, j, k; 3) I = 100; 4) while (I > 0) { 5) j = I * 2;

6) System.out.println(" The value of j is " + j); 7) k = k + 1; 8) I--; 9) } 10) } A.line 4 B.line 6 C.line 7 D.line 8 7.在一个Java文件中,import、class和package正确的先后顺序是(A )A.package import class B.import package class C.package class import D.class package import 8.下述关于Java中定义的父类与子类的关系描述正确是的( C )A.一个子类可以有多个父类,一个父类也可以有多个子类 B.一个子类可以有多个父类,但一个父类只可以有一个子类 C.一个子类可以有一个父类,但一个父类可以有多个子类 D.上述说法都不对 9.如下的程序代码体现了Java的面向对象特征中的(C ) class ClassA { …… public void aMethod(String s) { …… } public void aMethod(int i) { …… } public void aMethod(int i, float f) { …… } } A.封装B.继承C.重载D.重写

相关主题
文本预览
相关文档 最新文档