数据库课程设计报告图书管理系统(DOC)_第1页
数据库课程设计报告图书管理系统(DOC)_第2页
数据库课程设计报告图书管理系统(DOC)_第3页
数据库课程设计报告图书管理系统(DOC)_第4页
数据库课程设计报告图书管理系统(DOC)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理课程设计报 告 书课 题 名图书信息管理系统指导教师 日 期目 录一、前言。.。.。.。.。.。.。.。.。.。.。.。.。.。2二、概述。.。.。.。.。.。.。.。.。.。.。.。.。22。1开发目的.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。2三、需求分析.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。23。1可行性分析。.。.。.。.。.。.。.。.。.。.。.。.。.。23.1。1技术可行性。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.23。1.2经济可行性。.。.。.。.。.。.。.。.。.。.。.。.。33.1。3管理可行性.。

2、.。.。.。.。.。.。.。.。.。.。.。.。.。33。2系统目标.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。33。3系统应该具备的功能.。.。.。.。.。.。.。.。.。.。.。33。4系统结构图。.。.。.。.。.。.。.。.。.。.。44、 概念设计。.。.。.。.。.。.。.。.。.。.。.。.。55、 逻辑设计。.。.。.。.。.。.。.。.。.。.。.。.。.。96、 物理设计。.。.。.。.。.。.。.。.。.。.。.。.。95.1表命令。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.95.2表结构图.。.。.。.。.。.。.。.。.。.137、

3、 代码实现。.。.。.。.。.。.。.。.。.。.。.。.。.。136.1数据库连接.。.。.。.。.。.。.。.。.。.。.。.。.。.136.2增加一条图书记录。.。.。.。.。146.3删除一条图书记录。.。.。.。.。.。.。.。.。.。166.4修改一条图书记录。.。.。.。.。.。.。.。.。.。.。176。5查询一条图书记录。.。.。.。.。.。.。.。.。.。.。.。.。.。.18八、结束语.。.。.。.。.。.。.。.。.。.。.。.。.。.。22前言近年来,随着我国市场经济的迅速发展和人们生活水平的不断提高,以及计算机的普及使用,图书馆藏书的数目逐渐增大,这也是挑战了图书管

4、理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,提高了图书馆的工作效率,为想要借书和还书的人提供更好的服务。1、概述1.1 开发目的 图书信息管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地.我们小组开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校、社会服务。2、需求分析2。1可行性分析2.1.1技术可行性 就技术力量来说,我们小组可以完成此次开发工作。开发过程中会出现许多问题,有我们预想之中的,也有一些没有在我们预想中,但我们有信心克服

5、一切困难。我们小组各成员已经学习了MySQL,SQL,对网络技术和操作系统也有系统的了解,熟悉计算机原理,能解决常见的硬件故障和硬件选择。2.1。2经济可行性 目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上十分有限。而且,目标系统并不是十分的复杂,开发的周期较短,人员有限.当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时也为系统的进一步推广创造了条件.2。1.3管理可行性整个系统由于是自行开发,自行使用,所以很方便管理使用。2。2系统目标图书管理信息系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面

6、。对于前者要求建立起数据一致性和完整性强,数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。系统开发的总体任务是实现各种信息的系统化,规范化和自动化。2.3 系统应该具备的功能读者基本信息的输入,包括借书证编号、读者姓名、读者性别等.读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等.书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称.书籍类别信息的查询、修改,包括类别编号、类别名称。书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社

7、名称、出版日期登记日期等。借书信息的输入,包括读者借书证编号、书籍编号、借书日期。借书信息的查询、修改,包括借书证编号、借书证编号、读者姓名、书籍编号、书籍名称、借书日期等。还书信息的输入,包括借书证编号、书籍编号、还书日期. 还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额.超期还书罚款查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等。管理员管理:包括创建读者用户信息、删除读者用户信息、添加图书信息、删除图书信息。超级管理员管理:包括创建管

8、理员用户信息、删除管理员用户信息、创建读者用户信息、删除读者用户信息、添加图书信息、删除图书信息。2.4 系统结构图(根据需求分析,图书信息管理系统的结构图如下:)图书管理系统借还书子系统查询子系统管理子系统图书类管理图书管理读者管理逾期图书管理管理员管理直接查询多条件查询借 书还 书帮助子系统登录子系统3、概念设计所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。图书管理信息系统可以划分的实体有:书籍类别信息实体、读者信息实体、书籍信息实体、借阅记录信息实体,归还记录信息实体。用ER图一一描述这些实体.类别实体图:书籍类别类别编号类别名称读者信息实体图:读者读者姓名读者性别读

