电子工程学院2015年计算机实习_第1页
电子工程学院2015年计算机实习_第2页
电子工程学院2015年计算机实习_第3页
电子工程学院2015年计算机实习_第4页
电子工程学院2015年计算机实习_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机实习报告

专业:电子科学与技术

班级:XXXXXXXX

学号:XXXXXXXX

姓名:XXXXXXXX

计算机实习报告............................................................0

一、魔方阵......................................................................1

1、任务要求:................................................................1

2、算法设计:................................................................1

3、程序运行情况截图:.......................................................2

4、部分代码及注释:.........................................................2

二、动画制作....................................................................9

1、任务要求:...............................................................9

2、设计思路:...............................................................10

3、剧情截图:...............................................................10

三、健康计算器.................................................................11

1、任务要求:...............................................................11

2、算法设计:...............................................................12

3、程序运行情况及截图:....................................................12

4、部分代码及注释:.......................................................12

四、字符串处理.................................................................17

1、任务要求:...............................................................17

2、算法设计:...............................................................17

3、程序运行情况及截图:....................................................18

4、部分代码及注释:.......................................................19

五、函数作图器.................................................................26

1、任务要求:..............................................................26

2、程序运行情况及截图:....................................................26

3、部分代码及注释:........................................................27

六、实习总结:.................................................................38

一、魔方阵

1、任务要求:

n为初始输入的数字(为了显示效果,使n<15),把整数1到n2排成一个nXn方阵,

使方阵中的每一行,每一列以及对角线上.的数之和都相同。输出这个方阵。达到以下要求:

①、可以通过界面设定n的值

②、正确输出方阵

③、其他(界面美观、操作简便)

2、算法设计:

A、奇数阶幻方n为奇数(n=3,5,7,9,11……)(n=2*k+l,k=l,2,3,4,5……)

奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯方)。填写方法是这样:

把1(或最小的数)放在第一行正中;按以下规律排列剩下的n*n-l个数:

(1)、每一个数放在前一个数的右上一格;

(2)、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;

(3)、如果这个数所要放的格己经超出了最右列那么就把它放在最左列,仍然要放在上一行;

(4)、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的

下一行同一列的格内;

(5)、如果这个数所要放的格已经有数填入,处理方法同(4)。

这种写法总是先向“右上”的方向,象是在爬楼梯。

B.当N为双偶数时,算法如下:

(1)先将整个方阵划分成k*k个4阶方阵,然后在每个4阶方阵的对角线上做记号

(2)由左而右、由上而下,遇到没有记号的位置才填数字,但不管是否填入数字,每移动一

格数字都要加1

(3)自右下角开始,由右而左、由下而上,遇到没有数字的位置就填入数字,但每移动一格

数字都要加1

C.当N为奇偶数时,算法如下:

(1)先将整个方阵划成田字型的四个2k+1阶的奇数阶小方阵,并以下法做注记:

a、右半两个小方阵中大于k+2的列。

b、左半两个小方阵中(k+I,k+1)的格位。

c、左半两个小方阵中除了(1,k+1)的格位之外,

小于k+1的列。

(2)以奇数阶魔方阵的方法连续填制法依左上、右下、右

上、左下的顺序分别填制这四个小方阵。

(3)将上半及下半方阵中有注记的数字对调,魔方阵完成。

3、程序运行情况截图:

魔方阵界面上边可以输入魔方阵阶数,可以调节控制魔方阵输出的阶数,当输入3-15的

数字并点击确定时便会在下方输出该阶数的魔方阵,如果输入其他数字或者字符便会报错并

提示重新输入。

4、部分代码及注释:

#include"stdafx.h〃

#include〃魔方阵.h”

#include〃魔方阵Dig.h"

#include"afxdialogex.h〃

#ifdef_DEBUG

#definenewDEBUG_NEW

ftendif

//用于应用程序“关于”菜单项的CAboutDlg对话框

classCAboutDlg:publicCDialogEx

