面向对象程序设计课程设计文档流程图编辑系统.doc

上传人:仙人指路1688 文档编号:2386194 上传时间:2023-02-17 格式:DOC 页数:28 大小:1.44MB
返回 下载 相关 举报
面向对象程序设计课程设计文档流程图编辑系统.doc_第1页
第1页 / 共28页
面向对象程序设计课程设计文档流程图编辑系统.doc_第2页
第2页 / 共28页
面向对象程序设计课程设计文档流程图编辑系统.doc_第3页
第3页 / 共28页
面向对象程序设计课程设计文档流程图编辑系统.doc_第4页
第4页 / 共28页
面向对象程序设计课程设计文档流程图编辑系统.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《面向对象程序设计课程设计文档流程图编辑系统.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计文档流程图编辑系统.doc(28页珍藏版)》请在三一办公上搜索。

1、面向对象程序设计课程设计文档(流程图编辑系统)目 录1.开发背景32.系统需求32.1.系统界面:32.1.1.显示流程图:32.1.2.遍历流程图:32.1.3.创建流程图32.1.4.删除流程图图元33.系统设计33.1.概要设计33.1.1.设计思想33.1.2.开发环境33.2.系统框架43.3.用例图与用例说明43.3.1.系统用例图43.3.2.系统用例说明63.4.类关系与类文档73.4.1.类关系73.4.2.类的文档83.5.状态转移图173.6.序列图174.详细代码设计204.1.本系统中主要类的定义文档204.1.1.视图类204.1.2.图元基类234.1.3.工具类

2、234.1.4.流程图创建工具类244.1.5.流程图编辑工具类244.1.6.图元数组类254.1.7.流程图类254.2.流程图测试路径生成算法设计265.系统改进281.开发背景本系统实现流程图编辑功能,并在其基础上实现了流程图路径的自动测试和显示,从而方便了用户对流程图路径的检测和修改。2.系统需求2.1.系统界面:系统界面包括编辑区、菜单栏以及工具条,尽可能的简洁完备。2.1.1.显示流程图:1)使用多种图元分别表示流程图起点、流程图终点、过程以及条件判断和控制流;2)在菜单栏或者工具栏中执行创建各种流程图图元的命令;3)在编辑区内可以创建和修改流程图图元。2.1.2.遍历流程图:1

3、)“预遍历”用于计算出从起点到终点的所有路径;2)“下一步”用于逐个展示每条测试路径;3)“停止”用来停止遍历测试路径。2.1.3.创建流程图1)新建:清空编辑区域,此时可在编辑区新建流程图;2)创建起始点:点击“起始点”菜单项,可在编辑区域拖放生成流程图起点;3)创建终结点:点击“终结点”菜单项,可在编辑区域拖放生成流程图终点;4)创建过程:点击“过程”菜单项,可在编辑区域拖放生成流程图过程;5)创建条件判断:点击“条件判断”菜单项,可在编辑区域拖放生成流程图条件判断框;6)控制流:菜单选择后,拖放指定控制流起点与终点。2.1.4.删除流程图图元1)移动图元:鼠标拖动图元,鼠标左键放开终止图

4、元移动;2)删除:选中图元后,按del键(删除图元的同时,没有起点或终点的控制流也会被删除);3)属性图元文字:鼠标双点图元,可以修改活添加文字;4)调整图元大小:鼠标拖动图元控制点,调整图元尺寸,鼠标左键放开终止调整。3.系统设计3.1.概要设计3.1.1.设计思想按照前一阶段的需求分析,系统设计采用面向对象的设计思想和开发方法。采用面向对象思想设计,程序可读性高,维护方便,可重用性高,而且能够保证系统的较高质量,在开发过程中,能提高软件开发的效率;自身继承、封装、多态的特性使系统灵活、易扩展。3.1.2.开发环境开发工具:开发工具主要采用Microsoft C+6.0。Visual C+

