OOP 实验汇总及课程设计
-
Upload
evan-hopkins -
Category
Documents
-
view
89 -
download
4
description
Transcript of OOP 实验汇总及课程设计
OOP实验汇总及课程设计
大纲• 实验报告:撰写 8 个报告• 主要实验: 14 个• 课程设计:多媒体同学地图系统: MCMS
面向对象程序设计 - 实验实习第 1 章 c++ 基础知识—— 2 : P16,1-51 第 2 章 类和对象—— 4 : P43,2-5第 3 章 运算符重载—— 2 : P56,3-62 第 4 章 继承与派生—— 4 : P73,4-63 第 5 章 多态性与虚函数—— 4 : P82,5-6第 6 章 mfc 编程—— 3 : P110,6-11,6-124 第 7 章 屏幕绘图及文本显示—— 3 : P132,7-9,10,115 第 8 章 键盘与鼠标—— 3 : P152,8-7,8,9,10第 9 章 windows 控件—— 2 : P212,9-10,11,12,13,14,15,16第 10 章 资源—— 2 : P238,10-12,13,14,15第 11 章 单文档与多文档—— 3 : P265,11-11,12,136 第 12 章 数据库编程—— 2 : P288,12-8,97 第 13 章 多媒体编程—— 2 : P298,13-38 第 14 章 internet 编程—— 2 : P306,14-2
红色为要撰写实验报告的
实验 1
• P16,1-5 分解质因数算法:• step1: 获得分解质因数 n;• step2: 先找 n 最小的质数 k;• step3: 如果 k 等于 n ,则说明分解质因数的过程
已经结束,打印出即可 ;• step4: 如果 n<>k ,但 n 能被 k 整除,则应打印
出 k 的值,并用 n 除以 k 的商 , 作为新的 n, 重复执行第二步 ;
• step5: 如果 n 不能被 k 整除,则用 k+1 作为 k 的值 , 重复执行第二步 ;
Prime 演示
实验 2
• P43,2-5 Circle 类设计class Circle{
public:• float perimeter();• float area();
private:• float radius;• };
Circle 演示
实验 3• P56,3-6 运算符重载( Complex 类设计)• class Complex{• public:• Complex(){i='i';}• Complex(double x, double y):a(x),b(y){i='i';}•• void input();• void output();• void add(const Complex c);• void subtraction(const Complex c);
• friend ostream& operator<<(ostream&, Complex&);• friend istream& operator>>(istream&, Complex&);
• private:• double a;//real numbers • double b;//real numbers• char i;//imaginary unit• };
Complex 演示
实验 4• P73-6 ,设计 Worker 类, Teacher 类和 M
echanic 类
实验 5
• P82,5-6 多态
Shape 类、 Triangle 类class Shape{public:
virtual float area()=0;};
class Triangle: public Shape{public:
Triangle(float x, float y, float z):a(x),b(y),c(z){}virtual float area(){
float s;s=(a+b+c)/2;s=s*(s-a)*(s-b)*(s-c);s=sqrt(s);return s;
}private:
float a,b,c;};
Circle 类、 Rectangle 类class Circle: public Shape{public:
Circle(float x):r(x){}virtual float area(){ return 3.14*r*r;}
private:float r;
};
class Rectangle: public Shape{public:
Rectangle(float x, float y):a(x),b(y){}virtual float area(){ return a*b;}
private:float a;float b;
};
演示Shape *sPtr;Circle c(10);Rectangle r(10,10);Triangle t(3,4,5);
sPtr=&c;cout<<"Cirle area:"<<sPtr->area()<<endl;
sPtr=&r;cout<<"Rectangle area:"<<sPtr->area()<<endl;
sPtr=&t;cout<<"Triangle area:"<<sPtr->area()<<endl;
实验 6
• 函数指针• 静态库• 动态库
– 装入时链接 : #pragma comment(lib,”XXXlib.lib”)– 执行时链接 : LoadLibrary,GetProcAddree,FreeLi
brary 函数• 插件框架• 插件开发
实验 7
• P132:7-9,7-10,7-11
• 综合设计:中国地图。点( Pie )状城市用圆符号;线( Polyline )状河流用线符号;面( Polygon 、 FloodFill )数据状省市用多边形符号。各层考虑合理的分级,分色。所需数据自己解决并参考 OGC SFS进行简单的地图数据结构设计(数组或向量存储)。
• 同学数据– 姓名 性别 生日 邮箱 经度 纬度 籍贯…
• 类设计– CFriends 、 CCity 、 CRoad 、 CProvince
• 坐标变换– 经纬度到屏幕坐标变换– 屏幕到经纬度坐标变换
• 地图绘显– 点、线、面图层(中国城市,道路,省区)
中国(同学)地图
实验 8
• 实现中国地图操作功能– +,- 键缩放地图,→←↑↓键移动地图– 鼠标调用 Polyline, polygon 绘制河流、省区
及鼠标光标的地理坐标(屏幕到经纬度坐标变换)
– 添加地图的边框、图例和经纬网格及刻度。
实验 9• 将教材 9-1 至 9-13 实例综合为一个基于对话
框的应用程序,以学友为例设计类,必要的属性,并将输入数据保存在数组或向量中。
• 完成“多媒体同学地图系统”的同学基本信息管理功能模块。– 同学基本信息– 通用对话框:地图着色
实验 10
• 将 10 章实例增加到“多媒体同学地图系统”,使其具备商业软件的品质。– 菜单、加速键、工具栏、状态条、图标、位图、对话框和字符串提示等
实验 11
• 利用 MDI 重新设计“多媒体同学地图系统”,使其初步具备分为同学基本信息管理、图形表达等功能模块。并能实现空间和属性数据的串行化。
• P12-8 , 12-9
• 将“多媒体同学地图系统”修改为基于数据库的系统,尝试利用数据库或空间数据库 Spatialite 存储数据。– 利用 C++stream 实现数据的内部存储: cin 、
cout 以及 ifstream,ofstream读写数据;–直接对数据库操作: MCMS启动从数据库中读取数据, MCMS退出将数据保存到数据库
– 通用数据库如 access 或 sql server 或 sqlite– 空间数据库 Spatialite
实验 12
• P13-3. 编写一个基于单文档的应用程序,双击用户区时可以播放声频和视频文件。
• 实现“多媒体同学地图系统”多媒体功能模块。– 照片– 视频自我介绍– 网站(微博) URL– …
实验 13
• 编写支持网络聊天的 “多媒体同学地图系统” –浏览网页– 网络聊天– 在线好友– 网游踪迹– 时空分析(统计:上网时间,地点,内容)
实验 14
OOP课程设计说明
• “ 多媒体同学地图系统”,分为同学基本信息管理、图形表达、多媒体和网络聊天等功能模块(插件)。
– 模块一:地图。图层分为中国城市、道路和省份等基础图层(注意空间数据满足拓扑关系);
– 模块二:同学。学生( OOP 课程的每位学生)信息及其同学、好友信息(至少 10条)
– 模块三:多媒体。照片、视频和网址(各一条)– 模块四:网络。支持聊天和冲浪轨迹的统计、地图显
示。
OOP课程设计要求
• 在完成教材实例和习题的基础上,完成“多媒体同学地图系统” MCMS ( Multimedia classmate Map system : MCMS )系统的设计;
• 文档模式;数据存储;模块设计(类)和插件框架的使用迭代进行;
• 系统开放设计不拘泥于形式,只要体现 OOA ,OOD 和 OOP 即可;
• 每位学生必须提交课程设计 MCMS ,否则实验成绩为 0 分计!
• 资源网站: http://code.google.com/p/osgis/– 全部课件和书中项目以及实验代码