{public:

CAboutDlg();

//对话框数据

enum{IDD=IDD_AB0UTB0X};

2

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

//实现

protected:

DECLARE_MESSAGE_MAP()

);

CAboutDlg::CAboutDlg():CDialogEx(CAboutDlg::IDD)

voidCAboutDlg::DoDataExchange(CDataExchange*pDX)

(

CDialogEx::DoDataExchange(pDX);

BEGIN_MESSAGE_MAP(CAboutDig,CDialogEx)

END_MESSAGE_MAP()

//C魔方阵Dig对话框

C魔方阵Dig::C魔方阵Dlg(CWnd*pParent/*=NULL*/)

:CDialogEx(C魔方阵Dig::IDD,pParent)

,mofang(0)

,C_num(0)

,C_mofang(_T(""))

(

mhlcon=AfxGetApp()->LoadTcon(IDRMAINFRAME);

voidC魔方阵Dig::DoDataExchange(CDataExchange*pDX)

(

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT3,C_num);

DDX_Text(pDX,IDC_EDIT4,C_mofang);

BEGIN_MESSAGE_MAP(C魔方阵Dig,CDialogEx)

ON_WM^SYSCOMMAND()

ONJVM^PAINTO

3

ONWMQUERYDRAGICON()

ON_BN_CLICKED(1DC^BUTTON1,&C魔方阵【)[g::OnBnClickedButton1)

//ONJNCHANGE(IDCEDIT2,&C魔方阵Dig::0nEnChangeEdit2)

END_MESSAGE_MAP()

//C魔方阵Dig消息处理程序

BOOLC魔方阵Dig::OnInitDialog()

(

CDialogEx::OnInitDialog();

//将“关于”菜单项添加到系统菜单中。

//IDMABOUTBOX必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX&OxFFFO)==IDM^ABOUTBOX):

ASSERT(IDMABOUTBOX<OxFOOO);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!=NULL)

(

BOOLbNameValid;

CStringstrAboutMenu;

bNameValid=strAboutMenu.LoadString(IDSABOUTBOX);

ASSERT(bNameValid);

if(!strAboutMenu.IsEmptyO)

(

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

)

//设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

//执行此操作

Seticon(m_hlcon,TRUE);//设置大图标

Seticon(m_hlcon,FALSE);//设置小图标

//TODO:在此添加额外的初始化代码

returnTRUE;//除非将焦点设置到控件,否则返回TRUE

voidC魔方阵Dig::OnSysCommand(UINTnID,LPARAM1Param)

4

if((nID&OxFFFO)==IDMABOUTBOX)

(

CAboutDlgdlgAbout;

dlgAbout.DoModal();

)

else

(

CDialogEx::OnSysCommand(nID,1Param);

)

}

//如果向对话框添加最小化按钮,则需要下面的代码

//来绘制该图标。对于使用文档/视图模型的MFC应用程序,

//这将由框架自动完成。

voidC魔方阵Dig::0nPaint()

|

if(Islconic())

(

CPaintDCde(this);//用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGNI),

reinterpret_cast<WPARAM>(de.GetSafelide()),0);

//使图标在工作区矩形中居中

intcxlcon=GetSystemMetrics(SMCXICON);

intcylcon=GetSystemMetrics(SM_CYIC0N);

CRectrect;

GetClientRect(ftrect);

intx=(rect.Width()-cxlcon+1)/2;

inty=(rect.Height()-cylcon+1)/2;

//绘制图标

de.Drawicon(x,y,m_hlcon);

)

else

(

CDialogEx::0nPaint();

}

}

〃当用户拖动最小化窗口时系统调用此函数取得光标

〃显示。

HCURSORC魔方阵Dig::OnQueryDragIcon()

5

returnstatic_cast<HCURSOR>(m_hlcon);

)

〃点击“输出”

voidC魔方阵Dig::OnBnClickedButtonl()

