1、《数据库系统实验》 课程设计报告 题目 图书借阅管理子系统 小组成员信息 姓名 学号 班级 分工 提交时间: 年 月 日 一. 开发环境与开发工具 JAVA集成开发工具,Win7下SQL Server 二. 系统需求分析(5分) 系统数据字典 本系统的设计模拟一般学校特别是高校的图书借阅管理内容,经过充分地系统调研,发现本系统应包括图书馆信息、图书信息、图书室信息、学生信息、学生借书证信息等需管理信息。进一步还发现信息实体间需管理信息有:借书证办理、图书存放管理、学生借阅图书前查询、学生凭借借书证借书管理、学生借书后查询等
2、内容。 ① 能全面管理学校教学相关的各类主体、如图书馆信息、图书信息、图 书室信息、学生信息、学生借书证信息等; ② 通过使用计算机能方便地维护(包括插入、删除、修改)各信息表; ③ 能组合查询基于某信息表的所需信息; ④ 能方便地实现基于多个表的连接查询; ⑤ 能方便地实现基于单个或多个表的统计功能; ⑥ 需要时能及时进行输出与打印; ⑦ 系统应具有网络多用户功能,具有用户管理功能,对分等级用户提 供相应系统功能; 三. 功能需求分析(5分) 系统功能模块图 ① 在数据库服务器如SQL Server 中,建立个关系模式对应的库表, 并确定主建、索引、参照完
3、整性、用户自定义完整性等。 ② 能对各库表进行输入、修改、删除、添加、查询、打印等基本操作。 ③ 新生入学,能根据学生信息办理各位学生的借书证,并能对本校的研究 生作必要调整。 ④ 能明细实现如下各类查询: · 能查询可借阅图书的详细情况。 · 能查询某学生的借书情况。 · 能查询图书的借出情况。 ⑤ 能统计实现如下各类查询: · 能统计出完成一次借阅任务后已借出书本总数和可借书量。 · 能统计某图书的总借出量与库存量。 · 能统计出某学生的借书总量、当天为止总罚金等。 ⑥ 学生查询图书情况后即可借阅所需图书,对于未借出的
4、图书可以预约。 ⑦ 能分析出某学生借书是否已超期(须付清罚款金额后才可借书)。 ⑧ 用户管理功能,包括用户登录、注册新用户更改用户密码等功能。 ⑨ 其他读者认为子系统应有的查询、统计功能。 四. 系统设计(15分) 数据概念结构设计(包括数据流程图、系统ER图)(5分) 图书借阅管理子系统顶层数据流图 图书借阅管理子系统中间层数据流图 图书借阅管理子系统底层数据流图 反映教学管理系统的整体E-R图 数据库关系模式设计(5分) 按照实体-联系图转化为关系模式的规则,本系统的E-R图可转化为如下约 10个关系模式(另外有两个辅助关系,共12个):
5、 · 图书馆(馆编号,馆名,馆长工号,成立日月,地点,电话) · 借书证(借书证号,学生姓名,学生系别,专业,借书上限书) · 学生 (学号,类别,学生姓名,性别,出生日起,入校日期,电话,家庭住址,备注,专业,班号) · 图书 (图书编号,图书名称,出版日期,图书出版社) · 图书室(房间号,书架号,图书总量) · 借书 (借书证号,图书编号,借出日期,归还日期) · 存放 (图书编号,房间号,书架号) · 办理 (学号,类别,借书证号,办理日期) · 借阅前查询(图书编号,图书名称,出版日期,出版社,房间号,借阅情况) · 借书后
6、查询 (图书编号,借书证号,借出时间,需归还时间) 另需辅助表: · 用户表 (用户编号,用户名,口令,等级) · 日志表 (序号,操作用户号,操纵类别,操作命令,操作日期时间) 借书证&学生→读者信息 · 读者信息 (读者编号,读者姓名,性别,学院,专业,班级,学制,年级,情况,需借数量,借书数量) 图书&借书→图书信息 · 图书信息 (图书编号,图书名称,图书状态,读者编号,借阅日期,出版社,出版时间) · 借阅信息 (图书名称,读者编号,日期) · 用户信息 (用户明,密码) 数据库物理结构设计(5分) 根据已设计出的关系模式及各模式的完整性
7、要求,现在就可以在SQL Server数据库系统中行实现这些逻辑结构。下面是创建数据及其表结构的Transact-SQL命令(SQL Server 中的SQL命令) CREATE DATABASE TSJY; go USE TSJY; CREATE TABLE buser( user_id varchar(50) NOT NULL PRIMARY KEY CLUSTERED(user_id), user_name varchar(50) NULL, sex varchar(50) NULL, dept varchar(50) NULL, speciality
8、varchar(50) NULL, class varchar(50) NULL, esys varchar(50) NULL, grade varchar(50) NULL, situation varchar(50) NULL, sum bigint(8) default(0), inhand bigint(8) default(0) ) book (book_id, book_name, status, user_id, borrow_date, press, year) CREATE TABLE book( book_id varchar(50)
9、 NOT NULL PRIMARY KEY CLUSTERED(book_id), book_name varchar(50) NULL, status varchar(50) NULL, user_id varchar(50) NULL CONSTRAINT BS_F FOREIGN KEY REFERENCES buser(user_id), borrow_date varchar(50) NULL, press varchar(50) NULL, year varchar(50) NULL, ) CREATE TABLE reserve
10、 book_name varchar(50) NULL, CONSTRAINT BO_F FOREIGN KEY REFERENCES book(book_name), user_id varchar(50) NULL CONSTRAINT BS_F FOREIGN KEY REFERENCES buser(user_id), date varchar(50) NULL ) CREATE TABLE admin( uname varchar(50) NULL upassword varchar(50) NULL ) 五. 系统功能的实现 (10分) 主要功能模块的实现过程(
11、简述,不要全部源代码放在此处) 1教学管理子系统的主窗体设计 2主窗体的菜单设计 3创建公共模块——图书借还及预定 与数据库连接代码如下 package library; import java.io.*; import java.sql.*; import javax.swing.JOptionPane;; public class Bridge { //private String dbURL = "jdbc:odbc:driver={Micorsoft.jet.OLEDB.4.0 (*.mdf)};dbq=E:\\coding\\db\\tsjy\\T
12、UJYl.mdf"; private String dbURL = "jdbc:odbc:tsjy"; ; private String user = "sa"; private String password = ""; public Connection getConnection() { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); return DriverManager.getConnection(dbURL,user,password); } catch(Exception e)
13、 { e.printStackTrace(); JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WARNING_MESSAGE); } return null; } void setURL(String url){ this.dbURL = url; } void setUser( String user ){ this.user = user; } void setPassword( String pass ){ this.password =
14、pass; } } class Manage{ private Statement sta; public void setStatement(Connection con) { try{ this.sta=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); } catch(Exception e) { JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPan
15、e.WARNING_MESSAGE); e.printStackTrace(); } } public void closeStatement() { try{ sta.close(); } catch(Exception e) { JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WARNING_MESSAGE); e.printStackTrace(); } } public ResultSet executeQuery(String sq
16、lCommand) { try{ return sta.executeQuery(sqlCommand); } catch(Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WARNING_MESSAGE); } return null; } public void executeUpdate(String sqlCommand) { try{ sta.executeUpda
17、te(sqlCommand); } catch(Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WARNING_MESSAGE); } } public void executeInsert(String sqlCommand) { try{ sta.executeUpdate(sqlCommand); } catch(Exception e) { e.printStackT
18、race(); JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WARNING_MESSAGE); } } public void executeDelete(String sqlCommand) { try{ sta.executeUpdate(sqlCommand); } catch(Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null,e.toString
19、),"´íÎó",JOptionPane.WARNING_MESSAGE); } } } 4图书信息维护模块 5读者信息维护模块 六、系统功能测试(5分) 运行界面展示 使用管理员权限登陆后,可以对书籍信息进行管理。选择“基本资料维护”|“图书资料维护”命令,弹出书籍资料维护对话框。如果单击“添加”按钮,输入新的信息后,单击“保存”按钮保存到数据库中。 为了测试还书模块,可先利用读者身份登陆查看借书信息,选择“查询服务”|“读者服务”命令,弹出读者借书信息对话框, 为了验证还书操作是否成功,再使用读者身份登陆,选择“查询服务”|“读者服务”命令,弹
20、出读者借书信息对话框,上面的读者借书信息已不存在,数据库的书籍表中01的状态改为可借,说明还书成功。 此时到数据库的书籍表中确实可以看到新增了书籍信息,说明操作成功。 用户可以根据不同的关键字对书籍进行分类查询。选择“查询服务”|“查询书籍”命令,弹出书籍检索对话框,可以分类查询: 七、总结 实验心得,用到的数据库课程的相关概念和技术有哪些。 通过网上查询以及咨询同学对各种问题有了简单的了解,基本上完成了此次课程设计的任务。数据库作为现代数据管理最先进的手段,掌握数据库系统设计的基本方法和步骤是对现代软件开发人员的基本要求。 在具体的设计与实施中,我们看到并感受到了一个
21、管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。 在设计中我们基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,建立E-R图,然后创建数据库并添加信息,实施过程中我们深刻的认识到认真执行管理系统软件标准的重要性。 在数据库的设计上利用了SQL Server的便利性和实用性。在查询方面,系统实现了多条件任意字段的模糊查询,系统可以自动识别用户不同的输入。在图书入库、借出和归还三者之间建立了良好的链接关系,某一部分地修改均会自动引发系统对与其相关的部分进行连锁修改。在用户管理方面,系统较好地实现了办理借书卡,以及用户密码修改等各项功能。 . . . .






