《数据库课程设计实验报告图书馆管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计实验报告图书馆管理系统.doc(40页珍藏版)》请在三一办公上搜索。
1、安徽工业大学课程设计报告课 程: 数据库课程设计题 目: 图书馆管理系统班 级: 094班专 业: 软件工程姓名: 学号指导教师日期: 2011.12.5 目 录一 系统开发平台3二 需求与功能分析3三 概要设计.4系统的总体框图或系统功能图对各部分功能的分析四 数据库设计.5分析系统存在的实体、属性、以及实体间的联系画出ER模型图数据库中关系表五 程序代码设计和实现 7写出重点代码(若是代码一定要有相应的功能分析及注释)六 系统关键技术实现12核心功能模块的代码实现七 系统测试.15各基本功能模块的正确性测试(截图并结合文字说明)八 总结与展望.19本次课程设计的心得体会与收获系统存在的问题
2、以及改进的方向一、系统开发平台1.1 题目:图书馆管理系统图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理。现今,有很多的图书馆尚未使用计算机进行信息管理。图书馆若采取手工方式对图书资料和图书借阅情况进行人工管理,由于资料繁多,手工处理的工作量大,整体管理效率低下,也不方便读者对图书资料的查阅。为了提高日常的图书管理效率,必须开发满足大多数中小型的图书管理要求的图书管理系统。1.2 myeclipseMyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支
3、持十分不错。数据库采用了Mysql, MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。二、需求分析与功能分析2
4、.1 问题的提出:为了高效率的完成图书馆图书的管理,决定开发图书馆管理系统。2.2当决定要开发一个信息系统时,首先要对信息系统的需求进行分析,需求分析要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。 获得当前系统的处理流程,在此首先假设当前系统是手工处理系统。手工处理流程大致是这样的。读者将要借的书和借阅证交给工作人员,工作人员将每本书附带的描述书信息的卡和读者借阅证一起放在一个小格栏,并在借阅证和每本书上贴的借阅信息。这样借书过程就完成了。还书时读者将要还的图书交给工作人员,工作人员图书信息找到相应的书卡和借阅证,并填写相应的
5、还书信息。 抽象出当前系统的逻辑模型。在理解当前系统“怎么做”的基础上,抽取其“做什么”的本质,从而从当前系统的物理模型抽象出当前系统的逻辑模型。在物理模型中有许多物理因素,随着分析工作的深入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的困素,去掉那些非本质的困素即可获得反映系统本质的逻辑模型。 建立目标系统的逻辑模型。分析目标系统与当前系统逻辑上的差别,明确目标系统到底要“做什么”,从而从当前系统的逻辑模型导出目标系统的逻辑模型。在对上述流程进行分析后,我们对新的图书处理流程进行
6、整理,图书馆借还书过程 借书过程:读者从架上选到所需图书后,将图书和借书卡交管理人员,管理人员用码阅读器将图书和借书卡上的读者条码2码读入处理系统。系统根据读者条码从读者文件和借阅文件中找到相应记录;根据图书上的条码从图书文件中找到相应记录,读者如果有如下列情况之一将不予办理借书手续。 1 该读者记录中有止借标志。 2 该读者还有已超过归还日期而仍未归还的图书。 3 该图书暂停外借。若读者符合所有借书条件时,予以借出。系统在借阅文件中增加一条记录,记入读者码、图书条码、借阅日期等内容。 还书过程:还书时读者只要将书交给管理人员,管理员将书上的图书条码读入系统,系统从借阅文件上找到相应记录,填上
7、还书日期后写入借阅历史文件,并从借阅文件上删去相应记录,同时系统对借还书日期进行计算并判断是否超期,若不超期则结束过程,若超期则计算出超期天数、罚款数、并打印罚款通知书,记入罚款文件。同时在读者记录上作止借标记。当读者交来罚款收据后,系统根据读者条码查罚款文件,将相应记录写入罚款历史文件,并从罚款文件只删除该记录,同时去掉读者文件中的止借标记。2.3图书管理系统的功能分析 系统功能分析是在系统开发的总体任务的基础上完成。图书馆管理信息系统需要完成功能主要有: 有关读者种类标准的制定、种类住处的输入,包括种类编号、种类名称、借书数量、借书期限、有效期限、备注等。 读者种类信息的修改、查询等。 读
8、者基本信息的输入,包括读者编号、读者姓名、读者种类、读者性别、电话号码、办证日期、备注等。 读者基本信息的查询、修改,包括读者编号、读者姓名、读者种类、读者性别、电话号码、办证日期、备注等等。 书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称、关键词、备注信息等。 书籍信息的输入,包括书籍编号、书籍名称、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、书籍页书、关键词、登记日期、备注信息等。 借书信息的输入,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、备注信息等。 借书信息的查询、修改,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、备
9、注信息等。 还书信息的输入,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期、备注信息等。 还书信息的查询和修改,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍姓名、借书日期、还书日期、备注信息等。三 概要设计3.1、系统功能表:图书馆管理系统登录系统用户管理员修改密码图书查询退出系统密码服务更新图书信息更新用户信息违章处理图书借还退出系统四 数据库设计4.1、分析系统存在的实体、属性、以及实体间的联系 实体:用户,管理员,图书用户的属性包括编号,姓名,性别等管理员的属性包括编号、姓名、性别等图书的属性包括类别,书名,价格等实体间的关系:一个用户可以借多本书
10、一个管理员管理多个用户和图书 4.2、画出ER模型图用户 图书管理员性别年龄姓名编号押金图书编号图书类别书名作者译者编号性别姓名管理管理借书日期密码类型电话出版社价格年龄借阅4.3、数据库中的关系表五 程序代码设计和实现第一个登录界面:package com.ts.base;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Timestamp;imp
11、ort java.util.ArrayList;import java.util.List;import com.ts.model.*;import com.ts.tool.Check;public class Business protected static String dbClassName = com.mysql.jdbc.Driver; /数据库驱动类protected static String dbUrl = jdbc:mysql:/localhost:3306/ts;/连接URLprotected static String dbUser = ysf;/数据库用户名prote
12、cted static String dbPwd = 123456; /数据库密码private static Connection conn = null; /数据库连接对象, 初值nullpublic Business() /默认构造函数try if (conn = null) /连接对象为空Class.forName(dbClassName);/加载驱动类信息conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);/建立连接对象 catch (Exception ee) ee.printStackTrace();public st
13、atic 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 in
14、t executeUpdate(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(
15、);finallyconn = null;/设置连接对象为null值/* * 管理员登录方法 */public static Operater check(String name, String password) Operater operater=new Operater();/操作员信息对象String sql = select * from operator where name= + name+ and password= + password + and type=1;/查询字符串ResultSet rs = Business.executeQuery(sql);/执行查询try
16、while (rs.next() /如果查询到了记录operater.setId(rs.getString(id);/设置操作员编号operater.setName(rs.getString(name);/设置操作员用户名operater.setPassword(rs.getString(password);/设置管理员密码operater.setType(rs.getString(type);/用户类型 catch (Exception e) e.printStackTrace();Business.close();/关闭连接对象return operater;/返回操作员信息对象/* *
17、查询类别方法 */public static List selectBookCategory() List list=new ArrayList();String sql = select * from bookType;ResultSet rs = Business.executeQuery(sql);try while (rs.next() BookType bookType=new BookType();bookType.setId(rs.getString(id);bookType.setTypeName(rs.getString(typeName);bookType.setDays(
18、rs.getString(days);bookType.setFk(rs.getString(fk);list.add(bookType); catch (Exception e) e.printStackTrace();Business.close();return list;public static List selectBookCategory(String bookType) List list=new ArrayList();String sql = select days from bookType where typeName=+bookType+;ResultSet rs =
19、 Business.executeQuery(sql);try while (rs.next() BookType type=new BookType();type.setDays(rs.getString(days);list.add(type); catch (Exception e) e.printStackTrace();Business.close();return list;/* * 图书类别表相关操作 * */public static int InsertBookType(String bookTypeName,String days,Double fk)int i=0;try
20、String sql=insert into bookType(typeName,days,fk) values(+bookTypeName+,+days+,+fk+);i=Business.executeUpdate(sql);catch(Exception e)e.printStackTrace();return i;public static int UpdatebookType(String id,String typeName,String days,String fk)int i=0;tryString sql=update bookType set typeName=+typeN
21、ame+,days=+days+,fk=+fk+ where id=+id+;i=Business.executeUpdate(sql);catch(Exception e)e.printStackTrace();Business.close();return i; public static List selectBookTypeFk(String bookType) /取每种书超过规定时间罚款金额List list=new ArrayList();String sql = select * from bookType where typeName=+bookType+;ResultSet
22、rs = Business.executeQuery(sql);try while (rs.next() BookType type=new BookType();type.setFk(rs.getString(fk);type.setDays(rs.getString(days);list.add(type); catch (Exception e) e.printStackTrace();Business.close();return list;/* * 图书信息表相关操作 */* * 插入图书信息方法 */public static int Insertbook(String id,St
23、ring typeId,String bookname,String writer,String translator,String publisher,Date date,Double price)int i=0;tryString sql=insert into bookInfo(book_id,typeId,bookname,writer,translator, +publisher,date,price) values(+id+,+typeId+,+bookname+, +writer+,+translator+,+publisher+,+date+,+price+);i=Busine
24、ss.executeUpdate(sql);catch(Exception e)System.out.println(e.getMessage();Business.close();/关闭连接对象return i;/返回更新记录数/* * 查询图书相关信息 * */public static List selectBookInfo() List list=new ArrayList();String sql = select * from bookInfo;ResultSet rs = Business.executeQuery(sql);try while (rs.next() BookIn
25、fo bookinfo=new BookInfo();bookinfo.setBook_id(rs.getString(boo_id);bookinfo.setTypeid(rs.getString(typeid);bookinfo.setBookname(rs.getString(bookname);bookinfo.setWriter(rs.getString(writer);bookinfo.setTranslator(rs.getString(translator);bookinfo.setPublisher(rs.getString(publisher);bookinfo.setDa
26、te(rs.getDate(date);bookinfo.setPrice(rs.getDouble(price);list.add(bookinfo); catch (Exception e) e.printStackTrace();Business.close();return list;public static List selectBookInfo(String book_id) /根据图书编号查询图书List list=new ArrayList();/保存所有查询到书籍信息String sql = select * from bookInfo where book_id=+boo
27、k_id+;ResultSet rs = Business.executeQuery(sql);/执行查询try while (rs.next() /遍历结果集BookInfo bookinfo=new BookInfo();/书籍信息对象bookinfo.setBook_id(rs.getString(book_id);/设置书籍编号bookinfo.setTypeid(rs.getString(typeid);/设置类别编号bookinfo.setBookname(rs.getString(bookname);/设置书籍名称bookinfo.setWriter(rs.getString(w
28、riter);/设置作者bookinfo.setTranslator(rs.getString(translator);/设置译者bookinfo.setPublisher(rs.getString(publisher);/设置出版社bookinfo.setDate(rs.getDate(date);/设置出版日期bookinfo.setPrice(rs.getDouble(price);/设置价格list.add(bookinfo);/添加书籍信息 catch (Exception e) e.printStackTrace();Business.close();/关闭连接对象return l
29、ist;/返回查询结果集/* * 修改图书信息方法 */public static int Updatebook(String book_id,String typeId,String bookname,String writer,String translator,String publisher,Date date,Double price)int i=0;/更新记录数tryString sql=update bookInfo set book_id=+book_id+,typeId=+typeId+,bookname=+bookname+,writer=+writer+,translat
30、or=+translator+,publisher=+publisher+,date=+date+,price=+price+ where book_id=+book_id+;i=Business.executeUpdate(sql);/执行更新catch(Exception e)e.printStackTrace();Business.close();/关闭连接对象return i;/返回更新记录数/* * 对读者信息表执行的相关操作 */public static int InsertReader(String name,String sex,String age,String ident
31、ityCard,Date date,String maxNum,String tel,Double keepMoney,String zj,String zy,Date bztime,String book_id)int i=0;tryString sql=insert into reader(name,sex,age,identityCard,date,maxNum,tel,keepMoney,zj,zy,bztime,book_id) values(+name+,+sex+,+age+,+identityCard+,+date+,+maxNum+,+tel+,+keepMoney+,+zj
32、+,+zy+,+bztime+,+book_id+);System.out.println(sql);i=Business.executeUpdate(sql);catch(Exception e)e.printStackTrace();Business.close();return i;public static List selectReader() List list=new ArrayList();String sql = select * from reader;ResultSet rs = Business.executeQuery(sql);try while (rs.next(
33、) Reader reader=new Reader();/reader.setId(rs.getString(id);reader.setName(rs.getString(name);reader.setSex(rs.getString(sex);reader.setAge(rs.getString(age);reader.setIdentityCard(rs.getString(identityCard);reader.setDate(rs.getDate(date);reader.setMaxNum(rs.getString(maxNum);reader.setTel(rs.getSt
34、ring(tel);reader.setKeepMoney(rs.getDouble(keepMoney);reader.setZj(rs.getInt(zj);reader.setZy(rs.getString(zy);reader.setBook_id(rs.getString(book_id);reader.setBztime(rs.getDate(bztime);list.add(reader); catch (Exception e) e.printStackTrace();Business.close();return list;public static List selectR
35、eader(String reader_id) List list=new ArrayList();String sql = select * from reader where book_id=+reader_id+;ResultSet rs = Business.executeQuery(sql);try while (rs.next() Reader reader=new Reader();reader.setName(rs.getString(name);reader.setSex(rs.getString(sex);reader.setAge(rs.getString(age);re
36、ader.setIdentityCard(rs.getString(identityCard);reader.setDate(rs.getDate(date);reader.setMaxNum(rs.getString(maxNum);reader.setTel(rs.getString(tel);reader.setKeepMoney(rs.getDouble(keepMoney);reader.setZj(rs.getInt(zj);reader.setZy(rs.getString(zy);reader.setBook_id(rs.getString(book_id);reader.se
37、tBztime(rs.getDate(bztime);list.add(reader); catch (Exception e) e.printStackTrace();Business.close();return list;public static int UpdateReader(String id,String name,String sex,String age,String identityCard,Date date,String maxNum,String tel,Double keepMoney,String zj,String zy,Date bztime,String
38、book_id)int i=0;tryString sql=update reader set name=+name+,sex=+sex+,age=+age+,identityCard=+identityCard+,date=+date+,maxNum=+maxNum+,tel=+tel+,keepMoney=+keepMoney+,zj=+zj+,zy=+zy+,bztime=+bztime+where book_id=+book_id+;i=Business.executeUpdate(sql);catch(Exception e)e.printStackTrace();Business.
39、close();return i;public static int DelReader(String book_id)int i=0;tryString sql=delete from reader where book_id=+book_id+;/System.out.println(sql);i=Business.executeUpdate(sql);catch(Exception e)e.printStackTrace();Business.close();return i;/* * 对订购信息表操作 */public static int InsertBookOrder(String
40、 book_id,Date date,String number,String operator,String checkAndAccept,Double zk)int i=0;tryString sql=insert into order(book_id,date,number,operator,checkAndAccept,zk) values(+book_id+,+date+,+number+,+operator+,+checkAndAccept+,+zk+);System.out.println(sql+n);i=Business.executeUpdate(sql);catch(Exception e)e.printStackTrace();Business.close();return i;public static List selectBookOrder()