7110130138王莹数据库应用课程设计报告书.docx

上传人:b****1 文档编号:10540497 上传时间:2023-05-26 格式:DOCX 页数:30 大小:320.61KB
下载 相关 举报
7110130138王莹数据库应用课程设计报告书.docx_第1页
第1页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第2页
第2页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第3页
第3页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第4页
第4页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第5页
第5页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第6页
第6页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第7页
第7页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第8页
第8页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第9页
第9页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第10页
第10页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第11页
第11页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第12页
第12页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第13页
第13页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第14页
第14页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第15页
第15页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第16页
第16页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第17页
第17页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第18页
第18页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第19页
第19页 / 共30页
7110130138王莹数据库应用课程设计报告书.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

7110130138王莹数据库应用课程设计报告书.docx

《7110130138王莹数据库应用课程设计报告书.docx》由会员分享,可在线阅读,更多相关《7110130138王莹数据库应用课程设计报告书.docx(30页珍藏版)》请在冰点文库上搜索。

7110130138王莹数据库应用课程设计报告书.docx

7110130138王莹数据库应用课程设计报告书

北京广播电视大学

数据库应用课程设计报告书

 

题目:

小超市进销存管理系统

姓名:

王莹

学号:

20087110130138

班级:

08春计算机信息管理专业(专)

分校:

北京广播电视大学怀柔区分校

指导教师:

姚行洲

设计日期:

2009年11月

目 录

摘要

本系统主要完成对小超市进销存管理,包括物品入库、出库、库存,员工信息,供应商信息以及密码管理等六个方面。

系统可以完成对各类信息的浏览、查询、添加、删除、修改、报表等功能。

系统的核心是入库、库存和出库三者之间的联系,每一个表的修改都将联动的影响其它的表,当完成入库或出库操作时系统会自动地完成库存的修改。

查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。

系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。

系统采用microsoftoffice中的access2000来设计数据库,并使用当前优秀的开发工具—delphi6.0,它有着最为灵活的数据库结构,对数据库应用有着良好的支持。

论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。

重点的说明了系统设计的重点、设计思想、难点技术和解决方案。

 

第1章   引 言

1.1  课题来源

随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。

随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。

在计算机飞速发展的今天,将计算机这一信息处理利器应用于仓库的日常管理已是势必所然,而且这也将为仓库管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为企业的飞速发展提供无限潜力。

采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志,它给企业管理来了明显的经济效益和社会效益。

主要体现在:

极大提高了仓库工作人员的工作效率,大大减少了以往入出存流程繁琐,杂乱,周期长的弊端。

基于仓库管理的全面自动化,可以减少入库管理、出库管理及库存管理中的漏洞,可以节约不少管理开支,增加企业收入。

仓库的管理的操作自动化和信息的电子化,全面提高了仓库的管理水平。

随着我国改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,仓库管理的全面自动化、信息化则是其中极其重要的部分。

为了加快仓库管理自动化的步伐,提高仓库的管理业务处理效率,建立仓库管理系统已变得十分心要。

通过对仓库管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今图书仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。

 

1.2开发工具的选择

采用ACCESS来做这个数据库实验报告

1.3本文所做工作

引言部分介绍了本系统的课题来源以及对数据库开发工具的选择。

第四章根据第四章的设计结果利用access2000和delphi6.0进行了具体的窗体和应用程序设计。

总结部分介绍了设计体会和编程体会,并指出了系统设计中的不足和改进的方向

第2章   数据库开发工具

2.1delphi6.0简介

delphi类可以粗略地分成两部分:

一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。

在delphi中,每一个类的祖先都是tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为tobject类。

这样,按照面向对象编程的基本思想,就使得用户可用tobject类这个类型代替任何其它类的数据类型。

实际上在delphi的类库中,tobject类派生出了为数相当众多的子类,它们形成了一个庞大的体系,通常情况下,如果不自行开发组件,就不必了解整个类的体系结构,只用到类层次树的叶结点就足够了。

图形组件与窗口组件并列,是另一大类组件。