(

//TODO:在此添加控件通知处理程序代码

UpdateData(TRUE);

if(Cnum<=2||Cnum〉15)〃定义变量Cnum为输入的n

{

MessageBox(T(〃您输入的n不在范围内,请重新输入〃));

)

else

{

inti,1;

intarray[16][16]={0};

//////////////////////////////////////////////////

〃当输入的n是奇数时算法为将1填入第一行中间,之后想右上方继续排列,若右上

方有数则放在它下面

if(C_num%2==l)

(

inti,j,row,col,pre_row,pre_col;

intsqrN=C_num*C_num;

intvalue;〃计数l-n*n

for(row=0;row<C_num;row++)〃赋初值

for(co1=0;col<C_num;col++)

array[row][col]=0;

for(row=0,value=l,col=(C_num-l)/2;value<=sqrN;value++)

(

array[row][col]=value;

pre_row-row;

pre_col=col;

row——;

col++;

〃溢出的处理

if(row<0)

row+=C_num;

if(col==C_num)

col-=C_num;

〃当array[row][col]已经有数时的处理

if(array[row][col])

6

col=precol;

row=pre_row+l;

)

)

)

//////////////////////////////////////////////////////////////////////////

//双偶数魔方阵的构造方法:将数字按顺序放入数组,然后对调指定的行和列

elseif(Cnum%4==0)

(

inti,j,row,col,count=1,temp;

for(row=0;row<C_num;row++)

〃将l-n*n放入二维数组

for(co1=0;col<C_num;col++)

(

array[row][col]=count;

count++;

}

〃对调

for(row=C_num/4;row<=C_num*3/4-1;row++)

(

for(col=0;col<C_num/2;col++)

(

temp=array[row][col];

array[row][col]=array[row][C_num-l-col];

array[row][C_num-l-col]=temp;

)

)

for(col=C_num/4;col<C_num*3/4;col++)

(

for(row=0;row<C_num/2;row++)

(

temp=array[row][col];

array[row][col]=array[C_num-1-row][col];

array[C_num-1-row][col]=temp;

)

)

)

////////////////////////////////////////////////////////////

〃构造单偶数:将二维数组分成4个小魔方阵,分别按照奇数魔方阵算法填入数字,

然后对调指定方格

elseif(C_num%4==2)

(

introw,col,pre_row,pre_col,value,sqrN;

7

inti,j,m,M,inttemp;

//Cnum=4m+2,将Cnum*Cnum分割成四个M*M

m=(C_num-2)/4;

M=2*m+1;

sqrN=M*M;

for(row=O;row<M;row++)〃赋初值

for(col=0;coKM;col++)

array[row][col]=0;

//l:在左上角写出M=2m+1的奇数魔方

〃利用方法构造

for(row=0,value=l,col=(M-l)/2;value<=sqrN;value++)

(

array[row][col]=value;

prerow=row;

pre_col=col;

row——;

col++;

if(row<0)

row+=M;

if(col==M)

col-=M;

if(array[row][col])

(

col=pre_col;

row=pre_row+l;

}

}

〃2、在右下角构造魔方阵

for(row=M;row<C_num;row++)

for(col=M;col<C_num;col++)

array[row][col]=array[row-M][col-M]+M*M;

//3:在右上角构造魔方阵

for(row=0;row<M;row++)

for(col=M;col<C_num;col++)

array[row][col]=array[row+M][col]+M*M;

//4:在左下角构造魔方阵

for(row=M;row<C_num;row++)

for(col=0;coKM;col++)

array[row][col]=array[row-M][col+M]+M*M;

//5:交换组标记了的数

for(col=0;col<m;col++)//交换0-kT的列

for(row=0;row<M;row++)

8

if(row==m)continue;

int_temp=array[row][col];

array[row][col]=array[M+row][col];

array[M+row][col]=int_temp;

)

〃交换(k+Lk+1)

inttemp=array[m][m];

array[m][m]=array[m+M][m];

array[m+M][m]=inttemp;

〃交换右边的大于k+2的列

for(col=3+m+2;col<2*M;col++)

for(row=0;row<M;row++)

(

int_temp=array[row][col];

array[row][col]=array[M+row][col];

array[M+row][col]=int_temp;

)

)

