C++面向实验对象实验十一
- 格式:doc
- 大小:57.00 KB
- 文档页数:9
实验内容实验一类与对象基本程序设计(一)【实验类型】验证性【实验要求】必做【实验目的】1.了解C++面向对象程序设计的基本概念以及了解C++程序的基本结构。
2.了解类,对象的概念,掌握类及类中成员函数的定义及使用方法。
3.掌握对象的定义及使用方法。
4.了解构造函数,析构函数,拷贝构造函数的作用,特点,定义方式及使用方法。
【实验内容】实验题1.定义一个FDAccount类,用以描述一个定期存折(fixed deposit),实现现金支取。
余额合计。
信息显示等。
存折基本信息包括帐号,账户名称,存款余额,存取期限(以月为单位),存款利率(以百分点为单位)等。
提示:存折的基本信息定义为存折类的私有的数据成员,利用构造函数的初始化存折类对象,在利用构造函数的参数表传入实参,初始化存折对象的数据成员。
实验题2.设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个顶点的坐标,该类能够计算矩形的面积。
提示:两个点的坐标作为矩形类的数据成员。
利用坐标计算矩形长和宽,然后求面积。
实验题3.设计一个person类,其属性包括name和id,其中name属性为指针,分别利用person类构造函数和拷贝构造函数建立对象,打印每个person 类对象的信息。
要求分别编写浅拷贝构造函数和深拷贝构造函数调试程序。
提示:要在构造函数中为person对象的name属性分配动态内存,在析构函数中,释放掉申请的动态内存。
注意不要让同一块动态内存被释放多次。
【参考程序】实验题1参考程序#include <iostream.h>#include <stdlib.h>class FDAccount{public://构造函数FDAccount(char *ID,char *depositor,double amount,int period,double rate);double fetch(char *ID,char *depositor,double amount); //支取到期存款void update();//计算到期账户余额void show(); //显示账户基本信息protected:double interest_rate;private:char *accounts;char *name;double balance; //存款余额int term; //存款期限};FDAccount::FDAccount(char *ID,char *depositor,double amount,int period,double rate){name=depositor;accounts=ID;if((amount<0||rate<0)){cout<<"数据不正确"<<endl;exit(1);}balance=amount;term=period;interest_rate=rate;}double FDAccount::fetch(char *ID,char *depositor,double amount){cout<<"帐号"<<"账户名称"<<"支取金额"<<endl;cout<<accounts<<" "<<name<<" "<<amount<<endl;balance=balance-amount;return balance;}void FDAccount::update(){balance=balance+balance*(interest_rate/100.00)*(term/12.0);}void FDAccount::show(){cout<<"显示账户基本信息:"<<endl;cout<<"帐号"<<"帐号名称"<<"期限"<<"利率"<<endl;cout<<accounts<<" "<<name<<" "<<term<<" "<<interest_rate<<endl;cout<<"目前账户余额为:"<<balance<<endl;}void main(){FDAccount depositor("0034","王涛",10078,18,1.98);depositor.show();cout<<endl;cout<<"存款已到期!\n"<<endl;depositor.update();depositor.show ();cout<<endl;cout<<"支取存款:"<<endl;depositor.fetch("0034","王涛",5000);cout<<endl;depositor.show();}实验题2参考程序#include <iostream.h>class Rectangle{public:Rectangle(int top ,int left,int bottom,int right);~Rectangle(){}int GetTop() const {return itsTop;}int GetLeft() const {return itsLeft;}int GetBottom() const {return itsBottom;}int GetRight() const {return itsRight;}void SetTop(int top) {itsTop=top;}void SetLeft(int left) {itsLeft=left;}void SetBottom(int bottom) {itsBottom=bottom;}void SetRight(int right) {itsRight=right;}int GetArea() const;private:int itsTop;int itsLeft;int itsBottom;int itsRight;};Rectangle::Rectangle(int top,int left,int bottom,int right) {itsTop=top;itsLeft=left;itsBottom=bottom;itsRight=right;}int Rectangle::GetArea()const{int Width=itsRight-itsLeft;int Height=itsTop-itsBottom;return (Width*Height);}int main(){Rectangle MyRectangle(100,20,50,80);int Area=MyRectangle.GetArea();cout<<"Area:"<<Area<<endl;return 0;}实验题3参考程序(浅拷贝情况)#include<string.h>#include<iostream.h>class Person{public:Person(char *pName="noname",int pid=100) {cout<<"call constructor"<<endl;strcpy(name,pName);id=pid;}Person(Person &p){cout<<"call copy constructor"<<endl;strcpy(name,);id=p.id;}void printinfo(){cout<<name<<","<<id<<endl;}private:char name[20];int id;};void main(){Person wang("wang");wang.printinfo();Person li(wang);li.printinfo();}实验题3参考程序(深拷贝情况)#include<string.h>#include<iostream.h>class Person{public:Person(char *pname="noname",int pid=100){cout<<"call constructor"<<endl;name=new char[strlen(pname)+1];if(name!=0){ strcpy(name,pname); }id=pid;}Person(Person &p){cout<<"call copy constructor"<<endl;name=new char[strlen()+1];if(name!=0)strcpy(name,);id=p.id;// name[1]='z';}void printinfo(){cout<<name<<","<<id<<endl;}/*-----------------------------------------------------------------void GetAddr() //取对象name成员的内存地址{cout<<this->name<<"'s address is:" ;cout<<(int)&(*this->name)<<endl;}------------------------------------------------------------------*/~Person(){delete name;}private:char *name;int id;};void main(){Person wang("wang",101);wang.printinfo();//wang.GetAddr();Person li(wang);li.printinfo();// li.GetAddr();}【思考题】1.构造函数可以是私有成员么?2.为什么同类的不同对象,调用相同的成员函数时,这些成员函数能够准确的操作相应的对象呢?实验二类与对象基本程序设计(二)【实验类型】验证性【实验要求】必做【实验目的】1.巩固类和对象的定义及使用方法。
[工学]C实验报告附答案《面向对象程序设计C#》实验指导及报告书/学年第学期姓名:______________学号:______________班级:______________指导教师:______________计算机科学与工程学院龄3个数据成员,以及若干成员函数。
同时编写主函数使用这个类,实现对学生数据的赋值和输出。
要求:使用构造函数实现对数据的输入,使用成员函数实现对数据的输出。
调试下列的参考代码。
classStudent{privatestringid;privatestringname;privateintage;publicStude nt(stringid,stringname,intage){this.id=id;=name;this.age=age;}p ublicvoidDisplay(){Console.WriteLine(“id={0},name={1},age={2}“,id,n ame,age);}publicstaticvoidMain(){Students1=newStudent(“001“,“zhangs han“,16);s1.Display();Console.ReadKey();}}以上程序使用了构造方法,请回答(1)构造方法何时被调用?(2)关键字this有何作用?(3)在实例化了s1对象后,如要将s1对象的id改为“002“,程序将如何修改。
2.如果已知一个日期为,则year置为1900,否则year合法。
month不在有效范围内则month置1,day应当月有效,否则置1。
(提示在MyDate类中增加两个方法:)publicvoidSetDate(intd,intm,int y){…}//设置日期privateboolCheckDate(inty,intm,intd){…}//对日期的有效性检查进一步,求两个日期之间的相差的天数,Date类如何改进?3.设计一个数学中的分数类(Fraction),并测试结果是否正确。
C++面向对象大作业实验报告(1)问题描述项目选题为做一个飞行射击游戏。
游戏中有各总各样的敌机和武器,敌机按一定的几率出现,玩家消灭敌机后可得分数奖励,达到一定分数后会升级,游戏难度随着玩家级数的增加而增大。
游戏有很多爆炸场面,增加了刺激性。
(2)系统设计GameWorld类描述:控制整个游戏过程的类主要数据成员:(A)静态数据成员const int Width, Height; // 游戏区域的宽和高const double PI; // 圆周率(B) 对象指针Display *pScreen; // 屏幕Player *pPlayer; // 玩家BulletSystem *pPlayerBulletSystem, // 玩家子弹系统*pEnermyBulletSystem; // 敌方子弹系统EnermySystem *pEnermySystem; // 敌机系统CollisionSystem *pCollisionSystem; // 碰撞系统主要成员函数:GameWorld( HWND); // 构造函数void ShowInfomation() // 显示屏幕信息void Update(); // 游戏状态更新void KeyDown(WPARAM KeyCode); // 处理按键void KeyUp(WPARAM KeyCode); // 按键释放void EnermyFire(Enermy *pEnermy); // 敌人发射子弹void PlayerFire(Player *pPlayer); // 玩家发射子弹void ResetPlayer(); // 重置玩家角色void DrawSprite(Sprite *pSprite); // 在屏幕上输出角色Display类描述: 实现游戏画面输出的类主要成员函数:Display(GameWorld*); // 构造函数void SetClientSize(HWND hwnd, int Width, int Height)// 设置窗口客户区大小void Clear() // 清除画面void DrawToOffscreen(int x, int y, int w, int h,int sx, int sy, bool bTransparent)// 把图形绘制到缓冲画面中void DrawAllToScreen() // 把缓冲画面输出到屏幕HDC GetOffscreenDC() // 返回内存设备场景句柄Bitmap类描述: 封装位图文件的类主要成员函数:Bitmap(char *fn, BOOL transmode=false,COLORREF transcolor=RGB(255, 0, 255)):// 构造函数void CreateMask(); // 为实现背景色透明创建图像掩码void Load(char *fn) // 载入图像文件void Draw(HDC ddc, int dx=0, int dy=0,int dw=0, int dh=0, int sx=0, int sy=0);// 输出到设备场景上BulletSystem类描述: 管理子弹的类主要数据成员:list<Bullet*> BulletList; // 子弹列表list<Bullet*>::iterator pCurElement;// 当前子弹int BulletIndex, // 当前子弹索引BulletCount; // 列表中的子弹总数主要成员函数:BulletSystem(GameWorld *pgw);void FireHappened(Bullet::BULLET_TYPE BulletType,int x, int y, double sprite_vx, double sprite_vy);// 处理发射子弹的事件Bullet* GetFirstBullet(); // 返回第一个子弹对象Bullet* GetNextBullet(); // 返回下一个子弹对象void Update(); // 刷新所有子弹EnermySystem类描述: 管理敌机的类主要数据成员:list<Enermy* EnermyList; // 敌机列表list<Enermy*>::iterator pCurElement; // 当前敌机int EnermyIndex, // 当前敌机索引EnermyCount; // 当前敌机总数Int Difficulty; // 难度, 与敌机出现的几率有关主要成员函数:EnermySystem(GameWorld *pgw); // 构造函数Enermy* GetFirstEnermy(); // 返回第一个敌机对象Enermy* GetNextEnermy(); // 返回下一个敌机对象void CreateEnermy(int x, int y); // 创建新敌机void AddDifficulty(); // 增加难度void ResetDifficulty(); // 重设难度void Update(); // 刷新所有敌机CollisionSystem类描述: 碰撞检测系统主要数据成员:Player *pPlayer; // 玩家对象指针EnermySystem *pEnermySystem; // 敌机系统对象指针BulletSystem *pPlayerBulletSystem, // 玩家子弹系统对象指针*pEnermyBulletSystem; // 敌方子弹系统对象指针主要成员函数:void Update() // 刷新,检测所有碰撞void CheckForCollision(Enermy *pFighterPlane, Bullet *pBullet);void CheckForCollision(Player *pFighterPlane, Bullet *pBullet);void CheckForCollision(Player *pPlayer, Enermy *pEnermy);// 三个实现碰撞检测的重载函数Sprite类描述: 所有角色类的基类主要数据成员:double x, y; // X坐标和Y坐标int sx, sy, w, h; // 在素材位图中的位置矩形int cx, cy, cw, ch; // 碰撞检测用矩形double dx, dy; // 速度int Life, Atackness; // 生命, 攻击力int ExplosionFrameCount, // 爆炸动画帧数ExplosionFrameIndex; // 爆炸动画当前帧Bool Used; // 标记是否应被丢弃主要成员函数:Sprite(GameWorld *pgw, int x_value, int y_value);// 构造函数void AdjustPosition(); // 已左上角作为中心点调整位置void Update(); // 刷新, 刷新位置和输出画面bool OutOfClient(); // 判断是否超出窗口客户区bool OutOfSight(); // 判断是否在视线范围之外Bullet类描述: 由Sprite类派生, 所有子弹类的基类主要成员函数:Bullet(GameWorld *pgw, int x_value, int y_value,double sprite_vx, double sprite_vy);// 构造函数void SetMovement(double speed, int angle); // 根据速率和角度计算分速度void Update(); // 刷新static int GetFireInterval(BULLET_TYPE BulletType);// 返回给定类型的子弹的发射时间间隔PlayerBullet_Fire类, PlayerBullet_Missile类, PlayerBullet_RoundBullet类, EnermyBullet1类, EnermyBullet2类,EnermyBullet3类描述: 由Bullet类派生的子弹类FighterPlane类描述: 由Sprite类派生的抽象战斗机类主要数据成员:bool Firing; // 是否正在开火int LastFireTime; // 上一次开火的时间主要成员函数:void SetLastFireTime(); // 设置一个随机的上次开火时间void Update(); // 刷新,增加爆炸、开火void StartFiring(); // 开始开火void StopFiring(); // 停止开火virtual void Fire()=0; // 开火, 纯虚函数Enermy类描述: 由FighterPlane类派生的敌机类主要成员函数:void Update(); // 刷新,增加检测是否可见、自动开火void Fire(); // 开火Enermy_Tom类描述: 由Enermy类派生的敌机类,会自动改变运动方向Enermy_Jack类描述: 由Enermy类派生的敌机类, 斜向发生子弹, 成群结队出现Enermy_Mimi类描述: 由Enermy类派生的敌机类, 横着发射子弹,运动速度快Player类描述: 玩家战机类主要数据成员:double speed; // 速度int KillEnermy, Score; // 杀敌数目,得分主要成员函数:void Update(); // 刷新,不让超出边界死了自动重设数据void ChangeWeapon(); // 换武器void Action(ACTION NewAction); // 动作指令(3)使用说明操作: 按方向键飞行,按Tab键换武器,按空格键开火(4)讨论用了2个月,终于初步完成了这个游戏。
面向对象程序设计实验指导书(适用:电子信息11级)彭召意陶立新编写计算机与通信学院2014.9目录实验一 C++基础的应用 (1)实验二类和对象的应用 (3)实验三类的构造函数、析构函数的应用 (4)实验四友员和运算符重载 (5)实验五类的继承与派生 (6)实验六类的多态性与虚函数 (7)附录:各实验的程序代码 (8)实验一 C++基础的应用(实验课时:2 实验性质:设计)实验名称: C++基础的应用实验目的: (1)进一步学习VC++6.0开发环境及程序调试方法。
(2)练习C++函数的定义及使用;(3)练习C++数组的定义及使用;(4)练习C++指针的定义及使用;(5)练习C++结构体的定义及使用;(6)练习多文件的程序的编译和运行方法;实验设备:(1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C++6.0。
实验内容: (1)熟悉Visual C++6.0编译系统的常用功能,特别是debug调试功能;(2)编程1:编写一个程序c1.cpp,用来求2个或3个整数的最大数。
要求:用重载函数的方法来求最大数;函数原型:int max( int a, int b) 和int max( int a, int b,int c)。
(3)编程2:编写一个程序c2.cpp,求:a!+ b! + c!的值。
要求:使用递归函数。
主程序和函数分开到两个源程序文件中,分别进行编译后,再运行;(4)编程3:有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号;(5)编程4:建立一个动态链表并进行输出和删除管理。
链表的每个节点为学生信息,包括:学号,姓名,性别,下一学生信息的指针。
程序的工作:(a)建立三个学生信息的节点,然后顺序输出该三个学生信息;(b)删除中间的节点,再顺序输出学生信息。
面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。
二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。
- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。
- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。
2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。
3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。
4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。
5. 运行程序:编译并运行C程序,观察程序的输出结果。
三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。
通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。
四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。
尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。
C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。
通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。
此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。
当然,C语言中实现面向对象编程也存在一些限制和不足。
相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。
此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。
《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤1. 调试如下的代码并回答问题。
#include <iostream.h>void main()//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2. 单步调试如下的代码并回答问题。
#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
面向对象程序设计(C++)实验指导一、实验环境本实验基于当前主流的面向对象开发平台,编码规范遵循主流的参考规范。
二、编程语言和开发工具C++语言,开发工具不限,建议使用Visual C++ 6.0版本三、编码规范(编码规范的要求)要求遵循良好的的程序设计习惯来设计实验和编写代码。
(注:如果你将程序的很多功能全部放在一个长长的main()主函数中实现,这样的程序设计和编码风格会被扣分,请将不同的功能模块分别用函数来实现。
)1.在实验过程中应注意培养规范的编码风格:2.标识符的命名应要求达到顾名思义的程度,一看就知道用来做什么;3.提供足够的注释,注释文字清晰明了;4.程序排版的要求:a)不同功能模块用空行分隔,使功能块一目了然;b)基本上一条语句一行;同一层次的语句统一缩进对齐。
四、实验见后文……五、注意事项所有实验要求独立完成,同学之间可以讨论,但严禁抄袭,若发现雷同,抄袭者和被抄袭者此次实验成绩均记零分。
实验一 C++基础 (2课时)实验目的和要求:1. 掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2. 理解C++程序结构的特点。
3. 熟悉C++程序的基本输入输出操作。
4. 掌握内联函数的使用方法。
5. 掌握函数重载的定义和使用方法。
6. 掌握C++内存的动态分配与释放方法。
7. 理解引用的概念,掌握引用的使用方法。
预习内容:cin/cout 的使用;new 和delete 的使用;函数重载;const 常量。
实验内容:1、用内联函数编写Fibonacci 级数,使用if 语句判断函数的出口,在程序中用cout 语句输出提示信息,Fibonacci 级数的公式为:⎩⎨⎧>-+-==2)2()1(2,11)(n n fib n fib n n fib 内联函数inline int fib(int n)。
2、程序Ex_Swap 实现数据交换。
分别用指针和引用作为函数mySwap 的形参,并通过重载int 、double 型变量值的交换。
学生学号27实验课成绩学生实验报告书实验课程名称面向对象的信息系统设计开课学院管理学院指导教师姓名刘勇军学生姓名张佳琦学生专业班级信管12022014 —2015 学年第一学期实验报告填写规范1、实验是培养学生动手能力、分析解决问题能力的重要环节;实验报告是反映实验教学水平与质量的重要依据。
为加强实验过程管理,改革实验成绩考核方法,改善实验教学效果,提高学生质量,特制定本实验报告书写规范。
2、本规范适用于管理学院实验课程。
3、每门实验课程一般会包括许多实验项目,除非常简单的验证演示性实验项目可以不写实验报告外,其他实验项目均应按本格式完成实验报告。
在课程全部实验项目完成后,应按学生姓名将各实验项目实验报告装订成册,构成该实验课程总报告,并给出实验课程成绩。
4、学生必须依据实验指导书或老师的指导,提前预习实验目的、实验基本原理及方法,了解实验内容及方法,在完成以上实验预习的前提下进行实验。
教师将在实验过程中抽查学生预习情况。
5、学生应在做完实验后三天内完成实验报告,交指导教师评阅。
6、教师应及时评阅学生的实验报告并给出各实验项目成绩,同时要认真完整保存实验报告。
在完成所有实验项目后,教师应将批改好的各项目实验报告汇总、装订,交课程承担单位(实验中心或实验室)保管存档。
4、选择标记选择数据源,并选择新建数据源5、选择数据库选项7、下一步之后,全选“*”8、测试查询9、点击完成后点击,自动套用格式10、可于编辑列中更改外观列名11、属性中建立更改、删除、添加功能12、设置分页功能13、运行初始结果如下图六、实验结果与讨论实验运行结果截图:1、初始运行结果2、点击编辑按钮3、点击删除4、完整代码using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace WebApplication29.Gridview_1{public partial class WebForm2 : System.Web.UI.Page{protected void GridViewBind(){//实例化SqlConnection对象SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=(local);Initial Catalog=C#zuoye;Integrated Security=True";string sqlstr = "select Number,Name,Type,Price from Table_1";//确定所要引用的列//实例化SqlCommand对象SqlCommand cmd = new SqlCommand(sqlstr, conn);//异常处理try{conn.Open();SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = cmd;DataSet ds = new DataSet();sda.Fill(ds, "Employees");//数据源{//实例化SqlConnection对象conn = new SqlConnection();conn.ConnectionString = "Data Source=(local);Initial Catalog=C#zuoye;Integrated Security=True";string sqlstr="select Number,Name,Type,Price from Table1";//确定所要引用的列//实例化SqlCommand对象cmd = new SqlCommand(sqlstr,conn);//异常处理try{conn.Open();SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = cmd;DataSet ds = new DataSet();sda.Fill(ds, "Employees");//数据源GridView1.DataSource = ds;GridView1.DataKeyNames = new string[] { "ID" }; //设置主键GridView1.DataBind();}//捕获异常catch (Exception exp){Response.Write(exp.Message); }finally{conn.Close();}4、实现GridView的编辑功能protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {GridView1.EditIndex = e.NewEditIndex;GridViewBind(); }//编辑功能下的取消事件protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e){ GridView1.EditIndex = -1;GridViewBind();}//编辑功能下的更新事件protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { conn = new SqlConnection();conn.ConnectionString = ""Data Source=(local);InitialCatalog=C#zuoye;Integrated Security=True";string sqlstrupd = "update Table1 set Number='" +((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "'Name='" +((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "'Type='" +((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + "'Price='" +((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "'where Number='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";cmd = new SqlCommand(sqlstrupd,conn);conn.Open();cmd.ExecuteNonQuery();conn.Close();GridView1.EditIndex = -1;GridViewBind();}5、实现GridView的删除功能protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string sqlstrdel = "delete from Table1 where Number='" +GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";conn = new SqlConnection();conn.ConnectionString = ""Data Source=(local);InitialCatalog=C#zuoye;Integrated Security=True";cmd = new SqlCommand(sqlstrdel, conn);conn.Open();cmd.ExecuteNonQuery();conn.Close();GridViewBind();}6、实现GridView的分页功能protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e){GridView1.PageIndex = e.NewPageIndex;GridViewBind();}对应的前台代码为:AllowPaging="true" PageSize="4”OnPageIndexChanging="GridView1_PageIndexChanging"<PagerSettings Mode="NextPreviousFirstLast" FirstPageText="首页" LastPageText="末页" NextPageText="下一页" PreviousPageText="上一页" />六、实验结果与讨论实验运行结果截图:1、初始页面:2、点击编辑:3、点击删除4、总结刚学习C#的时候,感觉很难,做的时候出现很多错误而且我是照着书打代码还有错误,那时的感觉是迷茫的。
实验一类与对象一、实验目的1、掌握类的声明和使用。
2、掌握类的声明和对象的声明。
3、复习具有不同访问属性的成员的访问方式。
4、观察构造函数和析构函数的执行过程。
5、学习类的组合使用方法。
6、使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
二、实验任务1、声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
2、声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
3、(选作)设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id (身份证号)等等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、组合。
1、#include <iostream>using namespace std;enum CPU_Rank {p1=1,p2,p3,p4,p5,p6,p7};class CPU{ private:CPU_Rank rank;int freauency;float voltage;public:CPU(CPU_Rank r, int f,float v){ rank=r;freauency=f;voltage=v;cout<<" This is CPU construct program"<<endl;}~CPU(){cout<<" This is CPU destroy function"<<endl;}void run(){cout<< " The CPU is running"<<endl;}void stop(){cout<< " The CPU is Stopping"<<endl;}};int main(){enum CPU_Rank rank;rank=p5;CPU cpu1(rank,1024,;();();return 0;}运行结果:This is CPU construct programThe CPU is runningThe CPU is StoppingThis is CPU destroy function2、#include <iostream>using namespace std;enum CPU_Rank {p1=1,p2,p3,p4,p5,p6,p7};class CPU{private:CPU_Rank rank;int freauency;float voltage;public:CPU(CPU_Rank r=p1,int f=0,float v=0){ rank=r;freauency=f;voltage=v;cout<<" This is CPU construct program"<<endl;} ~CPU(){cout<<" This is CPU destroy function"<<endl;} void run(){cout<<" The CPU is running"<<endl;}void stop(){cout<<" The CPU is Stopping"<<endl;} };class RAM{private:int rank;int size;public:RAM( int r=0, int s=0){ rank=r;size=s;}void run(){cout<<" The RAM is running"<<endl;}void stop(){cout<<" The RAM is Stopping"<<endl;} };class CDROM{ private:int rank;int size;public:CDROM ( int r=0, int s=0){ rank=r;size=s;}void run(){cout<<" The CDROM is running"<<endl;} void stop(){cout<<" The CDROM is Stopping"<<endl;} };class Computer{private:CPU cpu;RAM ram;CDROM cdrom;public:Computer(CPU c,RAM r,CDROM cd){ cout<<" This is the Computer Construct"<<endl;cpu=c;ram=r;cdrom=cd;}void run(){ cout<<" This is Computer is running"<<endl;();();}void stop (){ cout<<" This is Computer is stop"<<endl;();();}};int main(){ enum CPU_Rank rank;rank=p5;CPU cpu1(rank,1024,;RAM ram(5,1024);CDROM cdrom(5,1024);Computer cp(cpu1,ram,cdrom);();();return 0;}实验二 C++程序结构1、实验目的1. 观察程序运行中的变量的作用域、生存期和可见性。
《C++面向对象程序设计》实验内容总学时:24学时实验1 C++程序设计初步1、实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。
(2)通过运行简单的C++程序,初步了解C++源程序的结构和特点。
(3)掌握简单C++程序的编写和调试方法。
(4)掌握重载函数的定义方法。
(5)能正确使用引用型变量。
2、实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。
②在自己指定的子目录中建立一个名为test.cpp的新文件。
③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令,对此源程序进行编译。
观察和分析编译信息。
⑤根据编译信息指出的错误,修改程序。
再进行编译,如果还有错,再重复此过程,直到编译不出错为止。
⑥选择Build→Build test.exe命令,对程序进行连接,如果不出错,就会生成可执行程序test.exe。
⑦选择Build→Execute test.exe命令,执行可执行程序test.exe。
观察屏幕的变化。
在输出窗口应显示程序运行结果。
⑧分析结果是否正确,如果不正确或认为输出格式不理想,可以修改程序,然后重新执行以上④和⑧步骤。
(2)编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型。
用重载函数实现。
(3)对3个变量按由小到大顺序排序,要求使用变量的引用。
学时数:2学时实验2 类和对象(一)1、实验目的(1)掌握声明类的方法,类和类的成员的的概念以及定义对象的方法。
(2)初步掌握用类和对象编制基于对象的程序。
(3)学习检查和调试基于对象的程序。
2、实验内容(1)有以下程序:#include <iostream>using namespace std;class Time //定义Time类{public: //数据成员为公用的int hour;int minute;int sec;};int main( ){ Time t1; //定义t1为Time类对象cin>>t1.hour; //输入设定的时间cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<“:”<<t1.minute<< “:”<<t1.sec<<endl; //输出时间return 0;}改写程序,要求:①将数据成员改为私有的;②将输入和输出的功能改为由成员函数实现;③在类体内定义成员函数。
面向对象程序设计(C++)实验报告姓名:刘九州学院:数学与计算机学院班级:10级计算机大类三班学号:100511314实验5 单继承一、实验目的1.掌握派生的类别与方式;2.了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制;3. 掌握继承中构造函数和析构函数的调用过程。
二、实验内容及步骤1.给出一个Document类,从Document派生出Book类,增加PageCount变量。
在主函数中进行测试,创建Book类对象并进行初始化,输出书名和页数。
2.设计一个单基继承的类层次程序,利用Person类派生出Student类,增加属性xh(学号),Person类中至少有姓名、年龄等数据成员,成员函数中构造函数对其初始化,析构函数释放相应存储单元,输出函数输出其数据成员的值,其它成员函数根据需要添加,在主函数中进行测试。
3.设计一个人员类person和一个日期类date,由人员类派生出学生类student和教师类professor,学生类和教师类的数据成员birthday为日期类。
在主函数中进行测试。
三、实验源程序和运行结果实验(一)源程序:#include<iostream>#include<string>using namespace std;class Document{public:Document(){};~Document();Document(char*name);char *Name;void PrintNameOf();};Document::Document(char*name){Name=new char[strlen(name+1)];strcpy(Name,name);}Document::~Document(){delete []Name;}void Document::PrintNameOf(){cout<<Name<<endl;}class Book:public Document{public:int PageCount;Book(char *a,int b):Document(a){PageCount=b;}};void main(){char BookName[20];int n;cout<<"请输入书名:"<<endl;cin>>BookName;cout<<"请输入书的页数:"<<endl;cin>>n;Book b(BookName,n);cout<<"书名为:"<<<<endl;cout<<"页数为:"<<b.PageCount<<endl;}运行结果:实验(二)源程序:#include<iostream>#include<string>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class student:public person{public:student(){xh=0;}student(int d){xh=d;}student(string c,int a,int d):person(c,a){xh=d;}~student(){}void setxh(int d){xh=d;}int getxh(){return xh;}private:int xh;};void main(){string c;cout<<"请输入学生的姓名:\n";cin>>c;cout<<"请输入学生的年龄:\n";int a;cin>>a;cout<<"请输入学生的学号:\n";int d;cin>>d;student n(c,a,d);cout<<"请输入学生的姓名为:"<<n.getname()<<endl;cout<<"请输入学生的年龄为:"<<n.getage()<<endl;cout<<"请输入学生的学号为:"<<n.getxh()<<endl; }运行结果:实验(三)源程序:#include<iostream>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class date{public:date(){year=2011;month=12;day=17;}~date(){}date(int y,int m,int d){year=y;month=m;day=d;}int getyear(){return year;}int getmonth(){return month;}int getday(){return day;}private:int year;int month;int day;};class student:public person{public:student(){// birthday.date();}student(int y,int m,int d):birthday(y,m,d){}~student(){}void getbirthday(){cout<<"学生的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};class teacher:public person{public:teacher(){// birthday.date();}teacher(int y,int m,int d):birthday(y,m,d){//birthday.date(y,m,d);}~teacher(){}void getbirthday(){cout<<"老师的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};void main(){cout<<"请输入学生的生日:"<<endl;int y,m,d;cin>>y>>m>>d;student s(y,m,d);cout<<"请输入老师的生日:"<<endl;cin>>y>>m>>d;teacher t(y,m,d);s.getbirthday();t.getbirthday();}运行结果:实验6 多继承一、实验目的1.掌握多基继承的使用,访问方法;2.理解类层次中访问规则;3.掌握虚基类的定义及使用。
C++面向对象程序设计实验指导与习题中南民族大学计算机科学学院2015年12月第一部分实验指导C++语言面向对象程序设计是一门实践性很强的课程,学好这门课程离不开实验这一重要环节。
学生不仅应具有扎实的理论知识,还要通过坚持不懈地阅读程序、编程练习、程序调试、程序改错等环节的训练,才能真正掌握所学知识,提高编程水平。
对于初学者,可能会看程序但不会编写,程序调试时出现了问题不会纠错,这些都是正常现象,实际还是编程训练不够,只要勤学多练,最后一定可以取得令人满意的效果。
本实验指导包括5个实验,每个实验都包括实验目的、实验内容、实验提示与实验步骤。
实验内容一般都包含有阅读程序与调试程序,程序改错,程序填空与编写程序方面的题目,这些题目也是C++面向对象程序设计考试要涉及的题型,因此做好实验对考试有极大的帮助;实验提示信息中有编程提示、重要内容提示或者出错信息提示;实验步骤以一个实际题目为例给出具体而实用的指导,以便让初学者不至于面对实验题目而束手无策,希望读者在实验中的能够学有所思,有所启迪。
熟悉实验环境一、实验目的1)了解和使用VC集成开发环境;2)熟悉VC环境的基本命令和功能键;3)熟悉常用的功能菜单命令;4)学习使用VC++环境的帮助;5)学习完整的C++程序开发过程;6)理解简单的C++程序结构;二、实验内容本次实验你将学习有关Visual C++开发环境的一些知识,并尝试实现一个简单的DOS程序。
通过本次实验,你可以了解用Visual C++开发C++应用程序的过程。
1.熟悉Visual C++实验环境[实验步骤](1)启动Developer Studio,看看初始化界面由哪些部分组成;(2)查看各菜单项,看看都有哪些子菜单和命令;(3)将鼠标放置于各个工具条图标上,系统会自动显示该图标代表的命令含义,了解一下都有哪些命令;(4)在任意工具条上单击鼠标右键,弹出式菜单上将显示所有可用的工具条,选择其中没有对号(√)的项,看看有什么效果,再选择有对号的项,又有什么效果?(5)将鼠标移动到任意工具条上,将鼠标放到图标间隙,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?再将它拖回到原来位置,有什么现象发生?(6)将鼠标移动到左边的工作区窗口,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?再将它拖回到原来位置,有什么现象发生?(7)将鼠标移动到下边的输出窗口,按鼠标右键,弹出一个菜单,选择其中的菜单项"Hide",结果如何?要重新显示该窗口,选择菜单View|Output,窗口是不是又显示出来了?(8)学习使用帮助系统。
实验一 C++面向过程练习(一) (2学时) ✧ 实验目的和要求:1.掌握C ++程序的基本格式与规范,学会编写简单的C ++程序。
2.理解C ++程序的结构和特点。
3.熟悉C ++程序基本的输入和输出操作。
4.掌握C ++数据类型、常量和变量以及修饰符的使用方法。
5.掌握C ++的各种流程控制语句的使用。
6. 熟悉C ++语言实验环境,能够在VC6.0环境下调试与运行程序。
✧ 实验内容:1. 求解方程02=++c bx ax 在复数域上的解,a,b,c 由终端输入。
注意分析的全面性。
#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,e,m,n;cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c;while(1){if(a==0){m=-b/c;cout<<"x1=x2="<<m<<endl;}else{d=b*b-4*a*c;if(d>=0){e=sqrt(d);m=(-b+e)/(2*a);n=(-b-e)/(2*a);if(m!=n)cout<<"x1="<<m<<endl<<"x2="<<n<<endl;elsecout<<"x1=x2="<<m<<endl;}else{e=sqrt(-d);m=-b/(2*a);n=e/(2*a);cout<<"x1="<<m<<"+"<<n<<"i"<<endl;cout<<"x2="<<m<<"-"<<n<<"i"<<endl;}}cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c;}return 0; }2. 猴子吃桃子问题:一天一只小猴子摘下一堆桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。
许昌学院计算机科学与技术学院《面向对象C++程序设计》课程实验教学手册创新源于实践《面向对象C++程序设计》课程实验教学手册姓名:任亚南学号:1101120103专业:计算机科学与技术班级:2012 级 1 班任课教师:李梅莲时间:2013 年6 月14 日综合成绩:许昌学院计算机科学与技术学院制实验手册使用及要求实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规范性、正确性、有效性。
现将实验报告撰写的有关内容说明如下:1、预习报告必须在实验前完成。
2、实验前按实验要求手写程序或程序填空,并走查代码,有疑问处标记,上机时在C++集成开发环境下输入并调试手写程序,分析运行结果,如实填写实验过程及实验中存在的问题及解决办法。
3、实验结束后填写通过后的源程序和对实验的总结。
4、通过后的源程序可以手写也可以打印粘贴。
实验情况一览表实验一实验名称:c++基础练习实验性质:设计性学时数: 2 成绩:一、实验目的1.熟悉使用Visual C++ 或VS2005等集成开发环境编写和实现C++程序过程2.掌握C++程序的基本格式与规范3.熟悉C++基本的输入输出操作4.理解作用域运算符的概念与基本使用方法5.new和delete运算符二、实验要求实验前预习教材第1章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。
三、实验所需器材与软件微型计算机; C++集成开发工具软件(VC++6.0、CFree、VS2005等)四、实验过程:设计源程序1:编写一个简单程序,输出“Welcome you”,并给程序加一行注释“First c++ program”。
#include <iostream>using namespace std;int main(){1) cout<<"Welcome you"<<endl;2) //first c++ program ;return 0;}实验结果设计源程序2:输入以下程序,如果有错误,请修改直到正确,分析运行结果。
实验情况一览表实验一实验名称:c++基础练习、实验性质:验证性、学时数: 2 、实验位置:107机房实验日期:2011 年3月17日、指导教师:一、实验目的1、熟悉Visual C++ 或Turboc 3.0等集成开发环境2、掌握C++程序的基本格式与规范3、熟悉C++基本的输入输出操作4、掌握C++数据类型、常量和变量及修饰符的使用方法5、掌握函数定义、函数调用和函数说明的方法二、实验要求1、掌握c++的开发环境,掌握常用c++程序编写的基本格式,以及数据的定义与使用。
三、实验所需器材与软件微型计算机;VC++程序开发软件四、实验内容预习报告1.对C++新增工具进行学习和使用练习const、函数重载、函数模板、引用等功能练习使用。
2.对这些新增功能使用时有许多注意事项,一定要引起注意。
注意:重载函数的参数个数或类型必须至少有其中之一不同,函数返回值类型可以相同也可以不同。
但不允许参数个数和类型都相同而只有返回值类型不同。
.函数模板:实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。
一般形式:template<typename T>个数不同,则不能用函数模板。
五、实验过程:验证源程序1:编写一个简单程序,输出“Welcome you”,并给程序加一行注释“Fisrt c++ program”。
#include <iostream.h>void main(){1) cout<<”Welcome you”<<endl ;2) //”First c++ program”_;}验证源程序2:编写一个完整的包含输入和输出的简单C++程序。
#include <iostream.h>void main(){cout<<”Please the number:”<<endl;int a;cin>>a;cout<<”the number is:”<<endl;}验证源程序3:编写一个程序,对一个整数数组求和,求和的结果使用全局变量sum存储,同时对整数中的奇数求和,结果使用局部变量sum存储,在主程序将两个结果输出。