




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学科分类号学科分类号 0801 本本 科科 毕毕 业业 设设 计计 题目 中文 基于图形的C 程序模拟器的设计与实 现 语法分析与运行功能设计与实现 英文 A Graphic Procedure Simulator Based On C Devise Parser Analyze and Running Function Devise 姓 名 黎帅师 学 号 2004180213 院 系 工学院电子系 专业 年级 04计算机科学与技术 指导教师 钟坚成助教 二 八年 六六 月 湖南师范大学本科毕业设计诚信声明 本人郑重声明 所呈交的本科毕业设计 是本人在指导老师的 指导下 独立进行研究工作所取得的成果 成果不存在知识产权争 议 除设计中已经注明引用的内容外 本设计不含任何其他个人或 集体已经发表或撰写过的作品成果 对本设计的研究做出重要贡献 的个人和集体均已在文中以明确方式标明 本人完全意识到本声明 的法律结果由本人承担 本科毕业设计作者签名 二 八 年 六 月 十二 日 湖南师范大学本科毕业设计任务书 毕毕业业设设计计题题目目 基于图形的C 程序模拟器的设计与实现 语法分析与运行功能设计与实现 作作 者者 姓姓 名名 黎帅师所所属属院院 专专业业 年年 级级 工学院院 计算机科学与技术专业专业 2004 级级 指指导导教教师师姓姓名名 职职 称称 钟坚成 助教预计字数预计字数12000开题日期开题日期2008 3 11 选题的目的和意义选题的目的和意义 程序模拟器的功能主要是对程序进行模拟测试 我们以前看到过程序模拟器 如 Masm 等 可以看到这些程序模拟器的功能强大 此系统可以完成给定程序的调试等功能 促进 新系统的开发 与网络上的程序模拟器相比 本系统的功能可能完成不了编译等功能 主要原因是编 译器这部分消耗时间太多 可能无法完成此部分功能 通过本系统 再在此系统上加上编 译器的功能就可以算是一个完整的编程平台了 通过此系统的设计 掌握面向对象的基本设计和实现方法 掌握 的基本使用方法 掌握 中的菜单 工具栏 多文档等方面的知识 掌握软件工程中的基本测试方法 主要研究内容 主要研究内容 本程序模拟器主要用来对指定的程序的一般执行过程进行模拟 和其它程序模拟器一样该程序 模拟器主要包括几个基本的功能 单步执行 设置断点 语法检查 运行等功能 模拟的过程 中要出现图形化演示的效果 主要是分析堆栈中的内容 包括变量和函数的调用 整个系统包括以下六大部分功能 1 文件菜单功能 文件菜单功能主要包括以下功能 打开 新建 保存 关闭 退出 2 编辑菜单功能 编辑菜单主要包括以下功能 撤消 重复 复制 剪切 粘贴 3 调试菜单功能 调试菜单主要包括如下功能 调试 停止执行 切换断点 下一步 单步进入 4 运行菜单功能 运行菜单主要包括 语法检查和运行两大功能 5 查看菜单功能 查看菜单包括查看栈和变量两大功能 6 帮助菜单功能 帮助菜单主要有两大功能 关于本程序和模拟器的帮助 应达到的技术指标或要求 应达到的技术指标或要求 整个模拟器在执行模拟过程中可以进行图形化演示效果 所打开或新建的程序只能是 C 类型 的 主要设计方法或技术路线 主要设计方法或技术路线 开发环境为 图形化显示需用 来实现 负责开发文件 编辑 运行菜单功能的开发人员对 中的菜单 工具栏 多文档等 方面的知识要有一定的了解 其次 在这个基础上还需有编译原理方面的知识 主要是语法分 析和词法分析 语法分析采用递归下降的方法来处理 采用 中的封装技术使整个系统具有 严格的保密性 此外还需考虑到系统的扩展性 这就属于采用接口时所要考虑的问题了 3 查看菜单中的栈要用到 MFC 的标准模板库的栈容器 4 可能要在 MFC 中设置一二个全局变量 可以定义在 App 类中 然后程序在任何地方都 可以使用函数得到此 App 类 也可以声明和定义在一个 h 和 cpp 文件中 然后在要使用的地方 包括此 h 文件即可 当然也可以写一个类 然后定义 static 的成员变量 可能这样会更符合 oop 的风格 完成本课题应具备的环境 软件 硬件 完成本课题应具备的环境 软件 硬件 硬件环境 CPU Cerlon 2 5 或以上 内存 512MB 或以上 硬盘 40GB 或以上 显示器无要求 软件环境 系统环境 WindowsXP 程序编写工具 isual C 6 0 制图工具 Visio 2003 各阶段任务安排 各阶段任务安排 1 3 3 3 8 完成需求文档 包括合成 的需求文档 2 3 9 3 20 完成概要设计和详细设计文档 3 3 21 4 21 完成所有的功能 4 4 22 5 2 对整个系统进行测试 5 5 2 5 10 对整个系统合成 毕业论文撰写 主要参考资料 主要参考资料 1 Raphael Pender 编著 标准 C 编程宝典 M 北京 电子工业出版社 2005 1 2 王咏刚 王咏武 编著 道法自然 面向对象实践指南 M 北京 电子工业出版社 2004 10 3 David J Kruglinski Scot Wingo George Shepherd VC 6 0 技术内幕 M 北京 北京希望电子出版社 1999 5 4 郑莉 张瑞丰 编著 VC 程序设计 M 北京 机械工业出版社 2005 1 5 候俊杰 编著 深入浅出 MFC M 湖北 华中科技大学出版社 2001 1 6 Compiler Design Tiny Pascal EB OL 7 GDI 简介 EB OL 8 什么是 MVC 框架 EB OL 9 Stephen Prata 编著 C Primer Plus M 北京 人民邮电出版社 2002 7 10 Windows GDI 和 GDI 编程实例剖析 EB OL 11 张素琴 吕映芝 蒋维杜 戴桂兰 编著 编译原理 第二版 M 北京 清华大学出版社 2005 2 12 Mahesh Chand 编著 GDI 图形程序设计 M 北京 电子工业出版社 2006 3 13 使用 VC6 0 实现窗口的任意分割 EB OL 14 窗口切分后的视图通信 EB OL 15 潘爱民 编著 Visual C 技术内幕 M 北京 清华大学出版社 1999 1 16 在 vc6 0 中使用 GDI 图形函数 EB OL 17 VC 从入门到精通开发详解视频教程 EB OL 18 揣锦华 C 程序设计语言 M 西安 西安电子科技大学出版社 2003 19 常家忠 C 语言程序设计精讲精练 M 成都 电子科技大学出版社 2005 指导教师意见 指导教师意见 指导教师签名指导教师签名 开开 题题 报报 告告 会会 纪纪 要要 时间时间 地点地点 姓姓 名名职务 职称 职务 职称 姓姓 名名职务 职称 职务 职称 姓姓 名名职务 职称 职务 职称 与与 会会 人人 员员 会议记录摘要 会议记录摘要 会议主持人签名 会议主持人签名 记录人签名 记录人签名 年年 月月 日日 指指导导小小组组意意见见 负责人签名 负责人签名 年年 月月 日日 学学 院院 意意 见见 负责人签名 负责人签名 年年 月月 日日 湖 南 师 范 大 学 工 学院指导教师指导毕业设计情况登记表 论论文文 设设计计 题题目目基于图形的C 程序模拟器的设计与实现 语法分析与运行功能设计与实现 学生姓名学生姓名黎帅师所所属属专专业业 年年级级计算机科学与技术 专专业业 2004 级级 指指导导教教师师姓姓名名钟坚成职职 称称助教学学 历历硕士 指指导导时时间间指指导导地地点点指指 导导 内内 容容学学生生签签名名备备 注注 二二 湖南师范大学本科毕业设计评审表湖南师范大学本科毕业设计评审表 毕业设计毕业设计 题题 目目 基于图形的C 程序模拟器的设计与实现 语法分析与运行功能设计与实现 作者姓名作者姓名黎帅师所所属属院院 专专业业 年年级级 工学 院院 计算机科学与技术专专业业 2004 年年级级 指指导导教教师师 姓姓名名 职职称称 钟坚成 助教字字 数数12000定定稿稿日日期期2008 5 25 中中 文文 摘摘 要要 本文主要介绍了一个基于图形化程序模拟器的语法分析及运行功能设计及实现过 程 整个系统的优点是使程序运行过程图形化 能使使用者更加清楚 C 程序的执行 过程 整个系统采用的平台基于 Windows 系统下的 GDI 库和 CCrystal 库 采用 MVC 框架 使用 VC 6 0 进行开发 利用 spirit 框架生成抽象语法树 其中 GDI 用来图形 化演示 CCrystal 用来负责优化界面 系统能够打开并编辑保存在磁盘上的文件 最 后通过运行功能基于图形化的演示 用户可以对变量值及栈内容的变化情况有很好的 了解 关关键键词词 3 5 个个 程序模拟器 语法分析 GDI 英英 文文 摘摘 要要 This paper mainly introduces parsing analysis run functional design and realize process on the basis of the graphical program simulator and the merit of the whole system is to make the program s running procedure into a graphical procedure so That the users can take a better understanding of running process of the C program The whole system bases on the store of the GDI and CCrystal of the Windows system adopts the frame of the MVC develops by the usage of VC 6 0 and comes to be abstract parsing tree after making use of the frame of Spirit among which GDI is used for graphical demonstration and CCrystal for optimizing the interface The system can open and save the documents of the disks and the users can make a good understanding of the changeable conditions of the variable value and the content of the stack by running the function which bases on the graphical demonstration 关关键键词词 3 5 个个 program simulator parsing analysis GDI 毕业设计毕业设计指指导导教教师评师评定成定成绩绩 评审评审 基元基元 评审评审要素要素评审评审内涵内涵满满分分实实评评分分 目的明确目的明确 符合要求符合要求 选题选题符合符合专业专业培养目培养目标标 体 体现现学科 学科 专业专业特点和特点和综综合合训练训练 的基本要求的基本要求 10 题题目目规规模适当模适当5 选题选题恰当恰当 题题目目难难易度适中易度适中5 选题选题 质质 量量 30 联联系系实际实际 题题目目与与生生产产 科科研研 实实验验室室建建设设等等实实际际相相结结合合 具具有有一一定定的的 实实际际价价值值 10 综综合运用合运用 知知识识能力能力 能能将将所所学学专专业业知知识识和和机机能能用用与与毕毕业业设设计计中中 设设计计内内容容有有适适当当 的的深深度度 广广度度和和难难度度 5 应应用文献用文献 资资料能力料能力 能独立能独立查阅查阅相关文献相关文献资资料 能料 能对对本本设计设计所涉及的有关研究所涉及的有关研究 状况及成果状况及成果归纳归纳 总结总结和和恰恰当当运运用用 5 实验实验 设计设计 能力能力 能能运运用用本本学学科科常常用用的的研研究究方方法法 选选择择合合理理可可行行的的方方案案 能能对对 实实际际问问题题进进行行分分析析 进进行行实实验验 设设计计 具具有有较较强强的的动动手手能能力力 5 计计算能力算能力 原原始始数数据据搜搜集集得得当当 能能进进行行本本专专业业要要求求的的计计算算 理理论论依依据据正正 确确 数数据据处处理理方方法法和和处处理理结结果果正正确确 5 外文外文应应用用 能力能力 能能搜搜集集 阅阅读读 翻翻译译 归归纳纳 综综述述一一定定量量的的本本专专业业外外文文资资料料与与 外外文文摘摘要要 并并能能加加以以运运用用 体体现现一一定定的的外外语语水水平平 5 计计算机算机应应用能力用能力 能能根根据据设设计计题题目目要要求求编编程程上上机机或或使使用用专专业业应应用用软软件件完完成成设设 计计任任务务 5 能力能力 水水 平平 35 分析能力分析能力能能对对设设计计项项目目进进行行技技术术经经济济分分析析或或对对实实验验结结果果进进行行综综合合分分析析5 插插图图或或图纸质图纸质量量能能用用计计算算机机绘绘图图 且且绘绘制制图图纸纸表表格格符符合合标标准准5 说说明明书书撰写水平撰写水平 设设计计说说明明书书齐齐全全 概概念念清清楚楚 内内容容正正确确 条条理理分分明明 语语言言流流畅畅 结结构构严严谨谨 篇幅达到学校要求篇幅达到学校要求 15 规规范化程度范化程度 设设计计的的格格式式 图图纸纸 数数据据 用用语语 量量和和单单位位 各各种种资资料料引引用用和和运运 用用规规范范化化 符符合合标标准准 设设计计栏栏目目齐齐全全合合理理 5 成果的成果的实实用性与用性与 科学性科学性 较较好好地地完完成成设设计计选选题题的的目目的的要要求求 成果富有一定的理成果富有一定的理论论深深 度和度和实际实际运用价运用价值值 5 设计设计 质质 量量 35 创见创见性性具具有有创创新新意意识识 设设计计具具有有一一定定的的创创新新性性5 正文部分成绩 上表 正文部分成绩 上表 外文资料译文成绩 外文资料译文成绩 总成绩 总成绩 评定等级 评定等级 指导教师评审意见 指导教师评审意见 指导教师签名 指导教师签名 说说明 此表指明 此表指标标部分部分为为正文部分正文部分计计分表 正文部分成分表 正文部分成绩绩 实评总实评总分分 0 9 外文 外文资资料料译译文成文成绩绩 满满分分为为 10 分 分 总总成成绩绩 正文部分成 正文部分成绩绩 外文 外文资资料料译译文成文成绩绩 评评定成定成绩绩分分为优为优秀 良好 中等 秀 良好 中等 及格 不及格五个等及格 不及格五个等级级 总总成成绩绩 90 100 分分记为优记为优秀 秀 80 89 分分记为记为良好 良好 70 79 分分记为记为中中 等 等 60 69 分分记为记为及格 及格 60 分以下分以下记为记为不及格 若不及格 若译译文成文成绩为绩为零 零 则则不不计总计总成成绩绩 评评定等定等级记为级记为不及格 不及格 毕业设计评阅毕业设计评阅教教师评师评定成定成绩绩 本本页页由由评评阅阅教教师师手手写写 评审评审 基元基元 评审评审要素要素评审评审内涵内涵满满分分实实评评分分 目的明确目的明确 符合要求符合要求 选题选题符合符合专业专业培养目培养目标标 体 体现现学科 学科 专业专业特点和特点和综综合合训练训练 的基本要求的基本要求 10 题题目目规规模适当模适当5 选题选题恰当恰当 题题目目难难易度适中易度适中5 选题选题 质质 量量 30 联联系系实际实际 题题目目与与生生产产 科科研研 实实验验室室建建设设等等实实际际相相结结合合 具具有有一一定定的的 实实际际价价值值 10 综综合运用合运用 知知识识能力能力 能能将将所所学学专专业业知知识识和和机机能能用用与与毕毕业业设设计计中中 设设计计内内容容有有适适当当 的的深深度度 广广度度和和难难度度 5 应应用文献用文献 资资料能力料能力 能独立能独立查阅查阅相关文献相关文献资资料 能料 能对对本本设计设计所涉及的有关研究所涉及的有关研究 状况及成果状况及成果归纳归纳 总结总结和和恰恰当当运运用用 5 实验实验 设计设计 能力能力 能能运运用用本本学学科科常常用用的的研研究究方方法法 选选择择合合理理可可行行的的方方案案 能能对对 实实际际问问题题进进行行分分析析 进进行行实实验验 设设计计 具具有有较较强强的的动动手手能能力力 5 计计算能力算能力 原原始始数数据据搜搜集集得得当当 能能进进行行本本专专业业要要求求的的计计算算 理理论论依依据据正正 确确 数数据据处处理理方方法法和和处处理理结结果果正正确确 5 外文外文应应用用 能力能力 能能搜搜集集 阅阅读读 翻翻译译 归归纳纳 综综述述一一定定量量的的本本专专业业外外文文资资料料与与 外外文文摘摘要要 并并能能加加以以运运用用 体体现现一一定定的的外外语语水水平平 5 计计算机算机应应用能力用能力 能能根根据据设设计计题题目目要要求求编编程程上上机机或或使使用用专专业业应应用用软软件件完完成成设设 计计任任务务 5 能力能力 水水 平平 35 分析能力分析能力能能对对设设计计项项目目进进行行技技术术经经济济分分析析或或对对实实验验结结果果进进行行综综合合分分析析5 插插图图或或图纸质图纸质量量能能用用计计算算机机绘绘图图 且且绘绘制制图图纸纸表表格格符符合合标标准准5 说说明明书书撰写水平撰写水平 设设计计说说明明书书齐齐全全 概概念念清清楚楚 内内容容正正确确 条条理理分分明明 语语言言流流畅畅 结结构构严严谨谨 篇幅达到学校要求篇幅达到学校要求 15 规规范化程度范化程度 设设计计的的格格式式 图图纸纸 数数据据 用用语语 量量和和单单位位 各各种种资资料料引引用用和和运运 用用规规范范化化 符符合合标标准准 设设计计栏栏目目齐齐全全合合理理 5 成果的成果的实实用性与用性与 科学性科学性 较较好好地地完完成成设设计计选选题题的的目目的的要要求求 成果富有一定的理成果富有一定的理论论深深 度和度和实际实际运用价运用价值值 5 设计设计 质质 量量 35 创见创见性性具具有有创创新新意意识识 设设计计具具有有一一定定的的创创新新性性5 正文部分成绩 上表 正文部分成绩 上表 外文资料译文成绩 外文资料译文成绩 总成绩 总成绩 评定等级 评定等级 评阅教师评审意见 评阅教师评审意见 评阅教师签名 评阅教师签名 说说明 此表指明 此表指标标部分部分为为正文部分正文部分计计分表 正文部分成分表 正文部分成绩绩 实评总实评总分分 0 9 外文 外文资资料料译译文成文成绩绩 满满分分为为 10 分 分 总总成成绩绩 正文部分成 正文部分成绩绩 外文 外文资资料料译译文成文成绩绩 评评定成定成绩绩分分为优为优秀 良好 中等 秀 良好 中等 及格 不及格五个等及格 不及格五个等级级 总总成成绩绩 90 100 分分记为优记为优秀 秀 80 89 分分记为记为良好 良好 70 79 分分记为记为中中 等 等 60 69 分分记为记为及格 及格 60 分以下分以下记为记为不及格 若不及格 若译译文成文成绩为绩为零 零 则则不不计总计总成成绩绩 评评定等定等级级 记为记为不及格 不及格 三 湖南师范大学本科毕业设计答辩记录表三 湖南师范大学本科毕业设计答辩记录表 毕业设计毕业设计 题题 目目 基于图形的C 程序模拟器的设计与实现 语法分析与运行功能设计与实现 作者姓名作者姓名 黎帅师所属院 专业 年级所属院 专业 年级工学院院 计算机科学与技术 专业专业 2004 年级年级 指导教师指导教师 姓名 职姓名 职 称称 钟坚成 助教 答答 辩辩 会会 纪纪 要要 时间时间地点地点 姓姓 名名职务 职称 职务 职称 姓姓 名名职务 职称 职务 职称 姓姓 名名职务 职称 职务 职称 答辩答辩 小组小组 成员成员 答辩中提出的主要问题及回答的简要情况记录 答辩中提出的主要问题及回答的简要情况记录 会议主持人签名 会议主持人签名 记录人签名 记录人签名 年年 月月 日日 答答 辩辩 小小 组组 意意 见见 评语 评语 评定等级 评定等级 负责人 签名 负责人 签名 年年 月月 日日 学学 院院 意意 见见 评语 评语 毕业设计学院最终评定等级 毕业设计学院最终评定等级 负责人 签名 负责人 签名 学院 公章 学院 公章 年年 月月 日日 学学 校校 意意 见见 评语 评语 评定等级 评定等级 负责人 签名 负责人 签名 年年 月月 日日 目录目录 第一章第一章 前前 言言 3 1 1 课题研究背景课题研究背景 3 1 2 现有程序模拟器的状况现有程序模拟器的状况 3 1 3 课题研究的主要价值课题研究的主要价值 3 1 4 本论文的主要目的及内容本论文的主要目的及内容 3 第二章第二章 相关技术简介相关技术简介 5 2 1 系统使用到的相关技术系统使用到的相关技术 5 2 2 GDI 技术介绍技术介绍 1 5 2 3 MVC 技术介绍技术介绍 2 8 第三章第三章 需求分析与系统设计需求分析与系统设计 9 3 1 需求分析需求分析 9 3 2 系统总体处理流程系统总体处理流程 12 3 3 子系统处理流程子系统处理流程 14 3 4 系统开发使用环境介绍系统开发使用环境介绍 15 3 4 1 软件开发平台 15 3 4 2 硬件平台 15 3 4 3 软件运行平台 15 3 5 系统设计系统设计 15 3 5 1 程序模拟器中类包的设计 16 3 5 2 程序模拟器设计当中使用的数据结构 17 第四章系统详细设计第四章系统详细设计 18 4 1 系统结构设计系统结构设计 18 4 2 文件菜单功能模块的设计文件菜单功能模块的设计 18 4 3 编辑菜单功能模块的设计编辑菜单功能模块的设计 19 4 4 运行菜单功能模块的设计运行菜单功能模块的设计 20 4 4 1 抽象语法树 3 20 4 4 2 错误报告 3 21 4 4 3 词法分析 21 4 4 6 图形化输出 31 第五章第五章 系统测试及运行结果系统测试及运行结果 33 5 1 系统主界面系统主界面 33 5 2 文件菜单功能模块文件菜单功能模块 34 5 2 编辑菜单功能模块编辑菜单功能模块 34 5 4 运行菜单功能模块运行菜单功能模块 36 总结总结 38 参考文献参考文献 39 致谢致谢 41 1 基于图形的C 程序模拟器的设计与实现 语法分析与运行功能设计与实现 工学院 2004 级计算机与技术专业 黎帅师 摘要 本文主要介绍了一个基于图形化程序模拟器的语法分析及运行功能设计及 实现过程 整个系统的优点是使程序运行过程图形化 能使使用者更加清楚 C 程序的执行过程 整个系统采用的平台基于 Windows 系统下的 GDI 库和 CCrystal 库 采用 MVC 框架 使用 VC 6 0 进行开发 利用 spirit 框架生成抽象语法树 其中 GDI 用来图形化演示 CCrystal 用来负责优化界面 系统能够打开并编辑保存 在磁盘上的文件 最后通过运行功能基于图形化的演示 用户可以对变量值及 栈内容的变化情况有很好的了解 关键字 程序模拟器 语法分析 GDI 2 Abstract This paper mainly introduces parsing analysis run functional design and realize process on the basis of the graphical program simulator and the merit of the whole system is to make the program s running procedure into a graphical procedure so That the users can take a better understanding of running process of the C program The whole system bases on the store of the GDI and CCrystal of the Windows system adopts the frame of the MVC develops by the usage of VC 6 0 and comes to be abstract parsing tree after making use of the frame of Spirit among which GDI is used for graphical demonstration and CCrystal for optimizing the interface The system can open and save the documents of the disks and the users can make a good understanding of the changeable conditions of the variable value and the content of the stack by running the function which bases on the graphical demonstration Keyword program simulator parsing analysis GDI 3 第一章 前 言 1 1 课题研究背景 现有程序模拟器的发展方向主要是针对一般程序的运行 用户无法了 解内部数据的处理过程及整个系统的组成 对整个程序的运行过程不能有 一个很好交互过程 在现有程序模拟器的基础上来对新程序模拟器的研发 基 于 C 程序模拟器是一种可以对数据透明化 并且可以使用户很好了解内 部数据处理过程的一种程序模拟器 1 2 现有程序模拟器的状况 程序模拟器的功能主要是对程序进行模拟测试 现有的程序模拟器 诸 如 java 程序模拟器 搜索引擎程序模拟器等主要功能不具备对程序的图形 化模拟执行等功能 这些程序模拟器无法使程序的执行情况展现出来 包 括程序中变量及栈的使用情况 只能通过其它的方法 诸如调试的方法来 对变量进行查看和显示 此外 栈的内容也不能对用户透明化 使用户不 能栈中的内容进行初步的了解 1 3 课题研究的主要价值 本程序模拟器的主要特点是数据对用户透明化 能够使用户实时了解程 序内部变量的处理过程 主要体现在栈是怎么处理变量及函数的 在现代 的教学过程当中 如果使用此程序模拟器进行教学将会直到意想不到的效 果 它主要是以 C 语言编写的源程序来实现整个模拟过程 在程序的模 拟过程当中 用户可以很好地了解到变量值的变化及进出栈的过程 如果 加上编译器的话 该系统不仅仅可用于教学 而且可以当做现有的编辑程 序工具使用 1 4 本论文的主要目的及内容 本论文的主要目的是 通过分析此次课题 在现有的 GDI 技术和常用 的递归下降程序算法基础上 利用 Visual C 这个开发工具以面向对象的 4 开发模式设计出一个具有图形化显示功能的程序模拟器 最后在此形式上 可以使其它开发者进一步对系统进行完善 本论文的主要内容 1 对 GDI 技术进行相应的描述和解释 为图形化显示输出作基础 2 程序中所用到的递归下降算法的相应描述 程序在进行语法分析过 程中对 TOKEN 串的识别 跳过空白字符的相应处理方法 在运行 程序时 程序运用 STL 中的栈和向量处理数据 确定函数 main 的 起始位置 3 GDI 在项目中的应用 DrawString DrawLine DrawRectangle Graphics 类 Pen 类等 4 MFC 的主要类介绍及 MVC 框架介绍 5 第二章 相关技术简介 2 1 系统使用到的相关技术 整个系统中所用的技术主要有 C 中的 STL VC 中的 MFC 以及 GDI 和 CCrystal 其中 C 中的 STL 主要用到了 stack 和 vector 等类及其 相应的算法 MFC 用到的主要是 CMAP 类 CRichEditCtrl 类 CControlBar 及多文档类的操作 GDI 中用到的主要是 DrawString 及 DrawRectangle 等方法 CCrystal 用到了 CCrystalTextView 等类 在实现语法分析的阶段用到了程序的递归下降方法 SPIRIT 框架 另 外系统的外层框架用到了 MVC 框架 用户的接口可以很容易的改变 如 果程序中的数据发生了变化 在右边的栈中可以实时的反应出来 2 2 GDI 技术介绍 1 GDI 是 Windows XP 中的一个子系统 它主要负责在显示屏幕和打印 设备输出有关信息 它是一组通过 C 类实现的应用程序编程接口 顾名 思义 GDI 是以前版本 GDI 的继承者 出于兼容性考虑 Windows XP 仍 然支持以前版本的 GDI 但是在开发新应用程序的时候 开发人员为了满 足图形输出需要应该使用 GDI 因为 GDI 对以前的 Windows 版本中 GDI 进行了优化 并添加了许多新的功能 作为图形设备接口的 GDI 使得应用程序开发人员在输出屏幕和打印机 信息的时候无需考虑具体显示设备的细节 他们只需调用 GDI 库输出的类的 一些方法即可完成图形操作 真正的绘图工作由这些方法交给特定的设备驱 动程序来完成 GDI 使得图形硬件和应用程序相互隔离 从而使开发人员编写 设备无关的应用程序变得非常容易 2 2 1 GDI 新增功能 1 渐变的画刷 Gradient Brushes GDI 允许用户创建一个沿路径或直线渐变的画刷 来填充外形 shapes 路径 paths 区域 regions 渐变画刷同样也可以画直线 曲线 路径 当你 用一个线形画刷填充一个外形 shapes 时 颜色就能够沿外形逐渐变化 2 基数样条函数 Cardinal Splines 6 GDI 支持基数样条函数 而 GDI 不支持 基数样条是一组单个曲线 按照一定的顺序连接而成的一条较大曲线 样条由一系列点指定 并通过 每一个指定的点 由于基数样条平滑地穿过组中的每一个点 不出现尖角 因而它比用直线连接创建的路径更精确 下面是分别使用两种方法创建的 图形 一个使用基数样条 一个使用直线 3 持久路径对象 Persistent Path Objects 在 GDI 中 路径属于设备描述表 DC 画完后路径就会被破坏 在 GDI 中 绘图工作由 Graphics 对象来完成 你可以创建几个与 Graphics 分 开的路径对象 绘图操作时路径对象不被破环 这样你就可以多次使用同 一个路径对象画路径了 4 变形和矩阵对象 Transformations Matrix Object GDI 提供了矩阵对象 一个非常强大的工具 使得编写图形的旋转 平移 缩放代码变得非常容易 一个矩阵对象总是和一个图形变换对相联 系起来 比方说 路径对象 PATH 有一个 Transform 方法 它的一个参 数能够接受矩阵对象的地址 每次路径绘制时 它能够根据变换矩阵绘制 下面的图形是一个图形变换前后的例子 变换按照先缩放后旋转完成 5 可伸缩区域 Scalable Regions GDI 在区域 regions 方面对 GDI 进行了改进 在 GDI 中 Regions 存储在设备坐标中 对 Regions 唯一可进行图形变换的操作就是对区域进 行平移 而 GDI 用世界坐标存储区域 Regions 允许对区域进行任何图形变 换 譬如如图所示的缩放 图形变换以变换矩阵存储 下面例子是一个区 域变换前后的例子 缩放 旋转 平移 6 Alpha Blending 混合 你可能会注意到上面显示的图形 红色未平移区域与变换后区域有一 部分交叉区域 这一部分形成的梦幻效果就是由 GDI 支持的 Alpha Blending 混合 实现的 利用 alpha 融合 你可以指定填充颜色的透明度 透明颜色与背景色相互融合 填充色越透明 背景色显示越清晰 下图所 示的四个椭圆被填充了同样的颜色 但由于拥有不同的透明度而呈现不同 的显示效果 7 7 多种图像格式支持 图像在图形界面程序中占有举足轻重的地位 GDI 除了支持 BMP 等 GDI 支持的图形格式外 还支持 JPEG Joint Photographic Experts Group GIF Graphics Interchange Format PNG Exchangeable Image File TIFF Tag Image File Format 等图像格式 你可以直接在程序中使用这些 图片文件 而无需考虑它们所用压缩算法 8 其它 GDI 还将支持其它技术 譬如重新着色 颜色校正 元数据 图形容 器 也许这些功能我们会在将来的 WindowsXP 或者 Microsoft VisualStudio Net 中看到 2 2 2 编程模式的改变 Device Contexts 设备描述表 Handles 句柄 和 Graphics Objects 图 形对象 如果你曾经使用过 GDI 编写过应用程序 你肯定对设备描述表 DC 的概念非常熟悉 设备描述表是 Windows 使用的一个数据结构 用于存储 具体设备能力和与如何在设备上重绘一些项目的有关属性信息 而且视频 设备的设备描述表还与特定的窗口有关 首先你必须获得一个设备描述表 句柄 然后在图形绘制时 你把这个句柄作为一个参数传递给 GDI 图形绘 制函数 当然你也可以把它传递给获得或设置设备描述表有关属性的函数 利用 GDI 函数 你不必使用句柄或者设备描述表 相反 你可以简单 地创建一个图形对象 Graphics 然后以你熟悉的面向对象的编程方式调 用它的方法即可 譬如 myGraphicsObject DrawLine parameters Graphics 对象是 GDI 的核心 正如设备描述表是 GDI 的核心一样 设备描述表 DC 和图形对象 Graphics 在不同的环境下扮演着同样的角色 发挥 着类似的作用 但是两者也存在着这质的不同 前者使用基于句柄的编程 方法而后者使用面向对象的编程方法 图形对象和设备对象一样 与屏幕的显示窗口有关 它包含着与项目 重绘有关的属性信息 譬如平滑度 然而图形对象并没有像 GDI 那样与 8 Pen 画笔 Path 路径 Image 图像 Font 字体 等搅在一起 在 GDI 中 所有与绘图有关的绘图对象必须选入指定设备描述表中 使用 SelectObject 函数 才能被指定的设备描述表所使用 而在 GDI 中 你只 需把这些绘图对象作为一个参数传递给图形对象 Graphics 方法调用即可 每一个图形对象所使用的绘图工具至于它调用方法使用的参数有关 它可 以通过参数使用多种 Pen 和 Brush 绘图 而不是与特定的笔和画刷联系在 一起 2 3 MVC 技术介绍 2 MVC 本来是存在于 Desktop 程序中的 M 是指数据模型 V 是指用户 界面 C 则是控制器 使用 MVC 的目的是将 M 和 V 的实现代码分离 从 而使同一个程序可以使用不同的表现形式 比如一批统计数据你可以分别 用柱状图 饼图来表示 C 存在的目的则是确保 M 和 V 的同步 一旦 M 改变 V 应该同步更新 本系统用到的 MVC 框架图如图 2 3 1 DrawStack void DrawSelect void CGraphi OnCompileTraceRun void OnCompileTraceTypeCheck void CCminusDoc SetSelection void SelecctLine void CCminusView DeleteCurrentSelection bool Paste void Cut void m bOverMode bool m bSelectionPushed bool CCrystalView InitInstance bool m pGdiToken CCminusApp 图 2 3 1 程序模拟器的 MVC 框架图 9 第三章 需求分析与系统设计 3 1 需求分析 基于图形的 C 程序模拟器简介 基于图形的 C 程序模拟器是适用教学 编程方面的良好学习工具 本 系统的调试和运行两大部分功能具有图形化显示的技术 从而方便用户理解 和了解整个程序的工作过程 利用图形化的 C 程序模拟器来进行程序的编写 不仅可以随时检查程 序中各变量的变化情况 更为重要的是能够使用户对程序起到透明化的过程 而且在教学方面中也能使学生便于理解 图 3 1 1 即该模拟器的系统架构图 C 图形化程序模拟器 文件 编辑 运行 调试 查看 帮助 程序调试 程序执行 查看变量值 查看堆栈中 的内容 关于本程序 的帮助 打开 关闭 程序 保存程序 查找 替换 操作 剪贴板功能 操作 程序语法检 查 程序运行 图 3 1 1 程序模拟器的系统架构图 经过整体分析得出本系统应完成的任务有 主要利用现有的平台 用 C 来实现对程序的模拟效果 包括调试 停止执行 切换断点 下一步 单步进入 语法检查 运行等程序的基本功能 另外在这些基础上还要有图 形化的显示功能 由所有这些功能构成一个扩展性好的系统 10 整个系统主要完成的功能包括 1 文件菜单功能 文件菜单功能主要包括以下功能 打开 新建 保存 关闭 退出 2 编辑菜单功能 编辑菜单主要包括以下功能 撤消 重复 复制 剪切 粘贴 3 调试菜单功能 调试菜单主要包括如下功能 调试 停止执行 切换断点 下一步 单 步进入 4 运行菜单功能 运行菜单主要包括 语法检查和运行两大功能 5 查看菜单功能 查看菜单包括查看栈和变量两大功能 6 帮助菜单功能 帮助菜单主要有两大功能 关于本程序和模拟器的帮助 图 3 1 2 为该程序模拟器的系统功能图 图形程序模拟器器主要功能 文件 编辑 运行 调试 查看 帮助 新建 打开 保存 另存为 关闭 退出 撤消 重做 剪切 粘贴 复制 查找 替换 语法分析 运行 调试 停止执行 设置断点 下一步 单步进入 变量 栈 输出栏 工具栏 状态栏 关于C Compiler 图 3 1 2 程序模拟器的系统功能图 11 经过整体分析得出了系统的整个功能 本人负责开发的属于运行功能部 分 负责语法检查和运行功能的实现 整个系统的边界以软 硬件为边界 用户作为参与者 绘制用例模型 整个系统的用例模型如图 3 1 1 用户 文件编辑运行 系统启动 新建程序 编辑操作 运行程序 语法检查 查找 退出程序保存程序 当前程序 图 3 1 1 程序模拟器用例分析模型图 本人负责的运行功能部分涉及到的类有 CCminusDos CCminusApp CScaner CGraphic CAnalyzer 等 根据分析绘制类序列图 主要思想如下 CCminusDos 通过调用 CAnalyzer 的 tracetype 函数可以先进行语法检 查 语法检查通过后 由 CAnalyzer 调用 CParser 的 BulideSynaxTree 建 立语法树 与此同时 CAnalyzer 还调用 CSymbolTable 的 Traverse 函数 建立符号表 所有工作结束后 由 CScaner 的 NextToken 函数分析函数 的入口处 Main 函数 分析完后 找到 Main 所在行数 即可进行下一步 12 的运行 将图形显示出来 即通过 CCminusDos 调用 CGraphic 的 DrawStack 函数来实现 运行功能类序列图 图 3 1 2 DrawStack void DrawSelect void CGraphic BulidSynataxTree Trace void m pScaner m szScope CParser 设置字体 CCrystalTextBuffer m TextBuffer 临时存储当前程序文件内容 LPCTSTR lpszPathName 打开文件的路径 主要用到的方法 virtual BOOL OnNewDocument virtual BOOL OnOpenDocument LPCTSTR lpszPathName virtual BOOL OnSaveDocument LPCTSTR lpszPathName virtual void OnCloseDocument 4 3 编辑菜单功能模块的设计 编辑菜单主要包含以下子功能模块 撤消 重做 剪切 复制 粘贴 全 选 查找 替换等常规功能 撤消功能 用来取消对程序的上一步操作 重做功能 用来重新做上一次程序的操作 剪切功能 用来剪切当前选定的内容 复制功能 用来复制当前选定的内容 粘贴功能 用来粘贴在当前剪贴板中的内容 全选功能 用来选定当前所有的程序 查找功能 查找符合条件的内容 替换功能 替换符合条件的内容 类 CCrystalEditView CCrystalTextBuffer CEditReplaceDlg CFindTextDlg 变量 CCrystalTextBuffer m pTextBuffer 获取当前文本内容 CCrystalEditView m pBuddy 存储当前文本内容 20 BOOL m bFound 设置查找标记 实现方法 void Paste BOOL CanUndo BOOL CanRedo void Cut BOOL Undo CPoint BOOL Redo CPoint afx msg void OnEditReplace afx msg void OnEditReplaceAll afx msg void OnChangeEditText 4 4 运行菜单功能模块的设计 运行菜单包含两大功能模块 语法检查和运行 语法检查 对整个程序进行语法分析 如果出现错误则立即给出提示 运行功能 对整个程序进行 图形化显示栈中的内容 运行菜单功能模块的设计是整个系统中的关键部分 下面先介绍程序中 难以实现的两大部分 4 4 1 抽象语法树 3 语法树是程序在内存中的代表 同样地 抽象语法树是在内存中的代 表性程序 他们着眼于程序正常运行 而不是放在语法 C 利用语法树 作为一个中间步骤之间的解析和代码生成 这样一来 解析步骤 是脱离 代码生成的一步 它允许一个模块修改另一个模块 这种方法简单 又增 加了独立于其他解析模块而代码生成模块 作为一个使用 spirit 解析器架构的原因 抽象语法树的生成过程解析步 骤 spirit 提供了一个功能 以文法 检查语法和生成抽象语法树 成功句 法分析 抽象语法树是作为一个数组的数组 利用的 STL 标准模板库 的向量数据结构 然而 spirit 区别分析树和抽象语法树一代 该文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入职车间安全培训内容课件
- 企业生产安全培训师课件
- 加快形成新质生产力:核心要义
- 河南体彩资金管理办法
- 物流公司公章管理办法
- 《中小学生守则》《中学生日常行为规范》知识竞赛试题(附答案)
- 2025年中央八项规定精神应知应会50题测试卷带答案详解典型题
- 2025年政工师考试试题及参考答案
- 民族教育意识形态建构-洞察及研究
- 清明节主题班会《清明节缅怀先烈》课件
- 江苏手术分级管理制度
- 医院5s管理制度规定管理制度
- 消防避火服课件教学
- 土地法学教学课件电子教案课件
- 小学二年级上册心理健康教案(适合北京教育出版社)
- 2025年时事政治考试题及参考答案(100题)
- 林区施工防火管理制度
- 代办报建合同协议书
- 2024有限公司生产安全事故应急预案
- 三级养老护理员职业技能鉴定理论考试题(附答案)
- 化药口服固体制剂连续制造技术指导原则(试行)
评论
0/150
提交评论