///////////////////////////////////////////////////////////////////////////

///

〃输出魔方阵

CStringtemp,out;

for(inti=0;i<C_num;i++)

(

for(int1=0;1<C_num;1++)

(

temp.Format(_T(/Z%5d,/),array[i][1]);

out+=temp;

)

//out+=z,\nz,;

out+=〃\r\n〃;

)

C_mofang=out;

UpdateData(FALSE);

)

)

二、动画制作

1、任务要求:

设计一组星际穿越的动画,界面美观流畅,最好有配乐,展现想象力。

9

2、设计思路:

5辆飞船一起出发,途中遇到陨石群,遇到黑洞,有过退缩,最终到达目的地

3、剧情截图:

出发:

途经陨石群:

10

途经黑洞:

到达目的地:

三、健康计算器

1、任务要求:

设计一个测量身体BMI指数和体脂率的健康计算器,要求

①、给出数据可正确计算

11

②、能进行健康提示

③、界面、易用度及其它创意功能

2、算法设计:

健康计算器的算法并不爱杂,按照以下公式便可计算出来,并给出相应的健康提示:

①、BMI指数公式:体重(kg)除以身高(m)的平方(BMI=公斤/m2)

体重过低<18.5

体重正常18.5—23.9

超重24.0—27.9

②、体脂率公式:

女性的身体脂肪公式:

参数a=腰围X0.74

参数b=体重X0.082+34.89

身体脂肪总重量=a-b

体脂率(身体脂肪百分比)=(身体脂肪总重量+体重)X100%

男性的身体脂肪公式:

参数a=腰围X0.74

参数b=体重X0.082+44.74

身体脂肪总重量=a-b

体脂率(身体脂肪百分比)=(身体脂肪总重量+体重)X100%

3、程序运行情况及截图:

Jm指数

请选择

确定

左图是输入界面,要求选择性别,输入身高体重以及腰围,程序会根据选择的性别来选

择相应的公式,并在弹窗中显示BMI指、体脂率以及相应的健康提示。如果输入界面没有选

择性别后者是输入字符,将会报错并提示重新输入。

4、部分代码及注释:

^include"stdafx.h〃

#include"身体健康指数.h”

#include”身体健康指数Dig.h"

#include^afxdialogex.hz,

12

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

//用于应用程序“关于”菜单项的CAboutDlg对话框

classCAboutDlg:publicCDialogEx

(

public:

CAboutDlg0;

//对话框数据

enum{1DD=IDD_AB0UTB0X};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

//实现

protected:

DECLAREMESSAGEMAP()

};

CAboutDlg::CAboutDlg():Cl)ia1ogEx(CAboutDlg::IDD)

(

)

voidCAboutDlg::DoDataExchange(CDatal:xchange*pDX)

{

CDialogEx::DoDataExchange(pDX);

)

BEGINMESSAGEMAP(CAboutDlg,CDialogEx)

END_MESSAGE_MAP()

//C身体健康指数Dig对话框

康指数Dig::C身体健康指数Dlg(CWnd*pParent/*=NULL*/)

:CDialogEx(C身体健康指数Dig::IDD,pParen"

,height(0)

13

,weight(0)

,yaowei(0)

(

mhlcon=AfxGetApp()->LoadIcon(IDRMAINFRAME);

)

voidC身体健康指数Dig::DoDataExchange(CDataExchange*pDX)

(

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT1,height);

DDX_Text(pDX,1DC_ED1T2,weight);

DDX_Text(pDX,IDC_EDIT3,yaowei);

BEG1N_MESSAGE_MAP(C身体健康指数Dig,CDialogEx)

0N_WM_SYSC0MMAND()

0NJVNLPA1NT0

ONWMQUERYDRAGICON()

0N_.BN_CLICKED(IDC_RADI01,&C身体健康指数Dig::OnBnClickedRadiol)

0N_BN_CLICKED(IDC_RADI02,&C身体健康指数Dig::0nBnClickedRadio2)

ON_BN_CL1CKED(IDC_BUTTON2,&C身体健康指数Dig::0nBnClickedButton2)

ONBNCLICKED(IDCBUTTON),&C身体健康指数Dig::0nBnClickedButtonl)

