




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1PAGE1本科毕业论文(科研训练、毕业设计)题目:外贸企业业务管理系统的设计和实现——GF2023系统的开发姓名:肖凯学院:软件学院系:专业:软件工程年级:2023级复合型学号:01062044指导教师(校内):苏淑文职称:助教指导教师(校外):职称:2023年5月30日外贸企业业务管理系统的设计和实现——GF2023系统的开发[摘要]随着信息技术的推广应用与信息资源的开发利用,信息管理也益发普及,企业的信息化管理一直是个热门的话题,虽然有一大部分企业已经实现信息化管理,但是仍然有相当一部分的中小型企业在这方面比拟落后,为了提高公司的运营效率,它们迫切希望能改变现状。GF2023系统就是根据恒好外贸公司,业务,数据管理信息化建设的要求而开发的。系统采用B/S体系结构,上层是基于Web浏览器的客户端;中间层是应用服务器,用于处理业务逻辑,与数据库服务器交互数据,使用Asp技术,MVC设计模式进行开发;底层是数据库服务器,用于建立对数据库的数据请求,使用SQLServer2023数据库。系统基于外贸的业务流程,为公司建立起统一的数据管理平台,对公司的产品,业务,财务进行电子化,网络化管理。本系统有很高的稳定性、较强的安全性以及对于用户使用的一定的方便性,适用于各类中小型外贸公司的使用。关键词存储过程触发器设计模式[abstract]WiththepopularizationofInformationTechnologyandtheexploitationofInformationResources,InformationAdministrationisalsodevelopinginaremarkablespeed.InformationAdministrationinenterprisesisalwaysahotissueintheITfield.AlthoughInformationAdministrationisalreadyrealizedinmanyenterprisesnowadays,alargenumberofSmalltoMediumEnterprises(SME)arestillbackwardinit.Inordertoimprovetheoperationefficiency,theseenterprisesareeagertochangethepresentsituation.WithGoodForeverForeignTradeCompany'srequirementofConstructingInformationAdministrationforit'sserviceanddata,GF2023systemcomesintobeing.ThesystemusesB/Ssystemstructure,theupperformationisbasedontheWebbrowsercustomerend;Theintermediatelevelappliestheserver,usestoprocesstheservicelogic,withthedatabaseserverinteractivedata,usesAspandModel-View-Controllerdesignpatternandsoon;Thefirstflooristhedatabaseserver,usestoestablishtodatarequestedwiththedatabase,usestheSQLServer2023database.Thesystembaseontheserviceprocessofthecompanyestablishtheuniformdatamanagementsystemforcompany,advancetheproductmanagement,servicemanagement,andfinancemanagementtonetworkedandincorporatedlevel.Thissystemhastheveryhighstability,astrongersecureaswellasregardingtheusercertainconvenience,issuitabletoeachkindofSmalltoMediumForeignTradeCompanyuses.KeywordstoredProcedureTriggerdesignpattern目录TOC\o"1-4"\h\z\u第一章引言PAGEREFToc105518193\h11.1项目背景PAGEREFToc105518194\h1论文的组织结构PAGEREFToc105518195\h2第二章GF2023需求分析与总体设计PAGEREFToc105518196\h3业务流程PAGEREFToc105518197\h3系统目标PAGEREFToc105518198\h6功能模块分析PAGEREFToc105518199\h6首页PAGEREFToc105518200\h6系统管理PAGEREFToc105518201\h7产品管理PAGEREFToc105518202\h7项目管理PAGEREFToc105518203\h7样品管理PAGEREFToc105518204\h7订单管理PAGEREFToc105518205\h8出货管理PAGEREFToc105518206\h8收汇管理PAGEREFToc105518207\h8软硬件平台PAGEREFToc105518208\h8系统开发的硬件环境PAGEREFToc105518209\h8系统开发的软件环境PAGEREFToc105518210\h92.5基本技术描述PAGEREFToc105518211\h102.5.1Asp语言及其优点PAGEREFToc105518212\h102.5.2SQL语言PAGEREFToc105518213\h11存储过程PAGEREFToc105518214\h12触发器PAGEREFToc105518215\h13第三章系统基础函数库的开发PAGEREFToc105518216\h153.1MVC设计模式介绍PAGEREFToc105518217\h15基于MVC模式的库函数的开发PAGEREFToc105518218\h16第四章项目的设计与实现PAGEREFToc105518219\h184.1系统界面PAGEREFToc105518220\h184.2产品管理PAGEREFToc105518221\h20本模块的数据表设计PAGEREFToc105518222\h214.2.2模块各子功能PAGEREFToc105518223\h23产品管理PAGEREFToc105518224\h23配件管理PAGEREFToc105518225\h294.3样品管理PAGEREFToc105518226\h344.3.1本模块的数据表设计PAGEREFToc105518227\h344.3.2模块各子功能PAGEREFToc105518228\h37样品管理PAGEREFToc105518229\h37寄件管理PAGEREFToc105518230\h37总结PAGEREFToc105518231\h39致谢PAGEREFToc105518232\h3911第一章引言项目背景信息技术的日益普及,不但改变了人们的生活、学习和工作方式,也改变了人们的思维方式,在整个社会信息化进程越来越快的今天,随着信息技术的推广应用与信息资源的开发利用,信息管理也益发普及。管理信息化正在往广度和深度发展,并进入了管理活动与业务活动综合信息化的新阶段。在企业中,基于信息管理所开发出来的管理信息系统是是一个一体化的系统,也就是说管理信息系统进行企业的信息管理是从总体出发,全面考虑,保证各种职能部门共享数据,减少数据的冗余度,保证数据的兼容性和一致性,只有信息的集中统一,信息才能成为企业的资源,才能极大提高企业的运作效率,才能利用信息控制企业的行为,帮助企业实现其规划目标。随着我国进一步加快对外开放的步伐和放宽我国企业对外贸易的经营门槛,我国的所有企业将不可避免地把参与国际贸易作为增强企业竞争能力的重要部分,中国将会有无数的企业和个人关注外贸,开始进入外贸领域,开展多种形式的对外贸易活动,将会掀起一股不可抗拒的中国外贸旋风.无需多说,大家都会关注外贸,大批的外贸公司如雨后春笋般的冒出,其中的许多公司由于在信息化管理上做的不够,许多数据信息的共享只是停留在文件级甚至是手工记录状态上,降低了公司的运作效率,制约了公司的发展,出于公司的利益出发,迫切需要实现公司业务的信息化管理。GF2023就是为恒好外贸公司开发的业务管理系统,根据恒好公司工作中主要使用电子邮件、Word、Excel,数据多以文件形式存在,是分立、不完整和冗余的,查询慢,效率低还容易引发错误等现状,系统基于外贸的业务流程,建立起统一的数据管理平台,涵盖了外贸企业运营的各关键环节、工作流程和控制点。充分体现了工作流程管理(WorkProcessManagement),整体资源管理(TotalResourcesManagement)和企业质量管理(TotalQualityManagement)的经营模式,科学的将各部门、人员功能在工作流程中有机的结合起来,最终达到提高外贸企业的核心竞争力和效益的目的。论文的组织结构第1章引言,详细介绍GF2023系统的开发背景,并指出了本系统的开发意义。第2章GF2023需求分析与总体设计,详细介绍了外贸的业务流程,系统的开发目标,对系统各个功能模块进行简要的说明,对系统的开发的软硬件平台进行详细的介绍,重点说明了为何使用B/S体系结构,最后介绍了开发本系统的相关技术,主要从Asp语言和数据库编程两个方面进行说明。第3章系统基础函数库的开发,本系统在开发过程采用了MVC设计模式,此处详细介绍了MVC设计模式的概念,特点,同时介绍了一些比拟重要的本系统的基础函数库中的函数。第4章项目的设计的和实现,由于本系统工作量比拟大,工作也比拟繁琐,此处只介绍了本人所负责的模块,产品管理和样品管理模块的设计和实现。第二章GF2023需求分析与总体设计业务流程外贸的基本业务流程如图2.1所示:客户询盘客户询盘报价获得订单下生产订单业务审批下达生产通知验货制备基本文件租船订仓安排拖柜,委托报关获得运输文件交单图 外贸基本业务流程图详细说明:1.客户询盘:一般在客户下订单之前,都会有相关的Order
Inquiry给业务部,做一些细节上的了解。
2.报价:业务部及时回复客人查询,确定货物品名,型号,生产厂家,数量,交货期,付款方式,包装规格及柜型等,Performa
Invoice
给客户做正式报价。3.得到订单:经过洽谈,收到客户正式的订单purchase
Order。4.业务审批:业务部收到订单后,首先做出业务审核表。按"出口合同审核表"的项目如实填写,尽可能将各种预计费用都列明。合同审批需附上客人订单件,与工厂的收购合同。审核表要由业务员签名,部门经理审批,再交管理部人员审核后才能执行。如金额较大的,或有预付款和佣金等条款的,要经公司总经理审批才行。合同审批之后,制成销售订单,交给部门进程员跟进。5.下生产订单:得到客人的订单确认后,给工厂下订单,安排生产方案。
6.下达生产通知:业务部在确定交货期后,满足以下情况可下达生产通知,
通知工厂按时生产:
6.1:如果是L/C付款的客户,通常是在交货期前1个月确认L/C已经收到,收到L/C后应业务员和单证员分别审查信用证,检查是否存在错误,交货期能否保障,及其他可能的问题,如有问题应立即请客人改证。
6.2:如果是T/T付款的客户,要确认定金已经到账。
6.3:如果是放帐客户,或通过银行D/A等方式收汇等,需经理确认。
7.
验货
在交货期前一周,要通知公司验货员验货。
7.2如果客人要自己或指定验货人员来验货的,要在交货期一周前,约客户查货并将查货日期告知方案部。
如果客人指定由第三方验货公司或公正行等验货的,要在交货期两周前与验货公司联系,预约验货时间,确保在交货期前安排好时间。确定后将验货时间通知工厂。
8.制备基本文件。工厂提供的装箱资料,制作出口合同,出口商业发票,装箱单等文(应由业务跟单员制作,交给单证员)。(以下是船务流程)9.租船订仓:
9.1如果跟客人签定的合同是FOB
CHINA条款,通常客人会指定运输代理公司或船公司。应尽早与货代联系,告知发货意向,了解将要安排的出口口岸,船期等情况,Q确认工厂的交货能否早于开船期至少一周以前,以及船期能否达到客人要求的交货期。应在交货期两周之前向货运公司发出书面定仓通知(ING
ORDER),通常在开船一周前可拿到定仓纸。
9.2如果是由卖方支付运费,应尽早向货运公司或船公司咨询船期,运价,开船口岸等。经比拟,选择价格优惠,信誉好,船期适宜的船公司,并告诉业务员通告给客人。如客人不同意时要另选客人认可的船公司。开船前两周书面定仓,程序同上。
9.3如果货物不够一个小柜,需走散货时,向货代公司定散货仓位。拿到入仓纸时,还要了解截关时间,入仓报关要求,等内容。
9.4向运输公司定仓时,一定要书面定仓纸,注明所定船期,柜型及数量,目的港等内容,以避免差错。
10.安排拖柜:
10.1货物做好并验货通过后,委托拖车公司提柜,装柜。拖车公司应选择安全可靠,价格合理的公司签定协议长期合作,以确保安全及准时。要给拖车公司以下资料:定仓确认书/放柜纸,船公司,定仓号,拖柜委托书,注明装柜时间,柜型及数量,装柜地址,报关行,及装船口岸等。如果有验货公司看装柜,要专门声明,不能晚到。并要求回传一份上柜资料,列明柜号、车牌号、司机及联系等
10.2一份装车资料给工厂,列明上柜时间、柜型、订仓号、订单号、车牌号以及司机联系。
10.3要求工厂在货柜离开工厂后尽快一份装货通知给业务部,列明货柜离厂时间、实际装货数量等,并记装箱号码和封条号码作为提单的资料。要求工厂装柜后一定要记住上封条。
11.委托报关:在拖柜同时将报关所需资料交给合作报关行,委托出口报关及做商检通关换单。通常要给报关留出两天时间(船截关前)。委托报关时,应提供一份装柜资料,内容包括所装货物及数量,口岸,船公司,定仓号,柜号,船开截关时间,拖车公司,柜型及数量,本公司的联系人和等。
12.获得运输文件:
12.1
最迟在开船后两天内,要将提单补料内容给船运公司或货运代理。补料要按找L/C或客人的要求来做,并给出正确的货物数量,以及一些特殊要求等,包括要求船公司随同提单出的船证明等。
12.2督促船公司尽快出提单样板及运费帐单。仔细核对样本无误后,向船公司书面确认提单内容。如果提单需客人确认的,要先提单样板给客人,得到确认后再要求船公司出正本。
12.3及时支付运杂费,付款后通知船公司及时取得提单等运输文件。支付运费应做登记。13.交单:
13.1采用L/C收汇的,应在规定的交单时间内,备齐全部单证,并严格审单,确保没有错误,才交银行议付。
13.2采用T/T收汇的,在取得提单后马上提单给客人付款,确认受到余款后再将提单正本及其他文件寄给客人。
13.3如果T/T收汇的,要求收全款才能做柜的,要等收款后再安排拖柜。拿到提单后可立即寄正本提单给客人。
14.业务登记:每单出口业务在完成后要及时做登记,包括电脑登记及书面登记,便于以后查询,统计等。
15.文件存档:所有的文件、L/C和议付文件必须留存一整套以备查用。
16.单证员平时应注意收集运价变动,船期,航线,等信息,为业务员报价提供帮助系统目标GF2023系统的开发目的就是要基于外贸业务流程这个基础,具体结合恒好外贸公司的实际情况,建立起统一的数据管理平台,实现对恒好外贸公司的产品,业务,财务的电子化,网络化管理,用于解决公司各种数据流转不畅通,客户的需求信息不能快速响应,缺乏科学系统的数据分析等突出弊端,突破制约公司发展的瓶颈,使公司的营运目标具有更强的可操作性,最大限度地实现公司资源的合理利用,以期达到公司效率最高化,公司利润最大化。功能模块分析根据公司的业务特点与业务流程,系统划分为:首页、产品管理、项目管理、样品管理、订单管理、出货管理、收汇管理和系统管理共8个模块。系统管理对应系统管理员的工作,产品管理主要对应产品部门的工作,项目管理主要对应与客户交互的过程,而订单模块则包含下单后的所有工作,是跟单员、QC主管、船务、单证员和财务的工作重点。下面分别就各个模块进一步分析功能:对公司的实时信息进行维护管理:包括今日动态,公司通知,通讯录。对业务过程中所使用的参考资料进行维护和管理:包括域名对照,国际区号,世界时间,色值对应,单位换算。系统管理是GF2023的框架基础模块,主要对应的是系统管理员的工作,主要包括用户管理和基础数据的维护,功能分解如下图所示。用户管理包括:用户定义、角色定义、用户角色分配、模块角色定义、登陆注销、密码修改、操作日志。基础数据包括:系统信息定义、国家地区定义、数据维护。系统消息管理包含一个在产品、项目、订单模块中通用的信息沟通功能。产品管理是GF2023的核心基础模块,系统所有的业务都将基于它而建立。它对应的是产品部门的工作,主要包括标准产品的管理、配件管理和配件仓库管理,供应商资料的维护。标准产品的管理主要包括:产品目录的维护、产品类别维护、产品资料维护。配件管理包括:配件类别维护、配件信息维护。配件仓库管理包括:配件出库、生产方案单(配件入库单),采购建议。供应商资料维护:包括产品的供应商和配件的供应商。项目管理是GF2023的基础业务模块,对应的是业务部门的日常工作。它基于产品管理的数据,记录与客户的每一次交互信息,主要包括客户管理、项目跟踪、报价管理。客户管理包括:客户资料维护、客户联系人维护。项目跟踪包括:项目信息维护、项目产品维护、项目阶段更新。报价管理包括:项目产品报价、项目产品箱规。样品管理与项目管理的联系相当密切,样品管理是一个项目的基本组成部分之一,样品管理主要包括样品管理与寄件管理两个部分。样品管理包括:样品信息维护、样品图标信息、样品状态跟踪、出货图片管理。寄件管理包括:寄件信息,寄件明细。订单管理是GF2023中核心业务模块,主要包括订单信息和单证管理。订单信息包括:订单资料维护、订单产品信息、包装资料维护、出货图片管理、标志图案管理。单证管理包括:形式发票、商业发票、催款单、装箱单信息出货管理是GF2023的基础业务模块,对应的是船务部门的日常工作。它主要用于对货代公司以及对整个出货过程的信息管理,包含货代管理与出货管理。货代管理包括:货代信息。出货管理包括:出货信息,出货柜号,装柜信息。收汇管理是GF2023的基础业务模块,对应的是财务部门的日常工作,同时需要业务部门的协作。它主要用于对水单的处理,各项费用及收汇差额的分析,对订单的结汇,包含水单管理与结汇管理。水单管理包括:水单信息,水单认领。出货管理包括:各项费用、额外损失、结汇管理。软硬件平台恒好公司现有一个20台机器的局域网,通过网关ADSL上网。网络拓扑如图所示:图2.2GF2023网络拓扑图机器配置如下:内存:256MB或更高硬盘空间:40GB或更高机器性能较好足够应付本系统的运行需求。现在的贸易软件多采用客户端/服务器(简称C/S)结构,这种结构的优点是它的界面功能强大,数据的安全性较高,同时可以支持工作流。但它的界面比拟复杂,需要经过一段时间的培训熟悉过程,每个客户端均需要安装,造成安装维护的本钱较高,同时由于数据的开放性与模块的可扩展性较差,很难在已开发好的系统上增加修改功能。相比之下,基于浏览器/服务器(简称B/S)结构的软件则在界面的易用性、数据的开放性、系统的可扩展性以及维护的低本钱上优于C/S结构,但它的缺点在于界面无法实现复杂的功能,并且较难支持工作流的实现。基于公司现有的网络结构,结合业务的实际应用情况,我们认为GF2023需要一种易用、稳定、开放可扩展和易维护的方案。而GF2023并没有特别复杂的界面功能需要实现,一些即时计算的功能完全可以在网页上实现,同时它对工作流的需求可以转为另一种由用户主动查看并操作的列表实现,另外数据的开放性可以通过数据库的安全措施来进行约束,以保证系统的安全性。因此系统采用B/S结构,后台基于SQLServer2023数据库,前台采用ASP开发,完成后的系统将可在浏览器上完成绝大部分的数据显示与操作,另外涉及到需要输出的文档均以文本文件、邮件、Word文档或Excel文档的形式,方便易用。除去辅助开发所需的一些工具软件外,系统所需的软件如表所示:软件类型软件名称服务器应用平台Windows2023Professional数据库软件开发工具UltraEdit客户端应用平台Windows2023/98应用软件IE、Office系列表2.1系统所需的软件列表图2.5基本技术描述2.5.1Asp语言及其优点MicrosoftActiveServerPages即我们所称的ASP,其实是一套微软开发的服务器端脚本环境,ASP内含于IIS中,通过ASP我们可以结合HTML网页、ASP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。有了ASP你就不必担忧客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。以下罗列了ActiveServerPages所独具的一些特点:1.使用VBScript、JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。
2.无须compile编译,容易编写,可在服务器端直接执行。
3.使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。
4.与浏览器无关(BrowserIndependence),用户端只要使用可执行HTML码的浏览器,即可浏览ActiveServerPages所设计的网页内容。ActiveServerPages所使用的脚本语言(VBScript、Jscript)均在WEB服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。
5.ActiveServerPages能与任何ActiveXscripting语言相容。除了可使用VBScript或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如REXX、Perl、Tcl等。脚本引擎是处理脚本程序的COM(ComponentObjectModel)物件。
6.ActiveServerPages的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
7.可使用服务器端的脚本来产生客户端的脚本。
8.物件导向(Object-oriented)。
9.ActiveXServerComponents(ActiveX服务器元件)具有无限可扩充性。可以使用VisualBasic、Java、VisualC++、COBOL等编程语言来编写你所需要的ActiveXServerComponent。2.5.2SQL语言SQL全称是“结构化查询语言(StructuredQueryLanguage)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQLserver这些大型的数据库管理系统,还是像VisualFoxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法。这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用适宜,而用户从不需要知道表是否有索引,表有什么类型的索引。SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。SQL为许多任务提供了命令,包括:
●查询数据
●在表中插入、修改和删除记录
●建立、修改和删除数据对象
●控制对数据和数据对象的存取
●保证数据库一致性和完整性
以前的数据库管理系统为上述各类操作提供单独的语言,而SQL将全部任务统一在一种语言中。由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。它类似于DOS系统中的BAT文件。在BAT文件中,可以包含一组经常执行的命令,这组命令通过BAT文件的执行而被执行。同样的道理,可以把要完成某项任务的许多Transact-SQL语句写在一起,组织成存储过程的形式,通过执行该存储过程就可以完成这项任务。存储过程与BAT文件又有差别,即存储过程已经进行了预编译。在频繁访问数据库的系统中,开发者都乐于使用存储过程,这与存储过程的以下优点是分不开的。
⑴存储过程可以与其他应用程序共享应用程序的逻辑,从而确保一致的数据访问和操纵。
⑵存储过程提供了一种安全机制。如果用户被授予执行存储过程权限,那么即使该用户没有访问在执行该存储过程中所参考的表或视图的权限,该用户也可以完全执行该存储过程而不受到影响。因此,可以创建存储过程来完成所有的增加、删除等操作,并且可以通过编程控制上述操作中对信息的访问权限。
⑶存储过程执行速度快,便于提高系统的性能。由于存储过程在第一次执行之后,其执行规划就驻存在过程高速缓冲存储区中,在以后的操作中,只需从过程高速缓冲存储区中调用编译好的二进制形式存储过程来执行。
⑷使用存储过程可以减少网络传输时间。如果有一千条Transact-SQL语句的命令,一条一条地通过网络在客户机和服务器之间传送,那么这种传输所消耗的时间将很长。但是,如果把这一千条Transact-SQL语句的命令写成一条较为复杂的存储过程命令,这时在客户机和服务器之间网络传输所需的时间就会大大减少。触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLServer就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1)强化约束(Enforcerestriction)
触发器能够实现比CHECK语句更为复杂的约束。(2)跟踪变化Auditingchanges
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。(3)级联运行(Cascadedoperation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。(4)存储过程的调用(Storedprocedureinvocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS(数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、UPDATE、DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。第三章系统基础函数库的开发3.1MVC设计模式介绍MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比方一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保(持续化)。比方将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。MVC设计模型如图3.1所示:图3.1MVC设计模型3.2基于MVC模式的库函数的开发开发本系统的过程中我们考虑到如果用Asp语言直接向数据库发送请求并用HTML显示,开发速度会比拟快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性,产品设计弹性力度很小,很难满足用户的变化性需求,于是我们想到了MVC设计模式。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。其次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规层则的改变只需改动MVC的模型。再次,控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。下面介绍本系统基于MVC设计模式,而开发的一些基础库函数的实例。GF2023的视图由函数BillView(ATableName,ID)实现,函数BillView(ATableName,ID)将模型的数据呈现给用户,参数ATableName为某一数据库表名,ID为该表中某条记录的标识,BillView将显示这条记录。GF2023的控制器由函数BillController(ListPage)实现,主要是一些控制按钮及客户端的验证函数。控制按钮包括:编辑、删除、保存、保存继续等,客户端验证函数主要用来验证用户输入的数据是否合法。GF2023的模型由函数BillModel(DBTableName)实现,根据用户执行的不同操作,如增加、删除、修改、查询,将调用不同的子函数。BillModel接收控制器BillControler的请求,根据控制器传递的消息,如ADDSAVE,EDITSAVE,DELETE等调用相应的子函数,BillInsert(ATableName),BillUpdate(ATableName)或BillDelete(ATableName,ID),最后函数BillView将模型的当前数据展现给用户。
由于具体的函数实现比拟繁琐,这里就不列举代码了。第四章项目的设计与实现4.1系统界面界面风格说明版本记录公司信息栏目活动看板页面第一行导航条定位版本记录公司信息栏目活动看板页面第一行导航条定位图4.1GF2023界面风格图本系统的所有子功能的界面风格统一,每个子功能都会提供两种页面,列表页面和明细页面,下面就是这两种页面的实例,由于各子功能的界面都比拟类似,所以在具体介绍各子功能时就不再有界面的演示。列表页面风格列表域查询域列表域查询域图GF2023列表页面图查询域:提供对本子功能信息的查询功能,通常是多字段查询。列表域:用列表显示出查询的结果。明细页面风格相关模块明细域相关模块明细域图4.3GF2023明细页面图明细域:当对本子功能的数据进行编辑时,提供所有的对应数据表的字段域。相关模块:有些子功能还有一些相关模块(如上图中寄件信息子功能还有寄件明细这个相关模块),也是在明细页面中列出。产品管理产品管理是GF2023的核心基础模块,系统所有的业务都将基于它而建立。它对应的是产品部门的工作,主要包括标准产品的管理(指目录上的产品)、配件管理。标准产品的管理主要包括:产品目录的维护、产品类别维护、产品资料维护。配件管理包括:配件类别维护、配件资料维护,配件出库、生产方案单(配件入库单),采购建议、供应商资料维护.产品类别产品类别产品管理产品管理配件管理产品资料产品目录产品箱规配件类别配件资料供应商资料出库单生产方案单采购建议图4.4产品管理功能分解图.1本模块的数据表设计1.ProductType产品类别表2.Product产品资料表3.Packing产品箱规表4.Catalog产品目录表5.ProductCatalog产品目录对应表6.ProductAccessory产品配件对应表7.ProductProvider产品的供应商对应表8.AccessoryType配件类别表9.Accessory配件资料表10.Provider供应商信息表11.Stockout库存出库单表12.StockOutDetail出库详单表13.StockIn生产方案表14.StockInDetail生产方案详表15.StockAdvice采购建议表16.StockAdviceDetail采购建议详表下面列举一些表的详细设计信息:表英文名Catalog表中文名产品目录描述记录产品目录制作的相关信息主键产品目录ID字段英文名中文名类型非空描述ID产品目录IDName目录名称VARCHAR(20)YMakeYear目录年份VARCHAR(4)YMakeTime制作时间DATETIMEQty制作数量INTDscp备注备注产品目录表表英文名ProductCatalog表中文名产品目录对应描述主键ID字段英文名中文名类型非空描述IDIDCtlgID目录IDINTYPrdctID产品IDINTYpage产品所在业码int产品目录对应表表英文名Product表中文名产品资料描述主键产品ID字段英文名中文名类型非空描述ID产品IDPrdctNo产品货号VARCHAR(10)YLikeNo相似货号VARCHAR(10)产品可能是从样品演化而来,这个货号用于记录相近的样品的货号。ClntPrdctNo客人货号VARCHAR(20)PrdctTypeID产品类别IDINTYCNName产品中文名VARCHAR(20)ENName产品英文名VARCHAR(100)CNDscp产品中文描述VARCHAR(500)ENDscp产品英文描述VARCHAR(500)BarType条码类型VARCHAR(10)ENA/UPCBar产品条形码VARCHAR(13)L长尺寸W宽尺寸H高尺寸NW净重重量StatusFlag产品状态TINYINT已停产1-成熟产品2-热卖产品3-新产品Pic1产品图片1VARCHAR(10)无1-有文件名统一为PRDCTPic1产品货号Pic2产品图片2VARCHAR(10)无1-有文件名统一为PRDCTPic2产品货号Pic3产品图片3VARCHAR(10)无1-有文件名统一为PRDCTPic3产品货号Quality产品设计质量备注Dscp备注备注产品资料表.2模块各子功能.2.1产品管理(1)产品类别此子功能是对产品的类别信息进行维护,产品类别与具体的产品是一对多的关系,每个类别有多种不同款号的产品。相关模块:类别产品列出该类别的所有产品的一些相关信息列表页实现ProductTypelst.asp代码如下:<!--#includevirtual="/inc/utils.asp"--><!--#includefile="inc/config.asp"--><% sTitle="产品类别列表" '======变量初始化 LISTNAME ="ProductType" LISTTITLES="类别名称|描述|现有款号" LISTFORMACTION="ProductTypedtl.asp" LISTFIELDS="Name|Dscp|num" LISTORIGINFIELDS="A.Name|A.Dscp|A.num" SEARCHFIELDS="Name|Dscp|num" SEARCHORIGINFIELDS="A.Name|A.Dscp|A.num" sql="SELECTA.ID,A.Name,A.Dscp,A.numFROMVPrdctTypeA" ' CallWriteCheckFieldListHeader()%> <formname="BillForm"enctype="multipart/form-data"method="get"action="ProductTypelst.asp"><% CallRememberCheckField()%> <tablewidth="100%"border="0"><tr><tdwidth="11%">名称:</td><tdwidth="31%"><inputname="OGName"type="text"></td><tdwidth="19%"><inputtype="submit"name="Submit"value="查找"></td><tdwidth="39%"><%callpagination()%></td><tdwidth="39%"> </td></tr></table></form><% CallWriteCheckFieldList()%>Untils.asp就是库函数的所在文件。前面部分是列表所需变量的初始化。WriteCheckFieldListHeader()是基础函数库中的函数,功能是控制列表表头的显示。表单BillForm是对所提供查询域的控制。WriteCheckFieldList()也是基础函数库中的函数,它是列表的主体,它实现了查询功能,列表的显示,还有页尾信息的显示。明细页实现ProductTypedtl.asp代码如下:<!--#includevirtual="/inc/utils.asp"--><!--#includefile="inc/config.asp"--><% sTitle="产品类别明细"DimarrDomainDefines' Label|Domain|Mandatory|MaxLength|IsNumber|MinValue|MaxValuearrDomainDefines=Array("备注|OGDscp|0|250|0|none|none", "名称|OGName|1 |none |0 |none|none")CallWritePageHeader(LeftMenuDefine,"LIST")CallWriteClientCheck("BillForm",arrDomainDefines)%><formmethod="post"action="ProductTypedtl.asp"name="BillForm"enctype="multipart/form-data"><inputname="ProductTypeID"type="hidden"value=""><inputname="MethodCall"type="hidden"value=""><tableclass="DetailMainTable"><trvalign="baseline"><tdnowrapalign="right">名称:</td><td><inputtype="text"name="OGName"value=""size="32"maxlength="20"><spanstyle="color:#FF0000">*</span></td></tr><tr><tdnowrapalign="right"valign="top">备注:</td><tdvalign="baseline"><textareaname="OGDscp"cols="50"rows="5"></textarea></td></tr><trvalign="baseline"><tdnowrapalign="Center"colspan=2> <% CallBillControler("ProductTypelst.asp")%></td></tr></table></form><% CallBillModel("ProductType")======================================================================从表 If(MyRequest("ProductTypeID")<>"")Then CallReturnMark("DetailListhref") WriteSubTablePageControl(Array("类别产品"))RedimFlagFields(1,3) FlagFields(0,0)="StatusFlag" FlagFields(0,1)="Product" FlagFields(0,2)="StatusFlag" LISTNAME="Product" LISTFORMACTION="Productdtl.asp" 'LISTTITLES="产品货号|中文名 |英文名|产品类别 LISTTITLES="产品货号|类别|报价|箱规|状态" LISTFIELDS="PrdctNo|PrdctType|baojia|xg|StatusFlag" LISTORIGINFIELDS="A.PrdctNo|a.PrdctType|A.baojia|a.xg |A.StatusFlag" 'LISTFIELDS="PrdctNo|CNName |ENName|Name 'LISTORIGINFIELDS="B.PrdctNo|B.CNName |B.ENName|A.Name 'sql="SELECTB.ID,B.PrdctNo,B.CNName,B.ENName,A.NameFROMProductBLEFTJOINProductTypeAONA.ID=B.prdcttypeID"sql="SELECTA.ProCatIDASID,A.PrdctNo,a.PrdctType,A.baojia,a.xg,a.StatusFlagFROMVPrdctalla" 'sql=sql&"WHEREA.ID="&Trim(CString(MyRequest("ProductTypeID"))) sql=sql&"WHEREA.PrdctTypeID="&Trim(CString(MyRequest("ProductTypeID"))) CallWriteList(LISTNAME,sql,LISTTITLES,LISTFIELDS,LISTORIGINFIELDS,2,ManagePermission,LISTFORMACTION,"",FlagFields) EndIf CallWritePageFooter()%>其中WritePageHeader(LeftMenuDefine,"LIST")库函数的调用是为了显示页头和左边导航条。WriteClientCheck("BillForm",arrDomainDefines)函数是对需要验证的明细字段,进行验证,参数arrDomainDefines数组中定义了需要验证的明细字段。表单BillForm是对所提供的明细域的控制。BillControler("ProductTypelst.asp")函数,标准的对象控制器的调用,新增记录成功后显示视图。BillModel("ProductType")函数,标准的对象数据模型的调用,所有对数据的新增,编辑,删除都是在此函数中执行。最后从表部分是相关模块类别产品的列表的显示,代码与上面介绍的列表页面的代码几乎相同,此处不再重复介绍。(2)产品资料此子功能是对具体某一货号产品的资料信息进行维护,每个产品都对应着product表中的一条记录,每个产品都由唯一的产品货号进行标识。相关模块:箱规对产品的箱规信息进行维护管理,一种产品可以有多种箱规。相关模块:供应商对产品供应商的信息进行维护和管理,产品和供应商之间是多对多的关系。列表页实现:Productlst.asp明细页实现:由于各子功能的代码风格统一,都是基于同一套库函数,提供的功能也比拟相似,代码的实现上都类似于产品类别模块,所以就不再列举说明了。(3)产品目录公司每年将出多本目录对它的新旧产品做推销,为了更好地建立所出目录与产品之间的关联,需要添加“产品目录”管理功能。一本目录中可以有多类产品,而同一种产品可以出现在多本目录书中。相关模块:目录产品对同一目录下的产品信息进行维护管理列表页实现:明细页实现:Catalogdtl.asp.2.2配件管理(1)配件类别对配件的类别信息进行维护和管理,列出配件类别的相关信息,类别对配件是一对多的关系,每个类别下有多种不同代号的配件。列表页实现:AccessoryTypelst.asp明细页实现:(2)配件资料对配件的资料信息进行管理和维护,对应的数据表是Accessory。每个配件都对应着Accessory表中的一条记录,每个配件都有唯一的配件代号(code)进行标识,配件和供应商,配件和产品之间都是多对多的关系。相关模块:供应商对配件的供应商信息进行维护和管理,两者是多对多关系。相关模块:所用货号通过产品与配件的对应关系(多对多),列出所有用到这一配件的产品的信息列表页实现:Accessorylst.asp明细页实现:Accessorydtl.asp(3)出库单对配件仓库的出库单进行管理与维护,每个出库单都有一个单号唯一标识,一个出库单对应着多个出库明细(一对多的关系),当生成一个出库单时,会对配件的库存量产生影响(库存减少),当配件的当前库存小于预警库存时,就需生成采购建议,采购配件。相关模块:出库明细对一个出库单的比拟详细的信息进行说明,列出同一个出库单下出库明细的详细信息。列表页实现:明细页实现:StockOutdtl.asp其中生成出库单时,减少当前库存,并判断是否生成采购建议由触发器实现代码如下:CREATETRIGGERStockOutINSERTONdbo.StockOutDetailFORINSERTAS DECLARE@ROWSINT, --行数 @PrdctIDINT, --配件产品的ID @QtyINT, --数量 @CurQtyINT, --当前库存 @WarnQtyINT, --预警库存 @ForeQtyINT, --预测库存 @IINTDECLAREtmpListCURSOR FOR(SELECTPrdctID,QtyFROMINSERTED)--定义游标,从出库明细中获得出库的配件ID和出库数量 OPENtmpList SET@ROWS=(SELECTCOUNT(*)FROMINSERTED)-–获得有多少种配件出库 SET@I=0 WHILE@I<@ROWS BEGIN SET@I=@I+1 FETCHtmpListINTO@PrdctID,@Qty SET@CurQty=(SELECTCurQtyFROMAccessoryWHEREID=@PrdctID) SET@WarnQty=(SELECTWarnQtyFROMAccessoryWHEREID=@PrdctID) SET@ForeQty=(SELECTForeQtyFROMACCESSORYWHEREID=@PrdctID) UPDATEAccessory --更新库存量 SETCurQty=(@CurQty-@Qty),ForeQty=(@ForeQty-@Qty)WHEREID=@PrdctID IF(@ForeQty-@Qty)<@WarnQty --小于预警库存时,生成采购建议单 BEGIN Declare@YearVARCHAR(4), @MonthVARCHAR(2), @DayVARCHAR(2), @NoINT, @BuyQtyINT,--采购的数量 @BuyVARCHAR(20), @BillNoVARCHAR(20), @BillDateVARCHAR(20) SET@BuyQty=@WarnQty-@ForeQty+@Qty SET@Buy=REVERSE(@BuyQty) SET@Buy=STUFF(@Buy,1,2,'00') SET@Buy=REVERSE(@Buy) SET@BuyQty=@Buy IF@BuyQty=0 SET@BuyQty=100 ELSE SET@BuyQty=@BuyQty+100 SET@Year=STR(YEAR(GETDATE()),4) SET@Month=MONTH(GETDATE()) SET@Day=DAY(GETDATE()) SET@BillDate=@Year+'-'+@Month+'-'+@Day SET@No=RIGHT((SELECTTOP1BillNoFROMStockAdviceWHEREBillNoLIKE('%SA'+@year+'H%')ORDERBYBillNoDESC),4) IF@NoISNULLORISNUMERIC(@No)=0 SET@No=1 ELSE SET@No=@No+1 SET@BillNo=@No WHILELEN(@BillNo)<4 SET@BillNo='0'+@BillNo SET@BillNo='SA'+@Year+'H'+@BillNo --组合生成采购建议单编号 INSERTStockAdvice(BillNo,BillDate,Dscp) VALUES(@BillNo,@BillDate,'系统自动生成')-–生成采购建议单 DECLARE@StockAdviceIDINT SET@StockAdviceID=@@IDENTITY INSERTStockAdviceDetail(StockAdviceID,PrdctID,Qty,CurQty,Dscp) VALUES
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《公差配合与技术测量》课件-第6章:键和花键联结的公差与测量
- 工业互联网平台微服务架构性能测试报告2025:设备预测性维护效果评估
- QuestAuto 2025年新能源汽车市场发展半年报:月度活跃量逼近3400万辆!-行业研究报告-QuestMobile
- 台州塑料薄膜试题及答案
- 养殖基地管理办法
- 养鸭场地管理办法
- 内审人员管理办法
- 内部增票管理办法
- 内部认证管理办法
- 军人制服管理办法
- 水浒传每回内容梗概
- (译林版)二年级英语上册期中检测卷-附参考答案
- 工地试验室安全培训内容
- 小儿哮喘病护理
- 了解PLC的PID控制原理
- 辽宁省第二届职业技能大赛(健康照护赛项)理论参考试题及答案
- 中建桥面系及桥梁附属专项施工方案
- 2024年食品安全生产经营大比武理论考试题库-下(多选、判断题)
- 有限空间专项安全检查表
- Unit 1 Making friends(单元测试)-2024-2025学年人教PEP版(2024)英语三年级上册
- 2024光伏电站设备评级标准
评论
0/150
提交评论