1、软件项目管理系统摘 要软件行业调查统计表明,软件开发行业缺乏软件开发管理工具,开发一套软件项目管理系统,可以方便交流、共享技术、高效完成任务。本系统是采用开发语言、Ajax jquery技术和SQL SERVER 2008 数据库技术开发的一套B/S模式的软件项目管理系统。系统主要包括任务管理、信息管理、项目管理、客户信息管理、项目开发人员管理等模块。项目系统投入运行后,可以减轻项目经理的工作负担,方便文件共享、团队交流、任务审核等。关键词:项目管理;B/S;ASP.NET;Ajax;SQL SERVER AbstractSoftware industry survey showed that
2、 software development industry is short of software development management tools, developing a software project management system, which we can easily communicate, share technology, and efficient completion of tasks.This system is used development language, Ajax jquery technology and SQL SERVER 2008
3、 database technology developed by a B / S model of software project management system. The system includes task management, information management, project management, customer information management, project management module developers.Project system put into functioning, which can reduce the burd
4、en on project managers to facilitate file sharing, team communication, task audit.Keywords:Project management; B/S; ASP.NET; Ajax; SQL SERVER目 录第1章 绪论11.1 系统开发背景11.2 系统研究目的和意义11.3 可行性分析1第2章 系统需求分析32.1 用户功能需求分析32.2 系统性能要求32.3 业务流程分析4第3章 系统总体设计53.1 系统功能模块分析53.1.1 任务管理53.1.2 信息管理53.1.3 项目管理53.1.4 客户管理6
5、3.1.5 用户管理63.1.6 我的任务63.2 实体联系图63.3 系统总体设计103.4 系统架构设计12第4章 系统详细设计144.1 开发工具简介144.2 数据库设计144.3 用户界面设计174.3.2 项目管理主界面184.3.4 消息管理界面254.3.5 项目管理界面264.3.6 客户界面284.3.7 用户信息管理界面294.3.8 我的任务管理界面30第5章 软件测试和调试335.1 调试修改bug335.2 黑盒测试法35第6章 工作总结和展望386.1 工作总结386.2 工作展望38参考文献40致 谢41III第1章 绪论1.1 系统开发背景 随着IT行业技术水
6、平的快速发展,不同行业已经有不少企业把经济发展的重心转移到了网络上,这样导致部分企业通过网络抢占非本地的商机,以至于各企业对网络媒体求贤若渴,因此,软件开发行业在迅速的发展,以至于致力于软件行业的工作人员工作繁重。另一方面,软件开发行业中,软件生命周期比较短,软件技术更新比较迅速,因此这也使得软件开发人员的工作更加繁重。从我从事软件开发的工作的一年中,我从中发现,项目开发人员,在交流方面,需要及时的交流才能高效的少走弯路的完成每天的开发任务;在技术以及文档方面,也需要有一个统一的共享文件管理工具;在项目开发分配的任务中,项目经理需要根据项目进度去给每一个开发人员分配一定的任务,并且去查看每一个
7、开发人员的任务完成情况。因此,软件开发人员需要一个能够及时交流以及查看共享文件的和管理项目开发进度的软件。1.2 系统研究目的和意义基于我国在软件开发管理方面的现状,经过多方面的调查,参阅现有的一些管理系统,开发此项目管理系统,其主要目的是满足软件开发组及领导对软件项目及开发人员的管理的需求,并减轻软件项目经理的工作负担。 该系统最基本的功能就是项目经理可以给项目组开发人员分配任务,查看项目组成员任务的完成的情况,管理项目组成员的交流信息,管理项目计划以及项目信息和项目技术文件,管理项目客户基本信息,管理项目组成员信息,查看个人任务。其他角色的能够通过该系统和项目组员交流、上传下载项目共享文件
8、,以及查看分配个人的任务。项目中的主要功能是项目的组成员的管理以及项目任务以及项目的基本信息的管理。项目的这几大模块都各有联系,都是不可缺少的模块。1.3 可行性分析该系统采用Microsoft Visual Studio2010软件作为工具进行系统开发。数据库采用微软SQL Server 2008。这些工具也都是.net开发人员比较熟知的开发工具,所以在应用性以及普遍性很占优势。这对于系统的后期维护有了极大的方便。此系统在任务管理、项目人员交流、项目基本信息管理等方面简单易懂,方便用户使用,并且系统中有许多地方的功能是比较人性的,比如编辑任务的时候,输入任务执行人部分名字的时候,系统可以模糊
9、匹配,方便用户输入。并且系统中任务管理方便,方便项目组成员之间交流,主要用于项目组开发人员的使用,便于开发人员之间交流,方便项目经理管理项目组成员,提高开发人员的开发效率等。因此该系统具有比较人性的可行性。 43项目管理系统第2章 系统需求分析2.1 用户功能需求分析设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求,本人通过对洛阳、新乡等站点进行详细的实地考察以及利用网络等多种渠道,了解了我国在铁路信息查询方面的一些现状以及旅客、铁路部门工作人员对智能铁路查询系统的各种要求,调研结果如下:首先,需要根据软件行业中开发人员的需要以及工作的流程去了解一个项目组中
10、,有哪些开发角色,以及在开发不同的项目的时候,有哪些共同点等,从个人从事项目开发的经验来看,一个项目组中分别包含软件开发人员、UI(前端)开发人员,测试开发人员以及一个项目组的负责人项目经理,他们分工明确,相互协调工作,完成一个完整的软件项目的开发流程,在开发流程的过程中,一些过程文档需要统一整理。根据项目组开发人员的不同角色可以分为以下需求功能。开发人员:包含软件开发人员、前端开发人员、测试开发人员,他们在项目的流程的过程中,不懂的可以再项目中相互讨论,发表不同的意见,以促进他们对项目的进一步的认识与理解;同时,在开发的流程中,一些过程文档,大家可以拿来共享,以方便参与的项目人员查看;开发人
11、员根据项目管理系统中分配给自己的任务来了解当天自己的任务,并进行完成等。项目经理:项目经理根据项目组成员的能力来给每一个项目人员分配不同的任务,并加以管理。同时也可以参与项目组成员的交流,并实时了解项目组成员每天遇到的问题。其次,项目经理对每个项目进行管理,并控制项目完成的进度。项目经理也可以管理项目组成员。系统基于成熟的技术开发,能够高效的帮助软件行业开发人员完成开发工作。2.2 系统性能要求1.安全性该系统数据编辑存储都采取了参数化安全处理,不会受到js等脚本的攻击,从而保证了数据的安全性以及数据存储的完整性。2.高效性使用此项目管理系统既可以方便项目组开发人员提高开发效率,又可以大大减轻
12、项目经理的负担,并可以加快项目的进度。 3.便捷性本系统的界面友好,操作方便,能够达到所见即所得的效果,方便用户的使用。2.3 业务流程分析依据系统的需求分析,得到系统的流程图如图2-1所示:图2-1 系统流程图第3章 系统总体设计3.1 系统功能模块分析项目管理系统包含任务管理模块、信息管理模块、项目管理模块、客户管理模块、用户管理模块、我的任务模块等。3.1.1 任务管理任务管理包含创建任务模块、任务列表模块。此模块仅有项目经理有权限。(1)创建任务模块的特色是:执行人输入框是利了autocomplete自动匹配技术(2)任务列表模块包含任务创建时间段和任务标题模糊查询、加上任务编辑、查看
13、和任务批量删除等功能,其中特色有三点:一是时间段输入框是利用了一个JS插件日历弹出框的特效。二是利用repeater控件的属性,根据绑定数据内容来改变表格的样式。三是可以实现批量删除功能。(3)任务执行人提交任务之后,项目经理可以根据任务来审核通过,或者驳回任务。3.1.2 信息管理消息管理模块包含四大模块:发送信息模块、收件箱模块、发件箱模块,消息信息列表模块,其中消息列表模块仅能项目经理能够查看。(1)发送消息模块:此模块也应用了autocomplete智能匹配技术。(2)收件箱消息模块包括:收件箱信息按接收时间查询模块,批量删除模块,信息查看模块。本模块特色为:收件箱未查看的信息状态样式
14、和已经查看的信息状态样式不一样,而且,但点击查看未读信息的时候,则未读信息的状态会变成已读状态。(3)发件箱消息模块:包括批量删除、查询、查看信息功能模块。(4)消息列表模块,包含所有成员的信息汇总模块,只有项目经理有权限查看,本模块包含按时间段查询、批量删除、查看功能。(5)当有信息的时候,该级菜单会有信息提示信息。3.1.3 项目管理项目管理模块:包含项目基本信息查看、项目文件上传信息查看两个功能模块。(1)其中项目基本信息查看模块包括按时间段、项目名字段查询功能和批量删除功能和项目基本信息添加、编辑功能。(2)项目上传信息查看模块:包含文件信息模糊查询,批量删除,文件上传,下载。文件上传
15、界面:包含文件上传,数据绑定功能。3.1.4 客户管理包含按公司名称查询、客户批量删除、客户添加,客户编辑,客户信息查看功能。(1)本模块特色是点击查看信息,有弹出层特效3.1.5 用户管理用户信息管理包含用户信息查看和个人信息修改。(1)用户信息查看包含关键字模糊查询、用户信息编辑,用户信息添加、用户信息批量删除。其中编辑,删除,添加只有项目经理有权限。(2)用户编辑页面是数据绑定功能实现的。3.1.6 我的任务我的任务模块,包含个人所有的任务,功能模块包含查询模块、编辑模块、查看模块和批量删除模块。自己只能修改自己的任务状态,比如是否完成,并且,未完成状态和完成状态的样式不一样,这样可以作
16、为提醒。3.2 实体联系图通过系统的需求分析,定义系统实体的属性:(1)系统用户表(用户编号,姓名,用户名,密码,角色,电话,邮箱,性别,生日,备注)(2)消息表(消息编号,消息主题,消息内容,优先级,发送人,收件人,发送时间,状态)(3)任务表(任务编号,任务主题,执行时间,项目编号、执行人编号,任务时间,截止时间,优先级,任务下达人,创建时间,备注,状态)(4)项目表(项目编号,项目名字,客户名,项目经理,项目开始时间,项目结束时间,项目成本,预估项目成本,优先级,状态,项目组人数,备注,创建时间)(5)项目文件表(项目文件编号,文件主题,上传者,上传时间,项目编号,类型,文件名)(6)客
17、户(公司编号,公司名,联系电话,联系人,公司简介,公司地址,添加时间)1、系统用户信息实体属性图如图3-1所示:图3-1 系统用户实体属性图2、消息信息实体属性图如图3-2所示:图3-2 消息实体属性图3、任务实体属性图如图3-3所示:图3-3 消息实体属性图4、项目实体属性图如图3-4所示:图3-4 项目实体属性图5、项目文件实体属性图如图3-5所示:图3-5 项目文件实体属性图6、项目文件实体属性图如图3-6所示:图3-6 客户实体属性图实体之间的E-R图如图3-7所示:图3-7 总体实体联系图3.3 系统总体设计系统设置了四种身份的登录,包括项目经理、软件开发人员、UI开发人员,测试人员
18、。其中项目经理可以操作系统中所有的功能模块,其他角色的人员具有相应的权限。如图38就是系统的总体结构框图:图3-8 系统总体结构框图3.4 系统架构设计本系统采用的是三层架构,三层架构主要包括表示层、业务逻辑层、数据访问层,如图3-9所示:图3-9 系统架构图(1)数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务(2)业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。(3)表示层:主要表
19、示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。第4章 系统详细设计4.1 开发工具简介Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了NET Framework4.0、Microsoft Visual Studio 2010 CTP( Community
20、 Technology Preview-CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持IBMDB2和Oracle数据库。不过现在软件开发技术更新的比较快,以至于现在Visual Studio 2010的功能还没有完全适应,便已经出现了Visual Studio 2012 、Visual Studio 2013 、Visual Studio 2015等版本;在一个组织中,应用程序生命周期管理(ALM)将牵涉到多个角色。但是在传统意义上,这一过程中的每个角色并不是完全平等的。Visual Studio Team System 2010
21、将坚持打造一个功能平等、共同分担的平台以用于组织内的应用程序生命周期管理过程。每年,业界内的新技术和新趋势层出不穷。通过Visual Studio 2010,微软将为开发者提供合适的工具和框架,以支持软件开发中最新的架构,开发和部署。从Visual Studio的第一个版本开始,微软就将提高开发人员的工作效率和灵活性作为自己的目标。Visual Studio 2010将继续关注并且显著地改进开发者最核心的开发体验。微软将继续投资于市场领先的操作系统,工具软件和服务器平台,为客户创造更高的价值。使用Visual Studio 2010,将可以在新一代的应用平台上,为你的客户创造令人惊奇的解决方案
22、。SQL Server 2008 在Microsoft的数据平台上发布,可以组织管理任何数据。可以将结构化、半结构化和非结构化文档的数据直接存储到数据库中。可以对数据进行查询、搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,它都可以控制数据而不用管数据存储在哪里。SQL Server 2008 允许使用 Microsoft .NET 和Visual Studio开发的自定义应用程序中使用数据,在面向服务的架构(SOA)和通过 Microsoft BizTalk Server 进行的业务流程中使用数据。信息工作人员可以通过日常使用的工
23、具直接访问数据。SQL Server 2008降低了管理系统、.NET架构和Visual Studio® Team System的时间和成本,使得开发人员可以开发强大的下一代数据库应用程序。4.2 数据库设计数据库在网站设计中占有非常重要的地位,数据库设计的好坏将直接对网站的运行的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。良好的数据库设计对于一个高性能的应用程序非常重要,就像一个空气动力装置对于一辆赛车的重要性一样。如果一辆汽车没有平滑的曲线,将会产生阻力从而变慢。关系没有经过优化,数据库无法尽可能高效地运行。应该把数据库的关系和性能
24、看作是规范化的一部分。本系统主要用到了以下6张表:1. 系统用户信息如图4-1所示:图4-1系统用户表2. 消息信息如图4-2所示:图4-2 消息表3. 项目信息4-3所示:图4-3 项目表4. 项目文件信息如图4-4所示:图4-4 项目文件表5. 任务信息如图4-5所示:图4-5 任务表6. 客户信息如图4-6所示:图4-6 客户列车6. 数据库表关系图如图4-7所示:图4-7 数据库表关系图4.3 用户界面设计本系统采用自己搭建的三层架构开发的项目,这样开发项目比较直观,能够减少许多不必要的代码量。下面我来介绍各部分的功能。4.3.1 登录界面用户可以通过用户名和密码进行登录,登录时系统会
25、根据用户是否记住密码来实现是否记住密码功能。其中记住密码功能是根据cookie技术实现是否记住密码功能的。登录界面如图4-8所示:图4-8 登录界面4.3.2 项目管理主界面如图4-9所示,当进入主页的时候,便会看到系统所有的功能模块,同时可以看到系统内部的交流信息的新消息提示。其中信息提示采用了ajax技术,以防止菜单刷新折叠:关键代码:function countMessage() $.post(countMsg.ashx, function (data) if (data.Success) if (data.Value 0) $(#messageNews1).addClass(news)
26、; $(#messageNews2).addClass(news); $(#messageNews11).html(消息管理 + data.Value);$(#messageNews22).html(收件信息查看 + data.Value); else $(#messageNews1).removeClass(news); $(#messageNews2).removeClass(news); $(#messageNews11).html(消息管理); $(#messageNews22).html(收件信息查看); , json); 图4-9 项目管理主界面4.3.3
27、任务管理界面项目经理根据项目组成员个人能力来分发任务,并对任务进行管理。项目经理可以对项目组成员分发任务,审核任务。其中审核任务采用了ajax局部刷新技术,与iframe父子页面JS方法变量相互调用的技术,关键代码如下:function pass() var checkremark = $(#txtcheckText).val(); var id = GetQueryString(id); $.post(pass.ashx, checkId: id, checkremark: checkremark, flag: 1 , function (data) if (data.Success) pa
28、rent.layer.msg(审核通过成功, icon: 9 ); setTimeout(function () parent.refresh(); , 2000); else layer.msg(审核通过失败, icon: 5 ); , json); function check() var checkremark = $(#txtcheckText).val(); var id = GetQueryString(id); $.post(pass.ashx, checkId: id, checkremark: checkremark, flag: 0 , function (data) if
29、 (data.Success) parent.layer.msg(驳回成功, icon: 9 ); setTimeout(function () parent.refresh(); , 2000); else layer.msg(驳回失败, icon: 5 ); , json); 图4-10 任务信息查看界面1.任务查询此页面方便项目经理查找并管理自己下达的任务信息,用于项目经理监督审核项目组成员的任务完成情况。图4-11 任务查询界面2. 查看任务信息图4-12 查看任务信息界面3. 创建任务本页面特色是执行人输入框采用了autoComplete技术(智能匹配),也是一种ajax技术,能够方
30、便用户快速查找项目组成员。图4-13 创建任务界面本系统统一采用三层架构实现的代码,所以,我以此添加任务功能来介绍一下功能代码: / / 点击保存按钮保存数据 / / / protected void btnSave_OnServerClick(object sender, EventArgs e) Project_Model.Model_Task model = new Project_Model.Model_Task();/声明实体类对象/实体类赋值 model.tastExcutorName = txtTrueName.Value.Trim(); model.TaskSendId = C
31、onvert.ToInt32(SessionUserId.ToString(); model.priority = selPriority.Value; model.ProjectId = Convert.ToInt32(selProgectName.Value); if (Convert.ToDateTime(txtEndTime.Value)Convert.ToDateTime(txtStarTime.Value) ClientScript.RegisterStartupScript(GetType(), alertError2, layer.alert(计划开始日期不能大于计划结束日期!
32、,icon:5);, true); return; model.TaskEndTime = Convert.ToDateTime(txtEndTime.Value).ToString(yyyy-MM-dd); model.TaskName = txtTaskTitlle.Value; model.TaskStarTime = Convert.ToDateTime(txtStarTime.Value).ToString(yyyy-MM-dd); model.TaskRemark = txtRemark.Value; model.CreateTime = Convert.ToString(Date
33、Time.Now); model.state = 未完成; if (string.IsNullOrEmpty(Request.QueryStringId)/添加或者编辑 AddTask(model); else model.TaskId = Convert.ToInt32(Request.QueryStringId.ToString(); UpdateTask(model); /数据访问层/ / 创建任务 / / 任务实体类 / public OprRult AddTask(Model_Task model) OprRult result = new OprRult(); SqlParamet
34、er param1 = new SqlParameter/参数化 new SqlParameter(TrueName,model.tastExcutorName) ; string sql = select UserId from Users where TrueName=TrueName; int tastExcutorId = Convert.ToInt32(Arc.Data.DbOperateFactory.Singleton.CurrentDbOperate.ExecuteScalar(sql, param1); if (tastExcutorId = 0) result.Succes
35、s = false; result.Msg = 该人员不存在,请填写正确人员姓名!; return result; /SqlParameter param2 = new SqlParameter / new SqlParameter(UserName,model.UserName) /; /sql = select UserId from Users where UserName=UserName; /int sendUserId = Convert.ToInt32(Arc.Data.DbOperateFactory.Singleton.CurrentDbOperate.ExecuteScal
36、ar(sql, param2); SqlParameter param = new SqlParameter10; param0 = new SqlParameter(TaskRemark, model.TaskRemark); param1 = new SqlParameter(TaskSendId, model.TaskSendId); param2 = new SqlParameter(priority, model.priority); param3 = new SqlParameter(ProjectId, model.ProjectId); param4 = new SqlPara
37、meter(TaskEndTime, Convert.ToDateTime(model.TaskEndTime); param5 = new SqlParameter(TaskName, model.TaskName); param6 = new SqlParameter(TaskStarTime, Convert.ToDateTime(model.TaskStarTime); param7 = new SqlParameter(tastExcutorId, tastExcutorId); param8 = new SqlParameter(CreateTime, Convert.ToStri
38、ng(model.CreateTime); param9 = new SqlParameter(state, model.state); sql = insert into Task(TaskName,TaskStarTime,ProjectId,tastExcutorId,TaskEndTime,priority,TaskSendId,TaskRemark,CreateTime,state) values(TaskName,TaskStarTime,ProjectId,tastExcutorId,TaskEndTime,priority,TaskSendId,TaskRemark,Creat
39、eTime,state); try int UserCount = Arc.Data.DbOperateFactory.Singleton.CurrentDbOperate.ExecuteNonQuery(sql, param); if (UserCount 0) result.Success = true; result.Msg = 保存成功!; else result.Success = false; result.Msg = 保存失败!; catch (Exception ex) result.Success = false; result.Msg = ex.Message; return result; return result; 4.3.4 消息管理界面项目组成员利用此模块可以和项目组成员进行交流与沟通。1. 发送消息界面图4-14 发送消息界面2. 收件箱、发件箱、消息列表界面收件箱、发件箱与消息列表界面相似、功能相似。其中收件箱如果有新的消息,系统会给予友好的提示信息。图4-15 收件箱界面4.3.5 项目管理界面项目管理界面如图4-16所示,主要是实现对项