浙大远程计算机专业毕业论文格式规范参考111_第1页
浙大远程计算机专业毕业论文格式规范参考111_第2页
浙大远程计算机专业毕业论文格式规范参考111_第3页
浙大远程计算机专业毕业论文格式规范参考111_第4页
浙大远程计算机专业毕业论文格式规范参考111_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、浙江大学远程教育学院本科生毕业论文-用数据库管理商品库存何军炎D20600113002浙江大学远程教育学院本科生毕业论文(设计)题 目用数据库管理商品库存 专 业计算机应用技术学习中心姓 名 学 号 指导教师 年月日摘要文章讨论了基于MS SQL Server和PowerBuilder的C/S两层数据库应用程序开发。在微软Windows操作系统环境下,服务器端安装SQL Server,客户端安装PowerBuilder开发的数据库应用程序,实现了简单的收货、发货商品库存管理。关键词: 数据库 程序设计 SQL PowerBuilder 收货 发货 库存目 录一、前言4二、应用系统运行平台4(一

2、)服务器端软件环境4(二)客户端软件环境(含开发工具)4三、数据库设计4(一)创建数据库4(二)创建数据库用户4(三)创建表和索引4(四)建立表之间的关系5(五)定义数据库备份策略7四、应用程序设计7(一)需求分析71、访谈用户72、需求说明书7(二)软件设计71、概览72、应用对象模块83、用户登录模块94、主界面模块105、基础代码维护模块116、收货模块157、发货模块198、库存报表模块21参考文献一、 前言随着计算机技术的发展,数据越来越重要,并且逐渐从程序中分离出来,至今已经形成了各种成熟的关系型数据库系统。在这个过程中,数据库的应用也越来越广泛,特别是在企业管理领域,从早期的MI

3、S系统到现在的ERP软件和电子商务软件,都离不开数据库。数据库应用程序的开发工具也由早期的dbase、Foxbase发展到今天基于Web的面向对象的J2ee、.Net等开发平台。业界领先的ERP软件如SAP、Oracle等更是功能强大、庞大复杂,初始安装就需要上百GB的磁盘空间。然而,有许多原理是相通的,在这里我以MS SQL Server数据库管理系统和PowerBuilder开发工具创建一个库存管理的简单应用,以说明数据库应用的基本框架。二、 应用系统运行平台(一) 服务器端软件环境操作系统可安装Windows 2000 server(标准版或企业版)并打SP4补丁包或Windows Se

4、rver 2003(标准版或企业版)并打SP2补丁包。数据库系统安装Microsoft SQL Server 2000(标准版或企业版)。(二) 客户端软件环境(含开发工具)操作系统可安装Windows 2000 Professional版或Windows XP,并打上最新的补丁包,再安装SQL Server 2000客户端软件和PowerBuilder 6.5。三、 数据库设计(一) 创建数据库通过SQL Server企业管理器创建一个名为Inventory的数据库,接受默认数据文件和日志文件的设置(如果是生产系统,还需考虑服务器性能并安排数据文件和日志文件到不同的磁盘阵列上)。(二) 创建

