《图书馆管理信息系统说明书》由会员分享,可在线阅读,更多相关《图书馆管理信息系统说明书(61页珍藏版)》请在金锄头文库上搜索。
1、 图书馆管理信息系统说明书(总 46 页) 本页仅作为文档封面,使用时可以删除 This document is for reference only-rar21year.March 2 图书馆信息管理系统 一、项目背景: 当今社会,计算机正被广泛的应用与各个领域。使用计算机进行信息化处理,能够大大提高管理人员的工作效率,同时,使用计算机解决问题可以节约大量的人力、物力。而系统作为计算机的核心,它具有操控整个计算机的功能。 二、项目目标 本系统开发的总体任务是实现图书馆的信息化管理。系统要完成对图书的增删改查等等,同时对系统设置权限,主要是设置用户的权限。例如学生和教师可以查询相关学生的有关信
2、息,学院的有关信息,出版社的有关信息,管理员的有关信息,图书的有关信息,管理员处理借书证的有关信息,学生借阅图书的有关信息,学院颁发借书证的有关信息,但是教师和学生不能对这些信息进行增删查改。而只有图书馆管理人员才能进行以上信息的增删改查,从而保证系统的安全性和完整性。但,管理员不能对管理员表进行增删查改,只有图书馆的主管才能对管理员的信息进行插入、删除、修改,这样可以保证这些表的信息不能任意地被篡改,保证系统的完整性,也使系统具有安全性。3 需求分析分为三个部分:需求的文字表述、数据流图、数据字典。 一、 需求分析 第一部分 调查用户需求 本系统的最终用户为在校学生,我们根据从图书馆方面取得
3、的图表资料、文字资料以及其他细节方面的信息,根据我们日常生活中的经验,根据我们所做的其他询问和调查,得出用户的下列实际要求: 1、学校的组织机构情况 调查是系统需求分析的重要手段,只有通过对用户深入细致的调查研究才能得到需要的信息。需求分析的重点是调查、收集和分析用户在数据管理中的信息需求、处理要求、安全性与完整性要求。 (1)信息要求是指用户需要从数据库中获得信息的内容与性质。通过信息要求可以导出数据要求,即在数据库中需要存储哪些数据。 (2)处理要求是指用户要求完成什么处理功能,对处理的响应时间有什么要求,处理方式是什么等,即功能要求和性能要求。 (3)数据安全性和完整性要求包括数据保密措
4、施和存取控制要求、数据自身的或数据之间的约束限制等。 新系统的功能必须能够满足用户的信息要求、处理要求、安全性和完整性要求。 2、需求分析调查的内容 与图书馆信息管理相关的学校的组织机构有:图书、学生、管理员、学院和出版社。学校的所有日常工作都是围绕着这三大部分进行的。 一个学校下设若干学院,如计算机学院、经济学院、法学院、财政金融学院、外国语学院等;一个学院下设若干专业,如计算机学院下设三个专业:信息管理与信息系统、计算机科学与技术和数学与应用数学、软件工程等等;一个专业有若干班级,如计算机学院的 2013 级信息管理与信息系统专业下设两个班级:信息 1 班、信息 2 班;一个班级有若干同学
5、。 一个学院给学生颁发了借书证,借书证号是对应的每个人的学号,一个学院可以给若干个学生颁发借书证,一个学生只能拥有唯一的借书证,并且一个学生只能附属于一个学院,也就是说一个借书证只能由一个学院颁发。 4 一个图书馆有若干本书,书有不同的作者,例如白落梅,曹雪芹等,书也有不同的出版社,如清华大学出版社等。一个学生可以借多本书,比如说借阅高等数学 、离散数学等等,一本书也可以由不同的学生在不同的时间进行借阅。 一个出版社可以出版若干本书,一本书也可以由不同的出版社多次出版。例如清华大学出版社可以出版高等数学,也可以出版大学英语。大学英语,可以由清华大学出版社出版,也可以由工业机械出版社出版。 图书
6、馆的一个管理员可以管理多本图书,一本图书也可以多个管理员管理。所以图书与管理员之间的关系也是多对多。 借阅图书,管理员会对学生的借书证进行处理,一个管理员可以处理若干个学生的借书证,但是一个学生的借书证在不同的时期也可以由不同的管理员进行处理,所以管理员与学生,即借书证的关系也是多对多的。 3、需求分析调查的方法 真正确定用户的最终需求其实是一件很困难的事情,一方面是因为用户缺少计算机知识,开始时无法确定计算机究竟能为自己做什么,不能做什么,因此不能一下子准确地表达自己的需求。另一方面是因为设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需求。 (1)跟班作业。 数据库设计人
7、员通过亲身参加业务工作来了解业务活动的情况。虽然能准确的理解用户的需求,但是比较耗费时间和精力。 (2)开调查会。 通过与用户座谈的方式来理解用户需求。 (3)请专人介绍。 请专人介绍的方法是一种尽快熟悉业务的好方法。对于某些业务活动的重要环节,可以请一些业务熟悉的专家或用户介绍业务专业知识。 (4)询问 对某些调查中的问题,可以找专人询问。 (5)分发调查问卷 4、调查相关部门的业务活动情况 教务处: 图书馆的管理员需要处理借阅以及归还的信息,因此在管理员那里,要存放学生借阅和归还的信息,通过调查管理员处理借书证的信息,可以了解到学生在图书馆借阅信息的总结和情况。 3、用户对系统的要求 信息
8、要求: 由于系统的使用主体是管理员和学生,因此对系统的信息要求可分为以下几个方面: a、 管理员信息 5 管理员的基本信息,主要包括管理员的管理员编号,管理员姓名,性别,职称,电话,QQ号等; b、学生信息 学生的基本信息,主要包括学生的学号,姓名,性别,年龄,班级,学院名;5 c、 学院信息 学院的基本信息,主要包括学院名,地址,电话,QQ号等; d、出版社信息 出版社的基本信息,主要包括出版社名,地址,电话,QQ号等; e、 图书信息 图书的基本信息,主要包括图书书号,书名,出版社,作者,出版年份,出版月份,出版日期,版次,库存量,价格等; 处理要求: 学校现存系统存在的问题: 图书馆信息
9、管理系统存在的问题 1、管理人员认识不足,目前图书馆信息管理中很大一部分管理人员网络技术不高,虽然图书馆配备信息管理系统,但是受传统的管理思维模式的约束,不能有效的进行公共信息共享,阻碍了图书馆各个系统资源的整合。 2、管理传播的力度不强,对于公共型信息的管理和传播欠缺专业化。专门化的发展方向,由于传播力度不强,导致图书馆空设有电子阅览室,资源的过剩与需求的无法满足形成强烈的矛盾。 3、信息服务方式有待健全,目前信息管理系统的运用中用户的针对性不强,为了以最快的方式满足用户的信息需求,应当采用一对一的资源服务,即用户是什么专业,经常看怎样的书籍,需要记录并统计下来,以便为下次阅览提供有效的信息
10、内容,不仅满足于“人找信息”,更要实现“信息找人”。 系统应当完成以下的信息处理: 1、强化信息管理意识 6 强化图书馆信息管理意识,即在登录界面,设置用户的权限,普通用户,即学生和教师无法进行信息的修改和删除,但是管理人员作为管理信息的主体,有必要进行这一方面的工作,而管理人员本身的信息要通过主管来进行修改。 2、提高系统信息管理水平 图书馆信息管理中管理员计算机应用水平的高低直接影响着图书馆信息管理的质量。因此,提高信息管理系统的应用水平,首先要提高管理员的信息技术操作水平, 3、借鉴、学习先进的信息管理体系开发 信息管理系统是一项时间长、任务大、过程复杂的工作,需要多方人员的鼎力合作。因
11、此,在运用信息管理系统中可以加强借鉴和学习的成分,少走弯路,不走错路,通过学习别人的先进的系统,从而对自己的进行改善。 (1)管理员管理子系统; 管理员通过这个功能,可以实现对图书信息的插入、删除、修改、查询;可以实现对学生信息的插入、删除、修改、查询;可以实现对出版社信息的插入、删除、修改、查询;6 可以实现对学院信息的插入、删除、修改、查询;但是作为管理员不能修改自己的有关信息,必须由主管对管理员信息进行删改。 (2)学生查询; 学生通过这个功能,可以查询相关学生的有关信息,学院的有关信息,出版社的有关 信息,管理员的有关信息,图书的有关信息,管理员处理借书证的有关信息,学生借 阅图书的有
12、关信息,学院颁发借书证的有关信息。 (3)教师查询; 学生通过这个功能,可以查询相关学生的有关信息,学院的有关信息,出版社的有关 信息,管理员的有关信息,图书的有关信息,管理员处理借书证的有关信息,学生借 阅图书的有关信息,学院颁发借书证的有关信息。 (4)借阅图书子系统; 学生通过这个功能,可以查询自己的借阅情况详情,以便于确定借阅的时间,以及超 时的超额金额的支付,还能查到自己以前借书的数量。 (5)主管管理子系统 管理员通过这个功能,可以实现对图书信息的插入、删除、修改、查询;可以实现对学生信息的插入、删除、修改、查询;可以实现对出版社信息的插入、删除、修改、查询; 7 可以实现对学院信
13、息的插入、删除、修改、查询;作为主管可以实现对管理员信息的插入、删除、修改、查询; 安全性与完整性要求: 安全性要求: a、 系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证 用户身份不被盗用; b、系统应对不同的数据设置不同的访问级别,限制访问用户的身份,保证用户能查询和处理数据的类别和内容; c、系统应对不同用户设置不同的权限,区分不同的用户,如学生、教师和图书馆管理人员。学生和教师(可以查询相关学生的有关信息,学院的有关信息,出版社的有关信息,管理员的有关信息,图书的有关信息,管理员处理借书证的有关信息,学生借阅图书的有关信息,学院颁发借书证的有关信息。),图
14、书馆管理人员(以上信息的增删改查)。 完整性要求:7 a、实体完整性避免出现重复行(设置主键) 在数据正确输入的前提下,不出现重复行实际是反映了表的每一行的所有列值所构成的信息是完整的,而确保实体完整性的基本方法就是为对应的表设置主键。实体完整性规定基本关系的所有主关键字对应的主属性都不能取空值。实体完整性规则针对基本关系,一个基本表关系表通常对应一个实体集。像图书管管理系统的 book 表就可以取 BN(书号)作为主键,student表就可以取SN(借书证号)作为主键,管理员表可以将MN(管理员编号)作为主键。 b、参照完整性表之间的数据一致性(创建关系) 假如图书和出版社这两个关系之间存在
15、着属性的引用,即图书关系引用了班级关系的主关键字 Pname(“出版社名称”)。显然,图书关系中的“出版社名称”必须是在出版社表中确实存在的出版社名称,即出版社关系中有该出版社的记录。而图书表的出版社名称就是外键。删除某个出版社的元组之前,必须先删除相应的引用该出版社的图书元组。 c、用户自定义完整性表中数据的合理性和有效性(创建约束) 任何关系数据库系统都应该支持实体完整性和参照完整性。此外,根据现实世界中应用环境的不同,需要针对某一具体要求来定义约束,例如,在出版月份,要设置月份是在 112之间,日期要在 131之间;性别只能设置为“男”或者“女”。这些数据约束在关系模型中称为用户自定义完
16、整性。 4、确定系统的边界 经对前面的需求调查和初步的分析,确定由计算机完成的工作时对数据进行各种管理和处理,具体的工作内容见第二部分, 由手工完成的工作主要有对8 原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;以及系统的日常维护。 第二部分 系统功能的设计和划分 根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几个子系统: (1)管理员管理子系统; (2)学生查询; (3)教师查询; (4)借阅图书子系统; (5)主管管理子系统; 1管理员基本信息子系统: (1)主页面 通过面板和窗体设置,实现人机和谐的页面,通
17、过调用函数可以实现在多个页面之 间进行跳转。 (2)信息插入8 先用 JDBC 连接数据库,然后实现登录界面的设置,设置只有管理员才有权限对系 统进行一系列信息的增删改查,然后通过 SQL语句(insert)与 Java的面向对象程序 语言的设计,实现图书信息插入。 (3)信息删除 连接数据库,进入删除页面,通过选择需要的删除方式,删除语句(delete)进行 图书信息的删除。 (4)信息修改 连接数据库,进入修改页面,先进行查询,查看所选中的书号的图书信息,然后通 过下拉菜单选中需要更改的选项,再通过更新语句(update)进行图书信息的修改。 (5)信息查询 连接数据库,进入查询页面,选中
18、你需要的查询方式,分为全体检索,快速检索和 高级检索三种,再通过滚动条的方式显示出查询的结果。 2学生查询; (1)图书信息查询 通过对图书信息的查询,能够对图书进行索引,从而选择出你要查找的图书,然后 9 进行借阅等操作。 (2)管理员信息查询 通过对管理员信息的查询,保证管理员信息的公开性,也维护系统的安全性,明确 责任关系,便于监督。 (3)学生信息查询 通过对学生自身信息的查询,可以了解到有关学生的信息,可以在借书证丢失时, 进行信息的补办; 3教师查询; (1)图书信息查询 通过对图书信息的查询,能够对图书进行索引,从而选择出你要查找的图书,然后9 进行借阅等操作。 (2)管理员信息
19、查询 通过对管理员信息的查询,保证管理员信息的公开性,也维护系统的安全性,明确 责任关系,进行多方面监督。 (3)学生信息查询 通过对学生自身信息的查询,可以了解到有关学生的信息,在要用到学生信息时, 可以直接查询调用。 4借阅图书子系统; (1)图书借阅 可以查询到学生的借阅情况详情,以便于确定借阅的时间,以及超时的超额金额的 支付,还能查到以前借书的数量。 (2)处理借书证 可以查询到管理员处理借书证的信息,从而保持管理员工作的公开性,也便于主管 审查管理员工作。 5主管管理子系统; 相对于管理员管理系统增加一个管理员信息的增删改查的功能,由于作为管理员工作 10 的监督主体,具有保证管理
20、员工作的职责,所以只有主管才能对管理员信息进行增删 改查。 经上述分析,我们已经得到了对于该系统的基本要求和系统模块的划分,综上,我们对 图书基本信息系统,学生基本信息系统,出版社基本信息系统,借阅图书基本信息系统,处理借书证基本信息系统,管理图书基本信息系统进行具体的数据库设计,在需求分析中形成的数据流图如下: 二、数据流图 管理员基本信息子系统: (1)信息插入子系统(以图书为例) 步骤: 10 通过输入用户名、密码进入主界面,注意身份要选择管理员,选择图书信息系统,然后在图书信息系统的下拉菜单中选择图书信息插入子系统,根据提示,输入你插入的信息,点击确定,如果信息无误,则插入成功,若图书
21、信息输入有误,则显示重新插入,出版社由于出版社名在出版社表中作为主键,所以不存在为空的情况,出版社名作为图书表的外键,来自于出版社表,因此插入失败,要重新插入,所以,出版社的信息要来自于出版社表。 流程图: (2)信息删除子系统(以借阅为例) 步骤: 11 通过输入用户名、密码进入主界面,注意身份要选择管理员,选择图书信息系统,然后在图书信息系统的下拉菜单中选择图书信息删除子系统,根据提示选择你需要的图书信息删除方式,分为删除学生和删除图书。一种是学生毕业,要更新学生信息时,要输入该学生的学号,判断输入的内容是否为空,为空,则重新输入,不为空,学号存在,则删除成功,学号不存在时,显示输入错误,
22、重新输入。另一种是删除图书,主要针对于图书丢失等意外,需要删除与图书相关的信息,输入该图书的图书号,然后判断该图书信息是否存在,存在,删除成功,不存在,重新输入。 数据流程图: 12 (3)信息修改子系统(以图书为例) 步骤: 通过输入用户名、密码进入主界面,注意身份要选择管理员,选择图书信息系统,然后在图书信息系统的下拉菜单中选择图书信息修改子系统,先输入书号,查询该图书是否存在,存在则输出图书的相关信息,然后选择你需要修改的图书的某一项,再根据需要输入你要更改的数据,点击确定,保存成功,跳出另一个界面,点击查询能够显示你所更改后的信息,在修改版次时,调用两 张 表 , 将 江 苏 的 出
23、版 社 出 版 的 图 书 的 版 次 都 设 置 为10 。12 数据流程图: (4)信息查询子系统(以图书为例) 步骤: 通过输入用户名、密码进入主界面,注意身份要选择管理员,选择图书信息系统,然后在图书信息系统的下拉菜单中选择图书信息查询子系统,查询分为全部检索,即输出图书馆所有图书的信息,快速检索,即根据书号检索,高级检索,即通过多个条件检索三种查询方式。 数据流程图: 13 管理员 进 入 输入用户名,密 主 页 面 选 择 13 学生查询子系统: 步骤: 通过输入用户名、密码进入主界面,注意身份要选择学生,选择信息查询子系统。 数据流程图:查询子系图书信息系统 选 择 选 择 是否
24、出版社 快速检1,2,3查 询 否 输 入 书 号 全部检全部数作 者 输查输输1 快速检根据条件 查 询 图书信书 名 2 3 查 询 查 询 图书信图书信图书信全1,2,314 教师查询子系统: 借阅信息查询子系统: 步骤: 通过输入用户名、密码进入主界面,注意身份要选择管理员,选择借阅信息查15 询子系统。 数据流程图:15 三、数据字典 教室管理信息系统各实体及联系的数据字典 1.出版社数据字典: 属性名 存储代码 类型 长度 备注 出版社名 Pname Char 15 出版社名称(主键) 地址 adress Char 20 出版社的地址 电话 telephone Char 11 出版
25、社的电话 QQ号 qq Char 10 出版社的 QQ号 2.学院数据字典: 属性名 存储代码 类型 长度 备注 学院名 Dname Char 4 学院的名称(主键) 地址 adress Char 15 学院的地址 电话 telephone Char 11 学院的电话 QQ号 Qq 号 Char 10 学院的 QQ 号 3 图书数据字典: 属性名 存储代码 类型 长度 备注 图书书号 BN Char 10 图书的书号(主键) 图书书名 BName Char 20 图书的名称 16 出版社名 Pname Char 15 出版社的名称 作者 author Char 4 图书的作者 出版年份 Pye
26、ar Char 4 图书的出版年份 出版月份 Pmonth Char 2 图书的出版月份(112) 16 出版日期 Pday Char 2 图书的出版日期(130) 版次 Ptime Char 10 图书的版次 库存量 leftnum Char 10 图书的库存量 价格 price Char 10 图书的价格 4.管理员数据字典: 属性名 存储代码 类型 长度 备注 管理员编号 MN Char 6 管理员编号(主键) 姓名 Mname Char 10 管理员姓名 性别 sex Char 2 管理员性别(男、女) 职称 rank Char 20 管理员职称 (主管、管理员) 电话 telepho
27、ne Char 10 管理员的联系方式 5.学生数据字典: 属性名 存储代码 类型 长度 备注 学号(借书证号) SN Char 8 借书证号(主键) 姓名 SName Char 8 学生姓名 性别 sex Char 4 学生性别(男、女) 年龄 age Char 2 学生的年龄 班级 class Char 12 学生所在班级 学院 Dname Char 15 学生所在学院 6.借阅图书数据字典: 属性名 存储代码 类型 长度 备注 书号 BN Char 10 图书的书号(外键) 学号 SN Char 8 学生的借书证号(外键) 借阅数量 Bnumber Char 10 学生借阅的数量 借阅年
28、份 Byear Char 4 学生借阅的年份 借阅月份 Bmonth Char 2 学生借阅的月份(112) 借阅日期 Bday Char 2 学生借阅的日期(130) 归还年份 Ryear Char 4 学生归还的年份 归还月份 Rmonth Char 2 学生归还的月份(112) 17 归还日期 Rday Char 2 学生归还的日期(130) 借阅时间 Btime Char 2 学生借阅的天数 17 7.管理图书数据字典: 属性名 存储代码 类型 长度 备注 管理员编号 MN Char 6 管理员的编号(外键) 书号 SN Char 10 图书的书号(外键) 管理数量 Mnumber C
29、har 8 管理员管理图书的数量 管理地址 adress Char 10 管理员管理图书的地址 8.处理借书证数据字典: 属性名 存储代码 类型 长度 备注 借书证号 SN Char 8 学生的借书证号(外键) 管理员编号 MN Char 6 管理员的编号(外键) 处理年份 Dyear Char 4 处理借书证的年份 处理月份 Dmonth Char 2 处理借书证月份(112) 处理日期 Dday Char 2 处理借书证日期(130) 图书馆管理信息系统分 E-R 图 (1)学生 18 18 (2)图书 (3)管理员 (4)出版社 (5)学院19 (6)学院颁发借书证 (7)学生借阅图书
30、20 (8)管理员管理图书 (9)出版社出版图书 (10)E-R总图 将出版社,学生,管理员,图书,学院信息整合到一起,合成总 E-R 图。 确定每个实体间的联系,确定是一对一,一对多,或者还是多对多。21 数据流图(以借阅图书为例) 包括学生表,图书表,图书借阅表 图书借阅的数据流图 (1)由数据流图,可得“图书借阅信息”的数据流描述为:22 数据流名:图书借阅信息 说明:学生所借阅图书的信息 数据流来源:“图书借阅”处理 数据流去向:“图书借阅”存储 组成:借书证号,书号 平均流量:每天 25 个 高峰期流量: 每天 100个 (2)由数据流图,可得“图书借阅”的数据存储描述为: 数据存储
31、名:图书借阅 说明:记录学生借阅书籍的信息 编号:(无) 流入的数据流:图书借阅信息 流出的数据流:图书借阅信息 组成:借书证号,书号,借阅数量,借阅时间 数据量:50000 个记录 存取方式:随机存取 以下是图书馆管理信息系统的关系模型: 1.管理员(管理员编号,姓名,性别,职称,电话) 2.学生(借书证号,姓名,性别,年龄,班级,学院) 23 3.出版社(出版社名,地址,电话,qq) 4.学院(学院名,地址,电话,qq) 5.图书(书号,书名,出版社,作者,出版年份,出版月份,出版日期,版次,库存量, 价格) 6.图书借阅(书号,学号,借阅数量,借阅年份,借阅月份,借阅日期,归还年份,归还
32、月份,归还日期,借阅时间) 7.管理图书(管理员编号,书号,管理数量,管理地址) 8.处理借书证(学号,管理员编号,处理年份,处理月份,处理日期) 性能优化:23 1 设置学生和教师对图书馆管理系统的增删改,只能实现管理员对相关信息的增删改,而教师和学生只能进行查询,同时,设置主管对管理员信息的增删改,保证系统的安全性约束。 2 通过建立 QUERY 视图,把学生表,图书表,管理员表,借阅表等等八个表统一起来,从而能够更加直观看出几个表之间的关系和联系 3 在建立表中,保证用户定义完整性,设置主键,约束,关系,索引,触发器等等。 一、关系模式存取方式选择 图书馆信息系统是一个多用户共享系统,对
33、同一个关系要建立多条存取路径才能满足多用户的多种应用要求。数据库管理系统一般提供多种存取方法。常用的存取方法有三类:一是索引方法,目前主要是 B+树索引方法;第二类是聚簇方法,第三类是 Hash 方法。 B+树索引是数据库中经典的存取方法,使用最普遍。我们的数据库管理信息系统在系统建立过程中自动创建了 B+树索引。 二、确定数据库的存储结构 数据库的存储结构也就是数据库存储数据的方式,主要分为逻辑存储结构和物理存储结构。逻辑存储结构主要用于描述在 Oracle 内部的组织和管理数据的方式;而物理存储结构则用于描述在 Oracle 外部,即操作系统中组织和管理24 数据的方式。确定数据库物理结构
34、主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。 三、评价物理结构 在开发图书馆管理信息系统的过程中,我们综合考虑了系统的时间效率、空间效率、维护代价和各种用户要求进行了权衡。评价物理数据库的方法完全依赖于所选用的 DBMS,通过评价,我们的设计比较趋于人机和谐,并且能够实现基础信息的增加、删除、修改、查询,也能够设置一定的权限,保证系统的正常实施和运行。 24 创建约束: 设置 Pmonth,Pday,sex 等等的约束 (Pmonth0 and Pmonth0 and Pday32),sex=男or sex=女 设置主键: 设
35、置 manager 的主键为 MN 等等 创建关系: 设置图书的出版社是来自于出版社表等等实 施 运 维 25 创建索引: 设置管理员表按照姓名升序排列,且 QQ 号唯一 创建视图: 1、图书借阅视图 (1)代码: CREATE VIEW dbo.bookcaseView AS SELECT dbo.book.BN, dbo.student.SN, dbo.book.BName, dbo.student.Sname, dbo.borrowandreturn.Bnumber,dbo.borrowandreturn.Byear FROM dbo.borrowandreturn INNER JOIN
36、 dbo.book ON dbo.borrowandreturn.BN = dbo.book.BN INNER JOIN dbo.student ON dbo.borrowandreturn.SN = dbo.student.SN26 (2)截图: 2、管理图书视图 (1)代码: CREATE VIEW dbo.bookcaseView1 AS SELECT dbo.manager.MN, dbo.book.BN, dbo.manager.MName, dbo.book.BName, dbo.managerbook.Madress, dbo.managerbook.Mnum FROM dbo.
37、managerbook INNER JOIN dbo.manager ON dbo.managerbook.MN = dbo.manager.MN INNER JOIN dbo.book ON dbo.managerbook.BN=dbo.book.BN 27 3、处理借书证视图27 (1)代码: CREATE VIEW dbo.bookcaseView1 AS SELECT dbo.manager.MN, dbo.manager.MName, dbo.student.SN, dbo.student.Sname, dbo.dealbookcard.Dyear, dbo.dealbookcard
38、.Dmonth, dbo.dealbookcard.Dday FROM dbo.dealbookcard INNER JOIN dbo.student ON dbo.dealbookcard.SN = dbo.student.SN INNER JOIN dbo.manager ON dbo.dealbookcard.MN = dbo.manager.MN (2)截图: 创建触发器: (1)在 book 表创建触发器: if exists(select Name from SYSOBJECTS where Name=StuInsert_Tr and TYPE=Tr) drop trigger S
39、tuInsert_Tr go create trigger StuInsert_Tr on book for insert as select Please Check Student INSERT! select * from book Go (2)在 book 表插入数据 insert into book values(2013143191,大学化学,清华大学出版社,李岚,2014,4,23,8,20,20) 28 28 (3)查看触发器 SP_HELPTRIGGER book,INSERT 创建存储过程: (1)在 book 表中创建存储过程 use Library go if exis
40、ts(select Name from SYSOBJECTS where Name=StuQuery_Pro and TYPE=P) drop procedure StuQuery_Proc go create procedure StuQuery_Pro BN varchar(8)=NULL as if BN is null select Please Input BN! else select BN,BName,Pname from book where BN=BN (2)查看存储过程 use Library go StuQuery_Proc 2013143101 功能实现: (1)登录界
41、面29 源代码: Connection conn; ResultSet rs=null; try conn=getConn(); Statement stmt=conn.createStatement();/创建 SQL 命令对象 String a2=select * from user1 where username=+txtUsername.getText()+and password=+txtPassword.getText()+and depart=+lst.getSelectedItem()+; rs=stmt.executeQuery(a2); if(rs.next()&!txtU
42、sername.getText().equals() if(e.getSource()=btnOK) stmt.executeQuery(a2); JOptionPane.showMessageDialog(null, 登录成功!); this.dispose(); new MyMenu(); else if(e.getSource()=btnCancel) JOptionPane.showMessageDialog(null, 请输入登录信息!); this.dispose(); new LoginWindow(); 30 else JOptionPane.showMessageDialog
43、(null, 用户名、密码或者身份错误!请重新输入); this.dispose(); new LoginWindow(); catch (Exception e1) / TODO Auto-generated catch block e1.printStackTrace(); (2)主菜单 源代码: public void actionPerformed(ActionEvent e ) JMenuItem mi=(JMenuItem) e.getSource(); if (mi=intro) if(man.isSelected()|tea.isSelected() dispose(); ne
44、w Add(); else 31 JOptionPane.showMessageDialog(null, 用户不具有该权限!); dispose(); new MyMenu(); if (mi=zixun) if(tea.isSelected() dispose(); new manAdd(); else JOptionPane.showMessageDialog(null, 用户不具有该权限!); dispose(); new MyMenu(); if (mi=add) if(man.isSelected()|tea.isSelected() dispose(); new StuAdd();
45、 else JOptionPane.showMessageDialog(null, 用户不具有该权限!); dispose(); new MyMenu(); if (mi=boradd) if(man.isSelected()|tea.isSelected() dispose(); new BorAdd(); 32 else JOptionPane.showMessageDialog(null, 用户不具有该权限!); dispose(); new MyMenu(); if(mi=exl) System.exit(0); (3)信息添加 源代码:33 try conn=getConn(); S
46、tatement stmt=conn.createStatement();/创建 SQL 命令对象 String a2; a2=insert into book(BN,BName,Pname,author,Pyear,Pmonth,Pday,Ptime,leftnum,price); a2=a2+values(+txtBookNumber.getText().trim()+,+txtBookname.getText().trim()+,+txtPublisher.getText().trim()+,; a2=a2+txtAuthor.getText().trim()+,+txtyear.get
47、Text().trim()+,+txtmonth.getText().trim()+,; a2=a2+txtday.getText().trim()+,+txtPublishTime.getText().trim()+,+txtLeftNumber.getText().trim()+,; a2=a2+txtPrice.getText().trim()+); if(e.getSource()=btnOK&!txtBookNumber.getText().trim().equals() stmt.executeUpdate(a2); System.out.println(a2); System.o
48、ut.println(录入成功); JOptionPane.showMessageDialog(null, 录入成功); this.dispose(); new MyMenu(); else if(e.getSource()=btnOK&txtBookNumber.getText().trim().equals()&txtPublisher.getText().trim().equals() JOptionPane.showMessageDialog(null, 书号不能为空); else if(e.getSource()=btnCancel) this.dispose(); new MyMe
49、nu(); else JOptionPane.showMessageDialog(null, 图书信息输入有误!请重新输入); this.dispose(); new Add(); catch (Exception e1) / TODO Auto-generated catch block e1.printStackTrace(); 34 (4)信息删除 源代码: public class DeleBook extends JDialog implements ActionListener JTextField txtBName= new JTextField(12); JButton btn
50、OK=new JButton(确定); JButton btnCancel=new JButton(取消); public DeleBook()35 Container contentPane=this.getContentPane(); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); p1.add(new JLabel( 请输入要删除的书号:); p2.add(txtBName); p3.add(btnOK); p3.add(btnCancel); contentPane.setLayout( n
51、ew FlowLayout() ); contentPane.add(p1); contentPane.add(p2); contentPane.add(p3); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); btnOK.addActionListener(this); btnCancel.addActionListener(this); txtBName.addActionListener(this); setSize(250,160); Dimension size=Toolkit.getDefaultToolkit().getScr
52、eenSize(); setLocation(size.width-300)/2,(size.height-300)/2); setTitle(借阅信息删除); setModal(true); setResizable(false); setVisible(true); Override public void actionPerformed(ActionEvent e) Connection conn; ResultSet rs=null; try conn=getConn(); Statement stmt=conn.createStatement();/创建SQL 命令对象 String
53、 a2; a2=select * from borrowandreturn where BN=+txtBName.getText().trim()+; if(e.getSource()=btnOK) if(stmt.executeQuery(a2).next()36 JOptionPane.showMessageDialog(null, 该图书的借阅信息存在); this.dispose(); a2=delete from borrowandreturn where BN=+txtBName.getText().trim()+; System.out.println(a2); stmt.exe
54、cuteUpdate(a2); System.out.println(借阅信息删除成功!); JOptionPane.showMessageDialog(null, 删除成功); new MyMenu(); else JOptionPane.showMessageDialog(null, 该图书的借阅信息不存在!请重新输入!); this.dispose(); new DeleBook(); else if(e.getSource()=btnCancel) this.dispose(); new Borrowdel(); catch (Exception e1) / TODO Auto-gen
55、erated catch block e1.printStackTrace(); Override public void actionPerformed(ActionEvent e) Connection conn; ResultSet rs=null; try conn=getConn(); Statement stmt=conn.createStatement();/创建 SQL 命令对象 String a2;37 a2=select * from borrowandreturn where SN=+txtBName.getText().trim()+; if(e.getSource()
56、=btnOK) if(stmt.executeQuery(a2).next() JOptionPane.showMessageDialog(null, 该借书证号的借阅信息存在); this.dispose(); a2=delete from borrowandreturn where SN=+txtBName.getText().trim()+; System.out.println(a2); stmt.executeUpdate(a2); System.out.println(借阅信息删除成功!); JOptionPane.showMessageDialog(null, 借阅信息删除成功)
57、; new MyMenu(); else JOptionPane.showMessageDialog(null, 该借书证号不存在!请重新输入!); this.dispose(); new DelStu(); else if(e.getSource()=btnCancel) this.dispose(); new Borrowdel(); catch (Exception e1) / TODO Auto-generated catch block e1.printStackTrace(); Override public void actionPerformed(ActionEvent e)
58、Connection conn; ResultSet rs=null; try conn=getConn();38 Statement stmt=conn.createStatement();/创建 SQL 命令对象 String a2; a2=select * from student where SN=+txtDname.getText().trim()+; if(e.getSource()=btnOK&tea.isSelected() this.dispose(); new DeleBook(); else if(e.getSource()=btnOK&stu.isSelected()
59、this.dispose(); new DelStu(); else if(e.getSource()=btnCancel) this.dispose(); new MyMenu(); catch (Exception e1) / TODO Auto-generated catch block e1.printStackTrace(); (5)信息修改39 40 源代码: conn=getConn(); Statement stmt=conn.createStatement();/创建 SQL 命令对象 if(e.getSource()=btnOK) String a2; a2=select
60、* from book where BN=+txtBookNum.getText().trim()+; if(stmt.executeQuery(a2).next() this.dispose(); System.out.println(a2); a2=update book set BName=+txtBKName.getText().trim()+ where BN=+txtBookNum.getText().trim()+; stmt.executeUpdate(a2); System.out.println(a2); 41 System.out.println(图书信息修改成功!);
61、JOptionPane.showMessageDialog(null, 图书信息修改成功); this.dispose(); new Print(); else JOptionPane.showMessageDialog(null, 该图书不存在!请重新输入!); this.dispose(); new SearchBkname(); else if(e.getSource()=btnCancel) this.dispose(); new SearchBk(); catch (Exception e1) e1.printStackTrace(); (6)信息查询 快速检索:42 查询结果如下:
62、 43 高级检索: 全部检索:44 源代码: public void actionPerformed(ActionEvent e ) if(e.getSource()=btnSave) Connection conn; ResultSet rs =null; String a = null; try conn=getConn(); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);/创建 SQL 命令对象 a=select * from book;
63、rs=stmt.executeQuery(a); int i=0; while(rs.next() ari0=rs.getString(1); ari1=rs.getString(2); ari2=rs.getString(3); ari3=rs.getString(4); ari4=rs.getString(5); ari5=rs.getString(6); ari6=rs.getString(7); ari7=rs.getString(8); ari8=rs.getString(9);45 ari9=rs.getString(10); i+; repaint(); catch (Exception e1) / TODO Auto-generated catch block e1.printStackTrace(); if(e.getSource()=btnCancel) setVisible(false); new BookSearch();