END_MESSAGE_MAP()

//C身体健康指数Dig消息处理程序

BOOI.C身体健康指数Dig::0nInitDialog()

(

CDialogEx::0nInitDialog0;

//将“关于”菜单项添加到系统菜单中。

//TDMABOUTBOX必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX&OxFFFO)==IDM_ABOUTBOX);

ASSERT(TDMABOCTBOX<OxFOOO);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!=NULL)

{

BOOLbNameValid;

CStringstrAboutMenu;

bNameValid=strAboutMenu.LoadString(IDSABOUTBOX);

ASSERT(bNameValid);

14

if(IstrAboutMenu.IsEmptyO)

{

pSysMenu->AppendMenu(M[;SEPARATOR);

pSysMenu->AppendMenu(MFSTRING,IDMABOl'TBOX,strAboutMenu);

}

}

//设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

//执行此操作

Seticon(m_hlcon,TRUE);//设置大图标

Setlcon(mhlcon,FALSE);//设置小图标

//TODO:在此添加额外的初始化代码

returnTRUE;//除非将焦点设置到控件,否则返回TRUE

)

voidC身体健康指数Dig::OnSysCommand(inNTnID,I.PARAM1Param)

(

if((nID&OxFFFO)==IDM_ABOUTBOX)

(

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDitilogEx::OnSysCommand(nID,1Param);

}

}

//如果向对话框添加最小化按钮,则需要卜.面的代码

//来绘制该图标。对于使用文档/视图模型的MFC应用程序,

//这将由框架自动完成。

voidC身体健康指数Dig::0nPaint()

(

if(IsIconicO)

{

CPaintDCdc(this);//用于绘制的设备上下文

SendMessage(WMICONERASEBKGND,reinterpretcast<WPARAM>(de.GetSafeHdc()),0);

//使图标在工作区矩形中居中

intcxlcon=GetSystemMetrics(SMCXICON);

15

intcylcon=GetSystemMetrics(SMCYICON);

CRectrect;

GetClientRect(&rect);

intx=(rect.Width0-cxlcon+1)/2;

inty=(rect.Height()-cylcon+1)/2;

//绘制图标

de.Drawicon(x,y,mhlcon);

)

else

(

CDialogEx::0nPaint();

)

)

〃当用户拖动最小化窗口时系统调用此函数取得光标

〃显示。

HCliRSORC身体健康指数Dig::OnQueryDragIcon()

(

returnstatic_cast<HCURSOR>(mJiIcon);

)

doublet;〃定义t为计算体脂率的一个参数,该参数因男女而异

〃当选择女性时

voidC身体健康指数Dig::OnBnClickedRadiol()

(

//TODO:在此添加控件通知处理程序代码

t=44.74;

)

//当选择男性时

voidC身体健康指数Dig::0nBnClickedRadio2()

(

//TODO:在此添加控件通知处理程序代码

t=34.89;

)

〃点击“BMI指数”

voidC身体健康指数Dig::0nBnClickedButton2()

//TODO:在此添加控件通知处理程序代码

16

UpdateData(TRIE);

doubleBMI=weight/(height*height);

CStringtemp,tempi;

temp.Format(_T("您的BMI指数为%.2f,"),BMD;

〃根据BMI指数给出健康状况的提示

if(BMI〈18.5)temp+="体重过低!请注意饮食!”;

elseif(BMI〈23.9)temp+="体重正常!请继续保持!工

elseif(BMI〈27.9)temp+="超重!请注意少吃!

elsetemp+="肥胖!请注意少吃!"

doubletz=(yaowei*0.74-(weight*0.082+t))/weight;

tempi.Format(_T("您的体脂率为%.2f%%。"),tz*100);

temp+=〃\n\r”;

temp+=templ;

MessageBox(temp);

)

//当点击“体脂率”

voidC身体健康指数Dig::OnBnClickedButtonl()

(

//TODO:在此添加控件通知处理程序代码

)

四、字符串处理

1、任务要求:

(1)可以录入任何一个字符串,字符串必须且只能含有数字和字母,禁止输入其他字

符,不是同时含有数字和字母都应报错。下面的操作都是针对这个字符串的,设字符串长度

为n;

(2)逆序输出上述字符串;

(3)统计出字符串中各个字母、数字出现的次数;

(4)输入一个较短的单词,统计该单词在前面的字符串中出现的次数,以及每次出现

的位置;然后将字符串中包含的这个单词全部删除,输出新字符串。

(5)输入一个字符串。请将该字符串插入到前面第一次输入的字符串的中间位置。n

为偶数则是第n/2个字符后面,n为奇数,则在第(n-l)/2字符后面。输出结果。

2、算法设计:

利用数组存储数据,并通过字符串查找删除插入等功能的算法来设计。

17

3、程序运行情况及截图:

字符串处理的要求基本都在一个界面上进行,按照界面从上往下输入以达到要求,如果

输入的全为数字或者全为字母就会报错并提示重新输入。

18

4、部分代码及注释:

#include"stdafx.h〃

^include*MFCApplicationl.

ttinclude^MFCApplicationlDlg.h*

#include“afxdialogex.h〃

#ifdef_DEBUG

^definenewDEBUG_NEW

#endif

//用于应用程序“关于”菜单项的CAboutDlg对话框

classCAboutDlg:publicCDialogEx

(

public:

CAboutDlg();

//对话框数据

enum{IDD=IDD_AB0UTB0X};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

//实现

protected:

DECLAREMESSAGEMAP()

};

CAboutDlg::CAboutDlg():CDialogEx(CAboutDlg::IDD)

(

}

voidG\boutDlg::DoDataExchange(CDataExchange*pDX)

(

CDialogEx::DoDataExchange(pDX);

)

BEGINMESSAGEMAP(CAboutDlg,CDialogEx)

END_MESSAGE_MAP()

//CMFCApplicationlDlg对话框

19

CMFCApplicatiohlDlg::CMFCApplicationlDlg(CWnd*pParent./*=NULL*/)

:CDialogEx(CMFCApplicationlDlg::IDD,pParent)

,str(_T「))

