这里我为了方便直接把当时的报告粘贴过来了,所以序号标题啥的可能存在问题,还请不要在意~
< C语言集成开发环境 TupIDE>
系统设计文档
版本:<3.0>
目录
《系统设计文档》用于说明待开发软件TupIDE的各个层次中的每个软件对象(包括每个模块和程序)的设计考虑,以向系统实现(编码和测试)阶段提供关于程序系统实现方式的详细描述,从而成为后期开发程序、编写代码的基础。
项目的委托方及开发方所有人员。
C语言是一种被广泛使用的编程语言,它具有高效性和可移植性,被广泛用于开发各种应用程序和系统软件。待开发的C语言集成开发环境旨在为开发人员提供一个简洁高效的开发环境,帮助开发人员编写、运行和调试C语言代码,提高开发效率,降低错误率,为开发人员提供友好的编程体验。
- 支持键盘/鼠标操作,必要的菜单操作。
- 建立文件,保存/打开/另存/关闭。
- 对字符/串的插入/修改/删除,查找/替换。
- 对文本块的复制、粘贴、剪切。
- 能够进行编译、链接、反馈编译结果。
- 对通过编译的程序可投入运行并给出执行结果。
- 支持单文件编辑,文本长度不超过2000行
- 装入/保存2000行源程序时间小于3秒。
- 基本操作(插入/删除/翻页/查找等)响应无明显延迟。
- 全文自动替换响应时间小于3秒。
图3-1
图4-1
图4-2
编译器系统和用户角色之间的交互如图4-2所示。主要的对象有编译器、编辑器和调试器,用户可以执行文件编辑操作进行项目文件的新建、保存、另存为和删除,通过代码编辑可以进行代码编写、查找替换、调试等操作,然后选择保存并编译运行。
图4-3
如图4-3所示,系统在接受了用户选择提交编译的代码后进行代码块的语法正确性检查处理,若存在问题则停止编译进程并将报错信息反馈给用户,若无语法错误或其他问题则提交至编译器进行编译,编译后生成可执行文件。
图4-4
编辑器、编译器等对象的状态转换如图4-4所示。编辑器状态包括了空闲、编辑中、文件管理等状态,用户可以通过文本编辑触发状态转换。编译器状态包括了编译状态、报错状态、运行状态,用户可以通过保存并提交代码编译来触发编译器的状态转换。
- 剪切:获取主窗口的文本编辑器中的选中文本,将选中文本移入剪贴板。
- 复制:获取主窗口的文本编辑器中的选中文本,将选中文本拷贝一份到剪贴板。
- 粘贴:将剪贴板中的文本输入主窗口的文本编辑器。
- 撤销:根据操作记录,回退上一次操作。
- 恢复:根据操作记录,恢复到上一次撤销之前的状态。
- 查找:获取查找替换窗口中输入的查找文本,根据查找文本在主窗口的文本编辑器中按顺序查找匹配内容。
- 替换:获取查找替换窗口中输入的查找文本和替换文本,根据查找文本和替换文本在主窗口的文本编辑器中按顺序查找匹配内容并替换。
- 关键字识别:根据提前设置的关键字集合,在主窗口的文本编辑器中识别关键字并调整关键字的字体、颜色。
- 括号补全:根据提前设置的括号集合,在主窗口的文本编辑器中识别左括号,自动输入匹配的右括号并将光标移至括号中间。
- 新建文件:弹出“新建文件”窗口以获取用户输入,根据用户选择的目录和输入的文件名创建文件并打开。
- 打开文件:弹出“打开文件”窗口以获取用户输入,根据用户选择的文件将文件内容导入到主窗口的文本编辑器。
- 保存:将主窗口的文本编辑器的内容输出到来源文件,覆盖原内容。
- 另存为新文件:弹出“保存文件”窗口以获取用户输入,根据用户选择的目录和输入的文件名创建建文件并将主窗口的文本编辑器的内容输出到该文件。
- 编译:根据文件路径,打开命令提示符并使用gcc编译文件。
- 运行:根据文件路径,寻找对应的可执行文件,打开命令提示符并运行该可执行文件。
- 调试:根据文件路径,寻找对应的可执行文件,打开命令提示符并使用gdb进行调试。
该模块负责创建和管理文本编辑区域,允许用户编写代码。
创建一个自定义的文本编辑区域类TextEditArea,继承自Qt的QPlainTextEdit类,该类包括文件路径、文本内容和修改标志等属性。使用该类来创建和管理文本编辑区域,监听文本更改事件以更新文本更改标志。
在进行剪切、复制、粘贴、撤销、恢复这些基本操作时,直接调用继承自QPlainTextEdit类的函数。
在主窗口单击查找替换选项后,利用connect()函数来连接查找替换窗口发出的信号以及完成查找替换动作的函数,并且调用查找替换窗口。在查找替换窗口,可选择是否区分大小写,默认不区分。
图6-1
点击查找下一个,先判断查找文本编辑框是否为空,为空则抛出一个警告,反之将文本编辑框中的内容传递给查找函数。查找函数在文本编辑界面调用find()函数进行查找,如果需要区分大小写则向find()函数额外传递一个参数来区分。因为该函数是在光标所在位置之后开始查找,第一遍查找可能会出现查找不到结果的情况,因此进行判断是否需要重新从开头查找一遍,若有则显示查找成功,反之则显示无匹配结果。
点击查找全部,同样是调用find()函数,不同之处在于先将光标移动到开头,增加一个循环来查找全文匹配的字符串直至光标到文本末端。
图6-2
点击替换,先判断查找替换文本编辑框是否为空,为空则抛出一个警告,反之将文本编辑框中的内容传递给替换函数。替换函数利用find()函数先找到匹配字符串所在 位置,后将该文本删除,插入要替换的文本。
替换全部同样是利用循环来不断调用replace()函数达到替换全文的效果。
该模块允许用户新建、打开、保存和另存为文件。
图6-3
在新建文件时,显示文件保存对话框,允许用户选择文件保存路径和文件名。如果用户成功选择了文件路径,创建一个新的TextEditArea对象,将文件路径传递给它,并返回该对象。如果用户取消了文件选择,返回空指针。
图6-4
在打开文件时,显示文件打开对话框,允许用户选择要打开的文件。如果用户成功选择了文件,尝试以只读文本模式打开该文件,并读取文件内容。如果文件打开成功,创建一个新的TextEditArea对象,将文件路径和文件内容传递给它,并返回该对象。如果文件打开失败,记录错误消息并返回空指针。如果用户取消了文件选择,返回空指针。
图6-5
在保存文件时,接受一个TextEditArea对象作为输入参数,表示要保存的文本编辑框。检查输入是否有效,如果文本编辑框为空或文件路径为空,则返回保存失败。如果文件路径为空,弹出文件保存对话框,允许用户选择文件保存路径和文件名。使用文件路径打开文件以进行写入操作,并将文本编辑框的内容写入文件。如果文件保存成功,返回true,否则返回false。
图6-6
在另存文件时,接受一个TextEditArea对象作为输入参数,表示要另存为的文本编辑框。检查输入是否有效,如果文本编辑框为空,则返回另存为失败。弹出文件保存对话框,允许用户选择文件保存路径和文件名。如果用户成功选择了文件路径,更新文本编辑框的文件路径,并使用文件路径打开文件以进行写入操作,将文本编辑框的内容写入文件。如果文件保存成功,返回true,否则返回false。
该模块负责编译和运行用户的代码,以及显示编译和运行的输出。
图6-7
用户选择编译时,IDE调用编译器,通过compile函数,传递文件路径,然后执行编译命令。如果编译成功,返回编译成功消息;否则,返回编译错误消息。
用户选择运行时,IDE调用编译器,通过run函数,传递可执行文件路径,然后执行运行命令。获取运行结果和可能的错误信息,然后返回给用户。
用户选择编译运行时,将直接调用compile和run两个函数,从而直接编译并输出运行结果,如果编译失败,则会终止进程并返回编译报错信息。