第一篇:综合数据库管理系统投资估算建议
MIKELIU 说:
在项目建议书阶段,关于项目投资估算,一般项目会从以下几个方面测算:
1、硬件设备购置费
2、系统软件购置费
3、数据源采购费(如:影像数据的购买)
4、数据生产加工费(如:影像数据处理、数据矢量化、底图生产)
5、数据库建设费(如:数据库设计、数据建库)
6、软件定制开发与集成费(如:各系统的需求、设计、开发以及各个系统集成)
7、其他工程费(如:前期工作、工程监理、招投标、标准规范、培训等)
8、项目预备费用
具体的测算依据和考虑的要点一般为:
1、硬件设备采购,一般会考虑采购的型号、数量,一般会有推荐型号,最好是大众型品牌,便于资金审核部门的市场调查和考核。
2、系统软件的采购一般为操作系统、数据库、GIS平台等,如项目有自主化考虑,还需考虑国产软件采购。
3、数据源的采购,多为影像数据购买和其他专业数据的协议购买,需说明购买的量,依据市场平均价格进行测算。
4、数据生产加工费用,主要从加工的数据面积、数据规格要求、工作量来测算费用;
5、数据建库费用,一般为两部分:数据库设计方案的编制与论证;具体的数据库建库费用,主要是从数据的检查、处理、入库的工作量来测算。
6、软件定制开发与集成费,先各个系统分别测算再集成测算;
7、其他工程为事物型工作支出;
各部分的具体资金占比会根据不同项目性质会有所不同:
1、基础建设类项目:1、2、3、费用可估高些;
2、数据库、系统工程建设类项目:4、5、6、费用可估高些;
侧重数据的: 数据与系统的占比 6:4的居多;
侧重系统集成的:数据与系统的占比 4:6的居多;
3、综合类项目:各部分的可均衡些;
第二篇:案例 数据库管理系统综合应用--
实验十二
数据库管理系统综合应用
-------图书管理系统系统一、实验目的:
通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握所讲解的内容。
二、实验简述:
一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加、删除和修改以及学生借阅、续借、归还的确认。
三、实验要求:
完成该系统的数据库设计;
用SQL实现数据库的设计,并在SQL Server上调试通过。
四、参考答案:
1、需求分析(1)学生
学生的操作流程如图B.1所示。
登录查询书籍预定书籍续借书籍注销图B.1 学生操作分类表
(2)管理员
管理员可完成书籍和学生的增加、删除和修改以及对学生借阅、续借、归还的确认,其操作流程如图B.2所示。
登录书籍信息维护学生信息维护借阅图书确认归还图书确认注销图B.2 管理员操作分类表
2、概念模型设计
数据库需要表述的信息有以下几种:(1)图书信息(2)学生信息(3)管理员信息
(4)学生预定图书信息
(5)学生借阅归还图书信息
可以用E/R模型表述该模型的设计,E/R图如图B.3所示。
姓名学号学生预定续借系别书号借阅作者出版社图书书名归还语种出版年管理员编号姓名图B.3 模型的E-R图
3、逻辑设计
通过E/R模型到关系模型的转化,可以得到如下关系模式:
(1)Book(BookID,Title,Author,Publisher,Pyear,Language)(2)Student(ID,Name,Dept)(3)Assistent(ID,Name)
(4)BBook(BookID,StdID,BDate)(5)RBook(BookID,StdID,RDate)
(6)Lend(StdID,AstID,BookID,LDate)
2(7)Return(StdID,AstID,BookID,RDate)
说明
(1)书号是图书的键码,每本书有惟一的书号,一个学生可同时借阅多本书。一个管理员可处理多个同学的借阅等事宜。
(2)一般情况下,学生、管理员和图书之间的联系为1:1:n,借书关系Lend作为连接关系,其键码为n端实体集的键码,即书号为借书关系的键码。这反映了如果还书时也把当初的借书记录删除,则书号就能惟一识别一个元组。
如果还书时不同时删除借书记录,则意味着同一本书前后可借给不同的学生,于是学生、管理员和图书之间的联系变为m:1:n,这时借书关系的键码为书号和学号的组合。
如果在不删除借书记录的情况下,同一学生再次借同一本书,这时,学生、管理员和图书之间的联系变为m:p:n,于是,借书关系的键码为书号、学号和管理员号的组合。但这里有一个隐含的信息,即同一学生前后两次借同一本书所遇到的管理员不同,而这种不同可能仅仅是“日期”不同。因此,借书日期成了必不可少的成分,也就是说,在这种情况下,属性全集才是借书关系的键码。
总之,借书关系的键码与图书管理模式有关,读者可按照自己的理解确定键码,并编写相应的事务处理流程。其他关系也有类似之处。
(3)要知道图书当前的状态,是在图书馆存放,还是被借阅等,需要在Book的模式中增加对应项用以表示图书当前的状态。比如我们增加State,并且约定取值和状态的对应关系如下:
1)在图书馆中并且没有被预定 2)在图书馆中并且已被除数预定 3)被借出并且没能被预定 4)被借出并且已被预定
4、物理设计
为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引。下面是各表中建立索引的表项:
Book(BookID)
Student(ID)
5、用SQL实现设计(1)建立Book表 CREATE TABLE Book(BookID
varchar(20)PRIMARY KEY,Title
varchar(50)NOT NULL,Author
varchar(50),Publisher varchar(50),Pyear
char(4),Language char(1)DEFAULT ’c’,State
char(1)DEFAULT ’0’);
(2)建立Student表 CREATE TABLE Student 3(ID
varchar(6)PRIMARY KEY,Name
varchar(20)NOT NULL,Dept
varchar(20)NOT NULL);
(3)建立Assistent表 CREATE TABLE Assistent(ID
varchar(6)PRIMARY KEY,Name
varchar(20)NOT NULL,);
(4)建立BBook表 CREATE TABLE BBook(BID
varchar(20)NOT NULL,StdID
varchar(6)
NOT NULL,BDate
datetime
NOT NULL, CONSTRAINT FK_BBOOK_BID
FOREIGN KEY(BID)REFERENCES Book(BookID), CONSTRAINT FK_BBOOK_StdID
FOREIGN KEY(StdID)REFERENCES Student(ID));
(5)建立RBook表 CREATE TABLE RBook(BookID
varchar(20)NOT NULL,StdID
varchar(6)NOT NULL,RDate
datetime
NOT NULL, CONSTRAINT FK_RBOOK_BookID
FOREIGN KEY(BookID)REFERENCES Book(BookID), CONSTRAINT FK_RBOOK_StdID
FOREIGN KEY(StdID)REFERENCES Student(ID));
(6)建立Lend表 CREATE TABLE Lend(StdID
varchar(6)NOT NULL,AstID
varchar(6)NOT NULL,BookID
varchar(20)NOT NULL,4 LDate
datetime
NOT NULL, CONSTRAINT FK_LEND_StdID
FOREIGN KEY(StdID)REFERENCES Student(ID), CONSTRAINT FK_LEND_AstID
FOREIGN KEY(AstID)REFERENCES Assistent(ID), CONSTRAINT FK_LEND_BookID
FOREIGN KEY(BookID)REFERENCES Book(BookID));
(7)建立Return表 CREATE TABLE Return(StdID
varchar(6)NOT NULL,AstID
varchar(6)NOT NULL,BookID
varchar(20)NOT NULL,RDate
datetime
NOT NULL, CONSTRAINT FK_RETURN_StdID
FOREIGN KEY(StdID)REFERENCES Student(ID), CONSTRAINT FK_ RETURN _AstID
FOREIGN KEY(AstID)REFERENCES Assistent(ID), CONSTRAINT FK_ RETURN _BookID
FOREIGN KEY(BookID)REFERENCES Book(BookID));
(8)管理员操作 1)增加学生:
INSERT INTO Student(ID, Name, Dept)VALUES(#StdNo, #Name, #Dept);2)删除学生:
DELETE FROM Student WHERE(ID=#ID);3)修改学生信息:
UPDATE Student SET Name=#Name, Dept=#Dept WHERE(ID=#ID);4)增加书籍:
INSERT INTO Book(BookID, Title, Author, Publisher, Pyear, Language)VALUES(#BookID, #Title, #Author, #Publisher, #Pyear, #Language);5)删除书籍:
DELETE FROM Book WHERE(BookID=#BookID);6)修改书籍信息:
UPDATE Book SET Title=#Title, Author =#Author, Publisher =#Publisher,Pyear =#Pyear, Language =#Language WHERE(BookID=#BookID);7)学生借阅图书: BEGIN TRANSACTION INSERT INTO Lend(StdID, AstID, BookID, LDate)VALUES(#StdID, #AstID, #BookID, #LDate);5 UPDATE BOOK SET State=’2’ WHERE BookID=#BookID COMMIT;8)学生归还图书: BEGIN TRANSACTION INSERT INTO Return(StdID, AstID, BookID, RDate)VALUES(#StdID, #AstID, #BookID, #RDate);UPDATE BOOK SET State=’0’ WHERE BookID=#BookID COMMIT;(9)学生操作 1)预定图书:
CREATE PROC Book_Book
@BookID varchar(20),@StdID char(6), @BDate datetime AS DECLARE @TransName VARCHAR(20)SELECT @TransName=’Book_Book’ BEGIN TRANSACTION @TransName DECLARE @booked int, @book_state_before char(1), @book_state_after char(1)SELECT @booked=count(*)FROM BBook WHERE BID=@BookID IF @booked>0
ROLLBACK TRANSACTION @TransName ELSE BEGIN
SELECT @book_state_before=state FROM Book WHERE BookID=@BookID IF @book_state_before=’0’
SELECT @book_state_after=’1’ ELSE IF @book_state_before=’2’
SELECT @book_state_after=’3’
UPDATE Book SET state=@book_state_after WHERE BookID=@BookID INSERT INTO BBook(BID,StdID,BDate)VALUES(@BookID,@StdID,@BDate)
COMMIT TRANSACTION @TransName END GO 学生预定图书,假设图书已经被预定了,则不允许继续预定。否则的话应该根据图书是在馆内还是被借出去两种情况,修改图书当前的状态。最后在预定表中插入一条记录。修改记录和插入新记录应该发生或都不发生,所以将这个动作封闭成一个事务,保证这个操作的原子性。2)续借图书:
CREATE PROC Renew_Book
@BookID varchar(20),@StdID char(6), @RDate datetime AS DECLARE @TransName VARCHAR(20)SELECT @TransName=’Renew_Book’ BEGIN TRANSACTION @TransName DECLARE @booked int SELECT @booked=count(*)FROM BBook WHERE BID=@BookID 6 IF @booked=0 INSERT INTO RBook(BID,StdID,BDate)VALUES(@BookID,@StdID,@RDate)
COMMIT TRANSACTION @TransName END GO 学生续借图书,假设图书已经被预定了,则不允许续借。否则,在续借记录中插入一条记录就可以了。把这个动作封装成一个存储过程是为了使用方便明了。
由于这个数据库实际上更加偏重于模型化,而不是一个实际环境中的数据库,所以在实现应用模型的时候还需要对这个数据库的模型作一些修改。
6、实验总结
通过这次实验,进一步了解什么情况下使用事务。
(请读者结合自己的实际情况,认真总结自己的收获,体会以及有待改进之处。)
第三篇:数据库管理系统
8.1 知识点
8.1.1 数据库管理系统概述
DBMS的系统目标
数据库管理系统是数据库系统的核心,从用户角度来看,一个DBMS应尽可能具备的 系统目标是:用户界面友好、结构清晰和开放性。
DBMS的基本功能
DBMS主要是实现对共享数据有效的组织、管理和存取,所以DBMS具有以下基本功 能:
1.数据库定义功能
2.数据存取功能
3.数据库管理功能
4.数据组织、存储和管理功能
5.数据库的建立和维护功能
6.其他如DBMS与其他软件系统的通信功能,与其他DBMS或文件系统的数据转换 功能
8.1.2 数据库管理系统的结构和运行过程
DBMS程序模块的组成DBMS是一种由各种模块组成系统软件,主要的模块有:
1. 据定义方面的程序模块
数据定义的程序模块主要包括如下内容:
文本框: 考纲要求
2. 数据库设计的目标、内容和方法
3. 数据库应用开发工具
4. 数据库技术发展
(1)模式、外模式、存储模式的定义模块,在RDBMS中就是创建数据库、创建表、创建视图、创建索引等定义模块。
(2)安全性定义,如授权访问。
(3)完整性定义,如主键、外键、以及其他一些完整性约束条件
2.数据操纵方面的程序模块
数据操纵的程序模块主要包括如下内容:
(1)查询处理程序模块
(2)数据更新程序模块
(3)交互式查询程序模块
(4)嵌入式查询程序模块
3.数据库运行管理的程序模块
数据库运行管理主要包括:系统启动的初始化、建立DBMS的系统缓冲区、建立系统 工作区、打开数据字典、安全性检查、完整性检查、并发控制、事务管理、运行日志管理 等。
4. 据库组织、存储和管理方面的程序模块
数据库组织、存储和管理方面的程序模块主要包括:文件读写和维护、存储路径管理 和维护、缓冲区管理等。
5. 据库建立、维护和其他方面的程序模块
数据库建立、维护和其他方面的程序模块主要包括初始装入程序、转储程序、恢复程
序、数据转换程序、通信程序等。
DBMS的层次结构
DBMS系统的最上层式应用层,位于DBMS系统核心之外。它处理的对象是各种数据 库应用系统,如用开发工具开发的或用宿主语言编写的应用程序,终端用户通过应用程序 接口发出事务请求或各种查询要求,这一层是DBMS与终端用户和应用程序之间的界面 层。
第二层是语言翻译处理层。它处理的对象是数据库语言。这一层向上提供的数据接口
是关系、视图,即元组的集合。其功能是对数据库语言的各类语句进行语法分析、视图转 换、安全检查、查询优化等。通过对下层基本模块的调用,生成可执行代码。
第三层是数据存取层。这一层促里的对象是元组,它把上层的集合操作转化为单记录 操作。执行诸如扫描、排序、元组的查找、修改、插入、删除、加/解锁等基本操作。第四层是数据存取层。这一层处理的对象是数据页和系统缓冲区。执行文件的逻辑打
开、关闭、读页、写页、缓冲区读写、页面淘汰等操作,完成缓冲区管理、内外存数据交 换等功能。
8.1.3 Oracle数据库系统
Oracle系统简介
Oracle数据库系统是由美国Oracle公司的产品。Oracle公司于1979年推出了世界上第一个商业化的关系型数据库管理系统。
Oracle的功能特性
1.多进程、多线索的体系结构
2.高性能核心技术
3.高可用性
4.SQL的实现
5.分布式查询功能和多场地更新功能。
6.自定义存储过程、函数、过程包和数据库触发器
Oracle的主要产品及其功能
1.Developer /2000。它是Oracle的一个比较新的应用开发工具集,包括Oracle Forms,Oracle Reprots,Oracle Graphics和Oracle Books等多种工具,可以实现高生产率、大型事 务处理以及客户机/服务器结构的应用系统。Developer/2000具有高度的可移植性、支持多 种数据源、多种图形用户界面、多媒体数据、多语言支持以及CASE等协同应用系统。
2.Designer/2000。它是Oracle提供的CASE工具,能够帮助用户对复杂系统进行建
模、分析和设计。用户在数据库概要设计完成以后,即可以利用Designer/2000来帮助绘制 E-R图、功能分布图、数据流图和方阵图,自动生成数据字典,数据库表、应用代码和文 档。
8.1.4 IBM DB2数据库系统
IBM DB2数据库系统简介
IBM DB2数据库系统是由美国IBM公司开发。1984年到1992年,IBM艾玛登研究
中心开始了一个名为Startburst的研究计划。这项计划的主要目的是建立新一代的、具有延 伸性能的关系数据库原型。延展性指的是在数据库各个子系统实现开放型,使用户能够很 容易地把新功能加到一个SQL关系型数据库里。Startburst为新一代商用对象关系数据库 提供了宝贵地经验与技术来源。
DB2通用数据库功能和特性
DB2家族除了包含在各种平台上运行的数据库管理系统内核之外,产品包中还包括了
数据复制、数据库系统管理、因特网网关支持,在线分析处理、多媒体支持和各种并行处 理能力,并为所有平台上的异构数据库访问提供“中间件”。DB2通用数据库的特色如下:
1.支持Internet应用
2.支持面向对象和多媒体应用
3.支持联机分析处理
4.并行处理能力
IBM的商务智能解决方案
商务智能解决方案的基本结构包括3个部分:
6. 数据仓库
用于抽取、整合、分布、存储有用的信息。
7. 多维分析模型
全方位了解现状
8. 前台分析工具
为管理人员提供简单易用的图形化界面
IBM内容管理解决方案
9. IBM Content Manager On Demand
IBM On Demand解决方案可以完成电子邮件存储、回收、分发、打印和传真,在短暂的时间内就可以获得与原来提供给客户的一摸一样的报表/帐单以及其他计算机输出信息。
10. Digital Library(数字图书馆)
IBM数字图书馆技术使人们快速而廉价地管理、访问、保护以及传递大量多种多样地 资源成为可能。
8.1.5 SYBASE 数据库系统
SYBASE数据库系统简介
SYBASE是美国SYBASE公司的产品。1986年,SYBASE公司正式推出了SYBASE
数据库系统。1999年8月SYBASE正式发布了正对企业门户(EP)市场的公司策略,进 一步加强了SYBASE公司在企业数据管理和应用开发、移动和潜入式计算、Internet计算 环境及数据仓库等领域的领先地位。
SYBASE数据库系统的功能及其特性
目前,SYBASE数据库系统定位在4个方向:分别是企业解决方法案、Internet应用、商务智能和移动与嵌入式领域为客户提供先进的技术。
企业解决方案包括企业级数据库,数据复制和数据访问。主要产品有:SYBASE EP,Adaptive Server Enterprise,Server Replication,Adaptive Server Connect及异构数据库互联 选件。
SYBASE企业门户提供了一个平台,用户可以通过一个单一的、个性化的、基于Web的接口访问所有企业信息,它可以把现有的业务应用、数据库、实时数据流、业务事件和 Web内容集成到一个统一的信息窗口中,具有持续可用和端到端的安全性。其中服务的主 要内容包括:
1.内容集成2.应用集成3.数据访问
4.数据移动
5.开发者服务
6.几种的门户管理
7.安全性
8.搜索
SYBASE的Internet应用和商务智能解决方案
SYBASE的Internet应用方向的产品帮助企业通过Internet作为业务计算的平台来获取
竞争优势。主要产品有数据库服务器,中间层应用服务器,以及强大的快速开发工具PowerBuilder。开发根据其行业特点利用相应的部件建立打包的基于Web的应用。
SYBASE的移动与潜入式计算解决方案
移动与计算产品系列将原始数据转换成企业信息并发布到企业的任何地方。地洞数据 库产品Adaptive Server Anywhere和最新的UltraLite数据库配置选项以其高性能、可扩展 的技术加强了SYBASE在这一市场的优势。
8.1.6 Microsoft SQL Server数据库系统
Microsoft SQL Server数据库系统简介
Microsoft SQL Server数据库系统是美国Microsoft公司的产品。目前Microsoft SQL 7.0 和Microsoft SQL 8.0已经广泛应用于我国的各行各业,包括许多政府部门。
SQL Server数据库系统主要功能及其特性
MS SQL Server数据库系统的核心是Microsoft SQL Server,它有两个重要版本:
Microsoft SQL 7.0 和Microsoft SQL 2000。
Microsoft SQL 2000具有如下特性:
丰富的Web支持。
这些支持主要包括:
1.丰富的XML和Internet标准支持。
2.方便而安全的通过Web访问数据
3.功能强大而灵活的,基于Web的分析功能
4.安全的应用程序管理
5.高度可伸缩性和可靠性
Microsoft SQL 2000提供了光发的可伸缩性和可靠性:
1.用于电子商务解决方案的可伸缩性。
2.用于商业解决方案的可伸缩性
3.用于数据仓库解决方案的可伸缩性
4.最大化的正常运行时间和可靠性
5.最快的市场投放
Microsoft SQL是建立、部署和管理电子商务、商业和数据仓库解决方案的最快途径。它易于使用,总拥有成本明显比其他同类产品更低。其特性包括:
1. 集成和可扩展的分析服务
2.简化管理和优化
3.增强和简化T-SQL开发和调试
4.灵活和可扩展的数据转换
5.充分的数据仓库功能
这些数据仓库功能包括:
1.丰富的Microsoft SQL 2000 XML功能以及多种其他Internet标准支持
2.使用Web即可灵活地于Microsoft SQL 2000数据库以及OLAP多维数据集连接,而无需另外编程
3.使用先进的数据挖掘工具,在最为庞大的数据集中洞察数据趋势并进行预测,从而 得到数据的其他值
4.使用Microsoft English Query,快速获取数据
5.广泛支持电子商务功能
Microsoft SQL 2000广泛支持电子商务功能,包括:
1.使用Commerce Server 2000和Microsoft SQL 2000创建B2B和B2C网站,分析网 站发展趋势并自动实现网站个性化设计
2.使用BizTalkTM Server 2000 和Microsoft SQL 2000在贸易伙伴之间实现在线交流; 广泛的XML支持将为现有商务系统提供集成服务和Web支持。
Microsoft SQL 的多版本支持
为满足不同单位和个人对性能、运行时间和价格的特殊要求,Microsoft SQL 2000提 供各种不同的版本,包括:
Microsoft SQL 2000企业版,Microsoft SQL 2000标准版,Microsoft SQL 2000个人版,Microsoft SQL 2000开发人员版,Microsoft SQL 2000企业评估版,Microsoft SQL 2000桌 面引擎,Microsoft SQL 2000 CE版。
Microsoft SQL 2000的软、硬件环境
使用Microsoft SQL 2000企业版,需要的配置如下:
1.PC机具有Inter或兼容Pentium 166MHZ或更高配置的处理器
2.带有Server Pack 5或更高版本的Microsoft NT Server 4.0,带有Server Pack 5或更
高版本的Microsoft NT Server 4.0企业版、Microsoft 2000 Server、Microsoft 2000 AdvancedServer或Microsoft 2000 Datacenter Server操作系统。
3.最低64MB RAM(推荐使用128MB或更大容量的内存)。
4.硬盘空间。
5.Microsoft Internet Explorer 5.0或更高版本。
6.CD-ROM驱动器
7.VGA或更高分辨率的监视器
8.Microsoft鼠标或兼容设备
第四篇:图书管理系统数据库设计
数据库设计.................................................................2 3.1 专门术语的定义...................................................2 3.1.1 系统中常用的术语(或使用频率较高的术语).........................2 3.1.2 表格定义及规范.................................................2 3.1.2.1数据约定.....................................................2 3.1.2.2表和表字段命名规范:.........................................3 3.2 数据设计.........................................................3 3.2.1 数据流程图设计.................................................3 3.2.2实体关系结构设计...............................................4 3.3安全保密设计.....................................................6 3.3.1 逻辑上的安全保密...............................................6 3.3.2 物理上的安全保密...............................................6 3.4 表格与功能模块相关性分析.........................................7 3.5 表格定义.........................................................7 数据库设计
3.1 专门术语的定义
暂无
3.1.1 系统中常用的术语(或使用频率较高的术语)暂无
3.1.2 表格定义及规范 3.1.2.1数据约定
所有数据项都用英文、汉语拼音或缩写表示,数据库名称除外。
所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串;数值型的默认值为数值0;逻辑型的默认值为数值0;
其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。datetime、smalldatetime类型的字段没有默认值,必须为NULL。当字段定义为字符串形时建议使用varchar而不用nvarchar。建议在大多数表中(如报销单,申请单),应都有以下字段: 字段名说明类型默认值 CreatorID创建者int CreatedTime创建时间DatetimeNULL 字符集采用 UTF-8,请注意字符的转换。
所有数据表第一个字段都是系统内部使用自动序列主键列,自增字段,不可空,名称为:id,确保不把此字段暴露给最终用户。
除特别说明外,所有字符串字段都采用varchar(50)类型,(无论汉字还是英文,都算一个字符)。
除特别说明外,所有小数的字段都采用 decimal(18,2)的形式表达。
除特别说明外,所有日期格式都采用 datetime 格式(根据需要提取时间格式); 除特别说明外,所有整形都采用 bigint 格式。除特别说明外,所有字段默认都设置为 null。3.1.2.2表和表字段命名规范:
命名规则约束的范围包括:数据库的命名、表的命名及字段的命名。数据库相关的命名规则采用与通常的编程的变量命名规则原则一致,具体要求如下: 1)字段名及表名为典型的名词结构; 2)中文名称要求语言精练、文法严谨;
3)望文知意、易懂易用,禁止采用如:A002这种命名;
4)主体采用拼音字母的首写字母拼写构成,基于惯常法可适度采用无词义歧义性的英文命名;
5)长度不少于3个字母,不大于12个字母;
6)在对于拼音首字母类似的字段和表,为区别,添加下划线和数字如男性人数:NXRS,女性人数:NXRS_2。
3.2 数据设计
绘制数据流程图的目的是为了方便开发人员与用户的交流,以及为系统的设计提供依据。数据流程图的绘制过程通常采用自顶向下,逐层分解,直到功能细化为止,形成若干层次的数据流程图。3.2.1 数据流程图设计
0层数据流图
1层数据流图
3.2.2实体关系结构设计
图书实体关系
读者实体关系
图书借阅关系实体
用户实体关系
图书类别实体关系
3.3安全保密设计
3.3.1 逻辑上的安全保密
1、系统对非法使用者的安全保密处理措施
2、系统对正常使用者的安全保密处理措施
3、系统对管理员的安全保密 3.3.2 物理上的安全保密
1、数据库系统异常时的还原处理措施
2、设备遭异常毁坏时的安全防护措施
3、数据参数做到及时更新,保证系统正常运行
3.4 表格与功能模块相关性分析
3.5 表格定义
a.图书信息表
b.读者信息表
c.借阅表
d.管理员_书籍
e.管理员_学生
第五篇:图书管理系统数据库源代码
图书管理系统数据库源代码
//创建工程及设计主界面
public class Main extends JFrame { private static final JDesktopPane {
DESKTOP_PANE=new JDesktopPane();
//桌面窗体
} public static void main(String[] args)
//入口方法
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//设置系统界面外观
new BookLogin();
//登录窗口
}
catch(Exception ex)
{
ex.printStackTrace();
} } public static void addIFame(JInternalFrame iframe)
//添加子窗体的方法
{
DESKTOP_PANE.add(iframe);
//新增子窗体
} public Main(){
super();
//设置“关闭”按钮处理事件
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//创建工具栏
Toolkit tool=Toolkit,getDefaultToolkit();
//获得屏幕大小
Dimension screenSize=tool.getScreenSize();
setSize(800,600);
//设置窗体大小
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2;//设置窗体位置
setTitle(“图书管理系统”);
//设置窗体标题
JMenuBar menuBar=createMenu();
//创建菜单栏
setJMenuBar(menuBar);
//设置菜单栏
JToolBar toolBar=createToolBar();
//创建工具栏的方法
getContentPane(),add(toolBar,BorderLayout.NORTH);
//设置工具栏
final JLable lable=new JLable();
//创建一个标签,用来显示图片
lable.setBounds(0,0,0,0);
//设置窗体的大小和位置
lable.setIcon(null);
//窗体背景
DESKTOP_PANE.addComponentListener(new ComponentAdapter())
{
public void componentResized(final ComponentEvent e)
{
Dimension size=e.getComponent().getSize();
//获得组建大小
lable.setSize(e.getComponent().getSize());
//设置标签大小
lable.setText(“”);
//设置标签文本,设置窗口背景
}
}
//将标签添加到桌面窗体
DESKTOP_PANE.add(lable,new Integer(Integer.MIN_VALUE));
getContentPane().add(DESKTOP_PANE);
//将桌面窗体添加到主窗体中
} } private JToolBar createToolBar()
//创建工具栏的方法 { JToolBar toolBar=new JToolBar();
//初始化工具栏
toolBar.setFloatable(false);
//设置是否可以移动工具栏
toolBar.setBorder(new BevelBorder(BevelBorder.RAIZED));
//设置边框
//图书信息添加按钮
JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);ImageIcon icon=new ImageIcon(Main.class.getResource(“/bookAddtb.jpg”));//添加菜单栏图标
bookAddButton.setIcon(icon);
//设置按钮图标
bookAddButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookAddButton);
//添加到工具栏中
JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);
//图书信息修改按钮
ImageIcon bookmodiicon=Icon.add(“bookModiAndDeltb.jpg”);
//创建图表方法
bookModiAndDelButton.setIcon(bookmodiicon);
//设置按钮图标
bookModiAndDelButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookModiAndDelButton);
//添加到工具栏
JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD);
//图书类别添加按钮
ImageIcon bookTypeAddicon=Icon.add(“bookTypeAddtb.jpg”);
//创建图标方法
bookTypeAddButton.setIcon(bookTypeAddicon);
//设置按钮图标
bookTypeAddButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookTypeAddButton);
//添加到工具栏
JButton bookBorrowButton=new JButton(MenuActions.BORROW);
//图书借阅按钮
ImageIcon bookBorrowicon=Icon.add(“bookBorrowtb.jpg”);
//创建图标方法
bookBorrowButton.setIcon(bookBorrowicon);
//设置按钮图标
bookBorrowButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookBorrowButton);
//添加到工具栏
JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER);
//新书订购按钮
ImageIcon bookOrdericon=Icon.add(“bookOrdertb.jpg”);
//创建图标方法
bookOrderButton.setIcon(bookOrdericon);
//设置按钮图标
bookOrderButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookOrderButton);
//添加到工具栏
JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK);
//验收新书按钮
ImageIcon bookCheckicon=Icon.add(“newbookChecktb.jpg”);
//创建图标方法
bookCheckButton.setIcon(bookCheckicon);
//设置按钮图标
bookCheckButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookCheckButton);
//添加到工具栏
JButton readerAddButton=new JButton(MenuActions.READER_ADD);
//读者信息添加按钮
ImageIcon readerAddicon=Icon.add(“readerAddtb.jpg”);
//创建图标方法
readerAddButton.setIcon(readerAddicon);
//设置按钮图标
readerAddButton.setHideActionText(true);
//显示提示文本
toolBar.add(readerAddButton);
//添加到工具栏
JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY);
//读者信息修改按钮
ImageIcon readerModiAndDelicon=Icon.add(“readerModiAndDeltb.jpg”);
//创建图标方法
readerModiAndDelButton.setIcon(readerModiAndDelicon);
//设置按钮图标
readerModiAndDelButton.setHideActionText(true);
//显示提示文本
toolBar.add(readerModiAndDelButton);
//添加到工具栏
JButton ExitButton=new JButton(MenuActions.EXIT);
//退出系统按钮
ImageIcon Exiticon=Icon.add(“exittb.jpg”);
//创建图标方法
ExitButton.setIcon(Exiticon);
//设置按钮图标
ExitButton.setHideActionText(true);
//显示提示文本
toolBar.add(ExitButton);
//添加到工具栏
return toolBar;} public class Business { protected static String dbClassName=“com.mysql.jdbc.Driver”;
//数据库驱动类
protected static String dbUr1=“jdbc:mysql://localhost/ts”;
//连接URL protected static String dbUser=“root”;
//数据库用户名
protected static String dbpwd=“root”;
//数据库密码
private static Connection conn=null;
//数据库连接对象,初值为null public Business(){
try
{
if(coon==null)
//连接对象为空
{
Class.forName(dbClassName);
//加载驱动类信息
conn=DriverManager.getConnection(dbUr1,dbUser,dbPwd);
//建立连接对象
}
}
catch(Exception ee)
{
ee.printStackTrace();
} } public static ResultSet executeQuery(String sql)
//执行查询方法
{
try
{
//如果连接对象为空,则重新调用构造方法
if(conn==null)
{
new Business();
return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);
//执行查询
}
}
catch(SQLException e)
{
e.printStackTrace();
return null;
//返回null值
}
finally
{} } public static int executeUpdata(String sql)
//更新方法
{
try
{
if(conn==null)
{
new Business();
//如果连接对象为空,则重新调用构造方法
return conn.createStatement().executeUpdate(sql);//执行更新
}
}
catch(SQLException e)
{
e.printStackTrace();
return-1;
}
finally
{} } public static void close()
//关闭方法 {
try
{
conn.close();
//关闭连接对象
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
conn=null;
//设置连接对象为null值
} } }
//为数据库添加对应的类 public class BookInfo { private String Book_id;
//图书编号
private String typeid;
//类别编号
private String writer;
//作者
private String translator;//译者
private String publisher;
//出版社
private Date date;
//出版日期
private Double price;
//图书单价
private String getBookname;//图书名称
public String getBookname(){
return bookname;} public void setBookname(String bookname){
this.bookname=bookname;} public Date getDate(){
return date;} public void setDate(Date date){
this.date=date;} public string getBook_id()
{ return Book_id;} public void setBook_id(String Book_id){ this.Book_id=Book_id;} public Double getPrice(){ return price;} public void setprice(Double price){ this.price=price;} public String getPublisher(){ return Publisher;} public void setPublisher(String publisher){ this.Publisher=Publisher;} public String getTranslator(){ return translator;} public void setTranslator(String translator){ this.translator=translator;} public String getTypeid(){ return typeid;} public void setTypeid(String typeid){ this.typeid=typeid;} public String getWriter(){ return writer;} public void setWriter(String writer){
this.writer=writer;} } public class BookType
//图书列表信息类 { private String id;
//图书类别编号
private String typeName;
//图书类别名称
private String days;
//可解天数
private String fk;//每罚款金额
public String getFk(){
return fk;} public void setFk(String fk){
this.fk=fk;} public String getDays(){
return days;} public void setDays(String days){
this.days=days;} public string getId(){
return id;} public void setId(String id){
this.Bid=id;} public String getTypeName(){
return typeName;} public void setTypeName(String typeName){
this.typeName=typeName;} } public class Order
//图书订单信息类 {
private String Book_id;
//图书编号 private Date date;
//下单时间 private String number;
//图书数量 private String operator;//操作员
private String checkAndAccept;
//是否收到货 private String zk;
//图书折扣 public String getcheckAndAccept(){ return checkAndAccept;} public void setcheckAndAccept(String checkAndAccept){ this.checkAndAccept=checkAndAccept;} public Date getDate(){ return date;} public void setDate(Date date){ this.date=date;} public string getBook_id(){ return book_id;} public void setBook_id(String book_id){ this.book_id=book_id;} public String getNumber(){ return number;} public void setNumber(String number){ this.number=number;} public String getOperator(){ return operator;} public void setOperator(String operator){
this.operatorr=operator;
} public String getZk(){
return zk;} public void setZk(String Zk){
this.zk=zk;} } public class Operater { private String id;
//操作员编号
private String name;
//操作员用户名
private String grade;
//操作员等级
private String password;//操作员密码
private String type;
//出版社
public String getType(){
return type;} public void setType(String type){
this.type=type;} public string getGrade(){
return grade;} public void setGrade(String grade){
this.grade=grade;} public String getId(){
return id;} public void setId(String id){
this.id=id;} public String getName(){
return name;} public void setName(String name){
this.name=name;} public String getPassword(){
return password;} public void setPassword(String password){
this.password=password;} } public class Borrow
//书籍借阅信息类 { private int id;
//借阅编号
private String book_id;
//图书编号
private String reader_id;
//读者编号
private String num;
//借书数量
private String borrowDate;
//借书日期
private String backDate;
//应还日期
private String Bookname;//图书名称
public String getBookname(){
return bookname;} public void setBookname(String bookname){
this.bookname=bookname;} public string getBackDate(){
return backDate;} public void setBackDate(String backDate){
this.backDate=backDate;} public string getBorrowDate(){
return borrowDate;} public void setBorrowDate(String borrowDate){
this.borrowDate=borrowDate;} public String getNum(){
return num;} public void setNum(String num){
this.num=num;} public String getBook_id(){
return book_id;} public void setBook_id(String book_id){
this.book_id=book_id;} public String getReader_id(){
return reader_id;} public void setReader_id(String reader_id){
this.reader_id=reader_id;} public int getId(){
return id;} public void setId(Int id){
this.id=id;} } public class Back
//图书归还信息类 { private String book_id;
//图书编号
private String bookname;
//图书名称
private String operatorId;
//操作员编号
private String borrowDate;//图书借阅时间
private String backDate;
//图书归还时间 private String readerName;
//读者姓名 private String reader_id;//读者编号 private int typeId;private int id; public int getId(){ return id;} public void setId(int id){ this.id=id;} public int getTypeId(){ return typeid;} public void setTypeId(int typeid){ this.typeId=typeId;} public string getBackDate(){ return backDate;} public void setBackDate(String backDate){ this.backDate=backDate;} public String getBookname(){ return bookname;} public void setBookname(String bookname){ this.bookname=bookname;} public string getBorrowDate(){ return borrowDate;} public void setBorrowDate(String borrowDate){ this.borrowDate=borrowDate;} public String getOperatorId(){
return operatorId;} public void setOperatorId(String operatorId){
this.operatorId=operatorId;} public String getBook_id(){
return book_id;} public void setBook_id(String book_id){
this.book_id=book_id;}
public String getReader_id(){
return reader_id;} public void setReader_id(String reader_id){
this.reader_id=reader_id;}
public String getReaderName(){
return readerName;} public void setReaderName(String readerName){
this.readerName=readerName;} }
//系统登录模块设计
public class BookLogin extends JFrame { private static final Operater Type=null;
//人员类型
private static Operater user;
//用户名
private JPasswordField password;private JTextField username;private JButton login;private JButton reset;public BookLogin(){
super();
final BorderLayout borderLayout=new BorderLayout();
//创建布局管理器
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置“关闭”按钮处理事件
borderLayout.setVgap(10);
//设置组件间的垂直关系
getContentPane().setLayout(borderLayout);
//使用布局管理器
setTitle(“图书管理系统登录”)
//设置窗体标题
Toolkit tool=Toolkit.getDefaultToolkit();
//获得默认的工具箱
Dimension screenSize=tool.getScreenSize();//获得屏幕的大小
setSize(285,194);
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2);//设置窗体位置
final JPanel mainPanel=new JPanel();
//创建主面板
mainPanel.setLayout(new BorderLayout());
//设置边框布局
mainPanel.setBorder(new EmptyBorder(0,0,0,0))
//设置边框为0
getContentPane().add(mainPanel);
//在窗体中加入主面板
final JLabel imageLabel=new JLabel;
//创建一个标签,用来显示图片
ImageIcon loginIcon=Icon.add(“login.jpg”);
//创建一个图像图标
imagelabel.setIcon(loginIcon);
//设置图片
imageLabel.setOpaque(true);
//设置绘制其边界内的所有像素
imageLabel.setBackground(Color.GREEN);
//设置背景颜色
imageLabel.setpreferredSize(new Dimension(260,60));//设置标签大小
mainPanel.add(imageLabel,BorderLayout.NORTH);
//添加标签到主面板
final JPanel centerPanel=new JPanel();
//添加一个中心面板
final GridLayout gridLayout=new GridLayout(2,2);//创建网络布局管理器
gridLayout.setHgap(5);
//设置组件之间平行的距离
gridLayout.setVgap(20);
//设置组件之间垂直的距离
centerPanel.setLayout(gridLayout);
//使用布局管理器
mainPanel.add(centerPanel);
//添加到主桌面
final JLabel userNamelabel=new JLabel();
//创建一个标签
userNameLabel.setHorizontalAlignment(SwingConstants.CENTER);//设置对齐方式
userNameLabel.setPreferredSize(new Dimension(0,0));
//设置组件大小
userNameLabel.setMinimumSize(new Dimension(0,0));
//设置组件最小的大小
centerPanel.add(userNameLabel);
//添加到中心面板
userNameLabel.setText(“用
户
名:”);
//设置标签文本
username=new JTextField(20);
//创建文本框
username.setPreferredSize(new Dimension(0,0));
//设置组件大小
centerPanel.add(username);
//添加到中心面板
final JLabel passwordLabel=new JLabel();
//创建一个标签
passwordLabel.setHorizontalAlignment(SwingConstants.CENTER);
//设置对齐方式
centerPanel.add(passwordLabel);
//添加到中心面板
passwordLabel.setText(“密
码:”);
//设置标签文本
password=new JPasswordField(20);
//创建密码框
password.setDocument(new Document(6));
//设置密码长度为6
password.addKeyListener(new KeyAdapter()
//监听密码框
{
public void keyPressed(final keyEvent e)
//监听键盘案件事件
{
if(e.getKeyCode()==10)
//如果按了回车键
{
login.doClick();
//进行登录
}
}
})
centerPanel.add(password);
//添加到中心面板
final JPanel southPanel=new JPanel;//新增一个底部面板
mainPanel.add(southPanel,BorderLayout.SOUTH);
//添加到主面板中
login=new JButton();
//创建按钮组件
login.addActionListener(new BookLoginAtion());
//添加监听器
login.setText(“登录”);
//设置按钮文本
southPanel.add(login);
//把按钮添加到底部面板
reset=new JButton();
//创建按钮组件
reset.addActionListener(new BookResetAction());
//添加监听器
reset.setText(“重置”);
//设置按钮文本
southPanel.add(reset);
//把按钮添加到底部面板
setVisible(true);
//设置创建可见
setResizable(false);
//设置窗体不可改变大小
} public static Operater getUser(){
return user;} public static Operater getType(){
return Type;} public static void setUser(Operater user){
BookLogin.user=user;} } private class BookResetAction implements ActionListener { public void actionPerformed(final ActionEvent e){
username.setText(“");//设置用户名输入框为空
password.setText(”“);//设置密码输入框为空
} } private class BookLoginAction implements ActionListener { public void actionPerformed(final ActionEvent e){
user=Business.check(username.getText(),new String(password.getPassword()));//调用business方法
if(user.getName()!=null)
//判断用户名是否为null
{
try
{
Main frame=new Main();
//创建一个主窗体
frame.setVisible(true);
//设置其可见
BookLogin.this.setVisible(false);
//设置登录窗体为不显示
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
else
{
JOptionPane.showMessageDialog(null,”请输入正确的用户名和密码!“);//弹出提示框
username.setText(”“);
//设置用户名输入框为空
password.setText(”“);
//设置密码输入框为空
} } }
//基本信息管理模块
public class ReaderAdd extends JInternalFrame
//添加读者信息 { public ReaderAdd(){
super();
setTitle(”读者相关信息添加“);
setIconifiable(true);
//设置窗体可最小化
setClosable(true);
//设置窗体可关闭
setBounds(100,100,500,350);
final JLabel logoLabel=new JLabel();
ImageIcon readerAddIcon=Icon.add(”readerAdd.jpg“);
logoLabel.setIcon(readerAddIcon);
logoLabel.setOpaque(true);
logoLabel.setBackground(Color.CYAN);
logoLabel.setPreferredSize(new Dimension(400,60));
getContentPane().add(logoLabel,BorderLayout.NORTH);
final JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
getContentPane().add(panel);
final JPanel panel_1=new JPanel();
final GridLayout gridLayout=new GridLayout(0,4);
gridLayout.setVgap(15);
gridLayout.setHgap(15);
panel_1.setLayout(gridLayout);
panel_1.setPreferredSize(new Dimension(450,200));
panel.add(panel_1);
final JLabel label_2=new JLabel();
label_2.setText(”姓名:“);
panel_1.add(label_2);
readername=new JTextField();
readername.setDocument(new Document(10));
panel_1.add(readername);
final JLabel label_3=new JLabel();
public void actionPerformed(final ActionEvent e)
{
Check validator=new Check();
//校验类
String zj=String.valueof(comboBox.getSelectedIndex());
String id=read_id.getText().trim();
Vector v1=new Vector();
v1.clear();
v1.add(”reader“);
//读取配置文件中相应的查询语句
v1.add(id);
if(l==validator.Validate(V1))
//检查是否存在该读者
{
JOptionPane.showMessageDialog(null,”添加失败,该读者编号已存在!“);
}
else
{
Int i=Business.InsertReader(readername.getText().trim(),sex.trim(),age.getText().trim(),zjnumber.getText().trim(),Date.valueOf(date.getText().trim()),maxnumber.getText().trim().tel.getText().trim(),Double.valueof(keepmoney.getText().trim()),zj,zy.getText().trim(),Date.valueOf(bztime.getText().trim()),read_id.getText().trim());
if(i==1)
{
JOptionPane.showMessageDialog(null,”添加成功!“);
doDefaultCloseAction();
}
}
}
}
class TelListener extends KeyAdapter
{ public void keyTyped(KeyEvent e){
String numStr=”0123456789-“+(char)8;
//类型转换
if(numStr.indexOf(e.getKeyChar())<0)
{
e.consume();
} }
}
//添加“关闭”按钮的事件监听器
class CloseActionListener implements ActionListener
{
public void actionPerformed(final ActionEvent e)
{
doDefaultCloseAction();
}
}
private String[] columnNames(”名称“,”性别“,”年龄“,”证件号码“,”借书证有效日期“,”借书量“,”电话“,”押金“,”证件“,”职业“,”读者编号“,”办证时间“);
private String[] array=new String[]{”身份证“,”军人证“,”学生证“};
String id;
private Object[][] getFileStates(List list)
{
Object[][]results=new Object[list.size()][columnNames.length];
for(int i=0;i { Reader reader=(Reader)list.get(i); result[i][0]=reader.getName(); //定义二维数组 String sex; if(reader.getSex().equals(”1“)) { sex=”男“; } else { sex=”女“; } results[i][1]=sex; //读取读者歌属性值 results[i][2]=reader.getAge(); results[i][3]=reader.getIdentityCard(); results[i][4]=reader.getDate(); results[i][5]=reader.getMaxNum(); results[i][6]=reader.getTel(); results[i][7]=reader.getKeepMoney(); results[i][8]=array[reader.getZj()]; results[i][9]=reader.getZy(); results[i][10]=reader.getBook_id(); results[i][11]=reader.getBZtime(); } return results; } //图书类别管理 //添加图书信息 utton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { if(bookTypeName.getText().length()==0) { JOptionPane.showMMessageDialog(null,”图书类别文本框不可为空“); return; } if(days.getText().length()==0) { JOptionPane.showMessageDialog(null,”可借天数文本框不可为空“); return; } if(!check.isNumeric(days.getText().trim())) { JOptionPane.showMessageDialog(null,”可借天数必须为数字“); return; } if(fakuan.getText().length()==0) { JOptionPane.showMessageDialog(null,”罚款文本框不可为空“); return; } if(!check.isNumeric(fakuan.getText().trim())) { JOptionPane.showMessageDialog(null,”罚款必须为数字“); return; } int i=Business.InsertBookType(bookTypeName.getText().trim(),days.getText().trim(),Double.valueof(fakuan.getText.trim())/10); if(i==1) { JOptionPane.showMessageDialog(null,”添加成功!“); doDefaultCloseAction(); } } }); panel_6.add(button); final JButton buttonDel=new JButton(); buttonDel.setText(”关闭“); buttonDel.addActionListener(new ActionListener(){ public void actionPerformed(final ActionEvent e){ doDefaultCloseAction(); } }); panel_6.add(buttonDel); setVisibel(true);} //修改图书类 class ButtonAddListener implements ActionListener{ public void actionPerformed(ActionEvent e){ Object selectedItem=bookTypeModel.getSelectedItem(); int i=Business.UpdatebookType(BookTypeId.getText().trim(),selectedItem.toString(),days.getText().trim(),fk.getText().trim()); if(i==1) { JOptionPane.showMessageDialog(null,”修改成功"); object[][] results=getFileStates(Business.selectBookCategory()); model.setDataVector(results.columnNames); } } } table.setModel(model);