图书借阅管理系统子系统.docx
《图书借阅管理系统子系统.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统子系统.docx(11页珍藏版)》请在冰豆网上搜索。
![图书借阅管理系统子系统.docx](https://file1.bdocx.com/fileroot1/2022-10/12/87a99a16-1495-4ee6-829b-e70daa4a8586/87a99a16-1495-4ee6-829b-e70daa4a85861.gif)
图书借阅管理系统子系统
《数据库系统实验》
课程设计报告
题目
图书借阅管理子系统
小组成员信息
学号
班级
分工
提交时间:
年月日
一.开发环境与开发工具
JAVA集成开发工具,Win7下SQLServer
二.系统需求分析(5分)
系统数据字典
本系统的设计模拟一般学校特别是高校的图书借阅管理容,经过充分地系统调研,发现本系统应包括图书馆信息、图书信息、图书室信息、学生信息、学生借书证信息等需管理信息。
进一步还发现信息实体间需管理信息有:
借书证办理、图书存放管理、学生借阅图书前查询、学生凭借借书证借书管理、学生借书后查询等容。
① 能全面管理学校教学相关的各类主体、如图书馆信息、图书信息、图书室信息、学生信息、学生借书证信息等;
②通过使用计算机能方便地维护(包括插入、删除、修改)各信息表;
③能组合查询基于某信息表的所需信息;
④能方便地实现基于多个表的连接查询;
⑤能方便地实现基于单个或多个表的统计功能;
⑥需要时能及时进行输出与打印;
⑦系统应具有网络多用户功能,具有用户管理功能,对分等级用户提供相应系统功能;
三.功能需求分析(5分)
系统功能模块图
① 在数据库服务器如SQL Server 中,建立个关系模式对应的库表, 并确定主建、索引、参照完整性、用户自定义完整性等。
② 能对各库表进行输入、修改、删除、添加、查询、打印等基本操作。
③ 新生入学,能根据学生信息办理各位学生的借书证,并能对本校的研究 生作必要调整。
④ 能明细实现如下各类查询:
· 能查询可借阅图书的详细情况。
· 能查询某学生的借书情况。
· 能查询图书的借出情况。
⑤ 能统计实现如下各类查询:
· 能统计出完成一次借阅任务后已借出书本总数和可借书量。
· 能统计某图书的总借出量与库存量。
· 能统计出某学生的借书总量、当天为止总罚金等。
⑥ 学生查询图书情况后即可借阅所需图书,对于未借出的图书可以预约。
⑦ 能分析出某学生借书是否已超期(须付清罚款金额后才可借书)。
⑧ 用户管理功能,包括用户登录、注册新用户更改用户密码等功能。
⑨ 其他读者认为子系统应有的查询、统计功能。
四.系统设计(15分)
数据概念结构设计(包括数据流程图、系统ER图)(5分)
图书借阅管理子系统顶层数据流图
图书借阅管理子系统中间层数据流图
图书借阅管理子系统底层数据流图
反映教学管理系统的整体E-R图
数据库关系模式设计(5分)
按照实体-联系图转化为关系模式的规则,本系统的E-R图可转化为如下约10个关系模式(另外有两个辅助关系,共12个):
·图书馆(馆编号,馆名,馆长工号,成立日月,地点,)
·借书证(借书证号,学生,学生系别,专业,借书上限书)
·学生(学号,类别,学生,性别,出生日起,入校日期,,家庭住址,备注,专业,班号)
·图书(图书编号,图书名称,出版日期,图书)
·图书室(房间号,书架号,图书总量)
·借书(借书证号,图书编号,借出日期,归还日期)
·存放(图书编号,房间号,书架号)
·办理(学号,类别,借书证号,办理日期)
·借阅前查询(图书编号,图书名称,出版日期,,房间号,借阅情况)
·借书后查询(图书编号,借书证号,借出时间,需归还时间)另需辅助表:
·用户表(用户编号,用户名,口令,等级)
·日志表(序号,操作用户号,操纵类别,操作命令,操作日期时间)
借书证&学生→读者信息
·读者信息(读者编号,读者,性别,学院,专业,班级,学制,年级,情况,需借数量,借书数量)
图书&借书→图书信息
·图书信息(图书编号,图书名称,图书状态,读者编号,借阅日期,,出版时间)
·借阅信息(图书名称,读者编号,日期)
·用户信息(用户明,密码)
数据库物理结构设计(5分)
根据已设计出的关系模式及各模式的完整性要求,现在就可以在SQLServer数据库系统中行实现这些逻辑结构。
下面是创建数据及其表结构的Transact-SQL命令(SQLServer中的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 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) NULL upassword varchar(50) NULL )
五.系统功能的实现(10分)
主要功能模块的实现过程(简述,不要全部源代码放在此处)
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\\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.WARNING_MESSAGE);
}
return null; }
void setURL(String url){ this.dbURL = url; }
void setUser( String user ){ this.user = 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.WARNING_MESSAGE);
e.printStackTrace(); } }
public ResultSet executeQuery(String sqlCommand) {
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.executeUpdate(sqlCommand); }
catch(Exception e) { e.printStackTrace();
JOptionPane.showMessageDialog(null,e.toString(),"´íÎó",JOptionPane.WARNING_MESSAGE);
} }
public void executeInsert(String sqlCommand) {
try{ sta.exe