当前位置:   article > 正文

物流管理系统_国外仓库管理系统研究现状

国外仓库管理系统研究现状

摘要

随着互联网时代的来临,采购不在被时间地点所限制,互通时代的到来给货物运输带来了很大的前景。也就对现代物流提出了越来越高的要求。信息化、自动化、网络化、已成为现代物流的鲜明特征。

现代物流企业只有依靠对物流信息的科学运筹和管理,将仓储、运输、配送、信息传递等功能集于一体,才能为客户提供安全、优质、快捷、准确的现代物流服务。因此,建立完善、有效的物流信息管理系统是非常有必要的。

物流管理信息系统采用 SQL Server 2005和ASP.NET平台,以C#为编程语言进行开发设计。实现货物登记、货物调动、货物运输、出库入库验收、系统管理的功能。并且区分管理员权限。管理员通过后台登陆能管理整个系统的信息。通过本物流管理系统可以使货物在物流过程中各个环节有效、规范的管理,使货物运输管理规范化,减少管理者的工作量。

关键词 物流运输;管理;信息系统;

The Design and Realization of the Logistics Management System Based on ASP.NET and SQL SERVER

Abstract

    With the advent of the Internet age, procurement is not limed by time and place, sharing era to the transport of goods is a big prospect, also on the increasingly high logistics requirements. Information technology, automation, networking, and has become a distinct characteristic of modern logistics.

Only by relying on modern logistics enterprise of scientific logistics and logistics information management, will be warehousing, transportation, distribution, messaging and other functions into one, in order to provide safe, high qualy, fast, accurate and modern logistics services. Therefore, the establishment of sound and effective logistics information management system is necessary.

Logistics management information system uses SQL Server 2005 and ASP.NET platform to C # as the programming language development and design. To achieve registration of goods, cargo transfer, cargo transport, document check acceptance, customer information management function, and the distinction between customer and administrator privileges. Customers are free to the web information and leave a message. Single number can also check the goods distribution information. Administrators can manage the entire system back-log information. Through the logistics management system can make the process of goods in all aspects of logistics and effective, standardized management, freight transportation management standardization, to reduce the workload of managers, customers can easily and effectively check their waybill information.

Keywords  Transport logistics; Management; Information System

目录

摘要 I

Abstract II

第1章 绪论

1.1 课题背景 1

1.2 国内外研究现状 2

1.3 课题研究的意义 3

1.4 系统目标 3

1.5 研究方法及设计思路 4

1.6 本章小结 4

第2章 需求分析 5

2.1 项目总述 5

2.2 可行性分析 5

2.3 运行环境分析 6

2.4 本章小结 6

第3章 系统概要设计 7

3.1 相关知识介绍 7

3.1.1 C#的简介 7

3.1.2 ASP.NET的简介 8

3.1.3 数据库技术 9

3.1.4 面向对象技术 11

3.1.5 B/S架构的WEB程序设计技术 12

3.2 系统设计目标 13

3.3 系统功能结构设计 14

3.3.1 功能设计 14

3.3.2 结构设计 14

3.4 用户界面设计 15

3.5 本章小结 15

第4章 系统详细设计 16

4.1 设计原则 16

4.1.1 适应性和可伸缩性 16

4.1.2 实用性 16

4.1.3 操作简单 16

4.1.4 安全性高 17

4.1.5 时效性 17

4.2 模块说明 17

4.3 流程逻辑 17

4.4 需要操作的数据表 18

4.5 本章小结 19

第5章 系统功能模块的实现 20

5.1 系统总体架构 20

5.2 数据库设计 21

5.3 系统模块实现 25

5.4 货物入库管理 26

5.5 货物出库管理 27

5.6 车辆管理 28

5.6.1 车辆信息管理 28

5.6.2 出车回车信息管理 29

5.6.3 货物跟踪管理 29

5.7 驾驶员管理 30

5.8 系统管理 31

5.9 本章小结 33

第6章 系统测试 34

6.1 测试 34

6.1.1 测试的目的和方法 34

6.1.2 测试的特征

6.1.3 测试原则

6.1.4 测试目标

6.1.5 测试的意义

6.2 单元测试 37

6.3 集成测试 39

6.4 系统测试 39

6.5 验收测试 39

6.6 本章小结 39

结论 41

致谢 42

参考文献 43

附录 44

千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要忘记把上面“Abstract”这一行后加一空行

  1. 绪论
    1. 课题背景

进入20世纪90年代以来,企业的外界市场环境发生了很大的变化,如客户服务激增、时间性成为管理的焦点、货物的多样性和小批量化决定了配送的复杂化,迫使企业越来越重视物流信息管理。由于市场竞争的日趋激烈,人们发现通过在生产过程中降低成本获得竞争优势的空间已经非常有限了,因此,企业开始把寻求成本优势和服务差别化优势的目光转向向生产前后延伸的物流领域,并开始在这一领域里实行全程质量管理。可以说,从世界范围看,在当今工商企业面临的诸多战略问题中,最具挑战的领域之一就是物流信息管理[1]。

以计算机和现代网络技术为特征的现代信息技术极大地促进了社会经济的发展,也引发了一场企业经营的革命,现行的企业经营方式和方法面临着前所未有的挑战。基于Web实现集中式管理的企业信息经营模式作为一种新型经营模式具有非常重要的意义和广阔的发展前景。在网络迅速发展的今天,任何一个个人,企业,团体要想获得更高更快的发展,走信息化的道路成为不二法门。特别是网络的普及,深入涉及到社会生活的各个方面,企业的经营方式势必需要顺应时代发展的需求。而网络也成为人们联系,发生关系的一个主通道。对于在网络信息经济时代,信息的及时,准确公布也成为吸引,抢占客户,扩大企业市场的有力工具。在人们寻找彼此的需求和服务都通过网络媒介的今天,相当于把整个自由市场全盘描绘在网络的迷宫中,因此一条通往本企业的康庄信息大道成为企业在现代竞争中制胜的关键。而对于物流企业,通过信息系统来管理企业内部的信息,已成为增加企业管理效率的有效途径。

企业信息管理通常是比较复杂,由于各类信息繁多难归集,利用计算机支持企业高效率完成企业信息管理,是适应现代企业制度要求,推动企业信息管理走向科学化、社会化、规范化和自动化,从而提高企业信息管理效率。管理信息系统(MIS)在强调管理、强调信息的现代社会中越来越得到普及。通过合理的企业信息化建设就可以让企业插上腾飞的翅膀,它不但可以让企业变得更高效、拥有更高的生产力,还可以让它具有更高的竞争力。

很多企业的业务分布在全球市场上,市场的瞬息万变要求企业提高快速反应能力,物流企业也是如此,物流信息化、网络化已成为物流企业实现其高效管理一个必不可少的条件。物流信息系统增强了物流企业信息的透明度和共享性,企业能够及时获取并处理企业内部以及供应链上的各种信息。随着信息技术的强势介入,物流业已经显示出其强劲的动力和蕴藏的无限商机!物流企业信息化是应用信息技术(包括先进的计算机、通信、互联网和软件等技术和产品),使企业的经营和管理等各个层次、各个环节和各个方面的水平得以提高,不断提高企业的决策能力和竞争力的过程。物流企业信息化建设的思路伴随着其现代化改造与市场环境需求而日趋完善,不间断的信息化投入使许多企业拥有了一定数量、不同目标的信息系统。由于各种各样的原因,企业内部各信息系统之间,以及企业外部各信息系统之间存在许多不相适应的地方。形成一个个“信息孤岛”系统,为了阻断信息割据,提高信息系统的运行效率,企业信息化系统整合逐步成为企业关心的内容。

随着我国的物流热潮掀起,众多物流企业纷纷成立。但由于国内各方面条件的限制,国内大部分物流企业规模尚小,缺少竞争优势,大多数暂时只能提供运输和仓储等传统服务。加上国外大型物流企业与之竞争,使原本就不足以分得一杯羹的国内物流企业更加难以适应市场的变化。要想在这场博弈中取胜,对于大部分的中小型物流企业来说,努力改变自身条件,提高自身的管理水平是他们的最佳生存之道,而信息的来源则成为关键。随着国内信息化步伐的加快,加之物流企业对行业信息的需求越来越大,促使物流信息网迅速发展,以适应物流行业的市场变化。物流信息网信息的及时性、准确性使其已经成为国内物流企业信息的主要来源,因此提高物流信息管理水平成为物流企业必须重视的关键问题。

