计算机高级语言课程设计报告.doc
《计算机高级语言课程设计报告.doc》由会员分享,可在线阅读,更多相关《计算机高级语言课程设计报告.doc(28页珍藏版)》请在三一文库上搜索。
1、计算机高级语言课程设计报告姓名: xx 学号:xxxxxxxx学院:xxxx专业:地理信息系统班级: xxxxxx 实习题目一【需求规格说明】1、 有1、2、3、4、5、6六个数,能组成多少个互不相同且无重复数字的三位数?都是多少? 问题描述及分析:此题为数学中的排序问题可以利用循环来解决。【算法设计】(1)设计思想:利用for循环,将三位数的百位和十位确定,剩下的利用循环和if语句判断个位的数是否与前两位相同,而百位和十位同样需要利用for循环解决,最后输出显示可以将百位数乘以一百加上十位数乘以十加上个位数即可。然后再利用MFC工程,将结果输出来【调试报告】 开始不知道怎么用MFC在文本框中
2、显示,就没有用MFC做,后来了解MFC工程的基本建立后,在其中加入原编程序就可以运行了。【附录】重要代码:/ 1Dlg.cpp : implementation file/#include stdafx.h#include 1.h#include 1Dlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/void CMy1Dlg:OnButton1() UpdateData();CString str;int i,j,k;m_count=0; for(i=1;i7;
3、i+)for(j=1;j7;j+)for(k=1;k7;k+)if(i!=j&j!=k&k!=i)int b=i*100+j*10+k;str.Format(%d,b);m_a.AddString(str);m_count+; UpdateData(FALSE);/ TODO: Add your control notification handler code here运行结果:实习题目二【需求规格说明】5、 文本文件中有一组整数,以空格分隔,要求排序后输出到另一个文件中。问题描述及分析:此题利用到输入输出流的问题以及排序方法。【算法设计】(1)设计思想:用ofstream ifstream
4、 建立对象,然后用这个对象调用open,close来打开和关闭文件。当打开文件后再用冒泡法排序文件里的整数,并输出到另一个文件中。【调试报告】由于对MFC不是很熟练的应用,致使开始无法用MFC中的函数打开文本文件,只能手动打开。后来用输入输出流对象调用OPEN(),CLOSE()进行了改进。【附录】重要代码:/ 6Dlg.cpp : implementation file/#include stdafx.h#include 6.h#include 6Dlg.h#include fstream.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILE
5、static char THIS_FILE = _FILE_;#endifvoid CMy6Dlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRe
6、ct rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();void CMy6Dlg:OnButton4() ifstream file;file.open(old.txt);ofstream outfile;outfile.open(new.txt);int a=1;char ch;file.get(ch);
7、while (!file.eof() if (ch= |ch=/n) a+;file.get(ch);file.close();file.open(old.txt);int *p=new int100;for (int i=0;ipi;for (int m=1;m0&ipj-1)pj=pj-1;j-;pj=i;for (int n=0;na;n+)outfilepn ;delete p;MessageBox(已经执行完毕,请单击新文本按钮查看);void CMy6Dlg:OnButton5() ShellExecute(NULL,open,old.txt,NULL,NULL,SW_SHOWNO
8、RMAL);void CMy6Dlg:OnButton6() ShellExecute(NULL,open,new.txt,NULL,NULL,SW_SHOWNORMAL);void CAboutDlg:OnOK() / TODO: Add extra validation hereCDialog:OnOK();运行结果: 实习题目三【需求规格说明】6、计算正方体、球体和圆柱体的表面积和体积(要求使用虚函数)。 问题描述及分析:此题利用虚函数,然后再用MFC解决。【算法设计】(1)设计思想:此题主要就是考察MFC的熟练应用,至于代码则是很简单的函数。利用虚函数及类的继承写出代码,然后再用MFC
9、做出对话框。(2)设计表示: Shape + GetArea( ) : double + GetVolume( ) : double Cube + GetArea( ) : double + GetVolume( ) : double Sphere + GetArea( ) : double + GetVolume( ) : double Cube + GetArea( ) : double + GetVolume( ) : double【调试报告】开始用单文档形式觉得麻烦,后来直接用对话框形式,变得更简单了。【附录】重要代码:/ 6_计算体积和表面积Dlg.cpp : implementat
10、ion file/#include stdafx.h#include 6_计算体积和表面积.h#include 6_计算体积和表面积Dlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifconst double PI=3.14;class Shapepublic:virtual double GetArea()=0;virtual double GetVolume()=0;class Cube: public Shape /正方体的类public:Cube(doub
11、le a):l(a); double GetArea() return 6*l*l;double GetVolume() return l*l*l;private:double l;class Sphere:public Shape /球的类public:Sphere(double radius):r(radius);double GetArea() return 4*PI*r*r;double GetVolume() return 4*PI*r*r*r/3;private:double r;class Cylinder:public Shape /圆柱体的类public:Cylinder(d
12、ouble high,double radius):h(high),r(radius);double GetArea() return 2*PI*r*r+2*PI*r*h;double GetVolume()return PI*r*r*h;private:double h; double r;double fun1(Shape *str) /计算表面积 return str-GetArea();double fun2(Shape *str) /计算体积 return str-GetVolume();/ void CMy6_Dlg:OnButton1() UpdateData();Cube st
13、r1(m_2);m_6=fun1(&str1);m_9=fun2(&str1);Sphere str2(m_1); m_5=fun1(&str2);m_8=fun2(&str2); Cylinder str3(m_3,m_4); m_7=fun1(&str3);m_10=fun2(&str3); UpdateData(false);运行结果:实习题目四【需求规格说明】10、设计实现一个猜数字的小游戏。游戏开始时在程序内部随机生成一个4位数字(每一位上的值不同,例如3795),用户通过若干轮的尝试试图猜出该数字,猜测次数不能超过8次,第八次如果仍未猜对则提示用户下次继续努力,程序退出。每一轮猜测
14、过程包括:(1)用户输入一个猜测的四位数字,每一位值不同,例如输入3456;(2)程序比较用户输入的数字和程序内部随机生成的数字,如果值对但位置不对则一个计数变量B累加,如果值对位置也对则计数变量A累加。(3)输出A和B的累加信息以提示用户后续的猜测,例如输入3456,则输出1A1B;输入1268,则输出0A0B;输入5973,则提示0A4B;输入3795,则提示猜测成功。要求用类来实现该小游戏。问题描述及分析:此题需要先产生随机数,然后用户来猜,也就是说要将一个四位数的每位数字都提出来,与产生的随机数进行比较。然后用MFC工程实现。【算法设计】(1)设计思想:首先要产生随机数就需要用到ran
15、d(),而rand()产生的是伪随机数,且会产生值相同或者并不是四位数的情况,所以需要定义函数来判断并加以修正。其次需要将四位数拆开,与产生的随机数进行比较,并提示玩家,最后用户输入8次四位数,则随机数需要在此次游戏对话框点击按钮时产生。当一次游戏结束时需要在主面板视图上产生对应信息提醒用户游戏输赢。(2) 设计表示:class CGamepublic: CGame (int num) n=num; voidSearch(int *list1,int *list2); int e,f;private:int n; void CGame:Search(int *list1,int *list2)
16、 int k=0 ,t=0; for(int i=0;i4;i+) for(int j=0;j7)MessageBox(机会用完了!); i+; m_i=8-i; /显示提示 m_t=num.e; m_k=num.f;UpdateData(false);void CMyDlg:OnButton3() /在对话框上显示产生的随机数 UpdateData(); m_n=g;UpdateData(false);运行结果: 实习题目五【需求规格说明】 9、定义复数的类Complex并测试其功能:(1) 复数由实部、虚部两个部分组成,在类的定义中应包含保存这两部分信息的内容。(2) 在类中定义构造函数,
17、使用户能够在构造对象的同时为对象赋初值。 (3)在类中定义复数的加法、减法、乘法三个二元操作符来完成复数间的加、减、乘、除的功能。(4)通过重载“”,使得Complex类的对象能够显示其自身信息。 (5)通过显示定义一个成员函数完成对象的赋值操作,使用户能够对Complex类的对象进行赋值。(6)编写一段主程序(main函数),使用户能够通过这段主程序输入复数并进行复数的计算。问题描述及分析: 类成员函数方式重载运算符的运用 。通过类成员方式对该类重载双目运算符+、*、/,求出两个对象的和、差、积,商。(1)设计思想:运算符重载函数在complex类里定义,首先在complex类中搭建好重载函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 高级 语言 课程设计 报告
