.\
德州学院信息管理学院
课程设计报告
实习名称 专业综合实习(数据库)
设计题目高校图书信息系统数据库的设计与应用
实习时间 2016.12.05--2016.12.16
专业班级 14级网络工程(系统开发与管理)
指导老师 鲁燕
学生姓名 黄岩
学 号 201401003017
教学单位 (盖章)
二〇一六 年 十二 月 十六 日
.\
目 录
1 开发背景 1
2 功能描述 1
3 数据分析 2
3.1 数据流图 2
3.1.1总数据流图 2
3.1.2入库处理 3
3.1.3借书处理 3
3.1.4还书处理 4
3.2 数据字典 4
4 概念模型设计 7
4.1 图书信息模块 7
4.2 借阅者信息模块 7
4.3 图书管理员信息模块 8
4.4 销书单模块 8
4.5 实体及其联系图 9
4.6 完整的E-R图 10
5 逻辑模型设计和优化 11
6 物理设计和实施 11
6.1 数据库建立 11
6.1.1TB_BOOKINFO 11
6.1.2TB_BOOKTYPE 13
6.2 数据库初始化连接 15
6.2.1LIBRARY_JAVA 15
6.2.2LOGIN_JAVA 18
6.3 程序测试 21
6.3.1登入 21
6.3.2主界面 21
6.3.3读者信息修改与删除 22
6.3.4图书类别修改 22
6.3.5图书信息修改 23
6.3.6图书验收 23
6.3.7图书借阅管理 24
7 课程设计心得体会 24
参考文献 25
.\
1 开发背景
随着我国市场经济的迅速发展和人们生活水平的不断提高,高校图书馆藏书的数目逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,通过使用数据库创建的图书管理系统可以让管理人员方便而快捷的进行管理、查询、借阅、录入等工作。图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。我开发的图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
2 功能描述
本系统需要完成的功能主要有6部分:
(1)实现对图书信息的修改,包括定义、查询、更新、删除等操作 图书信息包括图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库。入库日期,出库日期等。
(2)实现对借阅者信息的修改,包括定义、查询、更新、删除等操作 借阅者信息包括借书卡号,姓名,班级,院系等。
(3) 实现借书功能。
①借书信息的输入,包括借书卡号,图书编号,借出日期,到期日期,拖欠日期,罚款数目等。
②借书信息的查询,修改,包括图书编号,借书卡号,借阅者姓名,图书名称,借出日期等。
(4) 实现还书功能
①还书信息的输入,包括图书编号,借书卡号,借阅者姓名,图书名称,借出日期等。
②还书信息的查询和修改,包括还书信息编号,读书编号,读者姓名,书籍编号,书籍名称,借书日期,还书日期,备注信息等。
(5)实现销书功能 对不符合要求的图书进行出库处理,包括图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库。入库日期,出库日期等。
(6)实现对管理员信息的修改,包括定义、查询、更新、删除等操作 管理员信息包括编号,姓名,负责书库等。
图2.1 系统功能模块结构
3 数据分析
3.1 数据流图
3.1.1总数据流图
图3.1 总数据流图
3.1.2入库处理
图3.2 入库处理
3.1.3借书处理
图3.3 借书处理
3.1.4还书处理
图3.4还书处理
3.2 数据字典
表3.1借阅者姓名
数据项名:借阅者姓名
数据项含义说明:借阅者姓名
别名:无
数据类型:字符型
长度:10
取值范围:任意字符
取值含义:借阅者姓名
表3.2借书卡号
数据项名:借书卡号
数据项含义说明:借阅者借书卡号
别名:无
数据类型:字符型
长度:10
取值范围:0000000000-9999999999
取值含义:借阅者借书卡号
表3.3图书编号
数据项名:图书编号
数据项含义说明:图书编号
别名:借书编码
数据类型:字符型
长度:10
取值范围:0000000000-9999999999
取值含义:图书编号
表3.4书名
数据项名:书名
数据项含义说明:书名
别名:无
数据类型:字符型
长度:20
取值范围:任意字符
取值含义:图书名称
表3.5作者名称
数据项名:作者名称
数据项含义说明:作者名称
别名:无
数据类型:字符型
长度:10
取值范围:任意字符
取值含义:作者名称
表3.5入库日期
数据项名: 入库日期
数据项含义说明: 图书入库日期
别名:无
数据类型:字符型
长度:8
取值范围:00000000-99999999
取值含义:YYYY-MM-DD
表3.6所存书库
数据项名:所存书库
数据项含义说明:图书所存书库
别名:无
数据类型:字符型
长度:10
取值范围:任意字符
取值含义:图书所存书库名
表3.7在库量
数据项名:在库量
数据项含义说明:图书在库量
别名:无
数据类型:字符型
长度:5
取值范围:00000-99999
取值含义:图书在库数量
表3.8出版日期
数据项名:出版日期
数据项含义说明:图书出版日期
别名:无
数据类型:字符型
长度:8
取值范围:0000000-99999999
取值含义:YYYY-MM-DD
表3.8到期日期
数据项名:到期日期
数据项含义说明:借阅到期日期
别名:无
数据类型:字符型
长度:8
取值范围:00000000-99999999
取值含义:图书借阅到期日期
4 概念模型设计
4.1 图书信息模块
图4.1 图书信息模块
4.2 借阅者信息模块
图4.2 借阅者信息模块
4.3 图书管理员信息模块
图8 图书管理员信息模块
4.4 销书单模块
图4.3 销书单模块
4.5 实体及其联系图
图4.4 实体及其联系图
4.6 完整的E-R图
图4.5 完整的E-R图
5 逻辑模型设计和优化
从理论“E-R模型”到理论“关系模型”的整理转换,通过E-R模型到关系模型的转化,可以得到如下关系模式:
借阅者(借书卡号,姓名,班级,院系);
管理员(编号,姓名,负责书库);
图书(图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期);
借阅(借书卡号,图书编号,借出日期,到期日期,拖欠日期,罚款数目)
销书清单(管理员编号,图书编号,图书名称,销书日期,销书数量);
管理(管理员编号,借书卡号,图书编号)。
6 物理设计和实施
6.1 数据库建立
6.1.1tb_bookInfo
USE [db_library]
GO
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N[dbo].[FK_TB_BOOKI_REFERENCE_TB_BOOKT]) AND parent_object_id = OBJECT_ID(N[dbo].[tb_bookInfo]))
ALTER TABLE [dbo].[tb_bookInfo] DROP CONSTRAINT [FK_TB_BOOKI_REFERENCE_TB_BOOKT]
GO
USE [db_library]
GO
/****** Object: Table [dbo].[tb_bookInfo] Script Date: 12/05/2016 20:40:07 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N[dbo].[tb_bookInfo]) AND type in (NU))
DROP TABLE [dbo].[tb_bookInfo]
GO
USE [db_library]
GO
/****** Object: Table [dbo].[tb_bookInfo] Script Date: 12/05/2016 20:40:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_bookInfo](
[ISBN] [varchar](13) NOT NULL,
[typeId] [int] NOT NULL,
[bookname] [varchar](40) NOT NULL,
[writer] [varchar](21) NOT NULL,
[translator] [varchar](30) NULL,
[publisher] [varchar](50) NOT NULL,
[date] [smalldatetime] NOT NULL,
[price] [money] NOT NULL,
CONSTRAINT [PK_TB_BOOKINFO] PRIMARY KEY NONCLUSTERED
(
[ISBN] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[tb_bookInfo] WITH CHECK ADD CONSTRAINT [FK_TB_BOOKI_REFERENCE_TB_BOOKT] FOREIGN KEY([typeId])
REFERENCES [dbo].[tb_bookType] ([id])
UPDATE [db_library].[dbo].[tb_bookInfo]
SET [ISBN] =
,[typeId] =
,[bookname] =
,[writer] =
,[translator] =
,[publisher] =
,[date] =
,[price] =
WHERE <搜索条件,,>
GO
DELETE FROM [db_library].[dbo].[tb_bookInfo]
WHERE <搜索条件,,>
GO
6.1.2tb_bookType
USE [db_library]
GO
/****** Object: Table [dbo].[tb_bookType] Script Date: 12/05/2016 20:44:15 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N[dbo].[tb_bookType]) AND type in (NU))
DROP TABLE [dbo].[tb_bookType]
GO
USE [db_library]
GO
/****** Object: Table [dbo].[tb_bookType] Script Date: 12/05/2016 20:44:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_bookType](
[id] [int] IDENTITY(1,1) NOT NULL,
[typeName] [varchar](20) NOT NULL,
[days] [int] NULL,
[fk] [float] NULL,
CONSTRAINT [PK_TB_BOOKTYPE] PRIMARY KEY NONCLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT INTO [db_library].[dbo].[tb_bookType]
([typeName]
,[days]
,[fk])
VALUES
(
,
,)
GO
UPDATE [db_library].[dbo].[tb_bookType]
SET [typeName] =
,[days] =
,[fk] =
WHERE <搜索条件,,>
GO
DELETE FROM [db_library].[dbo].[tb_bookType]
WHERE <搜索条件,,>
GO
6.2 数据库初始化连接
6.2.1Library_java
/**主窗体 */
public class Library extends JFrame {
private static final JDesktopPane DESKTOP_PANE = new JDesktopPane();
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
new BookLoginIFrame();//登录窗口
} catch (Exception ex) {
public Library() {
super();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);
setLocationByPlatform(true);
setSize(800, 600);
setTitle("图书馆管理系统");
JMenuBar menuBar = createMenu(); // 调用创建菜单栏的方法
setJMenuBar(menuBar);
JToolBar toolBar = createToolBar(); // 调用创建工具栏的方法
getContentPane().add(toolBar, BorderLayout.NORTH);
final JLabel label = new JLabel();
label.setBounds(0, 0, 0, 0);
label.setIcon(null); // 窗体背景
DESKTOP_PANE.addComponentListener(new ComponentAdapter() {
public void componentResized(final ComponentEvent e) {
Dimension size = e.getComponent().getSize();
label.setSize(e.getComponent().getSize());
label.setText("");
}
});
DESKTOP_PANE.add(label,new Integer(Integer.MIN_VALUE));
getContentPane().add(DESKTOP_PANE);
}
* 创建工具栏*
* @return JToolBar
private JToolBar createToolBar() { // 创建工具栏的方法
JToolBar toolBar = new JToolBar();
toolBar.setFloatable(false);
toolBar.setBorder(new BevelBorder(BevelBorder.RAISED));
JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);
//ImageIcon icon=CreatecdIcon.add("bookAdd.bmp");//创建图标方法
ImageIcon icon=new ImageIcon(Library.class.getResource("/bookAddtb.jpg"));//添加菜单栏图标
bookAddButton.setIcon(icon);
bookAddButton.setHideActionText(true);
//bookAddButton.setToolTipText("fjdkjfk");//图片上提示字
toolBar.add(bookAddButton);
//toolBar.add(MenuActions.BOOK_MODIFY);
//在工具栏中添加图书修改与删除图标
JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);
ImageIcon bookmodiicon=CreatecdIcon.add("bookModiAndDeltb.jpg");//创建图标方法
bookModiAndDelButton.setIcon(bookmodiicon);
bookModiAndDelButton.setHideActionText(true);
toolBar.add(bookModiAndDelButton);
JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD);
ImageIcon bookTypeAddicon=CreatecdIcon.add("bookTypeAddtb.jpg");//创建图标方法
bookTypeAddButton.setIcon(bookTypeAddicon);
bookTypeAddButton.setHideActionText(true);
toolBar.add(bookTypeAddButton);
JButton bookBorrowButton=new JButton(MenuActions.BORROW);
ImageIcon bookBorrowicon=CreatecdIcon.add("bookBorrowtb.jpg");//创建图标方法
bookBorrowButton.setIcon(bookBorrowicon);
bookBorrowButton.setHideActionText(true);
toolBar.add(bookBorrowButton);
JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER);
ImageIcon bookOrdericon=CreatecdIcon.add("bookOrdertb.jpg");//创建图标方法
bookOrderButton.setIcon(bookOrdericon);
bookOrderButton.setHideActionText(true);
toolBar.add(bookOrderButton);
JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK_ACCEPT);
ImageIcon bookCheckicon=CreatecdIcon.add("newbookChecktb.jpg");//创建图标方法
bookCheckButton.setIcon(bookCheckicon);
bookCheckButton.setHideActionText(true);
toolBar.add(bookCheckButton);
JButton readerAddButton=new JButton(MenuActions.READER_ADD);
ImageIcon readerAddicon=CreatecdIcon.add("readerAddtb.jpg");//创建图标方法
readerAddButton.setIcon(readerAddicon);
readerAddButton.setHideActionText(true);
toolBar.add(readerAddButton);
JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY);
ImageIcon readerModiAndDelicon=CreatecdIcon.add("readerModiAndDeltb.jpg");//创建图标方法
readerModiAndDelButton.setIcon(readerModiAndDelicon);
readerModiAndDelButton.setHideActionText(true);
toolBar.add(readerModiAndDelButton);
JButton ExitButton=new JButton(MenuActions.EXIT);
ImageIcon Exiticon=CreatecdIcon.add("exittb.jpg");//创建图标方法
ExitButton.setIcon(Exiticon);
ExitButton.setHideActionText(true);
toolBar.add(ExitButton);
return toolBar;
}
* 创建菜单栏 */
private JMenuBar createMenu() { // 创建菜单栏的方法
JMenuBar menuBar = new JMenuBar();
JMenu bookOrderMenu = new JMenu(); // 初始化新书订购管理菜单
bookOrderMenu.setIcon(CreatecdIcon.add("xsdgcd.jpg"));
bookOrderMenu.add(MenuActions.NEWBOOK_ORDER);
bookOrderMenu.add(MenuActions.NEWBOOK_CHECK_ACCEPT);
JMenu baseMenu = new JMenu();// 初始化基础数据维护菜单
menuBar.add(baseMenu); // 添加基础数据维护菜单到菜单栏
menuBar.add(bookOrderMenu); // 添加新书订购管理菜单到菜单栏
menuBar.add(borrowManageMenu); // 添加借阅管理菜单到菜单栏
menuBar.add(sysManageMenu); // 添加系统维护菜单到菜单栏
return menuBar;
}
}
6.2.2login_java
public class BookLoginIFrame extends JFrame {
private class BookResetAction implements ActionListener {
void actionPerformed(final ActionEvent e){
username.setText("");
password.setText("");
}
}
class BookLoginAction implements ActionListener {
public void actionPerformed(final ActionEvent e) {
user = Dao.check(username.getText(), password.getText());
if (user.getName() != null) {
try {
Library frame = new Library();
frame.setVisible(true);
BookLoginIFrame.this.setVisible(false);
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(null, "只有管理员才可以登录!");
username.setText("");
password.setText("");
}
}
}
private JPasswordField password;
private JTextField username;
private JButton login;
private JButton reset;
private static Operater user;
public BookLoginIFrame() {
super();
final BorderLayout borderLayout = new BorderLayout();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
borderLayout.setVgap(10);
getContentPane().setLayout(borderLayout);
setTitle("图书馆管理系统登录");
label.setText("用 户 名:");
username = new JTextField(20);
username.setPreferredSize(new Dimension(0, 0));
panel_2.add(username);
final JLabel label_1 = new JLabel();
label_1.setHorizontalAlignment(SwingConstants.CENTER);
panel_2.add(label_1);
label_1.setText("密 码:");
password = new JPasswordField(20);
password.setDocument(new MyDocument(6));
password.setEchoChar(*);//设置密码框的回显字符
password.addKeyListener(new KeyAdapter() {
public void keyPressed(final KeyEvent e) {
if (e.getKeyCode() == 10)
login.doClick();
}
});
login.setText("登录");
panel_1.add(login);
reset=new JButton();
reset.addActionListener(new BookResetAction());
reset.setText("重置");
panel_1.add(reset);
final JLabel tupianLabel = new JLabel();
ImageIcon loginIcon=CreatecdIcon.add("login.jpg");
//setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
6.3 程序测试
6.3.1登入
首先进入登入页面,输入用户名和密码
图6.1 系统登录
6.3.2主界面
图6.2 系统主界面
6.3.3读者信息修改与删除
对读者信息进行删改操作
图6.3读者信息修改与删除
6.3.4图书类别修改
对图书进行修改
图6.4 图书类别修改
6.3.5图书信息修改
对图书信息进行修改
图6.5图书信息修改
6.3.6图书验收
对图书进行验收
图6.6图书验收
6.3.7图书借阅管理
进行图书借阅管理操作
图6.7 图书借阅管理界面
7 课程设计心得体会
这次课程设计使我熟悉了系统设计的整体步骤。系统设计大体可分为需求分析、概念设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤。其中,让我感触最深的是需求分析阶段,在这个阶段,必须对所要设计的系统有总体的构思和了解,知道自己要做什么,要实现什么,并且要实际的进行相关的调查,不能凭想象或自己的了解,这样会在后续的工作中遇到很多的问题。
这次课程设计加深了我对数据库系统概论相关知识和SQL SERVER相关功能的理解,更熟练得掌握了java连接sqlsever数据库等相关操作。并在解决遇到的各种问题的过程中,学到了很多新的知识。比如在导入\导出数据时,由于外键约束的存在,经常会出现错误,这就要注意各个表导入的顺序问题。一般是先导入主键表,后导入外键表,这样可以避免很多的错误。
我进一步掌握了相关的SQL语句方面的知识。不但纠正了以前的错误认识和理解,而且学会了建立存储过程和触发器。通过查阅资料,我还明白了存储过程是编译后放在服务器端的程序,它可以被别的模块调用,且不需要重新编译,这样就大大减轻了客户端的负担,且有效的提高了系统执行的效率。
参考文献
[1]顾俐. 图书馆图书管理系统的设计[J]. 中国科技信息,2007
[2]邓玉娇,王欣. 图书管理系统设计与实现[J]. 软件,2011
[3]李春雷,陈萍. 基于.net平台的图书管理系统[J]. 职大学报,2011
[4]胡志惠. 图书管理系统的设计与实现[J]. 改革与开放,2009
[5]宫昌利. 图书管理系统的设计与实现[D].山东大学,2009
[6]张晶. 图书管理系统的设计与实现[D].西南交通大学,2011
[7]向旭宇,秦姣华编著.SQL Server 2008宝典[M].北京:中国铁道出版社.2011
评阅意见:
成绩:
指导教师(签名)
注:成绩由指导教师或答辩小组评定出成绩,分优秀、良好、中等、及格、不及格五级