目前市场上已有很多成型的物流企业管理系统,但绝大多数现存的物流企业管理系统都仅用于对企业日常业务进行管理,如对日常的收货、发车、付货、放代收款等业务进行管理。同时,现存的物流企业管理系统的适用企业单一,或是适用于大型物流企业但价格昂贵,或是适用于中小型企业但功能上不全面。

针对上面分析的现存物流企业管理系统的问题,本系统一定程度上弥补了它们的缺陷。首先在功能方面,本系统开发的主要目的是对所有物流企业都会涉及到的管理工作进行信息管理,如对企业的车辆信息,发货信息等进行管理。同时该系统还提供了物流动态信息和物流知识的管理,以便使企业员工可以及时地了解到行业的最新动态。其次,在适用企业方面,本系统既可应用于中小型物流企业,对唯一的公司进行信息管理;同时该系统还可应用于大型的集团式物流企业,对其各子公司进行统一管理。综上,该系统弥补了现有物流管理系统功能欠缺和适用企业有限的缺陷,是一个很有前景并会收到广大物流企业认可的物流企业管理系统。

    1. 国内外研究现状

针对现在物流信息系统的发展,在国外物流管理信息系统已经发展进入成熟阶段,并转向复杂功能的研究。在中国虽然起步较晚,但近几年发展却较快,国内企业物流信息系统大部分是面向基本流程控制,如库存控制系统、货物跟踪查询系统等。并且采用传统的客户/服务器模式(C/S)结构。但是随着计算机网络技术飞速发展,对信息的需求日益增大,国内开始转向研究浏览器/服务器(B/S)模式的开发。在这种结构下,系统的工作界面是通过IE浏览器来实现的,极大的方便了货物信息的更新和有效的管理。

进入21世纪,“信息化带动工业化”的发展思路加速了企业的发展。企业实施信息化积极性显著地提高,为物流管理信息化提供了良好的机遇。尤其近几年来,随着贸易的全球化和世界经济的一体化,中国逐渐成为世界制造中心和采购中心,物流业发展迅速,物流作为企业的“第三利润源泉”也因此在各行各业受到重视。在这种背景下,物流运输行业在加快改造、产业升级过程中同样迫切需要利用信息系统实现整个物流过程的贯通,以达到快速响应市场变化、优化配置物流资源、提高物流服务水平和降低物流成本的目的。

    1. 课题研究的意义

随着互联网的发展,网络化管理领域已日趋成熟,目前最为明显的是信息管理平台的开发与使用。当然,对于任何物流企业也可采用此方法来加强货物信息的管理,让管理者可以更方便更快捷的了解仓库货物信息,这样可以通过物流管理系统网站平台来加强货物流通管理。

在物流企业中,货物管理是一项非常重要的工作。使用人工方式管理货物运输不仅效率低下,而且容易出错,安全性很差。并且在实际操作中,数据的查找和更新都不容易实现,容易发生差错,导致了管理费用增加,服务质量难以得到保证,从而影响企业的竞争力。这里设计的物流管理信息系统,采用B/S结构,就可以解决这些问题。其目的在于实现货物信息管理、入库、出库、调配、出库入库验收的功能,从而提高工作效率和质量。

物流企业管理系统为各物流企业提供了物流动态信息、发货信息的浏览、查询等功能,全面的为物流企业的管理提供服务,帮助各分公司或企业内各部门更多的了解行业的动态信息,从而提高企业的运营效率。物流企业管理系统的全面的、详细的信息服务使之逐渐成为物流企业发展必须应用的系统产品[2]

    1. 系统目标

物流企业的正常运营中总是面对大量的企业内部信息以及发生的相关业务信息,因此需要对这些信息进行管理。及时了解各个环节中信息的变更,有利于减少管理人员的工作量,提高管理效率。

物流企业管理系统的设计与实现,包括对系统所应实现功能的前期调研工作;可行性研究工作;进行系统的需求分析;在系统设计阶段对系统进行界面设计、数据库设计、输入/输出设计等,并根据系统所需实现的功能和实际需要选择开发工具和开发环境;在系统详细设计阶段对系统的各模块进行详细的功能设计;在系统的实现阶段采用开发工具对系统进行开发并实现预定功能;在系统测试阶段对各个功能模块的进行数据库连接测试和基本功能测试,在系统测试的基础上完善模块的功能。

    1. 研究方法及设计思路

本系统采用软件工程中的生存周期方法进行设计[3]。

1.需求分析。通过该需求分析的方法确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

经过需求分析确定对系统的综合要求从系统的功能、性能、运行、以及将来可能提出的问题进行需求分析。必要时运用需求分析的软件工具验证需求分析。

2.系统概要设计。总体设计采用软件工程最基本的总体设计方法也称为概要设计或初步设计,首先主要工作是通过这个设计阶段的工作划分出组成系统的物理元素—程序、文件、数据、人工过程和文档等等。

其次进入总体设计的第二阶段是设计软件的结构,也就是要确定系统中每个程序是由那些模块组成的,以及这些模块相互间的关系并确定模块之间的链接接口。

具体过程是首先设想供选择的方案,其次选取合理的方案、再次推荐最佳方案,之后进行功能分解、设计软件结构、数据库设计、制定相应的测试计划最终完成总体设计。

3.系统详细设计。详细设计阶段的目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对系统的精确描述,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写程序。

主要采用结构程序设计的方法,采用自顶向下逐步求精的设计方法和单入单出的控制结构。应用详细设计的工具程序流程图,绘制程序流程图进行详细设计,确定程序流程图从而完成详细设计[4]。

    1. 本章小结

本章通过查阅资料和市场调查了解了课题背景,国内外的研究现状以及课题的研究意义。能够初步了解到做这个项目的前景和盈利情况,确定了该课题的研究方法和设计思路,为系统设计打好了坚实的基础。通过为期20多天的前期调查,我真切感受到一个项目从开始到结尾的艰辛,尤其是项目的开始,这直接决定了一个项目的成败。

  1.   需求分析 
    1. 项目总述

该项目主要针对物流运输的用户使用,可以监控货物状态,实现货物从运输到到达目的地的层层细化和单据信息及时返回到系统的功能。系统采用B/S的结构模式,一个服务器端对整个系统的有效管理,和一个浏览器端对货物状态信息的更新反馈.整个方案都实现物流管理信息系统的主要功能,结合现在货物的大量出货,本系统主要是针对货物的运输管理。

本系统有较好的可维护性、可靠性、可理解性、效率。易于用户理解和操作。可维护性包括了可读性、可测试性等含义。可靠性通常包括正确性和健壮性。开发过程中,在各种矛盾的目标之间作权衡,并在一定的限制的条件下(经费、时间、可用的软、硬件资源等),使上述各方面最大限度的得到满足。

    1. 可行性分析 

    1.经济可行性

    经济可行性研究是对组织的经济现状和投资能力进行分析,对系统建设运行和维护费用进行估算,对系统建成后可能取得的社会和经济效益进行估计。由于本系统是作为毕业设计由自己开发的,在经济上的投入甚微,系统建成之后将为今后实现系统功能提供很大的方便,估算新系统的开发费用和今后的运行、维护费用,估计新系统将获得的效益,并将费用与效益进行比较,看是否有利。

    2.技术可行性

    技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。基于ASP.NET+SQL SERVER的物流管理系统使用的是Microsoft公司的IDE产品Visual Studio进行开发,开发相对容易,当前的计算机硬件配置完全能满足开发的需求,因此在技术上是绝对可行的。

    3.时间可行性

    从时间上看,在三个月的时间里学习相关知识,六个月开发基于ASP.NET+SQL SERVER的物流管理系统。只要定下合理的时间安排,完全是可以实现的。因此,时间上是可行的。

    4.法律可行性

    (1) 所有技术资料都为合法。

(2) 开发过程中不存在知识产权问题。

(3) 未抄袭任何网站,不存在侵犯版权问题。

(4) 开发过程中未涉及任何法律责任。

综上所述,本系统的开发从技术上、从经济上、从时间上、从法律上都是完全可靠的。

    1. 运行环境分析

系统配置如下。

CPU:Inter P4 1.8以上

内存:512MB以上

硬盘:40G以上

软件环境:Windows 2003 Server (含IIS 6.0),Microsoft Sql Server 2005 Vs 2003 dremweaver mx 2004 fireworks mx 2004

    1. 本章小结

