文档库 最新最全的文档下载
当前位置:文档库 › C++教程第07章_类与对象-5_类的静态成员及常量

C++教程第07章_类与对象-5_类的静态成员及常量

C++教程第07章_类与对象-5_类的静态成员及常量
C++教程第07章_类与对象-5_类的静态成员及常量

7章类与对象

7.1 类和对象(定义及使用)初步

7.2成员函数的重载

7.3 对象的初始化、构造函数与析构函数

7. 4 类的定义及其使用

7. 5 类的静态成员及常量成员

7.5.1静态成员

7.5.1.1静态成员数据

1.静态成员数据的定义,与静态类型的变量的定义方式一样,要在成员数据的定义之前加关键字static。

2.静态成员数据必须有确定的值,但由于在类的定义中不能对成员数据直接进行初始化,故必须在类定义的外部对静态成员数据再声明一次,并进行初始化,此时,前面不需要加关键字static。同时为了保持静态成员数据取值的一致性,一般在类的构造函数中不给静态成员数据设置初值。对静态成员数据初始化的顺序为它们在类体外声明的顺序.

3.在同一个程序中,当一个类有多个对象时,则这些对象中的静态成员数据都共享同一个存储空间,即在定义类时,就为静态成员数据分配存储单元,以后创建该类的对象时,将不再为该静态成员数据分配存储单元,也不会对该静态成员数据初始化。

静态成员数据初始化格式:

<类型><类名> ::<静态成员数据> = <数值> ;

4.类的静态成员数据具有全局变量的某些特征,比如在程序开始运行时就为静态成员数据分配存储空间,但它只有类的作用域。即在执行main()之前,首先对静态成员数据和全局变量分配存储空间并进行初始化,当整个程序结束时才撤消静态成员数据和全局变量。5.静态成员数据也可以分为公有的、私有的和受保护的静态成员。

对公有静态成员,即可以通过类的对象进行访问,也可以通过类名直接访问(这是静态成员数据与一般成员数据的另一个区别)。格式:

<类名>::<静态成员数据>

私有的和保护的静态成员数据则只能被该类的公有成员函数访问。

6.值得注意的是,在创建任何对象之前,类的静态成员数据已经存在并可以引.

7.静态成员数据也可以是用户自定义类型的数据。

7.5.1.2静态成员函数

1.定义静态成员函数时,只要在成员函数名前用关键字static修饰即可。

2.静态成员函数属于整个类,它是由该类的所有对象所共享的成员函数,它不属于某个对象。因此它不含有隐含的*this指针参数,故它不能像普通成员函数那样直接访问对象中的非静态的成员(成员函数和成员数据),即

静态成员函数只能访问所在类的静态的成员(成员函数和成员数据)、全局变量、外部函数等。(因为它们不属于任一个特定对象)。

3。静态成员函数若要访问非静态成员,则必须借助于类的对象(对象名或指向对象的函数参数)。

4.静态成员函数首先是一个成员函数,它可以定义为内联函数,也可以在类体外定义,但此时函数名前不必加关键字static.

5.可以通过所在类的对象访问静态成员函数(公有的)外,还可以通过类名直接访问,格式为:

<类名>::<静态成员函数名>(<实参表>)

6.静态成员函数不能为const成员函数。

7.5.1.3 静态成员数据和静态成员函数应用举例

例1 静态成员数据的定义及应用

# include

# include

class CCounter