,strl(_TCO)

,str3(」("))

,str4(_T「))

,m_out(_T(""))

,m_out2(_T(""))

,m_out3(_T(""))

(

mhlcon=AfxGetApp()->LoadIcon(IDRMAINFRAME);

)

voidCMl--CApplicationlDlg::DoDataExchange(CDataExchange*pDX)

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT1,str);

DDX_Text(pDX,IDC_EMT6,strl);

DDXText(pDX,IDCEDTT4,str3);

DDX_Text(pDX,IDC_EDIT5,str4);

DDXText(pDX,TDCEDTT3,mout);

DDX_Text(pDX,1DC_ED1T7,m_out2);

DDXText(pDX,IDCEDIT8,mout3);

)

BEGIN_MESSAGE„MAP(CMFCApplicationlDlg,CDialogEx)

ONJVM_SYSCOMMAND()

ONJVM_PAINT()

ONWMQUERYDRAGICON()

ON_BN_CLICKED(IDJBUTTON1,&CMFCApplicjitionlDlg::OnBnClickedButtonl)

ONBNCLICKED(IDCBUTTON4,&CMFCApplicationlDlg::OnBnClickedButton4)

ON_BN_CLICKED(IDC_BUTT0N6,&CMFCApplicationlDlg::OnBnClickedButton6)

ONBNCLICKED(IDCBUTT0N9,&CMFCApplicationlDlg::OnBnClickedButton9)