5、数据库用户通过SQL Server企业管理器,在数据库Inventory下创建用户MSA,并授予db_owner的角色。设置该用户的密码。(三) 创建表和索引创建操作员代码表sys_opt,并将操作员代码设为主键:CREATE TABLE SYS_OPT (CODE_OPT char (6) NOT NULL primary key,-操作员代码NAME_OPT char (8) NOT NULL ,-操作员姓名PASSWORD char (10) NULL -密码)GO在操作员代码表中先增加一条记录,用于管理员登录:INSERT INTO SYS_OPT(CODE_OPT, NAME_OPT

6、, PASSWORD)VALUES('admin','管理员','')GO创建仓库代码表list_warehouse,并将仓库代码设为主键:CREATE TABLE LIST_WAREHOUSE (CK_NO char (4) NOT NULL PRIMARY KEY,-仓库代码CK_NAME char (20) NOT NULL ,-仓库名称CK_ADDRESS varchar (200) NULL -仓库地址)GO创建物料代码表list_material,并将物料代码设为主键:CREATE TABLE LIST_MATERIAL (MATER

7、IAL_NO char (4) NOT NULL PRIMARY KEY,-物料代码MATERIAL_NAME char (20) NOT NULL, -物料名称UNIT char (4) NOT NULL -计量单位)GO创建收发货记录表MATERIAL_ACCOUNT,并将单据号码设为主键。因为收货单与发货单的结构非常相似,在这里用一张表来进行存储,增加一个单据类型字段,用以区分是收货单还是发货单。这里还假设计量单位都与物料代码表中的一致,所以不保存计量单位。为了简单起见,在这里用系统自动产生的流水号来表示单据号。CREATE TABLE MATERIAL_ACCOUNT(-单据号码设为主

8、键和自动增长标识列RECORD_NO INT NOT NULL IDENTITY (1, 1) PRIMARY KEY,RECORD_TYPE CHAR(2) NOT NULL,-单据类型(GR收货,GI发货)RECORD_DATE DATETIME NOT NULL,-制单日期CK_NO CHAR(4) NOT NULL,-仓库代码MATERIAL_NO CHAR(4) NOT NULL,-物料代码AMOUNT DECIMAL(18, 3) NOT NULL,-数量CODE_OPT CHAR(6) NOT NULL-操作员代码)GO为了提高性能,在表MATERIAL_ACCOUNT中分别以操

9、作员代码、仓库代码、物料代码创建索引。而操作员代码表、仓库代码表、物料代码表则已经有系统自动按关键字创建的索引了。(四) 建立表之间的关系为了避免在表MATERIAL_ACCOUNT中输入无效的仓库代码、物料代码和操作员代码,分别在这几列中创建外键约束,参照引用操作员代码表、物料代码表、仓库代码表。这样,就建立了表MATERIAL_ACCOUNT和表SYS_OPT、LIST_WAREHOUSE、LIST_MATERIAL之间的关系。(五) 定义数据库备份策略在这里仅仅使用简单恢复模型,并设定每周六凌晨0点进行完全备份和每天晚上10点进行差异备份。四、 应用程序设计(一) 需求分析需求分析是软件

10、设计中非常重要的一个环节,没有经过详细的需求分析就匆匆忙忙进行软件开发是注定要失败的。所以一定要花时间与用户进行沟通交流,详细了解客户到底需要软件做到什么。在沟通交流过程中也可以大致告诉用户软件可以做到些什么、是怎样做的。对用户提出的一些不切实际的需求一定要以合理的方式明确地拒绝。经双方讨论并明确的需求要以书面的形式签字确认。1、 访谈用户访谈用户是了解用户需求的重要方式。需要跟公司不同层面的用户访谈,了解公司的业务流程和各个环节的不同需求。对忙碌的管理人员和销售员要提前预约,以合理安排客户的时间。每次访谈后要进行访谈内容整理,以文档的形式记录下来。2、 需求说明书经过详细的需求调研,最终形成

11、需求说明书。需求说明书包含项目背景、项目目标任务、需求规定等内容,其中需求规定是重点。下面简单列出本文的需求:(1) 仓库按代码进行管理,避免每次输入仓库名称增加额外工作量和多次输入相同仓库但名称不一致。(2) 物料按代码进行管理,避免每次输入物料名称增加额外工作量和多次输入相同物料但名称不一致。(3) 每次收货、发货都进行登记,以便统计库存。(4) 每次发货时,都要检查库存,避免出现客户拿了提单到仓库却提不到货。(5) 不同的操作人员有不同的登录帐户和密码,普通用户只能修改自己的密码,管理员可以修改任何人的密码。管理员可以创建、删除、修改普通用户。(6) 对进货、发货进行创建、更改操作后,保