5、6.0是一种可视化的开发工具,利用Visual C+ 6.0可以开发基于Widnows平台的32位应用程序,具有强大的编译器,可以开发出功能强大的应用程序。3.2.系统框架系统框架如图1。流程图编辑系统的主要功能部分为流程图绘制和测试路径演示。其中流程图处理为:流程图建立、编辑以及删除。路径处理为:路径生成和路径的遍历。图3-1 系统功能结构图 3.3.用例图与用例说明3.3.1.系统用例图根据系统要求,总结系统用例主要为图2所示。为了方便设计的进一步进行,我们又把各个用例细化,主要有:创建流程图控件、浏览流程图控件、删除流程图控件、编辑流程图控件、编辑起点、编辑控制流等。部分用例图如下:图3

6、-2 系统用例综述图3-3绘制流程图图3-4编辑流程图控件图3-5遍历测试路径3.3.2.系统用例说明创建流程图控件用户操作编辑系统1.新建流程图1.清空编辑框2.选择流程图起点2.创建流程图起点3.选择流程图终点3.创建流程图终点4.选择控制流4.创建控制流5.选择过程框5.创建过程框6.选择条件判断框6.创建条件判断框创建图元用户操作编辑系统1.选择对应图元1.创建该图元2.按下鼠标左键2.确定图元的起点位置3.拖动鼠标3.确定欲生成图元的尺寸4.抬起鼠标左键4.生成图元选中流程图控件用户操作编辑系统1.选择流程图起点1.高亮显示流程图起点2.选择流程图终点2.高度显示流程图终点3.选择过

7、程框3.高度显示过程框4.选择条件判断框4.高亮显示条件判断框5.选择控制流5.高亮显示控制流编辑图元用户操作编辑系统1.选择图元1.高亮显示图元2.鼠标拖动图元2.修改该图元的位置3.双击3.显示文本编辑框,修改图元文字4.选择图元控制点拖动4.改变图元大小5.选择图元后按Delete键5.删除选定的图元,同时删除没有连接到图元的控制流遍历流程图用户操作编辑系统1.选择预遍历1.在程序后台生成遍历路径2.选择下一步2.逐步遍历流程图,当前遍历图元边框变为红色3.选择停止遍历3.终止遍历流程图3.4.类关系与类文档3.4.1.类关系根据系统要求和设计要求,本系统使用的类主要有图元类(CElem

8、ent、CStart、CEnd、CProcess、CFlowCtrl、CJudegement)、流程图工具类(CTool、CCreateTool、CEditTool、CStartTool、CEndTool、CProcessTool、CFlowCtrlTool、CJudegementTool)、流程图类(CDiagram)、图元数组类(CElemArray)以及视图类(CFlowChartView)。类的继承关系如下图。图3-6 类的继承关系(1)图3-7 类的继承关系(2)图3-8 类的继承关系(3)图3-9类继承关系(4)3.4.2.类的文档CELEMENT图元基类类对象关联继承类CObje

9、ct派生类CStart CEnd CProcess CJudgement CFlowCtrl属性+CObArray m_inElems图元前驱节点数组+CObArray m_outElems;图元后续节点数组+CRect* m_inputRect图元文字输入区+int m_inCount图元已有输入控制流个数+int m_outCount图元已有输出控制流个数+ int m_inSize图元的最大输入控制流个数+int m_outSize图元的最大输出控制流个数+ int m_ioCtrl图元输入输出的控制点的个数+CString m_wordsInElem图元显示文字+ CPoint m_p

10、x+CPoint m_py+ int m_flag标示符+ int m_emptyCount图元后续节点数组清空次数行为+CElement()构造函数+ virtual CElement()析构函数+ virtual bool Contains(CPoint pos)用以判断点pos是否在图元内+ virtual CRect CreateInputArea()创建文字编辑框+ virtual int FindControl(CPoint pos)查找控制点+ virtual void Move(int vx,int vy)图元移动+ virtual void MoveControl(int p

11、os,int vx,int vy)响应移动控制点消息+ virtual void Draw(CDC *dc)显示图元+ virtual void DrawRed(CDC* pdc)红色显示图元约束条件CSTART流程图起点图元对象关联继承类public CElement派生类属性+CElement* m_outElem后继控制流行为+CStart()构造函数+CStart(CPoint x,CPoint y)带参数的构造函数+CStart()析构函数+ void Draw(CDC *dc)显示图元+void DrawRed(CDC *dc)红色显示图元约束条件CEND流程图终点图元对象关联继承

