版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XIX第1章引言1.1研究背景在信息技术迅速发展的今天,全球化和经济一体化的步伐不断加快。众多国际公司选择在中国设立亚太区总部,旨在降低劳动力成本和日常运营开销,以实现利润最大化。同样,为了减少软件项目成本,大量企业开始向发展中国家,如中国和印度外包项目。据路透社报道,全球软件外包市场已经达到1500亿美元,且年增长率达30%。在软件外包领域,印度因其独特优势迅速成为全球主要的软件外包目的地,占据了近80%的市场份额。对日本的软件外包中,中国的中小企业凭借地理优势和经济发展,迅速占领市场。2004至2005年,中国企业承接了日本一半的软件外包业务,到2006至2007年,这一比例上升到61%,显示出日本市场还有巨大的潜力待挖掘。软件外包行业高度重视流程和质量管理,这是项目成功的关键。许多研究项目的失败并非技术原因,而是流程管理不善。在中国,许多接包企业规模较小,流程管理不够重视,开发过程中的缺陷管理和文档标准化亟待改进。因此,建立一套完善的流程管理体系是提高软件外包质量和效率的关键。1.2研究意义和价值尽管市场上已有多种人力资源和财务管理软件,但这些系统在软件外包行业的应用并未完全达到预期效果。软件外包具有其特定的工作流程,包括任务分配、代码提交和缺陷跟踪等,都需严格管理和记录。因此,利用互联网技术开发适用于软件外包的管理系统,不仅可以减少企业成本,提高工作效率,还能实现外包流程的标准化和自动化,对于提高项目成功率具有重要意义。1.3当前状况和发展趋势21世纪以来,项目管理作为现代管理的重要方法,已广泛应用于多个行业。项目管理起源于美国,最初主要用于建筑、国防和航天领域。随着时间的推移,项目管理技术得到全球认可,并广泛应用于计算机、通讯、金融等多个领域。国际上形成了以美国和欧洲为主的两大项目管理研究体系。中国也根据自身实际,推出了适合国情的项目管理知识体系,推动了项目管理技术在国内的应用和发展。1.4本研究的主要工作本研究通过调查企业外包管理流程,发现了几个主要问题,包括外包人员管理困难、工作时间不确定、任务记录不系统和资料安全问题。针对这些问题,本文提出了一个外包管理平台的设计,旨在提高工作效率并加强对外包人员的监管。本平台以Java语言开发,基于B/S架构,使用MySQL数据库和Tomcat服务器,在Windows8.1平台上基于MVC模式实现。平台服务两类用户:企业管理人员和外包服务人员,支持外包人员管理、项目规划、任务分发和监督等功能,从而实现了一个智能化的外包管理平台。REF_Ref32636\r\h[1]第二章相关技术介绍2.1Java技术概述自Java语言诞生之日起,它就明确了自己的定位——成为开发网络应用的首选语言。其跨平台性、安全性和面向对象的设计让它成为了互联网应用开发的核心。具体而言,Java拥有多种特性,包括简洁性、面向对象、分布式计算支持、解释执行、稳定性、安全性、平台独立性、高移植性、高性能、支持多线程和动态性等,这些优势使得Java成为广泛应用于各种计算环境的编程语言。REF_Ref511760100\r\h[2]2.2JSP与Servlet技术的优势JSP(JavaServerPages)技术,由SunMicrosystems公司推动并得到多家公司的共同参与和建立,是一种基于JavaServlet技术的网页编程技术。它允许用户提交不同的请求,并获得个性化的响应,这使得基于JSP的网页具有高度的交互性和动态性。作为基于Java的技术,JSP继承了Java语言的所有优点,并具有强大的动态网页生成能力。其广泛的适用性让JSP成为全球最流行的网页开发技术之一,例如,我们研究的宠物商城网站就是利用JSP技术实现的动态网页。2.3ApacheTomcat简介ApacheTomcat是一款免费且开源的Web应用服务器,以其开源免费、易于安装和使用、低资源占用、以及易于与其他软件集成的优点而广受欢迎。Tomcat因其先进的技术、稳定的性能及免费开源的特性,成为Java开发者中极为流行的Web应用服务器。它具备轻量、扩展性强、支持多种开发需求的特点,并且在不断的迭代中持续改进和增添新功能,任何对此感兴趣的开发者都可以对其进行修改或添加新特性。REF_Ref511758628\r\h[3]2.4Spring框架的应用Spring框架是开发企业级应用的轻量级解决方案,它提供了一站式的服务。Spring的模块化设计允许开发者根据需求选择所需模块,而无需加载不必要的部分,这样不会对软件开发造成影响。开发者可以利用Spring的IOC(控制反转)容器,并结合其他Web框架使用。它支持声明式事务管理,允许通过RMI或Web服务访问远程代码,提供多种数据持久化选项。Spring提供了一个功能完备的MVC框架,并支持无缝地将AOP(面向方面编程)集成到应用中。Spring设计上的非侵入性意味着,除了在数据访问层和对Spring框架的直接依赖之外,域逻辑代码通常不依赖于框架本身。REF_Ref511758730\r\h[4]2.5MySQL数据库MySQL是一种流行的开源关系数据库管理系统,采用结构化查询语言(SQL)进行数据库管理。它基于多线程,能够提供完全的多线程支持,同时提供给C、C++、Java等多种编程语言的接口。MySQL支持广泛的数据类型,并提供了全面的操作符以支持复杂的查询,如SELECT和WHERE等。在宠物商城网站的系统设计中,用户信息、购物车信息和订单信息等都需通过数据库进行管理,因此选择一个能够确保数据安全2.6MVC开发模式概述MVC,即模型-视图-控制器,是一种将应用程序分为三个核心组成部分的软件设计模式,旨在分离内部逻辑处理和外部界面表示。这种分离使得应用程序的用户界面可以在不改变底层业务逻辑的情况下进行修改和重用。图如图2-1。图2-1MVC模式结构图(1)模型(Model):模型组件用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。模型是连接视图和控制器的桥梁,负责数据的存取和转换,并确保视图和控制器的数据同步。REF_Ref511758822\r\h[5](2)视图(View):视图是应用程序中处理数据显示的部分。在MVC模式中,视图仅展示数据,不处理任何逻辑。通过将视图和模型分离,开发者可以更容易地更改应用程序的界面和布局。(3)控制器(Controller):控制器接收用户的输入并调用模型和视图去完成用户的请求。其决定了视图显示什么和用户输入的响应方式。MVC模式的优点包括降低各部分的耦合度、提高应用的可维护性、扩展性和重用性。多个视图可以共享一个模型,以实现数据与表示的分离,这有助于代码的复用和并行开发。2.7JQueryEasyUI简介JQueryEasyUI是基于jQuery的一套前端界面开发框架,它提供了丰富的UI控件,如下拉框(combobox)、对话框(dialog)、标签页(tabs)、验证框(validatebox)、数据网格(datagrid)、树形控件(tree)等,满足现代Web应用开发的需求。与更为复杂的ExtJS相比,JQueryEasyUI以其轻量级和简易性为特点,能够快速实现美观的用户界面。通过简单的配置,开发者可以轻松达到预期的页面效果,且支持HTML5,使得它成为前端开发的有效工具。在选择JQueryEasyUI作为前端开发框架的主要考虑是其简洁性、易用性以及足够的功能性,能够有效减少开发时间和成本,提高开发效率。REF_Ref511760146\r\h[6]第三章系统需求分析3.1系统功能需求3.1.1系统功能结构本平台旨在为中小型软件外包企业构建一个全面的智能管理系统,通过深入研究和精细分析软件开发管理的独特需求和各个业务流程,设计出符合实际工作需求的解决方案。该系统能够实现项目的动态管理,并通过项目管理的可视化,显著减少软件外包项目失败的风险。它覆盖了软件外包流程的各个环节,包括但不限于软件外包的需求分析、外包合同管理以及项目开发过程的实时监控。系统针对发包方和承包方的具体需求,设立了三个核心模块:外包项目需求管理、外包项目合同管理、以及外包项目开发流程管理,旨在优化和简化软件外包的整个工作流程。REF_Ref511760313\r\h[7]功能需求如图3-1所示。图3-1智能外包管理平台功能结构图本智能外包管理系统为中小型软件外包企业量身打造,旨在提升外包项目的管理效率和降低失败风险。系统通过以下三个关键功能模块实现其目标:(1)外包人员信息管理模块:专为企业管理层设计,提供外包人员信息和协议信息的维护功能。管理人员可通过此模块添加、查询和更新外包人员的详细资料,如员工编号、身份证号、姓名、性别、年龄、联系方式、隶属外包公司以及登录凭证等。此外,还能处理外包人员的保密协议和合同信息,实现信息的录入、查阅和下载。(2)项目管理模块:同样针对企业管理人员,允许其制订项目计划、安排项目参与人员、设置项目安全级别等。通过该模块,管理人员可以监控任务的分配和进展,及时了解每项任务的完成情况。同时,该模块还提供外包服务人员考勤信息的查看功能。(3)外包服务人员模块:为外包服务人员提供个人信息维护、任务领取、工作成果提交和考勤记录等功能。服务人员通过该模块管理自己的个人资料,接受或拒绝任务,并上传完成的工作文件。REF_Ref511760565\r\h[8]系统的设计从用户服务的角度出发,强调用例建模的理念,即围绕用户需求来构建系统功能。本系统明确划分了外包服务人员和企业管理人员两种用户角色,其中外包服务人员的账户需由企业管理人员创建。服务人员可以在系统中更改自己的登录密码,查看并管理分配给自己的任务,执行包括接受、完成任务及上传相关文件等操作。此设计不仅清晰定义了各用户角色的功能,还从用户视角深入描述了系统的功能细节,确保系统设计的用户导向和实用性。图3-2外包服务人员用例图通过该智能外包管理平台,企业管理层能够高效地对外包服务团队及其项目进行全面管理。这包括对外包人员资料的添加、查询、更新以及移除操作,确保人员信息的准确性和最新性。此外,管理人员还能够全方位地处理项目相关的任务,涵盖从项目计划的制定、监控项目的进度,到任务的具体分配等多个方面。这样的系统设计不仅提高了项目管理的效率,还加强了对外包团队的监控和协调,确保项目按时按质完成。REF_Ref511760703\r\h[9]图3-3企业管理人员用例图3.1.2性能要求(1)系统安全性:为确保平台的安全性,本系统将实施严格的管理权限控制。只有经过授权的用户才能登录系统并执行操作,从而防止未授权用户的任何形式的访问和操作,确保系统数据和功能的安全性。系统将采用角色管理策略,通过分配基于角色的权限来实现对用户操作的精细控制,涵盖数据的增加、删除、修改和查询等操作。各用户根据所分配的权限,只能执行相应范围内的活动,杜绝权限越界。例如,只有管理员具备分配用户权限和管理全部用户的能力,而开发者则限于维护特定模块。(2)数据完整性:系统将保障数据记录的准确性和一致性,确保同一信息在不同界面和模块(如会员管理后台与门店后台)之间保持同步。同时,系统也将确保数据之间的关联性和正确性,避免数据错乱或失真,从而提高系统的可靠性和用户的信任度。3.2开发与运行环境配置3.2.1开发环境的软件需求JavaDevelopmentKit(JDK)1.8:提供全面的Java开发环境,包含编译、运行Java程序所需的工具和库。EclipseIDE4.5:优秀的集成开发环境,提供便捷的项目管理、代码编辑、调试及许多高效的开发工具,旨在提升开发效率。ApacheTomcat8.0:作为轻量级的Web应用服务器,支持运行JavaServlet和JSP页面。MySQLDatabase5.0:用于数据存储的关系型数据库管理系统,提供高性能的数据操作能力。个人计算机:配置要求为AMD处理器,8GB内存,满足开发过程中对硬件的基本需求。3.2.2运行环境配置Web服务器操作系统:使用Linux,保证了服务器运行的稳定性和安全性。Web服务器软件:ApacheTomcat8.0,支持高效、稳定地运行Web应用。数据库系统:采用MySQL作为后端数据库,确保数据存取的高效和稳定。客户端操作系统:无特定要求,提高系统的普遍适用性。客户端浏览器:支持所有主流浏览器,对于InternetExplorer用户,要求版本为IE7及以上,以确保网页的兼容性和正常显示。第四章系统设计4.1系统设计基本原则在开始系统实现之前,基于系统需求的深入分析,包括各个模块的核心功能、技术需求及潜在挑战,进行细致的设计规划是至关重要的。这有助于深刻理解系统架构的细节,从而在开发过程中提高效率和准确性。以下是系统设计过程中的关键原则:(1)健壮性与稳定性:系统需保障在正常及异常情况下均能稳定运行,具备良好的健壮性,确保所有功能的可靠性。(2)可扩展性与可维护性:鉴于开发需求的可能变化,系统设计需注重灵活性,以便于未来的业务扩展和维护。(3)复用性:提倡代码复用,通过定义通用方法减少重复编码工作,使得开发过程更高效、更简洁。REF_Ref93\r\h[10](4)易用性:开发的系统界面应直观易懂,确保用户能快速上手,无需繁琐学习即可操作。4.2系统架构设计本平台基于Java语言,采用流行的MVC设计模式进行开发。MVC模式通过分离业务逻辑、数据和界面显示,促进代码的组织和重用,同时便于界面和逻辑的独立更新。具体而言:(1)模型(Model):负责数据逻辑和数据库交互,处理数据的存取。(2)视图(View):展示数据,用户界面的呈现。(3)控制器(Controller):处理用户的输入,将模型和视图连接起来,控制数据流向模型对象,并在数据变化时更新视图。为满足"高内聚,低耦合"的设计要求,系统采用分层开发策略,将代码结构化为控制器层、服务层(Service)和数据访问层(Dao),通过接口进行层间通信。这种分层方法明确了各层的职责,提高了代码的可管理性和可扩展性。REF_Ref116\r\h[11]用户操作流程简述如下:(1)用户通过浏览器访问视图层的JSP页面,所有操作请求均通过控制器层的Servlet处理。(2)控制器层接收来自视图层的参数,封装为JavaBean对象,并传递至服务层处理相关业务逻辑。(3)服务层接收控制器层参数,进一步调用数据访问层(Dao)以执行数据库操作。(4)数据访问层(Dao)根据服务层的需求执行数据库查询或更新操作,并将结果集返回。(5)数据库操作完成后,Dao层将结果封装为JavaBean对象,返回至服务层。(6)服务层处理Dao层返回的数据,再返回给控制器层。(7)控制器层最终将处理结果传递至相应的JSP页面,供用户查看。REF_Ref139\r\h[12]通过这种明确分层的开发模式,平台能够有效地组织代码,提升开发效率和系统稳定性。图4-1系统架构图4.3系统总体功能设计图4-3系统总体架构设计如图4-3所示,在智能外包管理平台的架构中,存在两主要用户角色:企业管理人员和外包服务人员。企业管理人员利用该平台主要执行外包人员管理与项目管理任务,包括制定项目计划和分配具体任务。同时,他们还能监控任务的执行情况,确保项目按计划推进。外包服务人员则通过平台接受分配给自己的任务,并在完成后上传成果至系统。REF_Ref162\r\h[13]4.4主要功能的详细设计登录注册功能作为系统的门户,为用户访问平台的第一步。用户首次访问智能外包管理平台时,将被引导至登录页面。在此环节,系统对用户名和密码设定了具体的规范:用户名应由3至16位数字或字母组成,必须以数字开头,并保证在系统中的唯一性。真实姓名支持汉字或字母输入,不支持混合形式。密码设置要求为6至12位,由字母、数字、符号组合而成,且不能以符号开头。注册时输入的密码需与确认密码一致,否则系统将提示“密码不一致”。完成注册后,系统将提示注册成功,并自动跳转至登录页面。用户登录时需填写先前注册成功的用户名和密码。如果信息输入错误,将收到“用户名或密码错误”的提示。此外,登录过程中还需输入验证码,以防自动化攻击,验证码错误同样会被提示重新输入。REF_Ref188\r\h[14]系统根据登录信息区分用户角色为企业管理人员或外包服务人员,自动与数据库中的用户数据进行匹配,以确保正确的用户角色权限被授予。具体活动图如图4-4所示:图4-4注册登录模块活动图4.4.1人员信息维护模块在人员信息维护模块中,企业管理人员可以高效地管理外包人员信息,确保项目资源的合理分配和调度。此模块覆盖外包人员的基本信息和合同相关信息两大部分。基本信息主要包括员工编号、姓名、身份证号码、年龄、性别、所属部门及外包公司等,而合同信息则涉及到劳动合同和保密协议等内容。通过该模块,企业用户能够轻松地进行外包人员信息的添加、查阅和编辑,同时也支持合同信息的下载。模块的主要逻辑由人员信息管理控制器SurveySurveyController类实现,该类负责处理来自Web端的各类请求,如信息的添加、查询和更新等。它通过调用业务逻辑层SurveySurveyService,与数据持久层交互,实现对数据库中外包人员信息的管理。业务逻辑层不仅负责数据的直接处理,还包括人员信息的验证和必要的业务逻辑实施,以确保数据的准确性和业务流程的顺畅。REF_Ref208\r\h[15]图4-4人员信息维护模块类图4.4.2项目管理模块在项目管理模块中,企业管理人员主要负责项目计划的制定、任务的分配以及进度的监控。通过该模块,管理人员能够创建详细的项目计划,并通过设置关键的时间节点来确保项目按时完成。项目的详细计划将以表格形式展示,以便直观地了解项目进度。一旦项目计划确立,管理人员将分配具体任务给外包服务人员,并设定相应的完成期限。系统随后自动向外包人员分发任务,并允许管理人员追踪每项任务的完成状况。REF_Ref230\r\h[16]项目管理模块的核心逻辑由ProjectController请求处理器类负责执行,该类处理来自企业用户的各种操作请求。业务逻辑层ProjectReportService与数据访问层进行交互,对数据进行处理和逻辑运算,最后将处理结果返回给控制器。在处理业务逻辑时,SystemService类作为数据访问层的一部分,负责与数据库的直接交互。而对于需要生成的动态报表,模型层中使用Highchart实体来表示。此外,模块还支持将任务相关的合同信息导出为图片格式,这一功能通过CommonExcelService类实现。图4-5项目管理模块类图4.5数据库设计数据库的设计是本系统开发中的关键挑战之一,因为它不仅负责存储全部数据,还要准确地描述数据之间的逻辑关系。良好的数据库设计对于确保系统的运行效率、逻辑正确性以及未来的系统维护至关重要。4.5.1数据库概念设计在构建数据库表结构的过程中,本系统依据主要的数据库设计原则,以确保表结构的合理性,便于数据的快速检索、插入、更新和删除,同时也支持系统的后续扩展和开发。通过严格的设计方法,我们可以有效防止数据不一致或数据冗余的问题。数据库设计遵循的五个范式(第一范式至第五范式)为我们提供了从简到复的规范指南,确保了数据的逻辑一致性和减少数据冗余。REF_Ref250\r\h[17]在进行需求分析的基础上,采用特定的数据模型化方法,将数据库设计从实现的复杂性中抽象出来,首先定义数据库的概念结构及其相互关系。鉴于大型数据库系统中数据元素的多样性和设计的复杂性,通常在设计阶段,由需求分析人员和数据库设计人员组成的团队共同完成数据库的各项设计工作。下面是关于部分实体及其关系的描述:(1)外包人员实体:这一实体集中存储外包服务人员的基本信息,如工号、姓名、性别、年龄、所属外包公司、登录密码等。为了符合数据库设计的第三范式,即每一列都与主键直接相关,外包人员实体仅包含其基本信息。工号作为主键,由企业统一分配和管理,保证唯一性且不可更改。同时,劳动合同编号和保密协议编号作为外键,建立与相应合同信息的关联。图4-6外包人员实体图项目实体:该实体负责记录项目的核心信息,这些信息主要由企业管理人员负责添加和更新,而外包服务人员无权进行修改。项目实体涵盖了项目编号、项目名称、版本号、项目描述、以及开发周期等关键信息。在这里,项目编号作为主键,确保了项目实体的唯一性和易于索引的特性。REF_Ref270\r\h[18]图4-7项目实体图(3)任务实体:此实体包含了分配给特定项目的各项任务的详细信息,它是项目中细分出的较小功能单元。在任务实体中,项目编号作为外键,建立了任务与其所属项目之间的联系;而任务编号则设定为主键,保证了任务信息的唯一性。任务的创建和更新操作仅限企业管理人员执行,以确保任务信息的准确性和一致性。此外,任务状态字段用于反映当前任务的进展状况。REF_Ref358\r\h[19]图4-8任务实体图(4)E-R图,全名为实体-联系图(Entity-RelationshipDiagram),是一种通过图形化方式表示实体、实体属性和实体间联系的方法。它有效地展现了现实世界中各实体类型及其相互关系的概念模型,成为表达概念化关系模型的重要工具。在E-R图中,“矩形”用于表示实体类型,实体类型的名称写在矩形框内;“椭圆”则用来表示实体的属性,并通过“实线”与对应的实体类型连接。在系统的整体E-R图(图4-9)中,展示了系统内各实体间的相互关系。图中虽然因篇幅限制仅展示了部分实体属性,但已足以说明系统中数据的组织和关联方式。图4-9ER图4.5.2数据库物理结构设计数据库概念模型与所用的数据库管理系统无关。在MySql中创建一个数据库,命名为JLB_CRM_DEV。系统中所用到的主要表及用途如表4-1所示:表4-1部分主要表及用途表名用途En_users企业用户信息表Out_users外包用户信息表project项目表Task任务表attendance考勤表InformationManage内容信息表Log日志记录表 涉及到的存储过程如下表所示:表4.2存储过程汇总表存储过程名功能Insert_UserType添加用户类型Insert_User登记用户Delete_User删除系统用户Query_User查询系统用户Update_User修改系统用户信息Insert_project添加项目信息Delete_project删除项目Query_project_ByName通过项目名称查询Query_project_ByID通过项目id查询Update_task修改任务信息Insert_task添加任务Delete_task删除任务Query_task查询任务Update_task修改任务信息4.5.3数据库逻辑结构设计下面详细介绍系统部分主要使用的表:(1)企业用户表En_users企业用户表用来储存企业人员的基本信息,表的字段说明如表4-3所示:表4-3En_user表字段名数据类型字段说明备注Idnvarchar(50)ID主键Namenvarchar(50)姓名Sexnvarchar(4)性别Passwordnvarchar(20)登录密码emailnvarchar(20)邮箱Phonenvarchar(20)联系电话Departmentnvarchar(50)所属部门AddBynvarchar(50)添加人IDAddTimedatetime创建时间EditBynvarchar(50)编辑人EditTimedatetime编辑时间Remarknvarchar(MAX)备注其中Id为平台的LoginId,用于在登录。(2)外包人员信息表Out_users设备信息表用来储存外包人员的基本信息,表的字段说明如表4-4所示:表4-4Out_user表字段名数据类型字段说明备注Idnvarchar(30)身份证号主键Namenvarchar(10)姓名Sexnvarchar(2)性别Ageint年龄emailnvarchar(20)邮箱Phonenvarchar(20)联系电话ExperienceDouble工作经验hiredatedatetime入职时间Dep_idnvarchar(10)部门id外键AddBynvarchar(50)添加人IDAddTimedatetime创建时间EditBynvarchar(50)编辑人EditTimedatetime编辑时间Remarknvarchar(MAX)备注其中id为主键,唯一标识某个个体。Dep_id为外键,链接到部门表的主键。(3)项目表Projrct项目表存储企业项目的基本信息,项目信息只能被企业管理人员访问到,不能被外包服务人员访问。表4-5Projrct表字段名数据类型字段说明备注P_idvarchar(20)项目编号主键P_Namevarchar(50)项目名称Descriptionvarchar(Max)项目描述VersionVarchar(30)版本号Chargenvarchar(50)负责任编号外键SlevelInt安全级别FinishTimedatetime上线时间AddBynvarchar(50)添加人IDAddTimedatetime创建时间EditBynvarchar(50)编辑人EditTimedatetime编辑时间Remarknvarchar(MAX)备注在Project表中p_id为主键,Charge为外键,链接到En_users表的id一列。Slevel表示安全级别,数值越大表四安全级别越高。(4)任务表Task任务表用来储存各个任务的基本信息,表的字段说明如表4-6所示:表4-6Task表字段名数据类型字段说明备注Idvarchar(50)ID主键contentnvarchar(Max)任务内容CreateTimedatetime创建时间P_idvarchar(20)项目编号外键Orderint任务顺序Start_timedatetime任务开始时间End_timedatetime任务结束时间Send_idvarchar(20)发包人id外键Reciver_idvarchar(20)接包人id外键4.5.4与数据库连接的DB设计智能外包管理平台数据持久层使用了Mybatis框架,使用Mybatis需要配置数据库连接信息。数据库就基本配置信息如下:jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/tlms?useUnicode\=true&characterEncoding\=utf-8jdbc.username=rootjdbc.password=root此段代码设置了默认连接本地数据库,数据库名为tlms,数据库登录名root,密码root。此外,还需要配置Mybatis的一些信息,具体代码如下:<!--连接数据库,整合mybatis和spring框架--> <!--1、配置资源文件--> <context:property-placeholderlocation="classpath:perties"/> <!--2、配置dbcp数据源--> <beanid="dataSource"class="mons.dbcp.BasicDataSource"> <propertyname="username"value="${jdbc.username}"></property> <propertyname="password"value="${jdbc.password}"></property> <propertyname="driverClassName"value="${jdbc.driver}"></property> <propertyname="url"value="${jdbc.url}"></property> </bean> <!--3、配置SqlSessionFactoty--> <beanid="sqlSessionFactoryBean"class="org.mybatis.spring.SqlSessionFactoryBean"> <propertyname="configLocation"value="classpath:mybatis/sqlMapConfig.xml"></property> <propertyname="dataSource"ref="dataSource"></property> </bean> <!--4、批量扫描mapper--> <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"> <propertyname="basePackage"value="com.ssm.tlms.dao"></property> <propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactoryBean"></property> </bean>第五章系统实现5.1系统运行环境要求(1)硬件要求CPU:至少P41.8GHz;内存:最小配置为512MB;硬盘空间:不少于50GB。(2)软件要求操作系统:Windows8.1;数据库系统:MySQL5.0;Web服务器:Tomcat;推荐浏览器:Chrome、IE11等;开发环境:Eclipse。5.2功能模块实现5.2.1系统登录功能系统登录要求用户准确输入注册时使用的账号和密码。对于外包服务人员,初始密码默认与账号相同。为保障用户信息安全,系统在存储用户账号信息至数据库前会采用哈希(Hash)加密算法进行加密处理,其中采用的是MD5算法。用户尝试登录时,系统同样会通过MD5算法对输入的账号进行加密处理,并将加密后的结果与数据库中的加密字符串进行匹配比对,以此验证登录信息的正确性。只有经过正确验证后,用户才能成功登录系统。用户登录和注册的界面分别展示在图5-1和图5-2中。图5-1用户登录界面本系统实现登录的视图显示层代码如下: @RequestMapping("/login") @ResponseBody publicMap<String,Object>login(HttpServletRequestrequest,Stringid,Stringpassword) { Map<String,Object>map=newHashMap<>(); Usersuser=usersService.login(id,password); if(id==null||password==null){ map.put("status",false); map.put("info","用户名或密码不能为空!"); }else{ if(user==null){ map.put("status",false); map.put("info","用户名或密码错误!"); }else{ inttype=user.getType(); intu_id=user.getU_id(); HttpSessionsession=request.getSession(); session.setAttribute("user",user); session.setAttribute("u_id",u_id); session.setAttribute("type",type); map.put("status",true); map.put("info","登录成功"); } } returnmap; }5.2.2人员信息管理功能在人员信息管理模块中,目标是实现对大量数据的直观展示以及便捷的修改和删除操作。界面设计采用表格形式,允许用户自定义每页展示的信息数量。通过双击表格中的任一行数据,用户可以轻松进入编辑模式对信息进行更新。REF_Ref423\r\h[20]此外,为了提高用户查找信息的效率,该模块集成了搜索功能,使得从众多信息中快速定位所需数据成为可能。主要管理内容包括外包服务人员的基本资料及相关的合同信息。基本资料涉及到员工的工号、姓名、联系电话、电子邮箱以及所在的外包公司等。以管理外包服务人员的基本信息为例,详细介绍模块的实现方式。关于合同信息的管理,其操作逻辑与管理基本信息类似,因此在此不作过多说明。图5-2基本信息管理界面界面设计图5-2展现了外包服务人员基本信息的管理界面,其中信息通过表格形式呈现。该设计支持搜索功能,通过实时刷新的下拉框内容,用户可以根据特定条件筛选所需信息。若未设定任何搜索条件并点击“搜索”按钮,则系统将展示所有外包服务人员的基本信息。为了便于信息的更新,用户可以通过双击表格中的任一行进入数据修改模式。值得注意的是,系统设定了一定的数据保护措施,确保工号、姓名和性别这些关键信息在初次输入后不可更改。进行数据修改时的界面展示见图5-3。图5-3信息修改界面点击“添加”按钮,可以添加外包服务人员的基本信息。如图5-4所示。添加操作完成后,界面会自动加载新添加的信息。图5-4信息添加界面本系统修改个人信息的代码如下:@RequestMapping("/querypersonalinfo") @ResponseBody publicMap<String,Object>querypersonalinfo(HttpServletRequestrequest) { Map<String,Object>map=newHashMap<>(); HashMapqueryMap=newHashMap(); intpage=Integer.parseInt(request.getParameter("page")); introws=Integer.parseInt(request.getParameter("rows")); List<Users>users=usersService.quaerAll((1)*rows,rows,2); intcount=usersService.count(2); if(users.isEmpty()){ map.put("status",false); }else{ map.put("status",true); map.put("rows",users); map.put("total",count); } returnmap; }5.2.3项目管理功能模块在项目管理功能模块中,企业管理人员可以有效地执行对外包项目的全方位管理。此模块使得管理人员能够设定项目计划、分配相关任务,并监控这些任务的完成情况。通过这一模块,管理层能够确保每个项目都能按照既定的计划和时间表成功推进。图5-5项目计划管理界面项目计划管理功能支持通过多个条件进行项目计划的搜索、编辑和新增。在任务管理部分,一旦项目计划被确定,系统允许将这些计划内的任务分配给相应的外包服务人员。外包服务人员通过登录系统即可查阅到自己被分配的任务详情。图5-6任务管理界面通过点击“发布”按钮,任务得以发布。在发布过程中,系统会智能地为任务分配一个唯一的任务编号。选定编号并成功后,任务的详细信息将在界面上展示。再次点击“发布”按钮后,界面将刷新,显示出新发布的任务信息。图5-7任务发布界面系统业务逻辑层接口如下所示:publicinterfaceUsersService{ publicUserslogin(Stringid,Stringpassword); publicUsersqueryUsers(Stringname); publicList<Users>quaerAll(intpage,introws); publicList<Users>quaerAll(intpage,introws,inttype); publicList<Agreement>queryAgreement(intpage,introws,Stringu_id); publicintcount(inttype); publicList<Users>quaerAll(intpage,introws,inttype,Usersusers); publicintcount(inttype,Usersusers); publicbooleanupdateInfo(Usersusers); publicbooleanupdateAgreement(Agreementagreement); publicbooleanupdatePlan(Planplan); publicbooleanupdatePlanStatus(Planplan); publicbooleandeleteInfo(intu_id); publicbooleanaddInfo(Usersusers); publicbooleanaddPlan(Planplan); publicbooleanaddAfreement(Agreementagreement); publicbooleanaddAttendance(Attendanceattendance); publicbooleanupdateAttendance(Attendanceattendance); publicList<Users>queryCompany(); publicList<Users>queryDepartment(); publicintagreementCount(); publicList<Plan>queryPlanes(intpage,introws,Planplan); publicintplanCount(Planplan); publicList<Plan>queryTno(Stringstatus); publicList<Plan>queryProject(); publicList<Attendance>queryAttendances(intpage,introws,Attendanceattendance); publicintattendanceCount(Attendanceattendance);}5.2.3签到功能当外包服务人员进入平台后,他们需要在系统内执行签到及签退流程。为了便利,平台还允许用户回顾自己的考勤历史。因此,签到和考勤记录查看功能被设计在同一界面内展示,参见图5-8。图5-8考勤界面系统业务逻辑层接口如下所示:@RequestMapping("/sigin") @ResponseBody publicMap<String,Object>sigin(HttpServletRequestrequest)throwsUnsupportedEncodingException { Map<String,Object>map=newHashMap<>(); HttpSessionsession=request.getSession(); intu_id=(int)session.getAttribute("u_id"); if(u_id==0){ map.put("status",false); map.put("info","无法获取用户id,签到失败!!"); }else{ SimpleDateFormatdf=newSimpleDateFormat("yyyyMMdd"); Stringtime=df.format(newDate()); Attendanceattendance=newAttendance(); attendance.setStart_time(time); attendance.setU_id(u_id); List<Attendance>result=usersService.queryAttendances(-1,-1,attendance); if(!result.isEmpty()){ map.put("status",false); map.put("info","已经签到,无法进行重复操作!"); }else{ SimpleDateFormatdf1=newSimpleDateFormat("yyyyMMddHH:mm:ss"); Stringstart_time=df1.format(newDate()); attendance.setStart_time(start_time); booleantemp=usersService.addAttendance(attendance); if(temp){ session.setAttribute("isin",true); map.put("status",true); map.put("info","签到成功"); }else{ map.put("status",false); map.put("info","签到失败"); } returnmap; } @RequestMapping("/sigout") @ResponseBody publicMap<String,Object>sigout(HttpServletRequestrequest)throwsUnsupportedEncodingException { Map<String,Object>map=newHashMap<>(); HttpSessionsession=request.getSession(); intu_id=(int)session.getAttribute("u_id"); if(u_id==0){ map.put("status",false); map.put("info","无法获取用户id,签到失败!!"); }else{ SimpleDateFormatdf=newSimpleDateFormat("yyyyMMdd"); Stringtime=df.format(newDate()); Attendanceattendance=newAttendance(); attendance.setStart_time(time); attendance.setU_id(u_id); List<Attendance>result=usersService.queryAttendances(-1,-1,attendance); if(!result.isEmpty()){ SimpleDateFormatdf1=newSimpleDateFormat("yyyyMMddHH:mm:ss"); Stringend_time=df1.format(newDate()); attendance.setEnd_time(end_time); booleantemp=usersService.updateAttendance(attendance); if(temp){ map.put("status",true); map.put("info","签退成功!"); }else{ map.put("status",false); map.put("info","签退失败!"); } }else{ map.put("status",false); map.put("info","未签到,无法签退!"); } } returnmap; }系统测试在系统开发完成后,进行综合测试是至关重要的一步,旨在及时识别并修正系统中的错误和不足,确保系统的整体质量。软件工程中,常用的系统测试方法包括黑盒测试和白盒测试。白盒测试关注于软件内部的逻辑结构,将系统视为透明的"白盒",以便于测试内部结构的正确性。相反,黑盒测试将系统视作一个不可见内部结构的"黑盒",重点测试系统的功能性能是否满足需求,而不关心程序内部逻辑。在对本系统进行测试时,我们主要采用了黑盒测试策略。通过运用等价类划分、边界值分析、因果图技术、场景模拟以及错误猜测等多种黑盒测试技术,本系统的功能得到了全面的验证。图6-1展示了系统测试方法的分类概览。图6-1系统测试方法分类图6.1测试环境设置为确保系统测试的准确性和全面性,测试环境如下所设定:客户端操作系统:Windows8.1和Windows7;客户端浏览器:支持多种浏览器,包括Firefox和Chrome;客户端框架:.NETFramework4.5;数据库系统:SQLServer2012;Web服务器:IIS8.0。6.2系统测试策略(1)兼容性测试鉴于不同浏览器可能会引起页面样式的差异或错位,进行兼容性测试至关重要。对于InternetExplorer,使用IETester工具进行专项测试。同时,也包括了对Chrome、Firefox以及Safari浏览器的测试,以确保最大范围的兼容性。在前端开发过程中,采取了编写跨浏览器兼容代码的策略,以减少潜在的兼容问题。(2)功能性测试考虑到系统拥有众多功能模块,此处以用户登录和会员注册功能为例,进行详细的功能性测试说明。这些测试专注于验证系统功能是否按预期工作,确保用户能够无误地完成登录和注册过程。表6.1用户登录测试测试编号测试用户能否成功登录输入操作预期的输出结果输入不正确的用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗决策辅助工具使用沟通
- 极端气候医疗数据中心物理安全升级
- 临沂高三英语琅琊阅读冲刺押题卷
- 胃大部分切除术的围手术期护理
- 26年基层医生基因检测培训指南
- 抗真菌药物在不同组织中的浓度总结2026
- 广东汕尾陆丰市2025-2026学年度第二学期期中教学质量监测高一英语试卷(含答案)
- 2026年美术项目化说课稿模板
- 高中美术设计创作说课稿
- 2025-2026学年江苏省苏州市工业园区星海中学八年级(下)期中物理试卷(含答案)
- DB31/ 581-2019矿渣粉单位产品能源消耗限额
- 廉洁师徒结对协议书
- 全国职业院校技能大赛高职组(商务数据分析赛项)备赛试题库(含答案)
- 《中华人民共和国职业分类大典》(2022年版)各行业职业表格统计版(含数字职业)
- 黑龙江省佳木斯市向阳区立新小学-主题班会-送你一朵小红花期末表彰班会【课件】
- 2024年中国蔬菜种子行业全景速览
- 国家安全学经济安全
- UL1012标准中文版-2018非二类变压器UL中文版标准
- 设备、备品备件采购流程
- 市政工程项目工程量清单及控制价编制方案
- DB32T 4855-2024群体性预防接种疫苗遴选方法
评论
0/150
提交评论