欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    图书馆管理系统的设计与实现-论文.docx

    • 资源ID:10876063       资源大小:362.67KB        全文页数:64页
    • 资源格式: DOCX        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图书馆管理系统的设计与实现-论文.docx

    图书管理系统的设计与实现1摘 要本系统主要完成对图书仓库的库存管理,包括图书入库、出库、库存,员工信 息,供应商信息以及密码管理等六个方面。系统可以完成对各类信息的浏览、查 询、添加、删除、修改、报表等功能。系统的核心是入库、库存和出库三者之间的联系,每一个表的修改都将联动的 影响其它的表,当完成入库或出库操作时系统会自动地完成库存的修改。查询功 能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询 和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都 是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报 表打印功能。系统采用 Microsoft Office 中的 Access 2000 来设计数据库,并使用当前优 秀的开发工具Delphi 6.0 ,它有着最为灵活的数据库结构,对数据库应用有 着良好的支持。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说 明了系统设计的重点、设计思想、难点技术和解决方案。关键字: 数据库,SQL 语言,Delph 6,数据库组件,仓库管理2目录第一章 引言1.11.21.3课题来源 开发工具的选择 所做的主要工作 第二章数据库开发工具2.1 Delphi 6.0 简介 2.2 Delphi 6.0 控件 2.2.1 ADO 数据访问组件 2.2.22.2.3数据控制类 DataControl 数据访问类 DataAccess 2.2.4 SQL 语言在 Delphi 中的应用 第三章 系统总体设计3.1 系统需求分析 3.2 系统概要设计 3.2.13.2.2系统结构设计 数据库设计 3.2.2.1 ER 图设计 3.2.2.2数据库表格设计 3.3 系统详细设计 第四章 系统应用程序设计34.14.24.34.44.54.64.7系统窗体模块组成数据模块窗体设置主窗体功能模块的实现入库、出库窗体模块的实现查询功能的实现系统登陆窗体模块的实现用户管理功能的实现4.7.14.7.24.7.34.7.4用户管理主窗体 密码修改窗体模块的实现 用户注册窗体模块的实现 用户注销窗体模块的实现 结束语 致谢 参考文献4第一章引言1.1 课题来源随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计 算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的 显著提高,人们对生活质量及工作环境的要求也越来越高。书籍做为人类的精神 食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种 各样不同的选择。与此同时,为了管理大量的图书,图书仓库也大量的出现,仓 库的管理问题也就提上了日程。随着图书的大量增加,其管理难度也越来越大, 如何优化仓库的日常管理也就成为了一个大众化的课题。在计算机飞速发展的今天,将计算机这一信息处理利器应用于仓库的日常管理已 是势必所然,而且这也将为仓库管理带来前所未有的改变,它可以带来意想不到 的效益,同时也会为企业的飞速发展提供无限潜力。采用计算机管理信息系统已 成为仓库管理科学化和现代化的重要标志,它给企业管理来了明显的经济效益和 社会效益。主要体现在:极大提高了仓库工作人员的工作效率,大大减少了以往入出存流程繁琐,杂乱, 周期长的弊端。基于仓库管理的全面自动化,可以减少入库管理、出库管理及库存管理中的漏洞, 可以节约不少管理开支,增加企业收入。仓库的管理的操作自动化和信息的电子化,全面提高了仓库的管理水平。 随着我国改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在 激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,仓库管理的 全面自动化、信息化则是其中极其重要的部分。为了加快仓库管理自动化的步伐, 提高仓库的管理业务处理效率,建立仓库管理系统已变得十分心要。 入库、库存、出库还是现在企业图书仓库管理的常规基本模式,虽然,最近又出 现了很多新的管理模式,如:基于零库存思想的沃尔玛特管理方式,但这些新的 思想在中国大部分企业的管理中还是难以实现的。所以如何设计好仓库管理系 统,尽可能地减少仓库管理的重复性和低效性就成为当前最为重要的问题。图书 仓库管理的核心是入库、库存和出库之间的联系,如何处理好三者之间的关系是 系统最为关键的部分。另外,员工信息和供应商信息管理也是仓库管理中一个必 不可少的部分,它提供着与入库和出库相关的地一些信息,使得整个系统更加完 整,更加实用。通过对仓库管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织, 功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应 现今图书仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用 价值。1.2 开发工具的选择自 Java 诞生以来,随着 Internet 技术的普及和应用需求的变化,以第四代语言 为主的应用开发产品发生了较大的变化,它们不仅已成为人们开发应用的开发工 具,而且很多产品已发展成为一种强有力的应用开发环境。这些新型的开发工具 通常以一种集成软件包的形式提供给开发人员,被称为 Studio(工作室)或 Suite5(程序组)。例如,微软的 Visual Studio 6.0,Borland 公司的 Delphi 6.0 等数据库辅助开发工具。现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国 市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有: Microsoft 公司的 Visual Basic 6.0 版Microsoft 公司的 Visual C+6.0 版Borland 公司的 Delphi 6.0 版在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率; 有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点 和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可 分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需 要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反, 如果只强调程语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的 界面处理动作,也会严重地浪费程序设计师的宝贵时间。而 Delphi 是一个非常理想选择。Delphi 6 是操作系统中快速应用开发环境的最 新版本。它也是当前 Windows 平台上第一个全面支持最新 Web 服务的快速开发工 具。无论是企业级用户,还是个人开发者,都能够利用 Delphi 6 轻松、快捷地 构建新一代电子商务应用。Delphi 6 是惟一支持所有新出现的工业标准的 RAD 环境,包括 XML(扩展标记语言)/XSL(可扩展样式语言),SOAP(简单对象存 取协议)和 WSDL(Web 服务器描述语言)等。Delphi 6 是可视化的快速应用程序开发语言,它提供了可视化的集成开发环境, 这一环境为应用程序设计人员提供了一系列灵活而先进的工具,可以广泛地用于 种类应用程序设计。在 Delphi 6 的集成开发环境中,用户可以设计程序代码、 运行程序、进行程序错误的调试等,可视化的开发方法降低了应用程序开发的难 度。Delphi 的基础编程语言是具有面向对象特性的 Pascal 语言,即 Object Pascal 。Object Pascal 具有代码稳定、可读性好、编译速度快等优点,并将 面向对象的概念移植到了 Pascal 语言中,使这种基础语言有了新的发展空间。 使用 Delphi 6.0 ,我们几乎可以作任何事情,还可以撰写种各种类型的应用程 序,动态链接库(DLL)、CON、或 CORBA 对象,CGI/ISAPI 程序,Microsoft Back Office 应用程序。程序的规模小到简单的个人数据库应用,大到复杂的企业的 多层次分布式系统,都可以使用 Delphi 进行开发,其友好的集成开发界面,可 视化的双向开发模式,良好的数据库应用支持高效的程序开发和程序运行,备受 广大程序开发人员的好评。尤其是 Delphi 对数据库应用的强大支持,大大提高 了数据库应用软件开发的效率,缩短了开发周期,深受广大数据库应用程序设计 人员的喜爱。Delphi 为数据库应用开发人员提供了丰富的数据库开发组件,使 数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。 1.3 本文所做工作引言部分介绍了本系统的课题来源以及对数据库开发工具的选择。第二章介绍了数据库的发展,关系数据库,数据库体系结构,并系统介绍了 SQL 语言,为设计和理解应用程序做了铺垫。第三章系统介绍了 Delphi 6.0 及其部分控件,SQL 语言在 Delphi 6.0 中的应用, 以及 Access 等。6第四章是本文的主体,按照软件工程的要求,从需求分析开始,经过概要设计最 后到详细设计,完成对整个系统的设计。第五章根据第四章的设计结果利用 Access 2000 和 Delphi 6.0 进行了具体的窗 体和应用程序设计。总结部分介绍了设计体会和编程体会,并指出了系统设计中的不足和改进的方向第二章数据库开发工具2.1 Delphi 6.0 简介Delphi 类可以粗略地分成两部分:一部分是组件类,这些组件类通常以某种方 式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自 动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对 象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上 是找不到的。在 Delphi 中,每一个类的祖先都是 Tobject 类,整个类的层次结构 就像一棵倒挂的树,在最顶层的树根即为 Tobject 类。这样,按照面向对象编程 的基本思想,就使得用户可用 Tobject 类这个类型代替任何其它类的数据类型。 实际上在 Delphi 的类库中,Tobject 类派生出了为数相当众多的子类,它们形 成了一个庞大的体系,通常情况下,如果不自行开发组件,就不必了解整个类的 体系结构,只用到类层次树的叶结点就足够了。凡是做过程序开发的人都知道从来没有单纯的数据应用程序,也就是说,数据库 应用程序必须和用户界面(可以是图形界面,也可以是命令接口)元素相结合, 只讲界面或只讲数据库本身都构不成数据库应用程序,因而用 Delphi 6.0 开发 数据库应用程序就隐含着界面开发。Delphi6 中的 VCL 组件可用图 3-1 来说明。 组件在 Delphi 程序的开发中是最显眼的角色。大家知道,在编写程序时一般都 开始于在组件面板上选择组件并定义组件间的相互作用。但也有一些组件不在组 件面板上,例如 Tform 和 Tapplication(典型的非可视组件)。组件是 Tcomponents 派生出来的子类,可以流的形式存放在 DFM 文件中,具有事件和 Publish 属性。 窗口组件类是窗口化的可视化组件类,在 Delphi 的类库中占有最大的份额。在 实际编程中,窗口组件类的对象都有句柄,可以接受输入焦点和包含其它组件。 图形组件与窗口组件并列,是另一大类组件。图形组件不是基于窗口的,因而不 能有窗口句柄,不能接受输入焦点和包含其它组件。从图 8-43 中可以看出,图 形组件的基类是 TgraphicControl,在实际编程中,它们必须寄生于它们的宿主 窗口组件类的对象,由它们的拥有者负责其显示,而且它们还能触发一些和 鼠标活动相关的事件。图形控件最典型的例子是 Tlabel 和 TspeedButton。由此 可以看出图形组件的功能很弱,有读者会问图形组件的用处何在呢?其实使用图 形组件的最大好处在于节省资源,正是因为它们的功能较弱,所以使用的系统资 源就要少。在一个应用程序中,如果能在不影响其功能的前提下合理大量地使用 图形组件,将会大减少程序对系统资源的消耗。非可视组件是与可视组件相并列的另一类组件,非可视组件在程序运行中是不可 见的(除各种对话框组件之外,事实上有人认为对话框组件不能归入非可视组件, 应该是另一种介于可视与非可视之间的组件)。72.2 Delphi 6.0 控件用 Delphi6 开发数据库应用,重点是和各种数据库组件打交道,当然也要使用其 它的一些组件,现在就我在系统设计中所使用的重要组件给与简单介绍。2.2.1 ADO 数据访问组件ADO 数据对象(Active Data Objects) 实际是一种提供访问各种数据类型的链接 机制。ADO 设计为一种极简单的格式,通过 ODBC 的方法同数据库接口中,可以 使用任何一种 ODBC 数据源,即不止适合于 SQL Server、Oracle、Access 等数据 库应用程序,也适合于 Excel 表格、文本文件、图形文件和无格式的数据文件。 ADO 是基于 OLE-DB 之上的技术,因此 ADO 通过其内部的属性和方法提供统一的 数据访问接口方法。ADO 使您的客户端应用程序能够通过 OLE DB 提供访问和操 作在数据库服务器中的数据。ADO 支持用于建立 C/S 和 Web 的应用程序的主要功 能。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO 同 时具有远程数据服务(RDS)功能,通过 RDS 可以在一次往返过程中实现将数据从 服务器移动到客户端应用程序和 Web 页、在客户端对数据进行处然后将更新结果 返回服务器的操作。Delphi 6.0 继续对 Microsoft 的 ADO 访问能力的支持。这种能力是通过一组新 组件实现的,这些组件是在企业版的 ADO 组件页中,在组件面版的 ADO 页上可以 找到这些组件。利用在前面章节提到的 TdataSet 抽象类,ADO 组件可以不通过 BDE 而直接实现 ADO 连接。这意味着只需要很少的代码就可以实现该连接并且性 能得到提高。利用 ADO 数据访问组件,可以只使用 ADO 结构与数据库取得联系并对其中的数据 进行操作,而在这些过程中完全不需要使用 BDE。大多数的 ADO 连接和数据集组 件都是与基于 BDE 的连接和数据集组件相类似的。TADOConnection 组件与基于 BDE 的应用程序中的 Tdatabase 组件类似。TADOTable 与 Ttable,TADOQuery 与 Tquery,以及 TADOStoreProc 和 TstoredProc 之间都具有这种类似的对应关系。 使用这些 ADO 组件的方式与我们常使用的数据访问组件(基于 BDE)都有许多相 同之处。TTADODataSet 没有直接的 BDE 对应组件,但它提供了许多与 Ttable 和 Tquery 相同的功能。同样, TADOCommand 也没有相对应的 BDE 组件,它是在 Delphi/ADO 环境中完成特定功能的组件。Delphi 6.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。82.2.3 数据访问类 DataAccess数据库应用系统中数据访问是一个首要问题,包括单用户和 C/S 系统,都必须 联系一些数据库和数据表文件。Delphi 6 提供了专门用于数据访问的基类控件。 主要包括数据源控件 DataSource、客户数据集控件 ClientDataSet、数据集提供 器控件 DataSetProvider 等等。Tdatabase:当一个基于 BDE 的数据库应用程序需要一个永久数据库连接时,需 要定制向一个数据库服务器的连接时,需要事务控制和特殊的数据库别名时就得 用到 Tdatabase 对象。特别是当连接到一个远程的 SQL 数据库服务器时,如果要 利用 BDE 进行数据库事务处理,那么,TDatabase 对象的威力就体现出来了。在 一个应用程序中为每一个数据库连接显示的声明 Tdatabase 对象要根据需要而 定,不是必需的。对一个数据库连接,如果没有显示的声明并实例化 TDatabase 对象,系统就会产生一个带有默认属性的 TDatabase 对象。TdataSource 对象用于在 DataSet 对象(包括 Tquery,TstoredProc,Ttable 等) 和数据感知组件之间提供一个连接的纽带,以便在窗体上显示数据库中的数据, 在数据库中导航定位与编辑数据集中的数据。如果一个 DataSet 对象中的数据想 在数据感知组件中显示和修改,它就必须和 TdataSource 对象相联系。同样,一 个数据感知组件如 果 想和数 据 源相联 系 以便显示 和操纵 数据,就必 须以 TDataSource 对象为中介。用 Delphi6 作数据库应用开发概括来说如下:先利用数据存取组件和实际的数据 库建立连接,并用 Tsession 对象和 Tdatabase 对象管理这些连接。然后以 Tdatasource 对象为中介,用数据感知组件向用户显示数据库的内容并接受用户 的查询和修改等操作。2.2.4 SQL 语言在 Delphi 中的应用在 Delphi 中使用 SQL 语言非常方便,一般来说,都是通过 Tquery 组件来使用 SQL 语言的。可以在 TQuery 组件的 SQL 属性中设置 SQL 语句。设计程序时,在 该组件的属性对话框中选择 SQL 属性,单击带省略号的按钮,就可以打开 String List Editor 对话框,然后我们就可以在对话框中添加 SQL 语句。还可以使用 Delphi 的 SQL Builder 来自动生成 SQL 语句,这样可以避免手工编写 SQL 而可 能造成的语法错误。静态 SQL 语句在程序设计时便已固定下来,它不包含任何参数和变量。动态 SQL 语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参 数,例如下面的语句是一条动态 SQL 语句:Select * From Students Where StudentCode =: StudentCode;其中的变量 StudentCode 便是一个参数变量,它由一个冒号引导,在程序运行过 程中,必须要为该参数赋值,该条 SQL 语句才能正确执行,每次运行应用程序时 可以为该参数变量赋予不同的值。为参数赋值有三种方法:1 根据参数在 SQL 语句中出现的顺序,设置 TQuery 部件的 Params 属性值为参数 赋值。2 直接根据 SQL 语句中各参数的名字,调用 ParamByName 方法来为各参数赋值。 将 TQuery 部件的 DataSource 属性设置为另一个数据源,这样将另一个数据源9中与当前 TQuery 部件的 SQL 语句中的参数名相匹配的字段值赋给其对应的参数。 利用这种方法也能实现所谓的连接查询,创建主要明细型数据库应用。 在程序运行过程中,要想设置 TQuery 部件的 SQL 属性,必须首先调用 Close 方 法,关闭 TQuery 部件,然后再调用 Clear 方法清除 SQL 属性中现存的 SQL 命令 语句, 最后再调用 Add 方法为 SQL 属性设置新的 SQL 命令语句。例如: Query1.Close 关闭 Query1)Query1.SQL.Clear 清除 SQL 属性中的 SQL 命令语句Query1.SQL.Add(Select * From Students);Query1.SQL.Add( Where Name ="Lucy" );在为 TQuery 部件设置 SQL 属性时调用 Close 方法总是很安全的,如果 TQuery 部件已经被关闭了,调用 Close 方法时不会产生任何影响。在应用程序中为 SQL 属性设置新的 SQL 命令语句时,必须要调用 Clear 方法以清除 SQL 属性中现存 的 SQL 命令语句,如果不调用 Clear 方法,便调用 Add 方法向 SQL 属性中设置 SQL 命令语句,那么新设置的 SQL 命令语句会追加在现存 SQL 命令语句后面, 在 程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。在这里要特别注意的,一般情况下 TQuery 部件的 SQL 属性只能包含一条完整的 SQL 语句,它不允许被设置成多条 SQL 语句。当然有些数据库服务器也支持在 TQuery 部件的 SQL 属性中设置多条 SQL 语句,只要数据库服务器允许这样,我 们在编程时可以为 SQL 属性设置多条 SQL 语句。在为 TQuery 部件设置完 SQL 属性的属性值之后,也即编写好适当的 SQL 程序之 后,可以有多种方式来执行 SQL 程序。在设计过程中,设置完 TQuery 部件的 SQL 属性之后将其 Active 属性的值置为 True, 这样便可以执行 SQL 属性中的 SQL 程序,如果应用中有与 TQuery 部件相 连的数据浏览部件( 如 TDDGrid TDBEdit 等)那么在这些数据浏览部件中会显示 SQL 程序的执行结果。在应用程序运行过程中,通过程序调用 TQuery 部件的 Open 方法或 ExecSQL 方 法可以执行其 SQL 属性中的 SQL 程序。Open 方法和 ExecSQL 方法是不一样的。 Open 方法只能用来执行 SQL 语言的查询语句(Select 命令), 并返回一个查询结 果集,而 ExecSQL 方法还可以用来执行其它常用的 SQL 语句(如 INSERT, UPDATE, DELETE 等命令),例如:Query1.Open (这样会返回一个查询结果集)如果调用 Open 方法,而没有查询结果时,会出错。此时应该调用 ExecSQL 方法 来代替 Open 方法。如:Query1.ExecSQL (没有返回结果)当然在设计应用程序时,程序设计人员是无法确定 TQuery 部件中的 SQL 语句是 否会返回一个查询结果的。对于这种情况应当用 TryExcept 模块来设计程序。 在 Try 部分调用 Open 方法,而在 Except 部分调用 ExceSQL 方法,这样才能保 证程序的正确运行。Delphi 中用 ADOQuery 来使用 SQL 语句同样十分方便。在 ADOQuery 组件中首先 通过 ConnectionString 属性值来联接数据源,然后就通过双击 SQL属性值来 写入 SQL 语句。在 Delphi 中调用数据库,就可以调用 ADOQuery 组件,通过修改 其中的 SQL属性中的 SQL 语句来实现对数据库的各项操作。10值得注意的是, ADOQuery 组件只有在激活的情况下才可以被正确地使用,这样 就提出了一个问题,也就是说,在每次修改 ADOQuery 组件的 SQL属性时都必 须先行进行关闭,待清除掉 SQL中所有的 SQL 语句后才可以添加新的 SQL 语句。 而且,在每一次修改完成以后,还应该记得重新将 ADOQuery 激活。其它的使用 方法与 TTQuery 有许多的相似之处。第三章系统总体设计软件系统的总体设计大约要经历可行性分析和项目开发计划,需求分析,概要设 计,详细设计,编码,测试以及维护等七个阶段。可行性分析和项目开发计划在 前面已经叙述,下面所要做的是进行软件需求分析,概要设计和详细设计。编码 过程将在下一节论述,而测试和维护过程不在本文叙及。3.1 系统需求分析在经过前一阶段的分析之后,我确定了我的开发课题为图书仓库管理。现在所要 做的是要准确定义系统必须做什么以及系统必须具备的功能。软件需求分析中我采用结构化分析方法( Structured Analysis,简称 SA),SA 是面向数据流进行需求分析的方法,像所有的软件分析方法(如面向对象分析方 法、IDEF 方法等等)一样,SA 也是一种建模活动,它使用简单易读的符号,根 据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘满足功能要求的软 件模型。在系统中我采用数据流图( DFD)这种半形式化的描述方式表达需求。它是一种 功能模型,以图形的方式描绘数据在系统中流动和处理的过程,只反映系统必须 完成的逻辑功能。它有四种基本图形符号: :箭头,表示数据流; :圆或椭圆,表示加工; :双杠,表示数据存储; :方框,表示数据的源点或终点。为了表达较为复杂问题的数据处理过程,用一张数据流图是不够的,要按照问题 的层次结构进行逐步分解,并以一套分层的数据流图反映这种结构关系。在这里 我一共使用了三层数据流图,即顶层图,0 层图和 1 层图(也是底层图)。 在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统,它的输入流 是该系统的输入数据了,输出流是该系统的输出数据;底层流图是指其加工不需 要再做分解的数据流图,中间层流图表示对其上层父图的细化,它的每一步加工 可能继续细化成子图。经过对系统的分析首先得到系统的顶层 DFD,如下:一步细化得到系统的 0 层 DFD,如下:再进一步细化每一个数据加工功能,得到系统的 1 层 DFD 图。在这里只给出有关入库管理和出库管理的 1 层数据流图,它们是系统的关鍵部11分,也是主要的部分。通过以上对数据流图的分析之后,我们已大体地了解了系 统的功能和目标,接下来所要做的就是系统功能模块的划分和数据库的设计,也 就是系统的概要设计。3.2 系统概要设计在软件需求分析阶段,搞清楚了软件“做什么”的问题,形成了目标系统的逻辑 模型。现在我们所要做的就是要把软件“做什么”的逻辑模型变换为“怎么做” 的物理模型,即着手实现软件的需求。首先,我们需要描述的是系统的总的体系 结构。3.2.1 系统结构设计系统的概要设计中最重要的就是系统的模块化。模块化是指解决一个复杂问题时 自项向下逐层把软件系统划分成若干个模块的过程。每个模块完成一个特定的功 能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功 能。将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性, 但模块的划分不能是任意的,应尽量保持其独立性。也就是说,每个模块只完成 系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到 高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 在系统的概要设计中我采用结构化设计(Structure Design,简称 SD),SD 以 需求分析阶段产生的数据流图 DFD 为基础,按一定的步骤映射成软件结构。我首 先将整个系统化分为几个小问题,小模块,在系统中,我设计了用户管理、库存 管理、入库管理、出库管理、员工管理和供应商管理6 个小模块。然后,进一步 细分模块,添加细节。比如,用户管理我又将其分为用户注册、用户注销、密码 修改;库存管理分为库存记录查询、库存记录修改、库存记录打印等等。 以下就是系统的结构图:(在这里为了表达方便我将结构图分开来表达。)在得到系统的第一层功能模块图后,经过进一步地细化,得一系统的子 功能模块图:3.2.2 数据库设计在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观 世界,信息的这一循环经历了三个领域:信息世界,数据世界,现实世界。现实 世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、 命名、分类等)进入信息世界。这些信息再进一步加工、编码,然后进数据世界, 而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需 要的数据,以及如何对这些数据进行操作。这两个问题贯穿了整个软件系统的开 发过程,这也就是数据库的设计问题,软件设计的一个核心。123.2.2.1 ER 图设计在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以 对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于 计算机系统的“概念数据模型”,如“实体联系模型”;另一种是直接面向数据 库逻辑结构的“结构数据模型”。在本系统中我采用“实体联系模型”(ER 模 型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER 模型直接 从现实世界抽象出实体类型及实体间联系,然后用 ER 图来表示数据模型。它有 两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。 但 ER 模型只能说明实体间语义的联系,不能进一步说明详细的数据结构,它只 是数据库设计的第一步。ER 图是直观表示概念模型的工具,它有四个基本成分: 矩形框,表示实体类型(考虑问题的对象)。 菱形框,表示联系类型(实体间的联系)。 椭圆形框,表示实体类型和联系类型的属性。对于关键码的属性,在属性名 下划一横线。直线,联系类型与其涉及的实体类型之间以直线连接。本系统为图书仓库管理,主要管理图书的入库、出库以及库存等事项。仓库根据 需要可以查询图书供应商的信息,同时还需要了解在入库和出库中员工的参与情 况。依据仓库管理的实际情况,考虑了多方面的因素以后,确定系统的 ER 图如 下:(为了表达的方便,在这里我没有在一张图上表达出所有的关系,而是用一张总 体 ER 图,和几张实体属性关系图来表达数据库的结构。)在该数据库中,我设计了三个实体,分别是库存、员工和供应商以及两个联系类 型入库和出库。在本系统中库存是核心,也是基本,没有了库存其它的也就没有 什么意义了。员工记录的添加是考虑到责任问题,也就是说,在仓库管理的实际 运用中,出现了责任不清的现象,特别是由于仓库的进出图书数量都比较大时产 生了一系列问题,所以在设计数据库时,我特别考虑到这一点,加入了员工记录 这一实体。供应商信息的添加主要出于对图书来源问题的思考。通过添加供应商 信息可以比较清楚地了解图书的进货渠道,从图书的质量到供应商的信誉都可以 进行了解,同时可以为以后的图书进购提供一定有用的信息。入库联系类型将库存信息、供应商信息和员工信息联系在一起,可以方便地实现 三个实体之间的联接,而出库联系类型则将库存信息和员工信息较好地联接起, 同时这两个联系类型又都具有各自特有的属性。下面就是各实体及联系类型的属性图:(带#号的属性为关键字段)4.2.2.2 数 据库表格设计在完成系统的 ER 图之后,需要将 ER 模型转化为关系模型,也就是说,要设计出 数据库所需要的表格。在这里,我选用的是关系数据库。因为关系数据库中的二 维表格可以很清楚地描述数据之间的联系。在这里不得不提到一个概念范式。其实在上一节的 ER 图设计中,已经运用 了范式的思想,不仅如此,在数据库的表格设计中更离不开范式的思想,它是数 据库设计的基础,如果不注意这个问题将会导致一系列问题的出现。我在系统中定义的表格都严格地按照范式的思想和要求去完成,数据库中的所有13表格都达到了三范式的要求。根据系统 ER 图,针对本系统的特点,在对所搜集 的数据进行规范化之后,定义了如下六张表格,分别是库存信息表,入库信息表, 出库信息表,员工信息表,供应商信息表和密码信息表。通过对这六张表格的操 作可以较好地完成系统设计的各项功能,六张表格之间有着不同程度的联系。(说 明:在以下数据表中,K 代表主键,#代表外键,字段值不为空。) BookRecord 表(库存信息表)字段名称 数据类型 说明K BookID 数字 图书编号BookName 文本 图书名Author 文本 作者Publisher 文本 出版社PubDate 日期/时间 出版日期Price 货币 价格BookType 文本 图书类型Number1 数字 库存数量Addation 文本 备注图 3.13 库存信息表库存信息表主要用于记录仓库中现存放的所有图书的详细信息,包括图书编号、 书名、作者、出版社、图书类型等有关图书的各类信息,它即是该数据库的主表, 也是系统主界面的主要内容。在该表中图书编号是主键,它按图书入库的先后次序来编写,每当有图书入库, 系统自动给出图书编号,这样我们按图书编号来查找图书是比较方便的。考虑到 编号比较难于记忆,所以使用了出版社和图书类型两个字段,在系统中我提供了 出版社和图书类型的分类查找,而且全部采用自动生成,每当系统中有新的出版 社类型和图书类型,弹出菜单会自动添中新类型,这样就可以比较方便地实现按 出版社和按图书类型查找。此外,库存数量也是一个比较关键的字段,该字段是 在系统初始化时就给定的,每当有图书入库或出库操作,系统就会自动修改图书 的库存数量,以保持数据的一致性。做为备注有一点说明,我的数据库中备注的 数据类型是文本,而不是备注类型,主要考虑到该字段的长度并不大,而且在 Delphi 中文本数据类型的处理也比较方便一点。

    注意事项

    本文(图书馆管理系统的设计与实现-论文.docx)为本站会员(啊飒飒)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开