本章主要对系统进行需求性分析,对项目进行总述的同时分别在技术、经济、运行、时间、法律可行性证明该系统的可行性。需求分析对一个项目的成败也是至关重要的。在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中的一个简单步骤,但在过去十多年中越来越多的人认识到它是整个过程中最关键的一个过程。只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。许多大型应用系统的失败,最后均归结到需求分析的失败:要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。

  1. 系统概要设计
    1. 相关知识介绍
      1. C#的简介

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角[7]。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。

为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。

根据育龙网资料评价显示:C#几乎集中了所有关于软件开发和软件工程研究的最新成果:面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、版本控制、代码安全管理……尽管像很多人注意到的一样,罗列上述特性时,总是让人想到JAVA,然而C# 确实走得更远。但现实的情况是,非技术的因素往往更能决定一个产品的未来,尤其在计算机软件的历史上,技术卓越的产品,如OS/2、Mac OS、UNIX等,都败在了Windows漂亮的界面上。JAVA的用户主要是网络服务的开发者和嵌入式设备软件的开发者,嵌入式设备软件不是C# 的用武之地,而在网络服务方面,C# 的即时编译和本地代码Cache方案比JAVA虚拟机具有绝对的性能优势。何况C# 一旦成为一个像C++ 一样的公共的标准,软件开发商既可以省去JAVA的许可证费用,也不必担心成为微软的奴隶,那些反微软的人士和主张厂商独立的人士可能也不会有什么意见。这可能正是微软所期待的。

但是,C# 也有弱点。首先,在一些版本较旧的Windows平台上,C# 的程序还不能运行,因为C# 程序需要 .NET运行库作为基础,而 .NET运行库作为Windows(XP及以后版本)的一部分发行, Windows Me 和 Windows 2000用户只能以Service Pack的形式安装使用。其次,C# 能够使用的组件或库还只有 .NET 运行库等很少的选择,没有丰富的第三方软件库可用,这需要有一个过程,同时各软件开发商的支持也很重要。第三,JAVA的成功因素里有一些是反微软阵营的吹捧,虽然“只写一次,到处运行”只是一句口号,但毕竟已经是一种成熟的技术。而C# 的鼓吹者只有名声不佳的微软,且只能运行在Windows上。实际上这两种语言都不是不可替代的,理智的说,对软件开发商而言,什么用的最熟什么就是最好的工具。尤其对C++的使用者,C# 没有带来任何新东西,因为.NET运行库在C++中也可以使用,没有要换的绝对的理由。

      1. ASP.NET的简介

ASP.NET的前身是ASP技术。ASP是一项微软公司的技术,是一种使嵌入网页中的脚本,可由因特网服务器执行的服务器端脚本技术。ASP是在IIS 2.0上首次推出(Windows NT 3.51),并且在IIS3.0(Windows NT 4.0)发扬光大,成为服务器端应用程序的热门开发工具。1994年到2000年,ASP技术已经成为微软推展Windows NT 4.0平台的关键技术之一,数以万计的ASP网站也是这个时候开始如雨后春笋般的出现在网络上。它的优点是简单以及高度克制化的能力[10]。

1.开发工具

ASP.NET的网站或应用程序通常使用Microsoft公司的IDE产品Visual Studio进行开发。在开发过程中可以进行WYSIWYG的编辑。

其他开发工具如下。

Adobe Dreamweaver

SharpDevelop  

MonoDevelop

Microsoft Expression Web

Microsoft WebMatrix

2.语言支持    

ASP.NET开发的首选语言是C#及VB.NET,同时也支持多种语言的开发。如表3.1所示[13]。

表3-1 ASP.NET支持的开发语言

语言

支持软件

说明

C#

微软官方支持

VB.NET

微软官方支持

F#

插件形式支持

Powershell

插件形式支持

Java/J#

J#

微软官方支持

Python

IronPythom

开源项目支持

Ruby

IronRuby

开源项目支持

Delphi

第三方公司支持

JScript

JScript

官方支持

Lua

Nua

开源项目支持

3.跨平台性

因为ASP.NET是基于通用语言的编译运行的程序,其实现完全依赖虚拟机,所以它拥有跨平台性,ASP.NET构建的应用程序可以运行在几乎全部不得平台上。其中大致分为以.NET Framework为基础使用IIS作为Web服务器承载的微软体系,以及使用Mono为基础框架运行在Windows或Linux上的开源体系[5]。

      1. 数据库技术 

数据库技术产生于20世纪60年代末70年代初,其主要目的是有效地管理和存取大量的数据资源。数据库技术主要研究如何存储,使用和管理数据。近年来,数据库技术和计算机网络技术的发展相互渗透,相互促进,已成为当今计算机领域发展迅速,应用广泛的两大领域.数据库技术不仅应用于事务处理,并且进一步应用到情报检索、人工智能、信息系统、计算机辅助设计等领域[14]。

数据库主要内容包括如下。

1.实体:是现实世界中的客观事物。

2.关系模型:是把数据间组织关系用一张表来表示。

3.表:表是包含数据库中所有数据的数据库对象,表定义为列的集合。

4.视图:是一个虚拟表,其内容由查询进行定义。

5.存储过程:是由流程控制和sql语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,使用时只需调动。

结合物流管理信息系统的应用,本系统采用现在普遍使用的sql server 2005 数据库并结合ado.net实现数据的存储和读取。

SQL Server 2005简介: SQL Server 2005是微软公司开发的一个关系数据库管理系统,以Transact_SQL作为它的数据库查询和编程语言。T-SQL是结构化查询语言SQL的一种,支持ANSI SQL-92标准。

SQL Server提供服务器端的软件,这部分需要安装在NT Server上,SQL Server的客户端则可以安装在许多客户端PC系统中,Windows可以让客户端进行数据库的建立,维护及存取等操作,SQL Server可以最多定义32767个数据库,每个数据库中,可以定义20亿个表格,每个表格可以有250个字段,每个表格的数据个数并没有限制,每一个表格可以定义250个索引,其中有一个可以是Clustered索引。

ADO.NET简介: ADO.NET 提供对 Microsoft sql server 等数据源以及通过 ole db 和 xml 公开的数据源的一致访问。数据共享使用者应用程序可以使用ADO.NET来连接到这些数据源,并检索、操作和更新数据。ADO.NET是从Web的角度对ADO进行检讨和改进。

Microsoft对ADO.NET的设计严格地体现了其名字的含义:ADO再加上.NET。ADO.NET自动连接网络,致力于让Web数据访问变得更加简单和高效。两个功能使得这方面的增强成为可能。

ADO.NET的对象主要包括如下。DataSet,DataTable,DataColumn,DataRow,和DataRelation。如图3-1.这些对象的主要特点说明如下。

DataSet:这个对象是一个集合对象,它可以包含任意数量的数据表,以及所有表的约束、索引和关系。所有这些信息都以XML的形式存在,我们可以处理、遍历、搜索任意或者全部的数据。

DataTable:这个对象代表着可以在DataSet对象内找到的所有表。

DataColumn:表包含与列有关的信息,包括列的名称、类型和属性。我们可以按照下面的方式创建DataColumn对象,指定数据类型,然后把列加入到表。

数据库技术的快速发展能够解决物流信息化管理的实现[6]。

图3-1 ADO.NET的对象

      1. 面向对象技术 

C#是纯粹的面向对象编程语言,它真正体现了“一切皆为对象”的精神。在C#中,即使是最基本的数据类型,如int,double,bool类型,都属于System.Object类型。此外,使用C#编程,不会存在与游离于对象之外的属于过程的东西。C#支持所有关键的面向对象的概念,如封装、继承和多态性。 在C#中, 不存在全局函数、变量或者是常量,所有的东西都封闭在类中,包括事件成员和静态成员[7]。

面向对象技术的主要特点如下。

1.对象:特性+行为

类描述了一组有相同特性(数据元素)和相同行为(函数)的对象。类实际上就是数据类型,抽象数据类型的创建是面向对象程序设计中的一个基本概念。抽象数据类型几乎能像内部类型一样准确工作。程序员可以创建类型的变量(在面向对象程序设计中称为“对象”或“实例”)并操纵这些变量(称为发送“消息”或“请求”,对象根据发来的消息知道需要做什么事情)。

2.继承:类型关系

类型不仅仅说明一组对象上的约束,还说明与其他类型之间的关系。两个类型可以有共同的特性和行为,但是,一个类型可能包括比另一个类型更多的特性,也可以处理更多的消息(或对消息进行不同的处理)。继承表示了基本类型和派生类型之间的相似性。一个基本类型具有所有由它派生出来的类型所共有的特性和行为。程序员创建一个基本类型以描述系统中一些对象的思想核心。由这个基本类型派生出其他类型,表达了认识该核心的不同途径。