ON_BN_CLICKED(IDC_BUTTON8,&CMFCApplicationlDlg::OnBnClickedButton8)

ONBNCLICKED(IDCBUTTON7,&CMFCApplicationlDlg::OnBnClickedButton7)

END_MESSAGE_MAP()

//CMFCApplication1DIg消息处理程序

BOOl-CMFCApplication1Dig::OnInitDialog()

20

CDialogEx::OnInitDialog();

//将“关于”菜单项添加到系统菜单中。

//IDM_ABOUTBOX必须在系统命令范围内。

ASSERT((IDM_AB0UTB0X&OxFFFO)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<OxFOOO);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!=NULL)

{

BOOLbNameValid;

CStringstrAboutMenu;

bNameValid=strAboutMenu.LoadString(1DSABOUTBOX);

ASSERT(bNameValid);

if(IstrAboutMenu.IsEmptyO)

{

pSysMenu->AppendMenu(MFSEPARATOR);

pSysMenu->AppendMenu(MFSTRING,IDMABOl'TBOX,strAboutMenu);

//设置此对话框的图标。当应用程序主窗口不是对话框时,框架将白动

//执行此操作

Seticon(m_hlcon,TRUE);//设置大图标

Seticon(m^hlcon,FALSE);〃设置小图标

//TODO:在此添加额外的初始化代码

returnTRUE;//除非将焦点设置到控件,否则返回TRUE

)

voidCMFCApplication1DIg:rOnSysCommand(CI\TnID,LPARAM1Param)

(

if((nTD&OxFFFO)==IDMABOUTBOX)

(

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDitilogEx::OnSysCommand(nlD,1Param);

21

)

//如果向对话框添加最小化按钮,则需要下面的代码

//来绘制该图标。对于使用文档/视图模型的MFC应用程序,

//这将由框架自动完成。

voidCMb'CApplicationlDlg::0nPaint()

(

if(Islconic())

{

CPaintDCde(this);//用于绘制的设备上下文

SendMessage(WM_1CONERASEBKGND,reinterpret_cast<WPARA.M>(de.GetSafelide()),0);

//使图标在工作区矩形中居中

intcxlcon=GetSystemMetrics(SM_CXICON);

intcylcon=GetSystemMetrics(SM_CYIC0N);

CRectrect;

GetClientRect(&rect);

intx二(rect.Width()-cxlcon+1)/2;

inty=(rect.Height()-cylcon+1)/2;

//绘制图标

de.DrawTcon(x,y,mhlcon);

)

else

(

CDialogEx::0nPaint();

)

)

〃当用户拖动最小化窗口时系统调用此函数取得光标

〃显示。

HCURSORCMFCApplicationlDlg::OnQueryDragIcon()

(

returnstaticcast<HCURSOR>(mhlcon);

)

CStringout;〃定义全局变量,当输入字符串合法时,令out指向它

intn;〃n为字符串长度

22

voidCM1CApplicationlDlg::OnBnClickedButtonl()〃输入检查

{

//TODO:在此添加控件通知处理程序代码

UpdateData(TRUE);

n=str.GetLengthO;

intcount=0;

CStringtempl=str.MakeLowerO;〃将输入的字符串转换为小”

for(inti=0;i<n;i++)

(

intj=templ.GetAt(i);〃提取tempi里的第i个字符

if(j>=48&&j<=57||j>=97&&j<=122);

elsecount++;〃如果不是字母或数字,计数加-

)

intx=0;

inty=0;

for(inti=0;i<n;i++)

(

intj=templ.GetAt(i);〃提取tempi里的第i个字符

if(j>=48&&j<=57)x++;

)

if(x==n)count++;

for(inti=0;i<n;i++)

(

intj=templ.GetAt(i);〃提取tempi里的第i个字符

if(j>=97Mj<=122)y++;

)

if(y==n)count++;

if(count-0)

(

out=str;

MessageBox(_T(〃输入成功!”));

)

else

(

MessageBox(_T(〃您输入的字符串含有非法字符或者只含有数字字母,请重新输入!”));

)

}

voidCMFCApp1ication1DIg::0nBnClickedButton4()〃操作1:反序

//TODO:在此添加控件通知处理程序代码

23

strl=out;

strl.MakeReverse();〃将字符串倒序

UpdateData(FALSE);

//MessageBox(strl);

)

voidC.Ml;CApp1ication1DIg::0nBnClickedButton6()〃操作2:统计

(

//TODO:在此添加控件通知处理程序代码

intcountchar[26]={0};〃定义countchar数组记录字母的个数

intcountnum[10]={0};〃定义countnum数组记录数字的个数

CSti-ingtongji,temp,tempi;

temp=out.MakeLowerO;

for(inti=0;i<n;i++)

(

//charc=temp.Mid(i,1)

if(temp.GetAt(i)<=57)

countnum[temp.GetAt(i)-'O']++;

elsecountchar[temp.GetAt(i)-,a']++;

)

for(inti=0;i<26;i++)

{

if(countchar[i]==0)continue;

else

(

tempi.Format(_T(线现%出欠"),'a+i,countchar[i]);

tongji+二tempi;

tongji+=z,〃;

for(inti=0;i<10;i++)

(

if(countnum[i]-0)continue;

else

(

tempi.Format(_T("%c出现%d次"),'O'+i,countnum[i]);

tongji+=templ;

tongji+=,z

}

24

m_out=tongji;

UpdateData(FALSE);

//tongji+=templ;

)

voidCMl-'CApplicationlDlg::0nBnClickedButton9()〃操作4

(

//TODO:在此添加控件通知处理程序代码

UpdateData(TRUE);

intn4=str4.GetLengthO;

intcount=0;

CStringtemp;

for(inti=0;i<n4;i++)

(

if(str4.GetAt(i));〃如果是不操作

elsecount++;

)

if(count>0)

{

MessageBox(_T(〃您输入的字符串含有非法字符,请重新输入!〃));

)

temp+=out.Left(n/2);

temp+=str4;

temp+=out.Right((n+l)/2);

m_out3=temp;

UpdateData(FALSE);

}

CStringt;

voidCMl,CApplicationlDlg::0nBnClickedButton80//^^3

(

//TODO:在此添加控件通知处理程序代码

UpdateData(TRUE);

CStringtemp2,output;

output="单词出现的位置:”;

25

inttimes=O;

intn3=str3.GetLengthO;

intj=out.Find(str3);

t=out;

while(j>=0)

{

times++;

temp2.Format(T(〃第%d个字符,"),j+times);

intnum=t.Delete(j,n3);

output+=temp2;

j=t.Find(str3);

)

output+="\r\n单词出现的次数:〃;

temp2.Format(T("%d"),times);

output+=temp2;

MessageBox(output);

)

voidCMFCApplicationlDlg::0nBnClickedButton7()

(

//TODO:在此添加控件通知处理程序代码

m_out2=t;

UpdateData(FALSE);

)

五、函数作图器

1、任务要求:

自己编辑一个数学函数作图器,数字0-9、pi圆周率、e自然对数底数。要求这个数

学函数作图器可以对输入的各种数学函数(包括加减乘除四则运算以及三角函数、指数函数、

事函数、对数函数)进行绘图。要求有可以自山调节的横纵坐标,可以对超出有效范围的函

数进行提示报错。要求:

基本函数图形

调节坐标

其他(范围提示,报错)

2、程序运行情况及截图:

26

程序界面左边部分作为作图区,右边部分选择所要绘制的函数类型,并输入参数,若输

入的参数不是数字或者不是正确的运算符,就会报错并提示重新输入。

3、部分代码及注释:

#include"stdafx.

#include"MFCApplication2.h”

ttinclude,,MFCApplication2Dlg.h*

#include“afxdialogex.h"

#include<math.h>

#ifdefD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论