12、存时把操作员代码保存到该记录中,以便明确责任。(二) 软件设计1、 概览根据需求说明书进行软件设计,把软件的功能划分为以下几个主要模块:应用对象模块(主程序):在PowerBuilder中,每个应用程序都有且只有一个应用对象,作为程序的入口,相当于C语言中的main函数。在这个模块中主要完成建立数据库连接等一系列初始化环境的建立。用户登录模块:验证用户的登录信息,拒绝非授权用户使用系统。主界面模块:显示主窗口、主菜单,接受用户的选择,根据用户的选择调用相应的模块。基础代码模块:进行基础代码维护和用户维护。收货模块:进行收货记录的登记和修改删除。发货模块:进行发货记录的登记和修改删除。库存报表模

13、块:进行查询统计和库存报表的打印。应用对象模块(主程序)主窗口用户登录模块身份验证通过身份验证不通过收货模块发货模块库存报表模块退出基础代码维护模块程序结束选择退出2、 应用对象模块创建全局变量,在Open事件中对事务对象SQLCA的几个数据库连接属性进行赋值。在Close事件中进行退出程序前的一些清理操作。以下是部分Open事件的代码及注释:SQLCA.DBMS ="MSS Microsoft SQL Server"/数据库系统类型SQLCA.Database ="Inventory"/数据库名称SQLCA.LogID ="MSA"

14、/数据库系统登录名SQLCA.LogPass ="123321"/数据库系统登录密码SQLCA.ServerName ="Myserver"/数据库服务器Connect Using sqlca;/进行数据库连接If sqlca.sqlcode<>0 Then /如果连接失败Close(w_connect)Beep(1)Messagebox('警告','运行本系统所需数据库不能成功联接!'+&sqlca.sqlerrtext,Stopsign!)/出错提示Halt/退出程序End ifOpen(W_log

15、in)/显示登录界面接下来,判断登录界面返回值,如果是1(成功登录),打开主界面,否则退出程序。3、 用户登录模块显示用户登录窗口,在窗口中有两个文本输入框和两个Button按钮。两个文本输入框分别接受用户名和密码的输入,并放入全局变量gs_user_code和局部变量ls_user_password中。两个Button按钮分别是确认和取消按钮。当用户单击取消按钮时,关闭登录窗口,返回值0。当用户单击确认按钮时,进行身份验证,如果身份验证成功,关闭登录窗口,返回值1;如果身份验证不成功,提示错误信息,要求用户重新输入。以下是确认按钮的Clicked事件的部分代码:/根据输入的用户名从数据库中读

16、取密码select password into :ls_pswd from sys_opt where code_opt=:gs_user_code;/如果密码是空值,则改为空字符串if isnull(ls_pswd) then ls_pswd='' if ls_pswd <> ls_user_password then/密码不匹配messagebox('提示信息','用户名或口令错误!',Exclamation!)returnend if4、 主界面模块主界面显示主窗口(W_main)、主菜单,接受用户的选择,根据用户的选择调用相应

17、的模块。choose case ls_selectcase 'code_maintain'/基础代码维护opensheet(w_sheet_code,w_main,3,layered!)case 'goods_receipt'/收货opensheet(w_sheet_gr,w_main,3,layered!)case 'goods_issue'/发货opensheet(w_sheet_gi,w_main,3,layered!)case 'report'/库存报表opensheet(w_sheet_report,w_main,3,l

18、ayered!)case 'quit'/退出close(this)end choose5、 基础代码维护模块基础代码维护模块主要进行仓库代码、物料代码、操作员代码的维护。由于这三种基础代码的维护非常相似,只需设计一个界面(DataWindow 控件)就可以满足。在基础代码维护模块(W_sheet_code)中设计一个下拉菜单,菜单项分别是:仓库代码维护、物料代码维护、操作员代码维护、退出。当用户进入该模块(W_sheet_code)时如果选择退出,则返回主界面(W_main);如果选择其他菜单,则分别将不同的参数传递给维护界面的窗口(W_enter_code)。维护界面窗口根据

