简易电子表格的设计Word文件下载.docx

上传人:b****4 文档编号:6404029 上传时间:2023-05-06 格式:DOCX 页数:17 大小:43.10KB
下载 相关 举报
简易电子表格的设计Word文件下载.docx_第1页
第1页 / 共17页
简易电子表格的设计Word文件下载.docx_第2页
第2页 / 共17页
简易电子表格的设计Word文件下载.docx_第3页
第3页 / 共17页
简易电子表格的设计Word文件下载.docx_第4页
第4页 / 共17页
简易电子表格的设计Word文件下载.docx_第5页
第5页 / 共17页
简易电子表格的设计Word文件下载.docx_第6页
第6页 / 共17页
简易电子表格的设计Word文件下载.docx_第7页
第7页 / 共17页
简易电子表格的设计Word文件下载.docx_第8页
第8页 / 共17页
简易电子表格的设计Word文件下载.docx_第9页
第9页 / 共17页
简易电子表格的设计Word文件下载.docx_第10页
第10页 / 共17页
简易电子表格的设计Word文件下载.docx_第11页
第11页 / 共17页
简易电子表格的设计Word文件下载.docx_第12页
第12页 / 共17页
简易电子表格的设计Word文件下载.docx_第13页
第13页 / 共17页
简易电子表格的设计Word文件下载.docx_第14页
第14页 / 共17页
简易电子表格的设计Word文件下载.docx_第15页
第15页 / 共17页
简易电子表格的设计Word文件下载.docx_第16页
第16页 / 共17页
简易电子表格的设计Word文件下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

简易电子表格的设计Word文件下载.docx

《简易电子表格的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《简易电子表格的设计Word文件下载.docx(17页珍藏版)》请在冰点文库上搜索。

简易电子表格的设计Word文件下载.docx

SetName()

CYCOleFont:

GetSize()

SetSize()

SetBold()

SetItalic()

SetUnderline()

CPicture:

GetHandle()

GetHPal()

SetHPal()

GetType()

利用这些函数将可视化表格绘制出来。

第二,定义函数CChild:

OnClickMsflexgrid1()将可视化表格打印出来。

同时利用两个for循环,在行和列上分别将A~Z,“和”“最大值”“最小值”“平均值”“行排序”“列排序”“读取”“保存”等字符串显示出来。

第三,使表格成为可编辑状态。

通过if(lRow>

m_FlexGrid.GetRows()||lRow==0)判断点击是否有效。

若有效,则获取FlexGrid控件的窗口矩形并将其转换为客户区矩形,以像素为单位计算选中格的左上角的坐标和选中格的尺寸,形成选中个所在的矩形区域并转换成相对对话框的坐标。

然后获取单元格内容,改变大小并移到选中格位置,显示文本。

第四,求和。

定义函数CChild:

OnButton1()。

先判断是行还是列需要求和,在将所在行(或列)的所有数加起来得到sum并显示。

为方便存取,利用可以将字符转换成浮点数的函数atof和可以将浮点数转换成字符的函数gcvt把获取到的单元格内容来回转换。

第五,求最值。

分别定义函数CChild:

OnButton2()和CChild:

OnButton3()求最大值和最小值。

先判断是行还是列需要求最值,将所在行(或列)的第一个数存放在max(或min)中,并将此数与后面的数次比较。

求最大值时,如果前面的数比后面的数大,则继续向下比较。

否则,将大的数存到max中。

求最小值时,如果前面的数比后面的数小,则继续向下比较。

否则,将小的数存到min中。

比较结束之后,将最终的max(或min)输出。

第六,定义函数CChild:

OnButton8()求平均值。

由于第四步已经求得了所在行(或列)的和sum,因此直接利用sum除以col或row即可得到平均值。

第七,定义函数CChild:

OnButton6()和函数CChild:

OnButton7()进行行(列)排序。

先利用函数current_col=m_FlexGrid.GetCol()获取鼠标所在的列的值,将所在列的所有值存入temp数组,利用选择排序法将temp数组中所有数据进行排序,并将排好序的数组的值重新传回表格。

同理,利用函数current_row=m_FlexGrid.GetRow()获取鼠标所在的列的值,将所在列的所有值存入temp数组,利用选择排序法将temp数组中所有数据进行排序,并将排好序的数组的值重新传回表格。

选择排序法部分的代码为:

for(inti=1;

i<

row;

i++)

{

intlow=i;

for(intj=row;

j>

i;

j--)

{

if(temp[j]<

temp[low])

low=j;

}

doubletp;

tp=temp[i];

temp[i]=temp[low];

temp[low]=tp;

}

