- 1.29 MB
- 2022-05-16 18:34:53 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)任务书课题名称基于网页的仓库管理系统系别专业班级姓名学号毕业设计(论文)的主要内容及要求:一、进行调研工作,了解、分析用户对“仓库管理系统”的功能需求。二、熟练掌握一种程序设计语言,掌握其数据库开发、访问技术、编程设计技术。三、根据课题要求,软件完成如下功能:1,对仓库、供应商、领用人等基本信息进行新增、查询和修改操作的实现;2,对物品进行入库、出库和退货的操作;3,没有库存的物品禁止出库操作;4,查询入库报表、出库报表及库存量报表;5,用户操作的安全性,操作员修改自己的密码,以及正确的登录、注销或退出系统。四、要求软件设计界面友好、使用方便,程序执行安全、可靠。五、完成与设计内容有关的外文资料翻译,译文约5000字。六、撰写毕业论文并提交设计软件。指导教师签字:日期:年月日
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书摘要仓库管理系统是为了实现物品管理的系统化、规范化和自动化,从而提高管理效率而设计的。它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时,准确,高效的完成仓库管理提供了强有力的工具和管理手段。仓库管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了仓库管理的要求。整个系统由基本信息、物质管理、查询统计、维护设置、权限管理等模块组成。本系统是在以SQLServer2008作为后台数据库,以C#为编程语言开发的。仓库管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了仓库管理计算机化。关键词:仓库,管理系统,数据库、C#
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书AbstractTheadministrativesystemofthewarehouseisdesignedforrealizingthesystematization,standardizationandatomizationofenterprise’sproductsmanagementandimprovingefficiencyofenterprisesmanagement.Itcompletelyreplacestheworkingwayofartificialmanagementoriginally,precentsfromvariouskindsofmistakesbecauseofadministrativestaffneglectandthequalityproblemofmanagementandofferspowerfultoolandmanagementwaytocompletestorehousemanagementforprompt,accurate,high-efficient.Theadministrativesystemofthewarehouseisamediumandsmall-scaledatabasemanagementsystem,ithasnotonlybeautifulinterface,butalsothehighsecurityandthesimplyoperation,andmeetthedemandforstorehousemanagementbasically.Wholesystemismadeupbybasicinformation,documentinthecenter,inquirestatistics,reportformtype,setuptomaintainetc.TheWarehouseadministrativesystemisdesignwithregardingSQLServer2008asthebackstagedatabaseandregarding.C#asprogramminglanguage.Theadministrativesystemiseffectual;thehighdataaccuracyduringthecourseofoperatingimprovesworkingefficiencyandrealizescomputerizationforstorehousemanagementatthesametime.KEYWORDS:Warehouse,AdministrativeSystem,Database、C#
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书目录1系统概述11.1软件名称11.2软件功能11.3开发背景与意义11.4开发环境11.4.1VisualStudio2008的特点11.5开发语言C#31.5.1C#语言简介31.5.2C#语言的特点32可行性研究与需求分析52.1可行性研究52.1.1技术可行性52.1.2经济可行性52.1.3操作可行性52.1.4可行性研究结论52.2需求分析52.2.1系统的目的52.2.2功能需求52.2.3用户需求52.3数据描述62.3.1数据流程图62.3.2模块划分63数据库模型设计83.1数据实体描述83.2E-R图模型的建立133.3实体关系描述163.4数据结构表163.5数据库的代码实现234详细设计244.1系统总体框架244.2VisualStudio通用模块Common254.2.1加密解密功能25
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书4.2.2报表导出功能254.3系统具体功能设计254.3.1登陆界面254.3.2系统主界面254.3.3基础数据模块264.3.4仓库管理模块304.3.5报表管理模块314.3.6系统管理模块334.4系统包含的特殊功能344.4.1出库警报344.4.2用户权限设置345系统运行与测试355.1系统运行355.2测试概述355.3测试355.3.1登录测试355.3.2基础数据模块的测试365.3.3仓库管理模块的测试375.3.4报表管理模块的测试395.3.5系统管理模块的测试39总结41致谢42参考文献43附录:部分程序代码44
1系统概述1.1软件名称仓库管理系统WMS(WarehouseManagementSystem)。1.2软件功能仓库管理系统主要提供一个仓库业务及作业管理的信息存储和检索系统。通过基础数据管理、仓库管理(包括入库管理、出库管理和退货管理)、报表管理(包括入库报表、出库报表和库存量报表)以及系统管理四大功能模块来实现仓库的综合管理。本系统可以方便快捷的实现仓库管理中的物品登记、入库出库、库存管理等操作,使仓库管理井然有序,实时准确,真正实现无纸化管理。1.3开发背景与意义当今时代是飞速发展的信息时代,各行各业都离不开信息处理,这正是计算机被广泛应用于信息处理系统的社会大环境。计算机最大的好处在于,利用它能够进行信息管理,信息控制,这不仅提高了工作效率,而且大大提高了安全性。尤其对于复杂的信息,计算机充分发挥了它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。仓库作为一种物品资源的集散地,物品的种类繁多,这就涉及了很多的信息数据的管理。面对庞大的信息量,如何有效的管理库存物品就显得十分重要。在仓库管理中又涉及物品的入库出库,管理员、供应商和客户等多方面的因素,如何管理这些信息数据是一项非常复杂的系统工程,充分考验着仓管员的工作能力,工作量的繁重可想而知。据调查得知,以前仓库进行信息管理的方式主要是基于文本、表格等纸介质的手工处理,对于物品出入库情况的统计和核实等往往采用对账本式的人工检查。对管理者的管理权限等不受约束,任何人都可以查看,这样容易引起资料外泄。另外,数据信息处理工作量大,容易出错,数据繁多,容易丢失,且不易查找。总的来说,手工作业缺乏系统、规范的信息管理手段。因此,很有必要建立一个仓库管理系统,由仓管系统来提高库存管理工作的效率,同时亦可提高仓管员的工作积极性,使物品管理工作规范化、系统化、程序化,进而提高信息处理的速度和准确性。1.4开发环境前台应用程序开发使用的是VisualStudio2008,后台数据库的简历和维护使用的是SQLServer2008。1.4.1VisualStudio2008的特点VisualStudio2008提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。VisualStudio2008包括各种增强功能,例如可视化设计器(使用.NETFramework3.5加速开发)、对Web开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。VisualStudio2008为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持AJAX的Web
应用程序。开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的Web应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问ASPNET应用程序服务和Microsoft平台。VisualStudio2008在三个方面为开发人员提供了关键改进:(1)快速的应用程序开发:为了帮助开发人员迅速创建先进的软件,VisualStudio2008提供了改进的语言和数据功能,例如语言集成的查询(LINQ),各个编程人员可以利用这些功能更轻松地构建解决方案以分析和处理信息。VisualStudio2008还使开发人员能够从同一开发环境内创建面向多个.NETFramework版本的应用程序。开发人员能够构建面向.NETFramework2.0、3.0或3.5的应用程序,意味他们可以在同一环境中支持各种各样的项目。(2)突破性的用户体验:VisualStudio2008为开发人员提供了在最新平台上加速创建紧密联系的应用程序的新工具,这些平台包括Web、WindowsVista、Office2007、SQLServer2008和WindowsServer2008。对于Web,ASPNETAJAX及其他新技术使开发人员能够迅速创建更高效、交互式更强和更个性化的新一代Web体验。(3)高效的团队协作:VisualStudio2008提供了帮助开发团队改进协作的扩展的和改进的服务项目,包括帮助将数据库专业人员和图形设计人员加入到开发流程的工具。1.4.2SQLServer2008的特点SQLServer2008提供了一个全面的和可扩展的数据仓库平台,它可以用一个单独的分析存储进行强大的分析,以满足成千上万的用户在几兆字节的数据中的需求。SQLServer2008在数据仓库方面有以下优点:(1)数据压缩:数据仓库中的数据容量随着操作系统数目的快速增加而在持续增长。内嵌在SQLServer2008中的数据压缩使得公司可以更有效的存储数据,同时还提高了性能,因为降低了I/O要求。(2)备份压缩:保持一直在线做基于磁盘的备份是花费很昂贵的,并且很耗时。有了SQLServer2008的备份压缩,保持在线备份所需的存储降低了,并且备份速度明显变快了,因为所需要的磁盘I/O减少了。(3)分区表并行:分割使公司能够更有效的管理大型的、不断增长的数据表,只要简单的将它们分割为易管理的数据块。SQLServer2008是在SQLServer2005中的分割的优势之上建立的,它改进了对大型的分区表的操作性能。(4)星型联接查询优化器:SQLServer2008为普通的数据仓库场景提供了改进的查询性能。星型联接查询优化器通过辨别数据仓库连接模式降低了查询响应时间。(5)资源监控器:SQLServer2008随着资源监控器的推出,使公司可以给终端用户提供一致的和可预测的响应。资源监控器使公司可以为不同的工作负载定义资源限制和优先权,这使得并发工作负载可以提供稳定的性能。(6)分组设置:分组设置(GROUPINGSETS)是对GROUPBY条件语句的扩展,它使得用户可以在同一个查询中定义多个分组。分组设置生成一个单独的结果集,这个结果集相当于对不同分组的行进行了UNIONALL的操作,这使得聚合查询和报表更加简单和快速。(7)捕获变更数据:有了捕获变更数据,变更会被捕获并被放在变更表中。它捕获变更的完整内容,维护交叉表的一致性,甚至是对交叉的schema
变更也起作用。这使得公司可以将最新的信息集成到数据仓库中。(8)MERGESQL语句:有了MERGESQL语句,开发人员可以更有效地处理数据仓库的场景,例如检查一行数据是否存在然后执行插入或更新。(9)可扩展的集成服务:集成服务的可扩展性方面有两个关键优势,一是SQLServer集成服务(SQLServerIntegrationServices,SSIS)管道改进,数据集成包现在可以更有效地扩展、使用有效的资源和管理最大的企业级的工作负载。这个新的设计将运行时间的可扩展性提高到多个处理器中。另一个是SSIS持久查找,执行查找是最常见的抽取、转换和加载(ETL)操作。这在数据仓库中尤为普遍,当实际记录必须使用查找来转换业务键到它们相应的替代中去时。SSIS增强了查找的性能以支持大型表。1.5开发语言C#1.5.1C#语言简介C#(发音为“SeeSharp”)是简单、现代、面向对象和类型安全的编程语言。C#起源于C语言家族,已经获得了ECMAInternational和ISO/IEC的国际标准认证,它们分别是ECMA-334标准和ISO/IEC23270标准。Microsoft用于.NET框架的C#编译器就是根据这两个标准实现的。C#是面向对象的语言,但C#进一步支持面向组件(component-oriented)的编程。这种组件的关键之处在于它们提供了带有属性、方法和事件的编程模型;它们还具有提供关于组件声明信息的特性(attribute);同时,它们编入了自己的文档。C#提供语言构件来直接支持这些概念,使得C#在创建和使用软件构件方面非常自然。1.5.2C#语言的特点C#在带来对应用程序的快速开发能力的同时,忠实地继承了C和C++的优点。C#是专门为.NET应用而开发出的语言。这从根本上保证了C#与.NET框架的完美结合。在.NET运行库的支持下,.NET框架的各种优点在C#中表现得淋漓尽致。C#有如下突出的特点:(一)简洁的语法C#的代码在.NET框架提供的“可操纵”环境下运行,不允许直接地内存操作。它所带来的最大的特色是没有了指针。与此相关的是,那些在C++中被疯狂使用的操作符(例如:“::”、“->”和“.,”)已经不再出现,C#只支持一个“.”,即名字的嵌套。C#用真正的关键字换掉了那些把活动模板库(ActiveTemplateLibrary,ALT)和COM搞得乱糟糟的伪关键字,每种C#操作符在.NET类库中都有了新名字。语法中的冗余是C++中的常见的问题,比如"const"和"#define"、各种各样的字符类型等等。C#对此进行了简化,只保留了常见的形式,而别的冗余形式从它的语法结构中被清除。(二)精心地面向对象设计C#具有面向对象的语言所应有的一切特性:封装、继承与多态性。然而,通过精心地面向对象设计,从高级商业对象到系统级应用,C#是建造广泛组件的绝对选择。在C#的类型系统中,每种类型都可以看作一个对象。C#
提供了一个叫做装箱(boxing)与拆箱(unboxing)的机制来完成这种操作,不给使用者带来麻烦。C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。C#中没有了全局函数,没有了全局变量,也没有了全局常数。一切的一切,都必须封装在一个类之中。使代码具有更好的可读性,并且减少了发生命名冲突的可能。整个C#的类模型是建立在.NET虚拟对象系统(VisualObjectSystem,VOS)的基础之上,其对象模型是.NET基础架构的一部分,而不再是其本身的组成部分。这样做的另一个好处是兼容性。C#具备了良好的开发环境。结合自身强大的面向对象功能,C#使得开发人员的生产效率得到极大的提高。对于公司而言,软件开发周期的缩短将能使它们更好应付网络经济的竞争。(三)与Web的紧密结合.NET中新的应用程序开发模型意味着越来越多的解决方案需要与Web标准相统一,例如超文本标记语言(HypertextMarkupLanguage,HTML)和XML。由于历史的原因,现存的一些开发工具不能与Web紧密地结合。SOAP的使用使得C#克服了这一缺陷,大规模深层次的分布式开发从此成为可能。由于有了Web服务框架的帮助,对程序员来说,网络服务看起来就象是C#的本地对象。程序员们能够利用已有的面向对象的知识与技巧开发Web服务。仅需要使用简单的C#语言结构,C#组件将能够方便地为Web服务,并允许它们通过Internet被运行在任何操作系统上的任何语言所调用。(四)完整的安全性与错误处理语言的安全性与错误处理能力,是衡量一种语言是否优秀的重要依据。C#的先进设计思想可以消除软件开发中的许多常见错误,并提供了包括类型安全在内的完整的安全性能。为了减少开发中的错误,C#会帮助开发者通过更少的代码完成相同的功能,这不但减轻了编程人员的工作量,同时更有效地避免了错误的发生。.NET运行库提供了代码访问安全特性,它允许管理员和用户根据代码的ID来配置安全等级。在缺省情况下,从Internet和Intranet下载的代码都不允许访问任何本地文件和资源。.NET平台提供的垃圾收集器(GarbageCollection,GC)将负责资源的释放与对象撤销时的内存清理工作。C#中不能使用未初始化的变量,对象的成员变量由编译器负责将其置为零,当局部变量未经初始化而被使用时,编译器将做出提醒;C#不支持不安全的指向。C#中提供了边界检查与溢出检查功能。(五)版本处理技术C#提供内置的版本支持来减少开发费用,使用C#将会使开发人员更加轻易地开发和维护各种商业用户。C#在语言中内置了版本控制功能。另一个相关的特性是接口和接口继承的支持。这些特性可以保证复杂的软件可以被方便地开发和升级。(六)灵活性和兼容性C#允许将某些类或者类的某些方法声明为非安全的。这样一来,将能够使用指针、结构和静态数组,并且调用这些非安全代码不会带来任何其它的问题。此外,它还提供了模拟指针的功能--delegates,代表。再举一个例子:C#不支持类的多继承,但是通过对接口的继承,将间接实现类的多继承。
正是由于其灵活性,C#允许与C风格的需要传递指针型参数的API进行交互操作,DLL的任何入口点都可以在程序中进行访问。C#遵守.NET公用语言规范(CommonLanguageSpecification,CLS),从而保证了C#组件与其它语言组件间的互操作性。元数据(Metadata)概念的引入既保证了兼容性,又实现了类型安全。2可行性研究与需求分析2.1可行性研究2.1.1技术可行性随着信息时代的到来,越来越多的计算机和网络逐步走进了多层次的应用领域。现代企业管理中,信息的共享性和及时性决定了企业的发展。而基于计算机的信息管理在世界上取得了广泛的认可。该仓库管理系统是基于MicrosoftVisualStudio技术,建立以Server为结构模式,以数据库为后台核心应用,以服务为目的的信息平台。对资源进行科学的加工整序和管理维护,为提高库存管理的效率、安全和数据的及时性、共享性而开发的系统。综上所述,该系统在技术方面考虑是可行的。2.1.2经济可行性经济可行性主要依据是成本/效益分析,该系统的目标是以最低的成本,最高的效率、在最短的期限内开发出具有物品入库、物品出库、及生成报表查询功能的系统。目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上十分有限。而且,目标系统并不是十分复杂,开发的周期较短,人员的经济支出也有限。所以,该系统在经济上可行。2.1.3操作可行性使用本软件的人员要求是具有一定的计算机基础的人员,系统管理员要求具备计算机的专业知识,所有人员都要经过专业培训。管理人员也需经过一般培训。经过培训的人员将会熟练使用本软件。2.1.4可行性研究结论综上所述,该项目在技术、经济和操作上是完全可行的。2.2需求分析2.2.1系统的目的仓库管理系统主要针对日常库存信息的管理,它针对仓库日常发生的业务,分为了两大类,既入库和出库,用户通过相应的模块,对仓库里的物品的基本情况进行操作,对库存数量进行查询,户通过简单的操作即可轻松的管理仓库。
2.2.2功能需求该系统应该具备三大功能:管理员功能、信息安全功能、用户功能。(1)管理员给你包括:物品入库出库登记、确认入库出库信息、物品退回登记、物品分类管理、添加人员、删除人员、系统配置、查看系统事件。(2)信息安全功能包括:数据检测、人员权限区分、事件记录、数据警告、(3)用户功能包括:查询库内信息、查询入库出库信息、修改本用户密码。2.2.3用户需求根据用户需求,该系统应该实现以下功能:进、出库管理。对进、出库信息进行记录。需保证信息、数量准确无误。应由系统管理员admin设定只有仓库管理员一人有进、出库等信息录入的权限,明确责任人。查询功能。仓库管理对查询功能要求很高,需从大量的数据中查找到所要求的部分信息,支持精确查询和模糊查询。报表生成功能。包括入库报表、出库报表和库存量报表。将录入的信息分类归档,方便浏览。最后生成库存量报表,直接显示仓库内物品剩余量。应用计算机管理后,由于计算机能储存大量的数据,而数据只要一次存入,便可多次重复使用,所以管理数据达到完整、统一,原始记录能保证及时、准确。对仓管员而言,许多重复性的工作都可由计算机去执行,从而使管理人员从事务性工作中解脱出来,真正变为从事一些信息的分析,判断,决策等创造性的工作。2.3数据描述2.3.1数据流程图有上述分析,以及对系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程的分析,可画出数据流程图,如图2.1,2.2所示。仓库管理系统领用人供应商入库单出库单图2.1顶层图领用领用人供应商销售入库单入库信息库存记录出库信息出库单退货退货退货单退货退货记录图2.2第一层图
2.3.2模块划分基本模块与功能:(1)基础数据模块:包括供应商管理、物品类别管理、物品资料管理、仓库管理、部门管理、领用人管理。供应商管理:登记供应商的基本信息。包括公司名称、负责人、地址、电话、邮箱、银行账号、银行名称等。物品类别管理:将仓库内的物品分类,类别编码和类别名称。物品资料管理:仓库内的每一个设备都有唯一的档案。包括编号、名称、单位、规格/型号、补充说明、类别。仓库管理:如果不止一个仓库,就要对每个仓库进行明确管理。包括仓库编码、仓库名称、所属部门、仓库地址。部门管理:记录每一个与仓库进行业务往来的部门的信息。包括部门名称、部门代码。如果该部门撤销,则需加失效标记。领用人员管理:记录每一个与仓库进行业务往来的人员的信息。包括领用人所在的部门、姓名、性别、员工编号、身份证号码。如果该员工离职,则需加离职标记。(2)仓库管理模块:包括入库管理、出库管理和退货管理。每一笔单据生成时,系统自动附加操作完成时间点,不予改动。入库管理:根据入库单的格式对物品进行入库操作。出库管理:根据出库单的格式对物品进行出库操作。退货管理:根据退货单的格式进行退货操作。报表管理模块:包括入库报表、出库报表和库存量报表。入库报表:显示仓库业务的所有入库单。具有查询功能和报表导出功能。查询时必须先勾选查询条件,且查询条件分为三种,按名称查询时输入入库单号,按日期查询时输入选择入库单的实时日期,按供应商查询时支持模糊查询。报表导出功能是将页面中的入库报表,导出形成Excel表格。出库报表:显示仓库业务的所有出库单。具有查询功能和报表导出功能。查询时必须先勾选查询条件,且查询条件分为四种,按名称查询时输入出库单号,按日期查询时输入选择出库单的实时日期,以及按领用部门和领用人来进行查询。报表导出功能是将页面中的出库报表,导出形成Excel表格。库存量报表:显示仓库中到目前为止的库存量。(4)系统管理模块:包括用户管理、权限管理、密码修改、注销和退出。用户管理:为该系统添加用户。权限管理:为用户设置权限。此菜单在页面中不显示,需系统管理员admin在后台数据库中操作。防止用户恶意篡改权限。密码修改:用户自行修改系统管理员设定的初始密码。注销:注销后返回登录界面。退出:退出仓库管理系统。系统流程图如图2.3所示。登录仓库管理系统入、出、退库单基础数据账户或密码错误
查询验证用户信息新增系统主窗体入、出、退库报表基础数据注销或退出修改用户密码图2.3
3数据库模型设计3.1数据实体描述表3.1用户表表名实体属性属性名中文名User_Info(用户表)User_id用户表IDaccount账户pwd密码Emp_id员工表idUser_name账户名称Create_user创建用户Create_date创建日期Inv_date失效日期Upd_user修改用户Upd_date修改日期表3.2菜单表表名实体属性属性名中文名Menu(菜单表)Menu_id菜单IDMenu_nm菜单名称Program_nm程序名Sup_menu_id上级菜单IDOrder_seq排列序号Icon_nm图标名称Create_user创建用户Create_date创建日期Inv_date失效日期Upd_user修改用户Upd_date修改日期表3.3用户对应菜单表表名实体属性
属性名中文名User_Menu(用户对应菜单表)User_menu_id维修记录编号User_id用户表IDMenu_id菜单功能表IDCreate_user创建用户Create_date创建日期Inv_date失效用户Upd_user修改用户Upd_date修改日期表3.4供应商基本表表名实体属性属性名中文名Vend(供应商基本表)ID供应商IDVEND_CODE供应商代号VEND_CNAME供应商名称VEND_ABBR供应商简称PRESIDENT负责人GMANAGER法定人INV_ADR地址INV_MAIL邮编TAX_NO税籍编号VEND_TEL电话VEND_FAX传真CONTACTER联系人E_MAIL邮箱BANK_NO银行账号BANK_NM银行名称Create_user创建用户Create_date创建日期UPD_USER更新用户UPD_DATE更新日期INVAL_DATE失效日期BUS_ITEM经营说明表3.5物品表表名实体属性属性名中文名
EQUIPMENT(物品表)ID物品IDEQUIPMENT_CODE设备编号EQUIPMENT_NAME设备名称EQUIPMENT_UNIT单位EQUIPMENT_ABB设备规格/型号EQUIPMENT_DESC设备说明EQUIPMENT_TYPE_ID设备类别IDCreate_user创建用户Create_date创建日期UPD_USER更新用户UPD_DATE更新日期INVAL_DATE失效日期表3.6出入库明细表表名实体属性属性名中文名WMS_INOUT_BILL_DETAIL(出入库明细表)IDIDINOUT_BILL_CODE出入库单编号SEQ入库单SEQEQUIPMENT_ID设备IDINOUT_AMOUNT入库数量INOUT_PRICE入库单价INOUT_AMT入库金额小计DRAW_DEPT_ID领用部门EMP_ID领用人REMARK备注UPD_USER更新用户UPD_DATE更新日期表3.7部门表表名实体属性属性名中文名DEPTID部门ID
(部门表)DEPT_CODE部门代号DEPT_NAME部门名称Create_user创建用户Create_date创建日期UPD_USER更新用户UPD_DATE更新日期INVAL_DATE失效日期表3.8出入库类别表表名实体属性属性名中文名WMS_INOUT_TYPE(出入库类别表)ID出入库IDINOUT_TYPE_CODE出入库类别代码INOUT_TYPE_NAME出入库类别名称INOUT_FLAG方向(“I”为入库“O”为出库)Create_user创建用户Create_date创建日期UPD_USER更新用户UPD_DATE更新日期表3.9类别表表名实体属性属性名中文名EQUIPMENT_TYPE(物品类别表)ID物品类别IDEQUIPMENT_TYPE_CODE设备类别代码EQUIPMENT_TYPE_NAME设备类别名称Create_user创建用户Create_date创建日期UPD_USER更新用户UPD_DATE更新日期表3.10仓库表表名实体属性属性名中文名WareHouse(仓库表)ID仓库IDWarehouse_CODE仓库代号
Warehouse_Name仓库名称MANAGE_DEPT_NO管理部门代号Warehouse_ADDR仓库地址Create_user创建用户Create_date创建日期UPD_USER更新用户UPD_DATE更新日期表3.11领用人员表表名实体属性属性名中文名EMP(领用人员表)ID人员IDEMP_CODE人员编号EMP_NAME人员名称SEX性别IDNO身份证号码DEPT_ID人员部门IDCreate_user创建用户Create_date创建日期UPD_USER更新用户UPD_DATE更新日期INVAL_DATE失效日期表3.12出入库主表表名实体属性属性名中文名WMS_INOUT_BILL(出入库主表)IDIDINOUT_TYPE_CODE出入库类别代号INOUT_BILL_ID出入库单ID
INOUT_BILL_DATE出入库日期VEND_ID供应商IDWarehouse_ID出入仓库代号INOUT_USER经办人员INOUT_ADMIN仓库管理员UPD_USER更新用户UPD_DATE更新日期3.2E-R图模型的建立根据需求分析的结果(数据流图、数据字典等),对现实世界的数据进行抽象,然后设计出本系统的E-R图。(1)各实体的E-R图:设备类别代码物品类别设备类别名称设备类别ID图3.1设备名称设备编号单位物品ID设备规格/型号物品设备说明设备类别ID失效日期创建用户修改用户修改日期图3.2领用人编码领用人姓名人员ID性别别领用人身份证号失效日期修改日期
部门ID图3.3部门ID部门编码部门部门名称修改日期图3.4出入库类别名称出入库ID进出库类别出入库标记出入库类别代码图3.5仓库名称所属部门代码仓库ID仓库地址仓库代码仓库图3.6
出入库类别代码出入库单ID出入库日期ID出入库主表仓库管理员供应商编码经办人员仓库编码图3.7INOUT_BILL_CODEID入库单SEQ设备编号备注出入库明细表进出库数量领用人编码入库单价领用部门入库金额小计图3.8(2)实体间E-R图设备仓库n:1n:11:n设备类型出入库类型出入库主表1:1
n:1n:1供应商领用人部门1:n图3.93.3实体关系描述Equipment_Type:Equipment=1:n;Dept:Emp=1:n;WareHouse:Equipment=1:n;Vend:WMS_inout_bill=1:1;WMS_inout_type:WMS_inout_bill=1:1;3.4数据结构表根据系统功能设计的要求、功能模块的划分以及上述实体与实体间关系的设计,形成了各个数据表之间的关系,由此可设计出仓库管理系统数据库的各个数据表,如下各表所示。表3.13用户表USER_INFO字段名数据类型数据长度说明允许空备注user_idint10用户表ID否主码accountvarchar50账户是 pwdvarchar50密码是 emp_idint20员工表id是
user_namevarchar50账户名称是 create_uservarchar20创建用户是 create_datedatetime20创建日期是 inv_datedatetime20失效日期是 upd_uservarchar20修改用户是 upd_datedatetime20修改日期是 表3.14菜单表menu字段名数据类型数据长度说明允许空备注menu_idint10菜单ID否主码menu_nmvarchar50菜单名称是 program_nmvarchar50程序名是 sup_menu_idint10上级菜单ID是 order_seqint10排列序号是 icon_nmvarchar50图标名称是 create_userint20创建用户是 create_datedatetime20创建日期是 inv_datedatetime20失效日期是 upd_userint20修改用户是 upd_datedatetime20修改日期是 表3.15用户对应菜单表USER_MENU字段名数据类型数据长度说明允许空备注user_menu_idint10维修记录编号否主码user_idint10用户表ID是 menu_idint20菜单功能表ID是 create_userint20创建用户是
create_datedatetime20创建日期是 inv_datedatetime20失效用户是 upd_userint20修改用户是 upd_datedatetime20修改日期是 表3.16部门表DEPT字段名数据类型数据长度说明允许空备注idint10部门ID否主码dept_codevarchar20部门代号是 dept_namevarchar50部门名称是 create_uservarchar20创建用户是 create_datedatetime20创建日期是 upd_uservarchar20更新用户是 upd_datedatetime20更新日期是 inval_datedatetime20失效日期是 表3.17领用人员表EMP字段名数据类型数据长度说明允许空备注idint10人员ID否主码emp_codevarchar20人员编号是 emp_namevarchar50人员名称是 sexvarchar4性别是 idnovarchar20身份证号码是
dept_idint20人员部门ID是外码create_uservarchar20创建用户是 create_datedatetime20创建日期是 upd_uservarchar20更新用户是 upd_datedatetime20更新日期是 inval_datedatetime20失效日期是 表3.18物品类型表EQUIPMENT_TYPE字段名数据类型数据长度说明允许空备注idint10物品ID否主码equipment_type_codevarchar20设备类别代码是 equipment_type_namevarchar100设备类别名称是 create_uservarchar20创建用户是 create_datedatetime20 创建日期是 upd_uservarchar20更新用户是 upd_datedatetime20 更新日期是 表3.19物品表EQUIPMENT字段名数据类型数据长度说明允许空备注idint10物品ID否主码equipment_codevarchar20设备编号是 equipment_namevarchar200设备名称是 equipment_unitvarchar10单位是 equipment_abbvarchar50设备规格/型号是
equipment_descvarchar100设备说明是 equipment_type_idint20 设备类别ID是外码create_uservarchar20创建用户是 create_datedatetime20 创建日期是 upd_uservarchar20更新用户是 upd_datedatetime20 更新日期是 inval_datedatetime20 失效日期是 表3.20仓库表WareHouse字段名数据类型数据长度说明允许空备注idint10仓库ID否主码warehouse_codevarchar20仓库代号是 warehouse_namevarchar50仓库名称是 manage_dept_noint10管理部门代号是 warehouse_addrvarchar100仓库地址是 create_uservarchar20创建用户是 create_datedatetime20 创建日期是 upd_uservarchar20更新用户是 upd_datedatetime20 更新日期是 表3.21供应商表VEND字段名数据类型数据长度说明允许空备注idint10供应商ID否主码vend_codevarchar20供应商代号是 vend_cnamevarchar100供应商名称是 vend_abbrvarchar50供应商简称是 presidentvarchar10负责人是 gmanagervarchar10法定人是
inv_adrvarchar100地址是 inv_mailvarchar10邮编是 tax_novarchar50税籍编号是 vend_telvarchar50电话是 vend_faxvarchar50传真是 contactervarchar10联系人是 e_mailvarchar50邮箱是 bank_novarchar20银行账号是 bank_nmvarchar100银行名称是 bus_itemvarchar500经营说明是 create_uservarchar20创建用户是 create_datedatetime20 创建日期是 upd_uservarchar20更新用户是 upd_datedatetime20 更新日期是 inval_datedatetime20 失效日期是 表3.22出入库主表WMS_INOUT_BILL字段名数据类型数据长度说明允许空备注idint10ID否主码inout_type_idint10出入库类别代号是外码inout_bill_codevarchar20出入库单ID是 inout_bill_datedatetime20 出入库日期是 vend_idint10供应商ID是外码warehouse_idint10出入仓库代号是外码inout_uservarchar20经办人员是
inout_adminvarchar20仓库管理员是 upd_uservarchar20更新用户是 upd_datedatetime20 更新日期是 表3.23出入库明细WMS_INOUT_BILL_DETAIL字段名数据类型数据长度说明允许空备注idint10ID否主码seqint20出入库单编号是 inout_bill_codevarchar20入库单SEQ是 equipment_idint10设备ID是外码inout_amountnumeric200入库数量是 inout_pricenumeric200入库单价是 inout_amtnumeric200入库金额小计是 draw_dept_idint10领用部门是 emp_idint10领用人是 remarkvarchar200备注是 upd_uservarchar20更新用户是 upd_datedatetime20更新日期是 表3.24出入库类别表WMS_INOUT_TYPE字段名数据类型数据长度说明允许空备注IDint10出入库ID否主码inout_type_codevarchar20出入库类别代码是 inout_type_namevarchar50出入库类别名称是 inout_flagvarchar1方向(“I”为入库“O”为出库)是 create_userint20创建用户是 create_datedatetime20创建日期是 upd_uservarchar20更新用户是
upd_datedatetime20更新日期是 3.5数据库的代码实现以部门表为例:(1)表DEPT—部门CREATETABLE[dbo].[DEPT]([ID][int]IDENTITY(1,1)NOTNULL,[DEPT_CODE][varchar](20)NULL,[DEPT_NAME][varchar](50)NULL,[CREATE_USER][varchar](20)NULL,[CREATE_DATE][datetime]NULL,[UPD_USER][varchar](20)NULL,[UPD_DATE][datetime]NULL,[INVAL_DATE][datetime]NULL,CONSTRAINT[PK_DEPT]PRIMARYKEYCLUSTERED([ID]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]
4详细设计4.1系统总体框架供应商物品类别仓库基础数据物品资料部门领用人入库单仓库管理出库单仓库管理系统退货单入库报表报表管理出入库报表库存量报表用户管理密码修改系统管理注销退出图4.1
4.2VisualStudio通用模块Common在开发过程中,经常会用到一些公共模块,这些模块的通用性很强,因此在开发的系统前首先需要根据自身系统需求设计这些公共模块。4.2.1加密解密功能该功能有效防止外界的注入式攻击,杜绝万能密码。代码实现见附录。4.2.2报表导出功能该功能将页面显示的查询信息,导出形成excel表格,方便查阅。代码实现见附录。4.3系统具体功能设计4.3.1登陆界面运行系统后出现如图4.2所示的登陆界面,输入user表中已经存在的账户名和正确的密码后方能进入系统主界面。代码实现见附录。图4.24.3.2系统主界面主界面包括系统所有的功能实现,点击不同功能图标,将进入不同功能的实现界面,用户成功登陆系统后进入主界面,主界面如图4.3所示。代码实现见附录。
图4.34.3.3基础数据模块(1)供应商管理单击主界面中的“供应商管理”按钮,进入供应商管理界面。如图4.4所示。图4.4
在此界面中可以新增供应商的信息。点击“查询”键时出现已有供应商信息,如图4.5图4.5点击图中最右侧的“修改”键可修改商家信息。其代码实现见附录。(1)物品类别管理单击主界面中的“物品类别管理”按钮,进入物品类别管理界面。如图4.6所示。图4.6在此页面中可以新增物品类别的编码、名称。点击“查询”将出现已有类别信息。图4.7物品类别信息可修改。其主要代码实现见附录。(3)物品资料管理单击主界面中的“物品资料管理”按钮,进入物品资料管理界面。如图4.8所示。
图4.8点击“查询”,显示已有物品资料的信息,图4.9物品的资料可修改,可导出。其代码实现见附录。(4)仓库管理单击主界面中的“仓库管理”按钮,进入仓库管理界面。如图4.10所示。
图4.10此界面中可以新增仓库基本信息,点击“查询”,显示已有仓库信息,图4.11仓库资料可修改、可导出。其代码实现见附录。(5)部门管理单击主界面中的“部门管理”按钮,进入部门管理界面。如图4.12所示。图4.12在该页面中新增部门。查询已有部门信息,若部门废除,则勾选失效标记。
图4.13部门信息的查询结果可修改、可导出。其代码实现见附录。(6)领用人管理单击主界面中的“领用人管理”按钮,进入领用人管理界面。如图4.14所示。图4.14在该页面中新增领用人的基本信息。查找领用人的信息,图4.15其结果可修改,可导出,若离职,勾选离职标记。其代码实现见附录。
4.3.4仓库管理模块(1)入库管理单击主界面中的“入库管理”按钮,进入入库管理界面。如图4.16所示。图4.16在该页面中填写入库单,入库单号设定为“进出库标志I+系统当前日期+自定单据编号”,入库日期为系统当前日期,若补充非当日的入库单,入库日期可按下拉键选择,但系统会记录操作实时日期。供应商也可按下拉键选择,操作完成后,按“入库保存”键以保存入库单。若入库单填写有误,须系统管理员admin在后台数据库修改。其代码实现见附录。(2)出库管理单击主界面中的“出库管理”按钮,进入出库管理界面。如图4.17所示。图4.17
在该页面中填写出库单,出库单号设定为“进出库标志O+系统当前日期+自定单据编号”,出库日期为系统当前日期,若补充非当日的出库单,出库日期可按下拉键选择,但系统会记录操作实时日期。领用部门也可按下拉键选择,操作完成后,按“出库保存”键以保存出库单。若出库单填写有误,须系统管理员admin在后台数据库修改。并且某物品无库存时,系统提示不允许出库。其代码实现见附录。(3)退货管理单击主界面中的“退货管理”按钮,进入退货管理界面。如图4.18所示。图4.18在该页面中填写退货单,退货单号设定为“退货标志R+系统当前日期+自定单据编号”,退货日期按下拉键选择,系统会记录操作实时日期。供应商也可按下拉键选择,操作完成后,按“保存”键以保存退货单。进行下笔退货登记时按“新增”键。若退货单填写有误,须系统管理员admin在后台数据库修改。此页面还可进行退货查询,查询前先勾选查询条件。代码实现见附录。4.3.5报表管理模块(1)入库报表单击主界面中的“入库报表”按钮,进入入库报表界面。如图4.19所示。图4.19此页面显示系统内所有入库单,并提供查询功能
和报表导出功能。查询时必须先勾选查询条件,且查询条件分为三种,按名称查询时输入入库单号,按日期查询时输入选择入库单的实时日期,按供应商查询时支持模糊查询。报表导出功能是将页面中的入库报表,导出形成Excel表格。其代码实现见附录。(2)出库报表单击主界面中的“出库报表”按钮,进入出库报表界面。如图4.20所示。图4.20显示仓库业务的所有出库单。具有查询功能和报表导出功能。查询时必须先勾选查询条件,且查询条件分为四种,按名称查询时输入出库单号,按日期查询时输入选择出库单的实时日期,以及按领用部门和领用人来进行查询。报表导出功能是将页面中的出库报表,导出形成Excel表格。其代码实现见附录。(3)库存量报表单击主界面中的“库存量报表”按钮,进入库存量报表界面。如图4.21所示。图4.21显示仓库中到目前为止的库存量。其代码实现见附录。4.3.6系统管理模块(1)用户管理单击主界面中的“用户管理”按钮,进入用户管理界面。如图4.22所示。
图4.22此功能只有系统管理员admin可使用。功能包括新增系统用户和修改已有用户资料。其代码实现见附录。(2)密码修改单击主界面中的“密码修改”按钮,进入密码修改界面。如图4.23所示。图4.23登录系统的操作员修改自己的密码。其代码实现见附录。(3)注销单击主界面中的“注销”按钮,进入注销页面面。如图4.24所示。图4.24注销后返回登录界面,
图4.25(4)退出单击主界面中的“退出”按钮,进入退出页面。如图4.26所示。图4.26退出仓库管理系统。其代码实现见附录。4.4系统包含的特殊功能4.4.1出库警报某物品当前库存量为零,出库该物品时系统会做出提醒,“无库存:物品名称”。如图4.27所示。其代码实现见附录。图4.274.4.2用户权限设置此菜单在页面中不显示,需系统管理员admin在后台数据库中操作。防止用户恶意篡改权限。数据库操作如下:(例如,给编号为27的用户赋予使用26号菜单的权限。)select*fromUSER_MENUinsertintoUSER_MENU(user_id,menu_id)
values(27,26)
5系统运行与测试5.1系统运行该仓库管理系统在VisualStudio2008和后台数据库SQLServer2008均能正常操作。完成了仓库管理系统的编译和调试工作后,将对系统进行发布,投入使用。5.2测试概述软件测试是保证软件质量的关键,它是对需求分析设计和编码的最后复审。在软件生命周期的每个阶段,都不可避免地会产生错误,通常在编写出每个原程序后,就要对它进行必要的测试,软件产品可用黑盒法和白盒法进行测试,我在测试系统时进行黑盒法测试,即检查程序是否输出正确的结果。5.3测试5.3.1登录测试名称:登陆测试目的:测试登陆界面内容:合理性检查、合法性检查,是否能成功登陆的测试步骤及操作:驱动模块调用之后,看是否能进入主界面允许偏差:不允许任何偏差若输入的用户名或密码错误将出现图5.1所示的提示。图5.1若输入的用户名和密码正确的话将进入主操作界面,如图5.2。
图5.25.3.2基础数据模块的测试名称:基础数据的新增、查询和修改功能的测试。目的:测试基础数据的操作界面。内容:合理性检查、合法性检查,模块操作界面显示控制。步骤及操作:驱动模块调用之后,看是否能实现各个功能,并且查看数据库中的数据是否做了相应的改变。允许偏差:不允许任何偏差。以基础数据模块中的仓库管理为例。图5.3在仓库管理主页面中输入新增仓库信息,按“确定”键保存,出现新增成功提示,如图5.4。
图5.4若在新增时输入与已有仓库相同的仓库编码或仓库名称输,则系统将会做出提示,如图5.5。图5.5点击仓库管理主页面中“查询”键,出现已有仓库的信息,如图5.6所示。图5.6点击“修改”即可对已有仓库信息进行修改,如图5.7所示。
图5.7修改完成后点“确定”键保存。5.3.3仓库管理模块的测试名称:模块中入库、出库单据的新增,退货单据的新增和查询的测试。目的:测试入库,出库和退库的操作界面。内容:合理性检查、合法性检查,模块操作界面显示控制。步骤及操作:驱动模块调用之后,看是否能实现各个功能,并且查看数据库中的数据是否做了相应的改变。允许偏差:不允许任何偏差。图5.8入库登记点击“入库保存”,保存入库信息。
图5.9入库成功出库时,领取有库存的物品,显示出库成功,若该物品无库存,则不允许出库。图5.10出库失败退货查询时若选择项不包括已有的退货信息,则显示”nodatatodisplay”。图5.11退货查询失败5.3.4报表管理模块的测试名称:模块中入库、出库报表的查询和库存量报表的显示测试。目的:测试各报表的操作界面。内容:合理性检查、合法性检查,模块操作界面显示控制。步骤及操作:驱动模块调用之后,看是否能实现各个功能。允许偏差:不允许任何偏差。以入库报表为例。入库报表中按正确的条件查询,例如按日期2011-5-28至2011-5-30查询,出现查询结果如5.12图所示。图5.12条件查询结果
否则显示无查询结果,图5.13查询无结果5.3.5系统管理模块的测试名称:模块中用户管理,密码修改的测试。目的:测试各报表的操作界面。内容:合理性检查、合法性检查,模块操作界面显示控制。步骤及操作:驱动模块调用之后,看是否能实现各个功能。允许偏差:不允许任何偏差。用户管理功能唯有系统管理员admin可见,成功新增用户后,如图5.14显示,并在数据库中添加相应权限。图5.14密码修改功能中,如果操作员修改自己密码时新密码与确认码不一致,系统提示如图5.15所示图5.15如果旧密码输入错误,系统提示如图5.16所示。
图5.16
总结经过这段时间的研究与调查分析,综合自己所学,在老师的帮助下,我的仓库管理系统的设计与实现己经完成,基本上达到了预期的设计要求和目的。在本系统的设计与实现的过程中主要讲述了仓库管理系统的系统设计部分,包括功能模块设计、数据库结构设计等。系统设计为整个程序构建了骨架,各个功能模块实现各个细节部分。系统的详细设计根据系统分析阶段的结论将系统具体化,并完成了各个模块的添加、修改、删除与查询的功能,直到最后形成一个完整的可行性的管理系统。在整个毕业设计阶段的工作经历将会使我终生受益,并对我今后的工作和发展产生深远的影响。但是本系统还有不尽如人意的地方,比如用户界面不够美观,有些功能未能实现、出错处理不够等多方面问题。这些都有待于今后的进一步完善。
致谢在系统的设计和实现的过程中,叶红老师给予了非常细心全面的指导,验收我设计的进程,并给予一些建议,感谢叶老师的指正,使系统更加完善、更符合用户的需求。当然由于时间的限制还有自身能力有限,系统难免存在一些不足,还请各位多多指教、多多包涵。感谢我亲爱的同学们,感谢关心我支持我的朋友们,感谢安徽工业大学工商学院,感谢学校领导和老师们给予我的帮助与关怀,谢谢!参考文献
[1]史济民.《软件工程原理、方法与应用》.北京:高等教育出版社,1998年11月[2]RonandJ.Norman.《面向对象系统分析与设计》.北京:清华大学出版社,2000年7月[3]夏邦贵、刘凡馨.《VisualC++数据库开发开发经典实例精解》.北京:机械工业出版社,2006年1月[4]张维民.《信息系统建模》.北京:电子工业出版社,2002年3月[5]王珊、萨师煊.《数据库系统概论(第4版)》.高等教育出版社,2006年5月[6](美)内格尔、(美)埃夫琴等著.《C#高级编程(第7版)》.李铭译,黄静审校,2010年11月[7]王小科.《C#编程宝典(十年典藏版)》.人民邮电出版社,2011年1月[8]姜晓东.《C#4.0权威指南》.机械工业出版社,2011年1月[9](美)CJDate.《AnIntroductiontoDATABASESYSTEMS》.北京:机械工业出版社,2002[10](美)DanielM.Solis.《IllustratedC#2010》.人民邮电出版社,2010[11](美)BjarneStroustrup.《ProC#2010andthe.NET4Platform5edition》.机械工业出版社,2010
附录:部分程序代码1、加密解密功能publicclassCommon{///加密///要加密的字符///加密的key///trueMD5加密,false一般publicstaticstringEncrypt(stringtoEncrypt,stringkey,booluseHashing){try{byte[]keyArray;byte[]toEncryptArray=UTF8Encoding.UTF8.GetBytes(toEncrypt);if(useHashing){MD5CryptoServiceProviderhashmd5=newMD5CryptoServiceProvider();keyArray=hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));}elsekeyArray=UTF8Encoding.UTF8.GetBytes(key);TripleDESCryptoServiceProvidertdes=newTripleDESCryptoServiceProvider();tdes.Key=keyArray;tdes.Mode=CipherMode.ECB;tdes.Padding=PaddingMode.PKCS7;ICryptoTransformcTransform=tdes.CreateEncryptor();byte[]resultArray=cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length);returnConvert.ToBase64String(resultArray,0,resultArray.Length);}}///解密///要解密的字符///解密的key///trueMD5解密,false一般publicstaticstringDecrypt(stringtoDecrypt,stringkey,booluseHashing){try{byte[]keyArray;
byte[]toEncryptArray=Convert.FromBase64String(toDecrypt);if(useHashing){MD5CryptoServiceProviderhashmd5=newMD5CryptoServiceProvider();keyArray=hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));}elsekeyArray=UTF8Encoding.UTF8.GetBytes(key);TripleDESCryptoServiceProvidertdes=newTripleDESCryptoServiceProvider();tdes.Key=keyArray;tdes.Mode=CipherMode.ECB;tdes.Padding=PaddingMode.PKCS7;ICryptoTransformcTransform=tdes.CreateDecryptor();byte[]resultArray=cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length);returnUTF8Encoding.UTF8.GetString(resultArray);}///显示提示对话框///提示的字符串publicstaticvoidMsgBox(string_Msg){stringStrScript="";StrScript=("");StrScript+=("alert(""+_Msg+"");");StrScript+=("");System.Web.HttpContext.Current.Response.Write(StrScript);System.Web.HttpContext.Current.Response.Write("");}///对传递的参数字符串进行处理,防止注入式攻击///传递的参数字符串///String publicstaticstringConvertSql(stringstr){str=str.Trim();str=str.Replace(""","""");str=str.Replace(";--","");str=str.Replace("=","");
str=str.Replace("or","");str=str.Replace("and","");returnstr;}2、报表导出功能///把Datatable导出到Excel///数据源///要导出的数据列///Excel的列标题///Excel标题头publicstaticvoidExportToExcel(DataTabledt,string[]fields,string[]headTexts,stringtitle){GridViewgvw=newGridView();intColCount;if(fields.Length!=0&&fields.Length==headTexts.Length){ColCount=fields.Length;gvw.AutoGenerateColumns=false;for(inti=0;i数据源///要导出的数据列///Excel的列标题publicstaticvoidExportToExcel(DataTabledt,string[]fields,string[]headTexts){ExportToExcel(dt,fields,headTexts,String.Empty);}3、用户登录显示系统主界面///用户登录验证///账号///密码///true成功false失败 publicboolCheckLogin(stringUserName,stringPassword)
{boolx=false;sql="SELECT*FROMUSER_INFOWHEREACCOUNT=""+UserName+""ANDPWD=""+Common.Encrypt(Password,"RA",true)+""AND(INV_DATEISNULLORINV_DATE>GETDATE())";//sql="SELECT*FROMUSER_INFOWHEREACCOUNT=""+UserName+""ANDPWD=""+Password+""AND(INV_DATEISNULLORINV_DATE>GETDATE())";try{inti=DataBase.GetRecordCount(conn,sql);if(i==1){x=true;}else{Common.MsgBox("帐号或密码不正确,请重新确认登录!");}}}protectedvoidPage_Load(objectsender,EventArgse){if(Session["USER_ID"]==null){Response.Redirect("Login.aspx");}this.ASPxLabel1.Text=Session["User_Name"].ToString();this.ASPxLabel2.Text=DateTime.Now.ToLongDateString();}protectedvoidPage_Load(objectsender,EventArgse)4、基础数据模块publicboolInsertVendor(Vendorven)///新增供应商{boolx=false;sql="INSERTINTOVEND(VEND_CODE,VEND_CNAME,VEND_ABBR,PRESIDENT,GMANAGER,INV_ADR,INV_MAIL,TAX_NO,VEND_TEL,VEND_FAX,CONTACTER,E_MAIL,BANK_NO,BANK_NM,BUS_ITEM,CREATE_USER,CREATE_DATE)";sql+="VALUES(""+ven.vend_Code+"",""+ven.vend_CName+"",""+ven.vend_Abbr+"",""+ven.prsdident+"",""+ven.gManager+"",""+ven.inv_Adr+"",""+ven.inv_Mail+"",""+ven.tax_NO+"",""+ven.vend_Tel+"",""+ven.vend_Fax+"",""+ven.contacter+"",""+ven.eMail+"",""+ven.bank_NO+"",""+ven.bank_Nm+"",""+ven.bus_Item+"",""+ven.comField.create_User+"",""+ven.comField.create_Date+"")";try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}
publicboolUpdateVendor(Vendorven,Booleanflag)///修改供应商资料{boolx=false;sql="UPDATEVENDSETVEND_CODE=""+ven.vend_Code+"",VEND_CNAME=""+ven.vend_CName+"",VEND_ABBR=""+ven.vend_Abbr+"",PRESIDENT=""+ven.prsdident+"",GMANAGER=""+ven.gManager+"",INV_ADR=""+ven.inv_Adr+"",INV_MAIL=""+ven.inv_Mail+"",TAX_NO=""+ven.tax_NO+"",VEND_TEL=""+ven.vend_Tel+"",VEND_FAX=""+ven.vend_Fax+"",CONTACTER=""+ven.contacter+"",E_MAIL=""+ven.eMail+"",BANK_NO=""+ven.bank_NO+"",BANK_NM=""+ven.bank_Nm+"",BUS_ITEM=""+ven.bus_Item+"",UPD_USER=""+ven.comField.upd_User+"",UPD_DATE=""+ven.comField.upd_Date+""";sql+="WHEREID=""+ven.id+""";if(flag){sql+="UPDATEEMPSETINVAL_DATE=""+ven.comField.inval_Date+""WHEREID=""+ven.id+""";}try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicDataTableGetVendor(Vendorven)///供应商资料赋给Datatable{DataTabledt=newDataTable();sql="SELECT*FROMVENDWHERE1=1";try{if(ven.id>0){sql+="ANDVEND.ID=@ID";}if(ven.vend_Code.Length!=0){sql+="ANDVEND.VEND_CODE=@VEND_CODE";}if(ven.vend_CName.Length!=0){sql+="ANDVEND.VEND_CNAME=@VEND_CNAME";}SqlParameter[]pars=newSqlParameter[]{newSqlParameter("@ID",ven.id),newSqlParameter("@VEND_CODE",ven.vend_Code),newSqlParameter("@VEND_CNAME",ven.vend_CName)};dt=DataBase.GetDataSet(conn,sql,pars).Tables[0];}}///验证是否存在同名供应商编码,或供应商名称
publicboolCheckVendor(StringVendCode,StringVendName){boolx=false;Stringsql1="SELECT*FROMVENDWHEREVEND_CODE=""+VendCode+""";Stringsql2="SELECT*FROMVENDWHEREVEND_CNAME=""+VendName+""";try{inti=DataBase.GetRecordCount(conn,sql1);intl=DataBase.GetRecordCount(conn,sql2);if(i+l>0)x=true;}}publicclassEquipment//创建equipment类{privatestringsql=String.Empty;privateSqlConnectionconn=DataBase.getConn();publicboolInsertEquipment(Equipmentequ)//在equipment表中新增物品信息{boolx=false;sql="INSERTINTOEQUIPMENT(EQUIPMENT_CODE,EQUIPMENT_NAME,EQUIPMENT_UNIT,EQUIPMENT_ABB,EQUIPMENT_DESC,EQUIPMENT_TYPE_ID,CREATE_USER,CREATE_DATE)";sql+="VALUES(""+equ.equipmentCode+"",""+equ.equipmentName+"",""+equ.equipmentUnit+"",""+equ.equipmentDesc+"",""+equ.equipmentAbb+"",""+equ.equipmentTypeID+"",""+equ.comField.create_User+"",""+equ.comField.create_Date+"")";try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicboolUpdateEquipment(Equipmentequ,Booleanflag)//修改物品信息{boolx=false;sql="UPDATEEQUIPMENTSETEQUIPMENT_CODE=""+equ.equipmentCode+"",EQUIPMENT_NAME=""+equ.equipmentName+"",EQUIPMENT_UNIT=""+equ.equipmentUnit+"",EQUIPMENT_ABB=""+equ.equipmentDesc+"",EQUIPMENT_DESC=""+equ.equipmentAbb+"",EQUIPMENT_TYPE_ID=""+equ.equipmentTypeID+"",UPD_USER=""+equ.comField.upd_User+"",UPD_DATE=""+equ.comField.upd_Date+""";
sql+="WHEREID=""+equ.id+""";if(flag){sql+="UPDATEEQUIPMENTSETINVAL_DATE=""+equ.comField.inval_Date+""WHEREID=""+equ.id+""";}try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicDataTableGetEquipment(Equipmentequ)//从Equipment表中读取数据{DataTabledt=newDataTable();sql="SELECTA.*,B.EQUIPMENT_TYPE_NAMEFROMEQUIPMENTA,EQUIPMENT_TYPEBWHERE1=1ANDA.EQUIPMENT_TYPE_ID=B.ID";try{if(equ.id>0){sql+="ANDA.ID=@ID";}if(equ.equipmentCode.Length!=0){sql+="ANDA.EQUIPMENT_CODE=@EQUIPMENT_CODE";}if(equ.equipmentName.Length!=0){sql+="ANDA.EQUIPMENT_NAME=@EQUIPMENT_NAME";}SqlParameter[]pars=newSqlParameter[]{newSqlParameter("@ID",equ.id),newSqlParameter("@EQUIPMENT_CODE",equ.equipmentCode),newSqlParameter("@EQUIPMENT_NAME",equ.equipmentName)};dt=DataBase.GetDataSet(conn,sql,pars).Tables[0];}}publicboolCheckEquipment(StringEquCode,StringEquName)//查询物品资料{boolx=false;Stringsql1="SELECT*FROMEQUIPMENTWHEREEQUIPMENT_CODE=""+EquCode+""";//Stringsql2="SELECT*FROMEQUIPMENTWHEREEQUIPMENT_NAME=""+EquName+""";try{inti=DataBase.GetRecordCount(conn,sql1);
//intl=DataBase.GetRecordCount(conn,sql2);if(i>0)x=true;}}protectedvoidbtnEnter_Click(objectsender,EventArgse)//物品类别管理{DBind();if(EquipmentTypeID>0){if(equType.UpdateEquType(equType)){Common.MsgBox("修改完成.");}}else{if(equType.CheckEquipmentType(equType.equipmentTypeCode,equType.equipmentTypeName)){equType.InsertEquType(equType);Common.MsgBox("新增成功");}else{Common.MsgBox("代码或名称重复.");}}}publicboolInsertWH(WareHousewh)//新增仓库信息{boolx=false;sql="INSERTINTOWAREHOUSE(WAREHOUSE_CODE,WAREHOUSE_NAME,MANAGE_DEPT_NO,WAREHOUSE_ADDR,CREATE_USER,CREATE_DATE)";sql+="VALUES(""+wh.wareHouseCode+"",""+wh.wareHouseName+"",""+wh.manageDeptNO+"",""+wh.wareHouseAddr+"",""+wh.comField.create_User+"",""+wh.comField.create_Date+"")";try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicboolUpdateWH(WareHousewh)//修改仓库信息{boolx=false;sql="UPDATEWAREHOUSESETWAREHOUSE_CODE=""+wh.wareHouseCode+"",WAREHOUSE_NAME=""+wh.wareHouseName+"",MANAGE_DEPT_NO=""+wh.manageDeptNO+"",WAREHOUSE_ADDR=""+
wh.wareHouseAddr+"",UPD_USER=""+wh.comField.upd_User+"",UPD_DATE=""+wh.comField.upd_Date+""";sql+="WHEREID=""+wh.id+""";try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicboolCheckWareHouse(StringWareHouseCode,StringWareHouseName)//查询仓库基本信息{boolx=false;Stringsql1="SELECT*FROMWAREHOUSEWHEREWAREHOUSE_CODE=""+WareHouseCode+""";Stringsql2="SELECT*FROMWAREHOUSEWHEREWAREHOUSE_NAME=""+WareHouseName+""";try{inti=DataBase.GetRecordCount(conn,sql1);intl=DataBase.GetRecordCount(conn,sql2);if(i+l>0)x=true;}}publicboolInsertDept(Deptdept)//新增部门信息{boolx=false;sql="INSERTINTODEPT(DEPT_CODE,DEPT_NAME,CREATE_USER,CREATE_DATE)VALUES(""+dept.dept_Code+"",""+dept.dept_Name+"",""+dept.comField.create_User+"",GETDATE())";try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicboolUpdateDept(Deptdept,Booleanflag)//修改部门信息{boolx=false;sql="UPDATEDEPTSETDEPT_CODE=""+dept.dept_Code+"",DEPT_NAME=""+dept.dept_Name+"",UPD_USER=""+dept.comField.upd_User+"",UPD_DATE=GETDATE()WHEREID=""+dept.id+""";
if(flag){sql+="UPDATEDEPTSETINVAL_DATE=GETDATE()WHEREID=""+dept.id+""";}try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicboolCheckDept(StringDeptCode,StringDeptName)//查询部门信息{boolx=false;Stringsql1="SELECT*FROMDEPTWHEREDEPT_CODE=""+DeptCode+""";Stringsql2="SELECT*FROMDEPTWHEREDEPT_NAME=""+DeptName+""";try{inti=DataBase.GetRecordCount(conn,sql1);intl=DataBase.GetRecordCount(conn,sql2);if(i+l>0)x=true;}}//领用人管理publicboolInsertEmp(Empemp)//新增领用人信息{boolx=false;sql="INSERTINTOEMP(EMP_CODE,EMP_NAME,SEX,IDNO,DEPT_ID,CREATE_USER,CREATE_DATE)VALUES(""+emp.emp_Code+"",""+emp.emp_Name+"",""+emp.sex+"",""+emp.idNO+"",""+emp.dept.id+"",""+emp.comField.create_User+"",GETDATE())";try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}publicboolUpdateEmp(Empemp,Booleanflag)//修改领用人员的信息,添加离职标记{boolx=false;sql="UPDATEEMPSETEMP_CODE=""+emp.emp_Code+"",EMP_NAME=""+emp.emp_Name+"",SEX=""+emp.sex+"",IDNO=""+emp.idNO+"",DEPT_ID=""+emp.dept.id+"",UPD_USER=""+emp.comField.upd_User+"",UPD_DATE=""+emp.comField.upd_Date+""";
sql+="WHEREID=""+emp.id+""";if(flag){sql+="UPDATEEMPSETINVAL_DATE=""+emp.comField.inval_Date+""WHEREID=""+emp.id+""";}try{inti=DataBase.RecordInsertUpdateDel(conn,sql);if(i>0)x=true;}}5、物品入库protectedvoidButton2_Click(objectsender,EventArgse){sql="SELECT*FROMWMS_INOUT_BILLWHEREINOUT_BILL_CODE=""+this.TextBox1.Text.ToString().Trim()+""";if(DataBase.GetRecordCount(conn,sql)<1){sql="INSERTINTOWMS_INOUT_BILL(INOUT_FLAG,INOUT_BILL_CODE,INOUT_BILL_DATE,VEND_ID,INOUT_USER)VALUES("I",""+this.TextBox1.Text.ToString().Trim()+"",""+this.ASPxDateEdit1.Value+"",""+this.DropDownList1.SelectedValue+"",""+Session["USER_NAME"]+"")";DataBase.RecordInsertUpdateDel(conn,sql);DataTabledt=this.GetDataFromGrid();foreach(DataRowrowindt.Rows){sql="INSERTINTOWMS_INOUT_BILL_DETAIL(SEQ,INOUT_BILL_CODE,INOUT_FLAG,EQUIPMENT_ID,WAREHOUSE_ID,INOUT_AMOUNT,INOUT_PRICE,INOUT_AMT,REMARK)";sql+="VALUES(""+int.Parse(row[1].ToString())+"",""+this.TextBox1.Text.ToString().Trim()+"","I",""+int.Parse(row[2].ToString())+"",""+int.Parse(row[8].ToString())+"",""+row[6].ToString()+"",""+row[7].ToString()+"",""+Double.Parse(row[6].ToString())*Double.Parse(row[7].ToString())+"",""+row[9].ToString()+"")";DataBase.RecordInsertUpdateDel(conn,sql);}Common.MsgBox("该笔入库完成.");Clear();}else{Common.MsgBox("该笔入库单号已存在,请变更单号.");}}protectedvoidDropDownList2_SelectedIndexChanged(objectsender,
EventArgse){GridViewRowgRow=(GridViewRow)((DropDownList)sender).Parent.Parent;if(((DropDownList)gRow.Cells[1].FindControl("DropDownList2")).SelectedIndex>0){sql="SELECTID,EQUIPMENT_CODE,EQUIPMENT_NAME,EQUIPMENT_DESC,EQUIPMENT_UNITFROMEQUIPMENTWHEREID=""+((DropDownList)gRow.FindControl("DropDownList2")).SelectedValue+""";DataRowrow=DataBase.GetRow(conn,sql);}}protectedvoidGridView1_RowCreated(objectsender,GridViewRowEventArgse){GridViewgv=(GridView)sender;if(gv.Rows.Count==0){return;}TextBoxtbox=(TextBox)gv.Rows[gv.Rows.Count-1].FindControl("TextBox9");for(inti=0;i=""+DateTime.Parse(this.ASPxDateEdit2.Value.ToString()).ToString("yyyyMMdd")+""ANDconvert(varchar(120),WIB.INOUT_BILL_DATE,112)<=""+DateTime.Parse(this.ASPxDateEdit1.Value.ToString()).ToString("yyyyMMdd")+""";}if(cboxVend.Checked){sql+="ANDVEND.VEND_CNAMElike"%"+this.TextBox2.Text.ToString().Trim()+"%"";}sql+="ORDERBY1,2";dt=DataBase.GetDataTable(conn,sql);gvInput.DataSource=dt;gvInput.DataBind();}protectedvoidbtnQuery_Click(objectsender,EventArgse){OutManageGridVIew.DataSource=null;sql="SELECTWIB.INOUT_BILL_CODE"出库单号",WIBD.SEQ"序号",EQU.EQUIPMENT_CODE"物料编号","+"EQU.EQUIPMENT_NAME"物料名称",EQU.EQUIPMENT_DESC"物料型号",EQU.EQUIPMENT_UNIT"单位","+"WIBD.INOUT_AMOUNT"数量",WH.Warehouse_Name"仓库名称",DEPT.DEPT_NAME"领人部门","+"WIB.INOUT_BILL_DATE"出库日期",WIBD.REMARK"备注""+"FROMWMS_INOUT_BILLWIB,WMS_INOUT_BILL_DETAILWIBD,WAREHOUSEWH,EQUIPMENTEQU,DEPT"+"WHERE1=1ANDWIB.INOUT_BILL_CODE=WIBD.INOUT_BILL_CODEANDWIB.INOUT_FLAG="O""+"ANDWIBD.INOUT_FLAG="O"ANDWIBD.WAREHOUSE_ID=WH.ID"+"ANDWIBD.EQUIPMENT_ID=EQU.id"+//"ANDWIBD.EMP_ID=EMP.ID"+"ANDWIBD.DRAW_DEPT_ID=DEPT.ID";if(cboxName.Checked){sql+="ANDWIB.INOUT_BILL_CODE=""+this.tboxName.Text.ToString().Trim()+""";}
if(cboxDate.Checked){sql+="ANDconvert(varchar(120),WIB.INOUT_BILL_DATE,112)>=""+DateTime.Parse(this.ASPxDateEdit2.Value.ToString()).ToString("yyyyMMdd")+""ANDconvert(varchar(120),WIB.INOUT_BILL_DATE,112)<=""+DateTime.Parse(this.ASPxDateEdit1.Value.ToString()).ToString("yyyyMMdd")+""";}if(cboxDept.Checked){sql+="ANDDEPT.ID=""+this.drpDept.SelectedValue+""";}if(cboxEmp.Checked){sql+="ANDEMP.ID=""+this.drpEmp.SelectedValue+""";}sql+="ORDERBY1,2";dt=DataBase.GetDataTable(conn,sql);OutManageGridVIew.DataSource=dt;OutManageGridVIew.DataBind();}protectedvoiddrpDept_SelectedIndexChanged(objectsender,EventArgse){this.drpEmp.Items.Clear();this.drpEmp.DataSource=null;if(drpDept.SelectedIndex>-1){this.drpEmp.DataSource=newWMS.DAL.Emp().GetEmpByDeptID(int.Parse(drpDept.SelectedValue));this.drpEmp.DataTextField="EMP_NAME";this.drpEmp.DataValueField="ID";this.drpEmp.DataBind();}}protectedvoidbtnExport_Click(objectsender,EventArgse){btnQuery_Click(sender,e);Common.ExportToExcel(dt,newstring[]{"出库单号","序号","物料编号","物料名称","物料型号","单位","数量","仓库名称","领人部门","出库日期","备注"},newstring[]{"出库单号","序号","物料编号","物料名称","物料型号","单位","数量","仓库名称","领人部门","出库日期","备注"},"出库单明细表");}9、用户管理publicpartialclassUser:System.Web.UI.Page{privateDeptdept=newDept();privateEmpemp=newEmp();protectedvoidbtnExit_Click(objectsender,EventArgse)
{Response.Write("history.go(-2)");}protectedvoidbtnEnter_Click(objectsender,EventArgse){UserInfouserInfo=newUserInfo();userInfo.account=UserName;userInfo.pwd=Password;userInfo.user_Name=drpEmp.Items[drpEmp.SelectedIndex].Text.ToString();userInfo.emp_ID=int.Parse(drpEmp.SelectedValue.ToString().Trim());userInfo.user_ID=int.Parse(Session["User_ID"].ToString());if(Password==PasswordConfirm){UserLoginuserLogin=newUserLogin();if(userLogin.CheckAccount(UserName)){userLogin.InsertUser(userInfo);Common.MsgBox("新增帐号成功,请赋予其相应权限!");Response.Write("this.parent.mainFrame.location.href="../Index.aspx"");}}else{Common.MsgBox("输入的两次密码不一致,请确认!");}}10、退货管理protectedvoidbtnSave_Click(objectsender,EventArgse){if(this.tboxNo.Text.ToString().Trim().Length<0){Common.MsgBox("退货单编号没有填写.");return;}WMS.DAL.WareHousewh=newWMS.DAL.WareHouse();if(wh.CheckWareHouseOnHand(this.drpEquCode.SelectedValue,this.drpWh.SelectedValue,int.Parse(this.tboxNumber.Text.ToString()))){sql="INSERTINTOWMS_INOUT_BILL(INOUT_FLAG,INOUT_BILL_CODE,INOUT_BILL_DATE,VEND_ID,INOUT_USER,INOUT_ADMIN)VALUES("R",""+this.tboxNo.Text.ToString().Trim()+"",""+Convert.ToDateTime(this.tboxDate.Value.ToString())+"",""+this.drpVend.SelectedValue+"",""+Session["USER_NAME"]+"",null)";sql+="INSERTINTO
WMS_INOUT_BILL_DETAIL(SEQ,INOUT_BILL_CODE,INOUT_FLAG,EQUIPMENT_ID,WAREHOUSE_ID,INOUT_AMOUNT,INOUT_PRICE,INOUT_AMT,REMARK)";sql+="VALUES(1,""+this.tboxNo.Text.ToString().Trim()+"","R",""+this.drpEquCode.SelectedValue+"",""+this.drpWh.SelectedValue+"",""+this.tboxNumber.Text.ToString().Trim()+"",null,null,""+this.tboxMemo.Text.ToString().Trim()+"")";if(DataBase.RecordInsertUpdateDel(conn,sql)>1){Common.MsgBox("退货完成.");this.btnClear_Click(sender,e);}else{Common.MsgBox("退货作业失败.");}}else{Common.MsgBox("库存量不足,请确认.");}}11、库存警报protectedvoidButton2_Click(objectsender,EventArgse){sql="SELECT*FROMWMS_INOUT_BILLWHEREINOUT_BILL_CODE=""+this.TextBox1.Text.ToString().Trim()+""";if(DataBase.GetRecordCount(conn,sql)<1){DataTabledt=this.GetDataFromGrid();foreach(DataRowdrindt.Rows){objectx=dr[2];objecty=dr[6];sql=@"SELECTSUM(NUM)QtyFROMWMS_ONHAND_VWHEREequipment_id=""+x+""";objectz=DataBase.GetValues(conn,sql).ToString();if(z==null||z.ToString()=="")Common.MsgBox("无该库存:"+dr[3]);return;if((int.Parse(z.ToString())this.parent.location.href="../../Login.aspx"");stringjs=@"top.opener=null;top.close();";HttpContext.Current.Response.Write(js);HttpContext.Current.Response.End();}protectedvoidASPxButton2_Click(objectsender,EventArgse){Response.Write("history.go(-2)");}}
毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名: 日 期: 指导教师签名: 日 期: 使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期:
学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日
指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格2、学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格5、完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日
评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□优□良□中□及格□不及格2、对答辩问题的反应、理解、表达情况□优□良□中□及格□不及格3、学生答辩过程中的精神状态□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格评定成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)教研室主任(或答辩小组组长):(签名)年月日教学系意见:系主任:(签名)年月日共62页第5页
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名):年月日学位论文出版授权书本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入****《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。论文密级:□公开□保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议)作者签名:_______导师签名:______________年_____月_____日_______年_____月_____日共62页第5页
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书独创声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律后果由本人承担。 作者签名:二〇一〇年九月二十日 毕业设计(论文)使用授权声明本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定) 作者签名:二〇一〇年九月二十日共62页第5页
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书致谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道***老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。***老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。最后,我要特别感谢我的导师***老师、和研究生助教***老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。共62页第5页
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书致谢这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。共62页第5页