電子工程學院2015年計算機實習_第1頁
電子工程學院2015年計算機實習_第2頁
電子工程學院2015年計算機實習_第3頁
電子工程學院2015年計算機實習_第4頁
電子工程學院2015年計算機實習_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

計算機實習報告

專業(yè):電子科學與技術

班級: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

五、函數(shù)作圖器.................................................................26

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

2、程序運行情況及截圖:....................................................26

3、部分代碼及注釋:........................................................27

六、實習總結:.................................................................38

一、魔方陣

1、任務要求:

n為初始輸入的數(shù)字(為了顯示效果,使n<15),把整數(shù)1到n2排成一個nXn方陣,

使方陣中的每一行,每一列以及對角線上.的數(shù)之和都相同。輸出這個方陣。達到以下要求:

①、可以通過界面設定n的值

②、正確輸出方陣

③、其他(界面美觀、操作簡便)

2、算法設計:

A、奇數(shù)階幻方n為奇數(shù)(n=3,5,7,9,11……)(n=2*k+l,k=l,2,3,4,5……)

奇數(shù)階幻方最經(jīng)典的填法是羅伯特法(也有人稱之為樓梯方)。填寫方法是這樣:

把1(或最小的數(shù))放在第一行正中;按以下規(guī)律排列剩下的n*n-l個數(shù):

(1)、每一個數(shù)放在前一個數(shù)的右上一格;

(2)、如果這個數(shù)所要放的格已經(jīng)超出了頂行那么就把它放在底行,仍然要放在右一列;

(3)、如果這個數(shù)所要放的格己經(jīng)超出了最右列那么就把它放在最左列,仍然要放在上一行;

(4)、如果這個數(shù)所要放的格已經(jīng)超出了頂行且超出了最右列,那么就把它放在前一個數(shù)的

下一行同一列的格內(nèi);

(5)、如果這個數(shù)所要放的格已經(jīng)有數(shù)填入,處理方法同(4)。

這種寫法總是先向“右上”的方向,象是在爬樓梯。

B.當N為雙偶數(shù)時,算法如下:

(1)先將整個方陣劃分成k*k個4階方陣,然后在每個4階方陣的對角線上做記號

(2)由左而右、由上而下,遇到?jīng)]有記號的位置才填數(shù)字,但不管是否填入數(shù)字,每移動一

格數(shù)字都要加1

(3)自右下角開始,由右而左、由下而上,遇到?jīng)]有數(shù)字的位置就填入數(shù)字,但每移動一格

數(shù)字都要加1

C.當N為奇偶數(shù)時,算法如下:

(1)先將整個方陣劃成田字型的四個2k+1階的奇數(shù)階小方陣,并以下法做注記:

a、右半兩個小方陣中大于k+2的列。

b、左半兩個小方陣中(k+I,k+1)的格位。

c、左半兩個小方陣中除了(1,k+1)的格位之外,

小于k+1的列。

(2)以奇數(shù)階魔方陣的方法連續(xù)填制法依左上、右下、右

上、左下的順序分別填制這四個小方陣。

(3)將上半及下半方陣中有注記的數(shù)字對調(diào),魔方陣完成。

3、程序運行情況截圖:

魔方陣界面上邊可以輸入魔方陣階數(shù),可以調(diào)節(jié)控制魔方陣輸出的階數(shù),當輸入3-15的

數(shù)字并點擊確定時便會在下方輸出該階數(shù)的魔方陣,如果輸入其他數(shù)字或者字符便會報錯并

提示重新輸入。

4、部分代碼及注釋:

#include"stdafx.h〃

#include〃魔方陣.h”

#include〃魔方陣Dig.h"

#include"afxdialogex.h〃

#ifdef_DEBUG

#definenewDEBUG_NEW

ftendif

//用于應用程序“關于”菜單項的CAboutDlg對話框

classCAboutDlg:publicCDialogEx

{public:

CAboutDlg();

//對話框數(shù)據(jù)

enum{IDD=IDD_AB0UTB0X};

2

protected:

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

//實現(xiàn)

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();

//將“關于”菜單項添加到系統(tǒng)菜單中。

//IDMABOUTBOX必須在系統(tǒng)命令范圍內(nèi)。

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);

)

