- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一 简易电子表格的设计
实验一 简易电子表格的设计 1
1.问题描述 1
2.基本要求 1
3.实现提示 2
4.实验过程 3
4.1基本算法及分析 3
4.2程序代码 7
5.实验结果 13
6.实验总结 14
7.参考文献 15
1.问题描述
设计一个支持基本计算统计功能和其它一些表格管理/处理功能的软件,使用户可在该软件的支持下,用交互方式进行表格建立、数据输入、数据编辑及其它一些表格操作。即类似于简易Execel表格处理软件。
2.基本要求
(1)建立表格:建立空白表格,同时在屏幕上显示,使其处于可输入数据的状态。用户可指定新建表格的行列数。
(2)输入数据与编辑数据:通过键盘将数据输入到显示在屏幕上的电子表格上。
(3)基本统计计算:可选择按行或列合计、求平均、求最大最小。
(4)排序:使任意指定的行或列中的数据按大小(升或降)排列,对字符型数据,还可选择大小写敏感。
(5)表格保存:使电子表格以磁盘文件的方式存储在磁盘上,并可随时读入,
供继续处理。
*(6)公式支持:单元格内可输入公式(表达式),使对应单元格的最终内容为公式的计算结果。公式最基本的形式是算术计算公式,可按名引用其它单元格。
*该功能可选做。
3.实现提示
该题目需要使表格成为可编辑状态,此部分要求较高,可在网上或图书馆查找相关资料。
提示:MSFlexGrid 控件的函数的长度单位是“缇(twips)”,需要将其转化为像素,1440 缇 = 1 英寸
4.实验过程
4.1基本算法及分析
首先,定义绘制可视化表格的一些函数,部分函数名如下:
CMainFrame::OnCreate( )
CString COleFont::GetName( )
COleFont::SetName( )
CY COleFont::GetSize( )
COleFont::SetSize( )
COleFont::SetBold( )
COleFont::SetItalic( )
COleFont::SetUnderline( )
CPicture::GetHandle( )
CPicture::GetHPal( )
CPicture::SetHPal( )
CPicture::GetType( )
利用这些函数将可视化表格绘制出来。
第二,定义函数CChild::OnClickMsflexgrid1( )将可视化表格打印出来。
同时利用两个for循环,在行和列上分别将A~Z,“和”“最大值”“最小值”“平均值”“行排序”“列排序”“读取”“保存”等字符串显示出来。
第三,使表格成为可编辑状态。
通过if(lRowm_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()获取鼠标所在的
您可能关注的文档
- 浅谈西安自由行旅游攻略.docx
- 硫化物半导体纳米材料的制备和特性研究.doc
- 浅谈厨房设备操作规程.doc
- 硅片切割中切斜问题分析教材.doc
- 上海安浦鸣志中文-MSST5_10-S用户手册概论.pdf
- 判断题专项训练(答案)教案.doc
- 尚阳网关配置详解概论.doc
- 日行一善案例五年级课件.doc
- 农用地转用审批程序课件.doc
- IC可靠性测试 关于EFR,HTOL与Burn in的异同!.doc
- 2025年一级建造师考试《水利水电工程管理与实务》冲刺必刷卷.docx
- 2025年一级建造师考试《水利水电工程管理与实务》逆袭破题卷1.docx
- 2025年一级建造师考试《市政工程管理与实务》冲刺必刷卷 .docx
- 2025年一级造价工程师考试《建设工程计价》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价管理》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(安装专业)》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(土建专业)》预习卷.docx
- 2025年中级会计考试《会计实务》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》全真模拟卷.docx
文档评论(0)