- 5.41 MB
- 2022-05-14 15:02:48 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
鼎牌电器供应链管理系统的设计与实现毕业论文毕业论文中文摘要1毕业论文外文摘要21引言31.1课题背景31.2课题的目的和意义52系统的需求分析62.1系统概述62.1.1系统的一般描述62.1.2系统的运行环境62.2系统技术需求及开发平台介绍72.2.1关于.NETFramework概述72.2.2ASP.NET82.2.3VisualStudio200882.2.4SQLServer2005及SQL语言介绍92.2.5AJAX简介102.2.6IIS112.3系统功能需求133系统的概要设计173.1系统功能设计173.2业务流程图193.3数据流图253.4数据字典284系统的详细设计414.1App_Code文件设计414.1.1数据库连接类的设计424.1.2验证码类的设计434.1.3用户类设计454.2生产模块的详细设计494.2.1母版页的创建494.2.2填制生产计划单页面的详细设计514.2.3计划管理页面的详细设计564.2.4生产进度查询报表的详细设计584.3商务平台的详细设计614.3.1商务平台登录的详细设计614.3.2管理平台的详细设计634.3.3产品信息上传的详细设计644.4安全技术的详细设计674.4.1登录的安全设计674.4.2防止SQL注入式攻击6781
5系统的测试与运行705.1系统功能测试705.1.1功能测试方法的简介705.1.2测试技术分析715.1.3主要测试用例分析设计与执行725.2系统性能测试755.2.1压力测试755.2.2故障恢复测试755.2.3安全性测试765.2.4配置测试765.3测试结果766结论77参考文献78致谢801引言1.1课题背景供应链管理(SupplyChainManagement,SCM)是指围绕核心企业,通过对物流、信息流、资金流的控制,从采购原材料开始,制成中间产品及最终产品,最后由销售网络把产品送到需求者手中,将供应商、制造商、最终用户连成一个链状结构。目前,供应链管理已经受到越来越多企业的重视。资料显示,企业在供应链管理的餐饮、物流、高科技、分销等行业的领先企业纷纷选择供应链管理解决方案建立以信息驱动的价值链,从而提高竞争力和获利能力。供应链业务平台相较于以往的企业价值链中创造价值的部分更加完善,更注重客户与供应商的和谐配合,打造出了一套全球性的、跨组织的、延伸的价值链,利用技术来帮助客户实现价值链业绩的最大化。供应链解决方案帮助企业从关注财务、生产、库存管理等内部需求,转变为重视需求驱动、管理创新、多企业协同等外部需求,即通过供应链生态的全面整合,有效提高企业的竞争优势与经营业绩。81
目前有关价值链管理的研究对象大都集中在大型跨国公司,或大型制造企业上,对中小制造企业的价值链管理的研究与软件系统的开发都很少,而对电力系统中小型制造企业的研究与软件开发则更少。因此针对电力系统中小型制造企业价值链管理的研究与软件开发的既有必要性,更有现实意义。据研究,目前中小型电力产品制造企业的现状是:在供应链中的地位有所增强,但公司各种能力发展不均衡;在整个制造业产品价值链中的竞争力不强。其优势集中在:与电力客户有长期的合作;对市场及本行有一定的了解;与供应商有着长期的业务合作;能提供比较完善的服务体系。弱势主要集中在:设计能力较弱、生产能力差、对供应商管理、订单管理和仓储配送缺少丰富的经验。作为中小型制造企业,在供应链管理上应扬长避短,在整个产品的价值链上,应首先抓住公司的核心业务,如产品生产服务、质量控制、供应商管理等。在这个基础上,再努力寻找并设法提供新增价值来占据供应链中的有利位置。中小型电力产品制造企业应适时建立具有针对性的供应链管理模式,并在此管理模式转变的基础上,实施企业基于供应链导向的信息化管理,使企业的全部的工作业务流程都建立在一个统一的供应链管理软件平台之上,将公司的核心业务和新增价值点集中在高附加值的业务上,把低附加值的工作交给供应商或第三方去做,从而使企业能够适时的抓住机遇,迅速地使企业管理、经营效益和企业规模上升一个更高的水平。目前,从企业应用层面上,国内SCM软件市场的主要特征有以下几点:1.行业性特征明显,主要集中于制造、流通行业。其他行业虽然也有少量应用,但总体来看,投资规模都还比较小。2.从发展方向上看,SCM软件市场规模稳步增大,尽管有些厂商称其已将SCM的功能模块打包到其ERP软件系统当中,但这种整合是否能够获得认可,还有待市场考验。目前,用户在供应链管理方面新增的需求大多还得由独立的SCM软件来满足。此外,伴随企业ERP应用市场的快速成长,部分行业的企业开始增加SCM软件方面的投资。3.SCM软件产品仍属于起步阶段。供应链和物流管理软件,同其管理理论和企业实践一样,属于起步阶段。产品定位、功能、应用架构等呈现百花齐放的局面,尤其是针对中小企业的SCM软件产品尚没有知名产品上市。目前,SCM软件的应用发展趋势主要体现在以下几个方面:81
(1)供应链管理软件的功能将有以下3个特点:实时的可视性,将大大提高供应链执行决策的预见性;灵活性:对供应商的选择更具灵活性;响应性:针对客户需求多变和订交货周期缩短的快速反应能力。(2)SCM系统将在供应链流程管理和事件管理能力方面得到加强。SCM软件将可以使基于事件的实时信息,在企业内逐步提交到适当的人,进行有效的决策。产品将具有更高的可视性和更易于访问的实时信息,执行决策的预见性也将大大提高。(3)SCM软件将与ERP软件日益融合。ERP与SCM软件之间的趋同势头日益明显,随着ERP厂商的逐渐觉醒,他们把越来越多的SCM功能追加到自己的产品中。(4)针对行业的SCM软件将取代通用型产品。传统的SCM系统多以通用型软件方式出现,如Scala、Symix、SAP、PeopleSoft、i2等。然而,由于行业特征多样化,企业对管理软件系统投入有限以及国内企业管理个性化日益突出,导致未来SCM软件都必须是针对各个行业的软件解决方案。(5)SCM软件中的物流模块得到快速的发展。“十五”期间,随着我国流通业结构的战略性调整,企业对物流软件的需求会更大,我国商品流通业将面临更为广阔的发展空间。(6)大型企业仍将是SCM市场的主体。短期内,大企业市场仍是国内SCM的主要市场。中小型企业的市场在今后将迎来一个快速增长的时期。制造、流通、能源在未来几年里仍将是市场的主要部分,未来的SCM市场上,这些行业的应用将是SCM软件市场的主要推动力。1.2课题的目的和意义本课题需求源于江苏电力公司未来几年农电改造工程中对鼎牌电器有限公司产品需求的快速增长,鼎牌电器的核心优势某种程度上就在于它的产品成本竞争优势,而这一低成本优势一大部分来源于其物流渠道效率与质量的优势,就是其物流配送的高效率,低成本、具有实时的弹性配送体系。本课题的实施目的在于帮助企业升级财务、生产、库存管理等内部管理平台,整合企业信息流、资金流和物流,全面服务于基于订单驱动生产与业务的内部管理需求,并重视需求驱动、管理创新、多企业协同等外部需求,通过企业供应链生态的全面整合,有效提高企业的竞争优势与经营业绩。81
中小制造企业供应链管理系统的研发与应用,国内尚处于起步阶段。本项目的研究在于通过研究成果建立一种适用于电力行业中小型制造企业的供应链管理系统,并分析如何充分运用现代信息技术来改造这些企业管理模式及业务流程,提高业务响应速度、降低业务成本,增加经济效益,并建立供应链管理系统的评价体系,对企业管理系统的综合应用情况进行定量比较;同时为今后中小制造企业进行供应链管理和应用供应链管理系统作出积极而有益的探索。2系统的需求分析2.1系统概述2.1.1系统的一般描述该供应链管理系统实施目的在于帮助企业升级财务、生产、库存管理等内部管理平台,整合企业信息流、资金流和物流,全面服务于基于订单驱动生产与业务的内部管理需求,并重视需求驱动、管理创新、多企业协同等外部需求,通过企业供应链生态的全面整合,有效提高企业的竞争优势与经营业绩。开发一个功能齐全,操作简便,向用户展示友善的操作界面,在完善功能的同时又必须兼顾系统的灵活性,安全性,健壮性的供应链管理系统。本管理系统内容包括:基础管理、销售管理、采购管理、仓库管理、生产管理、质量管理、系统管理、商务平台及邮件系统等九大模块。2.1.2系统的运行环境为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。其运行要求如下:1.软件环境客户端:(1)操作系统:Windows2000/XP/2003/Vista/781
(2)网络协议:TCP/IP协议(3)浏览器:InternetExplorer6.0以上版本服务器端:(1)操作系统:WindowsServer2003EnterpriseEdition(2)网络协议:TCP/IP协议(3)WEB服务器:InternetInformationServer6.0(4)数据库:MicrosoftSQLSever2005DeveloperEdition2.硬件环境:(1).服务器CPU:Pentium双核以上,内存:1G以上(2).客户机CPU:P4以上,内存:256M以上2.2系统技术需求及开发平台介绍2.2.1关于.NETFramework概述.NETFramework是支持生成和运行下一代应用程序和XMLWebservices的内部Windows组件。.NETFramework旨在实现下列目标: 1.提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在Internet上分布,或者是在远程执行的。 2.提供一个将软件部署和版本控制冲突最小化的代码执行环境。 3.提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。 5.提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 6.使开发人员的经验在面对类型大不相同的应用程序(如基于Windows的应用程序和基于Web的应用程序)时保持一致。7.按照工业标准生成所有通信,以确保基于.NETFramework的代码可与任何其他代码集成。.NETFramework具有两个主要组件:公共语言运行库和.NETFramework类库。公共语言运行库是.NETFramework81
的基础。您可以将运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。.NETFramework的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面(GUI)应用程序,也包括基于ASP.NET所提供的最新创新的应用程序.NETFramework可由非托管组件承载,这些组件将公共语言运行库加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NETFramework不但提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。2.2.2ASP.NETASP.NET是微软最新推出的用于构建动态、交互式Web内容的开发技术集。ASP.NET并非构建供应链管理系统的唯一的服务器端技术,但其编写的页面都是由负责绘制页面静态部分(模板)的基本HTML和负责生成动态部分的代码所组成的。ASP.NET是允许用户选择并使用功能完善的strongly-type编程语言,也允许使用潜在巨大的.NETFramework。ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。 ASP.NET完全基于模块与组件,具有更好的可扩展性与可定制性,数据处理方面更是引入了许多激动人心的新技术,正是这些具有革新意义的新特性,让ASP.NET远远超越了ASP,同时也提供给web开发人员更好的灵活性,有效缩短了web应用程序的开发周期。ASP.NET与WindowsServer2003的完美组合,为中小型乃至企业级的web商业模型提供了一个更为稳定、高效、安全的运行环境。81
ASP.NET页面的服务器端代码是经过编译和执行的,不是逐行解释的,并且在编译时(而不是运行时)检测大量错误,大大提高了开发效率与性能。后台代码文件把页面的可视化部分与服务器端的逻辑分离开来,结合VS2008开发工具的所见即所得的开发模式和事件驱动的方法有助于开发更为简单。2.2.3VisualStudio2008VisualStudio2008是Microsoft最新的正式发布的集成开发环境(IDE),用于构建和部署功能强大而安全的连接Microsoft.NET的软件。VisualStudio.2008包含Windows.NETFramework的一个增强版本。.NETFramework3.5版在前一版本的基础上增添了新的能力、功能增强和文档改进。通过对.NETCompactFramework的集成支持,VisualStudio2008将移动和嵌入式设备,如PocketPC和其他采用MicrosoftWindowsCE操作系统的设备,带入.NET。如今,开发人员能够使用同样的编程模型、开发工具及编程技能,来构建应用范围广泛--从小设备到最大的数据中心--的应用程序。包含了:MicrosoftVisualBasic.NET,MicrosoftVisualC++.NET,MicrosoftVisualC#,MicrosoftVisualWebDeveloper。同时,VisualStudio2008是用于快速创建和集成XMLWeb服务和应用程序的综合工具,它可大大提高开发人员的效率并带来新的商业机会。利用集成功能,利用组织内的现有投资并简化与客户和贸易伙伴的业务处理。开放式结构使开发人员能够使用任何面向Microsoft.NET框架的语言并发扬现有的开发技能,而无需昂贵而大量的再培训。VisualStudio2008基于最新的MicrosoftWindows服务器平台而创建,因此内置了应用程序的可缩放性、可靠性和安全性,简化了生成环境中应用程序的管理和部署并降低了应用程序生命周期的总体成本。2.2.4SQLServer2005及SQL语言介绍MicrosoftSQLServer是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。MicrosoftSQLServer2005为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。81
通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,MicrosoftSQLServer2005为不同规模的企业提供了一个完整的数据解决方案。MicrosoftSQLServer2005也提供了很多个新特性来节省精力、时间和金钱。从编程到管理能力,这个版本的SQLServer都优于其他版本的产品,并且它还对SQLServer2000中已经存在的特性进行了加强。SQL(StructuredQueryLanguage,结构化查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成绝大多数数据库的操作。SQL语言的突出优点就是它的非过程化、统一,而且还是所有关系数据库的公共语言。SQL语言一次处理一个记录,对数据提供自动导航,它允许用户在高层的数据结构上工作,而部队单个记录进行操作,可操作记录集,所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。同时,它不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。作为统一的语言,SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。SQL语句概括起来可以分为数据操作语言,数据定义语言和数据控制语言几大组,它们用于对数据库数据的查询,修改和更新,是一种完备的数据处理语言。主要用到的数据操作语言主要是:SELECT:用于数据检索,它是T-SQL的核心;INSERT:用于插入数据到数据库;UPDATE:用于从数据库中修改现存的数据;81
DELETE:用于从数据库中删除数据。2.2.5AJAX简介Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。虽然Ajax所需的基础架构已经出现了一段时间,但直到最近异步请求的真正威力才得到利用。能够拥有一个响应极其灵敏的Web站点确实激动人心,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈创建“桌面风格的(desktop-like)”可用性。Ajax的核心是JavaScript对象XmlHttpRequest。该对象在IE5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:•动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。•消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。81
直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。2.2.6IISIIS是InternetInformationServer的缩写,它是微软公司主推的服务器,它与WindowNTServer完全集成在一起,因而用户能够利用WindowsNTServer和NTFS(NTFileSystem,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。IIS支持HTTP(HypertextTransferProtocol,超文本传输协议),FTP(FileTransferProtocol,文件传输协议)以及SMTP协议,通过使用CGI和ISAPI,IIS可以得到高度的扩展。IIS支持与语言无关的脚本编写和组件,通过IIS,开发人员就可以开发新一代动态的,富有魅力的Web站点。IIS不需要开发人员学习新的脚本语言或者编译应用程序,IIS完全支持VBscript,Jscript开发软件以及Java,它也支持CGI和WinCGI,以及ISAPI扩展和过滤器。IIS的设计目的是建立一套集成的服务器服务,用以支持HTTP,FTP和SMTP,它能够提供快速且集成了现有产品,同时可扩展的Internet服务器。IIS相应性极高,同时系统资源的消耗也是最少,IIS的安装,管理和配置都相当简单,这是因为IIS与WindowsNTServer网络操作系统紧密的集成在一起,另外,IIS还使用与WindowsNTServer相同的SAM(SecurityAccountsManager,安全性账号管理器),对于管理员来说,IIS使用诸如PerformanceMonitor和SNMP(SimpleNerworkManagementProtocol,简单网络管理协议)之类的NT已有管理工具。IIS支持ISAPI,使用ISAPI可以扩展服务器功能,而使用ISAPI过滤器可以预先处理和事后处理储存在IIS上的数据。用于32位Windows应用程序的Internet扩展可以把FTP,SMTP和HTTP协议置于容易使用且任务集中的界面中,这些界面将Internet应用程序的使用大大简化,IIS也支持MIME(MultipurposeInternetMail81
Extensions,多用于Internet邮件扩展),它可以为Internet应用程序的访问提供一个简单的注册项。IIS的一个重要特性是支持ASP。IIS3.0版本以后引入了ASP,可以很容易的张贴动态内容和开发基于Web的应用程序。对于诸如VBScript,JavaScript开发软件,或者由VisualBasic,Java,VisualC++开发系统,以及现有的CGI和WinCGI脚本开发的应用程序,IIS都提供强大的本地支持。2.3系统功能需求本供应链管理系统内容包括:基础管理、销售管理、采购管理、仓库管理、生产管理、质量管理、系统管理、商务平台及邮件系统等九大模块。各模块功能需求如下表所列:模块名称功能需求基础管理基础信息包括物料信息、人员信息、BOM、工艺路线、供应商、客户、计量单位、仓库、货区、货位等,需求分析要求提供对这些基础信息的新增、修改、删除、查询等操作。销售管理销售管理是生产物流管理的推动源。销售主要以合同为主,辅以订单,对企业销售业务的执行过程跟踪和管理。销售管理的主要功能需求如下:(其中前四个单据关联性较大,相互衔接。)1.根据客户合同或零散订单及当前产品的库存状况,进行客户订单的编制和审核,并提供查询和订单打印的功能。2.在通过审核的客户订单基础上,进行销售出库单的编制和批准,并提供查询和出库单打印的功能。3.根据通过批准的销售出库单,进行销售台账的编制,并提供销售台账的编辑、查询、打印的功能。4.依据客户订单状况,进行送货单的编制,并提供送货单的编辑、删除、查询、打印的功能。5.根据实际退货情况,进行退货单的编制和管理。6.依据产品维修情况,进行维修单的编制和管理。7.相关的报表81
还包括销售统计报表、维修统计报表、退货统计报表和客户订单完成情况报表。采购管理采购是物料在企业里流动的起点,也是企业和外部交互的关键部分。它是根据主生产计划等获得采购物需求信息,与供应商签订订单,采购货物,传送给仓库。它需要同生产计划、质量管理、仓库、财务等进行交互。采购管理的主要功能需求如下:1)采购计划根据物料需求计划及目前物料的库存状况,制定出科学的采购计划,可以进行采购计划的审核。2)采购订单采购订单管理及根据已经审核的采购计划,给供货商下对应的采购订单,提供订单跟踪查询功能。3)采购收/退货根据采购订单进行采购收货,经质量检验操作,质量合格则可以入库,不合格填写退货单。4)采购结算收货后录入采购发票,付款后录入付款信息,并提供查询功能。仓库管理仓库是物流管理的中心环节,是进行货物流动、循环管理控制的系统。它从采购、生产接受原材料、半成品、外协件、成品入库,进行入库处理;同时它向生产提供原材料、半成品、外协件,并进行出库处理,而且它还向销售提供成品货物,进行出库处理进入销售流程。它需要同销售、采购、生产、质检、财务等部门进行交互。仓库管理的需求功能如下:1.入库管理:有新增(手工新增、选单生成(订单发票))、审核、修改、作废、删除、打印、引出等功能。2.出库管理:新增(手工新增、选单生成(订单发票)、复制新增)、审核、修改、作废、删除、打印、引出。3.库存盘点:有盘点清单的生成、打印功能;查询盘点表,盘点信息的录入等。4.库存报损:物品报损的录入,查询和打印及审核、批准等管理功能。5.库存调整:根据盘点结果,可进行调整单的编制,并提供审核、批准等功能以实现最终库存的调整。6.报表管理:提供多种查询方式,比如出入库日报表,可按日期、物料名称、物料编码等。81
生产管理生产管理包括生产计划和车间管理两部分。计划管理是系统的核心部分,总体上体现从计划到执行控制再到决策分析的管理思想。1)生产计划生产计划是一个总的产品的生产计划。它针对产成品、主要半成品这样一类独立需求的物料进行计划。它是市场需求和工厂产能之间的桥梁。生产计划是根据销售订单、销售预测、年度计划、考虑库存、BOM等因素而得到。它考虑到能力的制约因素和实际情况的影响。包括:生产计划的建立;生产计划的修改、删除;生产计划的查询等。可以对其进行修改。2)执行计划管理由于市场的动态性,不能完全以生产计划来组织生产,而是制定短期的执行计划,作为组织生产的依据。包括:执行计划的建立;执行计划的修改、删除;执行计划的查询;执行计划的完工等。3)外协计划管理外协计划是针对由外协单位进行加工的生产计划。4)生产任务由车间根据执行计划,制定本车间的生产任务。包括:生产任务的建立;生产任务的修改、删除;生产任务的查询;生产任务的完工等。5)派工根据生产任务单、生产设备及人员的生产状态进行安排工作。对每个生产工序(生产人员)安排合适的生产任务。6)生产领料计划根据生产任务单、派工及工艺文件建立生产领料计划,由仓库人员进行配料并送到生产现场,生产人员接收后签字后进行生产加工作业。7)生产完工生产完工包括派工及生产任务的汇报,主要汇报开工日期、生产数量等。可以分班组人员、生产线进行汇报,并可多次汇报。8)报表管理提供各种报表及查询功能。如生产月报表可按产品、操作者、时间等生产报表。查询可单号、产品、时间等进行查询。81
质量管理质量管理是整个生产系统的监督者,它贯串于整个生产过程。无论是采购、生产、仓库、还是销售都需要质量管理。这里采用把质量管理独立出来的方式进行质量管理,而不是采用把质量管理紧密集成到其它中的方式。它需要同采购、仓库、销售、生产进行交互。质量管理主要包括进货检验管理、成品检验管理、外协件检验、半成品检验、关键元器件检验、车间工序过程检验等环节。商务平台商务平台是利用网络实现与上游供应商及下游客户的联系,实现企业间数据共享,支持企业间商贸活动和协同工作。通过商务平台,让供货商方面能及时的了解到制造企业的需求,让制造企业了解供应商的生产情况;让制造企业了解客户的需求,让客户了解制造企业的生产情况等。1)客户和供应商登录管理——凡进入公司系统的客户/供应商均有相应的权限方可登录。2)招标信息上传:客户可在此模块将招标信息上传至本系统,并可进行编辑、删除操作。3)合同信息上传:客户可在此模块将合同信息上传至本系统,并可进行编辑、删除操作。4)订单信息上传:客户可在此模块将订单信息上传至本系统,并可进行编辑、删除操作。5)信息查询:客户可查询自身的合同、订单信息,本公司的相关部门也可通过此模块进行各客户、合同、订单的查询。6)采购信息查询:供应商可通过此模块查询我公司的采购信息。7)采购订单下载:供应商可通过此模块下载采购订单,进行采购物料的准备。8)外协计划查询:外协生产厂商可通过此模块查询我公司的外协生产计划信息。9)外协计划下载:外协生产厂商可通过此模块下载我公司的外协生产计划。系统管理81
系统管理模块的需求包括:部门设置、人员信息、权限设置、登录信息和错误日志。部门设置即包括对公司各部门的新增、修改和删除等操作功能;人员信息设置就是在部门设置完毕的基础之上进行人员的新增、修改和删除,并对应人员的部门归属;而权限设置则是明确人员在该系统能访问的模块和相关的操作权限;登录信息则是提供给系统管理员查看系统所有人员的登录情况;错误日志则是记录每次系统错误的信息,方便日后维护。邮件系统供应链管理系统内部通信,包括邮件的收发、删除、联系人等功能。表2.1系统功能需求3系统的概要设计3.1系统功能设计本系统为鼎牌电器供应链管理系统,顾名思义,本系统是以鼎牌电器有限公司的组织结构和业务流程为蓝本进行设计的,从各方面考虑,本系统集成了九大模块,包括基础管理、销售管理、采购管理、仓库管理、生产管理、质量管理、系统管理、商务平台及邮件系统。整个系统的组织结构图如图3.1所示:图3.1鼎牌电器供应链管理系统组织结构图各模块的功能阐述如下:1.登录模块输入用户名,如果用户名和密码正确,则进行如系统,否则提示用户错误81
同时该模块中提供找回密码的途径,即按照设定的问题,回答正确则可以重新设定密码。2.系统管理该模块只提供给管理员或具有管理员级别权限的人员访问,包括部门设置、人员信息、权限设置、登录信息、错误日志五种功能。部门设置即包括对公司各部门的新增、修改和删除等操作功能;人员信息设置就是在部门设置完毕的基础之上进行人员的新增、修改和删除,并对应人员的部门归属;而权限设置则是明确人员在该系统能访问的模块和相关的操作权限;登录信息则是提供给系统管理员查看系统所有人员的登录情况;错误日志则是记录每次系统错误的信息,方便日后维护。3.基础管理基础数据是整个系统操作的根本,没有它们系统就无法运转,在这一模块中同样设定具有相关权限的人员才能访问该模块。基础信息包括物料信息、人员信息、BOM、工艺路线、供应商、客户、计量单位、仓库、货区、货位等,所有设置都包括新增、修改、删除、查询等操作,而这些操作都分到了具体的操作权限,需具备相关操作权限的人才能使用。4.邮件系统在当今社会,通信起到越来越重要的作用,手机,信件、邮件等。使用本系统的人员处于不同的部门,某些模块间或有相互关联或人员间因工作需要沟通,由此我在本系统中提供了类似邮件的通信功能,方便人员的交流。该邮件系统包括收信、写信、草稿、删除和通讯录等邮件的功能,能基本满足通信需要。5.销售管理销售是任何企业都有的环节,在这里我从订单出发设计,同时考虑到售后服务环节和最终企业需要的报表。该模块中包括销售订单管理、客服管理和报表管理三部分;订单管理中从订单编制、销售出库、销售台帐到送货单四环节前后衔接紧密;客服管理中则有退货和维修两种单据的编制及管理;而报表管理中则提供销售统计、维修统计、退货统计、客户订单完成情况四种报表查询。在其中每个环节或单据都设置相应的编制、审核或批准、查看、打印功能,必须具有相应权限的人员才能使用。6.采购管理81
采购是物料在企业里流动的起点,也是企业和外部交互的关键部分,是进行货物流动、循环管理控制的系统。它需要同销售、采购、生产、质检等部门进行交互。采购管理包括了采购计划、采购订单、收货登记、免检单审核、入库退货、发票登记、付款登记和采购统计等功能。同样,每个环节都设置相应的编制、审核或批准、查看、打印功能,必须具有相应权限的人员才能使用。7.仓库管理仓库是物流管理的中心环节,是进行货物流动、循环管理控制的系统。它需要同销售、采购、生产、质检等部门进行交互。仓库管理主要分为库存业务处理和报表服务两部分。库存业务处理包括库存初始化、入库、出库、报损、盘点和调整等操作,其中库存初始化即在系统启用之初进行设置,并且只唯一一次,过后该功能将不能再使用,而其他操作都包括了编制、编辑、删除、审核、批准、查看、打印等操作功能,需要说明的是上述提到的所有操作,都需要具备相关权限才能进行操作。而库存报表服务则是对上述操作的记录体现,提供各种查询和打印功能。8.生产管理生产管理包括生产计划和车间管理两部分。计划管理是系统的核心部分,总体上体现从计划到执行控制再到决策分析的管理思想。生产计划主要包括生产计划、执行计划和外协计划的制定;而车间管理则是车间在接到计划后形成任务到派工、领料、完工、送检的过程体现,另外本模块中同样提供相关报表服务。同样所有操作都进行了详细的权限划分,非授权操作将不能使用。9.质量管理质量管理是整个生产系统的监督者,它贯串于整个生产过程。无论是采购、生产、仓库、还是销售都需要质量管理。质量管理也主要分为检验和统计两大部分,同样具有相关网页访问权限和操作权限的人才能使用。10.商务平台81
商务平台是利用网络实现与上游供应商及下游客户的联系,实现企业间数据共享,支持企业间商贸活动和协同工作。该模块独立于其他模块,需另外登录,并且里面每个用户都有严格的数据保密,即只能上传、下载、浏览自己的资料和公共资料。3.2业务流程图系统的整体业务流程图如下所示:81
图3.2.1系统业务流程图81
图3.2.2仓库管理业务流程图81
图3.2.3生产管理业务流程图81
图3.2.4质量管理业务流程图81
图3.2.5销售管理业务流程图图3.2.6采购管理业务流程图81
3.3数据流图系统数据流程图如下:图3.3.1系统数据流图81
图3.3.2仓库管理数据流图81
图3.3.3生产管理数据流图图3.3.4质量管理数据流图81
图3.3.5销售管理数据流图图3.3.6采购管理数据流图3.4数据字典字段名称类型字符长度是否为空说明id整数4否序号produceplanid字符20否计划单编号plantype字符20否计划类型plandate日期8否计划日期wxunit字符50是外协单位81
productcode字符30否产品编码quantity浮点型8否数量completedate日期8否完工日期workorder字符8否工作令condition字符20否状态notes字符60否备注tablemaker字符20否制表人reviewer字符60是批准人approved布尔2否批准标记表3.4.1生产计划表字段名称类型字符长度是否为空说明producetaskid字符20否生产任务单号taskfrom字符20是来源单位producepartment字符12否生产车间date日期8否编制日期month整数4否月份id整数4否序号productcode字符18否产品编码planquantity浮点8否计划数量completequantity浮点8否完工数量startdate日期8否开工日期completedate日期8否完成日期condition字符8否状态Notes字符60是备注tablemaker字符10否制单人reviewers字符10是审核人reviewed布尔2是审核标记Approver字符10是批准81
approved布尔2是批准标记表3.4.2生产任务表字段名称类型字符长度是否为空说明givejobid字符12否派工/完工单号producetaskid字符12否生产任务单号id整数4否序号taskid整数4是任务序号productcode字符30否产品编码productnumber浮点8否产品计划数量givejobtime日期8否派工日期Worker字符50否操作者Process_id字符50否工艺序号processname字符50否工序名称Material_id字符20否物料编码Planquantity浮点8否物料计划数量Startdate日期8否开工日期completequantity浮点8否完成数量completedate日期8否完工日期condition字符8否情况notes字符60是备注tablemaker字符8否制单Reviewers字符10是审核人Reviewed布尔2是审核标记approver字符10是批准人Approved布尔2是批准标记getmaterial浮点8否剩余领料数量checked布尔2否派工送检标记81
表3.4.3派工表字段名称类型字符长度是否为空说明pgetmaterialid字符20否领料单编号givetaskid字符20否派工单号id整型4否序号productname字符40否产品名称getpartment字符40否领料部门getdate日期8否领料日期processname整数8否工序名称materialid字符16否物料编码taskquantity浮点8否任务量unitusequantity浮点8否单位用量planquantity浮点10否计划数量usequantity浮点10否领用数量outcangku字符20否出库仓库huowei字符30是货位tablemaker字符10是制单人ckmanager字符10否仓库主管ckok布尔2否仓库签字标记cjmanager字符10否车间主管cjok布尔2否车间签字标记out浮点8否剩余领料数量checked布尔2否外协送检标记表3.4.4领料表字段名称类型字符长度是否为空说明id整型4否自增序号inwarehouseid字符20否单据编号81
frompartment字符50否来料单位businesstype字符16否业务类型fromid字符20是来源单据号warehouse字符20否仓库indate日期8否入库日期materialid字符30否物料编码quantity浮点8否数量perprice浮点8是单价totalprice浮点8是总价taxmoney浮点8是税率huowei字符20否货位notes字符60是备注getperson字符50否收货人approver字符30是批准人approved布尔2否批准标记表3.4.5入库表字段名称类型字符长度是否为空说明id整型4否自增序号getmaterialid浮点20否领料单编号producetaskid整数12否生产任务单号useway字符20否用途getpartment字符16否领料部门getdate日期8否领料日期materialid字符16否物料编码wantquantity浮点10否请领数量getquantity浮点10否实领数量perprice浮点10是单价totalprice浮点10是总价81
cangku字符16否仓库huowei字符16否货位notes字符60是备注givematerialperson字符10否发料人getmaterialperson字符10否领料人approver字符10否审批人approved布尔2否审批标记表3.4.6出库表字段名称类型字符长度是否为空说明id整型4否自增整型bsid字符20否单据编号bspartment字符20否报损部门businesstype字符20否类别warehouse字符16否仓库bsdate日期8否报损日期Material_id字符30否物料编码quantity浮点10否数量perprice浮点10否单价totalprice浮点10否总价huoweiid字符20否货位编号bsreason字符60是报损原因treatmentway字符4否处理方式treatmentdetails字符30否处理细节supplier字符50否供应商baoguan字符10否保管员jingban字符10否经办人reviewed布尔2否审核标记reviewers字符10否审核人81
approved布尔2否批准标记approver字符10否批准人表3.4.7报损表字段名称类型字符长度是否为空说明id整型4否自增序号pdid字符20否盘点单编号warehouse字符16是仓库pddate日期8否盘点日期Material_id字符16否物品编号huowei字符10否货位accountquantity浮点10否账面数量pdquantity浮点10否盘点数量pdperson字符10是盘点人Review_quantity浮点10否复核数量Review_person字符10否复核人notes字符60是备注approver字符50是审核人approved布尔2否审核标记表3.4.8盘点表字段名称类型字符长度是否为空说明id整型4否自增序号tzid字符12否调整单编号tzdate日期8否调整日期warehouse字符16否仓库Material_id字符16否物料编码浮点8否调整前库存数量81
oldquantityquantity浮点8否调整后库存数量perprice浮点8否单价totalprice浮点8是总价huowei字符16否货位notes字符60是备注baoguan字符10否保管人jingban字符10否经办人reviewer字符10否审核人reviewed布尔2否审核标记approver字符10否批准人approved布尔2否批准标记表3.4.9调整表字段名称类型字符长度是否为空说明Id整型4否记录自增序号Date日期8否记录日期Materialid字符30否物料编码yesterdaysave浮点8否昨日库存数yesterdaysavemoney浮点8否昨日结存todayin浮点8否今日入库数todayinmoney浮点8否今日入库金额todayoutmoney浮点8否今日出库金额todayout浮点8否今日出库数todaysavemoney浮点8否今日结存todaysave浮点8否今日结存数notes字符80是备注表3.4.10物料收发存日报表81
字段名称类型字符长度是否为空说明shoufatype字符20否收发类别Id整型4否自增序号year字符4否年month字符2否月materialid字符30否物料编码lastmonthnumber浮点8否上月结存数量lastmonthmoney浮点8否上月结存金额monthoutmoney浮点8否本月出库金额monthoutnumber浮点8否本月出库数量monthinnumber浮点8否本月入库数量monthinmoney浮点8否本月入库金额monthsavenumber浮点8否本月结存数量monthsavemoney浮点8否本月结存金额notes字符100是备注表3.4.11收发类别汇总表字段名称类型字符长度是否为空说明Id整型4否自增序号Order_id字符20否订单号Customer_name字符50否客户名称htid字符20是合同号materialid字符30否物料编码quantity浮点8否订单数量perprice浮点8否单价totalprice浮点8否总价Delivery_date日期8否交货日期Delivery_address字符20否交货地点Notes字符60是备注81
approved布尔2否审核标记Approver字符16否审核人xsck布尔2否编制销售出库单标记表3.4.12客户订单表字段名称类型字符长度是否为空说明Id整型4否自增序号Customer_name字符50否客户名称xsoutid字符50否销售出库单号outdate日期8否编制日期Orde_id字符20否订单号Material_id字符30否物料编码quantity浮点8否出库数量Warehousemanager字符50否仓库主管Signed布尔2否签字标记Notes字符60否备注Xstz布尔2否记录销售台账标记Out浮点8否剩余未出库数表3.4.13销售出库表字段名称类型字符长度是否为空说明Id整型4否自增序号Accounting_date日期8否记账日期jingban字符8否经办人Sale_date日期8否销售日期Order_id字符20否订单号Material_id字符30否物料编码zbid字符25是招标号quantity浮点8否记账数量81
Perprice浮点8否单价Totalprice浮点8否总价Notes字符60是备注Shd浮点8否剩余送货数量Delivery_date日期8否交货日期表3.4.14销售台帐表字段名称类型字符长度是否为空说明Id整型4否自增序号Delivery_id字符20否交货单号Customer_id字符20否客户序号Order_id字符20否订单号Material_id字符16否物料编码tzquantity浮点8否台账数量shquantity浮点8否送货数量Notes字符60是备注表3.4.15送货表字段名称类型字符长度是否为空说明Id整型4否自增序号returnid字符20否退货单号Return_date日期8否退货日期Order_id字符20否订单号Zbid字符25是招标号htid字符25是合同号Material_id字符30否物料编码Return_perprice浮点8否退货单价quantity浮点8否退货数量81
Totalprice浮点8否总价warehouse字符20否仓库huowei字符20否货位jingban字符10否经办人reviewer字符10否审核人reviewed布尔2否审核标记approver字符10否批准人approved布尔2否批准标记notes字符60是备注表3.4.16退货表字段名称类型字符长度是否为空说明Id整型4否自增序号Wxid字符20否维修号customername字符20否客户名称Order_id字符20否订单号Material_id字符20否物料编码quantity浮点8否维修数量Givetime日期8否送修时间completetime日期8否完成时间jingban字符10否经办人Notes字符60否备注表3.4.17维修记录表字段名称类型字符长度是否为空说明Id整型4否自增序号receiver字符20否收信人title字符50否标题txtcontent字符1000否信件内容81
writer字符20否写信人time日期8否写信时间wcondition字符8否写信情况rcondition字符8否阅读情况isread布尔2否信件阅读标记表3.4.18邮件记录表字段名称类型字符长度是否为空说明Id整型4否自增序号Material_id字符30否物料编码Material_name字符60否物料名称Material_type字符100否规格型号Material_model字符100否物料类型Material_unit字符20否单位Material_amount浮点8否库存数量refer_purchase_price浮点8否参考进价maximum_purchase_price浮点8否最高进价reference_price浮点8否参考售价minimum_price浮点8否最低售价single_size_in字符10否单只尺寸single_weight_in字符10否单只重量quantity_per_out字符10否每箱数量carton_size_out字符10否每箱尺寸batch_management布尔2否进行批号管理notes字符100是备注huowei字符20是货位warehouse字符20是仓库allocated_amount浮点8否已分配量available_volume浮点8否可用量81
init布尔2否初始化标记safe_quantity浮点8否安全库存表3.4.19物料信息表字段名称类型字符长度是否为空说明id整数3否自增序号product_code字符16否产品编码product_name字符40否产品名称product_type字符60否规格型号product_pic字符200是产品图路径notes字符40是备注表2.4.20产品目录表字段名称类型字符长度是否为空说明id整数4否自增序号suppliername字符40否供应商名称purchase_name字符40否采购单名称purchase_code字符20否采购单编号uploadtime日期8否上传时间path字符200否附件路径notes字符40是备注表2.4.21采购附件表4系统的详细设计4.1App_Code文件设计App_Code文件夹是在创建网站时,系统用于存放非编译的源代码而自动生成的文件夹81
。它位于Web应用程序根目录下,其存储所有应当作为应用程序的一部分动态编译的类文件。这些类文件自动链接到应用程序,而不需要在页面中添加任何显式指令或声明来创建依赖性。App_Code文件夹中放置的文件包括用户创建的自定义类和其他源文件代码,需要说明的是其中不能存放用户控件。因为App_Code文件夹中的源代码要编译成单个程序集,所以App_Code文件夹中的所有文件必须使用相同的编程语言编写。例如,App_Code文件夹不能同时包含采用VisualBasic和C#编写的源代码。但是,可以对Web应用程序进行配置,将App_Code文件夹的子文件夹作为独立的可编译单元处理。这样,每一个文件夹就可以包含以不同编程语言编写的源代码。通过在Web.config文件的codeSubDirectories元素中创建一个compilation元素,然后添加一个对子文件夹的引用,即可指定该配置。下面的示例阐释如何对名为VBCode和CSCode的子文件夹进行配置,使其编译成不同的程序集: 对VBCode和CSCode子文件夹的引用并不需要包括任何有关子文件夹中所包含的编程语言的信息。就像对待App_Code文件夹本身一样,ASP.NET会根据子文件夹中的文件来推断要使用的编译器。4.1.1数据库连接类的设计类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。在本系统中与数据库的交互很频繁,而每次进行交互就需要建立数据库的连接,这样设计一个数据库连接类是很好的,最主要的是它可以减少维护工作量,即在数据库信息发生变化时,只需修改类就行了,而不需对每个实例做大量的重复工作。类设计的代码如下:publicclassDB{publicstaticSqlConnectioncreate(){ReturnnewSqlConnection(ConfigurationManager.ConnectionStrings.81
["dpsecondConnectionString"].ConnectionString);}}创建此类时,首先需引用命名空间System.Data.SqlClient。此类中包括一个静态函数,静态的好处在于创建数据库连接时不需要将类实例化,直接引用就可以了,减少了代码工作量。在这个静态函数中直接返回一个SqlConnection连接,从函数构造可以看出具体的链接字符串取自于web.config文件中,而这段字符实际为"DataSource=.;InitialCatalog=dpsecond;PersistSecurityInfo=True;UserID=dp2;MaxPoolSize=3000;ConnectionLifetime=30",其中DataSource指定具体的服务器,而"."即为本地服务器的意思,InitialCatalog=dpsecond就是指定具体的数据库为dpsecond,PersistSecurityInfo=True就是说明ADO.NET在数据库连接成功后保存密码信息,UserID=dp2就是指定用dp2这个用户来进行数据库交互,MaxPoolSize=3000就是指定连接池最大数为3000,;ConnectionLifetime=30就是连接在建立超过了30秒后会被销毁。4.1.2验证码类的设计验证码是一种区分用户是计算机和人的公共全自动程序。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。验证码可以有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。本系统中有商务平台模块,而其是对外公开的,需要用户登录,为防止恶意登录和暴力破解等,故设计了验证码。设计的具体的代码如下:publicclassValidateCode{publicValidateCode(){}privatestringRndNum(intVcodeNum){stringVchar="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";81
string[]VcArray=Vchar.Split(newchar[]{","});//拆分成数组stringVNum="";//记录产生的随机数inttemp=-1;//记录上次随机数值,尽量避免产生几个同样的随机数Randomrand=newRandom();for(inti=1;i。本系统中设计的母版页布局如图4.2.1所示,本系统中站点菜单导航条采用仿亚马逊导航条的设计方式,html代码如下:基础管理 采购管理 商务平台 仓库管理 生产管理 商务平台 CSS代码如下:body{font-size:12px;text-align:center;margin-top:2px;font-family:Verdana;}ul,li{list-style-type:none;margin:0;padding:0;float:left;}#nav{height:30px;margin-left:auto;margin-right:auto;}#navli{margin-left:1px;height:30px;}#navlia{display:block;float:left;text-decoration:none;background-image:url(pic/bg1.GIF);background-repeat:no-repeat;display:block;81
background-position:lefttop;}#navaspan{cursor:hand;color:#000;background-image:url(pic/bg2.GIF);background-repeat:no-repeat;display:block;background-position:righttop;padding:7px10px6px10px;float:left;}#navlia:active,#navlia:hover{margin-top:0px;}#navlia:activespan,#navlia:hoverspan{padding:10px10px6px10px;margin-top:0px;display:block;}图4.2.1母版页布局4.2.2填制生产计划单页面的详细设计生产计划是企业实行生产的源头计划,本页面的设计尽量考虑到了操作的简便性,即减少操作人员的字符输入和操作点击。基于这样的考虑,我将整个内容也分成了上中下三个操作区,上部用于制单,下部用于呈现制单需要的基础信息,而中间部分则用来显示查询条件,方便操作人员快速定位到相关基础信息。实际设计时我用两个Panel控件将内容也分为三个部分,内容也的上部为具体的计划信息,下部为基础物料信息,中间空的框架用于显示选中的物料信息,具体的界面设计如图4.2.2所示:81
图4.2.2填制生产计划单具体的设计是这样的,首先在本系统中都设置一定的访问权限和操作权限,则每次访问网页时都必须做出判断了,而最先需要验证的就是访问权限了。验证的代码如下所示:workeruser=newworker();if(user.Entry_page()==false){Response.Write("alert("对不起,您没有权限访问该页!");history.go(-1);");}else{lblname.Text=user.worker_name;}生产计划都有一个单号,并且这是它的唯一标识,而且生产计划单号应当具有统一的编码风格,因此它不应该由操作员工输入,而应该有系统生成。单号的生产方式有多种,最简单就是取当前的时间作为标识,但这样不利于人员记忆,由此需设计一个生成连续单号的办法。我的方法是这样的,取年份末两位和月份,然后搜索数据库中现存本月的单据号数加就生成新单号,其中月份以两位数表示,不足两位的前置0。代码设计如下:if(!IsPostBack){81
Session["produceplan"]=null;stringproduceplanid="SC"+DateTime.Now.ToString("yyMM");SqlConnectioncon=DB.create();con.Open();SqlCommandcmd=newSqlCommand("selectcount(distinct(produceplanid))fromtbproduceplanwhereproduceplanidlike"%"+produceplanid+"%"andplantype="生产计划"",con);intcount=Convert.ToInt32(cmd.ExecuteScalar());count=count+1;produceplanid+=count.ToString("000");lblproduceplanid.Text=produceplanid;cmd.Dispose();con.Close();con.Dispose();txtplandate.Text=DateTime.Now.ToShortDateString();}If(!IsPostBack)的作用在于每次加载页面时生成一个生成计划单号,在刷新页面时单号不会改变,这样保证看单号在一定时间内的一致,除非重新加载。count.ToString("000")作用是将单据的数目格式化成3位。基础信息的呈现方式是这样的,通过数据库查询语言将结果返回给SqlDataSource控件。SqlDataSource控件指定为GridView控件的数据源。通过查询条件的筛选,我们将选中的记录添加到制单区域。制单区域的呈现方式也类似,但也有所区别。区别在于,这次GridView控件的数据源不再是SqlDataSource控件了,而是缓存session中的生成的DataTable了。再页面加载之处就生存一个无数据的DataTable放在session中,待选中记录后在向DataTable中添加数据,然后再绑定到GridView,这样数据显现出来了。生成DataTable的代码如下:if(Session["produceplan"]==null){DataTabledt=newDataTable();dt.Columns.Add(newDataColumn("productcode"));dt.Columns.Add(newDataColumn("productname"));dt.Columns.Add(newDataColumn("type"));dt.Columns.Add(newDataColumn("unit"));dt.Columns.Add(newDataColumn("quantity"));dt.Columns.Add(newDataColumn("completedate"));dt.Columns.Add(newDataColumn("producepartment"));dt.Columns.Add(newDataColumn("notes"));Session["produceplan"]=dt;GridView1.DataSource=dt;81
GridView1.DataBind();}向DataTable中添加记录的代码如下:privatevoidadd(GridViewRowaddrow){DataTabledt=Session["produceplan"]asDataTable;DataRowdr=dt.NewRow();dr[0]=addrow.Cells[1].Text;dr[1]=addrow.Cells[2].Text;dr[2]=addrow.Cells[3].Text;dr[3]=addrow.Cells[4].Text;dt.Rows.InsertAt(dr,0);Session["produceplan"]=dt;GridView1.DataSource=dt;GridView1.DataBind();}添加记录后的界面如图4.2.3所示:图4.2.3添加记录由图中看出,很明显再未填完剩余空白信息前,不能提交制单,须将必填信息填完并保存才可以,保存的后台代码如下所示:protectedvoidlbtnok_Click(objectsender,EventArgse){GridViewgv=GridView1;DataTabledt=Session["produceplan"]asDataTable;for(inti=0;iif(confirm("制单成功!打印生产计划?")){window.open("printplan.aspx?produceplanid="+produceplanid+"")}else{history.go(-1);}";81
Page.ClientScript.RegisterStartupScript(this.GetType(),"提示",script);}4.2.3计划管理页面的详细设计计划管理在本系统中是集查看、修改、删除、审核和打印等功能于一体的页面。在这个页面中不同权限的人员会有不同的显示。具体页面如图4.2.4所示,此图是超级管理员权限。图4.2.4计划管理设计的原理是这样的,只有未通过批准的计划单才具备编辑、删除权限,如果通过批准则这些功能将被禁用,并且批准功能也被禁用。当然相关的操作还需具备相关权限的人员才能操作,代码如下所示:workeruser=newworker();LinkButtonlbtnpz=GridView1.Rows[GridView1.SelectedIndex].FindControl("lbtnpz")asLinkButton;CheckBoxchk=GridView1.Rows[GridView1.SelectedIndex].Cells[1].Controls[0]asCheckBox;if(user.Permission("生产批准")&&chk.Checked==false){lbtnpz.Enabled=true;}if(user.Permission("生产制单")&&chk.Checked==true)81
{GridView2.Columns[0].Visible=false;}elseif(user.Permission("生产制单")&&chk.Checked==false){GridView2.Columns[0].Visible=true;}演示界面如图4.2.5所示:图4.2.5编辑计划只有通过批准的计划单才能被做成生产任务单,由此批准是很重要的一环,单据的批准功能被默认禁用,中有在被点击查看详细后,同时该人员具备权限,批准功能才会启用,同时这样做还能保证该操作人员从某种程度上看过了详细的单据。为通过批准的需填写原因,这样便于单据的修改。具体代码如下:stringproduceplanid=((Label)GridView1.Rows[e.RowIndex].FindControl("Label1")).Text;CheckBoxchk=GridView1.Rows[e.RowIndex].Cells[1].Controls[0]asCheckBox;if(chk.Checked==false){stringscript="window.open("unapprove.aspx?id="+produceplanid+"")";Page.ClientScript.RegisterStartupScript(this.GetType(),"提示",script);}SqlDataSource1.SelectCommand=Session["plansql"].ToString();批准的界面如图4.2.6所示下:图4.2.6批准计划81
编制单据的最终目的是形成文档,进入下一环节。而对于人员来说打印出来形成书面单据,对下一环节的工作人员是很有益的。为此提供了打印这一功能。打印功能是html设计代码如下: 从该代码中可以看出是弹出另一个页面进行打印,如图4.2.7所示:如图4.2.7打印生产计划4.2.4生产进度查询报表的详细设计报表是企业管理的基本措施和途径,是企业的基本业务要求,也是实施BI战略的基础。报表可以帮助企业访问、格式化数据,并把数据信息以可靠和安全的方式呈现给使用者。深入洞察企业运营状况,是企业发展的强大驱动力。VisualStudio2008中内置了水晶报表程序,它是一种很好的报表解决方案,是最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。在本系统中我采用push模式设计,简单来说push模式就是将水晶报表的数据源设为DataSet数据集而不是sqlServer等数据库,并采用自定义的编程方式显示报表。将水晶报表设置为表格形式,将数据集中字段托至对应的表格中,其中进度查询中的“未完成数量”需使用公式编辑器,公式设计如下:{tbproducetask.planquantity}-{tbproducetask.completequantity}。水晶报表的设计界面如图4.2.8所示:81
图4.2.8水晶报表设计情况水晶报表的设计最主要的目的还在于呈现数据,前面已经指出当然模式下数据报表的数据源来自于DataSet数据集,可DataSet数据集是空的,这就需要使用代码设计来对DataSet数据集进行填充了。具体的代码如下:SqlConnectioncon=DB.create();con.Open();SqlDataAdaptersda=newSqlDataAdapter();if(producetaskid==""){sda=newSqlDataAdapter("select*fromtbproducetask",con);}else{sda=newSqlDataAdapter("select*fromtbproducetaskwhereproducetaskid=""+producetaskid+""",con);}DataSetds=newDataSet();sda.Fill(ds,"tbproducetask");sda=newSqlDataAdapter("select*fromtbmaterialinfo",con);sda.Fill(ds,"tbmaterialinfo");sda=newSqlDataAdapter("select*fromtb_measure",con);sda.Fill(ds,"tb_measure");ReportDocumentmyrpt=newReportDocument();stringreportPath=Server.MapPath("~/scpart/scjd.rpt");myrpt.Load(reportPath);myrpt.SetDataSource(ds);CrystalReportViewer1.ReportSource=myrpt;ds.Dispose();sda.Dispose();81
con.Close();con.Dispose();在很多类创建了实例使用完了之后我们都会抖其释放,水晶报表也不例外,更何况水晶报表的最大资源数有限制,释放就显得更重要了。设计的代码如下;ReportDocumentmyrpt=CrystalReportViewer1.ReportSourceasReportDocument;if(myrpt!=null){myrpt.Close();myrpt.Dispose();}具体的查询界面如图4.2.9所示:图4.2.9水晶报表查询界面之所以使用水晶报表设计本系统的报表,还在于它具有自动导出报表和打印报表等诸多附加功能。打印功能如图所示:81
4.2.10打印报表4.3商务平台的详细设计商务平台是利用网络实现与上游供应商及下游客户的联系,实现企业间数据共享,支持企业间商贸活动和协同工作。通过商务平台,让供货商方面能及时的了解到制造企业的需求,让制造企业了解供应商的生产情况;让制造企业了解客户的需求,让客户了解制造企业的生产情况等。4.3.1商务平台登录的详细设计由于商务平台对外开放,但是并非对所有人开放而是某些特定的人,因此在这里就设计了登录模块。在本模块中,login.aspx是登录页面,所有访问本模块的用户在登录前都会被跳转到该页面上要求登录。成功登录后将跳转到welcome.aspx页面,该页面提供了相关的导航菜单。登录界面如图4.3.1所示:81
图4.3.1商务平台登录界面本登录页面设计采用了ASP.NET内置的登录控件,该控件提供文本框、按钮和内建的身份验证功能,是开发人员可以通过简单的拖放动作就可以向页面添加登录功能。在此,我将该登录控件转换为模板,做了一定的改进,添加了验证码功能,为防止用户看不清验证码,同时在右侧添加了刷新按钮。实现的后台代码如下所示:protectedvoidLogin1_Authenticate(objectsender,AuthenticateEventArgse){boolresult=Membership.ValidateUser(Login1.UserName,Login1.Password);if(result){stringvar=Session["gif"].ToString();if(((TextBox)Login1.FindControl("txtyzm")).Text!=var){Login1.FailureText="验证码错误!";}else{e.Authenticated=true;}81
}else{e.Authenticated=false;}}4.3.2管理平台的详细设计商务平台实际上是一个独立于其他模块的部分,尤其是访问权限独立于其他模块,这就需要专门针对这个模块设计一个管理平台,并且此平台只有管理员才能访问。该平台中主要包括角色的创建和角色的管理。本模块使用ASP.NET登录控件的自动生成数据库,许多的操作都有相关的函数接口,大大简化了设计的工作量。创建角色的代码如下所示:protectedvoidbtncreate_Click(objectsender,EventArgse){stringrole=txtrole.Text;Roles.CreateRole(role);Literal1.Text="角色创建成功!";}角色管理就是对所创建的用户进行身份的标识,也就是加入某角色或从某角色中移除。代码如下所示:protectedvoidbtnadd_Click(objectsender,EventArgse){try{stringuser=lstname.SelectedValue;stringrole=ddlrole.Text;Roles.AddUserToRole(user,role);lstname.DataBind();lstrole.DataBind();}catch{Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"提示","alert("请确认您是否选择了一条记录,或该用户已被添加至该角色中!")",true);}}protectedvoidbtndel_Click(objectsender,EventArgse){81
try{stringuser=lstrole.SelectedValue;stringrole=ddlrole.Text;Roles.RemoveUserFromRole(user,role);lstname.DataBind();lstrole.DataBind();}catch{Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"提示","alert("请确认您是否选择了一条记录!")",true);}}操作界面如图4.3.2所示:图4.3.2管理用户角色4.3.3产品信息上传的详细设计通过商务平台向外界展示企业的产品是一种很好的宣传方式,而这就需要在系统中提供展示产品的接口,其中最主要的就是上传产品图片等信息。本上传功能的界面如图所示:81
图4.3.3添加产品信息在这其中最主要用到了FileUpload控件,其主要作用就是弹出一个对话框,让用户选择具体的文件,也就是制定文件的路径。然后就需要上传到服务器,代码如下所示:protectedvoidbtnupload_Click(objectsender,EventArgse){stringfullfilename=FileUpload1.PostedFile.FileName;//文件全路径名称stringfilename=fullfilename.Substring(fullfilename.LastIndexOf("\")+1);//文件名stringtype=fullfilename.Substring(fullfilename.LastIndexOf(".")+1);//文件类型名if(type=="gif"||type=="bmp"||type=="jpg"){FileUpload1.SaveAs(Server.MapPath("productpic")+"\"+filename);Session["path"]="~\swpart\partment\productpic"+"\"+filename;Image1.ImageUrl=Session["path"].ToString();Image1.Visible=true;}else{Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"提示","");}}81
上传图片的存储有多种方法,我并未将图片直接存入数据库,而将图片存到服务器的某个文件夹中,然后将路径存在数据库的对应字段中,当要显示时就通过该路径找到图片。上传的代码如下所示:protectedvoidbtnadd_Click(objectsender,EventArgse){SqlConnectioncon=newSqlConnection(ConfigurationManager.ConnectionStrings["dpsecondConnectionString"].ConnectionString);con.Open();SqlCommandcmd=newSqlCommand();stringproduct_code=txtmaterial_id.Text;stringproduct_name=txtmaterial_name.Text;stringproduct_type=txtmaterial_type.Text;stringnotes=txtnotes.Text;cmd=newSqlCommand("select*fromtb_product_dirwhereproduct_code=""+product_code+""",con);intcount=Convert.ToInt32(cmd.ExecuteScalar());if(count>0){Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"提示","");}elseif(Session["path"]==null){Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"提示","");}else{stringproductpic=Session["path"].ToString();cmd.CommandText="insertintotb_product_dir(product_code,product_name,product_type,product_pic,notes)values(""+product_code+"",""+product_name+"",""+product_type+"",""+productpic+"",""+notes+"")";cmd.Connection=con;cmd.ExecuteNonQuery();Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"提示","");}cmd.Dispose();con.Close();con.Dispose();Session["path"]=null;}81
4.4安全技术的详细设计4.4.1登录的安全设计将用户密码以纯文本的格式存储到数据库中,不是好方法,这些信息是潜在的被攻击对象。可以采用散列hash解决方案来保存密码。对于每个密码而言,其散列值是唯一的,而且散列值是无法转换成密码本身的。要校验用户输入的密码,只需计算其输入的密码的散列值,然后和保存在数据库中的散列值进行比较。如果散列值是匹配的,则说明输入的密码是正确的。散列处理hashing采用的是一个单向的机制。将要散列处理的对象序列化为一个字节数组。对字节数组进行散列计算,获取一个已散列的新字节数组。将已散列的字节数转成存储所需的格式。本系统中,采用MD5算法加密用户密码的方式登录系统。本系统中C#代码如下:FormsAuthentication.HashPasswordForStoringInConfigFile(toCryString,"MD5"),其中toCryString为需要加密的字符。4.4.2防止SQL注入式攻击所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.81
当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造(或者影响)动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。防止SQL注入的方式有如下所述:1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。Global.asax文件,有时候叫做ASP.NET应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法。可以使用这个文件实现应用程序安全性以及其它一些任务。由此本系统针对SQL注入式攻击,编写了专门的代码就放在Global.asax文件中。具体代码如下:voidApplication_BeginRequest(Objectsender,EventArgse){StartProcessRequest();}privatevoidStartProcessRequest(){try{stringgetkeys="";stringsqlErrorPage="~/error.aspx";//转向的错误提示页面if(System.Web.HttpContext.Current.Request.QueryString!=null){for(inti=0;i=0){ReturnValue=false;break;}}}}catch{ReturnValue=false;}returnReturnValue;}Application_BeginRequest:就是81
在接收到一个应用程序请求时触发。对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)。若在任何一个页面中输入非法字符,如“’”,就会得到如图4.4.1所示的提醒。图4.4.1系统提示5系统的测试与运行在任何软件系统的开发过程中,尤其是在进行大型软件系统的开发中,任何一个编程人员都不可避免地会产生错误。为了尽可能地发现并改正系统设计中的错误,减少错误造成的损失,保证系统开发的质量,需要进行系统的测试。5.1系统功能测试系统的开发目标是实现企业所需的功能,而系统功能测试就是用来保证功能实现的正常。系统功能的测试包括:导航,数据输入,处理、检索是否正确,以及业务流程能否走通。即对交互的输出或结果进行分析,以此来核实应用程序及其内部进程。测试方法:利用有效的和无效的数据来执行各个业务流程。预期目标:一、在使用有效数据时得到预期的结果,二、在使用无效数据时显示相应的错误消息或警告消息。5.1.1功能测试方法的简介功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:一、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。二、相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。81
三、检查按钮的功能是否正确:如update,cancel,delete,save等功能是否正确。四、字符串长度检查:输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度,会不会出错。五、字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错。六、中文字符处理:在可以输入中文的系统输入中文,看会否出现乱码或出错。七、检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。八、检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。九、search检查:在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确。如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确。十、上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。十一、必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项后加验证。十二、快捷键检查:是否支持常用快捷键,如Ctrl+C、Ctrl+V、Backspace等,对一些不允许输入信息的字段是否也做了限制。5.1.2测试技术分析81
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。黑盒测试试图发现以下类型的错误:一、功能错误或遗漏;二、界面错误;三、数据结构或外部数据库访问错误:四、性能错误;五、初始化和终止错误。黑盒测试的流程为:1.测试计划2.测试设计3.测试开发4.测试执行5.测试评估。下面对黑盒测试中的边界值分析法予以介绍:边界值分析方法是对等价类划分方法的补充。(一)边界值分析方法的考虑:大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。(二)基于边界值分析方法选择测试用例的原则:1.如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据;2.如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;3.根据规格说明的每个输出条件,使用前面的原则1;4.根据规格说明的每个输出条件,应用前面的原则2;5.如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例;6.如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例;7.分析规格况明,找出其它可能的边界条件。81
5.1.3主要测试用例分析设计与执行在测试过程中,逐一对本系统中的各功能进行了用例测试,由于模块众多,在此列述部分用例测试。用例编号Test_001需求编号Request_001测试项目生产派工测试内容派工单的提交预置条件:1.系统在服务器上正常运转2.用户必须具生产部门人员角色并且必须登录系统操作步骤:1.点击下面单据前方的查看详细按钮2.选择下面右侧具体的产品3.选择派工日期4.填写由生产工艺自动带出的派工信息5.保存完填写的信息6.提交制单接收标准:1.选中的产品在基础信息当中必须有对应的生产工艺,否则无法进行派工。2.提交数据和界面输入一致,并准确无误地保存在数据库中3.派工单号流水号自动生成且唯一4.派工日期必须为北京时间且当前时间备注:无测试结果和结论:功能正常,数据准确。表5.1派工用例测试分析表用例编号Test_002需求编号Request_002测试项目出库操作测试内容出库的提交预置条件:1.系统在服务器上正常运转81
2.用户必须具仓库部门人员角色并且必须登录系统操作步骤:1.选择出库类型2.点击下面单据前方的选择按钮3.点击提交4.选择领料部门、用途和领料日期等单据表头信心5.填写提交的详细单据信息6.保存详细信息7.提交单据接收标准:1.选中的产品的原材料的库存数量必须大于出库数量2.提交数据和界面输入一致,并准确无误地保存在数据库中3.出库单号流水号自动生成且唯一4.领料日期必须为北京时间且当前时间备注:若领料数量不够或未领完所有的数量,该单据依然存在在出库单中,单出库数量减少掉已领数量。测试结果和结论:功能正常,数据准确。表5.2出库测试用例分析表用例编号Test_003需求编号Request_003测试项目邮件发送测试内容邮件的提交预置条件:1.系统在服务器上正常运转2.用户必须登录系统操作步骤:1.从右侧通讯录中选择联系人2.填写邮件标题和具体内容3.发送邮件4.发送后相关人员加载页面时吸引功能栏中提示新邮件一封81
接收标准:1.联系人不能为自己或重复选择同一名员工2.邮件为发送状态非草稿保存状态3.提交数据和界面输入一致,并准确无误地保存在数据库中备注:无测试结果和结论:功能正常,数据准确。表5.2出库测试用例分析表5.2系统性能测试系统性能测试主要是对响应时间、事务处理速率和其他与时间相关的需求进行评测和评估。性能评测的目标是核实性能需求是否都已满足。一、目标:核实下列情况下的性能行为:(一)正常的预期工作量,(二)预期的最繁重工作量。二、需考虑的特殊事项:(一)最好使用多台实际客户机在系统上添加负载。(二)多用户不同网络条件下的连接速度是否满足要求。5.2.1压力测试一、概述:这里的具体包含了负载测试以及压力测试。二、目标:核实下列行为下的系统行为。(一)确定测试对象在给定时间内能够持续处理的最大负载或工作量(包括长时间处理多个用户相同的且性能最坏的业务);(二)确定并确保系统在超出最大预期工作量的情况下仍能正常运行,并评估其性能特征,包括响应时间、事务处理速率和其他与时间相关的内容;步骤一:执行单步任务测试;步骤二:多用户多任务测试。81
5.2.2故障恢复测试一、概述:确保系统能从各种意外数据损失或完整性破坏的各种软/硬件故障中恢复。二、目标:核实系统能够在下列状况下正确恢复到预期的已知状态。(一)客户/服务机断电;(二)网络通信中断;(三)异常关闭某个功能:(四)错误的操作顺序。5.2.3安全性测试一、概述:确保系统Web应用下的安全性。二、目标:核实下列情况下的性能行为。(一)系统是否有超时的限制;(二)相关的重要信息是否写迸日志、是否可追踪:(三)测试加密是否正确,信息是否完整。5.2.4配置测试一、概述:核实测试对象在不同的软件和硬件配置中的运行情况。二、目标:确定系统能在下列条件下正常运行。(一)在各种所需的硬件和软件配置中;(二)在各种O/S平台或是各种浏览器下的兼容性测试。5.3测试结果本系统通过多个用例的测试,解决了软件中存在的问题,目前运行正常。测试结果如下:1.随着测试的深入,整个软件的业务流程均已走通,系统没有出现崩溃的情况。81
1.用户界面良好,为用户减少很多文字录入,提高了工作效率。2.数据库的可维护性良好,数据的录入能顺利完成。3.针对非法字符和错误字符的输入,能进行及时提示。在整个软件测试过程中,主要的错误因素有:1.人的因素,具体来说首先是需求分析的不明确,用户方和开发方的沟通不畅造成的,其次是在软件测试过才中,测试人员对软件流程的生疏。2.软件环境、系统,如部署时为修改水晶报表的最大连接数限制。3.软件本身结构,设计是只能对IE浏览器设计的,在其他浏览器中的视图不是很好。6结论本系统是南京鼎牌电器有限公司供应链管理系统,在经过了八个月紧张而有序的开发与调试后,最终系统在企业部署试运行,完全实现了预期设想的功能,包括基础管理、销售管理、采购管理、仓库管理、生产管理、质量管理、系统管理、商务平台及邮件系统等九大功能模块。通过本系统的开发,我对基于B/S架构的管理系统开发有了更清晰的认识。首先是整个软件开发的流程,即从项目背景、需求分析、概要设计、详细设计、系统测试到运行的整个过程,我更加熟悉了。其次本系统是一个供应链管理系统,是我对供应链系统有了一个明确的认识,它是对企业的业务流程的一个信息化再现,有助于企业提高办公效率。81
通过本系统的开发我收货了不少经验。首先在系统实施之前应对系统需求有个充分的了解,就是要对系统的组织结构图有个清晰的了解,各大模块下还有多少小模块,在做到心中有数之后,实施开发才会得心应手。简单来说,遵守软件开发流程对系统开发很有帮助。其次,系统开发中总会遇到各种难题,广泛搜索资料是最好的办法。应善于借鉴他人成果,实现自己的功能,可以有效的缩短开发时间,提高工作效率。是快速提高编程能力的最好方法。当然借鉴他人成果并不是简单的复制,是在阅读理解代码的基础之上,加以适合自己系统的删改才是最合适的。最后,每开发完一个模块都应及时予以调试,并与其他模块联合测试,这样能及时找出BUG并解决。本系统是中小企业物流供应链系统的一个解决方案,是对中小企业物流信息化的一次尝试,目前来讲还存在诸多不足。同时我的个人能力有限,需要在今后的学习中不断摸索解决。81
参考文献[1]林烈青,ASP.NET2.0仓储管理系统开发案例解析[M].北京:机械工业出版社,2007[2]董大伟,ASP.NET与AJAX深度剖析范例集[M].北京:中国青年出版社,2007[3]陈冠军,精通ASP.NET2.0典型模块设计与实现[M].北京:人民邮电出版社,2007[4]张跃延,王小科,帖凌珍,ASP.NET程序开发范例宝典[M].北京:人民邮电出版社,2007[5]明日科技,SQLServer2005开发技术大全[M].北京:人民邮电出版社,2007[6]李超,CSS网站布局实录:基于Web标准的网站设计指南[M].北京:科学出版社,2007[7]王院峰,ASP.NET3.5实例精通[M].北京:机械工业出版社,2009[8]陈冠军,征服ASP.NET2.0Ajax:Web开发技术详解[M].北京:人民邮电出版社,2007[9]王养廷,李磊,宋汉珍,UML基础与应用[M].北京:清华大学出版社,2006[10]王宏宇,征服ASP.NET2.0Ajax典型应用[M].北京:人民邮电出版社,2007[11]张金霞,HTML网页设计参考手册[M].北京:清华大学出版社,2006[12]HUAJIANG,JINGYANG,InformationTechnologySupportSystemofSupplyChainManagement[J].11thWSEAS,2007,(3)138-142[13]陶树平,李华伦,数据库系统原理与应用[M].北京:科学出版社,2004[14]韩朝军、梁冰、刘莹,SQLServer管理与开发技术大全[M],北京:人民邮电出版社,2007[15]陈冠军,精通ASP.NET2.0企业级项目开发[M],北京:人民邮电出版社,2007[16]韦志鹏,基于J2EE的WEB管理系统的设计与实现[D].上海.同济大学软件学院,2007[17]微软MSDN,ASP.NET网站中的共享代码文件夹[EB/OL].81
http://msdn.microsoft.com/zh-cn/library/t990ks23(v=VS.80).aspx[18]百度百科,水晶报表[EB/OL].http://baike.baidu.com/view/303610.htm?fr=ala0_1_1,2010-03-23[19]百度百科,黑盒测试[EB/OL].http://baike.baidu.com/view/51274.htm,2010-03-15[20]百度百科,sql注入[EB/OL].http://baike.baidu.com/view/3896.html,2010-03-3081
致谢首先感谢南京工程学院给了我这样一个学习机会和值得回味的快乐时光。校园环境优美,实验设施众多,给我们提供了一个绝佳的学习环境。学校积极为我们学生营造了很多实习环境,“学以致用”是我们的校训,在这样的氛围下我不但学到了很多知识,更加强了实际的动手能力。在此,要特别感谢我的导师黄传峰老师,是他让我有机会参加这个校企合作项目,让我在参加项目的同时既锻炼了能力也学到知识。他学识渊博,思想丰富,为人热情,对每位学生都谆谆教诲,使我受到无限启迪。正是他的紧密安排,才推动了项目的快速前进,并最终在企业试运行。在论文撰写期间对我悉心指导,提供不少宝贵意见,让我顺利完成了论文。同时,还要感谢我的同学张同乐,是他和我的通力合作才让本项目顺利完成。另外还要感谢工商管理教研室四位老师,是他们在项目前期做了充分的调查和需求分析,才使我们能顺利的吧项目进行下去,还要感谢他们在项目的alpha测试阶段做的辛苦工作。也要感谢鼎牌电器有限公司参与beta阶段测试的三位员工,是你们不厌其烦的测试促成了项目顺利的试运行。还要感谢经济管理学院柳雨霁副院长对本项目的关心和大力支持。此外,还要感谢所有教导和关心过我的老师,也要感谢各位好友和关心我的同学,是你们让我体验到了大学生活的快乐和美好。最后感谢我的家人,是他们的默默奉献和无私关爱使我心无旁骛的完成了大学学业!81