12、类public CElement派生类属性+CElement* m_inElem前驱控制流行为+CEnd()构造函数+CEnd(CPoint x,CPoint y)带参数的构造函数+CEnd()析构函数+ void Draw(CDC *dc)显示图元+void DrawRed(CDC *dc)红色显示图元约束条件CPROCESS流程图过程图元对象关联继承类public CElement派生类属性+CElement* m_inElem前驱控制流+CElement* m_outElem后继控制流行为+CProcess()构造函数+CProcess(CPoint x,CPoint y)带参数的构造函

13、数+CProcess()析构函数+ void Draw(CDC *dc)显示图元+void DrawRed(CDC *dc)红色显示图元约束条件CJUDGEMENT流程图条件判断图元对象关联继承类public CElement派生类属性+CElement* m_inElem前驱控制流+CElement* m_outElem后继控制流行为+CJudgement()构造函数+CJudgement(CPoint x,CPoint y)带参数的构造函数+CJudgement()析构函数+ void Draw(CDC *dc)显示图元+void DrawRed(CDC *dc)红色显示图元约束条件CFL

14、OWCTRL流程图控制流图元对象关联继承类public CElement派生类属性+CElement* m_inElem前驱控制流+CElement* m_outElem后继控制流行为+CFlowCtrl()构造函数+CFlowCtrl(CPoint x,CPoint y)带参数的构造函数+CFlowCtrl()析构函数+ void Draw(CDC *dc)显示图元+void DrawRed(CDC *dc)红色显示图元约束条件CTOOL工具类对象关联继承类Public CObject派生类CCreateTool,CEditTool属性+CDiagram* m_d流程图对象+CFlowCha

15、rtView* m_pFcv视图行为+CTool()构造函数+CTool(CDiagram* d)构造函数+virtual CTool()析构函数+CDiagram* GetDiagram(void)获取流程图对象+void SetDiagram(CDiagram *d)设置流程图对象+virtual void Select(CDiagram *d)响应选取图元消息+virtual void Press(CPoint pos) =0响应鼠标左键按下消息+virtual void Move(CPoint pos)=0响应鼠标拖动消息+virtual void Release(CPoint pos

16、)=0响应鼠标左键放开消息+virtual void DoubleClick(CPoint pos)=0响应鼠标左键双击消息约束条件CCREATETOOL图元创建类对象关联继承类Public CTool派生类CStartTool,CEndTool,CProcessTool,CJudgementTool,CFlowCtrl属性+CPoint* m_pStart起点+CPoint* m_pEnd终点行为+CCreateTool()构造函数+CCreateTool(CDiagram* d)构造函数+CCreateTool()析构函数+void Select(CDiagram *d)响应选取图元消息+

17、void Press(CPoint pos)响应鼠标左键按下消息+void Move(CPoint pos)响应鼠标拖动消息+void Release(CPoint pos)响应鼠标左键放开消息+void DoubleClick(CPoint pos)响应鼠标左键双击消息约束条件CEDITTOOL图元创建类对象关联继承类Public CTool派生类属性+CPoint* m_pStart起点+CPoint* m_pEnd终点行为+CEditTool()构造函数+CEditTool(CDiagram* d)构造函数+CEditTool()析构函数+void Select(CDiagram *d)