第八,定义函数CChild:

OnButton4()和CChild:

OnButton5()进行表格数据的存储和读取。

第九,程序的优化:

建立函数CShezhi:

OnOK(),使表格的行列数可以自行定义。

其主要内容如下:

CDialog:

OnOK();

CChilddlg;

dlg.row=m_row;

dlg.col=m_col;

dlg.DoModal();

4.2程序代码

#include"

stdafx.h"

excel.h"

Child.h"

#include"

ExcelDoc.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

voidCChild:

OnClickMsflexgrid1()//打印表格

{

charc[10];

for(inti=1;

=col;

c[1]='

\0'

;

c[0]=65+(i-1)%26;

m_FlexGrid.SetTextMatrix(0,i,c);

//行输出A~Z

};

charq[]="

和"

charw[]="

最大值"

chare[]="

最小值"

charr[]="

平均值"

m_FlexGrid.SetTextMatrix(0,col+1,q);

//输出字符串“和”

m_FlexGrid.SetTextMatrix(0,col+2,w);

//输出字符串“最大值”

m_FlexGrid.SetTextMatrix(0,col+3,e);

//输出字符串“最小值”

m_FlexGrid.SetTextMatrix(0,col+4,r);

//输出字符串“平均值”

for(i=1;

=row;

gcvt(i,10,c);

m_FlexGrid.SetTextMatrix(i,0,c);

//列输出A~Z

m_FlexGrid.SetTextMatrix(row+1,0,q);

m_FlexGrid.SetTextMatrix(row+2,0,w);

m_FlexGrid.SetTextMatrix(row+3,0,e);

//输出字符串“最小值”

m_FlexGrid.SetTextMatrix(row+4,0,r);

//输出字符串“平均值”

/*****使表格成为可编辑状态*****/

longlCol=m_FlexGrid.GetColSel();

//获取点击的行号

longlRow=m_FlexGrid.GetRowSel();

//获取点击的列号

if(lRow>

m_FlexGrid.GetRows()||lRow==0)//判断点击是否有效

return;

CRectrect;

m_FlexGrid.GetWindowRect(&

rect);

//获取FlexGrid控件的窗口矩形

ScreenToClient(&

//转换为客户区矩形

CDC*pDC=GetDC();

//MSFlexGrid控件的函数的长度单位是“缇(twips)”,需要将其转化为像素,1440缇=1英寸

//计算象素点和缇的转换比例

intnTwipsPerDotX=1440/pDC->

GetDeviceCaps(LOGPIXELSX);

intnTwipsPerDotY=1440/pDC->

GetDeviceCaps(LOGPIXELSY);

//计算选中格的左上角的坐标(象素为单位)

longy=m_FlexGrid.GetRowPos(lRow)/nTwipsPerDotY;

longx=m_FlexGrid.GetColPos(lCol)/nTwipsPerDotX;

//计算选中格的尺寸(象素为单位)。

加1是实际调试中,发现加1后效果更好

longwidth=m_FlexGrid.GetColWidth(lCol)/nTwipsPerDotX+1;

longheight=m_FlexGrid.GetRowHeight(lRow)/nTwipsPerDotY+1;

//形成选中个所在的矩形区域

CRectrc(x,y,x+width,y+height);

//转换成相对对话框的坐标

rc.OffsetRect(rect.left+1,rect.top+1);

CStringstrValue=m_FlexGrid.GetTextMatrix(lRow,lCol);

//获取单元格内容

m_Edit.ShowWindow(SW_SHOW);

//显示控件

m_Edit.MoveWindow(rc);

//改变大小并移到选中格位置

m_Edit.SetWindowText(strValue);

//显示文本

m_Edit.SetFocus();

//获取焦点

}

/*****输入完毕后使edit空间隐藏,并返回值*****/

OnKillfocusEdit1()

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringstrInput;

GetDlgItemText(IDC_EDIT1,strInput);

//获取输入框内容

m_FlexGrid.SetText(strInput);

//设置单元格内容

m_Edit.ShowWindow(SW_HIDE);

/*****求和*****/

OnButton1()

Addyourcontrolnotificationhandlercodehere//求和

doublesum=0;

chart[10];

longcurrent_col=m_FlexGrid.GetCol();

longcurrent_row=m_FlexGrid.GetRow();

if(col+1==current_col)//行求和

{//用col+1判断是行还是列需要求和

for(inti=1;

i++)

sum+=atof(m_FlexGrid.GetTextMatrix(current_row,i));

//atof是将字符转换成浮点数的函数

gcvt(sum,10,t);

//gcvt是将浮点数转换成字符的函数

m_FlexGrid.SetTextMatrix(current_row,col+1,t);

//求和结束后将结果显示

if(row+1==current_row)//列求和

{//用row+1判断是行还是列需要求和

sum=0;

sum+=atof(m_FlexGrid.GetTextMatrix(i,current_col));

//gcvt是将浮点数转换成字符的函数

m_FlexGrid.SetTextMatrix(row+1,current_col,t);

//求和结束后将结果显示

/*****求最大值*****/

OnButton2()

doublemax;

inti=1;

if(col+2==current_col)//指向当前行,求最大值

{//用col+2判断是行还是列需要求最大值

max=atof(m_FlexGrid.GetTextMatrix(i,current_col));

//将当前的第一个值赋给max

for(i=1;

if(max<

atof(m_FlexGrid.GetTextMatrix(current_row,i)))

//max与后面的数进行比较

max=atof(m_FlexGrid.GetTextMatrix(current_row,i));

//如果max小于后面的数,则将该数重新赋给max

gcvt(max,10,t);

m_FlexGrid.SetTextMatrix(current_row,col+2,t);

//将max显示

elseif(row+2==current_row)//指向当前列,求最大值

{//用row+2判断是行还是列需要求最大值

i=1;

max=atof(m_FlexGrid.GetTextMatrix(current_row,i));

atof(m_FlexGrid.GetTextMatrix(i,current_col)))

//max与后面的数进行比较

max=atof(m_FlexGrid.GetTextMatrix(i,current_col));

gcvt(max,10,t);

m_FlexGrid.SetTextMatrix(row+2,current_col,t);

//将max显示

/*****最小值*****/

OnButton3()

doublemin;

//指向当前行,求最小值

if(col+3==current_col)//用col+3判断是行还是列需要求最小值

min=atof(m_FlexGrid.GetTextMatrix(i,col));

//将当前的第一个值赋给min

if(min>

atof(m_FlexGrid.GetTextMatrix(current_row,i)))

//min与后面的数进行比较

min=atof(m_FlexGrid.GetTextMatrix(current_row,i));

//如果min小于后面的数,则将该数重新赋给min

gcvt(min,10,t);

m_FlexGrid.SetTextMatrix(current_row,current_col,t);

//将min显示

elseif(row+3==current_row)//指向当前列,求最小值

{//用row+3判断是行还是列需要求最小值

min=atof(m_FlexGrid.GetTextMatrix(i,current_col));

atof(m_FlexGrid.GetTextMatrix(i,current_col)))

min=atof(m_FlexGrid.GetTextMatrix(i,current_col));

gcvt(min,10,t);

/*****读取存储的值*****/

OnButton4()

externdoublemem[20][20];

//将数组的值一次存入表格

externdoublem_r;

externdoublem_c;

=m_r;

for(intj=1;

j<

=m_c;

j++)

gcvt(mem[i][j],10,t);

m_FlexGrid.SetTextMatrix(i,j,t);

}

/*****存储表格的值******/

OnButton5()

for(intj=1;

mem[i][j]=atof(m_FlexGrid.GetTextMatrix(i,j));

m_r=row;

//用全局变量记录表格的行列数

m_c=col;

EndDialog(0);

/*****列排序*****/

OnButton6()

//获取鼠标所在的列的值

doubletemp[20];

for(intk=1;

k<

k++)//将所在列的所有值存入temp数组

temp[k]=atof(m_FlexGrid.GetTextMatrix(k,current_col));

//用选择排序排列

for(intm=1;

m<

m++)

gcvt(temp[m],10,t);

//将排好序的数组的值重新传回表格

m_FlexGrid.SetTextMatrix(m,current_col,t);

/*****行排序*****/

OnButton7()

//获取表格所在的行

k++)

temp[k]=atof(m_FlexGrid.GetTextMatrix(current_row,k));

//将所在行的值存入数组

for(intj=col;

temp[low])//用选择排序法排序

//将排好序的数组的值回传表格

m_FlexGrid.SetTextMatrix(current_row,m,t);

/*****求平均值*****/

OnButton8()

doubleave;

doublem;

if(current_col==col+4)//用col+4判断是行还是列需要求平均值

m=atof(m_FlexGrid.GetTextMatrix(current_row,col+1));

//利用前面求的的和(COL+1)m直接进行求平均

ave=m/col;

gcvt(ave,10,t);

m_FlexGrid.SetTextMatrix(current_row,col+4,t);

elseif(r

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2