{ static int count ;//定义静态成员数据

int objnumber ; //表示对象编号

public :

CCounter( )

{ count ++ ;objnumber=count ;}

void Show ( )

{ cout<<”obj”<

} ;

int CCounter::count=0 ;//A 在类定义外声明静态成员数据并初始化,如果不赋初值,

//可以不赋初值,此时系统会自动赋初值0。

void main ( )

{ CCounter obj 1;

obj1.Show( ) ;

cout<<”----------------------\n “ ;

CCounter obj2 ;

obj1.Show ( ) ;

obj2.Show( ) ;

cout<<”----------------------\n “ ;

CCounter obj3 ;

obj1.Show ( ) ;

obj2.Show ( ) ;

obj3.Show ( ) ;

}

执行结果:

obj1 count=1

----------------------

obj1 count=2

obj2 count=2

----------------------

obj1 count=3

obj2 count=3

obj3 count=3

得注意的是,在创建任何对象之前,类的静态成员数据已经存在并可以引用。

例2 分析程序输出的结果

类的静态成员数据具有全局变量的某些特征,在执行main()之前,首先对静态成员数据和全局变量分配存储空间并进行初始化,当整个程序结束时才撤消静态成员数据和全局变量,但它只有类的作用域。

得注意的是,在创建任何对象之前,类的静态成员数据已经存在并可以引用

# include

class A

{ int i ;

static int x ;

public :

static int y ;

A ( int a , int b , int c )

{i=a , x=b , y =c ;}

void print ( )

{ cout<<”i=”<

} ;

int A ::x=0 ;

int A ::y=0 ;

void main ( )

{count <<’y=”<

a.print () ;

A b(100 ,200 ,300) ;

a.print () ;

b.print () ;

A::y=400 ; //C,私有静态成员数据不可以直接赋值。b.print () ;

执行结果:

y=0

i=11 x=22 y=33

i=11 x=200 y=300

i=100 x=200 y=300

i=100 x=200 y=400

例:静态成员数据的生存期

静态成员数据也可以是用户自定义类型的数据。

#include

class A

{ int i ;

public :

A (int x ){i=x ; cout<<”x=”<

~ A( ){cout<<”x=”<

} ;

class B

{ static A a ;声明静态成员数据

static A c ;

public :

B ( ) {cout<<”调用构造函数B()\ n ”;}

~B ( ) {cout<<”调用析构函数~B()\ n ”;}

};

A B ::a (10) ;//C 在类体外声明静态成员数据并初始化

A B ::c (5) ;//D

A a1 (20) ; //定义用户自定义类型的全局变量并初始化

void main ( )

{ cout<<”main()函数开始!\ n “;

B b ;

cout<<”main()函数结束!\ n “;

}

执行结果:

x=10 调用构造函数A()

x=5 调用构造函数A()

x=20 调用构造函数A()

main ( )函数开始

调用构造函数B()

main ( )函数结束

调用析造函数~B()

x=20 调用析造函数~A()

x=5 调用析造函数~A()

x=10 调用析造函数~A()

注意:

在执行main()之前,首先对静态成员数据和全局变量分配存储空间并进行初始化,当整个程序结束时才撤消静态成员数据和全局变量。

对静态成员数据初始化的顺序为它们在类体外声明的顺序,如将C行和D行颠倒,则输出的第1行和第2行将要颠倒,最后两行也要颠倒。

例3:静态成员函数的定义和使用

# include

void num_Show( ) ;

class CComputer

static float total ;

public :

static int num ;//创建对象的个数

CComputer ( float i)

{ price = i ;total+= i ;num++ ;}

void show ( )

{cout<<”The computer price is :“<

static void t_show( )//静态成员函数

{ num_Show() ;

cout<<”total price is:“ <

}

} ;

float CComputer::total=0 ;

int CComputer::num=0 ;

void num_Show( ) //输出类CComputer静态数据成员num

{cout<<”total number is:“<

void main ( )

{ CComputer ::t_show ( ) ;//通过类名直接访问静态成员函数

CComputer c1(3500) ;

c1.show( );

c1.t_show( ) ;

CComputer c2(4500) ;

c2.show( ) ;

CComputer::t_show( ) ; //A通过类名直接访问静态成员函数

} // c1.t_show( );c2.t_show( );

执行结果:

total number is: 0

total price is: 0

The computer price is : 3500

total number is: 1

total price is: 3500

The computer price is : 4500

total number is: 2

total price is: 8000

//A行通过类名访问其中的公有静态成员函数,该语句与如下任一语句等价:

c1.t_show( );

c2.t_show( );

例4:在静态成员函数中通过对象访问类的非静态成员

静态成员函数可以直接调用所属类的其他静态成员,但不能直接访问非静态成员(成员函数和成员数据),若要访问非静态成员,则必须借助于类的对象。

#include

class A

static int y;

public:

A (int x1 ,int x2)

{ x=x1 ;y=y+x2 ;}

static void show1( ) ;

static void show2(A a) ;

};

void A::show1( )

{ cout<<”y=”<

void A::show2 ( A a) //

{cout<<”x=”<< a . x <<” \t “<<”y=”<

//{cout<<”x=”<

void main( )

{ A a1(11 ,22) ;

a1.show1 ( ) ;//通过对象名访问

A::show2 ( a1) ; //通过类名访问

A a2(33,44) ;

A::show1( ) ; //通过类名访问

a2.show2(a2) ; // C通过对象名访问

}

对C,可换用用a1.show2(a2) ;或A::show2(a2) ; //对show1() ;同理

执行结果:

y=28

x=11 y=28

y=72

x=33 y=72 。

例7-6

z07p226L7-6

//program 7-6.cpp

#include

class claA

{ public:

double x,y;

static int num; //公有静态数据成员-- 供所有对象“共享”

//用于记录已通过构造函数生成了多少个对象。

claA() {

x=0; y=0;

num++; //每生成一个对象,num加1

}

claA(double x0, double y0) {

x=x0; y=y0;

num++;

}

static void staFun() //静态函数成员,输出静态数据成员num的当前值{ cout<<"current_num="<

};

int claA::num=0; //必须在类外(使用类名限定)初始化静态数据成员

void main()

{ claA obj(1.2, 3.4), *p;

cout<<"claA::num="<

claA::staFun();

cout<<"obj.num="<

obj.staFun();

claA A[3]; //说明具有3个对象的数组,将三次调用其构造函数

cout<<"claA::num="<

claA::staFun();

p = new claA(5.6, 7.8); 生成动态对象*p,将调用构造函数

cout<<"claA::num="<

claA::staFun();

cout<<"p->num="<num<<”\t”;

p->staFun();

}

程序执行后,屏幕显示结果为:

claA::num=1 current_num=1

obj.num=1 current_num=1

claA::num=4 current_num=4

claA::num=5 current_num=5

p->num=5 current_num=5

注意:

将claA类中的数据成员x、y以及num都说明为public公有型的,是为了在主调函数main中可以直接存取它们而使程序简单化,否则(对非公有型的数据成员),在类外存取它们时还要设立类似于getx()那样的公有成员函数。

7.5.2类的常量成员

const与对象、类的成员等结合使用时,会产生一些特殊的效果。

7.5.2 .1 const对象

1.const对象的特点与变量类似,即不能改变const对象中的成员数据,任何修改const 对象中的数据的操作在编译时都会出错。

2.const对象只能访问该cons对象中的const成员函数,而不能调用其他成员函数。3.const对象可以调用const对象的公有成员数据。

4.const对象不能被重新赋值,所以在创建对象时必须对该对象中的成员数据初始化,否则将会产生一些随机数。

5.将一个对象声明为const对象,则该对象中的所有成员数据均是常量。

创建const对象时,需要采用关键字const ,一般格式如下:

<类名>const <对象名>

const<类名><对象名>

关键字const与<类名>的位置可以互换。

7.5.2 .2const成员函数

关键字const与成员函数结合的方式有两种:

一种是:将const放在成员函数名的前面,表示该函数返回一个常量,该返回值不可改变。

与将const放在普通函数名前面类似。

第二种是:成员函数所特有的,即将const放在成员函数的参数表之后,此处所说的成员函数专指这种形式。

一般格式:

<类型><函数>(<参数表>)const ;

其中关键字const是函数类型的组成部分,在说明和定义这个函数时都不能省去。

1.不能在const成员函数中改变其所属类中成员数据的值,

2.不能在const成员函数中调用其所属类中的非const成员函数。

3.const对象只能调用const成员函数。

4.C++规定如下类型的两个函数:

void PrintAB ( ) ;

void PrintAB ( ) const ;

为不同的函数。

对于const放在函数名之前的情形则没有这种规定。

5.普通对象优先调用非const成员,如果没有非const成员函数,则调用同名的const成员函数。

7.5.2 .3const成员数据

const成员数据:只要求对象中的某些成员数据在程序运行过程中保持不变,可以在类中的将这些数据声明为常量类型,称为const成员数据。

1.const成员数据的声明的方式与一般常量变量的声明方式一样,只要在成员数据的声明之前加关键字const 。

2.const成员数据不能在定义类时直接赋值,因此必须且只能在类的构造函数中采用初始化成员列表的方法对该成员数据进行初始化。

7.5.2 .4 类的常量成员举例

例1 const对象的定义和使用

# include

class A

{ int a ;

public :

int b ;

A(int i ,int j) ;

void Set (int i , int j)

{a=i ; b=j ;}

void Print ( ) const//const成员函数

{ cout <<”a=”<

} ;

A ::A (int i ,int j)

{ a=i ;b=j ;}

void main()

{ A const a1(1,2) ; //创建const对象,必须对对象初始化,否则将会产生一些随机数const A a2 (3 ,4) ;

a1.Print() ; //调用const成员函数

a2.Print() ;

cout<

// a1.b=10 ; //A错误,试图改变const对象a1中的成员数据b

// a1.Set (10 ,20) ; //B错误,试图调用非const成员函数

}

执行结果:

a=1 b=2

a=3 b=4

4

例2 const成员函数的定义和使用

# include

class CSample

{ int a , b ;

public :

CSample (int x , int y )

{ a=x ;b=y ;}

~ CSample ( ) { }

void PrintAB( ) ;

void PrintAB( ) const;//const不能省

const void Test ( ) { }

} ;

void CSample ::PrintAB ( )

{ cout<<”调用函数CSample ::PrintAB() \n “ ;

cout<<”A=”<

}

void CSample::PrintAB () const //const不能省

{ cout<<”调用函数CSample:::PrintAB() const !\n “ ;

cout<<”A=”<

//a=2 ; //A

//Test ( ); //B

}

void main ( )

{ CSample s1 (11 ,22 ) ;

CSample const s2(33 ,44) ;

s1.PrintAB() ;

s2.PrintAB() ;

}

运行结果:

调用函数CSample::PrintAB()

A=11 B=22

调用函数CSample::PrintAB() const !

A=33 B=44

例3 const成员数据的定义和使用

# include

class CIncrement

{ int count ;

const int increment ;

public :

CIncrement (int c=0 , int i =1 ) ;

void addIncrement () {count+=increment:;}

void Print ( ) const;

} ;

CIncremen ::CIncrement (int c , int i) :increment ( i ) //A只能使用此方法。{ count=c ;}

void CIncrement ::Print ( ) const

{ //increment =2 ; //B出错,因为是const类型的成员。

cout<<”count=”<

}

void main ( )

{ CIncrement value (10 ,5) ;

cout<<”Before incrementing:”;

value.Print() ;

for (int j=1 ; j<=3 ;j++ )

{ value.addIncrement ( ) ;

cout<<”After increment”<

value.Print ( ) ;

}

}

执行结果

Before incrementing :count=10 increment=5

After increment 1: count=15 increment=5

After increment 2: count=20 increment=5

After increment 3: count=25 increment=5

注意,A行只能使用初始化成员列表的方法初始化const成员数据increment ,如果改为下面的表示,将出错:

CIncrement::CIncrement (int c , int i)

{

count=c ;

increment=i ; //C

} //则在编译到C行时就会出错。

小节:

const对象

1.const对象的特点与变量类似,即不能改变const对象中的成员数据,任何修改const对象中的数据的操作在编译时都会出错。

2.const对象只能访问该cons对象中的const成员函数,而不能调用其他成员函数。(见10.6.2)。

3.const对象可以调用const对象的公有成员数据。

4.const对象不能被重新赋值,所以在创建对象时必须对该对象中的成员数据初始化,否则将会产生一些随机数。

5.将一个对象声明为const对象,则该对象中的所有成员数据均是常量。

const成员函数

1.不能在const成员函数中改变其所属类中成员数据的值,

2.不能在const成员函数中调用其所属类中的非const成员函数。

3.const对象只能调用const成员函数。

4.C++规定如下类型的两个函数:

void PrintAB ( ) ;

void PrintAB ( ) const ;

为不同的函数。

对于const放在函数名之前的情形则没有这种规定。

5.普通对象优先调用非const成员,如果没有非const成员函数,则调用同名的const成员const成员数据

1.const成员数据的声明的方式与一般常量变量的声明方式一样,只要在成员数据的声明之前加关键字const 。

2.const成员数据不能在定义类时直接赋值,因此必须且只能在类的构造函数中采用初始化成员列表的方法对该成员数据进行初始化。

; ;

c++面向对象课程设计报告

课程设计报告 课程名称面向对象程序设计 课题名称学生成绩管理系统 专业计算机科学与技术 班级计算机 1001 学号 01 姓名 指导教师李珍辉陈淑红李杰军 2011年 12 月 28 日

湖南工程学院 课程设计任务书 课程名称面向对象程序设计 课题学生成绩管理系统 专业班级计算机1001 学生姓名 学号 01 指导老师李珍辉陈淑红李杰军 审批 任务书下达日期 2011 年 11 月 15 日 任务完成日期 2011 年 12 月 28 日

一、设计内容与设计要求 1.课程设计目的: 面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。 2.课题题目 1)公司库存管理系统 2)高校学籍管理系统 3)高校工资管理系统 4)高校人事管理系统 5)通讯录程序设计 6)学生成绩管理系统 7) 图书管理系统 8)文本编辑器的设计与实现 9)学生考勤管理系统 10)公司人员管理系统 3.设计要求: ⑴设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相 应题号的课题。随意换题者不记成绩。 ⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括 系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完 成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模 块图)。③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E -R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。④系 统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修 改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出 每一步的操作步骤。⑥关键源程序(带注释)

