图书管理系统数据库设计

一.功能简介

图书管理系统主要分为三个客户端登陆,分别是借书还书的读者、图书的管理员,每个客户端的功能是不同的。在此之外,还提供一个超级用户admin,这个用户不仅可以对读者信息操作,还可以对图书管理者的信息进行管理。这三个客户端的登陆拥有自己的功能实现。下面三个图分别是三个客户端的功能模块图。

二.数据库设计

系统全局E-R图:

各个数据表的表结构设计:

表 数据库表清单

数据库表名

关系模式名称

备注

books

图书

图书表

type

图书类型

图书类型表

readers

读者

读者表

manager

管理者

管理者表

borrowed

借阅

借阅表

mange_book

图书管理

图书管理表

login

登陆

登陆表

fine

罚款

罚款表

表 登陆表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

user_name

varchar

15

登陆ID

user_password

varchar

15

登陆密码

user_type

varchar

15

登陆类型

表 读者表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

reader_ID

varchar

15

读者编号

reader_name

varchar

30

读者姓名

reader_sex

varchar

2

读者性别

reader_phone

number

11

读者联系电话

reader_getDate

date

读者登记时间

reader_email

varchar

30

读者邮箱

表 管理员表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

manager_ID

varchar

15

工作编号

manager_name

varchar

30

管理员姓名

manager_sex

varchar

2

管理员性别

manager_phone

varchar

11

管理员联系电话

manager_address

varchar

50

管理员住址

manager_salary

decimal

6,2

管理员工资

表 借阅表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

reader_ID

varchar

15

读者编号

book_ID

varchar

15

图书编号

manager_ID

varchar

15

工作编号

is_Borrowed

boolean

是否续借

borrow_getDate

date

借书日期

borrow_retDate

date

还书日期

表 图书表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

ISBN

varchar

15

图书编号

book_name

varchar

30

图书姓名

book_type

varchar

15

图书类型

book_author

varchar

15

作者

book_company

varchar

30

出版社

book_date

date

30

出版时间

book_number

Int

数量

book_intro

varchar

100

简介

表 管理图书表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

ISBN

varchar

15

图书编号

manager_ID

varchar

15

工作编号

add_time

date

添加时间

is_exit

boolean

是否在馆

表处罚表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

reader_ID

varchar

15

读者编号

book_ID

varchar

30

图书编号

last_time

date

逾期时间

money

number

6,2

罚款金额

表 图书类型表

字段名称

数据类型

字段大小

是否主键

是否为空

说明

type_ID

varchar

15

类型编号

type_name

varchar

30

类型名称

type_intro

varchar

100

类型描述

三.界面设计

1、系统登陆界面

  1. 读者界面

3、图书查询

4、图书借阅

5、归还图书

6、个人信息管理

7、修改密码

8、逾期罚款

四.程序设计

/**
 * 图书添加
 */
public static int add(Connection con,books book)throws Exception{
   String sql="insert into books values(?,?,?,?,?,?,?,?)";
   PreparedStatement pstmt=con.prepareStatement(sql);
   pstmt.setString(1, book.getIBSN());
   pstmt.setString(2, book.getBookName());
   pstmt.setString(3, book.getBookType());
   pstmt.setString(4, book.getAuthor());
   pstmt.setString(5, book.getBookCompany());
   //转换日期格式
   java.text.SimpleDateFormat  df  = new SimpleDateFormat("yyyyMMdd");
       java.util.Date ud = df.parse(book.getBookDate());
    java.sql.Date sd=new java.sql.Date(ud.getTime());
    
    pstmt.setDate(6, sd);
   pstmt.setInt(7, Integer.valueOf(book.getBookNum()));
   pstmt.setString(8, book.getBookIntro());
   return pstmt.executeUpdate();
}
/**
 * 图书修改
 */
public static int updatebook(Connection con,books book)throws Exception{
   String sql="update books set book_name = ?, book_type = ?, book_author = ?, book_company = ?,"
         + " book_date = ?, book_number = ?, book_intro = ? where isbn="+book.getIBSN();
   PreparedStatement pstmt=con.prepareStatement(sql);
   pstmt.setString(1, book.getBookName());
   pstmt.setString(2, book.getBookType());
   pstmt.setString(3, book.getAuthor());
   pstmt.setString(4, book.getBookCompany());
   //转换日期格式
   java.text.SimpleDateFormat  df  = new SimpleDateFormat("yyyyMMdd");
       java.util.Date ud = df.parse(book.getBookDate());
    java.sql.Date sd=new java.sql.Date(ud.getTime());
    
    pstmt.setDate(5, sd);
   pstmt.setInt(6, Integer.valueOf(book.getBookNum()));
   pstmt.setString(7, book.getBookIntro());
   return pstmt.executeUpdate();
}
/**
 * 图书删除
 */
public static int deletebook(Connection con,String ID)throws Exception{
   System.out.println(ID);
   String sql = "delete books where isbn ="+ID+" ";
   PreparedStatement pstmt=con.prepareStatement(sql);
   return pstmt.executeUpdate();
}
/**
 * 图书信息查询
 */
