C++图书管理系统

上传人:仙*** 文档编号:30180134 上传时间:2021-10-09 格式:DOC 页数:42 大小:590KB
返回 下载 相关 举报
C++图书管理系统_第1页
第1页 / 共42页
C++图书管理系统_第2页
第2页 / 共42页
C++图书管理系统_第3页
第3页 / 共42页
点击查看更多>>
资源描述
成都理工大学工程技术学院毕业论文C+图书管理系统作者姓名:江孝涛专业名称:计算机科学与技术指导教师:柳 军 讲师C+图书管理系统摘要本系统采用基于网络的C/S模式将软件分成客户端(前台)和服务器端(后台)。前台与后台服务器进行互动,前台通过网络向服务器发送数据请求,并处理服务器的回应数据,将数据直观的显示给用户,前台程序主要运用的C+ Qt中的界面控件,后台主要是接收用户的请求,做出相应的回应,并进行数据存储和数据处理,后台使用MySQL数据库存储数据,需要建立起数据一致性和完整性强、数据安全性好的库。本系统能对图书实行分类管理,并能按客户端登录用户实行三级权限管理:读者、图书管理员和操作员。本系统分用户登录、图书查询、借还图书,系统管理和日志系统等五大功能模块。其中图书查询功能分为模糊查询、直接查询、多条件查询;系统管理则包括读者管理、图书分类管理、图书管理、逾期未还图书管理、管理员权限帐户管理等。其中多条件查询、模糊查询,图书分类管理,同步,实时性,多文档视图是本系统的难点。关键词 :多文档视图 Qt C+ C/S MySQLAbstractThe system uses the network of based on C / S mode into the software client (front) and server-side (background). Foreground and background server interaction, reception through the network to the server to send data requests and processing server response data, the data visually displayed to the user, the foreground program main use of C+ Qt in the interface controls, background is mainly to receive the users request make the appropriate response, and for data storage and processing, using MySQL databases to store data back-need to establish strong data consistency and integrity, data security, a good library. The system can implement classification of management books and according to a three-level client login user rights management: Readers, librarians, and operators. The system points the user login, check books, circulation, system management and logging system, the five major functional blocks. Book search function which is divided into fuzzy queries, direct query, multiple query conditions; system management include the reader management, books classification management, library management, overdue library management, account management and other administrative privileges. One more query terms, fuzzy query, library classification management, synchronization, real-time, multi-document view is the difficulty of this system.Keywords: Multi-document,Qt,C+,C/S,MySQ- IV -目录摘要IAbstractII目录III前言11 绪论21.1 系统开发背景21.2 设计目标21.3 系统设计原则32 系统开发工具及相应技术简介42.1 Qt简介42.2 常用开发技术比较42.2.1 ODBC42.2.2 DB252.2.3 MySQL52.3 客户机/服务器结构(C/S)、多线程62.3.1 C/S模式运用62.3.2 服务器多线程编程72.4 使用MySQL数据库82.4.1 Qt数据库连接类82.4.2 数据库连接82.4.3 查询记录92.5 系统运行环境92.5.1 服务器软硬件要求92.5.2 客户端软硬件要求93 需求分析103.1 功能需求103.2 功能介绍114 系统设计144.1 系统总体设计144.1.1 数据库简介144.1.2 数据库技术164.1.3 SQL语言基础184.2 数据库实现原理194.2.1 存储过程(stored procedue)194.2.2 触发器194.2.3 游标204.3 定义系统表的结构214.4 定义所需结构体245 系统实现285.1 登录子系统285.2 查询子系统295.3 借还子系统295.3.1 借书模块305.3.2 还书模块305.4 管理子系统315.4.1 图书管理模块325.4.2 日志管理模块33结语35致谢36参考文献37前言随着揉社会的发展,揉对知识的需求也不断地增长。在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置,如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的发展,因此,开发一套完善的图书馆管理系统就成不可少了。图书馆在正常运营中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。随着社会的日益发展,尤其是科技的迅猛发展,使得我国各项事业得到了前所未有的突破,不仅提高了工作效率,而且也降低了劳动强度,美化了工作环境。随着计算机广泛地应用在科学技术领域的各个方面,并逐渐进入家庭,成为人们生活中必不可少的一部分。作为计算机应用的一部分,使用计算机对产品库存信息进行管理,具有着人工管理无法比拟的优点,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,可减少更多的人力物力,这些都能够极大地提高货品库存的管理效率,也是图书信息的管理科学化、正规化的重要条件。因此,开发一个图书信息的管理系统是很有必要的,具有其特有的技术意义和管理意义,为了适应读者对图书的需求,同时又大大减轻图书馆工作人员的工作量,全面提高图书馆的管理效率及服务质量,以此为目的用C+开发了本图书管理系统。1 绪论1.1 系统开发背景目前,在高校系部图书管理中,师生查找图书都是采用传统的查询方法,让读者在图书分类架上一本本地去查找,这样不仅很难找到自己所需要的图书,而且费时费力。而图书管理员在办理借书登记、查询读者借书记录时,管理人员必须在借书记录上一个个去查找,而要找到借书记录并删除该记录是件很麻烦的事情。每当新书入库时,图书管理员既要填写新书入库卡片,又要填写新书入库帐目,不仅工作量大,而且,在新书入库后要经历较长的时间方能借出。另外,有的系部因图书数量有限,必须对图书实行限量借阅,因此,要实施弹性借书方法是件很困难的事。为提高图书查询效率,减少系部图书管理员的工作负担,有必要开发一个小型图书管理软件来对系部图书实施有效管理。该系统必须具备以下功能:(1) 能对各类图书实行分类管理;(2) 提供必要的读者信息;(3) 能进行各种高级查询(如未还书目的查询,已还书目的查询等);(4) 具有图书检索功能;(5) 能管理登录系统的图书管理员等这样不仅能较好地帮助读者在最短的时间内找到自己所需要的图书书目、编号,而且能让图书管理员以最高的效率办理借阅手续;(6) 读者能够对当前图书馆的书籍进行实时的查询;1.2 设计目标针对以上情况,决定组建一个基于客户机/服务器(C/S模式)结构的图书管理系统,读者用户能够对当前图书馆书籍的情况进行实时的查询,对登录后的用户实行权限管理。在系统启动后,读者能在客户端根据自已的需要查询图书,而图书管理员能在服务器端根据读者提供的身份信息及图书编号办理借书或还书手续,通过自动查询功能判断读者是否还能借书。如果读者借书数量没有超过规定的数量,没有逾期未还图书情况,则可继续办理借书手续,否则不予办理。另外,图书管理员能根据需要通过该系统的服务端自行修改图书信息,增加或删除图书书目等。该系统设有管理员用户,当管理员以此用户级别登录服务器时,该用户有着最大的权限,能通过管理界面设置图书借阅期限、查询逾期未还图书信息和读者信息,并能有效地管理图书分类、读者信息及图书管理员的登录帐目等。1.3 系统设计原则(1) 实用性原则适合于中小型图书馆及高校系部图书管理,用户界面友好,操作使用方便,具有高效的数据处理能力。(2) 先进性原则采用目前先进的计算机软硬件技术,使系统具有较高的技术水平和较长的生命周期,便于系统的升级和维护。(3) 开放性,安全性,可靠性及可扩展性原则(4) 兼容性原则对于所选软硬件系统及平台,能很好地适应开发和使用的需要。(5) 规范性原则软件设计过程严格按照“软件工程”的规定,系统编码、文档、操作系统平台以及开发方法采用相应的国际标准、国家标准和行业标准。2 系统开发工具及相应技术简介2.1 Qt简介这个系统前台所用的开发工具是Eclipse,开发环境是Qt,Qt 是一个跨平台的 C+ 图形用户界面库,由挪威 TrollTech 公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Linguist 等部分 Qt 支持所有 Unix 系统,当然也包括 Linux,还支持 WinNT/Win2k,Win95/98 平台。Trolltech 公司在 1994 年成立,但是在 1992 年,成立 Trolltech 公司的那批程序员 就已经开始设计 Qt 了,Qt 的第一个商业版本于 1995 年推出然后 Qt 的发展就很快了。2.2 常用开发技术比较Qt提供了许多数据库访问的接口,主要包括ODBC、DB2和MYSQL等等。这些技术在访问数据库时无论是易用程度还是运行性能上都是各有千秋,其情况如下:2.2.1 ODBCODBC是为客户应用程序访问关系数据库时提供的一个标准的接口,对于不同的数据,ODBC提供了统一的API,使应用程序可以诮所提供的API来访问任何提供了ODBC驱动程序的数据库。而且,ODBC已经成为一种标准,所以,目前几乎所有的关系数据库都提供了了ODBC驱动程序,这使ODBC的应用十分广泛,基本上可有于所有的关系数据库。其优点是,ODBC API可能使客户应用程序能够从从底层设置和控制数据库,完成一些高层数据库技术无法完的事,但是其不足之处是要编写大量的代码,增加了程序的编制的难度。2.2.2 DB2DB2 是一种关系数据库管理系统(RDBMS),是 Information Management 产品系列的一部分。DB2 被认为是第一种使用 SQL(一种为 RDBMS 提供接口的语言)的数据库产品。DB2 于 1982 年首次发布,现在已经可以用在许多操作系统平台上,包括 Linux、UNIX 和 Windows。DB2 有不同的版本,可以满足不同的需求:1. DB2 Everyplace 为移动用户提供一个内存占用小且性能出色的 DB2 版本。 2. DB2 for z/OS 为主机系统提供 DB2 的所有特性。 3. DB2 for Linux, UNIX and Windows 提供几种风格。(1) Enterprise Server Edition(ESE)是一种具有客户机/服务器设置的完整的 RDBMS。DB2 ESE 适用于中型和大型企业。(2) Workgroup Server Edition(WSE)主要适用于小型和中型企业,它提供除大型机连接之外的所有 DB2 ESE 特性。(3) Personal Edition 为个人计算机提供一个单用户的部署。(4) 数据库可以存储任何类型的信息,无论是关系数据(比如职员的姓名和地址),还是二进制数据(比如他们的身份证照片)。DB2 现在还支持 pureXML,可以轻松地存储和检索 XML 数据。可以使用实用程序装载和维护数据,还可以使用查询检索您感兴趣的信息。可以使用本教程中描述的一些工具控制数据的完整性。2.2.3 MySQLMySQL名字的来历MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。MySQL是开源的,开源意味着任何人都可以使用和修改该软件,任何人都可以从Internet上下载和使用MySQL而不需要支付任何费用。如果你愿意,你可以研究其源代码,并根据你的需要修改它。MySQL使用GPL(GNU General Public License,通用公共许可),在http:/www.fsf.org/licenses中定义了你在不同的场合对软件可以或不可以做什么。如果你觉得GPL不爽或者想把MySQL的源代码集成到一个商业应用中去,你可以向MySQL AB购买一个商业许可版本,MySQL服务器是一个快的、可靠的和易于使用的数据库服务器。2.3 客户机/服务器结构(C/S)、多线程2.3.1 C/S模式运用二层的C/S结构是指以单一的服务器和局域网为核心,能通过客户端与用户进行直接对话。主要有二大功能:一是它用于检查用户从键盘等输入的数据,显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户接口(GUI),操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他。检查的内容也只限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。另一个是确认用户对应用和数据库存取权限的功能以及记录系统处理日志。典型的C/S结构有以下特点:(1) 服务器负责数据管理及程序处理(2) 客户机负责界面描述和界面显示(3) 客户机向服务器提出处理要求(4) 服务器响应将处理结果返回客户机(5) 使网络数据流量最少近几年,客户机/服务器体系日益成熟而且应用越来越广泛,许多图书馆管理系统都用这种结构进行设计。2.3.2 服务器多线程编程什么是多线和为什么要应用多线程编程?进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,所谓私有,就是线程在有自己局部变量,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。这一点在多线程编程时应该注意。多线程在构建大型系统的时候是需要重点关注的一个重要方面,特别是在效率(系统跑得多快?)和性能(系统工作正常?)之间做一个权衡的时候。恰当的使用多线程可以极大的提高系统性能,当有多个客户端程序同时连接到服务器端的时候,用户不希望等待其他用户完成操作之后才享有CPU时间,因为这样的C/S模式的管理系统将会变得毫无意义,为了满足每一位用户都能够感觉到自己是独占服务器CPU时间的,所以在该图书管理系统中有必要也必须应用到多线程编程,正因为多线程的并发行,使其处理客户端的请求能够达到同步的效果。因为多线程共享全局变量,所以在进行多线程编程的时候要特别注意,当访问全局数据的时候要用互斥锁锁住该变量,当当前线程使用完该变量的时候应当将其解锁,一边其它线程有机会访问该变量,以免造成死锁的情况发生。2.4 使用MySQL数据库因为本系统主要用到MySQL数据库编程,所以详细的介绍其使用方法。2.4.1 Qt数据库连接类QsqlDatabase类是主要用于连接数据的类,该类封装了连接各种数据的方法,在编译并安装好Qt相应的数据库驱动之后,只需要简单的指定数据库名字就能够与相应的数据库建立连接,而应用程序就能够通过该连接句柄与数据库进行良好的互动。QSqlQuery类是主要用于数据库操作,包括执行相应的SQL语句,获取数据库中的相应数据。2.4.2 数据库连接在程序中定义QSqlDatabase db成员变量通过该变量可以获取数据库连接句柄,db = QSqlDatabase:addDatabase(QMYSQL);/由于我们使用的MySQL数据库,所以这里指定的数据库名字是QMYSQL。db.setDatabaseName(database);db.setHostName(localhost);db.setUserName(username);db.setPassword(password);if (!db.open()QMessageBox:critical(0,QObject:tr(DatabaseError),db.lastError().text();return false;2.4.3 查询记录查询记录使用QSqlQuery:exec(Qstring &)成员函数来执行SQL语句,一旦查询到数据库中有相关的记录,就可以通过QSqlQuery:isSelect() & QSqlQuery:next()来一条一条获取查询的结果, QSqlQuery:value(int column)获取一行中指定列的记录。2.5 系统运行环境2.5.1 服务器软硬件要求软件:Windows XP MySQLTCP/IP协议硬件:CPU:P 内存:256M 硬盘:4G以上2.5.2 客户端软硬件要求软件:Windows 95/98/ME/2000/XP/WIN7TCP/IP协议硬件:CPU:486/586以及更高档的PC 内存:最少64M 硬盘:500M以上3 需求分析如同任何生物一样,软件也有一个诞生、成长、衰亡的生存过程。我们称为软件的生存期。根据这一思想,可以得到软件生存期六个步骤,即制定计划、需求分析、软件设计、程序编码、测试及运行维护。软件需求分析工作是软件生存期中重要一步,也是决定性一步。只有通过需求分析才能把软件功能和性能的总体要领描述为具体的软件需求规程说明,从而奠定软件开发的基础。需求分析系统设计系统编码系统测试系统功能图功能分析框架分析系统功能系统界面画出功能图测试系统的所有功能,达到预期效果图3.1 系统整体设计流程图3.1 功能需求根据自己调查图书馆的业务情况,从实际应用的角度出发,确定为用户提供和实现以下功能:(1) 登录功能(2) 读者:主要提供直接查询(包括模糊查询)和多条件分类查询功能。(3) 操作员:主要提供借书,还书,图书管理。(4) 管理员:主要提供图书管理员登录数据库管理,图书类管理,读者管理逾期未还图书的信息管理。(5) 联机帮助功能:能帮助用户在最短的时间使用本系统。3.2 功能介绍图3.2列出了这个系统各功能之间的关系图书管图系统系统管理数据管理借还系统帮助用户登录添加用户删除用户用户注销退出系统书籍管理用户管理读者管理日志管理修改密码借出图书归还图书续借图书帮助文档关于查询统计查询用户图书查询借出记录借阅统计逾期记录修改资料图3.2 系统功能图(1) 用户登录只有已注册用户才能登陆系统,为了满足不同用的需求级别,用户包括三种权限,系统管理员、操作员、读者,不同权限的用户,其所能执行的操作不相同,下面是用户的相关权限。读者:登陆、注销、退出、查询与统计、修改密码、帮助。操作员:登陆、注销、退出、书籍借出与归还、修改密码、帮助。管理员:所有操作。(2) 用户管理对用户的相关操作,例如:添加新用户、删除用户、查询用户、修改用户资料。添加新用户:可以添加学生用户、教师管理员、系统管理员。查询用户:获得用户的相关资料。修改用户:修改用户的注册信息及其相关,需要输入要作修改的用户的ID及其姓名,防止误该。(3) 修改密码任何用户都可以修改自己的登陆密码,用户需要输入旧的密码,新密码需要输入两次,保证其安全性。(4) 注销用户用户切换时必须进行注销,否则警告用户已经登录。(5) 正常退出系统(6) 添加图书当有新书入库的时候,需要将该书的相关资料加入到数据库中,教师管理员和系统管理员都有执行该操作的权限。(7) 删除图书当学生报告书籍遗失或者很长时间未被归还,视作该书籍已经不存在,需要删除其在数据库中的相关记录。(8) 更新图书如果发现书籍的相关信息有误,需要对该信息进行修改,重新存入数据库中,便于在书记查找的时候获得的是该书的正确信息。(9) 借出图书当有用户要借书的时候,需要用户提供书籍相关信息,管理员根据用户提供的信息,搜索相关书籍,如果该书存在,可以进行借出操作,如果不存在,就给出相关的提示,每位用户所能借阅的图书同时不能超过4本,默认借出最大天数为30天。(10) 归还图书(11) 续借图书用户在规定的期限内,没有看完书籍,需要进行续借操作,续借的天数不能超过30,否则算作逾期。(12) 查询与统计查询库存的图书:获取未借出的图书记录。借出记录:获得借出的图书记录,及其相关信息,波形图可以直观的显示一段时间内借出图书的数量,当鼠标移动到波形线上的时候,得到该段时间内借出图书的详细信息,如:借阅者、书名、借出时间、是否逾期等等;表格形式则一表格的形式详细的显示图书名、借阅者、借出时间、是否逾期,如果没有预期则显示借出的天数,如果逾期需要突出的显示出来并显示预期作为提示。读者借阅统计:获得所有用户现有的图书数量,将鼠标移动到该数字上显示所有借得的图书的名字。逾期借阅:获得逾期借阅的图书的相关信息,借阅者,具体借阅时间,超过的天数。(13) 逾期借阅记录获得借阅超时的所有书籍,显示借阅者姓名,用户ID,书名,超时天数。4 系统设计4.1 系统总体设计系统设计又称系统物理设计。系统设计要根据系统分析报告中的系统逻辑模型综合考虑各种约束,利用一切可利用的技术手段和方法进行各种具体设计,确定新系统的实施方案,解决“系统怎么做”的问题。结构化系统设计是指利用一组标准的图表工具和准则,确定系统有哪些模块,用什么方法连接,如何构成良好的系统结构,并进行系统输入、输出、数据处理、数据存储等环节的详细设计。这一阶段的重点是设计好系统的总体结构,选择最经济合理的技术手段。在软件需求分析阶段,已搞清了软件“做什么” 的问题,并描述出了系统的逻辑模型。在系统设计阶段,主要要解决软件“怎么做”的问题,所以需要描述软件的总的体系结构既系统总体结构。本系统是一个图书管理系统,那么它具备用户登录:读者图书查询:管理员借还书,增加书:图书超级管理员管理系统信息四大基本功能,从这个基本功能出发,确定了本系统应包含五个大模块,即:登录模块,查询模块,借还书模块,系统管理模块,日志管理模块。4.1.1 数据库简介计算机的数据处理应用,首先要把大量的信息以数据形式存放君存储器中。存储器的容量、存储速率直接影响到数据管理技术的发展。1956年生产的第一台计算机磁盘容量仅为5M字节,而现在已达10000M字节。目前光盘已经广泛使用,容量已达数百G字节。存储器的发展,为数据库技术提供了良好的物质基础。使用计算机以后,数据处理的速度和规模,无论是相对于手工方式,还是机械方式,都是无可比拟的在数据处理中,通常计算是比较简单的而数据的管理比较复杂。数据管理是指数据的收集、整理、组织、存储、维护、检索、传送等操作,这部分操作是数据处理业务的基本环节,而且是任何数据处理业务中必不可少的共有部分。数据管理技术的优劣,将直接影响数据处理的效率。数据管理技术的发展,与硬件(主要是外存)、软件、计算机应用的范围有密切的联系。数据管理技术的发展经过三个阶段:人工管理阶段、文件系统阶段和数据库阶段。从文件系统发展到数据库系统是信息处理领域的一个重大变化。在文件系统阶段,人们关注的中心问题是系统功能的设计,因而程序设计处于主导地位,数据只起着服从程序需要的作用。在数据库方式下,信息处理观念已为新体系所取代,数据占据了中心位置。数据结构的设计成为信息系统首先关心的问题,而利用这些数据的应用程序设计则退居到以既定的数据结构为基础的外围地位。数据库技术还在不断的发展,并且不断地与其它计算机技术相互渗透。数据库技术与网络通信技术相结合,产生了分布式数据库系统。数据库技术与面向对象技术相结合,产生了面向对象数据库系统。在数据库技术中有四个名词:(1) 数据库(database,DB):DB是统一管理的相关数据的集合。DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。(2) 数据库管理系统(Database Management System,DBMS):DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型和面向对象型DBMS。(3) 数据库系统(Database System,DBS):DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。(4) 数据库技术:这是一门研究数据库的结构、存储、管理和使用的软件学科。数据库技术是操作系统的文件系统基础上发展起来的。而DBMS本身要在操作系统的支持下才能工作。数据库不仅用到数据结构的知识,而且丰富了数据结构的内容。在关系数据库中要用到集合论、数理逻辑的理论。因此,数据库技术是一门综合性较强的学科。4.1.2 数据库技术从20世纪50年代中期开始,计算机的应用由科学研究部门逐步扩展到企业、行政部门。至60年代,数据处理成为计算机的主要应用。数据库技术作为数据管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现已形成相当规模的理论体系和实用技术。模型是对现实世界的抽象。在数据库技术中,我们用模型的概念描述数据库的结构与语义,对现实世界进行抽象,表示实体类型及实体间联系的模型称为“数据模型”。目前广泛作用的数据模型可分为两种类型。一种是独立于计算机系统的模型,完全不涉及信息在系统中的表示,只是用来描述某个特定组织所关心的信息结构,这类模型称为“概念数据模型” ,另一种数据模型是直接面向数据库的逻辑结构,它是现实世界的第二层抽象。 这类模型涉及到计算机系统和数据库管理系统,又称为“结构数据模型”。(1) 层次模型。用树型结构表示实体类型及实体间联系的数据模型。树的结点是记录类型,每个非根结点有且只有一个父结点。上一层记录类型和下一层记录类型间联系是1N联系。(2) 网状模型。用有向图结构表示实体类型及实体间联系的数据模型。(3) 关系模型。关系模型的主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。现在市场上典型的关系DBMS产品有DB2、ORACLE、SYBASE、INFORMIX和微机型产品Foxpro、Access等。(4) 面向对象模型。面向对象模型能完整地描述现实世界的数据结构,具有丰富的表达能力,但模型相对较复杂,涉及的知识面也广,因此面向对象数据库尚未达到关系数据库那样的普及程度。数据库的体系结构分三级:内部级(internal)、概念级(conceptual)和外部级(external)。这个三级结构有时也称为“三级模式结构”,或“数据抽象的三个级别”,大多数系统在总的体系结构上都具有三级模式的结构特征。从某个角度看到的数据特性称为“数据视图”(data view)。外部级最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。概念级涉及到所有用户的数据定义,是全局的数据视图。全局数据视图的描述称为“概念模式”。内部级最接近于物理存储设备,涉及到实际数据存储的结构。物理存储数据视图的描述称为“内模式”。数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。三级结构之间往往差别很大,为了实现这三个抽象级别的联系和转换,DBMS在三级结构之间提供两个层次的映象(mappings):外模式/模式映象,模式/内模式映象。此处模式是概念模式的简称。由于数据库系统采用三级模式结构,因此系统具有数据独立性的特点。在数据库技术中,数据独立性是指应用程序和数据之间相互独立,不受影响。数据独立性分成物理数据独立性和逻辑数据独立性两级。(1) 物理数据独立性如果数据库的内模式要进行修改,即数据库的存储设备和存储方法有所变化,那么模式/内模式映象也要进行相当的修改,使概念模式尽可能保持不变。也就是对内模式的修改尽量不影响概念模式,当然,对于外模式和应用程序的影响更小,这样,我们称数据库达到了物理数据独立性。(2) 逻辑数据独立性如果数据库的概念模式要进行修改,譬如增加记录类型或增加数据项,那么外模式/模式映象也要进行相应的修改,使外模式尽可能保持不变。也就是对概念模式的修改尽量不影响外模式和应用程序,这样,我们称数据库达到了逻辑数据独立性。4.1.3 SQL语言基础用户对数据库的使用,是通过数据库管理系统提供的语言来实现的。不同的数据库管理系统提供不同的数据库语言。关系数据库管理系统几乎都提供关系数据库标准语言SQL。SQL 是STRUCTURE QUERY LANGUAGE(结构化查询语言)的缩写,它是操作数据库的工业标准语言。由于SQL使用方便、功能丰富、语言简洁易学,很快得到推广和应用。例如关系数据库产品DB2、ORACLE等都实现了SQL语言。同时,其它数据库产品厂家也纷纷推出各自的支持SQL的软件或者与SQL的接口软件。这样SQL语言很快被整个计算机界认可。1986年10月美国国家标准局(ANSI)颁布了SQL语言的美国标准。SQL数据库的体系结构,它基本上也是三级结构,但有些术语与传统的关系数据库术语不同。在SQL中,关系模式被称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。(1) 一个SQL数据库是表(Table)的汇集,它用一个或若干个SQL模式义。(2) 一个SQL表由行集构成,一行(Row)是列(Column)的序列,每列对应一个数据项。(3) 一个表或者一个基本表(Base Table),或者是一个视图(View)。基本表是实际存储在数据库中的表;而视图是若干个基本表或其它视图构成的子集,用二个SQL的查询语句定义,它的数据是基本基本表的数据,不实际存储在数据库中因此它是个虚表。(4) 一个基本表可以跨一个或多个存储文件,而一个存储文件可存放一个或多个基本表。每个存储文件与外部存储器上的一个物理文件对应。(5) 用户可以用SQL语句对视图和基本表进行查询等操作。在用户看来,视图和基本表是一样的,都是关系(即表格)。(6) SQL用户可以是应用程序,也可以是最终用户。使用SQL可以对数据库进行各种操作,例如,可以使用SQL语句生成新的数据库、生成或加入表格、修改数据库等。但SQL 最常用于从数据库中获取数据。从数据库中获取数据被称为“查询数据库”。4.2 数据库实现原理4.2.1 存储过程(stored procedue)存储过程是一组先编译好的Transact-SQL语句。它可能作为一个独立的数据库对象也可以作为一个单元被用户的应用程序调用,在这个系统中的逾期书检查中就在前台调用了存储过程,在记录借书和还书时,所有的数据处理都是调用存储过程。使用存储过程有很多的好处:(1) 执行速度快:存储过程第一次调用后就驻留内存中,特别是重复处理大量数据时,可以极大的是高运行效率。(2) 模块化的程序设计:存储过程经过一次修改后,可以无数次的调用。(3) 减少网络流量:所有数据处理都是在服务器进行,所以,前台只发送调用存储过程的指令和参数,这样能大减少了网络上数据的流量。(4) 保证系统的安全性。存储过程的定义:CREATE PROC procedure_name parameter date_type VARYING=defaultOUTPUTASSql_statement.n4.2.2 触发器触发器是一种特殊的存储过程,它与表格紧密相连,可能看作是表格定义的一部分,当用户指定表或视图的数据时,触发器将会自动执行。触发器基于一个表创建,但是可以针对多个表进行驶操作。触发器常用来实现复杂的商业规则。使用触发器的最终目的是更好地维护企业的业务规则。在实际运用中,主要提供了以下的功能:(1) 级联修改数据库中的怕有相关表。(2) 撤消违反了完整性的操作,防止非法修改数据。(3) 执行比CHECK更复杂的约束操作。(4) 查找在数据修改前后,表状态的差别。触发器的定义:CREATE TRIGGER trigger_nameON tableFORDELETE,INSERT,UPDATEASSql_statement4.2.3 游标数据库中的游标是像C语言指针一样的语言结构。在通常情况下,数据库招待的大多数SQL命令都是同时处理集合内部的所有数据。但是,有时候用户也需要对这些数据库集合中的每一行进行作。在没有游标的情况下,这种工作不得不放到数据库前端,有高级语言来实现。这将导致不必要的数据传输,面而延长执行的时间。通过使用游标,可能在服务器端有效的解决这个问题;(1) 游标的定义DECLARE cursor_name CURSORFOR select_statement(2) 游标打开OPEN cursor_name(3) FETCH语句FETCH NEXT|PRIOR|FIRST|LASTFROM cursor_nameINTO viriable_name(4) 游标关闭CLOSE cursor_name(5) 删除游标DEALLOCATE cursor_name4.3 定义系统表的结构1. 定义图书表(tbl_book),存放书籍信息,如表4.1所示:表4.1 图书表字段数据类型长度能否为空NameVARCHAR45NOT NULLauthorVARCHAR45NOT NULLtypeVARCHAR45NULLpressVARCHAR45NULLpressdateDATENULLpagenumINTEGERNULLpriceDOUBLE4NULLadddateDATE4NOT NULLlendtimesINTEGER4NULLstatusINTEGER4NOT NULLbookIDVARCHAR20NOT NULL2. 定义读者表(tbl_reader),存放读者信息,如表4.2所示:表4.2 读者表字段数据类型长度能否为空NameVARCHAR8NOT NULLsexVARCHAR10NULLbirthdayVARCHAR2NULLcarddateDATE8NULLcardnumVARCHAR4NULLtypeINTEGER4NULLstatusINTEGER4NULLschoolCHAR16NULLdepartmentCHAR26NULLgradeCHAR 16NOT NULLidcardVARCHAR20NULLaddressVARCHAR45NULLpostVARCHAR10NULLphoneVARCHAR20NULLemailVARCHAR45NULLreaderIDVARCHAR20NOT NULL3. 定义借还记录表(tbl_lend),存放借出书籍的信息,如表4.3所示:表4.3 借出记录表字段数据类型长度能否为空nameVARCHAR45NOT NULLauthorVARCHAR20NOT NULLtypeVARCHAR45NULLpressdateDATENULLpagenumINTEGER4NULLpriceDOUBLE4NULLlenddateDATENOT NULLlenddaysINTEGER4NOT NULLreaderVARCHAR20NOT NULLoverdaysINTEGER4NOT NULLtimeoutINTEGER4NOT NULLbookIDVARCHAR20NOT NULLreaderIDVARCHAR20NOT NULL4. 定义管理员登录表(tbl_user),存放管理人员信息,如表4.4所示:表4.4 系统管理员表字段数据类型长度能否为空nameVARCHAR20NOT NULLsexINTEGER4NULLbirthdayDATENULLidcardVARCHAR20NULLphoneVARCHAR20NULLstatusINTEGER4NOT NULLpowerINTEGER4NOT NULLpasswordVARCHAR20NOT NULLonlineINTEGER4NOT NULLlogintimeDATENOT NULLlasttimeDATENOT NULLuserIDVARCHAR20NOT NULLemailVARCHAR45NULL5. 书籍日志表(tbl_booklog),存放书籍日志信息,如表4.5所示:表4.5 书籍日志表字段数据类型长度能否为空ResultINTEGER4NOT NULLbookIDVARCHAR20NOT NULLbooknameVARCHAR45NOT NULLipVARCHAR20NOT NULLtypeVARCHAR20NOT NULLdescriptionVARCHAR45NOT NULLdatetimeDATETIMENOT NULLoperatorVARCHAR20NOT NULLoperationINTEGER4NOT NULL6. 用户日志表(tbl_booklog),存放用户日志信息,如表4.6所示:表4.6 用户日志表字段数据类型长度能否为空ResultINTEGER4NOT NULLipVARCHAR20NOT NULLdescriptionVARCHAR45NOT NULLdatetimeDATETIMENOT NULLoperatorVARCHAR20NOT NULLoperationINTEGER4NOT NULL4.4 定义所需结构体1. 用户数据结构体typedef struct _userinfo_tagQString sID;/保存用户IDQString sName;/保存用户名u32 dwSex;/性别0:男,1:女QString sPass;/保存用户密码u32 dwPower;/保存用户权限QString sBirthDay;/出生日期QString sPhone;/电话号码QString sIDCard;/身份证号u32 dwStatus;/状态0:正常 1:禁用QString sLoginTime;/注册时间u32 dwOnline;/登陆信息标志0:未登录 1:在线QString sEmail;QString sLastTime;/最后登录时间USERINFO, *PUSERINFO;2. 书籍信息结构体typedef struct _bookinfo_tagQString sID;/书籍IDQString sName;/书籍名字QString sAuthor;/作者QString sType;/图书类型QString sPress;/出版社QString sPressDate;/出版日期u32 dwPageNum;/页数double fPrice;/价格QString sAddDate;/入库日期u32 dwLendTimes;/借出次数u32 dwStatus;/图书状态0:未借出 1:借出 2:遗失BOOKINFO, *PBOOKINFO;3. 借出书籍信息结构体typedef struct _lendinfo_tagQString sID;/图书IDQString sName;/图书名字QString sAuthor;/作者QString sType;/图书类型QString sPress;/出版社QString sPressDate;/出版日期u32 dwPageNum;/页数double fPrice;/图书价格QString sLendDate;/借出日期u32 dwLendDays;/借出天数u32 dwTimeOut;/是否逾期0:未逾期,1:逾期u32 dwOverDays;/超期天数QString sReaderID;/读者QString sReader;LENDINFO, *PLENDINFO;4. 书籍日志信息结构体typedef struct bookloginfo_tagu32 dwID;/操作IDu32 dwResult;/操作结果0:成功 1:失败QString sOperator;/操作员QString sBookID;/操作图书IDQString sBookName;/操作图书名字u32 dwOperation;/操作1:添加图书,2:删除图书,3:更新图书 4:借出 5:归还 6:续借QString sIP;/操作员IP地址QString sType;/书籍类型QString sDescription;/描述QString sDateTime;/操作时间BOOKLOGINFO, *PBOOKLOGINFO;5. 读
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!