18、响应选取图元消息+void Press(CPoint pos)响应鼠标左键按下消息+void Move(CPoint pos)响应鼠标拖动消息+void Release(CPoint pos)响应鼠标左键放开消息+void DoubleClick(CPoint pos)响应鼠标左键双击消息约束条件CSTARTTOOL流程图起点编辑类对象关联继承类Public CCreateTool派生类属性行为+CStartTool()构造函数+CStartTool(CDiagram* d)构造函数+CStartTool()析构函数约束条件CENDTOOL流程图终点编辑类对象关联继承类Public CCrea

19、teTool派生类属性行为+CEndTool()构造函数+CEndTool(CDiagram* d)构造函数+CEndTool()析构函数约束条件CPROCESSTOOL流程图过程编辑类对象关联继承类Public CCreateTool派生类属性行为+CProcessTool()构造函数+CProcessTool(CDiagram* d)构造函数+CProcessTool()析构函数约束条件CJUDGEMENTTOOL流程图条件判断框编辑类对象关联继承类Public CCreateTool派生类属性行为+CJudgementTool()构造函数+CJudgementTool(CDiagram*

20、 d)构造函数+CJudgementTool()析构函数约束条件CFLOWCTRLTOOL流程图控制流编辑类对象关联继承类Public CCreateTool派生类属性行为+CFlowCtrlTool()构造函数+CFlowCtrlTool(CDiagram* d)构造函数+CFlowCtrlTool()析构函数约束条件CDIAGRAM流程图类对象关联继承类CObject派生类属性+ CElemArray m_elems父节点+ CElemArray m_e子节点行为+ CDiagram()构造函数+ virtual CDiagram()析构函数+ void Add(CElement *e)在

21、流程图中添加图元+ CElement* Find(CPoint pos)找到在编辑区域坐标为pos的图元+ void Remove(CElement *e)从流程图中删除图元e+ int GetIndex(CElement *e)获取图元e在流程图中的索引值+ CElement* GetElem(int Index)获取索引值为index的图元+ int GetSize()获取流程图中图元的个数+ void CutOffOut(CElement *e)去除图元e的所有后继控制流+ void CutOffIn(CElement *e)去除图元呃的所有前驱控制流+ void GetOutElems

22、(CElement *e)获取e的所有后继控制流+ void GetInElems(CElement *e)互殴e的所有前驱控制流+ void RemoveEFromA(CElement* e,CObArray &coa);从数组coa中删除图元e+void RemoveCF()移除流程图中的无连接控制流约束条件CELEMARRAY图元数组类对象关联继承类public CObArray派生类属性行为+ CElemArray()构造函数+ virtual CElemArray()析构函数+ CElemArray(CElemArray&)拷贝构造函数+ void AddElem(CElement*

23、)向数组中添加元素+ void Empty()清空数组+ CElement* PopElem()返回数组尾端的元素+ CElement* GetElem(int index)获取数组中索引值为index的元素约束条件CFLOWCHARTVIEW流程图编辑视图类对象关联继承类public CView派生类属性+bool m_new标示是否新建了流程图+bool m_newAble标示是否能够新建流程图+bool m_preTraverse标示是否进行了预遍历+bool m_lbtn标示鼠标左键状态+bool m_edit;标示是否有图元正在被编辑+int m_selIndex存储被选中图元在流程

24、图中的索引+CPoint m_start起点+CPoint m_end终点+CPoint* m_control控制点+bool m_bkBrush删除创建图形残影的标志位+CDiagram* m_d流程图对象+CTool* m_pTool创建工具类指针+CTool* m_pEditTool编辑工具类指针+int m_checkCtrl控制点取值范围为08;0为未选中+int m_indexToRed遍历当前图元的索引值+int* m_indexArray索引值数组+CElemArray m_elemArray图元数组+CDiagram* m_pDgr流程图对象指针+CEdit* m_pEdit

25、文字编辑框+CElement* m_pSelElem当前选中图元对象行为+void DrawStart(CPoint start, CPoint end)绘制流程图起始点图元+void DrawEnd(CPoint start, CPoint end)绘制流程图终结点图元+void DrawProcess(CPoint start, CPoint end)绘制流程图过程图元+void DrawJudgment(CPoint start, CPoint end)绘制流程图条件判断图元+void DrawFlowCtrl(CPoint start, CPoint end)绘制流程图控制流图元+vo