图形组件不是基于窗口的,因而不能有窗口句柄,不能接受输入焦点和包含其它组件,图形组件的基类是tgraphiccontrol,在实际编程中,它们必须寄生于它们的宿主——窗口组件类的对象,由它们的拥有者负责其显示,而且它们还能触发一些和鼠标活动相关的事件。

图形控件最典型的例子是tlabel和tspeedbutton。

由此可以看出图形组件的功能很弱,有读者会问图形组件的用处何在呢?

其实使用图形组件的最大好处在于节省资源,正是因为它们的功能较弱,所以使用的系统资源就要少。

在一个应用程序中,如果能在不影响其功能的前提下合理大量地使用图形组件,将会大减少程序对系统资源的消耗。

非可视组件是与可视组件相并列的另一类组件,非可视组件在程序运行中是不可见的(除各种对话框组件之外,事实上有人认为对话框组件不能归入非可视组件,应该是另一种介于可视与非可视之间的组件)。

2.2delphi6.0控件

用delphi6开发数据库应用,重点是和各种数据库组件打交道,当然也要使用其它的一些组件,现在就我在系统设计中所使用的重要组件给与简单介绍。

2.2.1ado数据访问组件

ado数据对象(activedataobjects)实际是一种提供访问各种数据类型的链接机制。

ado设计为一种极简单的格式,通过odbc的方法同数据库接口中,可以使用任何一种odbc数据源,即不止适合于sqlserver、oracle、access等数据库应用程序,也适合于excel表格、文本文件、图形文件和无格式的数据文件。

ado是基于ole-db之上的技术,因此ado通过其内部的属性和方法提供统一的数据访问接口方法。

ado使您的客户端应用程序能够通过oledb提供访问和操作在数据库服务器中的数据。

ado支持用于建立c/s和web的应用程序的主要功能。

其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。

ado同时具有远程数据服务(rds)功能,通过rds可以在一次往返过程中实现将数据从服务器移动到客户端应用程序和web页、在客户端对数据进行处然后将更新结果返回服务器的操作。

利用ado数据访问组件,可以只使用ado结构与数据库取得联系并对其中的数据进行操作,而在这些过程中完全不需要使用bde。

大多数的ado连接和数据集组件都是与基于bde的连接和数据集组件相类似的。

tadoconnection组件与基于bde的应用程序中的tdatabase组件类似。

tadotable与ttable,tadoquery与tquery,以及tadostoreproc和tstoredproc之间都具有这种类似的对应关系。

使用这些ado组件的方式与我们常使用的数据访问组件(基于bde)都有许多相同之处。

ttadodataset没有直接的bde对应组件,但它提供了许多与ttable和tquery相同的功能。

同样,tadocommand也没有相对应的bde组件,它是在delphi/ado环境中完成特定功能的组件。

delphi6.0通过ado数据集访问组件,可以不借助bde数据引擎而是通过微软的oledb来访问更为广泛的数据库中的数据。

ado数据集访问组件与常用的数据访问组件是并列的关系。

在系统中我主要使用的是adotablet和adoquery两个组件。

2.2.2数据控制类datacontrol

数据控制类负责数据库数据的显示,并把用户对数据的修改传回。

这里的绝大多数组件,如dbtext,dbedit, dbmemo,dbimage,dblistbox,dbcombobox,dbcheckbox,dbradiogroup,dblookuplistbox,dblookupcombox,dbctrgrid的功能和对应的非数据感知组件相同,如tedit框,tradiogroups单选按钮组等,只不过在显示数据库数据时要用而已。

在系统中主要使用数据网格控件dbgrid和数据库导航器控件dbnavigator。

2.2.3数据访问类dataaccess

数据库应用系统中数据访问是一个首要问题,包括单用户和c/s系统,都必须联系一些数据库和数据表文件。

delphi6提供了专门用于数据访问的基类控件。

主要包括数据源控件datasource、客户数据集控件clientdataset、数据集提供器控件datasetprovider等等。

用delphi6作数据库应用开发概括来说如下:

先利用数据存取组件和实际的数据库建立连接,并用tsession对象和tdatabase对象管理这些连接。

