1、 面向对象程序设计课程设计报告 1 面向对象程序设计面向对象程序设计 课程设计报告课程设计报告 学学 号:号: 班级序号:班级序号: 姓姓 名:名: 指导老师指导老师: 成成 绩:绩: 20201313 年年 6 6 月月 面向对象程序设计课程设计报告 2 实习题目一实习题目一 【题目需求】 题号及题目: (1)有 0、1、2、3、4、5、6、7、8、9 十个数,按要求填入下列算式中, 要求每个数只使用一次, 首位数不能为零, 输出时显示所有可能的组合并 统计个数。 + = , 如 437+589 = 1026 问题描述:将 0-9 这 10 个数以特定顺序不重复排列成一个正确的加法算式,输出
2、并统 计这样的算式的个数。 问题分析:因为三位数相加最多为两千以内的四位数,而四位数首位又不能为零,即四 位数首位为一。则两个三位数首位从二开始循环。 【算法设计】 (1)设计思想:把三位数逐位判别,先得到两个各个位皆不相等的三位数,相加得到 四位数, 再判断选出四位数与两个三位数各个位皆不相等的数, 即所求排列。 (2)实现过程:逐位判断得出第一个三位数,同理得出第二个三位数,再求得四位数 的各个位,判断,若符合要求则输出并计数。 【感想】 代码设计过程中,借鉴学长思路,但未用数组,造成此程序有局限性,适用 范围降低。设计程序过程中应考虑到程序的适用性。 【附录】 #include usin
3、g namespace std; void main() int NumG1,NumS1,NumB1; int NumG2,NumS2,NumB2; int Rosult; int n1,n2,n3,n4,n=0; for (NumB1=2;NumB1ref(); ref_ptr() if(_ptr)_ptr-unref(); T* get()return _ptr; operator T* () constreturn _ptr; T* operator -()return _ptr; T ref_ptr 面向对象程序设计课程设计报告 7 _ptr = pa; if(_ptr)_ptr-re
4、f(); if(temp)temp-unref(); return *this; private: T *_ptr; ; void main() ref_ptradvPtr = new baseObject; advPtr-Fun(); 实习题目三实习题目三 【题目需求】 题号及题目:综合题: 借助于第三方的开发库,实现二维矢量图形和图像数据文件在视图窗口中的显 示,并能够对图像进行简单的处理和分析,锻炼编写类较大型程序的能力。要求: (1)打开线数据文件 china.wal,可以显示出文件里面的线图形中国地图。可对 面向对象程序设计课程设计报告 8 照 MapGIS67 软件打开的效果进行比
5、较。有余力的同学可以考虑实现点文 件和区文件的打开和显示。 矢量图形显示需要借助于 CDC 的图像绘制函数 (CDC:MoveTo(),CDC:LineTo()等) 。 问题描述分析:题目需在 MFC 编写对话窗口程序,实现界面化操作,并显示中国地图。 【算法设计】 (1)设计思想:先打开数据文件,读取每个点的坐标数据并存储,处理坐标数据为适合 屏幕的坐标值,调用函数画出曲线,重复此操作,画出中国地图。 (2)实现过程: 【附录】 GisFileMng.h: #pragma once #include #include #include using namespace std; typedef
6、 struct D_DOT double x,y; D_DOT; typedef struct D_RECT double xmin, ymin, xmax, ymax; 打开数据文件 读入数据并存储 处理数据 在窗口显示图像 画出图像 面向对象程序设计课程设计报告 9 D_RECT; typedef vector LinStru; class CGisFileMng public: CGisFileMng(void); virtual CGisFileMng(void); public: void ReadMap(char *fileName); void DispMap(CDC* pDC); long m_lLinNum; vector m_linList; CRect m_screenRect; D_RECT m_