26、id SetEditTool(CDiagram* d)设置编辑工具对象的编辑图形对象+void Focus(CElement* e, CPoint* pos)+void HighLight(CElement *e)高亮显示被选中的图元+int FindJudgment()取得流程图中条件判断框的个数+void GetIndexArray()获取索引数组-void PreTraverse()预遍历流程图-CElement* GetStart()获取流程图起始点-int FindStart()取得流程图中起始点的个数=afx_msg void OnStart()响应点击新建流程图起始点消息=afx

27、_msg void OnEnd()响应点击新建流程图终结点消息=afx_msg void OnProcess()响应点击新建流程图过程消息=afx_msg void OnJudgment()响应点击新建流程图条件判断框消息=afx_msg void OnFlowctrl()响应点击新建流程图控制流消息=afx_msg void OnLButtonDown(UINT nFlags, CPoint point)响应鼠标左键落下消息=afx_msg void OnLButtonUp(UINT nFlags, CPoint point)响应鼠标左键抬起消息=afx_msg void OnMouseMo

28、ve(UINT nFlags, CPoint point)响应鼠标左键拖动消息=afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)响应键盘按键按下消息=afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point)响应鼠标左键双击消息=afx_msg void OnUpdateStart(CCmdUI* pCmdUI)响应新建流程图起始点按钮更新消息=afx_msg void OnUpdateEnd(CCmdUI* pCmdUI)响应新建流程图终结点按钮更新消息=afx_ms

29、g void OnUpdateProcess(CCmdUI* pCmdUI)响应新建流程图过程按钮更新消息=afx_msg void OnUpdateJudgment(CCmdUI* pCmdUI)响应新建流程图条件判断框按钮更新消息=afx_msg void OnUpdateFlowctrl(CCmdUI* pCmdUI)响应新建流程图控制流按钮更新消息=afx_msg void OnTraverse()响应预遍历流程图消息=afx_msg void OnNext()响应遍历流程图消息=afx_msg void OnUpdateNext(CCmdUI* pCmdUI)响应便利流程图按钮更新消

30、息=afx_msg void OnStop();响应停止遍历流程图消息=afx_msg void OnUpdateStop(CCmdUI* pCmdUI)响应停止便利流程图按钮更新消息=afx_msg void OnUpdateTraverse(CCmdUI* pCmdUI)响应预遍历流程图按钮更新消息afx_msg void OnUpdateNewfc(CCmdUI* pCmdUI)响应新建流程图按钮更新消息约束条件3.5.状态转移图本流程图编辑系统的主要状态有:创建流程图图元状态、选中流程图图元状态、编辑流程图图元状态、遍历测试路径状态、演示测试路径状态。状态转移图如图10:图3-10 系

31、统状态转移图3.6.序列图系统序列图如下:图3-11创建图元图3-12编辑图元图3-13测试、显示路径4.详细代码设计4.1.本系统中主要类的定义文档4.1.1.视图类class CFlowChartView : public CView protected: / create from serialization onlyCFlowChartView();DECLARE_DYNCREATE(CFlowChartView)/ Attributespublic:CFlowChartDoc* GetDocument();/ Operationspublic:/ Overrides/ ClassWi

32、zard generated virtual function overrides/AFX_VIRTUAL(CFlowChartView)public:virtual void OnDraw(CDC* pDC); / overridden to draw this viewvirtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo

33、);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);/AFX_VIRTUAL/ Implementationpublic:int m_indexToRed;int* m_indexArray;CElemArray m_elemArray;CDiagram* m_pDgr;CEdit* m_pEdit;CElement* m_pSelElem;bool m_lbtn;/鼠标左键是否按下的标志位bool m_do;bool m_edit;int m_selIndex;int m_drawcheck;CPoint m_start;/保存

