时间:2024-05-04
邹 珺
(苏州农业职业技术学院,江苏 苏州 215008)
zouj@szai.edu.cn
目前市面上有很多功能强大的Project软件可以用来进行管理项目,但是这类软件由于通用性较强,虽然提供了很多功能,但没有源代码,对于单纯进行任务管理来说,培训与授权的费用相对较高,不便于企业后期项目复杂时进行二次开发。因此,需要一套软件系统来管理任务,具备基本的任务管理功能,能新增和编辑任务,确定任务的完成时间,指定任务优先级,将任务分配到一个或多个资源,提供图形化的显示功能。大部分用户可以立即上手进行任务管理,企业在系统维护方面能减少一定的人力和物力,进而完善任务的信息化过程,不仅提升了项目工作人员的工作积极性,也大大提升了工作效率,便于企业整合内部其他管理系统。
本系统包含任务信息的编辑、修改功能,具有图形化的任务优先级选择、任务分类选择,能够在甘特图上显示任务信息,对任务涉及的资源与任务分类进行管理。系统结构如图1所示。
图1 系统结构图Fig.1 System structure diagram
开发任务管理系统需要的软件环境如下:
(1)Visual Studio 2010集成化开发环境,使用微软C#3.5以上版本的语言作为开发语言,本系统使用C# 4.0作为开发语言。
(2).NET Framework 3.5或.NET Framework 4.0平台。在安装微软公司的Visual Studio开发环境时,会自动安装相应的.NET Framework。比如Visual Studio 2008将安装.NET Framework 3.5,Visual Studio 2010将安装.NET Framework 4.0。
首次启动任务管理系统时,会显示如图2所示的主界面。该界面包含菜单栏、工具栏、任务搜索栏、任务列表和当前任务详细信息。
图2 任务管理系统主界面Fig.2 The main interface of the task management system
任务列表显示了当前要完成的任务清单,选中一个任务,将在任务详细信息窗口中显示任务的具体执行信息。用户可以在任务搜索栏中按特定的条件过滤任务,或者单击工具栏上的“查看所有任务”按钮显示所有任务信息。
当用户单击工具栏上的“任务甘特图”按钮后,将在窗口上显示任务的甘特图视图,如图3所示。
图3 任务甘特图视图Fig.3 Gantt chart view of tasks
甘特图提供了直观的任务完成进度的图表表示形式。通过使用甘特图,任务执行人员可以查看当前任务完成的进度、尚需要的时间等信息;还可以直接双击某个任务,将弹出编辑任务窗口,在该窗口中可以看到任务的详细信息,并且可以改变任务的设置。任务编辑窗口如图4所示。
图4 添加/编辑任务窗口Fig.4 Add/edit task window
工具栏或菜单栏的“资源列表”按钮提供了资源的列表显示。资源是指任务要分配到的目标人员,任务涉及的人员提前添加到系统中。在创建一个具体的任务时,资源信息被显示为复选框列表,允许用户选择资源。资源列表如图5所示。
图5 资源列表窗口Fig.5 Resource list window
用户界面直接与用户交互,用户对一个软件的初始印象通常与用户界面设计有很大关系,有时用户界面能直接决定一个软件产品的成败。任务管理系统使用标准的Windows Forms技术,采用经典的MDI窗体风格,并且为了实现界面的可重用性,将一些常用的界面封装为用户控件,提高了开发的效率。
主窗口是一个标准的MDI容器窗口,窗口名称是TaskManagerMainForm,所有的子窗口都在这个容器中显示。主窗口的IsMdiContainer属性设置为True,在主窗口中放置一个MenuStrip控件用来显示下拉菜单,以及一个ToolStrip控件用来显示工具栏。用户界面设计如图6所示。
图6 系统主界面设计Fig.6 The main interface design of the system
主界面显示时,任务管理窗口也会同时打开,为了避免代码冗余,可以复用主界面的窗口打开代码,定义一个OpenMDIChildForm()方法。主界面的Shown事件在主界面显示时已加载,该事件通过调用OpenMDIChildForm()方法来实现任务管理窗口的功能。Shown事件处理及相关的OpenMDIChildForm()方法的实现代码如下:
任务管理窗口提供了当前系统中所有任务的详细信息,实现了两栏式的布局结构,位于屏幕左边的是任务列表,由DataGridView控件构成;右边是TaskViewer用户控件,可以显示任务详细信息;顶部的工具栏主要是ComboBox控件,根据条件进行过滤,如图7所示。
图7 任务管理窗口Fig.7 Task management window
当任务管理窗口打开时,会触发Shown事件,事件处理代码实现数据加载,同时调用BindDropDowns()方法向DropDownList控件中插入数据,使用LoadTaskList()方法向DataGridView和TaskViewer控件中插入需要显示的数据。BindDropDowns()方法的实现代码如下:
FormatDataGridRow()方法用来格式化DataGridView的行。该方法可以使不同的任务显示自己独有的特效,便于用户识别,其实现代码如下:
LoadSelectedTaskDetail()方法使用Task对象中的属性来插入TaskViewer用户控件中,TaskViewer控件接收一个Task对象来填充自身。当选中第一行时,LoadSelectedTaskDetail()方法将从DataGridViewRow的DataBoundItem中寻找Task对象,传递给在用户控件中定义的SetTaskDetail。该方法的定义代码如下:
为了使用户拥有良好的使用体验,任务甘特图窗口提供了以时间为刻度的甘特图表示方式。使用自定义的GanttChart控件,该控件从DataGridView网格控件中派生。其实现的技巧在于将DataGridView中的单元格呈现样式根据任务的时间跨度进行变更,使用户看到类似甘特图的效果。
为了整合甘特图表与Task,在示例中创建了一个用户控件GanttViewer。该用户控件由一个DataGridView与甘特图表控件GanttChart组成,在控件内部通过加载Task任务列表,交给甘特图控件显示甘特图。在TaskGanttChartForm窗口的Load事件处理代码中,同样为窗口上方的搜索下拉列表框控件填充选择值,以便进行过滤,然后使用自定义的LoadTaskList()方法根据特定的选择条件加载任务列表。其实现代码如下:
本文使用Windows Forms实现了任务管理系统。用户控件技术在.NET Web应用程序中的使用极为广泛,使用用户控件封装一些需要重复使用的模块,将用户界面模块化,大大提升了维护效率。在任务管理系统中,将甘特图查看、任务详细信息查看封装为用户控件,为系统维护及界面的变更提供了便利。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!