然后以tdatasource对象为中介,用数据感知组件向用户显示数据库的内容并接受用户的查询和修改等操作。

2.2.4sql语言在delphi中的应用

在delphi中使用sql语言非常方便,一般来说,都是通过tquery组件来使用sql语言的。

可以在tquery组件的sql属性中设置sql语句。

设计程序时,在该组件的属性对话框中选择sql属性,单击带省略号的按钮,就可以打开stringlisteditor对话框,然后我们就可以在对话框中添加sql语句。

还可以使用delphi的sqlbuilder来自动生成sql语句,这样可以避免手工编写sql而可能造成的语法错误。

select * from students wherestudentcode=:

studentcode;

其中的变量studentcode便是一个参数变量,它由一个冒号引导,在程序运行过程中,必须要为该参数赋值,该条sql语句才能正确执行,每次运行应用程序时可以为该参数变量赋予不同的值。

为参数赋值有三种方法:

①根据参数在sql语句中出现的顺序,设置tquery部件的params属性值为参数赋值。

②直接根据sql语句中各参数的名字,调用parambyname方法来为各参数赋值。

③将tquery部件的datasource属性设置为另一个数据源,这样将另一个数据源中与当前tquery部件的sql语句中的参数名相匹配的字段值赋给其对应的参数。

利用这种方法也能实现所谓的连接查询,创建主要—明细型数据库应用。

在程序运行过程中,要想设置tquery部件的sql属性,必须首先调用close方法,关闭tquery部件,然后再调用clear方法清除sql属性中现存的sql命令语句,最后再调用add方法为sql属性设置新的sql命令语句。

例如:

query1.close{关闭query1)

query1.sql.clear{清除sql属性中的sql命令语句}

query1.sql.add('select*fromstudents');

query1.sql.add('wherename="lucy"');。

在这里要特别注意的,一般情况下tquery部件的sql属性只能包含一条完整的sql语句,它不允许被设置成多条sql语句。

当然有些数据库服务器也支持在tquery部件的sql属性中设置多条sql语句,只要数据库服务器允许这样,我们在编程时可以为sql属性设置多条sql语句。

在为tquery部件设置完sql属性的属性值之后,也即编写好适当的sql程序之后,可以有多种方式来执行sql程序。

在设计过程中,设置完tquery部件的sql属性之后将其active属性的值置为true,这样便可以执行sql属性中的sql程序,如果应用中有与tquery部件相连的数据浏览部件(如tddgridtdbedit等)那么在这些数据浏览部件中会显示sql程序的执行结果。

delphi中用adoquery来使用sql语句同样十分方便。

在adoquery组件中首先通过connectionstring属性值来联接数据源,然后就通过双击sql…属性值来写入sql语句。

在delphi中调用数据库,就可以调用adoquery组件,通过修改其中的sql…属性中的sql语句来实现对数据库的各项操作。

值得注意的是,adoquery组件只有在激活的情况下才可以被正确地使用,这样就提出了一个问题,也就是说,在每次修改adoquery组件的sql…属性时都必须先行进行关闭,待清除掉sql…中所有的sql语句后才可以添加新的sql语句。

而且,在每一次修改完成以后,还应该记得重新将adoquery激活。

其它的使用方法与ttquery有许多的相似之处。

2.3access简介

建立一个数据库我们有多种选择,现在市场上有各种各样的数据库,而且每一种数据库都有其自身的特点,不能说哪一种更好,只能在其中寻找一种能更好地适应系统需求、更好地满足用户的要求以及适应开发人员的习惯。

在本系统中,做为图书仓库管理系统是一个比较小的应用系统,它所产生和处理的数据量也比较小。

因此,没有必要使用像sqlserver和oracle这样的大型数据库。

我首先想到的数据库是borland公司的paradox数据库。

另外,microsoftoffice中的access数据库在计算机上的应用比较普及,是开发小型数据库系统的比较理想的选择,所以,在本系统中我选择了access数据库。

access做为一个数据库管理系统,它被集成在microsoftoffice中。

access数据库处理的基本结构,采取关系型数据库模式。

与其他的数据库系统相比,access更加简单易学,一个普通的计算机用户可以很快地掌握它。