//設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動

//執(zhí)行此操作

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);

//使圖標在工作區(qū)矩形中居中

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();

}

}

〃當用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標

〃顯示。

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不在范圍內(nèi),請重新輸入〃));

)

else

{

inti,1;

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

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

〃當輸入的n是奇數(shù)時算法為將1填入第一行中間,之后想右上方繼續(xù)排列,若右上

方有數(shù)則放在它下面

if(C_num%2==l)

(

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

intsqrN=C_num*C_num;

intvalue;〃計數(shù)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]已經(jīng)有數(shù)時的處理

if(array[row][col])

6

col=precol;

row=pre_row+l;

)

)

)

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

//雙偶數(shù)魔方陣的構造方法:將數(shù)字按順序放入數(shù)組,然后對調(diào)指定的行和列

elseif(Cnum%4==0)

(

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

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

〃將l-n*n放入二維數(shù)組

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

(

array[row][col]=count;

count++;

}

〃對調(diào)

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;

)

)

)

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

〃構造單偶數(shù):將二維數(shù)組分成4個小魔方陣,分別按照奇數(shù)魔方陣算法填入數(shù)字,

然后對調(diào)指定方格

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的奇數(shù)魔方

〃利用方法構造

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:交換組標記了的數(shù)

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、任務要求:

設計一組星際穿越的動畫,界面美觀流暢,最好有配樂,展現(xiàn)想象力。

9

2、設計思路:

5輛飛船一起出發(fā),途中遇到隕石群,遇到黑洞,有過退縮,最終到達目的地

3、劇情截圖:

出發(fā):

途經(jīng)隕石群:

10

途經(jīng)黑洞:

到達目的地:

三、健康計算器

1、任務要求:

設計一個測量身體BMI指數(shù)和體脂率的健康計算器,要求

①、給出數(shù)據(jù)可正確計算

11

②、能進行健康提示

③、界面、易用度及其它創(chuàng)意功能

2、算法設計:

健康計算器的算法并不愛雜,按照以下公式便可計算出來,并給出相應的健康提示:

①、BMI指數(shù)公式:體重(kg)除以身高(m)的平方(BMI=公斤/m2)

體重過低<18.5

體重正常18.5—23.9

超重24.0—27.9

②、體脂率公式:

女性的身體脂肪公式:

參數(shù)a=腰圍X0.74

參數(shù)b=體重X0.082+34.89

身體脂肪總重量=a-b

體脂率(身體脂肪百分比)=(身體脂肪總重量+體重)X100%

男性的身體脂肪公式:

參數(shù)a=腰圍X0.74

參數(shù)b=體重X0.082+44.74

身體脂肪總重量=a-b

體脂率(身體脂肪百分比)=(身體脂肪總重量+體重)X100%

3、程序運行情況及截圖:

Jm指數(shù)

請選擇

確定

左圖是輸入界面,要求選擇性別,輸入身高體重以及腰圍,程序會根據(jù)選擇的性別來選

擇相應的公式,并在彈窗中顯示BMI指、體脂率以及相應的健康提示。如果輸入界面沒有選

擇性別后者是輸入字符,將會報錯并提示重新輸入。

4、部分代碼及注釋:

^include"stdafx.h〃

#include"身體健康指數(shù).h”

#include”身體健康指數(shù)Dig.h"

#include^afxdialogex.hz,

12

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

//用于應用程序“關于”菜單項的CAboutDlg對話框

classCAboutDlg:publicCDialogEx

(

public:

CAboutDlg0;

//對話框數(shù)據(jù)

enum{1DD=IDD_AB0UTB0X};

protected:

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

//實現(xiàn)

protected:

DECLAREMESSAGEMAP()

};

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

(

)

voidCAboutDlg::DoDataExchange(CDatal:xchange*pDX)

{

CDialogEx::DoDataExchange(pDX);

)

BEGINMESSAGEMAP(CAboutDlg,CDialogEx)

END_MESSAGE_MAP()