9、者种类e登记时间读者借书证编号可借书数已借书数逾期未还书数管理员实体图管理员管理员姓名管理员编号管理员密码管理员权限超级管理员实体图超级管理员管理员姓名管理员编号管理员密码管理员权限书籍实体图:书籍书籍编号书籍名称书籍类别编号书籍作者出版时间收录时间是否被借出版社借阅记录息信实体图:读者借书证编号书籍类别编号借阅时间隔借阅记录信息归还记录信息实体图:归还记录信息读者借书证编号书籍类别编号归还时间隔罚款信息实体图:书籍类别编号罚款信息实体实体罚款金额读者姓名读者借书证编号书籍名称借阅时间隔总的信息实体ER图:11n信息登记读者书籍书类别归还借阅罚款罚款信息还书信息借阅信息实体mnmnmnn1m创

10、建1管理nnn管理m管理员超级管理员创建1mn出具罚款单4、逻辑设计(1)书籍类别(类别编号,类别名)(2)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期, 可借书数 ,已借书数,逾期未还书数)(3) 管理员(管理员编号,管理员姓名,管理员密码,管理员权限)(4) 超级管理员(管理员编号,管理员姓名,管理员密码,管理员权限)(5)书籍(书籍编号,书籍名称,书籍类别,书记作者,出版社名称, 出版日期,登记日期)(6)借阅(借书证编号,书籍编号,读者借书时间)(7)还书(借书证编号,书籍编号,读者还书时间)(8)罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书 时间)5、 物理