access2000的功能十分强大,利用它可以方便地实现对信息保存、维护、查询、统计、打印、交流、发布,而且它可以十分方便地与office其他组件交流数据,这些功能对一个一般用户而言已经足够了。

 

第三章 系统总体设计

软件系统的总体设计大约要经历可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试以及维护等七个阶段。

可行性分析和项目开发计划在前面已经叙述,下面所要做的是进行软件需求分析,概要设计和详细设计。

编码过程将在下一节论述,而测试和维护过程不在本文叙及。

3.1  系统需求分析

在经过前一阶段的分析之后,我确定了我的开发课题为小超市进销存管理。

现在所要做的是要准确定义系统必须做什么以及系统必须具备的功能。

软件需求分析中我采用结构化分析方法(structuredanalysis,简称sa),sa是面向数据流进行需求分析的方法,像所有的软件分析方法(如面向对象分析方法、idef方法等等)一样,sa也是一种建模活动,它使用简单易读的符号,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘满足功能要求的软件模型。

在系统中我采用数据流图(dfd)这种半形式化的描述方式表达需求。

它是一种功能模型,以图形的方式描绘数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能。

3.2  系统概要设计

在软件需求分析阶段,搞清楚了软件“做什么”的问题,形成了目标系统的逻辑模型。

现在我们所要做的就是要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求。

首先,我们需要描述的是系统的总的体系结构。

3.2.1系统结构设计

系统的概要设计中最重要的就是系统的模块化。

模块化是指解决一个复杂问题时自项向下逐层把软件系统划分成若干个模块的过程。

每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。

 将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性,但模块的划分不能是任意的,应尽量保持其独立性。

也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。

在系统的概要设计中我采用结构化设计(structuredesign,简称sd),sd以需求分析阶段产生的数据流图dfd为基础,按一定的步骤映射成软件结构。

我首先将整个系统化分为几个小问题,小模块,在系统中,我设计了用户管理、库存管理、入库管理、出库管理、员工管理和供应商管理6个小模块。

然后,进一步细分模块,添加细节。

比如,用户管理我又将其分为用户注册、用户注销、密码修改;库存管理分为库存记录查询、库存记录修改、库存记录打印等等。

3.2.2数据库设计

在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环经历了三个领域:

信息世界,数据世界,现实世界。

现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。

这些信息再进一步加工、编码,然后进数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。

这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。

数据库表格设计

我在系统中定义的表格都严格地按照范式的思想和要求去完成,数据库中的所有表格都达到了三范式的要求。

针对本系统的特点,在对所搜集的数据进行规范化之后,定义了如下六张表格,分别是库存信息表,入库信息表,出库信息表,员工信息表,供应商信息表和密码信息表。

通过对这六张表格的操作可以较好地完成系统设计的各项功能,六张表格之间有着不同程度的联系。

表的建立

图1.1 库存信息表

库存信息表主要用于记录仓库中现存放的所有物品的详细信息,包括物品编号、名称、供应商、价格、数量等有关物品的各类信息,它即是该数据库

主表,也是系统主界面的主要内容。

在该表中物品编号是主键,它按物品入库的先后次序来编写,每当有物品入库,系统自动给出物品编号,这样我们按物品编号来查找物品是比较方便的。

考虑到编号比较难于记忆,所以使用了供应商和物品类型两个字段,在系统中我提供了供应商和物品类型的分类查找,而且全部采用自动生成,弹出菜单会自动添中新类型,此外,库存数量也是一个比较关键的字段,该字段是在系统初始化时就给定的,每当有物品入库或出库操作,系统就会自动修改物吕的库存数量,以保持数据的一致性。

做为备注有一点说明,我的数据库中备注的数据类型是文本,而不是备注类型,主要考虑到该字段的长度并不大,而且在delphi中文本数据类型的处理也比较方便一点。

图1.2 员工信息表

员工信息表主要用于记录有关员工的各类信息,包括姓名、职称、出生日期、联系电话、联系地址等。