面向对象程序设计(C++) 实验指导书

实验 1 类和对象 1.1实验目的和要求 (1) 理解类和对象的概念,掌握声明类和定义对象的方法。 (2) 掌握构造函数和析构函数的实现方法。 (3) 初步掌握使用类和对象编制C++程序。 (4) 掌握对象数组、对象指针和string类的使用方法。 (5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。 (6) 掌握类对象作为成员的使用方法。 (7) 掌握静态数据成员和静态成员函数的使用方法。 (8) 理解友元的概念和掌握友元的使用方法。 1.2实验内容和步骤 1.输入下列程序 //test4-1.cpp #include using namespace std; class Coordinate { public: Coordinate(int x1,int y1) { x=x1; y=y1; } Coordinate(Coordinate &p); ~Coordinate() { cout<<”Destructor is calleded\n”;} int getx() {return x;} int gety() {return y;} private: int x,y; }; Coordinate::Coordinate(Coordinate &p) { x=p.x; y=p.y; cout<<”copy-initialization Constructou is called\n”; } int main() { Coordinate p1(3,4); Coordinate p2(p1);

Coordinate p3=p2; cout<<”p3=(“<

C#面向对象课程设计--拼图游戏

《C#程序设计》课程设计 题目:拼图游戏 专业:计算机科学与技术 学号: 姓名: 指导老师: 完成日期: 2012/12/26

《C#课程设计》评分标准 题目:拼图游戏专业:计算机科学与技术学号:姓名:

目录 1 前言 (4) 2 需求分析 (4) 要求 (4) 任务 (4) 运行环境 (4) 开发工具 (4) 3 概要设计与详细设计 (5) 系统流程图 (5) 结构功能图 (5) 4 编码与实现 (6) 编码分析 (6) 具体代码实现(附源代码) (9) 5 课程设计总结 (18) 参考文献 (19)

1.前言 拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。拼图的设计对每一个C#语言设计者进行语言提高和进阶都是一个很好的锻炼机会。拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高C#开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。一个3×3的魔板,有一个格子是空的,其他格子内随机放置1-8共8个编号的方块,通过单击任意一个与空格子相邻的方块可以把该方块移入空格子,不断的移动方块,直到方块按照图片的原来的顺序排好。 2 需求分析 要求 (1)用C#语言实现程序设计; (2)利用PictureBox控件来实现图片的移动 (3)超过200步提示重新来 (4)界面友好(良好的人机互交),程序要有注释。 任务 (1)制作流程图 (2)编写代码; (3)程序分析与调试。 运行环境 (1)WINDOWS2000/XP/win7系统 (2)编译环境 开发工具

1.面向对象程序设计---课程设计指导书

《面向对象程序设计课程设计》课程设计指导书 一、目的 本课程设计的目标,是以面向对象编程思想进行程序设计为中心。 通过课程设计,使学生了解面向对象分析和设计的基本概念. 熟悉巩固UML工具在面向对象分析和设计中的作用,学会使用UML对系统建模。 能够利用面向对象思想到实际编程应用中去,为今后从事软件开发工作打下基础。 通过课程设计,培养学生针对实际问题,采用面向对象思想来分析问题、解决问题的能力,进一步提高学生独立编程的能力。 二、要求 1.明确学习目的,端正学习态度,提高对课程设计重要性的认识,以积极认真的态度参加课程设计工作,按要求完成规定的设计任务。 2.培养正确的设计思想,严谨的工作作风,提高对所学知识应用和分析能力、解决问题的能力,提倡独立思考、刻苦钻研和创新的精神。 3.严格要求、自觉遵守纪律,必须按规定的时间完成设计。缺勤累计时间超过实际设计时间三分之一及以上者,课程设计成绩按不及格处理;不服从指导教师的安排,违反设计纪律,影响设计工作正常进行者,指导教师有权停止其设计工作,成绩以0分计。 4.针对实际案例,根据客户项目需求,进行需求分析。 5.针对实际案例,采用面向对象分析与设计思想,使用UML建模工具完成对系统的分析,画出相应的用例图、类图。 6.针对实际案例进行分析,设计并创建出合适的数据库表。 7.在系统分析完成之后,采用三层架构进行编码,实现系统的功能。 8.完成规范化的课程设计报告的编写。 三、课程设计报告应包括的内容 课程设计的题目、设计目的; 需求分析与系统模块划分(系统功能模块图); UML分析与设计(系统用例图、类图); 数据库分析与设计(数据库表、视图、存储过程等); 编码实现及测试; 课程设计的总结,主要包括以下内容: (1)课程设计中的收获、遇到的主要问题和解决方法; (2)设计中存在的不足,需进一步改进的设想; 以上内容均填写在课程设计报告上,要求格式规范,符合学校关于课程设计的要求和规范。 四、进度安排 序号 课程设计内容 学时分配 备注

面向对象程序设计课程设计

《面向对象程序设计》课程设计 课程代码:*****(采用现行5位数字的课程代码) 课程名称:面向对象程序设计课程设计 设计周数:1周 学分:0.5学分 课程类别:必修课 一、课程设计的目的与任务 面向对象程序设计课程设计是计算机科学与技术、网络工程、信息管理与信息系统等专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。通过课程设计,学生可以将本课程所学知识点融会贯通,举一反三,加深实践与理解,提高学生综合运用所学知识的能力;另一方面,在参与一系列子项目的实践过程中,能使学生获得相关项目管理和团队合作等众多方面的实践经验。其目的在于加深对面向对象程序设计理论和基本知识的理解,通过对所选项目的分析、程序算法的设计、运行与调试过程的分析,使学生掌握基本的信息系统分析方法、设计方法和上机操作的各种技巧,对培养学生的逻辑思维能力、团队合作精神、创新能力、动手操作能力各方面素质有提供了良好的实践平台,为后续课程的学习打下一定的基础。 二、本课程设计的基本理论 本课程设计使用面向对象程序设计的方法解决实际问题,涵概了课程的所有重要知识点,如类与对象、继承与组合、虚函数与多态性等。 三、课程设计的形式与基本要求 形式:召开课程设计动员会,根据学生的学习水平和特长进行分组,每组选择指定课程设计的题目和内容。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成所选课题的设计,最后由指导教师进行验收及评定。 基本要求:要求学生做好预习,认真分析设计过程中涉及到的算法,并确定所选课题的功能模块,详细描述各模块的具体内容;用流程图描述实现算法,根据算法进行代码的编写,最后进行反复上机调试修改,直到输出正确结果为止。 认真写好课程设计报告,根据每组学生的分工,各自写出对解决问题的详细分析、模块功能、调试结果,最后将课程设计报告上交给指导教师。 四、课程设计的内容 选题一:员工管理信息系统 (1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。

C面向对象程序设计课程设计报告

《C++面向对象程序设计》课程设计报告题目:分数计算器设置 班级: K0312415 专业:计算机科学与技术 学号: 姓名:周林 指导教师: 小组成员:周林,张齐满 二O一三年 10 月 15 日

一、课程设计问题描述 分数计算器设计是高等学校教务管理的重要组成部分,其内容较多,为了简化计论, 要求设计的管理系统能够完成以下功能: (1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。 (2)输入/输出:对流提取和流插入运算符进行重载。 (3)计算功能:可进行分数的加、减、乘和除法运算。 (4)化简功能:将分数化简为最简分数。 (5)异常处理功能:分数中分母不能为零。 (6)菜单功能:每种功能的操作都是在菜单中进行相应选择。 二、课程设计目的和要求: 经过一个学期的《C++面向对象程序设计》课程的学习,已经有了一定地程序设计基础,但是要学好C++面向对象程序设计这门课程,不仅要认真阅读课本知识和从事课堂学习,更重要的是要进行上机实践,通过上机实践才能增强和巩固知识。 三、系统设计(算法分析) 1、系统由5功能,可分别执分数的.加法运算,减法运算,.乘法运算和除法运算,还可以将分数化简。 1.加法运算可计算两个分数相加。 2.减法运算可计算两个分数相减。 3.乘法运算可计算两个分数相乘。 4.除法运算可计算两个分数相除。 5.化简运算可计算一个分数化简。 2、流程图

3、分数计算器设置各函数的功能和实现的相关功能由对应的函数来实现。 (1)函数jia() (2)函数jian() (3)函数cheng()实现分数乘法运算。 (4)函数chu()实现分数除法运算。 (5)函数shuchu()实现分数的输出和化简。 四、程序源代码 pp : Defines the entry point for the console application.

面向对象课程设计任务书

面向对象课程设计任务书

河南城建学院 《面向对象语言程序设计》课程设计任务书 班级0814101/2 专业计算机科学与技术 课程名称面向对象语言程序设计 指导教师耿永军刘荣辉周二强 计算机科学与工程系 2012年06月

《面向对象语言程序设计》课程设计任务书 一、设计时间及地点 1、时间:第19周 2、地点:计算机系实验中心、本班教室10#A103 二、设计目的和要求 本课程设计是在学习C++基本理论之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过课程设计在下述各方面得到锻炼: 1.能根据实际问题的具体情况,结合C++的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。 2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。 三、设计题目和内容 主要有以下设计题目: 题目1 高校人事管理系统 一、目的与要求: 1、目的: (1)要求学生达到熟练掌握C++语言的基本知识和技能; (2)基本掌握C++程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的C++程序设计问题。 2、基本要求: (1)要求利用C++的方法以及C++的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法; (4)在系统的设计中,要求运用C++的机制(继承、派生及多态性)来

面向对象程序设计课设题目

2012计算机科学与技术专业 面向对象课程设计题目 一设计要求 每个题目可以1人或至多两人,按题目要求完成程序设计及课程设计报告。 (若两人一个题目,需各自独立完成,题目相同者的课程设计报告不能完全相同。)二题目列表 三题目内容及要求 题目1 矩阵运算 内容及要求: 定义矩阵类,实现矩阵加法、减法、乘法、矩阵转置、求矩阵的逆矩阵等。 用程序实现验证n*n矩阵的如下定理: A(BC)=(AB)C。

题目2 填XO游戏程序 内容及要求: 游戏规则和胜利条件: 棋盘共有5行5列: 选择难度(1):两个斜对角之一都为X或O,则玩家胜。一横行都为X或O则玩家胜。)一竖行都为X或O则玩家胜。 选择难度(2):两个斜对角之一都为X或O,则玩家胜。 选择难度(3):两个斜对角都为X或O,则玩家胜。 输入必须为一个两位整数,如11,代表棋盘的第一行第一列,输完后按回车键; 玩者下一步X或O,计算机也自动下一步X或O。 程序运行示例: 题目3 统计学生成绩 内容及要求: 要求编写一个“Student”类及用来存取文件的save()和load()函数,使用函数及运算符重载技术完成如下操作: (1)计算每个学生的平均成绩,将数据存入文件stud.dat中并验证是否正确地存入了文件。(2)要求对“<<”和“>>”运算符进行重载。 (3)把学生姓名和平均成绩抽取出来,建立一个简明文件stud_mean.dat,并验证是否正确地存入了。 (4)从文件stud.dat按如下格式输出大于等于平均成绩的学生信息: 学号姓名算术语文平均 (5)将两门功课成绩都不及格的学生信息从文件中删除并另外存入文件bad.dat中。 (6)编写能检索文件中某个学生信息的子程序。如无此学生,输出“未查到”信息。 (7)使用多文件编程和菜单操作。 题目4 会议记录管理系统 内容及要求: 定义会议信息类class Conference

c课程设计实验报告

c课程设计实验报 告

中南大学 本科生课程设计(实践)任务书、设计报告 (C++程序设计) 题目时钟控件 学生姓名 指导教师 学院交通运输工程学院 专业班级 学生学号 计算机基础教学实验中心 9月7日 《C++程序设计基础》课程设计任务书

对象:粉冶、信息、能源、交通工程实验2101学生时间: .6 2周(18~19周) 指导教师:王小玲 1.课程设计的任务、性质与目的 本课程设计是在学完《C++程序设计基础》课程后,进行的一项综合程序设计。在设计当中学生综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。经过此设计进一步提高学生的动手能力。并能使学生清楚的知道开发一个管理应用程序的思想、方法和流程。 2.课程设计的配套教材及参考书 ●《C++程序设计》,铁道出版社,主编杨长兴刘卫国。 ●《C++程序设计实践教程》,铁道出版社,主编刘卫国杨长兴。 ●《Visual C++ 课程设计案例精编》,中国水力电力出版社,严华峰等编著。 3.课程设计的内容及要求 (1)自己任选一个题目进行开发(如画笔、游戏程序、练习打字软件等),要求利用MFC 工具操作实现。 (2)也可选一个应用程序管理系统课题(如:通讯录管理系统;产品入库查询系统;学生成绩管理;图书管理 等);

设计所需数据库及数据库中的数据表,建立表之间的关系。 设计所选课题的系统主封面(系统开发题目、作者、指导教师、日期)。 设计进入系统的各级口令(如系统管理员口令,用户级口令)。 设计系统的主菜单。要求具备下列基本功能: ●数据的浏览和查询 ●数据的统计 ●数据的各种报表 ●打印输出 ●帮助系统 多种形式的窗体设计(至少有查询窗体、输入窗体) 注意:开发的应用程序工作量应保证在2周时间完成,工作量不能太少或太多。能够2人合作,但必须将各自的分工明确。 4.写出设计论文 论文基本内容及撰写顺序要求: ●内容摘要 ●系统开发设计思想 ●系统功能及系统设计介绍 ●系统开发的体会

面向对象课程设计报告

. .. . 信息学院 课程设计 设计名称:面向对象课程设计 设计题目:重载运算符 学生: 学生学号:11 专业班级: 计1501 指导教师: 起止日期:2017.6.19~2017.6.30

摘要 在本次实验中,要求我编写一个程序,目的是实现处理一个复数和一个double 数相加的运算的功能,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。在完成这个设计的时候,需要注意的要点之一是需要定义Complex(复数)类,在成员函数中包含重载类型转换运算符。这样才能有效的完成复数与double类型数的运算并能更好地完成试验题目要求的设计。在本次设计中,以最便捷完成要求的功能为前提,要求使用C++完成。由于使用C++已经有了一些经验,在完成题目的同时还应该尽量减少存的占用,并尽量减少输出程序的复杂度和时间。 关键词类,对象

ABSTRACT In this experiment, I asked to write a program, the purpose is to achieve a complex number and a double number of the operation of the operation, the results stored in a double variable d1, the output d1 value, and then in the plural form of output This value. One of the points to note when completing this design is the need to define the Complex class, which contains the overloaded type conversion operator in the member function. So as to effectively complete the complex number and double type of operation and can better complete the design of the test requirements. In this design, the most convenient to complete the required function as a prerequisite, requires the use of C + + to complete. As a result of the use of C + + already have some experience in the completion of the problem at the same time should also minimize the memory footprint, and minimize the complexity of the output process and time. Keywords: Class, object

C面向对象程序设计课程设计报告

《C++面向对象程序设计》课程设计 报告 题目:分数计算器设置 班级:K0312415 专业:计算机科学与技术 学号:K031241521 K031241535 姓名:周林 指导教师: 小组成员:周林,张齐满 二O一三年10 月15 日

一、课程设计问题描述 分数计算器设计是高等学校教务管理的重要组成部分,其内容较多,为了简化计论,要求设计的管理系统能够完成以下功能: (1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。 (2)输入/输出:对流提取和流插入运算符进行重载。 (3)计算功能:可进行分数的加、减、乘和除法运算。 (4)化简功能:将分数化简为最简分数。 (5)异常处理功能:分数中分母不能为零。 (6)菜单功能:每种功能的操作都是在菜单中进行相应选择。 二、课程设计目的和要求: 经过一个学期的《C++面向对象程序设计》课程的学习,已经有了一定地程序设计基础,但是要学好C++面向对象程序设计这门课程,不仅要认真阅读课本知识和从事课堂学习,更重要的是要进行上机实践,通过上机实践才能增强和巩固知识。 三、系统设计(算法分析) 1、系统由5功能,可分别执分数的.加法运算,减法运算,.乘法运算和除法运算,还可以将分数化简。 1.加法运算可计算两个分数相加。 2.减法运算可计算两个分数相减。 3.乘法运算可计算两个分数相乘。 4.除法运算可计算两个分数相除。 5.化简运算可计算一个分数化简。 2、流程图

3、分数计算器设置各函数的功能和实现的相关功能由对应的函数来实现。(1)函数jia()实现分数加法运算。 (2)函数jian()实现分数减法运算。 (3)函数cheng()实现分数乘法运算。 (4)函数chu()实现分数除法运算。 (5)函数shuchu()实现分数的输出和化简。 四、程序源代码 // 分数管理系统.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "fenshu.h " #include "zhengshu.h" int main(int argc, char* argv[]) { fenshu aa; return 0; } // zhengshu.h: interface for the zhengshu class. // //////////////////////////////////////////////////////////////////////

面向对象课程设计(濮)

湖南师范大学工程与设计学院面向对象系统课程设计 课题名称: 学生考试系统 姓名:濮湘华 学号: 2011180532 专业:计算机科学与技术 指导老师:

目录 1、需求分析 (3) 2、系统设计 (3) 3、数据库设计 (6) 4、关键模块设计 (10) 5、课程设计心得 (31)

【课程设计名称】:学生考试系统 【学习内容】:学习数据库的概念模型的设计、数据库的使用、C++的面向对象的学习,VC数据库连接。 一、需求分析 根据学生考试的特点和学校的实际情况,以考试流程为基础,从专业角度出发,提供科学有效的考试模式。考试时采用系统自动从数据表中选题的方式,评卷时通过核对考生答案与正确答案得出考生的分数。 二、系统设计 2.1系统功能结构 学生考试系统功能结构图如图所示。 2.2 系统预览 学生考试系统主要由登陆界面、试题界面、及考试成绩管理等模块组成,学生考试管理系统主窗口用于考生选题答题操作,考试结果信息模块用于对考生的答题结果进行评分。 登陆界面:

主窗口界面: 考试结果窗口界面:

试题管理模块用于增添考试科目,并可以添加、修改和删除试题,如图4所示;学生成绩查询模块用于查询考生的考试成绩,如下图 成绩管理:

2.2 学生考试系统流程 二、数据库设计 1、数据库概念设计 根据前面介绍的需求分析和系统设计规划出本系统中使用的数据库实体对象分别为用户信息实体、科目信息实体、试题信息实体、试题答案信息实体、答案暂存信息实体和考试结果信息实体等。 (1)用户信息实体 用户信息实体包括用户编号、用户名、密码、密码提示问题、答案、真实姓名、年龄、性别、联系电话、用户权限、身份证号和注册日期。用户信息实体E-R图,如下图所示。用户实体: (2)科目信息实体 科目信息实体包括科目ID和科目名称。科目信息实体E-R图,如下图

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

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

一、课程设计目的 通过本课程设计,培养上机动手能力,使学生巩固《面向对象程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力,闯过编程关。 二、课程设计题目 0、人事管理系统 1、物业管理系统 2、客房管理系统 3、学生管理系统 4、民航订票系统 5、商场销售管理系统 6、通讯录 7、图书馆管理系统 8、商场(工厂)库存管理系统 9、“一二九”合唱评委打分系统 学生课设选题根据学号的尾数确定。(例学号为17号的学生做7号题目) 三、课程设计任务 1、任务:在两周内独立正确完成至少1道题目。 2、学生完成课设后,向指导老师提出答辩申请。答辩时要检查的内容为: (1) 课程设计纸质文档; (2) 课程设计源代码及其运行结果; (3) 老师提出相关问题,学生对问题进行作答。 3、时间: 指导:第十六,十七周。 答辩时间:第十七周 四、课程设计考核方式 课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序及课程设计考勤登记表,其中平时成绩占总成绩的30%。

优(90分以上):按要求完成,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好,能很好的回答老师所提出的问题; 良(80 - 90分):按要求完成,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进,能较好的回答老师所提出的问题; 中(70 - 80分):按要求完成,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确,能基本回答老师所提出的问题; 及格(60 - 70分):按要求完成,有完整的符合标准的文档,有基本实现设计方案的软件,但不能完全运行,设计方案基本正确,不能完全回答老师所提出的问题; 不及格(60分以下):不能完成程序,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确,不能回答老师所提出的问题。 五、提交的资料 1、软件 软件需提供源程序,并能正常运行。 注:对于程序中未能实现的部分需要加以说明。 对于程序中所参考的部分代码需要加以声明,并说明出处。 2、文档 (1)设计文档的格式尽量按照《中华人民共和国国家标准UDC 681. 3计算机软件产品开发文件编制指南GB 8567-88》的标准书写。 (2)内容(以下仅提供参考) 1、需求分析; 2、类设计及说明; 3、定义的函数主要功能说明; 4、主要算法说明:举例说明1、2个比较有特点的算法; 5、系统总框图; 6、存在的问题与不足及对策;

面向对象课程设计报告

面向对象课程设计报告 导语:基于面向对象技术的基本思想和开发过程,介绍了面向对象技术的实现方法。结合具体实例对面向对象技术在数据库系统结构设计和详细设计中的应用进行了详细的探讨,利用面向对象的数据库系统分析和设计方法,使用UML 工具建立了具体的对象模型,给出了一种比较通用的数据库系统开发模式。使用该模式设计的系统重用性好,且易于维护,从而有效提高了数据库系统的开发质量。下面是小编整理的相关内容,希望对你有帮助。 随着计算机科学的发展、应用领域的不断扩大,对计算机技术本身的要求越来越高。现在越来越多的软件开发过程采用了面向对象的开发技术,面向对象的研究遍及计算机软硬件的各个领域,如面向对象的程序设计语言、面向对象的程序设计方法、面向对象的设计、面向对象的分析、面向对象的操作系统、面向对象的DBMS、面向对象的开发工具、面向对象的开发环境等。目前不仅在研究领域已取得了丰硕的成果,而且有些软件产品已经投放市场。面向对象技术是一种新的设计技术,与传统的面向过程技术相比,它试图依据人们对问题的看法来解释软件的架构,并力求将问题域中的问题映像到分析模型中,再转换成对应的程序代码。面向对象技术倡导一种新的认知和表示世界的思想,计算机专业人

士利用它提出了面向对象的计算机程序设计语言、面向对象的软件设计方法、面向对象的数据库等,使面向对象技术在今天的应用设计中得到了最广泛的运用。 面向对象技术为软件开发提供了一种新的方法学,引入了许多新的概念,这些概念是理解和使用面向对象技术的基础和关键。 对象(Object)、方法(Method)及消息(Message) 客观世界的问题都是由客观世界中的实体及其相互之间的关系构成的。我们将客观世界中的实体抽象为问题空间中的对象。由于我们需要解决的问题不同,我们面向的对象也就不同,因此对象是不固定的。一本书可以是一个对象,一家图书馆也可以是一个对象。从动态的观点看,对象及其操作就是对象的行为,一个对象的通常定义是:对象是对一组信息及其上面的操作的描述。 私有数据结构和处理,这些处理又称为操作(Operation)或方法(Method),包括控制和过程。其中私有数据表示了对象的状态,该状态只能由私有操作来改变,每当需要改变对象的状态时,只能由其它对象向该对象发送消息。 消息是用来请求对象执行某一操作或回答某些信息的要求,消息统一了数据流和控制流,程序的执行是靠在对象间传递消息来完成的。表示消息的形式是消息模式。对同一消息模式的不同消息,同一对象所作的解释和处理都相同,

面向对象课程设计文档

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2015年秋季学期 面向对象课程设计 题目:企业人事管理系统 专业班级:计算机科学与技术三班 姓名: 学号: 指导教师: 成绩:

前言 企业人事管理系统是企业管理中的一个重要内容,随着时代的进步,企业人员数量也不断增加,分工的不断细化,各个行业之间的联系也不断密切,对人事管理的要求也不断提高,早期的人工管理的方式已经不适合现代企业公司的发展。实现企业人事管理的系统化、规范化、自动化,是现代企业管理的首选。使用计算机管理人员信息,不但可以大量节省时间、人力、财力,而且能更全面的有效的掌握公司的基本情况,及时获得最新而又准确的资料和信息。此课设设计就是这样一个管理公司人员信息的系统,其功能与实现性有较好的针对性和实用性。能比较方便的实现对人员信息的操作和管理。 在Windows环境下利用Virtual C++开发了企业人事管理系统,设计的功能主要有职工信息的录入、修改、添加、删除、查询、存储和读取功能,通过对文件的操作,更好的保证了信息的安全性,功能的实现主要通过对话框的方式来实现,利用口令进行友好的交互界面。

目录 摘要 (2) 第一章系统总体设计 (4) 1.系统功能模块图 (4) 2.各类间关系 (5) 第二章详细设计 (6) 第三章系统测试 (12) 1.测试方法 (12) 2.测试用例 (12) 3.测试结果 (13) 第四章软件使用说明书 (15) 总结 (21) 参考文献 (22) 致谢 (23)

摘要 企业人事管理系统是典型的信息管理系统,其中开发主要包括累的应用于成员函数的实现。对于前者要求建立起封装性好、完备性高的类。而对于后者则要求函数能够完全,功能齐全。 本系统主要完成对企业职员基本信息的管理,其中包括对职员信息的添加、信息修改、信息删除、信息统计以及信息的保存和显示等功能。本系统的开发采用面向对象的设计思想,系统的介绍了企业人事管理系统的开发过程及面向对象的具体实现。 关键词:人事管理;面向对象;类

面向对象程序设计课程设计指导

面向对象程序设计课程设计》 指导书 2 周) 适用专业:苏州理工学院计算机科学与技术专业 江苏科技大学苏州理工学院 2018年8 月

课程设计目的 《面向对象程序设计课程设计》的目的是通过综合性程序设计训练,使学生进一步巩固对计算机程序设计语言 (C++) 基本语法、基本算法的理解,加深对面向对象程序设计的理解,并将课本上的理论知识的实际应用有机的结合起来,锻炼学生的分析问题、解决问题的能力,为学习后续课程和实际编程打下良好的基础。 二、课程设计要求 利用所学的面向对象程序设计的编程知识和技巧,独立完成具有一定难度的程序设计题,养成良好的编程习惯,掌握基本程序设计的理念、方法,熟练运用程序调试的技巧,提高基本的程序开发能力。 1.学生必须独立完成本指导书中附录一中的所有编程题。 2.遵守机房管理制度和实验操作规则 3.上机者在上机规定的时间内,不得从事与本课程设计无关的内容 4.独立完成课题,严禁抄袭他人成果 5.按时提交报告 三、时间安排 2018年9月2日~2018年9月 13日。 四、实验设备和开发工具 1.计算机 计算机应具有较好的性能和稳定性。 2.操作系统 操作系统采用 Windows 2000 、 Windows XP 、 Windows 2003 server 等。 3.开发工具 VC 五、考核要求 1.上机考核:在规定的时间内完成 1~2 题进行编程,占总成绩的 60% 。 2.课程设计报告:选附录中的一半题写成报告,格式要求见附录二,占总成绩的 20%。 3.平时表现:占总成绩的 20。 附录一:课程设计内容 【排序、数组操作】 1.[题目]对一个 5 位数的任意整数,求出其降序数。例如:整数是 82319,则其降序 数是 98321。算法提示:将整数的各位数分解到一维整型数组 a 中,再将 a 数组中的元素按

面向对象C++课程设计

面向对象C++课程设计

《面向对象程序设计》课程设计任务书 2012/2013学年第一学期班级:计算机 1003-1004 一、设计目的 《面向对象程序设计》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。 二、设计要求 通过这次设计,要求在逻辑特性和结构的设计及其实现等方面中加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 三、设计内容 (任意选1个) 1.有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地

址,英语入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为: 1. 新增学生信息 2. 删除学生信息 3. 导入学生信息(已经保存于的文件信息) 4. 学生信息搜索(按姓名) 5. 学生信息统计(按专业或性别或年龄---年龄要自动计算) 6. 按英语成绩排序 7. 学生信息保存 8. 退出 ******请选择:1 2.假设要为某个公司编写雇员工资支付程序。一般工人(Worker)按每月工作的天数计算工资;销售人员(Salesman)在基本工资基础上每月还有销售提成;经理(Manager)每月按固定工资支付,临时工(Floater )按小时支付。要求设计抽象类(Employee)描述所有雇员的共同特性(如姓名,性别,出生日期,员工类别),含有计算工资的纯虚函数computeSalay(),

面向对象程序设计课程设计报告《电子时钟》C

目录

1 前言 时钟在人们日常生活中必不可少,时钟的原理是怎么样的呢,本程序将模拟一个电子时钟。为了使程序更加美观,本程序是使用Visual C++编写一个可视化的模拟电子时钟程序。电子时钟的关键在于延时,为了达到延时的准确性,不受程序执行时间的影响,采用了系统两秒之间的间隔进行延时。该程序还加入了显示星期功能,在知道1901年每月1号是星期几的情况下,再根据年、月、日即可算出星期几。 2需求分析 要求 设计类结构,模拟电子时钟的行走,在屏幕上显示一个活动时钟。 任务 (1)显示日期的格式:XXXX年XX月XX日 (2)显示时间的格式:XX:XX:XX。 (3)添加显示星期的格式:星期X 运行环境 (1)WINDOWS2000/XP系统 (2)Visual C++ 编译环境或DEV C++ 编译环境 开发工具 C++语言 3分析和设计 + 系统分析及设计思路 为了使程序的显示更加美观,该程序使用了C++可视化程序设计方法进行设计。在可视化程序设计中,建立了一个MFC单文档应用程序工程,该工程包括了视图类、文档类对话框类和主框架类。在主框架类中修改窗口等属性,使整个时间的

显示更加协调。模拟电子时钟是一个显示和计时的小程序,因此只要在视图类和文档类添加相关的属性和方法即可完成模拟电子时钟的功能。 文档类定义时钟的相关属性,包括int类型的year、month、day、hour、minute、second,和包括CString类型的str_year、str_month、str_day、str_hour、str_minute、str_second等信息。int类型的时间日期属性用以计算,CSrting类型的时间日期属性用以显示,通过CString类中的成员函数Formart可以把int型的数据转成CString型的。 视图类实现时钟的主要功能,在该类的OnDraw函数里面对时间日期进行显示输出。向窗口输出信息时,为了保证高刷新率下绘图不闪烁,使用内存绘图的方法,在内存中创建一个与屏幕绘图区域一致的对象,使得重绘视图时可以大大提高运行速度。为了使计时能够达到几乎无误差,使用了一个获取系统两秒间隔作为计时间隔的方法,使得计时间隔和系统时间间隔一致。每次重绘视图的时候都重新获取系统时间,当该两次获得的秒不一致时,就对时间加一秒。通过一个计时器消息,使视图50ms刷新一次,以保证时间的准确性。 在视图类中需要添加几个方法:用于计算时间的方法RunTime()、计算星期的方法Week()、int型转CString型的方法Change()、获取系统时间的方法GetDateTime()、重获系统时间方法OnReset()和计时器消息。 在计算时间日期的时候,每达到1秒的时候对second进行加1,然后判断是否达到60秒,达到的话minute就加1,同样的方法对hour、day、month和year进行计算,在对day计数时,考虑到大小月和闰年,对day进行加1时,判断是哪一月和是否为闰年。在确定年、月、日之后,使用函数Week()进行对星期几的计算,根据1901年每月1号是星期几可以得出现在是星期几。 在这个程序中,还使用了一个对话框类,使用对话框来对时间日期的设置。在菜单栏里添加一个“设置时间”的选项和一个菜单消息,当点击这个选项就会弹出设置时间日期的对话框,对话框中编辑控件设定了每个值的取值范围,从而对输入错误进行排除。 主要类图 图主要类图

面向对象程序设计心得体会

这次课程设计让我收获到很多,上个学期我们也有过课程设计,但是我们都是从网上下一个程序,连带着报告,看一遍程序,修改修改报告,然后就直接去答辩,都是糊弄糊弄就过去了,自己根本就没有付出过努力,到现在,那个程序的内容是什么全忘光了。但是这次的课程设计,虽然老师您的要求十分严格,但是却是让我切实体会到了自己动手的快乐。要我们自己设计一个管理系统,从定题目,到开始写代码,全部都是自己来。我在开始课程设计前的两周就开始考虑我课设的时候应该做什么内容,想做一般同学都能想到的学生管理系统,但是就怕会有类似的不敢做,冥思苦想了好久,最后才定下的备忘录管理系统,其实所有的管理系统的本质都是一样的,增,删,改,查,但是,这些东看似简单,做起来却难。像我在做增加的时候,就遇到了问题,最后通过老师的调试,才发现原来是我在开始定义字段名的时候就弄错了。我们其他人也一样,中间遇到的问题,也及时的请教同学和老师,原来在寝室,我们都是开着电脑上qq,水人人,看视频,但是当课程设计开始的时候,我们这个寝室都在那做这个管理系统,谁谁谁的查询不好使了,我们也都停下来帮她,当我们都不解决不了的时候,我们就和学得好的男生开语音,让他们教我们,帮我们解决,再解决不了的,我们就来找老师,在机房里大家一起努力,攻克难关。有些时候,困扰我们很长时间的,可能就是一个小小的逗号,或者是被忽略的空格,这些都是我们上课的时候没有注意的,没有好好听课的地方,都在课设的时候碰到了,我在做自己的课程设计的时候,我也经常出错,经常忘了一些细节的东西,比如登陆窗体的时候,忘记了在program.cs里把Form1改成LoginForm,我一直在调试,但是始终出现的是主窗体,登陆窗体始终出不来,最后才想起来忘了这个小步骤,但是这也让我明白,上课的点滴小事,也是非常重要的,除了上课认真听讲之外,下课了还得很认真的看代码,把代码的意思弄明白,渐渐的,像数据库里的表怎么设计,怎么连接数据库,按钮怎么设置,还有很多我都能掌握,所以感觉这次课程设计带给我很多的,课程设计不仅是检查一个人知识掌握了多少,其实更重要的实检测你的实践能力,以及看你是否细心、是否有缜密的思维,所以,我们要在课设的时候加强锻炼,磨练自己,使自己有更高的提高。

相关文档
相关文档 最新文档