3.多态性

当处理类型层次结构时,程序员常常希望不把对象看作是某一特殊类型的成员,而把它看作基本类型成员,这样就可以编写不依赖于特殊类型的代码。程序员可以用关键字virtual表明他希望某个函数有晚捆绑的灵活性,而并不需要懂得virtual的使用机制。没有它,就不能用C + +做面向对象的程序设计。Virtual函数(虚函数)表示允许在相同家族中的类有不同的行为。这些不同是引起多态行为的原因。

      1. B/S架构的WEB程序设计技术

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着 Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,客户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端。由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,客户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现[15]。

.NET平台最大的优点体现在传统的ASP限制程序开发人员使用脚本语言,而ASP.NET允许使用一个支持.net的语言,因此在ASP.NET中编写的代码被编译后将拥有更好的性能,并且可以充分的利用高级语言特性。Visual C# 编程的库是 .NET Framework。此系统的页面和代码部分是进行了分离的,能够更方便分离各个页面的功能和排查错误,使代码看起整齐,有序。其中功能代码在以后缀为cs的文件中,页面的外观和一些组件在以后缀为aspx的文件中。

C/S、B/S结构软件技术上的比较如下[8]。

1.数据安全性比较。由于C/S结构软件的数据分布特性,客户端所发生的火灾、盗抢、地震、病毒、黑客等都成了可怕的数据杀手。另外,对于集团级的异地软件应用,C/S结构的软件必须在各地安装多个服务器,并在多个服务器之间进行数据同步。如此一来,每个数据点上的数据安全都影响了整个应用的数据安全。所以,对于集团级的大型应用来讲,C/S结构软件的安全性是令人无法接受的。对于B/S结构的软件来讲,由于其数据集中存放于总部的数据库服务器,客户端不保存任何业务数据和数据库连接信息,也无需进行什么数据同步,所以这些安全问题也就自然不存在了。

2.数据一致性比较。在C/S结构软件的解决方案里,对于异地经营的大型集团都采用各地安装区域级服务器,然后再进行数据同步的模式。这些服务器每天必须同步完毕之后,总部才可得到最终的数据。由于局部网络故障造成个别数据库不能同步不说,即使同步上来,各服务器也不是一个时点上的数据,数据永远无法一致,不能用于决策。对于B/S结构的软件来讲,其数据是集中存放的,客户端发生的每一笔业务单据都直接进入到中央数据库,不存在数据一致性的问题。

3.数据实时性比较。在集团级应用里,C/S结构不可能随时随地看到当前业务的发生情况,看到的都是事后数据;而B/S结构则不同,它可以实时看到当前发生的所有业务,方便了快速决策,有效地避免了企业损失。

4.数据溯源性比较。由于B/S结构的数据是集中存放的,所以总公司可以直接追溯到各级分支机构(分公司、门店)的原始业务单据,也就是说看到的结果可溯源。大部分C/S结构的软件则不同,为了减少数据通信量,仅仅上传中间报表数据,在总部不可能查到各分支机构(分公司、门店)的原始单据。

5.服务响应及时性比较。企业的业务流程、业务模式不是一成不变的,随着企业不断发展,必然会不断调整。软件供应商提供的软件也不是完美无缺的,所以,对已经部署的软件产品进行维护、升级是正常的。C/S结构软件,由于其应用是分布的,需要对每一个使用节点进行程序安装,所以,即使非常小的程序缺陷都需要很长的重新部署时间,重新部署时,为了保证各程序版本的一致性,必须暂停一切业务进行更新(即"休克更新"),其服务响应时间基本不可忍受。而B/S结构的软件不同,其应用都集中于总部服务器上,各应用结点并没有任何程序,一个地方更新则全部应用程序更新,可以做到快速服务响应。

6.网络应用限制比较。C/S结构软件仅适用于局域网内部用户或宽带用户(1兆以上);而我们的B/S结构软件可以适用于任何网络结构(包括28.8K拨号入网方式),特别适于宽带不能到达的地方(例如双汇集团的某些分公司,仅靠电话上网即可正常使用软件系统)。

    1. 系统设计目标

经过严格的需求分析,了解当前市场的现状和国内外的发展前景,再参照自己现在的知识水平,争取做到适应性好,实用性强,操作简单,安全性高的项目。

本系统需要实现如下几个功能模块如下。

数据管理: 实现库存货物的管理。包括:实现库存货物的盘点管理

入库管理: 实现货物入库信息的管理。包括:入库单的录入、查询、修改、删除

出库管理: 实现货物出库信息的管理。包括:出库单的录入、查询、修改、删除

系统管理: 实现系统设置管理。包括:管理员的及其使用权限的设定,系统退出

车辆管理:实现车辆的调配管理和信息管理。包括:车辆出车、回车的录入、查询、修改、删除。货物的跟踪管理。

    1. 系统功能结构设计
      1. 功能设计

物流管理系统主要的功能是实现对货物的跟踪管理和出入库信息的管理,能够时时监控到货物的信息,以便于跟顾客沟通和解决问题。数据管理实现了对库存货物的数字化管理,节约了劳动力和财力。车辆管理能及时的公布出车辆的使用情况,方便了货物的运送。

      1. 结构设计

系统的主要结构有:数据管理模块,出入库管理模块,系统管理模块,车辆管理模块四部分。根据功能模块的划分,以及需求分析,系统结构设计图如图3-2所示。

图3-2系统功能结构设计图

在数据管理模块中,分为管理货物信息,管理库存信息和盘点货物信息三个部分,实现货物的库存管理。

在出入库管理模块中,分为添加货物信息,出库单管理和入库单管理三个部分,实现货物的出入库管理。

在系统管理模块中,分为系统设置,权限设置和系统推出,实现系统的设置管理。

在车辆管理模块中,分为出车管理,回车管理和货物跟踪三个部分,实现车辆的调配管理和信息管理。

    1. 用户界面设计

基于物流管理系统开发中软件界面的设计要美观、易用,给与用户适当的回馈。因为用户界面是否友好不仅在很大程度上体现了编程水平,同时也直接影响用户对应用程序的体验性。在用户界面设计中主要考虑几点如下[16]。

1.干净而不过于简单。避免不必要修饰,页面整体风格为简单明了,将相似的信息放在同一个页面中,方便用户操作。

2.给与用户适当的反馈。在用户输入错误或者有操作成功时,采用界面弹出对话框的模式,给与用户适当的反馈,让用户体验独最佳。做到友好的人机交互。

3.记忆负担最小化。人脑不是电脑,在设计界面时必须要考虑人类大脑处理信息的限度。人类的短期记忆极不稳定、有限,24小时内存在25%的遗忘率。所以对用户来说,浏览信息要比记忆更容易。

    1. 本章小结

概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。本章介绍了应用于本设计的相关技术,并给出了系统的设计目标、功能设计、结构设计、界面设计,为系统设计打好了坚实的基础。

  1. 系统详细设计
    1. 设计原则
      1. 适应性和可伸缩性

我们知道,在ASP.NET的处理机制的设计是基于管道模型的,ASP.NET的管道中,有很多的HttpModule。每个要处理的请求经过ASP.NET管道的时候,都会被其中的HttpModule拦截,进行相关的处理之后,再将请求发送给下一个HttpModule。例如,SessionStateModule会拦截请求,并且解析请求中的Session Cookie,然后加载合适的Session到HttpContext中(要知道,每一个Session都会有一个保存在Cookie中的Session Key)。

同时,并且不是在管道中的所有的HttpModule都是必须的,例如,如果我们没有在项目中使用Membership和Profiler Provider,那么没我们就没有必要使用FormsAuthenticate模块,再如,如果我们没有使用Windows 身份验证,那么,我们就可以移除WindowsAuthenticate模块。

在默认情况下,每次ASP.NET运行时在启动的时候,都会根据配置文件去加载相应的HttpModule,根据IIS的版本不同,要查看的配置文件也不一样。

对于IIS 6而言,默认的定义了加载HttpModule的文件就是machine.config,默认的配置文件是applicationHost.config。

这叫做ASP.NET的管道优化,利用这种方法可以提高系统的适应性和可伸缩性。

      1. 实用性

实用性原则是所有应用程序最基本的原则,直接衡量系统的成败,每一个提交到用户手中的系统都应该是实用的,能解决用户的实际问题,否则该设计就是垃圾。物流管理系统适用大部分电脑和笔记本,使用户可以适时适地的对货物信息进行跟踪和管理。

      1. 操作简单