19、收到的不同参数,分别连接不同的数据源(DataWindow),给予用户维护。对于仓库代码、物料代码维护,数据窗对象的设计相对比较简单,这里就不赘述了。但进入操作员代码维护界面时,需要根据当前登录用户进行判断,如果当前登录用户的代码是admin,就允许他/她创建、修改、删除用户记录,当然包括密码;如果不是,则仅仅允许他/她修改自己的密码。有两种方法可以进行实现:一是创建两个数据窗对象,二是创建一个数据窗对象,然后动态修改SQL语句。我认为第一种方法简单可行,但缺点是今后修改数据窗时需要同时修改两个数据窗。这里我创建两个数据窗对象,一个是管理员用的(d_enter_operator_admin),

20、另一个是普通用户用的(d_enter_operator_ordinary)。普通用户使用的数据窗对象的操作员代码和操作员姓名是只读的,不能修改。当普通用户进入操作员维护界面时,还要把创建、删除按钮disable掉。以下是部分菜单Clicked事件代码:choose case ls_selectcase 'operator', 'warehouse', 'material'/进入基础代码维护界面OpenWithParm(w_enter_code,ls_select)case 'quit'/退出close(this)end choos

21、e以下是部分维护界面窗口Open事件代码:ls_select = message.powerobjectparm/将外部传入的参数保存CHOOSE CASE ls_select/根据传入的参数,分别连接不同的数据对象(数据源)到同一个/数据窗控件(界面)中CASE 'operator'/操作员维护IF gs_user_code = 'admin' THEN /如果当前用户是admindw_1.dataobject = 'd_enter_opeartor_admin'ELSE/如果当前用户是普通用户dw_1.dataobject = 'd_

22、enter_opeartor_ordinary'cb_create.enabled = FALSE/使创建按钮不起作用cb_delete.enabled = FALSE/使删除按钮不起作用END IFCASE 'warehouse'/仓库代码维护dw_1.dataobject = 'd_enter_warehouse'CASE 'material'/物料代码维护dw_1.dataobject = 'd_enter_material'END CHOOSE6、 收货模块收货模块的设计是这样的:窗口顶部的左侧是一排按钮,分别是创

23、建、更改、删除、显示,窗口顶部的右侧是开始日期(默认值为今天减30天)和截至日期(默认值为今天),窗口的下方默认是最近30天内收货记录的清单。如果需要显示不同时间段的收货记录清单,可以调整开始日期和截至日期来实现。创建、更改、显示可以共用一个窗口,根据不同的传入参数加以区分。修改开始日期和截至日期时,需要刷新列表。当更改收货记录并保存时或者删除收货记录时,都需要判断库存是否为负数,如果库存出现负数,说明程序是有问题的。这个问题在后面处理发货记录时也会碰到,所以把判断库存是否为负数做成一个函数(f_is_negative),传入仓库代码和物料代码,返回库存是否为负数。在处理收货记录修改或删除时,

24、要在update语句执行后,事务提交(commit)之前,执行该函数。以下是修改收货记录保存时(cb_save按钮的Clicked事件)部分代码:If dw_1.update(true,false) = 1 Then/数据窗生产update语句成功If sqlca.sqlcode <> 0 Then/SQL返回错误码RollBack Using sqlca;/事务回滚messagebox('提示信息','保存数据不成功!'+sqlca.sqlerrtext)return -1Else/SQL返回码0,update语句成功if f_is_negativ

25、e(ls_ck_code,ls_material_code) then/如果产生负库存RollBack Using sqlca;/事务回滚messagebox('提示信息','库存不能为负数,保存数据不成功!')return -1elseCommit Using sqlca;/提交事务dw_1.resetupdate ()messagebox('提示信息','保存数据成功!')End IfEnd ifElse/数据窗生产update语句时有错误,需要检查数据窗代码End if删除收货记录时(cb_delete按钮的Clicked事件)也需要同样方法处理,这里不再详细列出。以下是函数f_is_negative的定义:以下是函数f_is_negative的实现:下面是cb_save按钮的Clicked事件完整代码:7、 发货模块发货模块与收货模块的设计相同,窗口顶部的左侧是一排按钮,分别是创建、更改、删除、显示,窗口顶部的右侧是开始日期(默认值为今天减30天)和截至日期(默认值为今天),窗口的下方默认是最近30天内发货记录的清单。如果需要

温馨提示

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

评论

0/150

提交评论