**
需要完整项目源代码的同志,可以通过QQ邮箱与我联系:1308269670@qq.com
**
项目总结
一、 设计思路:
界面设计如下:
主要的设计思路就是利用按钮,在用户点击后弹出相关功能窗口。考虑到程序所需控件较多,这个程序的开发我们小组选择使用Qt框架进行开发。首先创建好所需要的设计师界面类并在工程目录下面导入所需使用的图片资源,完整工程目录如下图所示:
(注:start-程序的主界面;widget-程序的进程调度窗口;pro-设计的进程的类;member-制作人员界面;help-帮助界面;display-显示文本信息)
主要使用到的控件有:QWidget、QLabel、QPushButton、QToolButton、QLineEdit、QGroupBox、QComboBox、QTextBrowser。在Qt的设计界面按设计要求布置好以上控件,以进程调度窗口为例,如下图所示:
在转到编辑界面,使用代码完成程序的各种功能,主要使用到的是信号和槽的机制以及结合Lamda表达式以及各个控件类中的相关函数,完成整个程序的编写。相关重要源代码展示如下:
主界面:
(注:其他功能按钮打开窗口的代码编写与“打开进程调度窗口”相似,故不在此展示)
进程调度窗口:
文档显示界面:
制作人员界面:
定义进程类:
本程序主要用于模拟进程调度中的先来先服务算法和短作业优先算法,我们利用到QList容器进行模拟就绪队列和阻塞队列,利用函数front()、pop_front()、push_back(),模拟进程的出队列和入队列。对于FCFS,我们采取qSort对就绪队列按照到达时间进行排序,同理也使用相同手法对SJF按照要求运行时间进行排序。在进程调度界面我们使用到QComboBox为用户提供算法选项,用户可根据需求选择使用的算法。
利用Qt中的Relase重新编译整个程序,后续利用Qt自带的控制台,使用windeployqt.exe对Relase中生成的.exe文件进行打包,最后使用NSIS和HM NIS Edit,完成整个程序安装向导。
二、 心得体会
设计心得:本程序主要使用Qt进行开发,在Qt在整个UI设计上提供了极大的遍历,通过拖拽、坐标位置设置、设置控件大小,就可以快速的搭建出所需程序的相关界面。Qt中设置控件相关功能最常用的便是信号和槽的机制,实现控件与控件之间的联系。同时在开发程序的过程中,也深刻体会到了英语的重要性,Qt控件、函数种类繁多,难免遇到不熟悉或者不会的,这个时候查阅Qt帮助文档,便是最佳的解决途径,但要可以读懂英语。整个程序的开发过程中,遇到了各种各样的问题,在小组同学的帮助下,完成了对大部分BUG的修正,但任然存在着未被发现的各种问题,后续我们小组也会继续进行排查并修正。