11、设计表命令:(1)创建数据库CREATE DATABASE librarysystemON (NAME = librarysystem, FILENAME = d:librarysystem。mdf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )LOG ON( NAME = 'library, FILENAME = e:librarysystem.ldf, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )(2)书本类别表建立create table book_style( bookstyleno varc

12、har(30) primary key, bookstyle varchar(30)(3)创建书库表create table system_books( bookid varchar(20) primary key, bookname varchar(30) Not null, bookstyleno varchar(30) Not null, bookauthor varchar(30), bookpub varchar(30) , bookpubdate datetime, bookindate datetime , isborrowed bit,foreign key (bookstyl

13、eno) references book_style (bookstyleno),)(4)借书证表建立create table system_readers ( readerid varchar(9)primary key, readername varchar(9)not null , readersex varchar(2) not null, readertype varchar(10), regdate datetime,booktotal int,borrowednum int,overduenoreturnnum int )(5)借书记录表建立create table borrow

14、_record( bookid varchar(20) primary key, readerid varchar(9), borrowdate datetime, foreign key (bookid) references system_books(bookid), foreign key (readerid) references system_readers(readerid),)(6)还书记录表建立create table return_record( bookid varchar(20) primary key, readerid varchar(9), returndate d

15、atetime, foreign key (bookid) references system_books(bookid), foreign key (readerid) references system_readers(readerid) (7)罚款单表建立create table reader_fee( readerid varchar(9)not null, readername varchar(9)not null , bookid varchar(20) primary key, bookname varchar(30) Not null, bookfee smallmoney,

16、borrowdate datetime, foreign key (bookid) references system_books(bookid), foreign key (readerid) references system_readers(readerid)(8) 管理员表建立create table system_Administrator (administratorid varchar(9)primary key, administratorname varchar(9)not null , administratorpassword varchar(2) not null, a

17、dministratorpermission varchar(10) )(9) 索引的创建create index bookstyle_index_style on book_style(bookstyle)create index borrow_record_index_readerid on borrow_record(readerid)create index reader_fee_index_readerid on reader_fee (readerid)create index return_record_index_readerid on return_record(reader

18、id)create index system_books_index_bookname on system_books(bookname)create index system_books_index_styleno on system_books(bookstyleno)create index system_books_index_bookauthor on system_books(bookauthor)表3-1 book_sytle 书籍类别信息表表中列名数据类型可否为空说明bookstylenovarcharnot null(主键)种类编号bookstyleVarcharnot nu

19、ll种类名称表32system_readers读者信息表格表中列名数据类型可否为空说明readeridvarcharnot null(主键)读者借书证号readernamevarcharnot null读者姓名readersexvarcharnot null读者性别readertypevarcharnot null读者种类regdatedatetimenull登记日期booktotalintnull可借书数borrowednumintnull已借书数overduenoreturnnumintnull逾期未还书数表33system_book书籍信息表表中列名数据类型可否为空说明bookidVar

20、charNot null(主键)书籍编号booknameVarcharNot null书籍名称续表3-3bookstyleVarcharNot null书籍类别bookauthorVarcharNot null书籍作者bookpubVarcharNull出版社名称bookpubdateDatetimeNull出版日期bookindateDatetimeNull登记日期isborrowedBitNot Null是否被借出表3-4borrow_record 借阅记录信息表表中列名数据类型可否为空说明readeridVarcharNot null(外主键)读者借阅证编号bookidVarcharNo

21、t null(外主键)书籍编号borrowdateDatetimeNot null读者借书时间表3-5return_record 借阅记录信息表表中列名数据类型可否为空说明readernameVarcharNot null(外主键)读者借阅证编号readeridVarcharNot null(外主键)书籍编号returndatedatetimeNot null读者还书时间表36reader_fee 罚款记录信息表表中列名数据类型可否为空说明readeridvarcharNot null读者借书证编号readernamevarcharNot null读者姓名bookidvarcharNot nu

22、ll(外主键)书籍编号booknamevarcharNot null书籍名称bookfeeSmallmoneyNot Null罚款金额borrowdatedatetimeNot Null借阅时间表37system_Administrator管理员信息表表中列名数据类型可否为空说明administratoridvarcharnot null(主键)管理员编号administratornamevarcharnot null管理员姓名administratorpasswordvarcharnot null管理员密码administratorpermissionvarcharnot null管理员权限

23、表38 system_Super_Administrator管理员信息表表中列名数据类型可否为空说明superadministratoridvarcharnot null(主键)管理员编号superadministratornamevarcharnot null管理员姓名superadministratorpasswordvarcharnot null管理员密码superadministratorpermissionvarcharnot null管理员权限表结构图:6、代码实现1)数据库的连接: import java。sql。*; import javax。swing。JOptionPane

24、; public class Query public static Connection conection = null; static Connection getConnection()/连接 MySQL 数据库 try Class.forName(”org.gjt。mm.mysql。Driver");/加载驱动 conection = DriverManager.getConnection(/连接字符串 "jdbc:mysql:/localhost:3306/book",”root”,”123"); System。out。println(&qu

25、ot;数据库连接成功”); catch(java。lang。ClassNotFoundException classnotfound)classnotfound.printStackTrace();/驱动未找到 catch(java。sql.SQLException sql) sql.printStackTrace();/SQL 执行时发生异常,打印栈信息 return conection; 2)增加一条图书记录:public static boolean Insert(Book aBook) Connection connect=getConnection();/得到连接 boolean r

26、es=false; try Statement stmt = connect。createStatement();/查询集 String sql = ”select * from book where BID=”+aBook。getBID()+”'" ResultSet rs=stmt。executeQuery(sql);/执行 SQL 命令,返回结果集 if (rs。next()/图书编号存在 res=false; JOptionPane.showMessageDialog(null,”学生信息插入失败,该 学生 ID 号已存在”,"警告",JOptio

27、nPane.WARNING_MESSAGE); rs。close(); stmt.close(); else /不存在 StringsqlString=”insert into book values('"+aBook。getBID()+",'”+aBook。getBname()+”,'”+aBook。getBauthor()+”,'”+aBook.getPress()+",”+aBook。getBinfo()+”,”+aBook。getYear()+"-”+aBook.getMonth()+"”+aBook。g

28、etDay()+",'”+ aBook。getBclass()+”')”; res =stmt.execute(sqlString); res=true; if(res) JOptionPane。showMessageDialog(null," 图 书 信 息 插 入 成 功”,"成功”,JOptionPane.INFORMATION_MESSAGE); rs。close(); else res=false; JOptionPane。showMessageDialog(null,"图书信息插入失败”, "警告”,JOptionP

29、ane。WARNING_MESSAGE); rs。close(); catch (SQLException e) /捕获异常 res=false; System.out.print(”Error loading Mysql Driver!”); e。printStackTrace(); return res; 3)删除一条图书记录:public static boolean delBook(String bid) Connection connect=getConnection(); boolean res=false; try Statement stmt = connect。createS

