图书借阅管理子系统高效的图书借阅管理系统是当前信息化社会管理系统之所需。
尤其对学校而言,面对日益庞大的学生借阅图书信息,就需要有图书借阅管理系统来提高管理工作的效率。
通过建立这样的系统,可以做到信息的规范管理、快速查询和科学统计,从而减少管理方面的工作量。
1系统开发目的及要求目的:⑴掌握数据库设计的基本方法⑵了解C/S与B/S结构应用系统的特点与应用场合⑶了解C/S与B/S结构应用系统的不同开发设计环境与开发设计方法⑷综合运用《数据库系统原理》实验掌握的数据库知识与技术开发设计图书借阅管理子系统2需求分析系统需求分析本系统的具体要求:1 能全面管理学校教学相关的各类主体、如图书馆信息、图书信息、图书室信息、学生信息、学生借书证信息等;2 通过使用计算机能方便地维护(包括插入、删除、修改)各信息表;3 能组合查询基于某信息表的所需信息;4 能方便地实现基于多个表的连接查询;5 能方便地实现基于单个或多个表的统计功能;6 需要时能及时进行输出与打印;7 系统应具有网络多用户功能,具有用户管理功能,对分等级用户提供相应系统功能;8 系统具有操作方便、简捷等特点。
⑴系统数据流向图错误!未指定书签。
图书借阅管理子系统顶层数据流图图书借阅管理子系统中间层数据流图数据库课程设计图书借阅管理子系统底层数据流图本系统需要管理的实体信息1 图书馆信息:馆编号、馆名、馆长工号、成立日月、地点、电话等;2 图书信息:图书编号、图书名称、出版日期、图书出版社等;3 图书室信息:房间号、书架号、图书总量等;4学生信息:学号、类别、学生姓名、性别、出生日期、入学日期、电话、家庭住址、备注、专业、班号等;5 学生借书证信息:借书证号、学生姓名、学生系别、专业、借书上限等;本系统咬管理的实体联系信息1 可随时查询处可借阅图书的详细情况,如图书编号、图书名称、出版日期、图书出版社、图书存放位置、图书总数量等,这样便于学生选借。
2 学生查询图书情况后即可借阅所需图书,可借阅多种图书,每种图书一般只借一本,若已有图书超期请交清罚金后,才能开始本次借阅。
3 为了唯一标识每一位学生,图书室办借书证须以下信息:学生姓名、学生系别、学生所学专业、借书上限数及唯一的借书证号。
4每学生一次可借多本书,但不能超出该生允许借阅上限数(上限数自定),每个学生可多次借阅,允许重复借阅同一本书。
规定借书期限为两个月,超期每天罚两分等。
功能需求分析1 在数据库服务器如SQL Server 2000中,建立个关系模式对应的库表,并确定主建、索引、参照完整性、用户自定义完整性等。
2 能对各库表进行输入、修改、删除、添加、查询、打印等基本操作。
错误!未指定书签。
3 新生入学,能根据学生信息办理各位学生的借书证,并能对本校的研究生作必要调整。
能明细实现如下各类查询:·能查询可借阅图书的详细情况。
·能查询某学生的借书情况。
·能查询图书的借出情况。
①能统计实现如下各类查询:·能统计出完成一次借阅任务后已借出书本总数和可借书量。
·能统计某图书的总借出量与库存量。
·能统计出某学生的借书总量、当天为止总罚金等。
②学生查询图书情况后即可借阅所需图书,对于未借出的图书可以预约。
③能分析出某学生借书是否已超期(须付清罚款金额后才可借书)。
④用户管理功能,包括用户登录、注册新用户更改用户密码等功能。
⑤其他读者认为子系统应有的查询、统计功能。
⑥要求所设计系统界面友好,功能安排合理,操作使用方便,并能进一步考虑子系统在安全性、完整性、并发控制、备份恢复等方面的功能要求。
3系统设计及数据加载系统设计⑴数据库概念结构设计在充分需求分析的基础上,经过逐步抽象、概括、分析、充分研讨,可画出如下反映教学管理系统的整体E-R图数据库课程设计图1 系统实体及其联系图错误!未指定书签。
图2 系统部分实体及其属性图图3 系统主要联系及其属性图⑵系统功能模块设计对系统各项功能进行集中、分块,按照结构化程序设计的要求,可得出系统的功能模块图,如下:数据库课程设计图4 系统的功能模块图⑶数据库逻辑结构设计1数据库关系模式按照实体-联系图转化为关系模式的规则,本系统的E-R图可转化为如下约10个关系模式(另外有两个辅助关系,共12个):·图书馆(馆编号,馆名,馆长工号,成立日月,地点,电话)·借书证(借书证号,学生姓名,学生系别,专业,借书上限书)·学生(学号,类别,学生姓名,性别,出生日起,入校日期,电话,家庭住址,备注,专业,班号)·图书(图书编号,图书名称,出版日期,图书出版社)·图书室(房间号,书架号,图书总量)·借书(借书证号,图书编号,借出日期,归还日期)·存放(图书编号,房间号,书架号)·办理(学号,类别,借书证号,办理日期)·借阅前查询(图书编号,图书名称,出版日期,出版社,房间号,借阅情况)·借书后查询(图书编号,借书证号,借出时间,需归还时间)另需辅助表:·用户表(用户编号,用户名,口令,等级)·日志表(序号,操作用户号,操纵类别,操作命令,操作日期时间)……处于程序设计需要,先将各表结合简化如下:借书证&学生→读者信息·读者信息(读者编号,读者姓名,性别,学院,专业,班级,学制,年级,情况,需借数量,借书数量)图书&借书→图书信息错误!未指定书签。
·图书信息(图书编号,图书名称,图书状态,读者编号,借阅日期,出版社,出版时间)·借阅信息(图书名称,读者编号,日期)·用户信息(用户明,密码)表名与属性名对应由英文表示,则12个关系模式为:· buser(user_id, user_name, sex, dept, speciality, class, esys, grade, situation, bsum, inhand)· book (book_id, book_name, status, user_id, borrow_date, press, byear) · reserve(book_name, user_id, bdate)· admin(uname, upassword)①数据库及表结构的创建设本系统使用的数据库名为tsjy,根据已设计出的关系模式及各模式的完整性要求,现在就可以在SQL Server 2000数据库系统中行实现这些逻辑结构。
下面是创建数据及其表结构的Transact-SQL命令(SQL Server 中的SQL命令)。
CREATE DATABASE TSJY;goUSE 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 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) 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(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) NULLupassword varchar(50) NULL)②数据库表关系图数据库名称:TSJY,创建4张用户表后,表间能形成关系图。
基于该用户表关系图,可定义出各种常用的用户表视图。
creat view buser_scr1 asselect *from buserwhere user_name=’name’creat view buser_scr2 asselect er_namefrom buser按需要可以继续定义出多种视图。
数据库初始数据的加载数据库建立后,为下一阶段窗体模块的设计做准备,需要整体加载数据,夹在数据可以手工一条一条界面录入,也可设计对各表的数据记录insert命令集,这样执行插入命令集户表数据就有了,在准备数据过程中一般要注意以下几点。
①尽可能使用真实数据,这样在录入数据中,能发现一些结构设计中可能的不足之处,并能及早更正。
②由于表内或表之间已设置了系统所要的完整性约束规则,如外码、主码错误!未指定书签。
等,为此,加载数据时,要注意时序问题。
③加载数据时,应尽可能全面些,能反映各种表数据与表数据间的关系,这样便于模块设计时,程序的充分调试。
一般全部加载后,对数据库做备份,因为测试中会频繁删除或破坏数据,而建立起完整的测试数据库数据时很费时的。
另外,本系调试时,须先将备份好的数据库导入。
4 系统实现系统实现⑴教学管理子系统的主窗体设计⑵主窗体的菜单设计⑶创建公共模块——图书借还及预定与数据库连接代码如下/** Copyright (c) 2006 guodongping. All Rights Reserved.* E-mail: yayajike_0305@* QQ: 445938759*/package library;import java.io.*;import java.sql.*;import javax.swing.JOptionPane;;/*** @author guodongping* 创建日期 2006-1-13*/public class Bridge {//private String dbURL = "jdbc:odbc:driver={Micorsoft.jet.OLEDB.4.0 (*.mdf)};dbq=E:\\coding\\db\\tsjy\\TUJYl.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){ e.printStackTrace();JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WAR NING_MESSAGE);}return null;}void setURL(String url){this.dbURL = url;}void setUser( String user ){er = user;}void setPassword( String pass ){this.password = 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(),"´íÎó",JOptionPane.WARNING _MESSAGE);e.printStackTrace();}}public void closeStatement(){ try{ sta.close();}catch(Exception e){JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WAR NING_MESSAGE);e.printStackTrace();}}public ResultSet executeQuery(String sqlCommand){try{ return sta.executeQuery(sqlCommand);}错误!未指定书签。