1、摘要 在比较现有较成熟的Bug管理系统的基础上,自己设计和开发一套适合网站公司内部小规模使用的Bug管理系统1.0。这套系统能满足目前开发项目的需要,便于项目开发中各成员之间的协作和相互测试,并能有效追踪和管理Bug。 本系统是基于WAMP来实现的,就是在Windows操作系统下,利用Apache作为Web服务器,MySQL作为数据库,使用PHP技术来实现Bug管理系统各模块的功能[1]。整个系统从符合操作简便、界面友好、实用、安全的要求出发,完成用户管理、项目管理、Bug管理,包括三种用户角色,新用户的添加,用户资料的修改和项目的建立,项目的修改,项目的删除,以及Bug的优先级,Bu
2、g的修改等等。 另外本系统在开发过程中使用到的开发管理工具有EclipsePHP Studio、Dreamweaver和Navicat等。 关键词:Bug管理,WAMP,Apache,MySQL,PHP ABSTRACT Comparing with the present mature bug management system, i project a bug management system, which is designed and developed by myself is applicable to th
3、e Website Companies in small-scale use better. The system which meets the need of project development, is conducive to cooperation among members and mutual testing. It tracks bugs and then deal with them effectively. The system is implemented on the base of WAMP. In other words, in the Windows oper
4、ating system, with Apache as a web server and MySQL as the database, use PHP technology to implement the system functions of each module. The whole system has function like user management, project management, bug management. As well as comply with the requirements which is simple to operate, and us
5、er-friendly interface, practical and security. Includes three user roles, add new users, modify user information and the establishment, modification and deletion of project, the bug's priority, the bug’s modification and so on. Additionally, in the development process it used some development and m
6、anagement tools, such as EclipsePHP Studio, Dreamweaver, Navicat and so on. Keywords: Bug Management , WAMP , Apache , MySQL , PHP 目录 摘要 I ABSTRACT II 第1章 引言 1 1.1 背景 1 1.2 研究内容 2 第2章 开发环境及工具介绍 3 2.1开发环境及工具概述 3 2.2 MYSQL数据库 3 2.2.1 MYSQL的概述 3 2.2.2 MYSQL的应用 4 2.2.3 MYSQL管理工具 4 2.2.
7、4 PHP连接MYSQL数据库 5 2.3 开发语言与工具 6 2.3.1 PHP技术介绍 6 2.3.2 PHP开发工具:ECLIPSEPHP STUDIO 6 2.3.3 网页制作软件:DREAMWEAVER CS4 6 2.4 B/S结构概述 7 2.5 本章小结 8 第3章 系统分析与设计 9 3.1 设计目标 9 3.2 相关概念 9 3.3 系统组成和功能概述 10 3.4 系统流程分析 11 3.4.1 登录与退出 11 3.4.2 用户管理 12 3.4.3 项目管理 12 3.4.4 BUG管理 13 3.4.5 统计 13 3.5系统结构图
8、 14 3.5.1 普通成员 14 3.5.2 项目组长 15 3.5.3 系统管理员 16 第4章 数据库分析与设计 17 4.1 实体关系分析 17 4.2 数据字典 18 4.3 物理表结构设计 18 4.4 创建表的脚本文件 21 第5章 系统实现 23 5.1 用户登录模块 23 5.2 用户管理模块 24 5.3 项目管理模块 25 5.4 BUG管理模块 26 5.5 BUG统计模块 28 第6章 结束语 29 致谢 30 参考文献 31 31 第1章 引言 1.1 背景 随着计算机科学技术的迅猛发展,软件产品规模急剧增大,软件设
9、计的复杂程度不断提高,仅凭个人单打独斗的小作坊式的开发模式已经不能够适应产品开发的需要,在产品开发中出现Bug(缺陷)的机率越来越高[2]。Bug是软件程序“与生俱来”的特征,不管是小型的应用程序还是大型的软件系统、网站,无一例外的都存在Bug。 对于每一个软件开发人员而言,都希望自己的产品有着优良的性能、先进的技术,最最关键的是没有任何Bug。但是,事实上一个能成为产品的项目,是不可能没有出现过任何Bug的。软件的Bug包括代码错误、需求和设计变更、新特性或扩展功能等,由此可见,对软件项目的跟踪与管理贯穿于整个软件开发生命周期中是不可缺少的[3]。在许多软件项目中,有些Bug是由逻辑或编码
10、错误造成的有些Bug是由于使用人员和开发人员的不同期望造成的;有些Bug是开发人员遗忘测试人员报告的Bug造成;由于测试人员的错误报告书写不规范,开发人员不得不找测试人员面谈;通过E-mail和文档交流的开发团队,Bug状态管理混乱,相关人员无法及时获得有关的变更信息……导致软件产品质量不高。Bug管理系统正是用于解决以上问题的。 因此建立一个Bug管理系统,不但可以紧密跟踪并记录当前产品项目Bug的状态、用户的需求变更,进一步成为产品项目中项目管理人员、开发人员和测试人员之间的沟通桥梁,协调产品的开发流程[4]。 1.2 研究内容 本课题在技术上研究的基本内容如下所述。 (1)
11、B/S架构(Browser/Server)即浏览器和服务器架构的研究。 (2) 基于PHP+MySQL技术实现本系统功能的研究。 (3) 采用Eclipse+SVN工具进行代码编写和版本控制的研究。 (4) 采用Dreamweaver来设计与实现页面的研究。 本课题在系统设计上研究的基本内容如下所述。 根据对目前网络上各种Bug管理系统的分析和研究,结合本项目的实际需求,建立一套不复杂,能高效管理跟踪Bug,适合公司实际情况使用的Bug管理系统。且在设计时应满足以下目标: (1) 界面设计简洁大方、方便、快捷、操作灵活。 (2) 功能完善、结构清晰。 (3) 重点突出从B
12、ug的出生到结束的处理流程。 (4) 为用户间提供沟通和交流的平台。 (5) Bug管理模块的设计结构合理、流程清晰。 (6) 统计各种有用的相关数据。 (7) 根据角色的不同来分级权限。 (8) 系统运行稳定。 第2章 开发环境及工具介绍 2.1开发环境及工具概述 从安全性和方便性上考虑,选择了Web实现技术。就是将系统做成一种B/S模式,可以让各种权限用户通过浏览器直接访问位于服务器上的Bug情况,可以同时实现自己想维护的功能。因此选用了当前比较流行的网络编程技术——PHP作为主要实现手段(配合HTML、CSS、JS等)。[5]PHP作为一种Web实现技术,它的效率很高
13、除此之外,PHP是服务端语言,用PHP做成的这套系统可以轻松在其它平台运行。所以PHP是实现本系统的最佳技术,它是完全可行的。 在开发Bug管理系统时,该项目使用的软件开发环境及工具如下: ü 操作系统: Windows 7 Ultimate ü 服务器: Apache 2.2.11 ü PHP: PHP 5.3.0 ü 数据库: MySQL 5.1.36 ü MySQL管理工具: Navicat 8.2.19 ü 代码开发工具: EclipsePHP Studio 1.2.2 ü 界面开发工具: Dreamweaver CS4 ü 浏览器: IE8
14、 ü 分辨率: 最佳效果1024*768像素 2.2 MySQL数据库 2.2.1 MySQL的概述 MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL被广泛地应用在Internet上的中小型网站中[6]。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 本Bug管理系统是一个面向网站开发者的程序,考虑到开发的成本、搭配的合理性以及操作的灵活性等,使用了MySQL数据库。从陈本考虑MySQL是数据库完全免费的,可以在网上免费
15、下载;从匹配的角度讲PHP与MySQL一直是公认的最佳搭档;MySQL不但可以在命令模式下进行操作,而且还配备了一些比较流行的图形化管理工具,如phpMyAdmin、Navicat等,可以轻松地对MySQL数据库中的数据进行操作。 2.2.2 MySQL的应用 与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低
16、总体拥有成本。 目前网上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是自由或开放源码软件(FLOSS),因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。除了LAMP之外,用于Solaris、Windows和Mac上的网站构架也分别被称为SAMP、WAMP[7]和MAMP。本人使用的是Windows系统,因此采用的网站构架方式是WAMP。 2.2.3 MySQL管理工具 目前MySQL的发行版本只有命令行管理工具
17、但可以使用第三方提供的MySQL数据库管理工具,例如基于网页的phpMyAdmin;还有基于客户端的Navicat。 Navicat是一个强大的MySQL数据库管理和开发工具。Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习。Navicat使用了极好的图形用户界面(GUI),可以让你用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。 用户可完全控制 MySQL 数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库移转到另一个数据库中(Local to Remote、Remote to R
18、emote、Remote to Local),进行档案备份。 Navicat 支援 Unicode,以及本地或遥距 MySQL 伺服器多连线,用户可浏览数据库、建立和删除数据库、编辑数据、建立或执行 SQL queries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援 CSV,TXT,DBF 和 XML 档案种类)等。新版与任何 MySQL 5.0.x 伺服器版本兼容,支援 Triggers,以及 BINARY VARBINARY/BIT 数据种类 等的风范。 2.2.4 PHP连接MySQL数据库 PHP可以通过两种方法实现对MySQL数据库的访问[8],1)利
19、用PHP的数据库函数连接,2)通过ODBC连接。由于本人采取前者,就讲一下第一种方法。 这里假设已经建立了数据库db_bug,表user,并插入了两条记录。建表SQL语句如下: Create table UserInfo( UserID tinyint(4) NOT NULL AUTO_INCRE CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `sex` varchar(2) NOT NULL, PRIMARY KEY (
20、`uid`) ) 主要用到的四个数据库函数:mysql_connect、mysql_select_db、mysql_query和mysql_fetch_array。 选择连接数据库后,用循环方式从数据库读取数据并输出显示,代码如下: $conn = mysql_connect(“localhost”,“root”,“”); mysql_select_db(“db_Bug”,$conn); $query = mysql_query(“select * from user”); while($row = mysql_fetch_array($query)){ echo “序列号:”
21、row[uid]. “名字:”. $row[username]. “性别:”. $row[sex]. “
”;
}
2.3 开发语言与工具
2.3.1 PHP技术介绍
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。[9]PHP 是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比CGI 或者 Perl
22、 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。 2.3.2 PHP开发工具:Ec
23、lipsePHP Studio EclipsePHP Studio (以下简称:EPP ) 是一个大型PHP项目开发编译器,给予 Eclipse底层开发而来,并且集成了JDK,免除处了安装配置的麻烦,一次安装即可使用,无需配置。此编译器为PHP编译器,辅助PHP代码的开发和调试,集成了代码高亮,函数跟踪,时时纠错等功能。同时还增加了协作开发版本服务器功能:SVN,CVS。内嵌浏览器可以在调试简单代码时时浏览。不仅支持php ,也支持其他网络语言像html、xhtml、xml、css和javascript、java、perl、python等。 2.3.3 网页制作软件:Dreamweave
24、r CS4 Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。 Dreamweaver、FLASH以及在DREAMWEAVER之后推出的针对专业网页图像设计的FIREWORKS,三者被MACROMEDIA公司称为DREAMTEAM(梦之队),足见市场的反响和MACROMEDIA公司对它们的自信。说到DREAMWEAVER我们应该了解一下网页编辑器的发展过程,随着互联网(Internet) 的家喻户晓,HT
25、ML技术的不断发展和完善,随之而产生了众多网页编辑器,从网页编辑器基本性质可以分为所见即所得网页编辑器和非所见即所得网页编辑器(则原始代码编辑器),两者各有千秋。所见则所得网页编辑器的优点就是直观性,使用方便,容易上手。 Dreamweaver还集成了程序开发语言,对ASP、.NET、PHP、JS的基本语言和连接操作数据库,都是完全支持的。 2.4 B/S结构概述 B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务
26、逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步[10]。 B/S结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。前者的
27、特点是安全、快捷、准确。后者则具有节省投资、跨地域广的优点。须视企业规模和地理分布确定。企业内部通过防火墙接入Internet,再整个网络采用TCP/IP协议。 2.5 本章小结 良好的开发环境和开发工具是开发系统的重要条件。本系统采用了Windows+Apache+MySQL+PHP的成熟开发组合和B/S结构模型进行开发,用PHP自带的MySQL函数连接数据库来完成对数据库的添加、修改、删除和查询等操作。本章主要对系统的开发环境和开发技术做了一个简要的介绍。通过对MySQL的特性、应用介绍来选择它作为数据库。通过对PHP的特性介绍来进一步说明系统采用PHP语言进行开发的优越性。通过对
28、EclipsePHP Studio编程环境的功能和特点来分析选择系统开发的工具。最后通过对B/S结构模型的特点的比较来分析选择开发结构模型。 第3章 系统分析与设计 3.1 设计目标 (1) 通过页面的合理化、简明化的设计,让Bug列表显示一目了然 (2) 通过设立搜索,来方便的查找用户和Bug (3) 通过权限控制,让不同身份的人拥有各自的管理权限 (4) 通过设立Bug优先级来控制Bug处理的先后顺序 (5) 可以方便的查看各项目开发人员发布的Bug列表 (6) 通过设立分数排行榜来调动开发人员主动处理Bug的积极性 (7) 通过设计Bug路径统计来查看哪些地方最容易出错
29、 3.2 相关概念 项目(Project):指有多人配合完成的开发和设计任务。[7] 系统管理员(Administrator):对系统拥有最高管理权限的人,他可以批准成立新的项目组,任命新的项目组长,发起新的项目。 项目组长(Project leader):对一个项目进行监控的领导,他可以添加新的项目组成员,可以对所有提交Bug进行测试,可以分配任务给项目组成员。 普通成员(Ordinary member):既可以作为发布Bug的测试人员(Tester),又可以作为处理Bug的开发人员(Developer)。 作为测试人员:他可以按照约定的测试方法和要求,或按照需求设计要求,进行测
30、试。如果发现BUG,可以提交BUG的路径和描述说明,必要的时候上传BUG情况截图,返回给开发人员处理。对开发人员已完成的BUG进行检查,或驳回Bug进行重新处理,或通过检查后结束该条BUG; 作为开发人员:他必须在每天登录Bug系统查看未处理的Bug,对测试人员驳回的BUG进行处理,完成后可以在Bug查看里说明处理过程,向测试人员申请通过BUG。 BUG (bug):一切不符合项目开发需求和设计的错误。 3.3 系统组成和功能概述 Bug管理系统主要由四个模块组成:用户管理模块,项目管理模块,Bug管理模块以及Bug统计模块。 (1) 用户管理模块可以增删和搜索用户,以及分配
31、权限和项目。 (2) 项目管理模块可以增删项目,以及对项目成员进行管理。 (3) Bug管理模块可以增删和搜索Bug,跟踪处理Bug等。 (4) Bug统计模块可以查看分数排行榜以及Bug路径统计。 Ø 系统用户角色有三类: 系统管理员:主要是用户权限的管理,以及对项目的管理。 项目组长:主要是管理项目的成员,以及项目的Bug。 普通成员:主要是发布Bug,处理Bug,检查Bug。 Ø Bug的状态分为: 未处理:发布后还未有人处理。 处理中:开发人员主动处理了,或被项目组长分配给相关开发人员处理。 待检查:开发人员已完成修正,等待测试人员检查验证。 重新处理:测试人员
32、已检查并驳回给开发人员重新处理。 已通过:测试人员已检查并通过的,到此该条Bug处理周期结束。 Ø Bug路径 出错处网页所显示的网址。 Ø Bug描述 具体详细地描述Bug的出现过程,以及Bug详细信息。 Ø Bug优先级 优先级有三种,可缓,普通,紧急,并用相关符号显示,默认为普通。 Ø 指定处理人 Bug指定的处理人,由项目组长指定相关开发人员对该条Bug进行处理。 Ø Bug解决时间 开发人员修改此缺陷后的时间。 Ø Bug意见讨论 开发人员或测试人员可以在某条Bug查看里进行相关的沟通和讨论,例如测试人员可以在驳回后说明Bug驳回的理由。 3.4 系统流
33、程分析 用户在登录系统后,可以查看自己权限对应的模块和使用对应的功能。管理员登录后,不仅可以查看到所有模块,还可以管理用户和项目等。管理员还可以根据实际情况添加其他管理员。 3.4.1 登录与退出 每个用户都可以用自己的帐号登录系统。用户操作完成后退出系统,退出后可以重新登录系统。登录流程如图3-1所示。 图3-1 登录流程图 3.4.2 用户管理 系统管理员和项目组长可以对用户进行管理。其流程图如图3-2所示。 图3-2 用户管理流程图 3.4.3 项目管理 系统管理
34、员和项目组长可以对项目进行管理。其中系统管理员对项目的管理流程图如图3-3所示。 图3-3 项目管理流程图 3.4.4 Bug管理 每个用户可以对自己所属项目的Bug进行处理,系统管理员和项目组长有权限对Bug进行相关的管理。其流程图如图3-4所示。 图3-4 Bug管理及处理流程图 3.4.5 统计 系统可以对用户的分数,解决的Bug,路径情况等进行相关统计。其流程图如图3-5所示。 图3-5 Bug统计流程图 3.5系统结构图 本系统设计有三个用户角色,每个用户都有各自对应的权限,以下为三个用户权限的系统结构
35、图。 3.5.1 普通成员 普通成员只拥有最基本的权限,如: ①自己的资料和密码修改 ②所在项目的Bug添加和处理 ③所在项目的Bug统计查看 普通成员登录后看到的系统结构如图3-6所示。 图3-6 普通成员系统结构图 3.5.2 项目组长 项目组长拥有所属项目里的相关权限,在普通成员权限的基础上,还包括: ①所在项目的用户添加修改删除禁用 ②所在项目添加修改,成员管理 ③所有项目的Bug查看,所在项目的Bug修改删除 项目组长登录后看到的系统结构如图3-7所示。 图3-7 项目组长系统结构图 3.5.3 系统管理员 系统管理员拥有本
36、系统所有权限和功能,在项目组长权限的基础上,还包括: ①用户添加修改删除禁用,所属项目指定,权限分配 ②项目添加修改删除关闭,项目组长指定 ③所有项目的Bug查看修改删除 系统管理员登录后看到的系统结构如图3-8所示。 图3-8 系统管理员系统结构图 第4章 数据库分析与设计 4.1 实体关系分析 用户有基本资料和详细资料,一个用户属于一个项目,一个用户可以发布多个Bug和多个意见讨论,一个项目可以有多个Bug,一个Bug里可以有多个意见讨论。实体关系如图4-1所示。 图4-1 Bug管理系统E-R图 4.2 数据字典 用户基本表:用户序列号,权限,用户名,密
37、码,用户状态,项目序列号,分数,登录时间。 用户详细表:详细序列号,用户序列号,姓名,部门,邮件地址,电话,创建时间,修改时间,关闭时间。 项目表:项目序列号,项目名,项目描述,项目组长,项目状态,创建时间,关闭时间 Bug表:Bug序列号,项目序列号,Bug路径,描述,优先级,分数,Bug状态,发布者,处理者,检查者,发布时间,修改时间,处理时间,完成时间,通过时间,驳回时间,驳回次数 已通过Bug表:通过序列号,Bug序列号,完成者,通过时间 意见讨论表:意见序列号,Bug序列号,发布者,内容,发布时间 其中: 用户权限共分3级,管理员权限为0,项目组长权限为1,普通成员权限
38、为2。 优先级共分3级,可缓为0,普通为1,紧急为2。 Bug状态共分5个,已通过为0,未处理为1,处理者为2,待检查为3,重新处理为4。 4.3 物理表结构设计 本系统共设计有6张表用来存储相关数据信息:user(用户基本表)、user_profile(用户详细表)、project(项目表)、bug(Bug表)、bug_pass(已通过Bug表)、discuss(意见讨论表)。 如表4-1所示,用户基本表用来存储用户在系统里的相关基本信息。 表4-1 用户基本表的属性清单 名称 代码 数据类型 备注 用户序列号 权限 用户名 密码 用户状态 项目序列号 分数
39、 登录时间 uid m_id username password user_state pro_id score login_time int(11) int(11) varchar(64) varchar(64) tinyint(4) tinyint(4) int(11) int(11) 主键 外键 如表4-2所示,用户详细表用来存储用户的详细资料以及记录一些时间信息。 表4-2 用户详细表的属性清单 名称 代码 数据类型 备注 详细序列号 用户序列号 姓名 部门 邮件地址 电话 创建时间 修改时间 关闭
40、时间 id uid name department email tel create_time update_time login_time int(11) int(11) varchar(10) varchar(30) varchar(30) varchar(20) int(11) int(11) int(11) 主键 外键 如表4-3所示,项目表用来存储项目的基本信息以及时间信息。 表4-3 项目表的属性清单 名称 代码 数据类型 备注 项目序列号 项目名 项目描述 项目组长 项目状态 创建时间 关闭时间 id pr
41、o_name content pro_leader pro_state create_time close_time int(5) int(20) varchar(255) int(11) tinyint(4) int(11) int(11) 主键 外键 如表4-4所示,Bug表用来存储Bug的基本信息和时间信息。 表4-4 Bug表的属性清单 名称 代码 数据类型 备注 Bug序列号 项目序列号 Bug路径 描述 优先级 分数 Bug状态 发布者 处理者 检查者 发布时间 修改时间 处理时间 完成时间 通过时间
42、 驳回时间 驳回次数 id pro_id path content priority score bug_state aid did pid create_time update_time take_time complete_time pass_time reject_time reject_times int(11) int(11) varchar(255) blob tinyint(4) tinyint(4) tinyint(4) int(11) int(11) int(11) int(11) int(11) int(11)
43、 int(11) int(11) int(11) tinyint(4) 主键 外键 外键 外键 外键 如表4-5所示,已通过Bug表用来存储已处理完毕并通过检查的Bug的序列号,完成者以及通过时间。设置该表可以在查找相关数据时更加有效率。 表4-5 已通过Bug表的属性清单 名称 代码 数据类型 备注 通过序列号 Bug序列号 完成者 通过时间 id bid uid pass_time int(11) int(11) int(11) int(11) 主键 外键 外键 如表4-6所示,意见讨论表用来存储Bu
44、g序列号,发布者,内容以及发布时间。 表4-6 意见讨论表的属性清单 名称 代码 数据类型 备注 意见序列号 Bug序列号 发布者 内容 发布时间 id bid uid content create_time int(11) int(11) int(11) blob int(11) 主键 外键 外键 4.4 创建表的脚本文件 SQL脚本文件可以通过软件Navicat进行导入,从而自动生成数据库相关的表。以下仅以用户基本表和项目表的脚本作为例子。 -- ---------------------------- -- Table st
45、ructure for `user` -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `m_id` tinyint(4) NOT NULL, `username` varchar(64) NOT NULL, `password` varchar(64) NOT NULL, `user_state` tinyint(4) NOT NULL, `pro_id` t
46、inyint(4) DEFAULT '1', `score` int(11) NOT NULL DEFAULT '0', `login_time` int(11) DEFAULT NULL, PRIMARY KEY (`uid`) ) -- ---------------------------- -- Table structure for `project` -- ---------------------------- DROP TABLE IF EXISTS `project`; CREATE TABLE `project` ( `id` int(5
47、) NOT NULL AUTO_INCREMENT, `pro_name` varchar(20) NOT NULL, `pro_psw` varchar(64) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `pro_leader` int(11) DEFAULT NULL, `pro_state` tinyint(4) NOT NULL, `create_time` int(11) NOT NULL, `close_time` int(11) DEFAULT NULL, PRIMARY
48、KEY (`id`) ) 导入成功后,可以在Navicat里看到如图所示的表。 图4-2 用户基本表 图4-3 项目表 第5章 系统实现 5.1 用户登录模块 登录功能:系统管理员和项目成员均从这里登录。 登录权限分配:所有登录者,将按照用户名和密码,验证身份合法性,并分配相应权限后进入自己的管理页面。 登录所属的项目组:成员在登录系统后会自动登录所属的项目组中(如果没有所属项目则不显示Bug管理模块和统计模块)。 用户在登录界面输入用户名、密码,以及验证码后,登录到Bug管理系统。登录框处有本地客户端JS
49、控件非空判断,也有服务器端正确与否的判断。登陆界面如图5-1所示。 图5-1 登录界面 JS控件非空判断函数代码: function doCheck(){ if(f1.username.value!="" && f1.password.value!="" && f1.check.value!=""){ f1.submit(); } else{ alert("请全部填写后再次提交登录!"); } } 本系统采用了左右网页框架,左侧为模块导航菜单,右侧为主体内容页面。 登录后的欢迎界面如图5-2所示,有上次登录时间,当前IP,在线
50、时间,待我解决的BUG数等信息。 图5-2 登录后的欢迎界面 5.2 用户管理模块 系统管理员可以添加用户,用户有系统管理员,项目组长和普通成员三种类型。登录的系统管理员不可以删除自己本人。用户列表界面如图5-3所示,在这里可以修改、删除和禁用用户(禁用后的用户是没有权限登录系统的),以及查看某用户发布的Bug。 图5-3 用户列表界面 用户添加界面如图5-4所示,系统管理员在这里添加用户,并选择权限,姓名、部门、E-mail、电话是可选的。E-mail最好填写真实有效,因为系统的后续扩展中可以实现邮件通知功能,此时需要邮件的支持。 图5-4 用户添加界面






