C--程序读取HTML文件中的数据.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 读取 HTML 文件 中的 数据
- 资源描述:
-
C++程序读取HTML文件中的数据 摘要 C++语言作为一种计算机语言,它是在C语言基础上发展起来的,是真正的面向对象编程语言,它的功能强大,本文简要介绍了利用C++语言中的MFC类库编程间接读取HTML文件中的数据的实现过程。 本次设计先要建立一个HTML文件,HTML语言可以用多种软件编写,本文选择用写字板编写并建立了一个HTML文件,这是此次设计当中需要被MFC类库读取的文件。由于MFC类库难以直接读取HTML文件中的数据,所以要以EXCEL为桥梁将它们连接起来。所以选择先建立EXCEL与MFC类库之间的联系,用MFC打开EXCEL表格,然后用EXCEL表格读取HTML文件中的数据,再用MFC类库中的类编程读取EXCEL文件中的数据,最终间接达到用C++程序读取HTML文件中的数据的目的。 关键词:HTML文件 数据 EXCEL MFC类库 目 录 一.系统设计总说明............................................2 1.1设计目的................................................ 2 1.2设计要求................................................ 2 1.3设计内容................................................ 3 1.4变量命名规则.............................................3 1.5主要类和函数.............................................3 1.6系统功能简介.............................................5 二.C++语言课程设计报告....................................... 5 2.1 需求分析................................................ 5 2.1.1 功能需求分析 ...................................... 5 2.1.2 环境需求分析 ...................................... 6 2.2 概要设计................................................ 7 2.2.1 系统功能模块图 .................................... 7 2.2.2 程序流程图 ........................................ 7 2.3 详细设计................................................ 9 2.3.1 设计原理 .......................................... 9 2.3.2 基础知识简介 ...................................... 9 2.3.3 系统界面 ......................................... 17 2.4 调试与操作说明......................................... 18 三、设计总结................................................. 20 参考文献..................................................... 21 一.系统设计总说明 1.1设计目的 《C++课程设计》是信息管理与信息系统专业的重要实践性课程。课程设计为学生提供了一个手脑并用、独立实践的机会。目的在于培养学生分析问题和解决问题的能力,将课本的理论知识与实际应用问题进行有机结合,提高学生程序设计、程序调试及项目开发能力。 通过本课程设计的实践,全面总结C++课程学习中的数据类型、程序结构、数组、函数、指针、结构体等基本概念,掌握其使用方法。培养使用面向过程的程序设计方法编写计算机程序的能力。 课题的目的主要是考查学生对C++语言的综合编程能力的掌握,培养学生的分析问题和解决问题的能力及逻辑思维能力。该课题主要考察学生对函数、结构体,指针,文件等的操作,以及C++语言基本规则和算法的掌握,所以完成本课题要求学生较强的设计能力,特别是要具有综合应用能力。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。 1.2设计要求 ①问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么(而不是怎么做),限制条件是什么。 ②概要设计:对问题描述中涉及的操作对象定义相应结构体,并按照以设计需要为中心的原则,确定各个结构体之间的关系。逻辑设计的结果应写出每个结构体抽象数据结构体型的定义(包括数据结构的描述和每个基本操作的功能说明)、各个主要模块的算法,并画出模块之间的调用关系图。 ③详细设计:定义相应的结构体并写出各函数的算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能做到明确具体。写出函数形式的算法框架。 ④程序编码:把详细设计的结果进一步求精为程序设计语言程序,同时加入部分注解,使程序中逻辑概念清楚。 ⑤程序调试与测试:能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。 ⑥结果分析:程序运行结果包括正确的输入及输出结果。 1.3设计内容 C++程序读取HTML文件中的数据 1.4 变量命名规则 选择类名里的关键字或者以英文命名,例子如下: _Application app; Workbooks books; _Workbook book; Sheets sheets; _Worksheet sheet; Range range; CString strPathName; CFileDialog dlg; int row; 1.5 主要类和函数 类: _Application:Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。 _Workbook:Workbook对象代表一个工作簿 Workbooks:Workbooks集合对象则代表同一Excel进程中打开的所有工作簿对象。 Sheets:sheets是当前活动表,每个是Sheet是一个工作簿,各个sheet就构成sheets,也就是工作表了。 _Worksheet:Worksheet代表Excel工作表 Worksheets:worksheets是指你当前非活动表。Worksheets集合对象代表代表Excel工作表的集合 Range:Range()则是指一个区域,区域中可以是一个单元格,也可以是多个单元格。 Font:规定文本的字体、字体尺寸、字体颜色。 函数功能: int CListCtrl::InsertColumn(int nCol, const LVCOLUMN* pColumn) 作用是在列表视图控件中新插入一列。 int CListCtrl::InsertItem( int nItem, LPCTSTR lpszItem, int nImage ) 用于MFC中CListCtrl控件加入列表项,只操作CListCtrl的第一列。 void CRange:: AttachDispatch(LPDISPATCH lpDispatch,BOOL bAutorelease =1) 操作EXCEL的函数,位于CRange类中,可以用来锁定和读取EXCEL中的对应单元格。 void CRange::ReleaseDispatch() 释放接口。 _Worksheet ::GetUsedRange() 求有效行 BOOL CListCtrl::DeleteAllItems 函数功能从列表视图控件删除所有项。 void CWnd:: SetRedraw( BOOL bRedraw = TRUE ) 应用程序调用SetRedraw以允许重画变化或防止变化被重画。这个成员函数 设置或清除重画标志。当重画标志被清除时,在每次变化以后,内容不会更新,直到重画标志被设置才会重新绘出。 void Invalidate( BOOL bErase = TRUE ) 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重 绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原被遮住的部分就是无效的,需要重绘。 BOOL UpdateWindow(HWND hWnd) 如果窗口更新的区域不为空,UpdateWindow函数通过发送一个WM_PAINT 消息来更新指定窗口的客户区。函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。 Format:format是DOS系统的一种命令,format指令用于格式化磁盘,是一种高级格式化,对磁盘进行的格式编写程序。 1.6系统功能简介 用C++程序读取HTML文件中的数据。 二.C++语言课程设计报告 2.1 需求分析 2.1.1 功能需求分析 本文中,C++程序读取HTML文件中的数据的过程是:要先创建一个EXCEL文件读取HTML文件中的数据,然后再用C++语言读取EXCEL文件。过程如图1所示: 图1 此过程间接达到了利用C++程序读取HTML文件中的数据的目的。它主要有三大模块:建立EXCEL文件;EXCEL文件读取HTML文件中的数据;C++程序读取EXCEL文件中的数据。 (1) 建立EXCEL文件模块的主要功能是为了读取HTML文件,具体操作是:先获取EXCEL工作簿集合,再添加一个工作簿西安市EXCEL表格,最后设置为用户可控制。因为在实际生活中人们主要用EXCEL来进行数据操作,且EXCEL可以读取网页数据又方便修改,所以为了方便操作,选择了EXCEL来作为枢纽,将C++程序与HTML文件联系起来。 (2)EXCEL文件读取HTML文件中的数据模块主要功能是将C++程序难以读取的HTML文件转化为方便C++程序读取的EXCEL文件,此模块是在(1)建立了EXCEL文件的基础上进行,在EXCEL文件里操作的。具体操作是:点击菜单栏里的“数据”,再点击新出现的工具箱的左上角的“至网页”会弹出一个网页窗口,输入要读取的网页地址之后选择所需要的表格,最后点击“导入”保存就完成了HTML文件的读取,但此时的数据还在EXCEL上,还需要经过模块3才能将HTML文件中的数据读到C++程序里。 (3)C++程序读取EXCEL文件中的数据模块主要功能是将模块(2)中的EXCEL文件中的数据用C++程序读出来。具体操作:运行C++程序,会出现一个操作窗口,点击“读取Excel表格”,在弹出的窗口的文件名里找到之前保存的EXCEL表格,点击“打开”就可以成功将数据读入C++里。操作过程比较方便。 2.1.2 环境需求分析 操作系统:Windows 7.0 调试软件:Microsoft公司的Visual C++ 6.0、记事本 采用技术:面向过程 2.2 概要设计 2.2.1 系统功能模块图 本次设计主要有三大模块:建立EXCEL文件;EXCEL文件读取HTML文件中的数据;C++程序读取EXCEL文件中的数据。其中建立EXCEL文件和C++程序读取EXCEL文件中的数据是在C++程序和记事本中进行的,而EXCEL文件读取HTML文件中的数据是在Excel中进行的。整个系统功能模块图如图2所示: 图2 2.2.2 程序流程图 本次设计所编写的C++程序里的主要实现部分在CTestDlg类里,其中的成员函数OnOK的作用是实现MFC对Excel的读取,图3即为OnOK函数的程序流程图。 开始 i<nRows? j<=nColumnCount+1? 建立接口 i=2 读取单元格 j=1 j++ i++ 得到表格 Y N N Y 对m_list赋值 更新CListCtrl 释放excel 结束 图3 2.3 详细设计 2.3.1 设计原理 C++程序读取HTML文件中的数据以C++程序和EXCEL操作交替进行,通过调用各个函数以及操作EXCEL,实现不同的功能。因为EXCEL本身具有读取网页数据的功能,所以可以直接利用EXCEL读取HTML文件中的数据,然后再利用C++程序读取EXCEL文件。要达到这一目的,首先要设置建立C++与EXCEL之间的联系并运用C++编程打开EXCEL。在C++中创建VC界面使操作简洁明了,VC界面中的每一个按键都有一个成员函数与之相对应,在成员函数里编写程序定义按键的功能。作为一个读取HTML文件数据的程序,这样的设计增大了程序的实用性。 2.3.2 基础知识简介 1、HTML表格及其分类: HTML表格通过属性-值对来描述对象,内容为对象属性的单元格称为属性域,内容为属性对应值的单元格称为值域。在HTML表格中,表格由table元素标记,它由若干行元素(row)构成,每一行又由若干单元(cell)构成。这些单元可以表示表头信息的th元素,也可以是表示数据信息的td元素。单元可以跨越多个列或多个行,跨越的行、列数分别由th或td元素的rowspan与colspan属性指定。本文应用示例表格如图4所示: 图4 示例表格对应的HTML文档如下: <html> <head> <title>表格</title> </head> <body> <table width="314" border="1"align="center"> <tr> <td width="75">姓名</td> <td width="86">班级</td> <td width="131">住址</td> </tr> <tr> <td>周三</td> <td>数学 1101</td> <td>西安碑林区</td> </tr> <tr> <td>李四</td> <td>数学 1101</td> <td>西安雁塔区</td> </tr> <tr> <td>王五</td> <td>数学 1101</td> <td>西安长安区</td> </tr> </table> </body> </html> HTML表格结构比较复杂,从形式上可以分为简单表格与复杂表格2类。其中,简单表格又可以分为3种: (1)行标题表(属性在前n行); (2)列标题表(属性在前m行); (3)行列标题表(属性分别在前n行与前m列)。 本文所用示例表格即为简单表格中的行标题表。 2、MFC中EXCEL相关类的添加 (1)启动VC 6.0,打开新建对话框,新建一个MFC AppWizard(exe)工程,这里工程名设置为Test,点击“确定”;之后选择“基本对话框”,点击“完成”;最后再点击“确定”。所有过程如图5的3张图片所示: 图5 (2)进入MFC应用程序向导,选择基本对话框,直接点击完成,工程文件结构图如图6: 图6 (3)打开MFC ClassWizard窗口(查看---->建立类向导),选择Automation,单击Add Class按钮,选择From a type library...,弹出文件选择对话框可以在这里设置对话控制,将表中的控件直接拖入对话框即可。如图7所示: 图7 之后定位到Microsoft Office的安装目录,选择EXCEL.exe,确定后,弹出Confirm Classes窗口,选择列表中需要的类,单击OK按钮。过程及结果如图8所示: 图8 成功之后,工程文件结构图如图9所示: 图9 (4)返回编辑器,查看工程文件,可发现多了excel.h及excel.cpp两个文件; (5)打开stdafx.h头文件确保包含如图9头文件: 图9 (6)打开Test.cpp文件,修改CTestApp::InitInstance(),加入如下代码: BOOL CTestApp::InitInstance() { AfxEnableControlContainer(); #ifdef _AFXDLL Enable3dControls(); #else Enable3dControlsStatic(); #endif CTestDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK){} else if (nResponse == IDCANCEL){} return FALSE; } 为保证编译时不产生重复定义错误,打开excel.h文件,在文件开始位置加入如下代码: #if !defined _HEAD_FILE_EXCEL_ #define _HEAD_FILE_EXCEL_ 相应的,在文件末尾加入: #endif 到此,自动化工程建立完成,建立F7,看是否能通过编译。 (7)选择ResourceView工作区,打开IDD_TEST_DIALOG,在对话框中添加一个按钮控件Button1,双击它,生成一个Button1 Click事件的处理函数;另一个按钮控件OnOK生成过程同上: void CTestDlg::OnButton1() { // TODO: Add your control notification handler code here } (8)在OnButton1函数中添加代码: void CTestDlg::OnButton1() { // TODO: Add your control notification handler code here _Application app; Workbooks books; _Workbook book; COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if( !app.CreateDispatch("Excel.Application") ) { this->MessageBox("无法创建Excel应用!"); return; } books=app.GetWorkbooks(); //获取工作簿集合 book=books.Add(covOptional); //添加一个工作簿 app.SetVisible(TRUE); //显示Excel表格 app.SetUserControl(TRUE);//设置为用户可控制 } 2.3.3 系统界面 VC界面中列出了该程序的功能:创建Excel表格、读取Excel表格、取消、数据显示框。如图10: 图10 2.4 调试与操作说明 1、建立EXCEL文件: 直接点击图8Test对话框的“创建Excel表格” ; 2、EXCEL文件读取HTML文件中的数据: 弹出一个Excel窗口,点击“数据”里的“自网站”,会出现一个窗口,见图11; 数据 自网站 图11 在地址里输入网站地址,找到所需要的表格点击导入,就可以将HTML文件中的数据读到Excel里。过程及结果如图12所示: 图12 3、C++程序读取EXCEL文件中的数据 点击图8中Test对话框的“读取Excel”,在弹出的窗口中选出需要打开的Excel文件,点击“打开”即能读出Excel里的数据,过程及结果如图13所示。 图13 三、设计总结 通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。 本次课程设计,使我对用C++程序读取HTML文件中的数据的基本过程的设计方法、步骤、思路、有一定的了解与认识。在课程设计过程中,我基本能按照规定的程序进行,先针对MFC和HTML的使用收集、调查有关资料,其间,同组成员之间进行几次方案的讨论、修改,再讨论、再修改,最后定案。设计方案初步确定后,再进行扩充详细设计,最终用C++语言实现了MFC读取HTML文件中的数据。整个过程周密有序,对我按时高质完成课程设计非常有利!但是严格说起来,我们这次做的程序并不能直接用MFC读取HTML文件中的数据,它是以Excel为桥梁,先用Excel读取HTML文件数据,再用MFC读取Excel文件中的数据,整个过程有些复杂,还需要我们进一步去改进它,完善它。 总的来说,本次课程设计基本达到了专业学习的预期目的。课程设计之后,我不仅仅是感到实际动手能力有所提高,更重要的是进一步激发了我对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。 作为一个应用数学专业的本科生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。通过此次课程设计,让我找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。 参考文献 [1]肖宏伟,Visual C++实效编程百例(第二版)[M],北京:人民邮电出版社,2004. [2]刘惊雷,Visual C++实用教程[M],北京:电子工业出版社,2005. [3]张立科,Visual C++ 6.0 MFC库类参考手册[M],北京:人民邮电出版社,2004.5. [4]郑莉, C++语言程序设计(第4版)[M],北京:清华大学出版社,2010.7 [5]刘丽霞 刘晋伟,脑动力.HTML+CSS标签速查效率手册[M],北京:电子工业出版社,2012. [6]贾长云,HTML表格向LXM的智能转换[J],计算机工程,第35卷第14期32~34,2009.7.展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C--程序读取HTML文件中的数据.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12072944.html