浙江大学远程教育学院本科生毕业论文(设计)题目用数据库管理商品库存专业计算机应用技术学习中心姓名学号指导教师年月日摘要文章讨论了基于MS SQL Server和PowerBuilder的C/S两层数据库应用程序开发。
在微软Windows操作系统环境下,服务器端安装SQL Server,客户端安装PowerBuilder开发的数据库应用程序,实现了简单的收货、发货商品库存管理。
关键词: 数据库程序设计 SQL PowerBuilder 收货发货库存目录一、前言 (4)二、应用系统运行平台 (4)(一) 服务器端软件环境 (4)(二) 客户端软件环境(含开发工具) (4)三、数据库设计 (4)(一) 创建数据库 (4)(二) 创建数据库用户 (4)(三) 创建表和索引 (4)(四) 建立表之间的关系 (5)(五) 定义数据库备份策略 (7)四、应用程序设计 (7)(一) 需求分析 (7)1、访谈用户 (7)2、需求说明书 (7)(二) 软件设计 (7)1、概览 (7)2、应用对象模块 (8)3、用户登录模块 (9)4、主界面模块 (10)5、基础代码维护模块 (11)6、收货模块 (15)7、发货模块 (19)8、库存报表模块 (21)参考文献一、前言随着计算机技术的发展,数据越来越重要,并且逐渐从程序中分离出来,至今已经形成了各种成熟的关系型数据库系统。
在这个过程中,数据库的应用也越来越广泛,特别是在企业管理领域,从早期的MIS系统到现在的ERP软件和电子商务软件,都离不开数据库。
数据库应用程序的开发工具也由早期的dbase、Foxbase发展到今天基于Web的面向对象的J2ee、.Net等开发平台。
业界领先的ERP软件如SAP、Oracle等更是功能强大、庞大复杂,初始安装就需要上百GB的磁盘空间。
然而,有许多原理是相通的,在这里我以MS SQL Server数据库管理系统和PowerBuilder开发工具创建一个库存管理的简单应用,以说明数据库应用的基本框架。
二、应用系统运行平台(一)服务器端软件环境操作系统可安装Windows 2000 server(标准版或企业版)并打SP4补丁包或Windows Server 2003(标准版或企业版)并打SP2补丁包。
数据库系统安装Microsoft SQL Server 2000(标准版或企业版)。
(二)客户端软件环境(含开发工具)操作系统可安装Windows 2000 Professional版或Windows XP,并打上最新的补丁包,再安装SQL Server 2000客户端软件和PowerBuilder 6.5。
三、数据库设计(一)创建数据库通过SQL Server企业管理器创建一个名为Inventory的数据库,接受默认数据文件和日志文件的设置(如果是生产系统,还需考虑服务器性能并安排数据文件和日志文件到不同的磁盘阵列上)。
(二)创建数据库用户通过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], [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] ([MATERIAL_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(--单据号码设为主键和自动增长标识列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中分别以操作员代码、仓库代码、物料代码创建索引。
而操作员代码表、仓库代码表、物料代码表则已经有系统自动按关键字创建的索引了。
(四)建立表之间的关系为了避免在表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事件的代码及注释:SQLCA.DBMS ="MSS Microsoft SQL Server" //数据库系统类型SQLCA.Database ="Inventory" //数据库名称SQLCA.LogID ="MSA" //数据库系统登录名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_login) //显示登录界面接下来,判断登录界面返回值,如果是1(成功登录),打开主界面,否则退出程序。
3、用户登录模块显示用户登录窗口,在窗口中有两个文本输入框和两个Button按钮。
两个文本输入框分别接受用户名和密码的输入,并放入全局变量gs_user_code和局部变量ls_user_password中。
两个Button按钮分别是确认和取消按钮。