基于现在社会物流行业的大范围兴起,物流管理系统面向广大用户,操作简单和优秀的图形界面是非常重要的。系统让用户省去了很多不必要的操作,帮助用户尽快的适应物流管理系统的使用。

      1. 安全性高

ASP.NET提供一个很健壮的安全系统,ASP.NET的安全性和性能有很深的关系,利用ASP.NET的安全机制可以从每个Web页面的顶端编写安全检查代码的工作解放出来,安全检查有核心的ASP.NET子系统完成。

当IIS收到请求时,它首先查看资源是如何受保护的,资源可以用户匿名访问保护,或者用标准的本地或活动目录证书保护。IIS通过标准的访问控制列表(ACL)查看用户对请求的资源十分有访问权限。如果任何一项检查失败,IIS甚至在请求到达ASP.NET之前就拒绝访问。在这个过程中发生了两件事,用户被身份验证(在匿名访问时事通过标准的IUSER_<machine-name>账号进行身份验证),然后被授权(通过对照ACL检查身份验证证书)。

如果一个ASP.NET资源(ASP.NET页面,用户控件或Web服务)被请求,IIS对请求进行了身份验证并授权,下一步是由ASP.NET提的自己的身份验证和授权。

正是这种机制使得此系统的安全性不错,在这个病毒肆虐网络的时代,更是节约了系统的研发时间,后期的维护也变得更加简单。

      1. 时效性

系统以用户需求为目标,以方便用户为原则,根据用户实际需求的功能情况,使用户能方便有效的管理物流信息。

    1. 模块说明

本系统需要实现如下几个功能模块如下。

数据管理模块: 实现库存货物的管理。包括:实现库存货物的盘点管理。

入库管理模块: 实现货物入库信息的管理。包括:入库单的录入、查询、修改、删除。

出库管理模块: 实现货物出库信息的管理。包括:出库单的录入、查询、修改、删除。

系统管理模块: 实现系统设置管理。包括:管理员的及其使用权限的设定,系统退出。

车辆管理模块:实现车辆的调配管理和信息管理。包括:车辆出车、回车的录入、查询、修改、删除。货物的跟踪管理。

    1. 流程逻辑

物流管理系统的流程图。如图4-1所示。

图4-1 流程图

    1. 需要操作的数据表。

由于后边的章节里还要介绍到所要用到的数据库表,这里只列举部分数据表。下面三个数据表分别是登录信息表,如表4-1所示,出库货物信息表,如表4-2所示,和车辆信息表,如表4-3所示。

表4-1 登陆信息表

字段名

数据类型

长度

说明

yhm

varchar

30

用户名(主键)

mm

varchar

50

密码

sf

varchar

50

权限

表4-2 出库货物信息表

字段名

数据类型

长度

说明

id

int

30

管理员(主键)

Ckmc

varchar

50

出库货物名称

Cksj

varchar

50

出库时间

Cksl

varchar

50

出库数量

Fwhd

varchar

50

发往何地

Clxx

varchar

50

车辆信息

total

varchar

50

统计

表4-3 车辆信息表

字段名

数据类型

长度

说明

id

varchar

30

司机Id(主键)

Cph

varchar

50

车牌号

Fzr

varchar

50

发车人

Grsj

varchar

50

司机

Cllx

varchar

50

车辆

Bxqk

varchar

50

Zt

int

30

    1. 本章小结

详细设计是软件工程中软件开发的一个步骤,就是对概要设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。本章介绍了系统的设计原则,主要的功能模块及其说明,流程逻辑和需要用到的部分数据表。

  1. 系统功能模块的实现
    1. 系统总体架构

结合.net的特性和物流信息系统的特点,系统采用B/S的结构模式开发。下面给出系统模块图,如图5-1所示。

图5-1 功能模块图

数据管理: 实现库存货物的管理。包括:实现库存货物的盘点管理。

入库管理: 实现货物入库信息的管理。包括:入库单的录入、查询、修改、删除。

出库管理: 实现货物出库信息的管理。包括:出库单的录入、查询、修改、删除。

系统管理: 实现系统设置管理。包括:管理员的及其使用权限的设定,系统退出。

车辆管理:实现车辆的调配管理和信息管理。包括:车辆出车、回车的录入、查询、修改、删除。货物的跟踪管理。

以特定的图形符号加上说明,表示算法的图,称为流程图或框图。它使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。流程图在汇编语言和早期的BASIC语言环境中得到应用。相关的还有一种PAD图,对PASCAL或C语言都极适用。以特定的图形符号加上说明,表示算法的图,称为流程图或框图。

根据整个物流运输系统的流程设计了该系统的流程图, 如图5-2。

图5-2 系统流程图

    1. 数据库设计

本物流企业管理系统代码设计遵循标准化原则,对代码的很多方面进行了规范,例如:代码设计时要尽量使用比较经典的算法为系统提供一个简单、清楚、易于识别、冗余度最小的数据信息,以节省存储空间;代码设计还遵从了可读性设计,可使用性强等设计原则。考虑到上面的代码设计原则,本系统采用了最简单,最常用的顺序码进行代码设计,即采用顺序的自然数进行对象的区分。例如,对于系统中的会员用户,其ID就是采用顺序码进行编排的,注册用户的ID以数字从小到大的顺序依次编入系统中。虽然进行了以上的代码优化设计,但是由于本人水平有限,并不能保证这些系统代码为最优化设计,系统代码仍有优化的空间。

对于物流管理信息系统,使用数据库为SQL SERVER 2005,要应用到的数据库表有:登陆界面所需的数据表,如表5-1所示。

表5-1 登陆信息表

字段名

数据类型

长度

说明

yhm

varchar

30

用户名(主键)

mm

varchar

50

密码

sf

varchar

50

权限

货物的基本信息。如表5-2所示。库存货物的管理如表5-3所示。

表5-2 库存货物详细信息表

字段名

数据类型

长度

说明

id

int

管理员(主键)

CommodityName

int

货物名称

CompanyId

int

公司Id

Number

int

编号

Pirce

int

价格

StockDate

datetime

存入日期

SettlementType

varchar

50

库存类型

Payment

int

运送路径

FactPayment

int

标记

NotPayment

int

用户名字

ManageMan

varchar

20

管理者

Username

varchar

50

用户名

AddTime

varchar

20

添加时间

ClientId

varchar

50

顾客id

Type

varchar

10

类型

ckid

int

出车id

表5-3 库存货物信息表

字段名

数据类型

长度

说明

id

Int

30

经手人(主键)

CommodityName

varchar

100

货物名称

ShortName

varchar

50

货物简称

ProducePlace

varchar

100

存放地点

描述货物运送公司的信息。如表5-4所示。车辆信息如表5-5所示。

表5-4 公司信息表

字段名

数据类型

长度

说明

id

int

30

公司id(主键)

CompanyName

varchar

50

公司名称

CompanyType

varchar

50

公司类型

CompanyShort

varchar

50

公司简称

CompanyAddress

varchar

50

公司地址

Postalcode

varchar

50

邮政编码

Tel

varchar

50

电话

Fax

varchar

50

传真

Linkman

varchar

50

联系人

Email

varchar

50

邮箱

Bank

varchar

50

开户银行

BandAccounts

varchar

50

银行账户

Username

varchar

50

账户名字

AddTime

varchar

50

开户日期

表5-5 车辆信息表

字段名

数据类型

长度

说明

id

varchar

30

司机Id(主键)

Cph

varchar

50

车牌号

Fzr

varchar

50

发车人

Grsj

varchar

50

司机

Cllx

varchar

50

车辆

Bxqk

varchar

50

Zt

int

30

对出库货物的管理和详细的描述。如表5-6所示。

表5-6 出库货物信息表

字段名

数据类型

长度

说明

id

int

30

管理员(主键)

Ckmc

varchar

50

出库货物名称

Cksj

varchar

50

出库时间

Cksl

varchar

50

出库数量

Fwhd

varchar

50

发往何地

Clxx

varchar

50

车辆信息

total

varchar

50

统计

描述所运送货物的信息,所运送货物的库存信息,运送的地点和路径。如表5-7所示。

表5-7 货物详细信息表

字段名

数据类型

长度

说明

id

int

30

管理员(主键)

CommodityName

varchar

100

货物名称

ShortName

varchar

50

简称

ProducePlace

varchar

50

所在仓库

Unit

varchar

100

单元

Specs

varchar

20

剩余

PassNumber

varchar

50

运送编号

PassList