它主要用来为系统提供员工的有关信息,因为在系统中,入库和出库操作均与员工有着一定的联系,在查询入库信息和出库信息时,有时需要查找有关此项记录有关的员工信息,在系统中我是通过入库记录与员工记录(出库记录和员工记录)之间的联接查询来完成的。

图1.3 供应商信息表

供应商信息表主要用于记录有关供应商的各类信息,包括名称、地址、电话、付款方式等。

它主要用来为系统提供供应商的有关信息,在系统中入库记录是与供应商记录相联系的,通过入库记录可以查找相关的供应商信息。

在供应商信息中,考虑当实际情况,我特别加入了email和付款方式这两个字段,因为在当今信息世界中,多种多样的通讯方式和多种多样的付款方式是必然的,是数据库中必须与以记录。

图1.4 出库信息表

图1.5 入库信息表

入库信息表主要用于记录有关入库的详细信息,包括入库数量、入库日期以及图书、员工、供应商三方的编号,以便查询。

出库信息表主要用于记录有关出库的详细信息,包括出库数量、出库日期以及物品、员工的编号。

出库信息表和入库信息表一样,其实它们都属于联系类型,系统通过这两个表可以联接上其它的表为用户提供多种条件的联接查询。

值得提出的一点是入库记录和出库记录的添加不仅仅是单表操作,由于它们都与库存记录相联系,所以,无论您是添中入库记录还是添加出库记录,都必须同时修改库存记录,以保持数据的一致性,否则将引发系统出错而这些我都让其在系统中自动完成。

无论您是添加入库记录,还是添加出库记录,系统都将自动修改库存中图书的数量,而且,在您出库的数量大于库存数量时,系统还会自动提示错误,这样就可以防止一定错误的发生。

在入库信息表和出库信息表中我还定义了几个外键,它提供了一种表示几个关系联系的方法。

比如,系统中通过在入库信息表中定义的外键bookid、employeeid和shopkeeperid可以将库存信息表、员工信息表和供应商信息表联系在一起,从而方便地实现联接查询,而且,引入外键的定义是实体完整性约束的一个主要方面。

图1.6 密码信息表

密码信息表主要用于记录所有的用户名和用户密码。

它是在用户登陆时用来确定用户和密码的正确性,以防止非法用户登陆。

通过以上设计已经完成了系统的概要设计,当我们有了系统的功能模块图和数据库之后,就需要着手去实现每一个模块,为每一个功能设计程序流程图,这也就是系统的详细设计。

 

第四章  系统应用程序设计

4.1 系统窗体模块组成

 

对某个表进行查询(根据物品名称,出库日期和数量查询,也可根据别的信息)

对某个表进行信息的添加

对表中的数据进行修改,如改名字

对某个表进行报表设计

4.2 数据模块窗体的设置

在编写数据库应用程序时,经常要遇到这样的情况,即好多组件、窗体同时访问相同的数据源,如果为每一个组件或者窗体都设置一个数据源将是十分耗时的工件,而且要保证这些数据源的确是相同的也需花一番功夫。

那么,能不能将这些数据源集中管理,最好是做成一个统一的模块,需要时就将该模块引入而不必直接操作数据源本身呢?

数据模块(datamodule)是解决这个问题最好的答案。

4.3 主窗体功能模块的实现

file:

//主窗体程序代码

public     file:

//在程序的起始部分,定义快捷按钮点击事件

procedurepopup1handler(sender:

tobject);

procedurepopup2handler(sender:

tobject);

*********************************************************************

proceduretmainform.popup1handler(sender:

tobject);

begin      file:

//快捷按钮1(点“按出版社分类”按钮产生)的点击事件

withdatamoduleform.mainquerydo    

begin    file:

//打开数据模块窗体的mainquery,对bookrecord表进行操作

close;    file:

//关闭mainquery

sql.clear;     file:

//清除sql属性中的sql命令语句

sql.add('select*frombookrecordwherepublisher=:

pub');file:

//添加新的sql语句

parameters.parambyname('pub').value:

=(senderastmenuitem).caption;

open;     file:

//重新打开mainquery

end;

end;

*********************************************************************

proceduretmainform.speedbut

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2