《数据库系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《数据库系统课程设计报告.doc(20页珍藏版)》请在三一办公上搜索。
1、数据库系统课程设计院(系): 计算机工程学院 专业: 计算机科学与技术 姓名: 班级: 学号: 题目: 起迄日期: 2014-12-15 到 2014-12-26 设计地点: 计算机工程学院机房 指导教师: 1、 概述1.1系统概叙本程序主要是管理图书资料的借阅的,适用于图书馆对图书的管理,可以完成新近图书的增删改查以及学生或者老师对图书的借阅管理。界面管理比较简单,进入后可以直接进行所需要的图书管理以及图书区域的管理、图书资料类型的管理、图书资料的状态等等。程序中一共用到了5个不同的表格,分别为图书基本信息表(BookInfo),图书类别及状态表(BookType),读者基本信息表(Read
2、erInfo),图书借阅信息表(BookBorrowInfo)以及管理员表(Login)。这5个表有基本的联系,其中只有管理员表是单独的一个登录管理表,其余四个表在程序中都是链接使用的。比如BookInfo表中只有表编号(id),图书编号(book_id),书名(book_name),图书作者(author),图书价格(price),图书出版社(press)6个属性,图书添加的其余属性例如图书状态,图书类别,图书存储区域都是在图书状态表(BookType)中存放的,因而在图书添加中就加入了这两个表的多表连接输入。本程序主要是在网页中实现的,因而用到了刚才在生产实习中用到的JSP,程序编写中主要
3、用到了MVC模板,一个程序中主要分成了四个包:bean(主要存放表中属性的类),jdbc(主要存放了java与数据库连接的类),dao(dao中主要存放本程序实现所用到的主要方法),servlet(主要存放了jsp与数据库连接且对程序主要控制的方法)。1.2开发环境简介本程序开发用到了eclipse平台,数据存放用到了SQlserver平台,eclipse是用纯java写的,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,Eclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合
4、方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支.Eclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,Eclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。Eclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说Eclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。2、 需求分析2.1开发背景在学校中,一个图书馆会有上万本书
5、,因而图书资料管理就应景而生了。对这些图书进行必要的管理,对于借阅者和图书管理者都是很大的帮助。现在市面上的图书管理系统有很多,我也不了解其中有什么功能,但是如果说有什么改进之处,只能说这个软件是具体问题具体分析,没有一个公用的图书管理系统而让所有的图书资料管理者都适用。并且,专业的图书资料管理系统不适合我们学生学习编写,我们无法在短时间内编写出大量高水平的管理系统,没有能力也没有条件,适合小规模练习的管理系统很少,加之我们现在正好学习了网页jsp编程以及连接oracle数据库,为了练习最近所学习的知识,就编写了这个图书资料管理系统,所用到的功能都是最近生产实习中所教的。2.2开发目的由于没有
6、小型的数据库供我们学习,加之最近的生产实习实训学习了jsp网页编程以及连接oracle数据库,为了练习最近所学习的东西,所有就用jsp编写了这个图书资料管理系统。虽然不是很正规,但是最近所学到的主要功能都用到了。2.3功能需求本程序主要完成了对图书资料基本信息的添加,查询,修改,删除;对读者信息的添加,查询,删除,修改;对图书基本信息以及图书状态的两表连接添加,查询,删除,修改;对图书基本信息,图书借阅状态,读者信息三表连接的查询功能。2.4数据需求程序功能一共有三部分,因而数据共有三部分组成:图书基本信息的输入为:图书的基本信息,如编号价格等,以及图书目前的存储区域。读者基本信息为:读者的学
7、号工号,姓名,性别和联系电话,其中读者的学号工号作为外键去连接其他的表。图书类别表:作为图书的存储区域以及图书类别图书状态的存储,图书的类别决定了图书的存放区域,以图书的编号作为外键去连接图书基本信息表,在图书添加的功能中一起与添加到图书的状态栏,这个表对图书的借阅起到关键性的作用,是连接几项功能的纽带。以上给基本的三部分分层,决定了三项基本功能,其中,还有一个图书借阅表,这个表连接了两个表,以图书编号和员工学号工号作为外键,去连接了两个表,一起提示图书的借阅信息,其中的借阅信息是在图书类型表中确定的,因而图书的类型表是很重要的,而光有图书的类型还不够,还必须有图书的借阅人才能完全确定图书的借
8、阅信息。所以,又以读者的学号工号连接了图书的读者基本信息表,在一起查询图书的借阅信息的时候可以一起查处,让管理者可以一起显示出借阅的所有信息。此功能数据一共就分为这几个部分,要求的数据量不是很大,但是数据之间的联系很是重要,是此功能的重点。3、 系统设计3.1总体设计图书资料管理系统总体设计流程图:图书资料管理系统管理员登陆失败则重新登陆成功程序主界面图书的借阅管理读者的基本信息管理图书基本信息管理所有借阅信息查询图书的借阅归还读者基本信息添加读者基本信息删除基本信息查询修改图书基本信息删除基本信息查询修改图书基本信息添加4、 数据库设计4.1概念设计(1) 图书资料基本信息实体:名称作者编号
9、图书资料基本信息状态存储区域 类型出版社价格(2) 读者基本信息实体:读者信息性别电话姓名学号(3) 图书借阅管理实体:图书借阅管理借阅状态归还日期借阅日期读者学号图书编号(4) 管理员登录实体:管理员登陆管理密码用户名(5)总体E-R图借阅读者图书资料N 14.2逻辑设计(1) 图书资料基本信息表(BookInfo):数据项名称类型长度数据项说明备注Id表序号number默认表的id序列主键Bbh图书编号Varchar20后置编号notnullBname图书名Varchar50书名称notnullBzz作者Varchar20作者无Bjg价格Varchar20价格无Bcb出版社Varchar5
10、0图书出版社无(2) 读者基本信息表(ReaderInfo):数据项名称类型长度数据项说明备注Id表序号number默认表的id序列主键 Dname读者名Varchar20读者姓名notnullDsex性别Varchar10读者性别无Dxh学号/工号Varchar20读者号notnullDtel电话Varchar20联系电话无(3) 图书借阅表(BookBorrowInfo):数据项名称类型长度数据项说明备注Id表序号number默认表的id序列主键Bbh图书编号Varchar20后置编号notnullDxh学号Varchar20读者学号notnullJtime借阅日期Varchar20借书日
11、期无Htime归还日期Varchar20预定归还无Bzt借阅状态Varchar20借阅后状态notnull(5) 管理员登陆表(Login)数据项名称类型长度数据项说明备注Id表序号number默认表的id序列主键Username用户名Varchar20登陆用户名notnullPwd密码Varchar20登陆密码notnull5、 详细设计(1) 登陆界面:程序运行刚开始时看到的第一个界面是管理员的登陆界面,页面会提示让管理员输入用户名和密码登陆到主界面。此界面中,用了javascript语言写了一个不能为空的alert()弹出语句:public void actionPerformed(Ac
12、tionEvent e) if(e.getSource()=Enter)DB db = new DB();String id = name.getText();/String pwd = pwd.getText();String sql = select * from LOGIN;int m = 0;ResultSet rs = db.select(sql);try while(rs.next()if(rs.getString(USERNAME).equals(name.getText() & rs.getString(Pwd).equals(pwd.getText()JOptionPane.
13、showMessageDialog(ss,登录成功);Zjm mm = new Zjm();mm.setVisible(true);m = 1;if(m = 0)JOptionPane.showMessageDialog(ss,用户名或密码错误,请重新登录!); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();JOptionPane.showMessageDialog(ss,登陆失败);如果输入的用户名和密码与数据库中的数据对应一致(当然是防止sql注入的无bug代码),会弹出一个提示界
14、面,提示已经登录成了,自动跳转到主界面中。这一部分的设计也是用javascript所写的,具体代码就不写了,仅仅是一个跳转。所用到的sql语句如下列出:if(rs.getString(USERNAME).equals(name.getText() & rs.getString(Pwd).equals(pwd.getText()(2) 主界面:主界面主要显示了本程序的所有功能,也是不程序的主显示区,共有3个主要功能:图书资料管理,读者管理和图书借阅管理。三个功能都是用跳转接完成的,内部置入了method选择要进入的servlet中的方法。这部分没有什么过多的介绍。(3) 图书信息管理界面: 进入
15、图书信息管理功能模块后,就可以看到图书管理的基本功能,添删改查。每项功能都对应了唯一的一个jsp,其中向servlet中传值还是用了method方法,进入后会提示输入要查询的图书编号,查询的主要传值方法就是图书的编号,具体编码如下(以修改为例):public class TSxg extends JFrame implements ActionListenerstatic TSxg ss;Font f = new Font(楷体,Font.BOLD+Font.ITALIC,20);JPanel panel = new JPanel();JLabel label = new JLabel(图书资
16、料修改);JLabel label2 = new JLabel(请输入您要修改的图书编号:);JTextField Tbh = new JTextField();JLabel label12 = new JLabel(图书名:);JTextField name = new JTextField();JLabel label3 = new JLabel(图书编号:);JTextField bh = new JTextField();JLabel label4 = new JLabel(作者:);JTextField zz = new JTextField();JLabel label5 = ne
17、w JLabel(价格:);JTextField jg = new JTextField();JLabel label6 = new JLabel(出版社:);JTextField cb = new JTextField();JLabel label7 = new JLabel(类型:);JTextField lx = new JTextField();JLabel label8 = new JLabel(存储区域:);JTextField cc = new JTextField();JLabel label9 = new JLabel(图书状态:);JTextField zt = new J
18、TextField();JButton Enter1 = new JButton(确认);JButton Exit1 = new JButton(重置);JButton Enter = new JButton(修改);JButton Exit = new JButton(返回);public TSxg()super(登录界面);this.setResizable(false);Enter1.setBounds(180,120,80,20);Exit1.setBounds(320,120,80,20);Enter.setBounds(180,500,80,20);Exit.setBounds(3
19、20,500,80,20);panel.add(Enter);panel.add(Exit);panel.add(Enter1);panel.add(Exit1); panel.setLayout(null);this.add(panel);label.setBounds(250,30,150,25);label.setFont(f);panel.add(label);label2.setBounds(100,70,200,25);panel.add(label2); Tbh.setBounds(290,70,200,25);panel.add(Tbh);label12.setBounds(1
20、35,170,100,25);panel.add(label12); name.setBounds(265,170,130,25);panel.add(name);label3.setBounds(135,210,100,25);panel.add(label3); bh.setBounds(265,210,130,25);panel.add(bh);label4.setBounds(135,250,100,25);panel.add(label4); zz.setBounds(265,250,130,25);panel.add(zz);label5.setBounds(135,290,100
21、,25);panel.add(label5); jg.setBounds(265,290,130,25);panel.add(jg);label6.setBounds(135,330,100,25);panel.add(label6); cb.setBounds(265,330,130,25);panel.add(cb);label7.setBounds(135,370,100,25);panel.add(label7); lx.setBounds(265,370,130,25);panel.add(lx);label8.setBounds(135,410,100,25);panel.add(
22、label8); cc.setBounds(265,410,130,25);panel.add(cc);label9.setBounds(135,450,100,25);panel.add(label9); zt.setBounds(265,450,130,25);panel.add(zt);this.setSize(600,600);setLocationRelativeTo(null);/居中 放置this.setResizable(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true)
23、;Enter.addActionListener(this);Enter1.addActionListener(this);Exit.addActionListener(this);Exit1.addActionListener(this);Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource() = Enter1)DB db = new DB();String sql = select * from BOOKINFO where Bbh = + Tb
24、h.getText() +;ResultSet rs = db.select(sql);try if(rs.next()name.setText(rs.getString(Bname);bh.setText(rs.getString(Bbh);zz.setText(rs.getString(Bzz);jg.setText(rs.getString(Bjg);cb.setText(rs.getString(Bcb);lx.setText(rs.getString(Blx);cc.setText(rs.getString(Bcc);zt.setText(rs.getString(Bzt);if(e
25、.getSource() = Exit1)Tbh.setText();if(e.getSource() = Enter)DB db = new DB();String sql = update BOOKINFO set Bname=+ name.getText() +, Bbh = + bh.getText() +,Bzz=+ zz.getText() + +,Bjg=+ jg.getText() +,Bcb=+ cb.getText() +,Blx=+ lx.getText() +,Bcc=+ cc.getText() +, +Bzt=+ zt.getText() +;int p = 0;p
26、 = db.update(sql);if(p0)JOptionPane.showMessageDialog(ss,修改成功);elseJOptionPane.showMessageDialog(ss,修改失败);(4) 读者信息管理界面:读者信息管理界面和图书信息管理界面基本上是相同的,而且比图书资料管理界面还要简单,因为没有多表连接了,只是对一个单表的查询。所以,在此处不再过多冗述,只是列出各个功能的sql代码,有不清楚的地方可以参考上例中对图书管理的增删改查。(5) 图书借阅管理:借阅管理是本程序最重要的地方,但是难度和之前的图书管理差不多,只是加了一个表,做成了三表连接,表中的联系不用输
27、出,减少了工作量,仅仅是做一个图书的借阅管理,当准备借书的时候,首先select图书基本信息表,查看图书的bookstatus状态是否为“未借出”,如果是,就可以借阅,添加借阅信息表,并且将bookstatus状态改为“已借出”,反之则会有借书失败的提示。而第二部分列出所有的借书记录,则是将最近有的借书记录select出,并且连接bookinfo表输出书名,连接readerinfo表输出借阅者名即可。用到的方法还是数据库中最简单的增删改查功能。6、 系统总结6.1总结工程中所有的功能在上栏中完全列出,此处只作界面演示:登陆界面:登陆成功界面:主界面:基本信息:添加:查询:修改:借阅添加:6.2系统不足由于编写的时间很紧张,不程序的漏洞和不足之处还是很多的,比如,没有管理员的添加修改功能,这是很重要的功能,但是没有完成成功,最后只能把它删了,因而管理员只能在数据库中自己手动添加账号和密码,带来了很多不便。其余,还是时间问题,程序的界面实在很简陋,没有装饰和修改,只是把一个写好的功能全部实现,很不美观。7、 参考文献1 卢湘江,李向荣,晏子. MySQL高级配置和管理. 北京:清华大学出版社,2001.92 萨师煊,王珊. 数据库系统概论. 北京:高等教育出版社,20023 张海藩. 软件工程. 北京:人民邮电出版社,2006