varchar

50

运送路径

Remark

varchar

200

标记

Username

varchar

50

用户名字

AddTime

varchar

50

添加日期

total

int

总计

E-R图也称实体-联系图,提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界概念结构模型的有效方法。用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。

它反映了在进行数据库设计时表示各种图表的关系图.本系统采用了数据库中货物编号,客户编号相对应的关系实现货物和客户以1:1的关系进行设计的。如图5-3所示。

 图5-3 ER关系图

数据库的连接字符串写在web.config:

<add name="db_yeywzConnectionStringconnectionString="Data Source=(local);Initial Catalog=db_wlclgl;User ID=sa;Password=saproviderName="System.Data.SqlClient"/>

</connectionStrings>

<appSettings>

<add key="strconvalue="server=(local);database=db_wlclgl;uid=sa;pwd=sa;">

</add>

</appSettings>

<system.web>

    1. 系统模块实现

本物流管理系统分为前台后台。前台主要供客户浏览信息、留言、出库入库。后台部分根据系统功能分析,主要实现四个主要模块(登记调动管理、运输配送管理、客户资料管理、出库入库验收)。每个模块还包括一些小的模块。

库存货物管理盘点。每个仓库的的库存信息,可以通过货物名和仓库查询盘点。如图5-4所示。

图5-4 库存货物管理

    1. 货物入库管理

货物入库,首先输入入库单,内容包括货物名称,入库数量,仓库信息,入库时间等,如图5-5所示。

图5-5 货物入库管理

货物入库查询,可以通过仓库名称、经手人、货物名称和起止日期进行查询,如图5-6所示。

图5-6 货物查询管理页面

入库统计功能可以方便统计入库信息,统计信息功能可以通过货物名称或者起止日期进行统计,统计信息显示货物名称和货物数量。如图5-7所示。

图5-7 入库统计页面

    1. 货物出库管理

货物出库管理同入库管理,分为出库单录入、出库查询和出库统计三

个部分。如图5-8,图5-9和图5-10所示。

图5-8 出库管理页面

图5-9 出库管理页面

图5-10 出库管理页面

    1. 车辆管理
      1. 车辆信息管理

车辆货物运输配送管理:管理员对即将发送的货物进行选定,选定后货物就可以开始物流运输。并且填入配送信息,生成相应的配送单据。如图5-11所示。

图5-11  车辆档案添加页面

车辆档案添加页面用来进行车辆信息的初始化,添加车辆信息,车辆信息包括车辆号码,车辆品牌,购入时间,车辆类型和保险情况。添加车辆之后可点击车辆信息管理,可以管理车辆信息。如图5-12所示。

图5-12 车辆信息管理页面

      1. 出车回车信息管理

出车回车信息管理功能:货物出库之后添加出车信息,出车信息内容为货物运输的线路、目的地运费等信息,作为货物出车的凭据。如图5-13

和图5-14所示。

图5-13出车回车信息查询页

图5-14出车回车信息查询页面

      1. 货物跟踪管理

货物信息跟踪可以对货物进行确认,运输情况进行实时跟踪,并填写单据。把信息返回到系统中。如图5-15和图5-16所示。

图5-15货物跟踪页面

图5-16 货物跟踪页面

    1. 驾驶员管理

添加和管理车辆驾驶员信息。如图5-17和5-18所示。

图5-17 驾驶员信息管理页面

图5-18 驾驶员信息管理页面

    1. 系统管理

系统管理包括数据库备份、数据库恢复、添加用户、修改密码、管理员权限设置。如图5-19和图5-20所示。

图5-19 数据库备份页面

图5-20 数据库恢复页面

添加用户包括添加管理员和操作员两种用户,用户具有不同的权限,添加修改和删除用户页面如图5-21,图5-22和图5-23所示。

图5-21 添加用户页面

图5-22 修改密码页面

图5-23 用户管理页面

    1. 本章小结

功能模块是指数据说明、可执行语句等程序元素的集合,它是指单独命名的可通过名字来访问的过程、函数、子程序或宏调用。功能模块化是将程序划分成若干个功能模块,每个功能模块完成了一个子功能,再把这些功能模块总起来组成一个整体。以满足所要求的整个系统的功能。本章介绍了系统的总体架构,数据库的实现,系统模块的实现,把系统的功能做了详细的介绍,为客户的使用提供了方便。

  1. 系统测试
    1. 测试

软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。软件测试是软件开发周期中一个极其重要的阶段,测试的目的是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证该软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。本系统主要采用单元测试、功能测试和系统测试。

      1. 测试的目的和方法

测试的目的如下。

1.测试是为了发现程序中的错误而执行程序的过程。

2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。

3.成功的测试是发现了至今为止尚未发现的错误的测试。

4.测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。

5.这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。

6.没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。

7.另外,根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。

测试的方法:

1.按是否查看程序内部结构分为如下。

黑盒测试(black-box testing):只关心输入和输出的结果;

白盒测试(white-box testing):去研究里面的源代码和程序结构。

2.按是否运行程序分为如下。

静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。静态测试包括:对于代码测试,主要是测试代码是否符合相应的标准和规范。对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。