//C身體健康指數(shù)Dig對話框

康指數(shù)Dig::C身體健康指數(shù)Dlg(CWnd*pParent/*=NULL*/)

:CDialogEx(C身體健康指數(shù)Dig::IDD,pParen"

,height(0)

13

,weight(0)

,yaowei(0)

(

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

)

voidC身體健康指數(shù)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身體健康指數(shù)Dig,CDialogEx)

0N_WM_SYSC0MMAND()

0NJVNLPA1NT0

ONWMQUERYDRAGICON()

0N_.BN_CLICKED(IDC_RADI01,&C身體健康指數(shù)Dig::OnBnClickedRadiol)

0N_BN_CLICKED(IDC_RADI02,&C身體健康指數(shù)Dig::0nBnClickedRadio2)

ON_BN_CL1CKED(IDC_BUTTON2,&C身體健康指數(shù)Dig::0nBnClickedButton2)

ONBNCLICKED(IDCBUTTON),&C身體健康指數(shù)Dig::0nBnClickedButtonl)

END_MESSAGE_MAP()

//C身體健康指數(shù)Dig消息處理程序

BOOI.C身體健康指數(shù)Dig::0nInitDialog()

(

CDialogEx::0nInitDialog0;

//將“關于”菜單項添加到系統(tǒng)菜單中。

//TDMABOUTBOX必須在系統(tǒng)命令范圍內(nèi)。

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);

}

}

//設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動

//執(zhí)行此操作

Seticon(m_hlcon,TRUE);//設置大圖標

Setlcon(mhlcon,FALSE);//設置小圖標

//TODO:在此添加額外的初始化代碼

returnTRUE;//除非將焦點設置到控件,否則返回TRUE

)

voidC身體健康指數(shù)Dig::OnSysCommand(inNTnID,I.PARAM1Param)

(

if((nID&OxFFFO)==IDM_ABOUTBOX)

(

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDitilogEx::OnSysCommand(nID,1Param);

}

}

//如果向對話框添加最小化按鈕,則需要卜.面的代碼

//來繪制該圖標。對于使用文檔/視圖模型的MFC應用程序,

//這將由框架自動完成。

voidC身體健康指數(shù)Dig::0nPaint()

(

if(IsIconicO)

{

CPaintDCdc(this);//用于繪制的設備上下文

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

//使圖標在工作區(qū)矩形中居中

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();

)

)

〃當用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標

〃顯示。

HCliRSORC身體健康指數(shù)Dig::OnQueryDragIcon()

(

returnstatic_cast<HCURSOR>(mJiIcon);

)

doublet;〃定義t為計算體脂率的一個參數(shù),該參數(shù)因男女而異

〃當選擇女性時

voidC身體健康指數(shù)Dig::OnBnClickedRadiol()

(

//TODO:在此添加控件通知處理程序代碼

t=44.74;

)

//當選擇男性時

voidC身體健康指數(shù)Dig::0nBnClickedRadio2()

(

//TODO:在此添加控件通知處理程序代碼

t=34.89;

)

〃點擊“BMI指數(shù)”

voidC身體健康指數(shù)Dig::0nBnClickedButton2()

//TODO:在此添加控件通知處理程序代碼

16

UpdateData(TRIE);

doubleBMI=weight/(height*height);

CStringtemp,tempi;

