题目:院系:专业:姓名:指导教师:
图书管理系统网络教育学院计算机科学与技术
西
南
交通
大
学
网 络 教 育 学 院
院系
网络教育学院
2007-1
专 业 姓 名
计算机科学与技术
年级
题目
图书管理系统
指导教师 评
语
指导教师
评 阅 人
(签章)
评
语
评 阅 人
(签章)
成
绩
(签章)
年
月
日
答辩委员会主任
毕 业 论 文 任 务 书
班
级 2007-1 学生姓名 学 号
发题日期:2008 年 7 月 21 日
完成日期:2008 年 11 月 30 日
题
目 图书管理系统
1. 课题主要研究内容和预期成果:
本系统是针对一个虚拟的大中专院校图书馆的图书管理开发的。希望设计一个
图书管理系统,管理读者的登记、图书的购入、借出、归还以及注销等。管理人员
还可以查询某位读者、某本图书的借阅情况,对当前借阅情况给出一些统计和表格
说明,以全面掌握图书的流通情况。系统包含读者登记、购入新书、读者还书、图
书注销等功能。此外,根据需要,对系统做相应的 修改后,系统也可用于普通图书
馆的图书管理。
读者登记时要为读者编制读者卡片,包括读者的具体信息(如读者编号、姓名、
学院、专业、年级等),写入读者文件中。购入新书时要为该书编制图书卡片,包
括分类目录号、流水号(唯一)、书名、作者、内容摘要、价格和购书日期等信息,
写入图书文件中。读者借书时,先检查该 读者是否为有效的读者,若无效则拒绝借
书,然后检查该读者所借图书是否超过最大数(三本),若超过则拒绝借书,
再检查有尚未归还的过期图书,若有则拒 绝借书。然后查找要借的图书是否还有,
如果有则办理借出手续,登记图书分类号、读者号和借阅日期等。
读者还书时,根据书号,从借书文件中读出有关记录,标明还书日期。
系统还应提供了图书清理的功能,对无价值的和过时的图书可以进行注销。
查询要求分为查询某位读者、某种图书和全局图书三种情况。 2. 技术方案:
本次毕业设计对《图书管理系统》应用软件的开发,我们将采用
Windows2000,Delphi8.0 和 Accses2000 环境数据库系统作为软件设计和开发平台。
3. 软件编写:
(1)开发环境:所选择的操作系统平台(WINDOWS2000)、开发工具(Delphi8.0)
和 Accses2000 及硬件环境。(2)功能模块的编程实现
4. 论文各部分内容及时间分配:(共
周)
1、完成开题报告提交;(
2 周)
2、完成用户需求的确认,围绕课题收集有关的资料,查阅有关的文献及技术 参数,收集有关的数据,并对用户的实际需求和数据进行可行性分析; 2 ( 周)
3、完成数据库及数据字典的建立,画出软件系统总流程图,并写出各模块的
分析说明书;(
3 周)
4、完成主程序、系统信息窗口、模块调用窗口、权限验证模块等的程序设计 初稿并进行系统调试;( 2
周)
5、完成毕业设计的定稿(在整个系统的调试中不断修改和完善系统功能,最 终达到设计目标)。(
2 周)
( 1 周)
6、评阅其答辩
指导教师:
2008 年 月 日
学院审查意见:
审 批 人: 年 月 日
诚信承诺
一、 本论文是本人完成; 二、 本论文没有任何抄袭行为;
三、 若有不实,一经查出,请答辩委员会取消
本人答辩资格。
承诺人:
2008 年 月 日
目
录
摘
要 ..................................................... 1
ABSTRACT .................................................... 2 第 1 章 绪论 ................................................. 3
1.1 课题背景 ............................................... 3 1.2 开发图书管理系统的意义 ................................. 4 1.3 系统开发技术介绍 ....................................... 5 1.3.1 数据库技术的应用 .................................... 5 1.3.2 数据库应用的解决方案 ................................ 6 1.3.3 数据库应用系统开发简介 .............................. 6
第二章 系统需求分析 ......................................... 8
2.1 业务分析 ............................................... 8 2.2 现行系统存在问题的分析及解决方案 ...................... 10
第三章 系统总体结构设计 .................................... 11
3.1 系统目标设计 .......................................... 11 3.2 系统功能分析 .......................................... 12 3.3 系统各功能模块设计 .................................... 12 3.4 数据流图 .............................................. 13
第四章 数据库设计 .......................................... 17
4.1 数据库需求分析 ........................................ 17 4.2 数据库逻辑结构设计 .................................... 18 4.3 软件系统与数据库的关系 ................................ 22 4.4 数据库的建立 .......................................... 23
第五章 图书管理系统详细设计和实现 .......................... 26
5.1 结构模块设计 .......................................... 26 5.2 具体实现 .............................................. 26 5.2.1 登陆界面与主界面的实现 ............................ 26 5.2.2 数据库的访问 ...................................... 30 5.2.3 更改密码模块实现 .................................. 32 5.2.4 图书管理模块的实现 ................................. 34 5.2.5 查询模块实现 ....................................... 37
总
结 ................................................... 40 谢 ................................................... 41
致
参考文献 ................................................... 42 附
录 ................................................... 43
西南交通大学网络教育毕业设计(论文)
Ⅰ
摘
要
图书管理服务促进了信息的传播,利用及再生产的增殖能力,人们掌
握了信息,使之转变为技术,成为作用于社会经济的生产力,促进了社会
经济的发展,这就是信息管理服务的价值体现。图书室的信息服务已成为
21 世纪的主导发展机制之一。图书管理系统开发的总体目的是在图书信
息管理中实现管理的系统化、自动化,减少工作量,增加效率及可靠性。
本系统主要实现的功能为图书管理管理读者的登记、图书的购入、借
出、归还以及注销等。管理人员还可以查询某位读者、某本图书的借阅情
况,对当前借阅情况给出一些统计和表格说明,以全面掌握图书的流通情
况。
本文从图书管理系统的意义和发展入手,随后进行了系统需求分析,
接着进行了系统总体结构设计和数据库设计,最后给出系统的详细设计和
实现。
关键字:信息服务,图书馆,Delphi,Access
西南交通大学网络教育毕业设计(论文)
Ⅰ
Abstract
The development and realization of the information management system
in libraries, Information service in libraries promotes the spread, the use and reproduction of information, People get information and turn it into technology,It becomes productivity having effects on social economy and
promotes the development of economy. The information service in libraries has become the main developing system in the use century, The aim of the system’s development is to realize systematic and automatic management,
reduces the amount of work, and improve efficiency and reliability.
The function that system realizes mainly is that the book manages
reader's register , the book buying, lending out, returning and canceling and so
on. The handling crew can inquire about some reader , some book borrowing
reviewing condition , borrow the condition reviewing condition giving a few out statistics and table explanation , circulating in order to grasping a book's all round to present.
This thesis begins with the library management system and the
significance of the development , followed by a systematic analysis of needs,
and then carrys out the overall structure of the system design and database design, given the detailed design and realization.
Key Words: Information service,The libraries,Delphi, Access
西南交通大学网络教育毕业设计(论文)
第3页
第 1 章 绪论
1.1 课题背景
图书馆是文献情报中心,是为教学和科研服务的学术性机构。它履行
搜集、加工、存贮和传播知识信息的职能,与各系资料室互为补充,共同
承担为教学和科研提供文献情报资料保障的任务。图书馆的自动化经历了
三个时期:发展初期、发展时期和网络化时期。19 世纪末到 20 世纪 40 年代
是图书馆自动化发展的早期阶段,这一时期的主要特点是利用部分机械装
置替代人力从事部分图书馆工作,减轻人员的劳动强度。自 1946 年首台电
子计算机问世后,就有人开始研究计算机应用于图书馆管理的可能性。1954
年,美国海军兵器中心图书馆使用 IBM701 型计算机实现了单元词组配检索,
成为最早使用计算机的图书馆。但随着各大管理系统的相继应用,单独一
台计算机处理复杂图书馆业务的弊病日渐明显,于是出现了图书馆的网络
化。美国俄亥俄州立大学图书馆在 1967 年建成了第一个书目联机检索系统,
成为图书馆管理进入网络化时期的标志。网络化使各协作网的成员降低了
文献情报数据处理的费用,同时网络内的情报资源也得到了平衡。
我国图书馆自动化的发展起步较晚,从 70 年代中期开始,经历了如下
几个阶段: 发展初期、单向业务系统阶段和集成系统阶段。自 70 年代,我
国开始研究图书馆的自动化。到 1980 年,我国陆续引进了多种国外文献磁
带数据库,利用这些磁带开展联机检索服务,是我国图书馆自动化的发展
初期。从 80 年代中期开始进入单项业务系统阶段。由于经费充足和技术力
量雄厚,高校图书馆的自动化工作进展最为迅速,但开发的系统多为单业
务系统,并且有一大部分只能处理西文图书与期刊。随着微机价格的下降
西南交通大学网络教育毕业设计(论文)
第4页
和中文系统平台开发成功,图书馆管理也进入了集成系统的开发阶段。进
入 90 年代以来,计算机网络迅速发展,几乎所有的国家都建成了国家级的
教育科研计算机网络,并互相连接成国际性网络。而我国计算机网络也日
渐成熟,数字数据网可满足多媒体通讯和组建高速计算机通信网的需要,
各类专业广域网纷纷建成并投入使用,如教育科研网 CERNET 主干网已经连
通并投入使用。
计算机网络全球性互连,对图书馆系统自动化的影响远远超出人们的
始料,它决定了图书馆自动化发展的方向。目前许多图书馆根据联网技术
要求都对自己的自动化系统进行改造。计算机网络给图书馆自动化发展带
来了更好的前景。
1.2
开发图书管理系统的意义
目前,我国有不少的大型图书馆实现了图书管理的计算机化,与此同
时,在计算机软件市场上不断涌现出一批功能优异的应用于图书馆的自动
化集成软件。
另一方面,现在学校正在应用的系统,界面单调、操作乏味、效率低。
基于这种局面,开发一个应用于 Windows 平台上的、具有先进的图形界面
的中小型图书信息管理系统是我们面临的一项重要课题。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含
很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至
尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主
要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借
书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的
人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄
西南交通大学网络教育毕业设计(论文)
第5页
进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且
不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆
有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突
出,这就是管理信息系统的开发的基本环境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆
采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅
信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的
数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比
较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,
造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。
基于这个问题,我认为有必要建立一个图书管理系统,使图书管理工
作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速
度和准确性,能够及时、准确、有效的查询和修改图书情况。
1.3 系统开发技术介绍
1.3.1 数据库技术的应用
数据库技术的应用,也叫数据库应用技术,是应用数据库开发工具进
行数据管理(包括采集、处理、存储、查询、统计、传输、报表)的技术。
在任何应用领域,任何数据管理需求层次,任何档次的机型,都可以采用
数据库技术。实际上,各行各业的信息系统,甚至是国际互联网的信息系
统都是基于数据库技术的。可以说,数据库已成为信息社会的重要基础设
施,在计算机应用领域堪称最有应用价值和市场前景的技术。
数据库技术的具体应用过程,是一个典型的把数据转换成信息的过程。
具体来说,就是围绕各用户单位日常手工操作的业务数据、管理数据,在
西南交通大学网络教育毕业设计(论文)
第6页
数据库管理系统环境下,运用数据处理技术,开发出相应的业务处理及管
理决策系统,并利用系统派生出的高附加值信息,达到提高业务或管理效
率、避免浪费或失误、并辅助领导决策的目的。数据库技术的应用,由于
其派生信息的巨大价值,一般都具有很高的投入产出比,并产生可观的经
济效益和社会效益。
数据库技术可以开发面向业务处理和综合决策的管理信息系统,比如
财务、人事、库存、资料、资产设备、销售、日程、以及会议活动等任何
涉及大量规则数据管理方面的程序。图书资料管理是其中最典型的应用之
一。
1.3.2 数据库应用的解决方案
数据库应用的解决方案包括软件工程的基本思想、数据库理论、用户
前端访问界面等三方面的重要内容。
本方案以数据库理论为指导,贯穿软件工程思想,注重用户界面的设
计。方案中的数据流分析对应到软件工程中的需求分析,实体关系图及相
应的用户前端访问界面划分对应到软件工程中的概要设计。
1.3.3 数据库应用系统开发简介
在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对
数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相
当清晰的了解和认识。
数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开
发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设
计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能
西南交通大学网络教育毕业设计(论文)
第7页
的应用。
西南交通大学网络教育毕业设计(论文)
第8页
第二章 系统需求分析
整个软件生命周期中,开发所占的费用和时间都很小。后期维护工作
一般要占整个软件生命周期的 80% 以上。所以系统分析很重要,一个好的
系统分析可以减少很多后期维护工作。
2.1 业务分析
下面以一所学校的图书馆为例子进行分析,画出图书馆的组织结构图 2.1 如下:
馆 长
采 编 组
书
库
阅 览 室 工 具 书 室
目 录 厅
借 阅 室
图 2.1 图书馆的组织结构图
该图书馆各个部门负责的主要业务如下:
(1)采编组主要负责图书采编工作,包括购置新书、打印编目、增加
数量。
(2)目录厅主要负责读者查询工作,包括可借图书(按图书类别、图
书名称或图书作者查询);新书目录(按图书类别、日期查询)。
西南交通大学网络教育毕业设计(论文)
第9页
(3)借阅组主要负责图书流通、查询统计、借阅查询等工作。
(4)阅览室、工具书室主要负责读者阅览工作,包括:阅览各种杂志、
报纸、阅览各种工具书。
下面绘制出图书馆流通业务中借书的流程图:
(1)读者在目录厅查阅索引卡;
(2)读者写出所借图书的分类号、种次号、交给图书管理员,并出示
本人的借书证;
(3)图书管理员根据图书的分类号、种次号到书库找书;
(4)将图书交给读者,并由读者填写所借图书的借书卡。
(5)图书管理员把借书卡保存到写有该读者借书证号的口袋里。
得出该图书馆业务流程图 2.2 如下所示:
图 2.2 业务流程图
西南交通大学网络教育毕业设计(论文)
第10页
2.2 现行系统存在问题的分析及解决方案
该图书馆工作大部分还是进行着手工管理,工作起来效率很低,由于
不可避免的人为因素,经常造成数据的遗漏、误报。计算机信息化管理有
着储存信息量大、速度快等许多优点,提供给我们的处理信息及时快捷,
同时也提高了我们工作人员的自身素质。
基于以上的对问题的分析,利用计算机给我们提供信息,及时地调整
学校图书馆图书结构,并且对学生们的借阅过程形成一整套动态的管理就
十分必要了。
图书馆信息系统的建立,需要进行用户的需求调查与分析,以确定系
统目标,提出解决问题的详细方案,这是系统建设的重要环节。
学校图书馆规模相对于商业图书馆小,但要有着完善的图书信息,对
每一册书要有详细的记录信息,功能上对系统的需求是全面的。因此对用
户的需求可分为四个方面:一方面是图书馆工作人员通过计算机来管理各
类图书,分类编号,调整图书结构,增加图书库存,适应学生的需求;二
方面是学生们能通过计算机来查询浏览图书馆中的图书,来确定自己需要
的书籍,为借阅做好准备;三方面是工作人员对学生们的借书证发放;四
方面也是图书馆的核心工作,对图书的借阅管理。
这四个方面形成了学校图书馆一个工作整体,采用计算机自动化信息
处理,可方便快捷地共享信息、交流信息,高效地协同工作。
在软、硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,
可以很简单方便管理信息。硬件的配置要求不能太高,这样可以很好的适
应当前的学校图书馆。在开发方式上对系统的需求,由于学校图书馆是一
种无商业利益的,所以系统设计开发的周期要短,在短时间内完成,减少
开发成本,提高开发效率,方便、简单、实用作为系统开发的指导思想。
西南交通大学网络教育毕业设计(论文)
第11页
第三章 系统总体结构设计
如果要完成一个完整的图书管理系统,需要的相关信息很多。由于种
种条件的,同时考虑到开发成本,所以本系统仅实现基本的管理功能。
并不能完全满足上面例子所描述的图书馆,使用前应进行二次开发。
3.1 系统目标设计
系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动
化。
能够对图书进行注册登记,也就是将图书的基本信息(如:书名、作
者、价格等)预先存入数据库中,供以后检索。
能够对借阅人进行注册登记,包括记录借阅人的姓名、地址、电话等
信息。
提供方便的查询方法。如:以书名、作者、出版社、出版时间(确切
的时间、时间段、某一时间之前、某一时间之后)等信息进行图书检索,
并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行检索;以出
版社名称查询出版社联系方式信息。
提供统计分析功能。可以展现出图书类型比例、库存与借出比例。
提供旧书销毁功能,对于淘汰、损坏、丢失的书目可及时对数据库进
行修改。
能够对使用该管理系统的用户进行管理,按照不同的工作职能提供不
同的功能授权。提供较为完善的差错控制与友好的用户界面,尽量避免误
操作。
西南交通大学网络教育毕业设计(论文)
第12页
3.2 系统功能分析
根据以上功能,将图书管理系统的数据分为:
数据输入部分:主要包括图书基本信息的录入、借阅人基本信息的录
入、用户基本信息的录入。
数据输出部分:主要是各种统计查询,包括:根据图书信息(如书名、
作者、出版社等)查阅图书及其借阅信息、统计输出图书类型比例等。
数据处理部分:主要涉及借阅和归还的处理,如一本书借出后,必须
在数据库中将该书标记为已借出,以防出现数据库中有书但图书馆无书的
情况;一本书归还后,同样必须在数据库中将其标记为已经归还,以便再
次借出。
3.3 系统各功能模块设计
在系统功能分析的基础上,考虑 Delphi 程序编制的特点,得到如图 3.1
所示的系统功能模块图:
图书借阅管理系统
数 据 输 入 子 系 统 数 据 输 出 子 系 统
数 据 管 理 子 系 统
图 3.1 系统功能模块图
西南交通大学网络教育毕业设计(论文)
第13页
3.4 数据流图
(1) 图书基本信息登记/修改
出版社信息
分类信息
图书信息
出 版 社 信息库 图书分类 信息库
得到完整的图书信息
图书信息库
图 3.2 图书基本信息登记/修改
说明:出版社信息人工录入后,存放在出版社信息库中,便于今后书
籍信息的录入以及出版社信息的查询。分类信息由图书馆进行分类定制,
存放在图书分类信息库中,用于图书的分类管理。登记新书时,当涉及到
出版社和分类的填写时,只需做相应的选择即可,并存放在图书信息库中。
如图 3.2 所示。
(2) 借阅人基本信息登记/修改
西南交通大学网络教育毕业设计(论文)
第14页
说明:录入借阅人基本信息后存放在借阅人信息库中。如图
(3)
说明:输入查询条件后,检索图书信息库,并反应出查询结果。如图所示。
(4)借阅人基本信息
借阅人信息库
图 3.3 图书基本信息登记/修改
3.3 所示。
图书查询
查询条件
图书信息库
信息查询
图书查询结果
图 3.4
图书查询
3.4图书统计
西南交通大学网络教育毕业设计(论文)
第15页
图书信息库
统计 条件
图书分类 信息库
信息统计
图书统 计结果
图 3.5 图书统计
说明:根据选择的统计条件,检索图书分类信息库或图书信息库,并反应
出统计结果。如图 3.5 所示。
(5)图书借阅
借阅人编号
借阅人 信息库
图书编号 图书
信息库
借阅人信息认证
图书信息认证
图书借出处理
图 书 在 借 状 态
在借信息库
图 3.6 图书借阅
西南交通大学网络教育毕业设计(论文)
第16页
说明:输入借阅人编号,通过检索借阅人信息库,核实借阅人身份。
输入图书编号,通过检索图书信息库,核实图书信息。进行图书借出处理
后,在图书借阅库中进行登记,并将借出图书的在借标志设为“是” 。 如
图 3.6 所示。
(5) 图书归还
在借 信息库
在借图书编号 借阅人
信息库
图书 信息库
在 借 信 息 库 修
图书归还处理
图 书 在 借 状 态
图 3.7 图书归还
说明:输入图书编号,检索在借信息库,反应出图输借阅情况。进行归还操作后,
修改在借信息库中相关条目,同时在图书信息库中修改相关图书在借标志为“否”。 如
图 3.7 所示。
西南交通大学网络教育毕业设计(论文)
第17页
第四章 数据库设计
数据库的设计是 MIS 系统的核心部分,设计数据库,首先要进行需求
分析,然后进行数据库的概念结构设计、逻辑结构设计、数据库结构实现
等步骤。
4.1 数据库需求分析
根据以上的需求分析和数据组织,开始设计数据结构,即根据需求勾
画出实体/关系图(E/R)。在概念上,E/R 图代表的是系统需要的数据及其
这些数据之间的关系。
编号
姓名
电话
借 阅 人 ( M e m b e r )
借阅、登记
图书基本信息( Book )
编号
名称 作者
出版社
4.1 实体/关系图
西南交通大学网络教育毕业设计(论文)
第18页
从图 4.1 中可以看出,在这个系统中实际存在的实体:图书和借阅人,
其中借阅人和图书是多对多关系,针对本系统,通过对图书借阅管理的内
容和数据流程分析,设计数据项和数据结构如下:
图书基本信息,其数据项有图书编号、图书名称、作者、出版社等。
借阅人基本信息,其数据项有借阅人编号借阅人姓名、电话等。
图书借阅登记,其数据项有借阅序号、借阅图书编号、借阅人编号等。
为了实现图书信息录入的方便性与规范性以及相关的统计功能,还应
增加出版社信息与图书分类信息:
出版社信息,其数据项有出版社编号、出版社名称、地址、电话、传
真等。
图书分类信息,其数据项有分类编号、分类名称、同一类型图书数目。
同时针对于本系统的多用户使用特点,增加用户信息表:
4.2 数据库逻辑结构设计
数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中
没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一
个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,
可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有
计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字
段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用
的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减
少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数
据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己
定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时
西南交通大学网络教育毕业设计(论文)
第19页
产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数
据库就比较规范了。
另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义
成 CHAR(1)或 BIT 型。建议实际应用中定义成 CHAR(1)字段可以存储多种
可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后
来的开发中,可以通过设计标志字段为不同的 值来解决,这样就避免了修
改数据库结构。
数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使
当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。
程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库
结构一旦改变,所有与修改的数据表相关的业务都有可能受到影响,而某
些影响还很难看到,这样就容易形成一个恶性循环。错误越改越多,越改
越乱,最终导致程序的失败。PB 的数据窗口与其他语言的数据控件不一样,
它的很多东西是预编译的。即使你一个模块已经调试无误,但只要数据库
结构改动。相应的模块就一定要重新修改,否则一定会出问题。
图书借阅管理系统数据库中各个表的设计结果如下面几个表格所示。
每个表格表示为数据库中的一个表。
用户基本信息表 people,记录用户的基本情况,memberid 设为主键、
索引。如表 4.1 所示。
表 4.1 用户基本信息表 people
列名
数据类型
长度
可否为空
注释
Memberid
Char
10
Not Null
借阅人编号
Membername
Char
10
Null
借阅人姓名
id
varchar
20
Null
身份证号
Add Char 50 Null 联系地址
西南交通大学网络教育毕业设计(论文)
第20页
Null
Phone
Char
20
联系电话
Mobile
Char 20 Null 移动电话
用户登陆和权限数据表,记录系统用户的用户名、密码与权限,uid 设
为主键。如表 4.2 所示。
表 4.2 用户登陆和权限数据表
列名
数据类型
长度
可否为空
注释
Uid
Char
4
Not Null
用户编号
name
Char
10
Null
用户名
password
Char
10
Not Null
密码
level
char 1 Not Null 权限
图书基本信息表,记录图书基本信息,bookid 设为主键、索引。如表
4.3 所示。
表 4.3 图书基本信息表
列名
数据类型
长度
可否为空
注释
Bookid
Char
10
Not null
图书编号
Isbn
Char
30
Null
图书 ISBN
Classname
Char
20
Null
图书类型
Title
Char
40
Null
图书名称
publishdate
date
-
Null
出版日期
author
Char
20
Null
作者
pub
Char
30
Null
出版社
price
numeric
19.4
Null
价格
disk
Char
1
Null
附带光盘
keyword
Char
30
Null
关键词
number int - Null 存放代码
西南交通大学网络教育毕业设计(论文)
第21页
Null
摘要
Abstract
varchar 100
此外还有图书分类数据表,如表 4.4 所示:
表 4.4 图书分类数据表
列名
数据类型
长度
可否为空
注释
BclassNo
Char
10
Not Null
图书类别编号
Parentclass
Char
10
Null
父类
Bclassname
Char 10 Not Null 类名
(1)规划有效的索引
a.在组合表的列中创建索引,包括主关键字和外部关键字所在的列。 b.在列或类组合中创建唯一的索引能增强唯一性。
c.浏览索引并卸载不使用的索引。索引需要一定硬盘空间和时间来维
护。具有较高数据插入操作频率的数据库最好不要索引。有较高读操作频
率的数据库应该有更多的索引。
d.避免在簇索引中包括不必要的列。在可能的情况下,使用较小的数据
类型,例如用 varchar 替代 char。
e.考虑使用簇索引来支持排序和范围化查询。在为数据检索优化表时,
簇索引必须支持数据的分组索引。为簇关键字选择列或列组,簇关键字以
经常需要的顺序排序数据或以必须被一起访问的记录而分组记录。
f.创建支持一般查询的查找参数索引。具有高选择性的列是索引的最好
候选列。具有高密度的列是索引糟糕的候选列。
(2)使用约束实现数据的完整性
PRIMARY KEY 约束在表中定义了主关键字,它是行唯一的标识符,
它可以强制实体完整性。在使用 PRIMARY KEY 约束时考虑以下事实:
每个表只能有一个 PRIMARY KEY 约束。
西南交通大学网络教育毕业设计(论文)
第22页
键入的值必须是唯一的。
不允许有空值。
PRIMARY KEY 约束在指定的列创建唯一的索引,可以指定簇索引和
非簇索引(如果 非簇索引先前并不存在,簇索引是默认的)。
UNIQUE 约束指定,在一列中的两行不能有相同的值。该约束使用唯
一的索引来强制实体的完整性。在已有一个主关键字时 UNIQUE 约束很有
用,例如雇员号,但是必须保证其他标识符(例如,雇员驾驶证号)也是
唯一的。在使用 UNIQUE 约束时,考虑以下事实;
A.允许有空值。
B.在一个表中可以设置多个 UNIQUE 约束。
C.可以将 UNIQUE 约束运用于具有唯一值的单列或多列,但不能用于
表的主关键字。
D.通过在指定的列或列组中创建唯一的索引,可以使 UNIQUE 索引得
到强制
4.3 软件系统与数据库的关系
本系统采用单层数据库体系,软件拥护或系统管理员通过前台界面进
行相应操作,前台界面和后台数据库引擎进行调用以及返回相应结果。
该系统与应用环境的关系如上图 4.2 所示:
西南交通大学网络教育毕业设计(论文)
第23页
操作员
用户信息
图书
管理系统
ADO
数据查询
图 4.2 系统与应用环境关系图
本系统属于管理信息系统(MIS)范畴,他是通过前台界面调用后台数
据库操作实现的。
4.4 数据库的建立
一、数据库
首先进入 Access2000 主界 面 。新 建 一个数据 库文件 ( 文 件名为
HY.mdb)。打开此数据库文件,在该文件下建立所需的全部数据表。
二、系统数据模块的建立
由于本系统数据库表单较多,为避免向每个窗体中添加数据访问组件
来访问数据库中的数据,我利用了 Delphi 中提供的数据模块窗体。在其
他窗体需要访问数据时,只需在其单元文件中引用数据模块的单元文件就
可以直接访问到数据集中的数据了。
西南交通大学网络教育毕业设计(论文)
第24页
三、数据库详细表一览
系统所需的数据按照如下思路设计,有用户基本信息表、用户登陆和权
限数据表、图书信息数据表和图书分类信息表等多个表。主要表单如下:
(1)用户基本信息表 pepole,如图 4.3 所示:
图 4.3 用户基本信息表 pepole 实现图
(2)用户登陆和权限数据表 users,如图 4.4 所示:
图 4.4 用户登陆和权限数据表 users 实现图
西南交通大学网络教育毕业设计(论文)
第25页
(3)图书基本信息表 books,如图 4.5 所示:
图 4.5 图书基本信息表 books 实现图
(4)图书分类数据表 booklass,如图 4.6 所示:
图 4.6 图书分类数据表 bookclass 实现图
西南交通大学网络教育毕业设计(论文)
第26页
第五章 图书管理系统详细设计和实现
5.1 结构模块设计
从软件结构观点来看,结构模块设计不仅包括一个系统的基本组
建,整体连接,全局控制结构,通信的协议,同步化机智,数据存储方法,
还包括:设计元件的功能,构成,物理分布,可扩展性与性能,系统变革
的尺度等。我们的这个图书管理系统,是属于单层数据库。也就是桌面型
数据库系统,它是指数据库应用程序与数据库在同一台计算机上,没有涉
及到计算机网络,也没用到数据库服务器,数据以数据文件的文件形式提
供。它的优点是安全性高,数据存取效率高。
5.2 具体实现
5.2.1 登陆界面与主界面的实现
用 Delphi 设计界面是完全可视化,编程人员只须简单的把各组件组合,
设置相应属性既可设计出美观的应用程序环境。运行本程序,我们首先进
入的是登陆界面,系统要求用户输入正确的用户名和密码。用户必须输入
正确,才能进入下一级主界面,如果密码输入有误,应用程序会提示错误
信息。用户如果连续三次输入错误,应用程序会强迫使用者退出并终止应
用程序的运行。
登陆界面如图 5-1 所示:
西南交通大学网络教育毕业设计(论文)
第27页
图 5-1 登陆界面图
//////////////////////////////////登陆验证////////////////////////////////
procedure TWinForm1.Button3_Click(sender: System.Object; e: System.EventArgs); begin
sqlstr:='select * from users where uname='+chr(39)+textbox1.Text.trim+chr(39);
da:=oledbdataadapter.Create(sqlstr,conn); mytab:=datatable.Create();
da.Fill(mytab); //////////从数据表中提取,密码 if mytab.Rows.Count=1 then
begin
//////////比较和验证密码
if mytab.rows.Item[0][1].tostring=textbox2.Text.trim then
begin
unit1.bootname:=textbox1.text.trim;
unit1.bootpass:=textbox2.Text.trim;
unit1.quanxian:= strtoint(mytab.rows.Item[0][2].tostring);
self.Dispose;
end
else
西南交通大学网络教育毕业设计(论文)
第28页
begin
showmessage('密码错误,请检查您的密码或用户名输入是否
正确!');
end;
end else
begin
ShowMessage('对不起,没有此用户!');
end; conn.close;
end;
在编码时,首先设定了一个私有变量,用于检查密码输入是否正确和
密码输入次数。当用户单击用户名下拉列表框时,编写代码以实现从数据
库中读取用户名信息。
验证用户名与密码的基本思路是从预设的数据库中得到用户的密码,
然后与用户在密码框中输入的相比较,如果输入密码一致的话,就正确向
下执行程序,如果不一致的话要提示用户密码错误,密码输入的密码输入
的记数次数加一,如果连续三次输入错误,提醒用户已经没有进入系统的
权限了,应用程序将自动退出。如果用户的用户名和密码输入正确,则允
许此用户登陆,并记录当前登陆用户的登陆时间和登陆日期,同时初始化
主窗体,根据用户身份决定那些功能对该用户可用,那些功能对用户不可
用。
主窗体如图 5-2 所示:
西南交通大学网络教育毕业设计(论文)
第29页
图 5-2 主窗体
/////////////主窗体显示 ----先显示 flash,后登陆界面,最后显示主窗体
procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs);
var
flash:TWinForm2;
login:TWinForm1; begin
flash:=twinform2.Create;
flash.Show;
//flash 窗体显示
self.Opacity:=0.55;
while flash.timer1.enabled=true do
西南交通大学网络教育毕业设计(论文)
第30页
begin
application.DoEvents;
end;
login:=twinform1.create; flash.Dispose;
login.ShowDialog;
////登陆对话框显示
StatusBar2.Panels[1].Text:= '当前登陆用户:'+unit1.bootname; if unit1.quanxian=1 then
StatusBarPanel4.Text:='当前用户类型:超级管理员';
if unit1.quanxian=2 then
StatusBarPanel4.Text:='当前用户类型:一般管理员';
if unit1.quanxian=3 then
StatusBarPanel4.Text:='当前用户类型:普通用户';
self.Opacity:=1; end; end.
5.2.2 数据库的访问
定义一个共有变量来记录当前用户的基本信息,这个公有变量将贯穿
整个程序编码的始终,被整个程序使用。另外由于我们想让新窗体自动停
靠在主窗体一个 Panel 面板上,因此要设置其相应属性,并编码检验当新的
Form。生成时,Panel 上是否已经有一个停靠其上的 Form。因为一个时间 内只能有一个 Form 停靠在 Panel 上。而且在后面的各窗体建立时都需相应
的属性设置,为此我建立了一个公有窗体,其他窗体在建立时只需继承其
西南交通大学网络教育毕业设计(论文)
第31页
属性,而无须重复设定锁定属性,程序代码见如下。
//////数据访问模块窗体///////////////////
unit pulicUnit; interface
uses system.data,system.data.oledb,system.Windows.Forms; var
sqlstr:string;
conn:oledbconnection;
function conndatabase:boolean;
procedure openSQL(dt:datatable;sqlstr:string); procedure execsql(sqlstr:string);
implementation
//建立数据库连接函数
function conndatabase:boolean; begin
conn:=oledbconnection.create;
conn.connectionstring:='provider=microsoft.jet.oledb.4.0;data source='+application.startuppath+'\\lc.mdb'; try
conn.open; result:=true; except
result:=false; end; end;
/// CNN 连接中执行 SQL 语句,并填充记录集 dt procedure openSQL(dt:datatable;sqlstr:string); da:oledbdataadapter; var begin dt.clear;
da:=oledbdataadapter.create(sqlstr,conn); da.fill(dt); da.free;
西南交通大学网络教育毕业设计(论文)
第32页
end;
//CNN 连接中,执行数据查询命令 sqlstr procedure execsql(sqlstr:string); var
cmd:oledbcommand; begin
cmd:=oledbcommand.create; cmd.connection:=conn;
cmd.commandtext:=sqlstr; cmd.executenonquery; cmd.free; end; end.
5.2.3 更改密码模块实现
“更改密码”窗体的功能是用与修改当前用和的密码。设计思想是当
程序执行时,用户输入正正确的旧密码和新密码后,点“确定”,系统正确
的对数据库提交修改后的密码。密码修改成功。
如图 5.3 所示。
西南交通大学网络教育毕业设计(论文)
第33页
图 5.3 “更改密码”窗体图
//////////////////////更改密码////////////////////////////////////
procedure TWinForm3.Button1_Click(sender: System.Object; e:
System.EventArgs);
begin
if textbox1.Text<>unit1.bootpass then////校核密码
begin
showmessage('原密码错误!'); end
else
begin
if textbox2.text.Trim=textbox3.Text.Trim then///////密码更新
begin
bootpass:=textbox2.Text.Trim;
西南交通大学网络教育毕业设计(论文)
第34页 users
set
cmd.CommandText:='update
upassword='+chr(39)+textbox2.text.Trim+chr(39)+' where uname='+chr(39)+unit1.bootname+chr(39);
cmd.ExecuteNonQuery;
if cmd.ExecuteNonQuery=1 then//////更新成功否
begin
showmessage('密码修改成功!');
unit1.bootpass:=textbox2.Text.Trim; self.Dispose; end else
showmessage('密码修改出现未知错误!');
end
else
if textbox2.text.Trim<>textbox3.Text.Trim then
showmessage('两次密码输入不一致');
end;
conn.Close;
end;
5.2.4 图书管理模块的实现
“图书管理”里拥有用户信息,增加,删除三个模块。如图 5.4 所示。
西南交通大学网络教育毕业设计(论文)
第35页
(1)“增删改”可以实现数据录入,数据修改插入和数据的删除功能。
(2)“图书统计”用来显示查询、编辑、删除以及修改所有的“图书
数据”。当选择“借出”或“归还”后,便调出所有的相关资料。
本程序的设计思想为,首先当通过下拉列表框选择“借出”“归还”
后,其程序会执行相应的代码,并且通过下拉列表框的内容,编写 SQL 语
句,查询相应符合条件的记录并调出数据。
图 5.4 图书管理模块图
/////////////////////////图书管理模块///////////////////////////////////////////////////////
procedure TWinForm6.Button5_Click(sender: System.Object; e:
System.EventArgs);
西南交通大学网络教育毕业设计(论文)
第36页
begin
if czbz='添加' then
begin
if checkdata=true then
begin
inserted;
end;
end;
if czbz='修改' then
begin
if checkdata=true then
begin
updated;
end; end;
if czbz='删除' then //begin
// if checkdata=true then //begin
deleted; //end; //end;
end;
西南交通大学网络教育毕业设计(论文)
第37页
5.2.5 查询模块实现
“图书管理查询”窗体是用语查询数据记录的。操做时可以选择搜索
内容,可以按发生日期查询,也可按数据入录方向查询。窗体界面如图 5.5
所示:
图 5.5 图书管理查询图
/////////////////////////图书管理查询//////////////////////////////////////////
procedure
TWinForm7.Button5_Click(sender: System.Object; e:
System.EventArgs); var
da:oledbdataadapter; sqlstr:string;
西南交通大学网络教育毕业设计(论文)
第38页
begin
conn:=oledbconnection.create();////////////建立连接
conn.connectionstring:='provider=microsoft.jet.oledb.4.0;data source='+application.startuppath+'/books.mdb'; conn.open;
if initstr='初始' then ////////////sql 查询语句,生成
sqlstr:='select bid as 编号 ,Bisbn as Isbn,Bname as 书名 ,Bauthor as 作
者 ,Bpublisherno as 出版社编号 ,bclassno as 图书类别 ,bprice as 图书价
格,BBorrowdate as 借书日期,bdescription as 图书描述 from books';
if initstr='ISBN' then
sqlstr:='select bid as 编号 ,Bisbn as Isbn,Bname as 书名 ,Bauthor as 作
者 ,Bpublisherno as 出版社编号 ,bclassno as 图书类别 ,bprice as 图书价
格,BBorrowdate as 借书日期 ,bdescription as 图书描述 from books where
bisbn='+chr(39)+textbox9.Text.Trim+char(39); if initstr='书名' then
sqlstr:='select bid as 编号 ,Bisbn as Isbn,Bname as 书名 ,Bauthor as 作
者 ,Bpublisherno as 出版社编号 ,bclassno as 图书类别 ,bprice as 图书价
格,BBorrowdate as 借书日期 ,bdescription as 图书描述 from books where
bname='+chr(39)+textbox2.Text.Trim+char(39); if initstr='作者' then
sqlstr:='select bid as 编号 ,Bisbn as Isbn,Bname as 书名 ,Bauthor as 作
者 ,Bpublisherno as 出版社编号 ,bclassno as 图书类别 ,bprice as 图书价
格,BBorrowdate as 借书日期 ,bdescription as 图书描述 from books where
bauthor='+chr(39)+textbox6.Text.Trim+char(39);
da:=oledbdataadapter.Create(sqlstr,conn); ////////////执行查询,并填充记录集
西南交通大学网络教育毕业设计(论文)
第39页
mytab:=datatable.Create;
da.Fill(mytab);
if mytab.Rows.Count>=1 then
showmessage('共找到'+inttostr(mytab.Rows.count)+'记录!')
else
begin
showmessage('共找到 0 条记录!');
initform('初始'); gridshow; exit; end;
datagrid1.DataSource:=mytab;////////////////显示获得的数据
showdata; conn.close;
end;
西南交通大学网络教育毕业设计(论文)
第40页
总
结
在不断的努力学习后系统终于完成了心理很高兴。从测试运行结果来
看,已经满足了预想的功能。这是我走向计算机路做的第一个系统,第一
个程序。这个系统的功能还是比较完全的,应该是一个可用的系统。通过
做这个系统让我对开发产生了更大的兴趣。系统开发是一个较难的东西,
但它是实现我们想象空间的平台。利用它我们可以做我们想要的工具,它
的运用让我们的生活更加的美好。
在系统开发的过程中,我遇到过许多以前从没有接触到过的问题,为
了解决它,我几乎翻阅了所有手头上的书籍,查看了所有自己收集的资料。
伴随着问题的解决,真的有了那种把以前学的、零散的东西一点点的穿成
串的感觉,这种进步的快乐支持着我,一直孜孜不倦、力求尽善尽美的完
成它。
要想真正快速的精通软件开发,我想除了不停的借鉴、思考和尝试做
以外别无它法。这是一个枯燥而艰苦的过程,但同时它又伴随着无尽的快
乐。这次答辩设计的全过程让我体验到了知识与经历的魅力。
西南交通大学网络教育毕业设计(论文)
第41页
致
谢
首先,感谢学校对我的培养,感谢学校为我提供了这次实训机会,通
过这次的实训让我对开发工具有了更深刻的认识,这次实训让我懂得了要
怎样用工具实现自己想要的东西,让我在理论和实践两方面都学到了很
多。通过整个设计过程,我在计算机理论和实践方面都学到了很多东西。
同时要感谢老师对我传授的知识,并感谢老师对我的细心指导,我在
做课题的时候遇到了一些问题,通过老师的指导和讲解让我明白了很多问
题,并在理论与实践方面给予了我很多的启发,让我知道了在设计过程中
的许多规范性问题,使我的课题能够顺利的、大工作量的完成。在此向他
们致以最衷心的感谢。
同时感谢我的知道老师,在这期间她给我很大的帮助;感谢所有帮助
过我的人。
谢谢你们!
西南交通大学网络教育毕业设计(论文)
第42页
参考文献
1 张春林,Delphi 8 程序设计导学.北京:清华大学出版社,2006.5
2 飞思科技, Delphi8 开发者手册. 北京:电子工业出版社,2006.3 3 飞思科技, Delphi8 数据库开发. 北京:电子工业出版社, 2006.1 4 丁宝康,数据库原理. 北京:经济科学出版社,2006.1
5 何旭洪,Delphi 8.0 数据库系统开发实例导航.北京:人民邮电出版社, 2006.4
6 周璋鹏, 基于 B/S 结构的学生信息管理系统垢研究与开发.西北电力技 术.2007,31(4):15~17,26
7 李全彬, 顾明亮. 基于 ASP 技术的学生信息管理系统的研究与开发 . 徐州师范大学学报(自然科学版).2001,19(2):25~28
8 谷 军 , 用 Authorware 开 发 学 生 信 息 管 理 系 统 . 计 算 机 与 与 现 代 化.2003(7):40~41,44
9 李丹荣,杜维 .基于 Delphi8.0 的实时数据采集与分析系统 程.2006,20(5): ~67
机电工
西南交通大学网络教育毕业设计(论文)
第43页
附
录
添加、删除、修改等模块的实现代码
///////////////////删除界面/////////////////////
procedure
TWinForm6.Button3_Click(sender: System.Object; e:
System.EventArgs); begin
initform('删除');
end;
//修改界面
procedure
TWinForm6.Button2_Click(sender: System.Object; e:
System.EventArgs); begin
initform('修改');
end;
//////////////////////////添加界面////////////////////////////
procedure
TWinForm6.Button1_Click(sender: System.Object; e:
System.EventArgs); begin
initform('添加');
end;
//表格调用
procedure TWinForm6.TWinForm6_Load(sender: System.Object; e:
System.EventArgs);
begin
西南交通大学网络教育毕业设计(论文)
第44页
initform('初始');
gridshow;
end;
////////////////////添加数据检查////////////////////////
function TWinForm6.checkdata: boolean;
var
da:oledbdataadapter;
sqlstr:string;
mytab2:datatable;
begin
if textbox1.Text.Trim='' then
begin
messagedlg('必须输入编号!',mtconfirmation,[mbok],0);
result:=false;
textbox1.Focus;
exit;
end;
if textbox2.Text.Trim='' then
begin
messagedlg('必须输入书名!',mtconfirmation,[mbok],0);
result:=false;
textbox2.Focus;
exit;
end;
if textbox6.Text.Trim='' then
西南交通大学网络教育毕业设计(论文)
第45页
begin
messagedlg('必须输入作者!',mtconfirmation,[mbok],0);
result:=false;
textbox6.Focus;
exit;
end;
if textbox4.Text.Trim='' then
begin
messagedlg('必须所属类别!',mtconfirmation,[mbok],0);
result:=false;
textbox4.Focus;
exit;
end;
{if czbz='添加' then
begin
conn:=oledbconnection.create();
conn.connectionstring:='provider=microsoft.jet.oledb.4.0;data
source='+application.startuppath+'/books.mdb';
conn.open;
sqlstr:='select
* from books where
bid='+char(39)+textbox1.text.trim+char(39); da:=oledbdataadapter.create(sqlstr,conn);
mytab2:=datatable.create();
da.fill(mytab);
if mytab2.rows.count>0 then
西南交通大学网络教育毕业设计(论文)
第46页
begin
showmessage('编号重复,请重新输入!');
textbox1.text:='';
textbox1.focus;
end;
conn.close;
end;
if czbz='修改' then
begin
end;
result:=true;
end;
///////////////////////纪录删除//////////////////
procedure TWinForm6.deleted;
var
cmd:oledbcommand;
begin
conn:=oledbconnection.create();
conn.connectionstring:='provider=microsoft.jet.oledb.4.0;data
source='+application.startuppath+'/books.mdb';
conn.open;
cmd:=oledbcommand.Create;
cmd.Connection:=conn;
cmd.CommandText:='delete * from books where
西南交通大学网络教育毕业设计(论文)
第47页
bid='+chr(39)+textbox1.Text.Trim+char(39);
if cmd.ExecuteNonQuery=1 then
showmessage('删除成功')
else
showmessage('删除失败');
initform('初始');
conn.Close;
gridshow;
end;
//////////////////////////表格显示//////////////////////
procedure TWinForm6.gridshow;
var
da:oledbdataadapter;
sqlstr:string;
begin
conn:=oledbconnection.create();
conn.connectionstring:='provider=microsoft.jet.oledb.4.0;data
source='+application.startuppath+'/books.mdb';
conn.open;
sqlstr:='select bid as 编号,Bisbn as Isbn,Bname as 书名,Bauthor
as 作者,Bpublisherno as 出版社编号 ,bclassno as 图书类别 ,bprice
as 图书价格 ,BBorrowdate as 借书日期 ,bdescription as 图书描述
from books';
da:=oledbdataadapter.Create(sqlstr,conn);
mytab:=datatable.Create();
西南交通大学网络教育毕业设计(论文)
第48页
da.Fill(mytab);
datagrid1.DataSource:=mytab;
showdata;
conn.close;
end;
//////////////////////////初始化///////////////////////////
procedure TWinForm6.initform(lx: &string);
begin
if lx='初始' then
begin
czbz:='初始';
panel1.Visible:=true;
panel2.Visible:=false;
panel3.Visible:=true;
textbox1.Enabled:=true;
textbox2.Enabled:=true;
textbox3.Enabled:=true;
textbox4.Enabled:=true;
textbox5.Enabled:=true;
textbox6.Enabled:=true;
end;
if lx='添加' then
begin
czbz:='添加';
panel1.Visible:=false;
西南交通大学网络教育毕业设计(论文)
第49页
panel2.Visible:=true;
panel3.Visible:=false;
textbox1.Text:='';
textbox2.Text:='';
textbox3.Text:='';
textbox4.Text:='';
textbox5.Text:='';
textbox6.Text:='';
textbox1.Focus;
end;
if lx='修改' then
begin
czbz:='修改';
panel1.Visible:=false;
panel2.Visible:=true;
panel3.Visible:=false;
textbox1.Enabled:=false;
textbox2.Enabled:=false;
end;
if lx='删除' then
begin
czbz:='删除';
panel1.Visible:=false;
panel2.Visible:=true;
panel3.Visible:=false;
西南交通大学网络教育毕业设计(论文)
第50页
textbox1.Enabled:=false;
textbox2.Enabled:=false;
textbox3.Enabled:=false;
textbox4.Enabled:=false;
textbox5.Enabled:=false;
textbox6.Enabled:=false;
end;
end;
///////////////////////////纪录插入////////////////////
procedure TWinForm6.inserted;
var
cmd:oledbcommand;
i:integer;
begin
conn:=oledbconnection.create();
conn.connectionstring:='provider=microsoft.jet.oledb.4.0;data
source='+application.startuppath+'/books.mdb';
conn.open;
cmd:=oledbcommand.Create;
cmd.Connection:=conn;
cmd.CommandText:='insert
into books
(bid,bisbn,bname,bauthor,bpublisherno,bclassno,bprice,bdescript ion,bborrowdate)
values(@bid,@bisbn,@bname,@bauthor,@bpublisherno,@bclassno,@bpr
ice,@bdescripton,@bborrowdate)';
西南交通大学网络教育毕业设计(论文)
第51页
cmd.Parameters.Add('@bid',oledbtype.char,50).value:=textbox1.Te xt.Trim;
cmd.Parameters.Add('@bisbn',oledbtype.char,50).value:=textbox9.
Text.Trim;
cmd.Parameters.Add('@bname',oledbtype.char,50).value:=textbox2.
Text.Trim;
cmd.Parameters.Add('@bauthor',oledbtype.char,50).value:=textbox
6.Text.Trim;
cmd.Parameters.Add('@bpublisherno',oledbtype.integer,4).value:=
textbox8.Text.Trim;
cmd.Parameters.Add('@bclassno',oledbtype.integer,4).value:=text
box4.Text.Trim;
cmd.Parameters.Add('@bprice',oledbtype.char,8).value:=textbox7.
Text.Trim;
cmd.Parameters.Add('@bdescription',oledbtype.char,255).value:=t
extbox3.Text.Trim;
西南交通大学网络教育毕业设计(论文)
第52页
cmd.Parameters.Add('@bborrowdate',oledbtype.integer,8).value:=t
extbox5.Text.Trim;
if cmd.ExecuteNonQuery=1 then
showmessage('添加成功')
else
showmessage('添加失败');
conn.Close;
initform('初始');
gridshow;
end;
//////////////////////数据显示/////////////////////////////
procedure TWinForm6.showdata;
begin
textbox1.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][0].To
String;
textbox2.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][2].To
String;
textbox6.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][3].To
String;
textbox9.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][1].To
String;
textbox8.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][4].To
String;
textbox7.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][6].To
String;
西南交通大学网络教育毕业设计(论文)
第53页
textbox4.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][5].To
String;
textbox5.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][7].To
String;
textbox3.Text:=mytab.Rows.Item[datagrid1.CurrentRowIndex][8].To
String;
end;
/////////////////////纪录更新和显示//////////////////
procedure TWinForm6.updated;
var
cmd:oledbcommand;
bid:string;
bis:string;
bna:string;
bau:string;
bpu:string;
bcl:string;
bpr:string;
bde:string;
bbo:string;
begin
conn:=oledbconnection.create();
conn.connectionstring:='provider=microsoft.jet.oledb.4.0;data
source='+application.startuppath+'/books.mdb';
conn.open;
西南交通大学网络教育毕业设计(论文)
第54页
cmd:=oledbcommand.Create;
cmd.Connection:=conn;
bid:=textbox1.Text.Trim;
bna:=textbox2.Text.Trim;
bde:=textbox3.Text.Trim;
bcl:=textbox4.Text.Trim;
bbo:=textbox5.Text.Trim;
bau:=textbox6.Text.Trim;
bpr:=textbox7.Text.Trim;
bpu:=textbox8.Text.Trim;
bis:=textbox9.Text.Trim;
cmd.CommandText:='UPDATE
books SET
bisbn='+char(39)+bis+char(39)+',bname='+char(39)+bna+char(39)+' ,bauthor='+char(39)+bau+char(39)+',bpublisherno='+char(39)+bpu+
char(39)+',bclassno=';
cmd.CommandText:=cmd.CommandText+char(39)+bcl+char(39)+',bprice
='+char(39)+bpr+char(39)+',bdescription='+char(39)+bde+char(39)
+',bborrowdate='+char(39)+bbo+char(39)+' bid='+char(39)+bid+char(39);
WHERE
if cmd.ExecuteNonQuery=1 then
showmessage('修改成功')
else
showmessage('修改失败');
gridshow;
西南交通大学网络教育毕业设计(论文)
第55页
conn.Close;
initform('初始')
end;
//////////////////////////////用户代码分析//////////////:
// PictureBox1
//
Self.PictureBox1.Image
(System.Drawing.Image(resources.GetObject('PictureBox1.Image')));
Self.PictureBox1.Location := System.Drawing.Point.Create(128, 104);
Self.PictureBox1.Name := 'PictureBox1';
Self.PictureBox1.Size := System.Drawing.Size.Create(32, 32);
Self.PictureBox1.TabIndex := 6;
Self.PictureBox1.TabStop := False;
//
// Button4 //
Self.Button4.Location := System.Drawing.Point.Create(176, 112);
Self.Button4.Name := 'Button4';
Self.Button4.TabIndex := 5;
Self.Button4.Text := '退出(&E)';
Include(Self.Button4.Click, Self.Button4_Click);
//
// Button3
//
Self.Button3.Location := System.Drawing.Point.Create(40, 112);
:=
西南交通大学网络教育毕业设计(论文)
第56页
Self.Button3.Name := 'Button3';
Self.Button3.TabIndex := 4;
Self.Button3.Text := '登陆(&L)';
Include(Self.Button3.Click, Self.Button3_Click);
//
// TextBox2
//
Self.TextBox2.Location := System.Drawing.Point.Create(120, 72); Self.TextBox2.Name := 'TextBox2';
Self.TextBox2.PasswordChar := '*';
Self.TextBox2.Size := System.Drawing.Size.Create(120, 21);
Self.TextBox2.TabIndex := 3; Self.TextBox2.Text := '';
//
// TextBox1 //
Self.TextBox1.Location := System.Drawing.Point.Create(120, 32);
Self.TextBox1.Name := 'TextBox1';
Self.TextBox1.Size := System.Drawing.Size.Create(120, 21);
Self.TextBox1.TabIndex := 2; Self.TextBox1.Text := '';
Include(Self.TextBox1.TextChanged, Self.TextBox1_TextChanged);
//
// Label4
//西南交通大学网络教育毕业设计(论文)
第57页
Self.Label4.AutoSize := True;
Self.Label4.BackColor := System.Drawing.SystemColors.ActiveBorder;
Self.Label4.Font
:= System.Drawing.Font.Create(' 宋 体 ', System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, (Byte(134)));
Self.Label4.Location := System.Drawing.Point.Create(40, 76);
Self.Label4.Name := 'Label4';
Self.Label4.Size := System.Drawing.Size.Create(66, 17);
Self.Label4.TabIndex := 1;
Self.Label4.Text := '登陆密码:'; //
// Label3
//
Self.Label3.AutoSize := True;
Self.Label3.BackColor := System.Drawing.SystemColors.ActiveBorder;
Self.Label3.Font
:= System.Drawing.Font.Create(' 宋 体 ', System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, (Byte(134)));
Self.Label3.Location := System.Drawing.Point.Create(40, 36);
Self.Label3.Name := 'Label3';
Self.Label3.Size := System.Drawing.Size.Create(66, 17);
Self.Label3.TabIndex := 0;
Self.Label3.Text := '登陆用户:'; //
// TWinForm1
9,
9,
西南交通大学网络教育毕业设计(论文)
第58页
//
Self.AutoScaleBaseSize := System.Drawing.Size.Create(6, 14);
Self.ClientSize := System.Drawing.Size.Create(290, 165);
Self.ControlBox := False;
Self.Controls.Add(Self.GroupBox1);
Self.FormBorderStyle
System.Windows.Forms.FormBorderStyle.SizableToolWindow;
Self.MaximumSize := System.Drawing.Size.Create(298, 191);
Self.MinimumSize := System.Drawing.Size.Create(298, 191);
Self.Name := 'TWinForm1';
Self.ShowInTaskbar := False;
Self.StartPosition
System.Windows.Forms.FormStartPosition.CenterScreen;
Self.Text := '用户登陆';
Self.TopMost := True;
Include(Self.Load, Self.TWinForm1_Load);
Self.GroupBox1.ResumeLayout(False);
Self.ResumeLayout(False);
end;
:=
:=
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务