动态测试(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程

3.按阶段划分如下。

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。

集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。

系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。系统测试的主要依据是《系统需求规格说明书》文档。

验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。验收测试又分为a测试和beta测试,其中a测试指的是由用户、 测试人员、开发人员等共同参与的内部测试,而beta测试指的是内测后的公测,即完全交给最终用户测试。

4.黑盒测试分为功能测试和性能测试[12]如下。

功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。包括逻辑功能测试(logic function testing)界面测试(UI testing)UI=User Interface易用性测试(usability testing):是指从软件使用的合理性和方便性等角度对软件系统进行检查,来发现软件中不方便用户使用的地方。兼容性测试(compatibility testing):包括硬件兼容性测试和软件兼容性测试

性能测试(performance testing)软件的性能主要有时间性能和空间性能两种时间性能:主要指软件的一个具体事务的响应时间(respond time)。空间性能:主要指软件运行时所消耗的系统资源。软件性能测试分为:一般性能测试:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。稳定性测试也叫可靠性测试(reliability testing):是指连续运行被测系统检查系统运行时的稳定程度。负载测试(load testing):是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。压力测试(stress testing):是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。(Validate the system or software can allowed the biggest stress.)

5.其他测试类型如下。

回归测试(regression testing)是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。(When a new build or release is deployed, repeat all the test cases which has executed in the last build or release.)

冒烟测试(smoke testing),是指在对一个新版本进行大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。(validate the major function is deployed or not in software of system when a new build or release is implement.)

随机测试(random testing),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。(means or all the test data is random, to validate the some edge bugs.)

      1. 测试的特征

软件测试实质上就是发现软件中存在的bug,并不断修复bug的过程。软件测试的关键特征是动态性即测试是在给出输入值的基础上进行的动态过程[11]。

由于软件错误的复杂性,在软件工程范围内要综合应用测试技术,根据定义域中的取值,通过执行和观察,将预期的行为和实际的行为做比较,以确认测试地结果,因此软件测试是一个综合测试地过程。

软件测试时需要以下三类信息如下。

1.软件配置:指需求说明书、设计说明书和源程序等。

2.测试配置:指测试方案、测试用例和测试驱动程序等。

3.测试工具:指计算机辅助测试的有关工具。

通常情况下,综合测试分为4个步骤,即单元测试、集成测试、系统测试和验收测试。另外,在所有的测试过程中,始终贯穿着回归测试。

软件经过测试以后,要根据预期的结果对测试地结果进行评估,对出现的错误要报告,并修改相应文档。修改后的程序往往要经过再次测试,直到满意为止。在分析结果的同时,要对软件的可靠性进行评价,如果总是出现需要修改设计的严重错误,软件的质量和可靠性就值得怀疑,同时也需要进一步测试;如果软件功能能够正确完成,出现的错误易修改,可以断定软件的质量和可靠性可以接受或者所做的测试还不足以发现严重错误;如果测试发现不了错误,要考虑错误仍然潜伏在软件中,应考虑重新制定测试方案,设计测试用例。

      1. 测试原则

1.测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。

2.程序员应该避免检查自己的程序,软件测试应该由第三方来负责。

3.设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,如网络异常中断、电源断电等。

4.应该充分注意测试中的群集现象。

5.对错误结果要进行一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格地确认,是否真的存在这个问题以及严重程度等。

6.制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成也有一个高水平的测试。

7.妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

      1. 测试目标

1.发现一些可以通过测试避免的开发风险。

2.实施测试来降低所发现的风险。

3.确定测试何时可以结束。

4.在开发项目的过程中将测试看作是一个标准项目。

      1. 测试的意义

软件测试的意义在于,保证发布出去的产品达到了一定的质量标准。软件测试工程师的工作就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别.  它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。

    1. 单元测试

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

测试内容如下。

登陆模块测试。输入登录账号:admin,密码:admin,预期输出结果为成功登录,实际输出结果与预期输出结果一致。如图6-1和图6-2所示。

图6-1登陆模块测试

图6-2 登陆模块测试

入库录入测试:输入入库数量为:4,经手人:杨云鹏,预期输出结果为成功登录,实际输出结果与预期输出结果一致。如图6-3和图6-4所示。

图6-3入库录入测试

图6-4 入库录入测试

    1. 集成测试

集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。

    1. 系统测试

系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。

    1. 验收测试

验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。验收测试又分为a测试和beta测试,其中a测试指的是由用户、 测试人员、开发人员等共同参与的内部测试,而beta测试指的是内测后的公测,即完全交给最终用户测试。

    1. 本章小结

测试保证发布出去的产品达到了一定的质量标准。软件测试工程师的工作就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。本章主要描述了在系统测试阶段的主要任务、测试的重要意义和测试的步骤。

千万不要删除行尾的分节符,此行不会被打印。“结论”以前的所有正文内容都要编写在此行之前。

结论

通过运用以前所学的专业知识,以及对货物物流运输过程的了解,分析当前企业对物流信息系统的需求而设计了此系统。实现了货物登记调动、货物运输、出库入库验收、客户资料管理的功能。解决了以前物流人工管理的货物调配不合理,单据信息不能及时返回,货物状态不能跟踪,客户资料不准确的问题。实现了物流管理的信息化,加快了货物在市场上的流通。

系统在设计过程中不可避免地遇到了各种各样的问题,通过测试发现系统还存在如下的问题如下。

1.系统界面还不够友好。

2.信息的管理不够全面。

3.一些数据字段定义不够准确。

4.物流管理信息系统的一些功能,如数据备份和数据恢复等还没实现。

这些问题都需要在以后的工作学习中不断完善。

经过将近一年的设计和开发,系统基本开发完毕。本系统能够完成添加、修改、删除查询以及各类相关系统的时间,并提供系统维护功能,同时提供了具备了一定的用户管理功能。由于本人知识和经验的局限性,该系统还有许多不尽如人意的地方,比如联机的帮助、人性化设计方面还比较欠缺,这些都有待在以后的过程中逐步改善。

通过这次毕业设计,我深刻体会到要做好一个完整的事情,需要有系统的思维方式和方法,对待一个新的问题,要耐心、要善于运用已有的资源来充实自己。同时我也深刻的认识到,在对待一个新事物时,一定要从整体考虑,完成一步之后再作下一步,这样对于系统而言才能更加有效。同时,使我对C#和SQL SERVER有了更加深刻的认识,积累了使用软件工程的思想来开发软件的经验,同时最重要的是摸索出了一套考虑问题和解决问题的方法,使我在工作岗位上受益匪浅。

致谢

经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。

在这里首先要感谢在这次设计中给我们提供设计指导的老师赵石磊。他虽然对我们比较严格,但就是他的治学严谨和科学研究的精神是我永远学习的榜样,并将积极影响我今后的学习和工作。

其次要感谢和刘锦同学,他在本次设计中给予了我很大的帮助,为我提供了很多有价值的资料,在此我深表谢意。以及其他为我提供帮助的同学们。在你们的帮助下,我才能更深刻的了解此次设计的任务目的,做出今天的成绩。

然后还要感谢大学四年来所有的老师,为我们打下专业知识的基础;同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励。此次毕业设计才会顺利完成。

通过本次设计,我从不认识管理信息系统到现在会应用其来设计出一个物流管理系统,使我的自学和动手能力方面有所提高,也达到了选择此课题的目的。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

参考文献

  1. Ronald.H.Barrow. The enterprise physical distribution management-supplies the chain the plan, organizes and controls. 机械工业出版社, 2002
  2. 丁俊发. 中国物流. 中国物资出版社, 2002
  3. 孙涌. 现代软件工程. 北京希望电子出版社, 2003
  4. Bruce Eckel. C#编程思想. 机械工业出版社, 2003
  5. 张杰,赵春江. ASP.NET2.0程序设计案例教程. 化学工业出版社, 2009
  6. 费书宁. C#标准教程. 清华大学出版社, 2005
  7. 内格尔.埃夫琴. C#高级编程. 清华大学出版社, 2010
  8. 张海藩. 软件工程导论. 清华大学出版社, 2005
  9. 郑人杰,殷人昆. 管理信息系统. 清华大学出版社, 2005
  10. 明海波. ASP.NET项目教程. 清华大学出版社, 2005
  11. Elfriede Dustin. Effective Software Testing. 清华大学出版社, 2010
  12. 梅尔斯. 测试的艺术. 机械工业出版社, 2009
  13. 艾维耶. ASP.NET 4高级编程:涵盖C#和VB.NET. 清华大学出版社, 2010
  14. 李红. 数据库原理与应用. 高等教育出版社, 2003
  15. 陈明. 软件工程导论. 机械工业出版社, 2010
  16. Krug. Don't Make Me Think. 机械工业出版社, 2006

附录

英文原文

CHAPTER8 Error Handling, Logging, and Tracing

No software can run free from error, and ASP.NET applications are no exception. Sooner or later your code will be interrupted by a programming mistake, invalid data, unexpected circumstances, or even hardware failure. Novice programmers spend sleepless nights worrying about errors. Professional developers recognize that bugs are an inherent part of software applications and codedefensively,testing assumptions,logging problems,and writing errorhandling code to deal with the unexpected.

In this chapter, you’ll learn the error-handling and debugging practices that you can use to defend your ASP.NET applications against common errors, track user problems, and solve mysterious issues. You’ll learn how to use structured exception handling, how to use logs to keep a record of unrecoverable errors, and how to set up web pages with custom error messages for common HTTP errors. You’ll also learn how to use page tracing to see diagnostic information about ASP.NET pages.

Common Errors

Errors can occur in a variety of situations. Some of the most common causes of errors include attempts to divide by zero (usually caused by invalid input or missing information) and attempts to connect to a limited resource such as a file or a database (which can fail if the file doesn’t exist, the database connection times out, or the code has insufficient security credentials).

One infamous type of error is the null reference exception, which usually occurs when a program attempts to use an uninitialized object. As a .NET programmer, you’ll quickly learn to recognize and resolve this common but annoying mistake. The following code example shows the problem in action, with two SQLConnection objects that represent database connections:

// Define a variable named conOne and create the object.

private SqlConnection conOne = new SqlConnection();

// Define a variable named conTwo, but don't create the object.

private SqlConnection conTwo;

public void cmdDoSomething_Click(object sender, EventArgs e)

{

// This works, because the object has been created

// with the new keyword.

conOne.ConnectionString = "...";

...

// The following statement will fail and generate a

// null reference exception.

// You cannot modify a property (or use a method) of an

// object that doesn't exist!

conTwo.ConnectionString = "...";

...} 

When an error occurs in your code, .NET checks to see whether any error handlers appear in the current scope. If the error occurs inside a method, .NET searches for local error handlers and then checks for any active error handlers in the calling code. If no error handlers are found, the page processing is aborted and an error page is displayed in the browser. Depending on whether the request is from the local computer or a remote client, the error page may show a detailed description or a generic message. You’ll explore this topic a little later in the “Error Pages” section of this chapter.

Even if an error is the result of invalid input or the failure of a third-party component, an error page can shatter the professional appearance of any application. The application users end up with a feeling that the application is unstable, insecure, or of poor quality—and they’re at least partially correct.

If an ASP.NET application is carefully designed and constructed, an error page will almost never appear. Errors may still occur because of unforeseen circumstances, but they will be caught in the code and identified. If the error is a critical one that the application cannot solve on its own, it will report a more useful (and user-friendly) page of information that might include a link to a support e-mail or a phone number where the customer can receive additional assistance. You’ll look at those techniques in this chapter.

Exception Handling

Most .NET languages support structured exception handling. Essentially, when an error occurs in your application, the .NET Framework creates an exception object that represents the problem. You can catch this object using an exception handler. If you fail to use an exception handler, your code will be aborted, and the user will see an error page.

Structured exception handling provides several key features:

Exceptions are object-based: Each exception provides a significant amount of diagnostic information wrapped into a neat object, instead of a simple message and an error code.

These exception objects also support an Inner Exception property that allows you to wrap a generic error over the more specific error that caused it. You can even create and throw your own exception objects.

Exceptions are caught based on their type: This allows you to streamline error-handling code without needing to sift through obscure error codes.

Exception handlers use a modern block structure: This makes it easy to activate and deactivate different error handlers for different sections of code and handle their errors individually.

Exception handlers are multilayered: You can easily layer exception handlers on top of other exception handlers, some of which may check only for a specialized set of errors.

Exceptions are a generic part of the .NET Framework: This means they’re completely cross language compatible. Thus, a .NET component written in C# can throw an exception that you can catch in a web page written in VB.

Note Exception handlers are a key programming technique. They allow you to react to problems that occur at runtime due to factors outside your control. However, you obviously shouldn’t use exception handlers to hide the bugs that might crop up in your code! Instead, you need to track down these programmer mistakes at development time and correct them. Visual Studio’s debugging features (which were described in Chapter 4) can help you in this task.

The Exception Class

Every exception class derives from the base class System Exception. The .NET Framework is full of predefined exception classes, such as Null Reference Exception, IO Exception, SQL Exception, and so on. The Exception class includes the essential functionality for identifying any type of error.

When you catch an exception in an ASP.NET page, it won’t be an instance of the generic System.Exception class. Instead, it will be an object that represents a specific type of error. This object will be based on one of the many classes that inherit from System.Exception. These include diverse classes such asDivideByZeroException,ArithmeticException,IOException,SecurityException, and many more. Some of these classes provide additional details about the error in additional properties.

Visual Studio provides a useful tool to browse through the exceptions in the .NET class library. Simply select Debug ä Exceptions from the menu (you’ll need to have a project open in order for this to work). The Exceptions dialog box will appear. Expand the Common Language Runtime Exceptions group, which shows a hierarchical tree of .NET exceptions arranged by namespace.

The Exceptions dialog box allows you to specify what exceptions should be handled by your code when debugging and what exceptions will cause Visual Studio to enter break mode immediately. That means you don’t need to disable your error-handling code to troubleshoot a problem. For example, you could choose to allow your program to handle a common FileNotFoundException (which could be caused by an invalid user selection) but instruct Visual Studio to pause execution if an unexpected DivideByZero exception occurs.

To set this up, add a check mark in the Thrown column next to the entry for the System.DivideByZero exception. This way, you’ll be alerted as soon as the problem occurs. If you don’t add a check mark to the Thrown column, your code will continue, run any exception handlers it has defined, and try to deal with the problem. You’ll be notified only if an error occurs and no suitable exception handler is available.

中文译文

异常处理和日志追踪

在应用程序运行过程中,难免会遇到异常、错误。在ASP.NET开发过程中经常会被一些用户投拆软件出现故障,或者是一些乱七八糟的错误提示。用户并不都是专家,看到这些莫名其妙的错误往往会认为是应用程序不稳定因素所致,此时你会振振有词地告知用户:软件出现故障是难免的,微软够强大吧,Windows系统还不是会蓝屏出错。这样的解释并不是没有道理,任何软件都不可能十全十美,问题在于开发人员如何处理错误,如何让应用程序能够无缝地从错误中恢复。

本章将讨论如何处理ASP.NET应用程序中的异常,如何追踪错误以及解决一些故障问题,讨论结构化异常处理,日志记录以及当出现错误时,如何将用户页面重定向到一个用户友好的提示页面,本章也将介绍如何使用页面追踪和查看ASP.NET页面的诊断信息。

常见的错误

错误的产生很多时候是开发人员始料未及的,有的错误可能运行了很久才突然被触发。然而也有一些错误是由于开发人员的疏漏所造成的,一个简单的例子是被0除。假如在一个具有很多复杂公式的页面上,要求用户输入有效的数据执行计算,由于没有很好的验证机制,用户如果一不小心输入了一个0作为被除数,ASP.NET将跳转到一个错误页面。

// Define a variable named conOne and create the object.

private SqlConnection conOne = new SqlConnection();

// Define a variable named conTwo, but don't create the object.

private SqlConnection conTwo;

public void cmdDoSomething_Click(object sender, EventArgs e)

{

// This works, because the object has been created

// with the new keyword.

conOne.ConnectionString = "...";

...

// The following statement will fail and generate a

// null reference exception.

// You cannot modify a property (or use a method) of an

// object that doesn't exist!

conTwo.ConnectionString = "...";

...

}

当引发错误时,.NET将检查当前页面范围内是否有任何错误处理器。假如错误产生于一个方法体内,.NET将检查方法体内是否有一个错误处理器来处理错误,如果没有任何的错误处理机制,页面处理将被中断,一个错误页面将被显示出来。这个显示的错误页面依赖于客户端的位置,如果是本地则显示详细的错误信息,否则只显示一个通用的消息。由于.NET会先检测本地的错误处理器,因此开发人员可以设计良好的错误处理方式,比如显示一个友好的信息,或者是不显示错误信息而将这些错误记录到事件日志中,本节将介绍如何使用异常处理机制来处理ASP.NET应用程序中的错误。

异常处理

大多数.NET语言都支持结构化异常处理,当一个错误引发时,.NET框架其实创建了一个异常对象用于呈现问题。开发人员可以使用异常处理器来捕捉这个异常对象。假如不使用异常处理器的话,用户代码将会被中止,ASP.NET将显示一个让用户迷惑的错误处理页面。

为了演示如何使用结构化的异常处理,本小节创建一个异常处理程序命名为CommError。在Default.aspx页面上添加一个Button控件,为该Button添加一个单击事件,代码如下所示。

由于这段代码中没有添加任何的异常处理器,因此ASP.NET将中断页面的显示,并显示一个的页面。如果使用结构化的异常处理方式,代码将变化。

在这段代码中,使用try/catch语句定义了一个异常处理器,该异常处理器捕捉一个被0除的异常DivideByZeroException,当捕捉到这个异常后将会在一个Label控件中显示出错的信息。

在这个示例中,当产生异常时,ASP.NET将不再被重定向到一个单独的页面,而是在Label控件中显示出错的信息。示例使用了try/catch语法来捕捉异常,这是.NET中标准的异常处理方法,在try块中放置所有可能出现异常的代码,在catch块中捕捉可能出现的异常,并在其代码块中添加对该异常的处理程序。

Exception类

上一节的示例中,当产生了被零除的错误后,.NET会创建一个名为DivideByZeroException的异常对象,catch块中将捕获这个异常对象,并执行处理异常的代码块。DivideByZeroException是一个派生自Exception的对象。Exception对象中包含了很多有用的关于异常的信息,如上面示例中的Message属性用于获取异常的描述性信息,表中列出了Exception类中的一些成员描述。

当你在一个ASP.NET页面中捕获到一个异常时,它不会是一个通用System.Exception类的实例。相反,这将是一个对象,代表特定类型的错误。这个对象将依据之一,许多类,继承System.Exception类。这些类包括不同的类别,如DivideByZeroException, ArithmeticException, IOException, SecurityException,和更多的类。其中有些类提供额外细节的错误的额外属性。

Visual Studio提供了一个非常有用的工具可以在.NET类库中浏览异常。 只要选择调试异常从菜单(您需要有一个开放式的项目,为了使它工作)。异常对话框将会出现。扩大双方的共同语言运行异常,这显示了等级树。.NET的异常的名称。

可以看到异常对话框列出了很多异常类型,Common Language Runtime Exceptions栏则是.NET中的异常层次结构。异常对话框窗口允许开发人员指定当调试时,哪个异常应该被程序代码处理,哪个异常应该由VS2008立即切换到中断模式。比如如果有一个FileNotFoundException类型的异常,可以在异常窗口中指定由程序代码来处理,调试时VS将不会立即中断程序的执行,而交由异常代码进行处理。当在引发栏中选择某个异常时,一旦出现异常,VS2008则马上进入中断模式,而如果不选择这个选项,则程序代码继续执行,将在Label控件中显示异常的信息。

进行这项设定,新增一个选中标记扔在旁边栏的条目System.DivideByZero例外。通过这种方式,您可以在出现问题时尽快被警告。如果您没有新增一个选中标记的投掷栏,您的代码将继续进行,运行任何异常处理它的定义,并尝试解决这一问题。我们将会通知您只要发生错误和没有合适的异常处理程序可用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/934819
推荐阅读
相关标签
  

闽ICP备14008679号