34、起点CPoint m_end;/保存终点CPoint* m_control;bool m_bkBrush;/删除创建图形残影的标志位CDiagram* m_d;CTool* m_pTool; /创建工具类指针CTool* m_pEditTool;/编辑工具类指针int m_checkCtrl; /控制点取值范围为08;0为未选中void GetIndexArray();int FindJudgment();void Focus(CElement* e, CPoint* pos);void DrawFlowCtrl(CPoint start, CPoint end);void DrawJudgm

35、ent(CPoint start, CPoint end);void DrawProcess(CPoint start, CPoint end);void DrawEnd(CPoint start, CPoint end);void DrawStart(CPoint start, CPoint end);void SetEditTool(CDiagram* d);void HighLight(CElement *e);virtual CFlowChartView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(

36、CDumpContext& dc) const;#endifprotected:/ Generated message map functionsprotected:/AFX_MSG(CFlowChartView)afx_msg void OnStart();afx_msg void OnEnd();afx_msg void OnProcess();afx_msg void OnJudgment();afx_msg void OnFlowctrl();afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnLBu

37、ttonUp(UINT nFlags, CPoint point);afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);afx_msg void OnNewfc();afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);afx_msg void OnUpdateStart(CCmdUI* pCmdUI);afx_msg void OnUpdateEnd(CCmdU

38、I* pCmdUI);afx_msg void OnUpdateProcess(CCmdUI* pCmdUI);afx_msg void OnUpdateJudgment(CCmdUI* pCmdUI);afx_msg void OnUpdateFlowctrl(CCmdUI* pCmdUI);afx_msg void OnTraverse();afx_msg void OnNext();afx_msg void OnUpdateNext(CCmdUI* pCmdUI);afx_msg void OnStop();afx_msg void OnUpdateStop(CCmdUI* pCmdUI

39、);afx_msg void OnUpdateTraverse(CCmdUI* pCmdUI);afx_msg void OnUpdateNewfc(CCmdUI* pCmdUI);/AFX_MSGDECLARE_MESSAGE_MAP()private:bool m_new;bool m_newAble;bool m_preTraverse;void PreTraverse();CElement* GetStart();int FindStart();4.1.2.图元基类class CElement : public CObjectpublic:int m_emptyCount;int m_

40、flag;CPoint m_px;CPoint m_py;CString m_wordsInElem;int m_ioCtrl;/输入输出控制点个数int m_inSize;/可以输入的控制过程个数int m_outSize;/可以输出的控制过程个数int m_inCount;/已输入控制过程个数int m_outCount;/已输出控制过程个数CRect* m_inputRect;/输入文字区域CObArray m_inElems;CObArray m_outElems;CElement();virtual CElement();virtual bool Contains(CPoint po

41、s);/判断点pos是否在图元中virtual CRect CreateInputArea();virtual int FindControl(CPoint pos);/响应查找控制点消息virtual void Move(int vx,int vy);/响应图元移动控制点virtual void MoveControl(int pos,int vx,int vy);/响应移动控制点消息virtual void Draw(CDC *dc);/显示控制流图元virtual void DrawRed(CDC* pdc);/红色显示控制流图元;4.1.3.工具类class CTool public:

42、CDiagram* m_d;CFlowChartView* m_pFcv;CTool(CDiagram* d);CTool();virtual CTool();void SetDiagramEditor(CDiagramEditor* dlg);CDiagram* GetDiagram(void);void SetDiagram(CDiagram *d);virtual void Select(CDiagram *d);virtual void Press(CPoint pos) =0;virtual void Move(CPoint pos)=0;virtual void Release(CPoint pos)=0;virtual void DoubleClick(CPoint pos)=0;4.1.4.流程图创建工具类class CCreateTool:public CToolpublic:CPoint* m_pStart;CPoint* m_pEnd;CCreateTool();virtual CCreateTool();void Select(CDiagram *d);void Release(CPoint pos);void Move(CPoint pos);void Pres

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号