数据库课程教学设计图书管理方案计划系统.doc
. 德州学院信息管理学院课程设计报告实习名称 专业综合实习(数据库) 设计题目高校图书信息系统数据库的设计与应用 实习时间 2016.12.05-2016.12.16 专业班级 14级网络工程(系统开发与管理) 指导老师 鲁燕 学生姓名 黄岩 学 号 201401003017 教学单位 (盖章) 二一六 年 十二 月 十六 日.目 录1 开发背景12 功能描述13 数据分析23.1 数据流图23.1.1总数据流图23.1.2入库处理33.1.3借书处理33.1.4还书处理43.2 数据字典44 概念模型设计74.1 图书信息模块74.2 借阅者信息模块74.3 图书管理员信息模块84.4 销书单模块84.5 实体及其联系图94.6 完整的E-R图105 逻辑模型设计和优化116 物理设计和实施116.1 数据库建立116.1.1TB_BOOKINFO116.1.2TB_BOOKTYPE136.2 数据库初始化连接156.2.1LIBRARY_JAVA156.2.2LOGIN_JAVA186.3 程序测试216.3.1登入216.3.2主界面216.3.3读者信息修改与删除226.3.4图书类别修改226.3.5图书信息修改236.3.6图书验收236.3.7图书借阅管理247 课程设计心得体会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_bookInfoUSE db_libraryGOIF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(Ndbo.FK_TB_BOOKI_REFERENCE_TB_BOOKT) AND parent_object_id = OBJECT_ID(Ndbo.tb_bookInfo)ALTER TABLE dbo.tb_bookInfo DROP CONSTRAINT FK_TB_BOOKI_REFERENCE_TB_BOOKTGOUSE db_libraryGO/* Object: Table dbo.tb_bookInfo Script Date: 12/05/2016 20:40:07 */IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(Ndbo.tb_bookInfo) AND type in (NU)DROP TABLE dbo.tb_bookInfoGOUSE db_libraryGO/* Object: Table dbo.tb_bookInfo Script Date: 12/05/2016 20:40:07 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE 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 PRIMARYGOSET ANSI_PADDING OFFGOALTER 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_bookInfoSET ISBN = ,typeId = ,bookname = ,writer = ,translator = ,publisher = ,date = ,price = WHERE GODELETE FROM db_library.dbo.tb_bookInfoWHERE GO6.1.2tb_bookTypeUSE db_libraryGO/* Object: Table dbo.tb_bookType Script Date: 12/05/2016 20:44:15 */IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(Ndbo.tb_bookType) AND type in (NU)DROP TABLE dbo.tb_bookTypeGOUSE db_libraryGO/* Object: Table dbo.tb_bookType Script Date: 12/05/2016 20:44:15 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE 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 PRIMARYGOINSERT INTO db_library.dbo.tb_bookType (typeName,days,fk)VALUES (,)GOUPDATE db_library.dbo.tb_bookTypeSET typeName = ,days = ,fk = WHERE GODELETE FROM db_library.dbo.tb_bookType WHERE GO6.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 JToolBarprivate 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_javapublic 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. 中国科技信息,20072邓玉娇,王欣. 图书管理系统设计与实现J. 软件,20113李春雷,陈萍. 基于.net平台的图书管理系统J. 职大学报,20114胡志惠. 图书管理系统的设计与实现J. 改革与开放,20095宫昌利. 图书管理系统的设计与实现D.山东大学,20096张晶. 图书管理系统的设计与实现D.西南交通大学,20117向旭宇,秦姣华编著.SQL Server 2008宝典M.北京:中国铁道出版社.2011评阅意见:成绩: 指导教师(签名) 注:成绩由指导教师或答辩小组评定出成绩,分优秀、良好、中等、及格、不及格五级
收藏