图书馆数据库_创建图书馆的数据库 - CSDN
精华内容
参与话题
  • 课程设计---图书馆数据库

    千次阅读 2012-11-22 23:22:54
    图书馆数据库设计   一.实验内容: 为图书馆设计一个数据库,此数据库对每个借阅者保存读者记录,包括:借书证号、姓名、性别、单位、可借数量。对每本书记录:书号、书名、作者、出版社。对每本被借出的书有:...

                           图书馆数据库设计

     

    .实验内容:

    为图书馆设计一个数据库,此数据库对每个借阅者保存读者记录,包括:借书证号、姓名、性别、单位、可借数量。对每本书记录:书号、书名、作者、出版社。对每本被借出的书有:读者号、借出日期、应还日期。

    可以随时查阅书库中的书籍信息,所有的书籍均由书号唯一标识;可以随时查阅书籍借还情况,系统约定任何人可以借多本图书,任何一种图书可以为多人所借,借书证号具有唯一性。

     

    .实验要求:

    1.基于《数据库概论》中所学的知识分析该数据库的基本结构,2.Transact-sql命令完成如下要求:

    1)创建数据库和数据表,定义每个表的主键和外键,为每个属性选择合适的数据类型,定义每个属性是否允许空值,是否有默认值等;

    2)结合具体情况为数据库表设置合理的约束或规则;

    3)如果需要,为数据表设计合理的触发器;

    4)使用SQL语句,在你设计的每个表中插入至少3条数据,要求记录满足数据约束要求,且尽量真实可信;

    5)自行设计查询要求给出经常需要用到的查询语句。

       3.写出完整的实验报告。

     

    .实验代码

    --创建library数据库

    create database library

    on primary

    (name=library_dat,--创建主数据库文件

     filename='c:\mydata\librarydat.mdf',

     size=5,

     maxsize=100,

     filegrowth=10%)

     log on

     (name='library_log',--创建日志数据库文件

     filename='c:\mydata\librarylog.ldf',

     size=5,

     maxsize=100,

     filegrowth=5)

     go

    --借阅者信息表

     use library

     go

     create table reader  

     (rno char(10) primary key,

     rname char(10) not null,

     rsex char(2) check(rsex in ('','')),

     rdepart char(30) not null,

     rmaxb smallint not null default(5),

     )

     go

     create table book

      (bno char(10) primary key ,

       bname char(20) not null,

       bauthor char(20) ,

       bconcern char(20) not null,

       bnum int not null )

     go

     create table borrowbook

      (bbno char(20) primary key,

       rno char(10) foreign key(rno) references reader(rno),

       bno char(10) foreign key(bno) references book(bno),

       bbdateo datetime not null default(getdate()),

       bbdaten datetime not null default(dateadd(mm,2,getdate())),

       borrownum int  not null default(1) )

     go

     --读者借书

    create proc pr_borrow @rno char(10),@bno char(10)

    as

      if(@rno in (select rno from reader) and @bno in(select bno from book))

        begin

          if((select bnum from book where bno=@bno) like 0 or (select rmaxb from reader where rno=@rno) like 0)

             begin

             print '该书本已借完或借书已达最大书目'

             return -7

             end

          else

              if(@rno+@bno in (select bbno from borrowbook))

              begin

              update borrowbook

              set borrownum=borrownum+1

              where bbno=@rno+@bno

              update  reader

              set rmaxb=rmaxb-1 where rno=@rno

              update book

              set bnum=bnum-1 where bno=@bno

              end

              else

                begin

                insert borrowbook(bbno,rno,bno)

                values (@rno+@bno,@rno,@bno)

                update  reader

                set rmaxb=rmaxb-1 where rno=@rno

                update book

                set bnum=bnum-1 where bno=@bno

                end

        end

      else

        print '您输入的信息有误,请重新输入'

        return -7

     go

    --读者还书

    create proc pr_return @rno char(10),@bno char(10)

    as

          update  reader

          set rmaxb=rmaxb+1 where rno=@rno

          update book

          set bnum=bnum+1 where bno=@bno

          update borrowbook

          set borrownum=borrownum-1

          where bbno=@rno+@bno

          if ((select borrownum from borrowbook where bbno=@rno+@bno)<=0)

          begin

          delete  from  borrowbook  where  bbno=@rno+@bno

          end

    go

     

     

     

     

     

     

    --添加book数据

     

     insert book

     values('s0001','数据库应用技术','刘卫军','清华大学出版社','10')

     insert book

     values('s0002','离散数学','屈婉玲','高等教育出版社','9')

     insert book

     values('s0003','计算机英语','刘艺','机械工程出版社','6')

      insert book

     values('s0004','java程序设计与教程','王行言','清华大学出版社','12')

     go

    --添加 reader数据

     

     insert reader

     values('10168001','张三','','计算机系通信工程','5')

     insert reader

     values('10168002','李四','','计算机系网络工程','5')

     insert reader

     values('10168003','吴五','','计算机系网络工程','5')

     insert reader

     values('10168004','王六','','计算机系通信工程','5')

     go

     

     

     

     

     

     

     

     

     

     

     

     

    四:图书馆数据库的实现

     --常用查询测试

     select * from reader

     select * from book  --查阅书库中的书籍信息

     select * from borrowbook --查阅书籍借还情况

     select rno from borrowbook where rno=10168001 --查询借书证为10168001的借书情况

     --测试中恢复数据用到的语句

     drop procedure pr_borrow

     drop procedure pr_return

     drop table borrowbook

     update book

     set bnum=8 where bno='s0001'

    update borrowbook

    set borrownum=1

    update reader

    set rmaxb=5

     --执行借书还书

     --1.一本书被多人所借(书借完提示错误)

    /*借书说明:

       读者借书使用存储过程pr_borrow,读者借一本书的会记录到

       borrowbook中,并对book表中的书数量bnum减一,读者最大借书数量减一,读者重复借同一本书籍是会修改borrowbook中的借书数量borrownum。若读者最大借书数或图书书目等于0

       则不修改borrowbook表,并提示错误消息。*/

    exec pr_borrow '10168001','s0001'

    exec pr_borrow '10168003','s0001'   

    exec pr_borrow '10168002','s0001'--重复执行这三条中一条消息会显示'该书已借完'

    select * from reader

     select * from book 

     select * from borrowbook

     

     

     --2.一人借多本书

     

    exec pr_borrow '10168001','s0001'

    exec pr_borrow '10168001','s0002'

    exec pr_borrow '10168001','s0003'

    select * from reader

     select * from book  

     select * from borrowbook

     

     

     

     

     --3.还书 (借书书目还清后删除借书记录)

    /*还书说明:

        还书修改borrowbook记录并修改对应读者和书籍的rmaxbbnum加一。

    */

    exec pr_return '10168001','s0001'

    exec pr_borrow '10168003','s0001'   

    exec pr_borrow '10168002','s0001'

    select * from reader

     select * from book  

     select * from borrowbook

    go

     

    展开全文
  • 图书馆管理系统的数据库设计

    万次阅读 2015-06-14 13:56:14
    图书馆管理系统的数据库设计--学生表 CREATE TABLE stu_info( --学号 stu_num varchar(10) primary key, --姓名 stu_name varchar(12) not null, --学院 stu_college varchar(20), --年级 stu_grade smallint, --...

    图书馆管理系统的数据库设计

    --学生表
    CREATE TABLE stu_info(
    --学号
    stu_num varchar(10) primary key,
    --姓名
    stu_name varchar(12) not null,
    --学院
    stu_college varchar(20),
    --年级
    stu_grade smallint,
    --宿舍
    stu_dorm varchar(10)
    );
    
    --职工表
    CREATE TABLE teacher_info(
    --职工号
    tea_num varchar(10) primary key,
    --职工名
    tea_name varchar(12) not null,
    --职工所在学院
    tea_college varchar(20)
    );
    
    --图书表
    CREATE TABLE book_info(
    --图书编号
    book_num varchar(20) primary key,
    --图书名
    book_name varchar(30) not null,
    --图书分类
    book_cla varchar(20),
    --图书出版社
    book_pre varchar(30),
    --图书总数目
    book_all_quan int default 0,
    --可借数目
    book_quan int default 0,
    --出版时间
    book_time datetime
    );
    
    --学生借还信息表
    CREATE TABLE br_stu_info(
    --借书证
    lib_card bigint,
    --图书编号
    book_num varchar(20),
    --借书时间
    bro_time datetime,
    --归还期限
    rn_deadline datetime,
    --归还时间
    rn_time datetime,
    primary key (lib_card,book_num),
    foreign key (lib_card) references log_stu_info (lib_card),
    foreign key (book_num) references book_info(book_num)
    );
    
    --职工借还信息表
    CREATE TABLE br_tea_info(
    --借书证
    lib_card bigint,
    --图书编号
    book_num varchar(20),
    --借书时间
    bro_time datetime,
    --归还期限
    rn_deadline datetime,
    --归还时间
    rn_time datetime,
    primary key (lib_card,book_num),
    foreign key (lib_card) references log_tea_info (lib_card),
    foreign key (book_num) references book_info(book_num)
    );
    
    --管理员信息表
    CREATE TABLE sym_man_info(
    --管理员账户
    sym_num varchar(20) primary key,
    --管理员名字
    sym_name varchar(10) not null,
    --管理员密码
    sym_pass varchar(10) not null default 123456
    );
    
    --学生登陆信息表
    CREATE TABLE log_stu_info(
    --借书证号
    lib_card bigint primary key IDENTITY(1000000,1),
    --学号
    stu_num varchar(10) not null,
    --密码
    stu_pass varchar(20) not null,
    foreign key (stu_num) references stu_info (stu_num)
    );
    
    --职工登陆信息表
    CREATE TABLE log_tea_info(
    --借书证号
    lib_card bigint primary key IDENTITY(1999999,1),
    --职工号
    tea_num varchar(10) not null,
    --密码
    tea_pass varchar(20) not null,
    foreign key (tea_num) references teacher_info (tea_num)
    );
    
    
    
    展开全文
  • 图书馆管理系统 实验目的: 1、掌握面向对象分析与设计的思想与方法。 2、使用UML进行系统的面向对象分析与设计:用例图,类图,顺序图,状态图,活动图,组件图等。 3.系统功能用Java或...

    实验题目:

    图书馆管理系统

     

    实验目的:

    1、掌握面向对象分析与设计的思想与方法。

    2、使用UML进行系统的面向对象分析与设计:用例图,类图,顺序图,状态图,活动图,组件图等。

    3.系统功能用Java或C++语言实现,并与后台数据库连接,实现系统的基本功能。

     

    实验设备及环境:

    硬件:多媒体计算机

    软件:Windows7操作系统、Rational Rose建模工具

     

    实验内容及要求:

    工资管理:在取得授权的情况下,有关人员要进行如下工作。

    (1)书籍信息录入

    图书管理员录入书籍的书号、名称,修改录入的出错(维护),形成图书表。

    (2)读者信息录入

    系统管理员录入读者的个人信息,修改录入的出错(维护),形成读者表。

    (3)借阅情况的录入

    图书管理员在读者借阅图书时录入信息,修改录入的出错(维护),形成借阅表和历史借阅表。

    (4)计算扣款金额

    图书管理员按读者借书时间、还书时间和借阅时长判断读者是否需要扣费,然后生成信息到历史借阅表中。 

    (5)读者、图书管理员及图书信息的查询

    读者可以根据自己的读者号查询自己的个人信息;图书管理员可以根据自己的管理员号查询自己的个人信息(包括工资);所有人都可以登录之后无条件查询图书的信息包括馆藏册数。

     

    完成步骤和要求:

    完成用户需求的分析,找出系统的执行者、用况,画出用况模型图(包括用例描述)。

    找出系统的概念类,建立基本模型。

    建立系统顺序/通信图,找出系统与外界交互的消息。

    建立系统活动图,找出系统的主要业务流程与关键操作流程。

    建立系统中主要对象的状态机图,找出对象在其生存期内因响应事件所经历的状态序列。

    给出系统的问题域部分设计的思路,结合2建立类设计模型图。

    给出系统的关键界面设计图,并予以说明。

    给出数据管理部分的设计结果。

    给出控制驱动部分的设计思路。(可选)

    设计系统的构件图和部署图。(可选)

     

    四、实验结果及分析

    1. 根据用户的需求画出用况图:

     

    在本系统中一共包含了三个参与者:

    其中读者的主要用例包括查询读者账户(即查询自己的个人信息以及查询自己的账户和借阅情况)、借书、还书和查询图书信息。

    图书管理员的主要用例是查看读者的账户,包括读者的个人信息以及读者的账户和借阅情况。在对书籍的信息进行管理的时候能够查看并添加添加图书的各种信息,修改图书的信息,以及删除图书的信息。在对借书记录和还书记录进行管理时图书管理员可以判断读者的借书情况是否超期,根据超期的情况决定是否需要罚款。

    系统管理员有五个用例,管理借阅者信息,包括添加新生信息和删除毕业生信息。在对图书的信息进行管理的时候,也能够添加新书的信息和删除已损坏图书的信息。同时,系统管理员也可以查询现有所有图书的信息,来决定是否需要引进新书。系统管理员也可以管理借书记录和还书记录,主要是当图书管理员遇到问题时,系统管理员也可以实现借还书的功能。

    另外,图书管理员和系统管理员都继承于图书馆内部人员这个父类。

     

    2.根据用况图建立本系统的类图:

     

    本系统一共设计了七个类:    。

    读者类:属性包含(1)读者证号 (2)密码 (3)最大借书数量

    方法包括(1)借书 (2)还书 (3)查看用户账户 (4)查看借书数量 (5)登录系统

        (5)查询图书信息 (6)交罚款

        图书管理员类:属性包含(1)管理员帐号 (2)密码

    方法包括(1)查询图书信息(2)修改图书信息

        书架类:属性包含(1)书架号 (2)类型(3)位置(4)存放数量

    方法只有 存放图书

    图书类:属性包含(1)书号(2)书名(3)数量(4)价格(5)出版社

        (6)馆藏册数(7)在馆册数

    系统管理员类:属性包含 值班时间

         方法包括(1)查看用户个人信息(2)修改用户个人信息

    后台系统类:属性包含(1)级别(2)配置

         方法包括(1)存储用户个人信息(2)存储图书信息(3)存储借阅信息

    Item类:属性包含 id

         方法包括(1)创建(2)销毁(3)更新(4)显示图书信息(5)显示借阅次数

    其中,图书管理员类和系统管理员类是工作人员类的子类,图书管理员在继承了其父类的属性和操作以外还自己添加了管理员帐号和密码这两个属性,添加了查询图书信息和修改图书信息这两个操作。系统管理员在继承了父类的基础以外还添加了值班时间这个属性,以及查看用户个人信息和修改用户个人信息这两个操作。

    另外,读者类和工作人员类是Person类的子类,读者在继承了其父类的属性和操作以外还自己添加了读者证号、密码和最大借书数量这几个属性,添加了借书、还书、查看用户账户、查看借书数量、登录系统、查询图书信息和交罚款这些操作。工作人员在继承了其父类的属性和操作以外还自己添加了工资和管理范围这两个属性,添加了登录账户、查询用户借阅信息、管理借书记录、管理还书记录、查看用户账户这些操作。

    Person类是读者类和工作人员类的父类,它包含了所有人都有的三个属性:姓名、性别和年龄。读者类和工作人员类继承于Person类,这就简化了这两个子类的属性。

    类之间的关系先从图书管理员讲起,图书管理员能够为读者提供服务,因此,二者之间应该是服务与被服务的关系。另外,图书管理员能够管理书架和图书,而且书架与图书之间是存放与被存放的关系,所有的图书都被存放于图书馆的书架中。最后,图书管理员还能够查看Item,Item类有点类似于超市中在购物后产生的小票,当读者在完成整个借阅的操作之后,后台系统会自动生成一个Item,因此,在类图中Item与后台系统之间是一种聚合的关系,而读者也可以查看Item,因为当读者在完成借阅之后,Item便可以证明借书是否成功以及后台系统是否发生故障。

    除了图书管理员之外,同样继承于工作人员的系统管理员类也与其他类有着很多联系,比如说系统管理员同样与图书类有着维护与被维护这样的关系,但与图书管理员不同的是,系统管理员只负责通过从后台系统中的添加、修改或者删除来管理图书,而不是像图书管理员一样去管理实体的图书。另外,系统管理员可以管理后台系统,控制后台系统中所存储的信息以及当后台系统在发生一些故障时,系统管理员能够提供及时的维修。

     

     

    3.用户登录的时候的时序图:

        借书过程的时序图:

    上图表示了读者在进行借阅操作时的一系列变化,读者在进行借书操作之前,首先需要输入自己的信息包括帐号和密码,显示器将这些信息发送给数据库,在数据库中将读者的帐号和密码进行比对,进行身份验证,并将验证的结果返回给读者。如果身份验证成功则用户登录成功,反之读者登录失败。

    然后,读者可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,后台系统查看对应图书的馆藏册数,并根据馆藏信息,返回该图书是否可借阅。若可借阅,则图书管理员可在此时修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间。

    此时,后台系统调用其Item功能,当图书管理员修改完借阅表之后,后台系统生成一张纸质书单,即类似于超市购物时的小票,图书管理员得到小票确认无误后将纸质小票返回给借阅者,借阅者可以得到实体的图书,整个借阅过程结束。

     

    还书过程的时序图:

    用户在还书的时候也需要登录,在登录的时候,首先需要输入自己的信息包括帐号和密码,显示器讲这些信息发送给数据库,在数据库中将用户的帐号和密码进行比对,进行身份验证,并将验证的结果返回给用户。如果身份验证成功则用户登录成功,反之用户登录失败。

    借阅者在登录成功之后,可以向图书管理员发送还书请求,图书管理员在接收到还书请求之后,需要进入后台系统查看该借阅者是否超期借阅,后台系统返回超期的信息,若借阅者还书的时间超过了应还的时间,后台系统则自动生成一张扣款账单,由图书管理员返回给借阅者。

    之后借阅者需要支付扣款的金额,支付完毕后,图书管理员需要修改借阅信息,即进入后台数据库的借阅表删除这条借阅信息,后台系统自动将删除的借阅信息添加到后台数据库的历史借阅表中。另外,后台系统还需要修改图书的馆藏册数,将所还图书的馆藏册数加一,并返回馆藏信息。

    最后,借阅者可以归还实体的图书,图书管理员将会请求生成一张还书书单,后台系统启用其Item功能生成一张还书书单并返回给读者,整个还书操作结束。

     

    4.进行还书操作时的活动图:

    读者在进行借书操作时,可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,并查看对应图书的馆藏信息,并根据馆藏信息,产生一个分支判断。若馆藏册数为0,则不可借阅,返回错误信息并拒绝读者的借阅,之后结束整个借书操作。若馆藏册数不为0,则可借阅,后台系统返回可借阅信息。

    图书管理员在后台系统返回可借阅信息之后修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间,与此同时,后台系统调用其Item功能,当图书管理员修改完借阅信息之后,后台系统生成一张纸质书单。

    完成这两个操作之后,借阅者可以得到实体的图书,整个借阅过程结束。

     

    5.读者从未登记到还书成功时的状态图:

    读者在进行借书与还书操作之前首先需要通过注册来验证身份,学校中的图书馆借阅者以学生为主,学生在登记学生信息之后一直处于未注册的状态。通过图书馆管理员对其进行注册操作,读者的状态才由未注册转向已注册。另外,读者在已注册的状态下也可以修改个人信息,此时借阅者的状态不变。

    注册完之后的读者在身份验证成功之后就可以进入到系统,进行图书信息和自己个人信息的查询。已注册的读者此时处于可借阅的状态,若读者借书数量小于等于10本时,在办理借阅手续之后就可以对图书馆中的图书进行借阅。在取完实体书之后,借阅者便进入一个未还书的状态。

    若借阅者处于未还书状态超过2个月,则借阅者进入欠款状态,若借阅者处于未还书状态不超过2个月,则借阅者依旧处于未欠款状态。当借阅者在欠款状态时,需要进行还款,还款之后返回到未欠款状态。通过还书,借阅者进入已还书的状态。

    此时可选择继续借阅或者是直接结束,若是通过继续借阅返回,则需要进行判断,当读者借书数量小于等于10本时,才可以继续借阅,若是读者借书数量大于10本,则直接结束,无法再借。

     

    6.系统的界面设计:

    系统的页面包括主界面、录入界面、查询所有学生界面和查询单个学生界面。

    主界面:是所有分界面的总和,所有的分界面都展示在主界面上。

     

     

    录入界面:将新入学的学生录入到图书管理系统中,同时注册自己的账号,用账号登录到系统后,即可以查询自己的借书记录。

     

     

    查询所有学生界面:图书管理员可以通过“查询所有”这个界面来查询所有借阅者的信息以及借书的数量。

     

     

     

    查询单个学生界面:通过输入单个借阅者的姓名来查询对应借阅者的借阅信息。

     

     

    7、后台数据库管理部分的设计结果

    主要设计了7个表,具体表结构如下:

    图书表

    字段名称

    数据类型

    长度

    说明

    书号

    VARCHAR2

    15

    主码

    书名

    VARCHAR2

    20

    非空

      作者

    VARCHAR2

      10

    -

    类型

    VARCHAR2

    15

    依赖于书架类型表中的类型字段

    价格

    FLOAT

      -

    -

    出版社

    VARCHAR2

    40

    -

    摘要

    VARCHAR2

    50

    -

    馆藏册数

    NUMBER

    -

    -

    在馆册数

    NUMBER

    -

    小于馆藏册数

    存放位置

    VARCHAR2

    5

    -

    被借次数

    NUMBER

    -

    判断图书是否受欢迎的标准

     

    读者表

    字段名称

    数据类型

    长度

    说明

    卡号

    VARCHAR2

    15

    主码

    姓名

    VARCHAR2

    20

       -

    性别

    CHAR

    2

    为“男”或“女”

    单位

    VARCHAR2

    40

       -

    类型

    VARCHAR2

      10

    依赖于读者类型表中的类型字段

    级别

    NUMBER

    -

    用来记录该学生借阅的数量

    在借册数

    NUMBER

    -

       -

     

    读者类型表

    字段名称

    数据类型

    长度

    说明

    类型

    VARCHAR2

    10

    主码

    借书时间

    DATE

       -

     

    最多在借册数

    NUMBER

       -

     

     

    正借阅表

    字段名称

    数据类型

    长度

    说明

    书号

    VARCHAR2

    15

    主码

    卡号

    VARCHAR2

    15

    借书时间

    DATE

       -

     

    已还表

    字段名称

    数据类型

    长度

    说明

    书号

    VARCHAR2

    15

    主码

    卡号

    VARCHAR2

    15

    借书时间

    DATE

    -

    还书时间

    DATE

        -

     

    书架表

    字段名称

    数据类型

    长度

    说明

    书架号

    VARCHAR2

    15

    主码

    类型

    VARCHAR2

    15

    NOT NULL

     

    工作人员表

    字段名称

    数据类型

    长度

    说明

    工作号

    VARCHAR2

    15

    主码

    姓名

    VARCHAR2

    20

       -

    职务

    VARCHAR2

    20

       -

    工资

    FLOAT

    -

     -

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 图书馆sql数据库文件

    2020-07-21 09:57:27
    学校的sql数据库期末大作业是不是很蛋疼?直接下载我的数据库
  • db.properties: url=jdbc:mysql://localhost:3306/soft?characterEncoding=UTF-8 user=root password= driver=... //数据库连接 DBUtils : import java.io.FileReader; import java.io.IOException; i...

    db.properties:

    url=jdbc:mysql://localhost:3306/soft?characterEncoding=UTF-8
    user=root
    password=
    driver=com.mysql.jdbc.Driver
    

    //数据库连接
    DBUtils :

    import java.io.FileReader;
    import java.io.IOException;
    import java.net.URL;
    import java.sql.*;
    import java.util.Properties;
    
    public class DBUtils {
        private static String url;
        private static String user;
        private static String password;
        private static String driver;
    
       static{
           try {
               Properties properties = new Properties();
               ClassLoader classLoader = DBUtils.class.getClassLoader();
               URL res = classLoader.getResource("db.properties");
               String path = res.getPath();
               properties.load(new FileReader(path));
               //获取数据
               url = properties.getProperty("url");
               user = properties.getProperty("user");
               password = properties.getProperty("password");
               driver = properties.getProperty("driver");
               System.out.println(url + "  " + password + "  " + user);
               Class.forName("com.mysql.jdbc.Driver");
           } catch (IOException e) {
               e.printStackTrace();
           } catch (ClassNotFoundException e) {
               e.printStackTrace();
           }
       }
    
       public static Connection getConn() throws SQLException {
           return DriverManager.getConnection(url, user, password);
       }
    
        public static void close(PreparedStatement pst, Connection conn) {
            if( pst != null){
                try {
                    pst.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
            if( conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            try {
                Connection conn = DBUtils.getConn();
                if (conn != null) {
                    System.out.println("连接成功");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    //实体类
    Library :

        public class Library {
        private int bId;
        private String bName;
        private String author;
        private String bStyle;
        private String publish;
        public Library() {
        }
    
        public Library(int bId, String bName, String author, String bStyle, String publish) {
            this.bId = bId;
            this.bName = bName;
            this.author = author;
            this.bStyle = bStyle;
            this.publish = publish;
        }
    
        public int getbId() {
            return bId;
        }
    
        public void setbId(int bId) {
            this.bId = bId;
        }
    
        public String getbName() {
            return bName;
        }
    
        public void setbName(String bName) {
            this.bName = bName;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public String getbStyle() {
            return bStyle;
        }
    
        public void setbStyle(String bStyle) {
            this.bStyle = bStyle;
        }
    
        public String getPublish() {
            return publish;
        }
    
        public void setPublish(String publish) {
            this.publish = publish;
         }
        }
    

    //管理系统
    LibrarySystem :

    import com.ndky.devil4.DbConn;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class LibrarySystem {
        private static Connection conn=null;
        private static PreparedStatement pst=null;
        Scanner sc=new Scanner(System.in);
        ResultSet rs=null;
        //初始界面
        public void print(Library library) {
    
            boolean flag = true;
            while (flag) {
                System.out.println("******************图书馆系统******************");
                System.out.println("*********1 添加图书信息      *****************");
                System.out.println("*********2 查看图书信息      *****************");
                System.out.println("*********3 修改图书信息      *****************");
                System.out.println("*********4 删除图书信息      *****************");
                System.out.println("*********5 退出              *****************");
                int i = sc.nextInt();
                switch (i) {
                    case 1:
                        InsertBook(library);
                        break;
                    case 2:
                        lookBook(library);
                        break;
                    case 3:
                        UpdateBook(library);
                        break;
                    case 4:
                        deleteBook(library);
                        break;
                    case 5:
                        flag = false;
                        break;
                    default:
                        System.out.println("请输入1-5");
                        break;
                }
            }
        }
    //删除图书
        private void deleteBook(Library library) {
            try {
                conn = DbConn.GetConnection();
                String sql = "delete from "+ library.getClass().getSimpleName().toLowerCase() +  "  where bName=?";
                pst = conn.prepareStatement(sql);
                System.out.println("请输入书名:");
                library.setbName(sc.next());
                pst.setString(1, library.getbName());
                int i = pst.executeUpdate();
                System.out.println(i);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
    //修改图书
        private void UpdateBook(Library library) {
            try {
                conn = DbConn.GetConnection();
                String sql = "update "+ library.getClass().getSimpleName().toLowerCase() +  " set bStyle=? where bName=?";
                pst = conn.prepareStatement(sql);
                System.out.println("请输入类型:");
                library.setbStyle(sc.next());
                System.out.println("请输入书名:");
                library.setbName(sc.next());
                pst.setString(1, library.getbStyle());
                pst.setString(2, library.getbName());
                int count = pst.executeUpdate();
                System.out.println(count);
                DBUtils.close(pst,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    //查看图书
        private void lookBook(Library library) {
            try {
                conn = DbConn.GetConnection();
                String sql = "select * from "+ library.getClass().getSimpleName().toLowerCase();
                pst = conn.prepareStatement(sql);
                rs = pst.executeQuery();
                while (rs.next()) {
                    System.out.println(rs.getString("bId"));
                    System.out.println(rs.getString("bName"));
                    System.out.println(rs.getString("author"));
                    System.out.println(rs.getString("bStyle"));
                    System.out.println(rs.getString("publish"));
                }
                DBUtils.close(pst,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    //增加图书
        public  void InsertBook(Library library) {
            try {
                conn = DBUtils.getConn();
                String sql = "insert into "+ library.getClass().getSimpleName().toLowerCase() +  " (bName,author,bStyle,publish) values(?,?,?,?)";
               /* String sql1 = "insert into " + library.getClass().getSimpleName().toLowerCase() + "(";
                String sql2 = ") values(";
                Field[] fields = library.getClass().getDeclaredFields();
                for (int i = 1; i < fields.length; i++) {
                    fields[i].setAccessible(true);
                    if (i == 1) {
                        sql1 = sql1 + fields[i];
                        sql2 = sql2 + "?";
                    } else {
                        sql1 = sql1 + "," + fields[i];
                        sql2 = sql2 + ",?";
                    }
                }
                String sql = sql1 + sql2 + ")";*/
                System.out.println(sql);
                pst = conn.prepareStatement(sql);
                System.out.println("请输入书名:");
                library.setbName(sc.next());
                System.out.println("请输入作者:");
                library.setAuthor(sc.next());
                System.out.println("请输入类型:");
                library.setbStyle(sc.next());
                System.out.println("请输入出版社:");
                library.setPublish(sc.next());
                pst.setString(1, library.getbName());
                pst.setString(2, library.getAuthor());
                pst.setString(3, library.getbStyle());
                pst.setString(4, library.getPublish());
                int i = pst.executeUpdate();
                System.out.println(i);
                DBUtils.close(pst,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
    
        public static void main(String[] args) {
            Library library=new Library();
            LibrarySystem libarySystem = new LibrarySystem();
            libarySystem.print(library);
        }
    }
    
    展开全文
  • 四川大学图书馆数据库

    千次阅读 2015-10-12 21:48:43
    http://202.115.54.17:8088/V/M9T1RVGI92I8EJUAPSKBHFNUQMKPT4MC3IQ4L464S5ICNNTREX-02694?FUNC=FIND-DB-1-LOCATE&MODE=locate&F-WLN=ENGLISH&RESTRICTED=all&pds_handle=GUEST
  • 该文章为个人所在学校的图书馆资源使用说明,各个学校图书馆数据库资源使用情况不同,请根据所在学校的使用说明进行使用。作者声明:仅限个人参考使用,不作为其他用途。 访问路径 1. 进入学校图书馆页面:...
  • 图书馆示例数据库

    2020-07-27 23:32:48
    数据库数据库数据库\vv数据库v数据库数据库数据库数据库数据库
  • 数据库课程设计实验报告--图书馆管理系统

    万次阅读 多人点赞 2020-04-29 11:30:49
    一、系统平台 开发工具:Eclipse java Mars 数据库 MySQL server,Navicat可视化工具 操作系统:win10 ... 提取码:4y44 ... 图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员...
  • 1.图书馆藏了多种书籍,每种书籍有一本或一本以上的馆藏量 2.每个读者可以一次借阅多本书籍,但每种书籍一次只能借一本 3.每次每本书籍的借阅时限为1个月 4.如果读者逾期不交,或丢失,或损毁借阅的书籍,则必须...
  • 基于C语言和SQL SERVER数据库实现的图书管理系统

    千次阅读 多人点赞 2019-08-04 12:57:24
    选择图书馆管理系统设计与开发是因为觉得图书馆管理系统对我们的帮助很大,并且经常去图书馆,对图书馆的大部分功能及流程还是比较了解,而且现在有些地方可能还不够完善。这次课程设计目标是建立一个比较好的图书馆...
  • 学好数据库,看这9本书就够了

    万次阅读 多人点赞 2017-04-21 09:40:16
    相信很多同学都有这样的痛苦经历:一上来就一通数据库历史,罗列一大堆从来没见过以后也不会见到的各种古老数据库;然后是数学公式密集的关系模型、关系代数,一连串不知道什么用却很难懂的范式……全学完了,数据库...
  • 图书馆信息管理系统

    千次阅读 2008-12-28 14:08:00
    图书馆信息管理系统 需求说明书 [版本:1.0] 拟 制 人__肥猫软件___________________ 审 核 人__肥猫软件_______________ 批 准 人___肥猫软件_____________ [二零零七年四月七日]
  • 图书管理系统数据库设计

    万次阅读 多人点赞 2019-01-11 15:54:23
    图书管理系统数据库设计 博主在github上找的这个项目链接,大家想参考的可以看看! JAVA GUI 图书馆管理系统:https://github.com/uboger/LibraryManager 图书馆流通管理系统:...
  • --图书管理系统数据库的创建,插入数据--创建数据库CREATE DATABASE BOOKSDBUSE BOOKSDB--创建表CREATE TABLE ReaderType( rdType INT PRIMARY KEY, rdTypeName VARCHAR(20), canLendQty INT, canLendDay INT )...
  • 数据库书籍推荐

    千次阅读 2017-11-12 21:17:38
    软件开发者编写代码,最终都是要处理数据,因此数据库是必备技能。 悲剧的是,学校里与此最相关的数据库原理课,对初学者的体验却非常不好。相信很多同学都有这样的痛苦经历:一上来就一通数据库历史,罗列...
  • 关于一些MySQL数据库书籍

    万次阅读 2017-12-14 14:29:11
    最近安装电脑系统,看到之前买的一些关于mysql的数据,pdf版本的,看了之后感觉不错,就去买了书,pdf就放在电脑里吃灰了。 现在心血来潮,想共享给大家(每个都是最低分,没办法0分)。以下是列表 ...
  • 网上书店数据库设计

    千次阅读 2016-03-28 20:14:40
    数据库表格设计如下: 1角色表Roles 列名 数据类型 Allow nulls 描述 备注 roleID int N 角色ID 主键 roleName Varchar (50) Y 角色名称
1 2 3 4 5 ... 20
收藏数 148,383
精华内容 59,353
关键字:

图书馆数据库