30、tatement(); String sql = ”select * from book where Bid=”+bid+”; ResultSet rs=stmt。executeQuery(sql); if (rs。next() String sqlString="delete from book where Bid="+bid+”"; stmt。executeUpdate(sqlString); JOptionPane。showMessageDialog(null,"图书信息删除成功”, ”成功",JOptionPane。INFORMATIO

31、N_MESSAGE); res=true; rs。close(); stmt。close(); else JOptionPane。showMessageDialog(null,”图书信息删除失败,该 图书 ID 号不存在”,”警告”,JOptionPane.WARNING_MESSAGE); res=false; rs。close(); stmt。close(); catch (SQLException e) JOptionPane.showMessageDialog(null,”图书信息删除失败", ”成功",JOptionPane。INFORMATION_MESSAGE

32、); res=false;System.out。print("Error loading Mysql Driver!”); e。printStackTrace(); return res; 4)修改图书信息: public static boolean modifyBook(Book oldBook) Connection connect=getConnection(); boolean flag=false; try Statement stmt = connect。createStatement(); /查询集 String sqlString=”update book set

33、Bname=”+oldBook。getBname()+”,Bauthor=”+oldBook。getBauthor() +”, Press=”+oldBook。getPress()+", BInfo='”+oldBook。getBinfo()+”,BDate=”+oldBook。getYear()+”-”+oldBook。getMonth()+"”+oldBook。getDay()+",Bclass=”+oldBook.getBclass()+” where BID='"+oldBook。getBID()+”; stmt。executeU

34、pdate(sqlString); JOptionPane.showMessageDialog(null,"图书信息修改成功”, "成功”,JOptionPane。INFORMATION_MESSAGE); flag=true; catch (SQLException e) /捕获错误 JOptionPane。showMessageDialog(null,”图书信息修改失败”, ”警告”,JOptionPane。WARNING_MESSAGE);flag=false; System。out。print("Error loading Mysql Driver!”);

35、e.printStackTrace(); return flag; 5)修改一条图书记录并将结果用表格显示出来:public javax。swing。ListSelectionModel; javax。swing.RowSorter; javax.swing。table.DefaultTableModel; javax。swing。table.TableRowSorter; class BookInfoQuery extends JFrame BorderLayout borderLayout1 = new BorderLayout();/布局方式 JSplitPane jSplitPane1

36、 = new JSplitPane();/分割面板 JScrollPane jScrollPane1 = new JScrollPane();/滚动面板,用于放置表格 JPanel jPanel1 = new JPanel();/面板 JTable jTable1 = new JTable();/表格DefaultTableModel tablemodel = null;/默认表格模型 JPanel jPanel3 = new JPanel();/面板 GridLayout gridLayout1 = new GridLayout();/ 网格布局方式 JButton jBexit = new

37、 JButton();/退出按钮 ListSelectionModel selectionMode=null; public BookInfoQuery(String bID,String bname,String bauthor, String press,String bInfo,String year,String month,String day,String bclass) getContentPane().setLayout(borderLayout1);/设置布局方式 String name = ”图书编号”,”图书名称","作者”,”出版社",&q

38、uot;图书简介 ","出版时间”, ”类别”; String sqlStr = ”select from book where Year(BDate)1900"; if(bID!=null)/查询时如果编号不为空 sqlStr+=” and BID="+bID+”'”; if(bname!=null)/查询时如果图书名不为空 sqlStr+=” and Bname like ”+bname+"";/模糊查询 if(bauthor!=null)/查询时如果作者不为空 sqlStr+=” and Bauthor like'

39、;”+bauthor+"”;/模糊查询 if(press!=null)/查询时如果出版社不为空 sqlStr+=” and Press like '”+press+"%";/模糊查询 if(bInfo!=null)/查询时如果图书信息不为空 sqlStr+=” and Binfo like '%”+bInfo+"%”;/模糊查询 if(year!=null)/出版年份不为空 sqlStr+=” and Year(BDate)”+year+" ”;/按条件查询 if(month!=null)/出版月份不为空 sqlStr+=&qu

40、ot; and Month(BDate)"+month+” ";/按条件查询 if(day!=null)/出版日不为空 sqlStr+=” and Day(BDate)”+day+” ";/按条件查询 if(bclass!=null)/ 图书类别不为空 sqlStr+=" and Bclass like '”+bclass+”%”;/模糊查询 sqlStr+=” order by BDate desc”;/按出版日期降序排序 ToTable bdt = new ToTable(); tablemodel = bdt.getTableModel(n

41、ame,sqlStr); jTable1。setModel(tablemodel); jTable1。setAutoResizeMode(JTable。AUTO_RESIZE_SUBSEQUENT_COLUMN S);/让其它的列也跟随变动 jTable1.setEnabled(true);/设置表格可用 jTable1。setCellSelectionEnabled(true); jTable1。setBackground(Color。pink);/设置表格背景颜色 selectionMode=jTable1.getSelectionModel();selectionMode。setSele

42、ctionMode(ListSelectionModel.SINGLE_SELEC TION); jTable1。setRowHeight(24);/设置表格高度 RowSorter<DefaultTableModel sorter TableRowSorterDefaultTableModel(tablemodel)= newjTable1。setRowSorter(sorter);/表格排序过滤 jScrollPane1。setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); jScrollPane1。setVerticalScrollBarPoli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论