用数据库管理商品库存计算机系_第1页
用数据库管理商品库存计算机系_第2页
用数据库管理商品库存计算机系_第3页
用数据库管理商品库存计算机系_第4页
用数据库管理商品库存计算机系_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安徽三联学院专科毕业论文题目用数据库管理商品库存姓名聂冬冬专业计算机应用与技术班级计应(2)班指导教师朱宁波2013年11月24日题目用数据库管理商品库存摘要文章讨论了基于MSSQLSERVER和POWERBUILDER的C/S两层数据库应用程序开发。在微软WINDOWS操作系统环境下,服务器端安装SQLSERVER,客户端安装POWERBUILDER开发的数据库应用程序,实现了简单的收货、发货商品库存管理。关键词数据库程序设计SQLPOWERBUILDER收货发货库存。目录一前言4二应用系统运行平台4(一)服务器端软件环境4(二)客户端软件环境(含开发工具)4三数据库设计4(一)创建数据库4(二)创建数据库用户4(三)创建表和索引4(四)建立表之间的关系4(五)定义数据库备份策略7四应用程序设计7(一)需求分析71访谈用户72需求说明书7(二)软件设计71概览72应用对象模块73用户登录模块74主界面模块75基础代码维护模块76收货模块77库存报表模块7一前言随着计算机技术的发展,数据越来越重要,并且逐渐从程序中分离出来,至今已经形成了各种成熟的关系型数据库系统。在这个过程中,数据库的应用也越来越广泛,特别是在企业管理领域,从早期的MIS系统到现在的ERP软件和电子商务软件,都离不开数据库。数据库应用程序的开发工具也由早期的DBASE、FOXBASE发展到今天基于WEB的面向对象的J2EE、NET等开发平台。业界领先的ERP软件如SAP、ORACLE等更是功能强大、庞大复杂,初始安装就需要上百GB的磁盘空间。然而,有许多原理是相通的,在这里我以MSSQLSERVER数据库管理系统和POWERBUILDER开发工具创建一个库存管理的简单应用,以说明数据库应用的基本框架。二应用系统运行平台(一)服务器端软件环境操作系统可安装WINDOWS2000SERVER(标准版或企业版)并打SP4补丁包或WINDOWSSERVER2003(标准版或企业版)并打SP2补丁包。数据库系统安装MICROSOFTSQLSERVER2000(标准版或企业版)。(二)客户端软件环境(含开发工具)操作系统可安装WINDOWS2000PROFESSIONAL版或WINDOWSXP,并打上最新的补丁包,再安装SQLSERVER2000客户端软件和POWERBUILDER65。三数据库设计(一)创建数据库通过SQLSERVER企业管理器创建一个名为INVENTORY的数据库,接受默认数据文件和日志文件的设置(如果是生产系统,还需考虑服务器性能并安排数据文件和日志文件到不同的磁盘阵列上)。(二)创建数据库用户通过SQLSERVER企业管理器,在数据库INVENTORY下创建用户MSA,并授予DB_OWNER的角色。设置该用户的密码。(三)创建表和索引创建操作员代码表SYS_OPT,并将操作员代码设为主键CREATETABLESYS_OPTCODE_OPTCHAR6NOTNULLPRIMARYKEY,操作员代码NAME_OPTCHAR8NOTNULL,操作员姓名PASSWORDCHAR10NULL密码GO在操作员代码表中先增加一条记录,用于管理员登录INSERTINTOSYS_OPTCODE_OPT,NAME_OPT,PASSWORDVALUESADMIN,管理员,GO创建仓库代码表LIST_WAREHOUSE,并将仓库代码设为主键CREATETABLELIST_WAREHOUSECK_NOCHAR4NOTNULLPRIMARYKEY,仓库代码CK_NAMECHAR20NOTNULL,仓库名称CK_ADDRESSVARCHAR200NULL仓库地址)GO创建物料代码表LIST_MATERIAL,并将物料代码设为主键CREATETABLELIST_MATERIALMATERIAL_NOCHAR4NOTNULLPRIMARYKEY,物料代码MATERIAL_NAMECHAR20NOTNULL,物料名称UNITCHAR4NOTNULL计量单位GO创建收发货记录表MATERIAL_ACCOUNT,并将单据号码设为主键。因为收货单与发货单的结构非常相似,在这里用一张表来进行存储,增加一个单据类型字段,用以区分是收货单还是发货单。这里还假设计量单位都与物料代码表中的一致,所以不保存计量单位。为了简单起见,在这里用系统自动产生的流水号来表示单据号。CREATETABLEMATERIAL_ACCOUNT单据号码设为主键和自动增长标识列RECORD_NOINTNOTNULLIDENTITY1,1PRIMARYKEY,RECORD_TYPECHAR2NOTNULL,单据类型(GR收货,GI发货)RECORD_DATEDATETIMENOTNULL,制单日期CK_NOCHAR4NOTNULL,仓库代码MATERIAL_NOCHAR4NOTNULL,物料代码AMOUNTDECIMAL18,3NOTNULL,数量CODE_OPTCHAR6NOTNULL操作员代码GO为了提高性能,在表MATERIAL_ACCOUNT中分别以操作员代码、仓库代码、物料代码创建索引。而操作员代码表、仓库代码表、物料代码表则已经有系统自动按关键字创建的索引了。四建立表之间的关系为了避免在表MATERIAL_ACCOUNT中输入无效的仓库代码、物料代码和操作员代码,分别在这几列中创建外键约束,参照引用操作员代码表、物料代码表、仓库代码表。这样,就建立了表MATERIAL_ACCOUNT和表SYS_OPT、LIST_WAREHOUSE、LIST_MATERIAL之间的关系。(五)定义数据库备份策略在这里仅仅使用简单恢复模型,并设定每周六凌晨0点进行完全备份和每天晚上10点进行差异备份。四应用程序设计(一)需求分析需求分析是软件设计中非常重要的一个环节,没有经过详细的需求分析就匆匆忙忙进行软件开发是注定要失败的。所以一定要花时间与用户进行沟通交流,详细了解客户到底需要软件做到什么。在沟通交流过程中也可以大致告诉用户软件可以做到些什么、是怎样做的。对用户提出的一些不切实际的需求一定要以合理的方式明确地拒绝。经双方讨论并明确的需求要以书面的形式签字确认。1访谈用户访谈用户是了解用户需求的重要方式。需要跟公司不同层面的用户访谈,了解公司的业务流程和各个环节的不同需求。对忙碌的管理人员和销售员要提前预约,以合理安排客户的时间。每次访谈后要进行访谈内容整理,以文档的形式记录下来。2需求说明书经过详细的需求调研,最终形成需求说明书。需求说明书包含项目背景、项目目标任务、需求规定等内容,其中需求规定是重点。下面简单列出本文的需求1仓库按代码进行管理,避免每次输入仓库名称增加额外工作量和多次输入相同仓库但名称不一致。2物料按代码进行管理,避免每次输入物料名称增加额外工作量和多次输入相同物料但名称不一致。3每次收货、发货都进行登记,以便统计库存。4每次发货时,都要检查库存,避免出现客户拿了提单到仓库却提不到货。5不同的操作人员有不同的登录帐户和密码,普通用户只能修改自己的密码,管理员可以修改任何人的密码。管理员可以创建、删除、修改普通用户。6对进货、发货进行创建、更改操作后,保存时把操作员代码保存到该记录中,以便明确责任。(二)软件设计1概览根据需求说明书进行软件设计,把软件的功能划分为以下几个主要模块应用对象模块(主程序)在POWERBUILDER中,每个应用程序都有且只有一个应用对象,作为程序的入口,相当于C语言中的MAIN函数。在这个模块中主要完成建立数据库连接等一系列初始化环境的建立。用户登录模块验证用户的登录信息,拒绝非授权用户使用系统。主界面模块显示主窗口、主菜单,接受用户的选择,根据用户的选择调用相应的模块。基础代码模块进行基础代码维护和用户维护。收货模块进行收货记录的登记和修改删除。发货模块进行发货记录的登记和修改删除。库存报表模块进行查询统计和库存报表的打印。应用对象模块(主程序)主窗口用户登录模块身份验证通过身份验证不通过收货模块发货模块库存报表模块退出基础代码维护模块程序结束选择退出2应用对象模块创建全局变量,在OPEN事件中对事务对象SQLCA的几个数据库连接属性进行赋值。在CLOSE事件中进行退出程序前的一些清理操作。以下是部分OPEN事件的代码及注释SQLCADBMS“MSSMICROSOFTSQLSERVER“/数据库系统类型SQLCADATABASE“INVENTORY“/数据库名称SQLCALOGID“MSA“/数据库系统登录名SQLCALOGPASS“123321“/数据库系统登录密码SQLCASERVERNAME“MYSERVER“/数据库服务器CONNECTUSINGSQLCA/进行数据库连接IFSQLCASQLCODE0THEN/如果连接失败CLOSEW_CONNECTBEEP1MESSAGEBOX警告,运行本系统所需数据库不能成功联接/如果密码是空值,则改为空字符串IFISNULLLS_PSWDTHENLS_PSWDIFLS_PSWDLS_USER_PASSWORDTHEN/密码不匹配MESSAGEBOX提示信息,用户名或口令错误,EXCLAMATIONRETURNENDIF五主界面模块主界面显示主窗口(W_MAIN)、主菜单,接受用户的选择,根据用户的选择调用相应的模块。CHOOSECASELS_SELECTCASECODE_MAINTAIN/基础代码维护OPENSHEETW_SHEET_CODE,W_MAIN,3,LAYEREDCASEGOODS_RECEIPT/收货OPENSHEETW_SHEET_GR,W_MAIN,3,LAYEREDCASEGOODS_ISSUE/发货OPENSHEETW_SHEET_GI,W_MAIN,3,LAYEREDCASEREPORT/库存报表OPENSHEETW_SHEET_REPORT,W_MAIN,3,LAYEREDCASEQUIT/退出CLOSETHISENDCHOOSE4基础代码维护模块基础代码维护模块主要进行仓库代码、物料代码、操作员代码的维护。由于这三种基础代码的维护非常相似,只需设计一个界面(DATAWINDOW控件)就可以满足。在基础代码维护模块(W_SHEET_CODE)中设计一个下拉菜单,菜单项分别是仓库代码维护、物料代码维护、操作员代码维护、退出。当用户进入该模块(W_SHEET_CODE)时如果选择退出,则返回主界面(W_MAIN);如果选择其他菜单,则分别将不同的参数传递给维护界面的窗口(W_ENTER_CODE)。维护界面窗口根据收到的不同参数,分别连接不同的数据源(DATAWINDOW),给予用户维护。对于仓库代码、物料代码维护,数据窗对象的设计相对比较简单,这里就不赘述了。但进入操作员代码维护界面时,需要根据当前登录用户进行判断,如果当前登录用户的代码是ADMIN,就允许他/她创建、修改、删除用户记录,当然包括密码;如果不是,则仅仅允许他/她修改自己的密码。有两种方法可以进行实现一是创建两个数据窗对象,二是创建一个数据窗对象,然后动态修改SQL语句。我认为第一种方法简单可行,但缺点是今后修改数据窗时需要同时修改两个数据窗。这里我创建两个数据窗对象,一个是管理员用的(D_ENTER_OPERATOR_ADMIN),另一个是普通用户用的(D_ENTER_OPERATOR_ORDINARY)。普通用户使用的数据窗对象的操作员代码和操作员姓名是只读的,不能修改。当普通用户进入操作员维护界面时,还要把创建、删除按钮DISABLE掉。以下是部分菜单CLICKED事件代码CHOOSECASELS_SELECTCASEOPERATOR,WAREHOUSE,MATERIAL/进入基础代码维护界面OPENWITHPARMW_ENTER_CODE,LS_SELECTCASEQUIT/退出CLOSETHISENDCHOOSE以下是部分维护界面窗口OPEN事件代码LS_SELECTMESSAGEPOWEROBJECTPARM/将外部传入的参数保存CHOOSECASELS_SELECT/根据传入的参数,分别连接不同的数据对象(数据源)到同一个/数据窗控件(界面)中CASEOPERATOR/操作员维护IFGS_USER_CODEADMINTHEN/如果当前用户是ADMINDW_1DATAOBJECTD_ENTER_OPEARTOR_ADMINELSE/如果当前用户是普通用户DW_1DATAOBJECTD_ENTER_OPEARTOR_ORDINARYCB_CREATEENABLEDFALSE/使创建按钮不起作用CB_DELETEENABLEDFALSE/使删除按钮不起作用ENDIFCASEWAREHOUSE/仓库代码维护DW_1DATAOBJECTD_ENTER_WAREHOUSECASEMATERIAL/物料代码维护DW_1DATAOBJECTD_ENTER_MATERIALENDCHOOSE5收货模块收货模块的设计是这样的窗口顶部的左侧是一排按钮,分别是创建、更改、删除、显示,窗口顶部的右侧是开始日期(默认值为今天减30天)和截至日期(默认值为今天),窗口的下方默认是最近30天内收货记录的清单。如果需要显示不同时间段的收货记录清单,可以调整开始日期和截至日期来实现。创建、更改、显示可以共用一个窗口,根据不同的传入参数加以区分。修改开始日期和截至日期时,需要刷新列表。当更改收货记录并保存时或者删除收货记录时,都需要判断库存是否为负数,如果库存出现负数,说明程序是有问题的。这个问题在后面处理发货记录时也会碰到,所以把判断库存是否为负数做成一个函数(F_IS_NEGATIVE),传入仓库代码和物料代码,返回库存是否为负数。在处理收货记录修改或删除时,要在UPDATE语句执行后,事务提交(COMMIT)之前,执行该函数。以下是修改收货记录保存时(CB_SAVE按钮的CLICKED事件)部分代码IFDW_1UPDATETRUE,FALSE1THEN/数据窗生产UPDATE语句成功IFSQLCASQLCODE0THEN/SQL返回错误码ROLLBACKUSINGSQLCA/事务回滚MESSAGEBOX提示信息,保存数据不成功SQLCASQLERRTEXTRETURN1ELSE/SQL返回码0,UPDATE语句成功IFF_IS_NEGATIVELS_CK_CODE,LS_MATERIAL_CODETHEN/如果产生负库存ROLLBACKUSINGSQLCAWWWWZRYXCOMWWWNRKWYCOM/事务回滚MESSAGEBOX提示信息,库存不能为负数,保存数据不成功RETURN1ELSECOMMITUSINGSQLCA/提交事务DW_1RESETUPDATEMESSAGEBOX提示信息,保存数据成功ENDIFENDIFELSE/数据窗生产UPDATE语句时有错误,需要检查数据窗代码ENDIF删除收货记录时(CB_DELETE按钮的CLICKED事件)也需要同样方法处理,这里不再详细列出。以下是函数F_IS_NEGATIVE的定义以下是函数F_IS_NEGATIVE的实现7发货模块发货模块与收货模块的设计相同,窗口顶部的左侧是一排按钮,分别是创建、更改、删除、显示,窗口顶部的右侧是开始日期(默认值为今天减30天)和截至日期(默认值为今天),窗口的下方默认是最近30天内发货记录的清单。如果需要显示不同时间段的发货记录清单,可以调整开始日期和截至日期来实现。创建、更改、显示可以共用一个窗口,根据不同的传入参数加以区分。修改开始日期和截至日期时,需要刷新列表。当创建或更改发货记录并保存时,都需要判断库存是否为负数,与收货处理时类似,调用函数(F_IS_NEGATIVE),传入仓库代码和物料代码,返回值表示库存是否为负数。在处理发货记录创建或修改时,要在UPDATE语句执行后,事务提交(COMMIT)之前,执行该函数。代码与收货类似。8库存报表模块可以通过创建一个基于交叉表的DATAWINDOW对象方便地实现库存报表,POWERBUILDER所提供的交叉表有点像EXCEL中的数据透视表,按不同维度进行分类统计非常方便。在选择条件中,允许用户输入仓库代码(可以多选)和物料代码(可以多选),然后生成交叉表显示出来,也可以直接调用数据窗控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论