public static ResultSet list(Connection con,books book)throws Exception{
   StringBuffer sql=new StringBuffer("select * from v_book where v_book.isbn = v_book.isbn");
   if(StringUtil.isNotEmpty(book.getBookName())){ //书名模糊查找
      sql.append(" and 书名 like '%"+book.getBookName()+"%'");
   }
   if(StringUtil.isNotEmpty(book.getIBSN())){ //IBSN
      sql.append(" and v_book.isbn = "+book.getIBSN());
   }
   if(StringUtil.isNotEmpty(book.getAuthor())){   //作者模糊查找
      sql.append(" and 作者 like '%"+book.getAuthor()+"%'");
   }
   if(StringUtil.isNotEmpty(book.getBookType())){ //图书类型查找
      sql.append("  and 图书类型 like '%"+book.getBookType()+"%'");
   }
   PreparedStatement pstmt=con.prepareStatement(sql.toString());
   return pstmt.executeQuery();
}
/**
 * 图书类型添加
 */
public static int addtype(Connection con,bookType booktype)throws Exception{
   String sql="insert into book_type values(?,?,?)";
   PreparedStatement pstmt=con.prepareStatement(sql);
   pstmt.setString(1, booktype.getTypeID());
   pstmt.setString(2, booktype.getTypeName());
   pstmt.setString(3, booktype.getTypeDesc());
   return pstmt.executeUpdate();
}
测试与说明

测试添加图书类别:

在页面输入图书类别名称输入11,图书类别描述也输入11,然后点击添加,然后弹出添加成功

  • 12
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1管理员(L_Administrator) 字段名 字段说明 数据类型 约束 备注 a_id 管理员编号 int Primary Key Identity(1000,1) a_name 管理员姓名 nvarchar(20) Not null a_pwd 管理员密码 varchar(20) Not Null 2读者(L_Reader) 字段名 字段说明 数据类型 约束 备注 r_id 读者编号 int Primary Key r_name 读者姓名 nvarchar(20) Not Null r_pwd 读者密码 varchar(20) Not Null r_sex 读者性别 bit Not Null r_typeid 职务类型 int Foreign Key 职务类型的主键 r_academy 所在院系 nVarchar(20) r_major 专业 nVarchar(20) r_contact 联系方式 Varchar(20) r_email 邮箱 nvarchar(20) r_photo 读者照片 nVarchar(100) 存的是读者照片的路径 3职务类型(L_Duty) 字段名 字段说明 数据类型 约束 备注 d_id 职务编号 int Primary Key Identity(1000,1) d_name 职务名称 nvarchar(20) Not null d_maxcount 最大借阅数量 tinyint Not Null 图书管理系统数据库设计全文共3页,当前为第1页。4图书信息(L_Book) 图书管理系统数据库设计全文共3页,当前为第1页。 字段名 字段说明 数据类型 约束 备注 b_id 图书编号 Varchar(30) Primary Key b_name 图书名称 nvarchar(30) Not Null ISBN 国际标准图书编码 char(13) Foreign Key 13位数字组成 b_bkcaseid 书架编号 Varchar(20) b_price 定价 Numeric(10,2) b_author 作者 nvarchar(20) b_typeid 类型编号 int Foreign Key b_intime 入库时间 DataTime b_synopsis 图书简介 Nvarchar(500) b_state 图书状态 bit 0--借出,1--没有借出 b_photo 封面图片 Nvarchar(100) 存的是路径 5图书类型(L_BookType) 字段名 字段说明 数据类型 约束 备注 bt_id 类型编号 int Primary Key Identity(1000,1) bt_name 类型名称 nVarchar(20) Not null 6出版社信息(L_Publishing) 字段名 字段说明 数据类型 约束 备注 ISBN 国际标准图书编码 char(13) Primary Key p_name 出版社名称 nvarchar(30) Not Null 7借阅管理(L_Borrow) 字段名 字段说明 数据类型 约束 备注 bw_id 借阅编号 int Primary Key Identity(1,1) bw_bookid 图书编号 Varchar(30) Foreign Key bw_readerid 读者编号 Int Foreign Key bw_outtime 借出日期 DateTime Not Null bw_endtime 到期日期 DateTime Not Null bw_backtime 归还日期 DateTime bw_isexpired 是否过期 Bit Not Null 默认为0--不过期 bw_fine 罚款数目 Numeric (10,2) 过期后才计算罚款数目 8图书资源(L_Resource) 字段名 字段说明 数据类型 约束 备注 rs_id 资源编号 Int Primary Key Identity(1000,1) rs_name 资源名称 nVarchar(30) Not null rs_synopsis 资源简介 nVarchar(500) rs_amount 资源大小 int 单位为KB或是MB rs_type 资源类型 Varchar(20) 类似于doc、xsl、ppt、pdf、zip、rar、MP3、wmv等常用格式 图书管理系统数据库设计全文共3页,当前为第2页。9图书评论(L_BookMarks) 图书管理系统数据库设计全文共3页,当前为第2页。 字段名 字段说明 数据类型 约束 备注 ISBN 国际标准图书编码 char(13) Foreign Key bm_contents 评论内容 Nvar
图书管理系统数据库设计 一:需求分析: 1:图书管理系统的功能图 2:系统说明: 1. 不同的读者类型对不同的图书类型借阅的天数不同,不同的读者可借阅的图书总数不同 。 2. 当图书借阅超期后、弄污、遗失会有相应的处罚。 3. 同样的图书在管理系统中会 有多本,每本之间可以区分。 4. 用户注册需经系统管理员同意后才可借阅图书。 5. 读者对预约图书有优先的借阅权。 6. 读者可以对自己的联系方式信息进行修改。 7. 图书卡或图书遗失后可申请挂失,挂失后将不能对图书进行借还操作。 3:分析各功能所需要用到的数据。 用户登录: 用户:用户名,密码 用户注册: 用户:用户名,密码,学号,姓名,系、专业,年级,电话号码,邮箱,性别 图书检索: 图书:图书号, ISBN号,书名,作者,价格,出版社,出版日期,简介 查询借阅信息: 借阅:图书,借阅时间,应归还时间,归还时间,续借次数 图书续借: 续借:用户名,图书,续借时间 图书挂失: 图书挂失:图书,用户名,挂失时间,取消挂失时间 图书卡挂失: 图书卡挂失:用户名,挂失时间,取消挂失时间 预约图书: 预约:用户名,图书名,预约时间,借书时间,是否取消 图书管理: 系统管理员:帐号,密码,姓名,性别,年龄,职称 图书管理员:帐号,密码,姓名,性别,年龄,职称 同意读者注册: 用户注册:是否同意 罚款管理: 罚款:用户名,图书,罚款金额,处罚原因,罚款时间 借书: 用户,图书,借书时间 还书: 图书,还书时间 书掉了,罚款: 4:分析实体和实体间的联系 实体:读者、图书、系统管理员、图书管理员、读者类型、图书类型 联系: 1. 图书类型 图书 属于 2. 读者类型 读者 属于 3. 读者 图书 借阅,预约,挂失,罚款,续借 4. 图书管理员 图书 借,还,罚款 5. 读者 读者 挂失 二:系统的概念模型设计。 每个实体的E-R图(未完)。 不同实体间的联系(未完): 综合的E—R图 三:数据模型的设计: 1、把上面的概念模型转换为关系模型: 实体的转换: 读者类型(类型编号,类型名称,可借阅的图书数) 读者(读者号,密码,姓名,系、专业,年级,电话号码,邮箱,性别,类型编 号) 图书类型(类型编号,类型名称) 图书(图书号, ISBN号,书名,作者,价格,出版社,出版日期,简介,类型编号) 图书管理员(帐号,密码,姓名,性别,年龄,职称) 系统管理员(帐号,密码,姓名,性别,年龄,职称) 联系的转换: 借阅限制(读者类型编号,图书类型编号,借阅天数) 图书卡挂失(读者号,挂失时间,取消挂失时间) 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,) 借书(,图书号,读者号,借出时间) 还书(图书管理员编号,图书号,还书时间) 续借(读者号,图书号,续借时间) 图书挂失(读者号,图书号,挂失时间,取消挂失时间) 预约(读者号,图书号,预约时间) 罚款(图书管理员,读者号,图书号,罚款时间,罚款金额,罚款原因) 2、关系的优化: 对上述关系模式的优化 图书管理员和系统管理员的关系模式相同,为了减少关系模式把这两个关系模式 合并为一个关系模式。 图书管理员(帐号,密码,姓名,性别,年龄,职称) 系统管理员(帐号,密码,姓名,性别,年龄,职称) 管理员(帐号,密码,姓名,性别,年龄,职称,类型) 借阅的数据处理与三个关系模式:借阅,借书,还书,在借阅的中包括除了管 理员以外的所有信息,则把这三个关系模式进行合并: 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,) 借书(管理员编号,图书号,读者号,借出时间) 还书(图书管理员编号,图书号,还书时间) 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,借出图书管理 员编号,还出的图书管理员编号) 3、最后的关系模式如下: 1. 读者类型(类型编号,类型名称,可借阅的图书数) 2. 读者(读者号,密码,姓名,系、专业,年级,电话号码,邮箱,性别,类型 编号) 3. 图书类型(类型编号,类型名称) 4. 图书(图书号, ISBN号,书名,作者,价格,出版社,出版日期,简介,类型编号) 5. 管理员(帐号,密码,姓名,性别,年龄,职称,类型) 6. 借阅限制(读者类型编号,图书类型编号,借阅天数) 7. 借阅(读者号,图书号,借阅时间,应归还时间,归还时间,借出图书管理员 编号,还出的图书管理员编号) 8. 续借(读者号,图书号,续借时间) 9. 图书卡挂失(读者号,挂失时间,取消挂失时间) 10. 图书挂失(读者号,图书号,挂失时间,取消挂失时间) 11. 预约(读者号,图书号,预约时间) 12. 罚款(图书管理员,读者号,图书号,罚款时间,罚款金额,罚款原因) 四:对每一个关系模式的具体定义 每一个关系对应的名,每一个属性对应的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值