“流程图工具”项目报告
组员:殷智慧 08011212
吴浩 08011215
张炜森 08011223(他貌似是旁听这课的)
一、项目背景(选题原因)
1.首先这个项目包含图形编程,而图形编程是个很有趣的东西,用一些简单的绘图函数能
搭出那么不可思议的效果,这魅力确实吸引着人;
2.其次这个项目很考验条理性,即程序结构,或者说是设计模式。要想做好这个项目,程
序没有一个合理的结构是不行的。而通过做这个项目,以后思考任何问题也许都会变
得更全面更有条理;
3. 考虑到初学 C++及算法的时候面对程序的结构和流畅时十分头疼,画流程图的时候经常
犯低级错误,对多步骤的语句的赋值,运算感到难以掌握,希望在正式写程序之前能
够轻松的测试代码的正确性并找出逻辑错误,所以打算在原有基础上加上流程图功能;
4.总觉得不能照搬老师的程序,得有点实质性的扩展,这也是我们加入流程图的原因;
二、实现的功能(简易的说明书)
1.绘图方面
a.拖动虚线框创建一般图形,拖动虚线创建一般线段,鼠标左右键结合创建折线;
b.可以选择,移动图形,通过移动图形上的 mark 点实现对图形大小的拖放,有些特殊的
点还能更改图形的属性,还可以按 delete 键删除图形;
c.实现了图形与用户数据结合,选中图形后双击用户数据能够修改用户数据;
d.按 w、a、s、d 键可以任意拖动画布,这样,等于有了一块无限大的画布;
2.流程图方面
a.用图形与线段的互相连接搭出流程图,移动箭头线段时箭头上的点能够自动吸附到
shape 上的 sizemark;
b.支持变量定义,一般执行语句,选择语句,全局变量,以及自定义函数,具体格式规范
可以用程序打开 example.txt 参照;
c.流程图画好后,单击载入关系——调试执行能弹出执行窗口,左边是生成的等效代码
右边则是执行结果;
d.经测试,只要流程图符合规范,无论是多复杂的结构都能算出正确结果;
3.文件操作方面
a.因为对 xml 还不能达到应用自如的地步,所以选择了用 txt 文本文档来存储画布上的
数据,txt 的优点是可以自由设置存储格式,从而使文件的读写变得简单;
b.菜单中有打开和保存两个选项,可用来加载保存好的 txt 和保存当前数据到 txt,这样
用户可以存储许多流程图,不必每次都重画;
c.安全起见,每次用户关闭程序或者打开新的文件时,都会自动把当前画布的内容存到
一个名为“lastfile.txt”的文件中;
4.脚本解释方面
a.脚本格式是小组自定义的;
b.每次输出的结果除了 main 函数的返回值外,还能输出所有全局变量的值,这样就实现
了多结果输出;
c.配合流程图,有 gotoif 和 goto 两个系统函数,实现语句的跳转。
三、主要算法(由于老师说文档不要太长,所以该部分一切从简)
1.绘图部分操作都是通过对象之间传递一个个的 Command 来进行的(Command 为自定义
的消息类),把所有的图形都当成“控件”,为其添加一系列的 Command 响应;