temp.Format(_T("您的BMI指數(shù)為%.2f,"),BMD;

〃根據(jù)BMI指數(shù)給出健康狀況的提示

if(BMI〈18.5)temp+="體重過低!請注意飲食!”;

elseif(BMI〈23.9)temp+="體重正常!請繼續(xù)保持!工

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身體健康指數(shù)Dig::OnBnClickedButtonl()

(

//TODO:在此添加控件通知處理程序代碼

)

四、字符串處理

1、任務要求:

(1)可以錄入任何一個字符串,字符串必須且只能含有數(shù)字和字母,禁止輸入其他字

符,不是同時含有數(shù)字和字母都應報錯。下面的操作都是針對這個字符串的,設字符串長度

為n;

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

(3)統(tǒng)計出字符串中各個字母、數(shù)字出現(xiàn)的次數(shù);

(4)輸入一個較短的單詞,統(tǒng)計該單詞在前面的字符串中出現(xiàn)的次數(shù),以及每次出現(xiàn)

的位置;然后將字符串中包含的這個單詞全部刪除,輸出新字符串。

(5)輸入一個字符串。請將該字符串插入到前面第一次輸入的字符串的中間位置。n

為偶數(shù)則是第n/2個字符后面,n為奇數(shù),則在第(n-l)/2字符后面。輸出結果。

2、算法設計:

利用數(shù)組存儲數(shù)據(jù),并通過字符串查找刪除插入等功能的算法來設計。

17

3、程序運行情況及截圖:

字符串處理的要求基本都在一個界面上進行,按照界面從上往下輸入以達到要求,如果

輸入的全為數(shù)字或者全為字母就會報錯并提示重新輸入。

18

4、部分代碼及注釋:

#include"stdafx.h〃

^include*MFCApplicationl.

ttinclude^MFCApplicationlDlg.h*

#include“afxdialogex.h〃

#ifdef_DEBUG

^definenewDEBUG_NEW

#endif

//用于應用程序“關于”菜單項的CAboutDlg對話框

classCAboutDlg:publicCDialogEx

(

public:

CAboutDlg();

//對話框數(shù)據(jù)

enum{IDD=IDD_AB0UTB0X};

protected:

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

//實現(xiàn)

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();

//將“關于”菜單項添加到系統(tǒng)菜單中。

//IDM_ABOUTBOX必須在系統(tǒng)命令范圍內(nèi)。

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);

//設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將白動

//執(zhí)行此操作

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);

//使圖標在工作區(qū)矩形中居中

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();

)

)

〃當用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標

〃顯示。

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++;〃如果不是字母或數(shù)字,計數(shù)加-

)

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(〃您輸入的字符串含有非法字符或者只含有數(shù)字字母,請重新輸入!”));

)

}

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

//TODO:在此添加控件通知處理程序代碼

23

strl=out;

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

UpdateData(FALSE);

//MessageBox(strl);

)

voidC.Ml;CApp1ication1DIg::0nBnClickedButton6()〃操作2:統(tǒng)計

(

//TODO:在此添加控件通知處理程序代碼

intcountchar[26]={0};〃定義countchar數(shù)組記錄字母的個數(shù)

intcountnum[10]={0};〃定義countnum數(shù)組記錄數(shù)字的個數(shù)

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(線現(xiàn)%出欠"),'a+i,countchar[i]);

tongji+二tempi;

tongji+=z,〃;

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

(

if(countnum[i]-0)continue;

else

(

tempi.Format(_T("%c出現(xiàn)%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="單詞出現(xiàn)的位置:”;

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單詞出現(xiàn)的次數(shù):〃;

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

output+=temp2;

MessageBox(output);

)

voidCMFCApplicationlDlg::0nBnClickedButton7()

(

//TODO:在此添加控件通知處理程序代碼

m_out2=t;

UpdateData(FALSE);

)

五、函數(shù)作圖器

1、任務要求:

自己編輯一個數(shù)學函數(shù)作圖器,數(shù)字0-9、pi圓周率、e自然對數(shù)底數(shù)。要求這個數(shù)

學函數(shù)作圖器可以對輸入的各種數(shù)學函數(shù)(包括加減乘除四則運算以及三角函數(shù)、指數(shù)函數(shù)、

事函數(shù)、對數(shù)函數(shù))進行繪圖。要求有可以自山調(diào)節(jié)的橫縱坐標,可以對超出有效范圍的函

數(shù)進行提示報錯。要求:

基本函數(shù)圖形

調(diào)節(jié)坐標

其他(范圍提示,報錯)

2、程序運行情況及截圖:

26

程序界面左邊部分作為作圖區(qū),右邊部分選擇所要繪制的函數(shù)類型,并輸入?yún)?shù),若輸

入的參數(shù)不是數(shù)字或者不是正確的運算符,就會報錯并提示重新輸入。

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論