JAVA数据库开发实训报告.doc_第1页
JAVA数据库开发实训报告.doc_第2页
JAVA数据库开发实训报告.doc_第3页
JAVA数据库开发实训报告.doc_第4页
JAVA数据库开发实训报告.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA数据库应用开发实训报告课题名称: 图书管理系统设计与实现 专 业: 计算机应用技术 班 级: 计算机应用ZK0901 学 号: 59010120090131 姓 名: 王 春 雨 成 绩:_计算机学院二一一 年六月十三日目 录一、课程设计目的1二、课程设计题目描述和要求1三、课程设计报告内容13.1 系统需求分析13.2 数据库分析与设计33.3 系统详细设计与实现.63.4 系统测试19四、实训结论20五、结束语21六、参考文献212121一、课程设计目的通过项目驱动的学习和综合实训,熟练掌握运用Java语言进行桌面应用程序开发的基本知识和技能;熟练掌握JAVA的基本语法与JDBC数据库技术的应用;进一步熟悉SQL Server数据库的数据库管理(数据库的创建、备份与恢复、函数与存储过程的应用、数据导入导出、作业的调度等)、表的设计(表的创建、修改、删除,字段的默认值、约束及关系等)、数据的查询处理(insert、update、delete、select语句的应用)等技术;并能结合数据库应用技术和软件工程技术进行桌面应用程序的开发,能基本胜任Java桌面开发程序员的岗位。二、课程设计题目描述和要求图书管理系统,是一个由人、计算机等组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。其功能一般包括:图书信息管理、用户信息管理、图书借阅、图书归还、违约与毁坏赔偿、图书借还查询等等。三、课程设计报告内容3.1 系统需求分析以我校图书馆实际情况为基础,针对图书管理员工作设计一个适合于图书管理员使用的图书馆里系统。该系统需要具体完成对图书信息、用户信息、图书借阅信息、图书归还信息和违约与毁坏赔偿信息、图书借还查询信息的管理以及对赔偿金的提醒等。3.1.1具体功能需求描述1、图书信息的管理:可以实现图书信息的添加、删除和修改、查询等操作;2、用户信息的管理:可以完成用户信息的添加、删除和修改、查询等操作;3、管理员信息的管理:可以完成管理员信息的添加、删除和修改、查询等操作;4、图书借阅信息的管理:记录借阅时间、借阅数量,每个管理员管理一类别图书,借阅者每次每人只能借阅三本图书,借阅者在归还图书后方可再次借阅,图书借出后系统自动减少借出图书的数量等操作; 5、图书归还信息的管理:记录图书归还时间、归还数量,借阅者只能在对应类别管理员那里归还图书,借阅者一次归还完系统自动删除该用户所有信息,图书归还后系统自动增加归还图书的数量等操作;6、违约与毁坏赔偿查询信息的管理:可以查询图书借阅有无越期,有无毁坏,得知是否有无金额的收取等操作;7、图书借还查询信息的管理:可以随时查询掌握图书的借阅情况。8、图书借阅违约提醒的功能:要求还书时,管理员输入还书时间便提醒违约期限与违约金。3.1.2对应数据需求描述1、图书信息主要包括:图书编号、书名、作者、图书类别、图书总数量、图书剩余量等;2、用户信息主要包括:用户编号、姓名、性别、联系电话、身份证号等;3、管理员信息主要包括:管理员编号、登录密码、姓名、性别、联系电话、身份证号等;4、图书借阅信息主要包括:用户编号、图书编号、借阅起止时间、借阅数量、负责管理员等;5、图书归还信息主要包括:用户编号、图书编号、归还时间、借阅时间、归还数量、负责管理员等;6、违约与毁坏赔偿信息主要包括:用户编号、图书编号、借书超时天数、图书毁坏程度、违约金额、赔偿金额、金额总计、负责管理员等;7、图书借还查询信息主要包括:用户编号、图书编号、借阅起止时间、归还时间、金额总计、负责管理员等。3.1.3安全性完整性需求本系统只能由图书馆内部人员使用,可以由图书馆主管设置密码,图书管理员必须输入密码后才能进入系统进行管理和查询。图书管理系统管理员信息管理图书信息管理借还信息管理用户信息管理违约信息管理信息的编辑信息的编辑信息的编辑信息的查询统计信息的编辑信息的编辑信息的查询统计信息的查询统计图1 系统模块设计图密码输入与设置Login.java主窗体MainFrame.java用户信息管理UserFrame.java管理员信息管理AdministratorFrame.java图书信息管理BookCFrame.java借还信息管理BrFrame.java违约信息管理WyFrame.java图2 系统模块结构图.3.2 数据库分析与设计3.2.1 数据库概念结构设计根据需求分析中用户对数据的需求可知,图书管理系统需要对管理员、用户和图书三类信息进行管理。其实体及实体之间的关系图如下:类别作者图书编号管理员用户图书违约管理借还图书总数量图书剩余量身份证号年龄姓名性别联系电话用户编号联系电话姓名身份证号管理员编号年龄性别借阅时间归还时间借阅数量归还数量管理员编号违约金额总金额赔偿金额违约时限书名借阅期限图书编号MnMn登录密码图3 图书管理系统E-R图3.2.2 数据库逻辑模型设计根据E-R图,将其转换为关系模式可得到以下5个关系模式:管理员(管理员编号、姓名、性别、年龄、联系电话、身份证号、登录密码)用户(用户编号、姓名、性别、年龄、联系电话、身份证号)图书(图书编号、书名、作者、类别、图书总量、图书剩余量)借还(编号、图书编号、用户编号、借阅时间、借阅期限、借阅数量、归还时间、归还数量、管理员编号)违约管理(编号、管理员编号、用户编号、违约期限、违约金额、赔偿金额、总金额、图书编号)3.2.3 表设计与实现将关系模式中每个属性的类型、大小、规则等具体化形成表结构。各个表的结构描述如下:表1 管理员表字段名称字段类型是否为空默认值是否主键管理员编号varchar(12)not null自动增加编码主键姓名varchar(10)not null性别char(2)not null年龄tinyintnot null联系电话varchar(20)not null身份证号varchar(20)not null登录密码varchar(12)not null表2 图书表字段名称字段类型是否为空默认值是否主键图书编号varchar(20)not null主键作者varchar(10)not null书名varchar(30)not null类别varchar(8)not null图书总数量intnot null图书剩余量intnot null自动增加或减少表3 用户表字段名称字段类型是否为空默认值是否主键用户编号varchar(12)not null主键,自动增加姓名varchar(10)not null性别char(2)not null年龄tinyintnot null联系电话varchar(20)not null身份证号varchar(20)not null表4 借还表字段名称字段类型是否为空默认值是否主键编号intnot null主键,自动增加图书编号varchar(20)not null外键用户编号varchar(12)not null外键借阅时间datetimenot null借阅期限intnot null30 借阅数量intnot null归还时间datetimenot null归还数量intnot null管理员编号varchar(12)not null表5 违约管理表字段名称字段类型是否为空默认值是否主键编号intnot null主键,自动增加管理员编号varchar(12)not null外键用户编号varchar(12)not null外键违约期限intnot null违约金额moneynot null赔偿金额moneynot null总金额moneynot null图书编号varchar(20)not null收费时间datetimenot null违约数量intnot null3.3 系统详细设计与实现3.3.1 主控平台窗体本应用系统设计了整齐有序的主控平台窗体,该窗体负责调用各级子模块,使用户能够方便的完成所需执行的相关功能。如图4所示图4 主控平台窗体 主要实现代码如下: public void actionPerformed(ActionEvent arg0) if(arg0.getSource()=m11 | arg0.getSource()=login)/用户登录窗体this.setAllFrameIcon();if(this.getDakai(登录)loginframe=new LoginFrame(登录,false,true,false,true);desk1.add(loginframe);try loginframe.setSelected(true); catch (PropertyVetoException e) e.printStackTrace();else/如果已经打开了,这显式该窗体this.openFrame(登录);else if(arg0.getSource()=m20)/添加图书this.setAllFrameIcon();if(this.getDakai(添加图书)addbook=new AddBook(添加图书,false,true,false,true);desk1.add(addbook);try addbook.setSelected(true); catch (PropertyVetoException e) e.printStackTrace();else/如果已经打开了,这显式该窗体this.openFrame(添加图书);else if(arg0.getSource()=m21)/删除图书this.setAllFrameIcon();if(this.getDakai(删除图书)delbookframe=new DelBookFrame(删除图书,false,true,false,true);desk1.add(delbookframe);try delbookframe.setSelected(true); catch (PropertyVetoException e1) e1.printStackTrace();else/如果已经打开了,这显式该窗体this.openFrame(删除图书);else if(arg0.getSource()=m31)/添加借书者this.setAllFrameIcon();if(this.getDakai(添加用户)adduserframe=new AddUserFrame(添加用户,false,true,false,true);desk1.add(adduserframe);try adduserframe.setSelected(true); catch (PropertyVetoException e1) e1.printStackTrace();else/如果已经打开了,这显式该窗体this.openFrame(添加用户);else if(arg0.getSource()=m32)/删除借书者this.setAllFrameIcon();if(this.getDakai(删除用户)readerdel=new readerDel(删除用户,false,true,false,true);desk1.add(readerdel);tryreaderdel.setSelected(true);catch (PropertyVetoException e1) e1.printStackTrace();else/如果已经打开了,这显式该窗体this.openFrame(删除用户);else if(arg0.getSource()=m40)/借阅图书this.setAllFrameIcon();if(this.getDakai(借书)borrowframe=new BorrowFrame(借书,false,true,false,true);desk1.add(borrowframe);try borrowframe.setSelected(true); catch (PropertyVetoException e1) e1.printStackTrace();else/如果已经打开了,这显式该窗体this.openFrame(借书);else if(arg0.getSource()=m41)/归还图书this.setAllFrameIcon();if(this.getDakai(归还)returnframe=new ReturnFrame(归还,false,true,false,true); desk1.add(returnframe);try returnframe.setSelected(true); catch (PropertyVetoException e1) e1.printStackTrace();else/如果已经打开了,这显式该窗体this.openFrame(归还);else if(arg0.getSource()=m12)/注销登录m2.setEnabled(false);m3.setEnabled(false);m4.setEnabled(false);m10.setEnabled(true);m11.setEnabled(true);m12.setEnabled(true);elseif(arg0.getSource()=setup)this.setAllFrameIcon();if(this.getDakai(设置)adduserframe=new AddUserFrame(设置,true,true,true,true);desk1.add(adduserframe);try adduserframe.setSelected(true); catch (PropertyVetoException e) e.printStackTrace();elsethis.openFrame(设置);elseif(arg0.getSource()=m13)/退出系统if(JOptionPane.showConfirmDialog(null,你确定要退出系统吗?,系统提示,JOptionPane.YES_NO_OPTION)=JOptionPane.YES_OPTION) System.exit(0);3.3.2系统登录界面该模块用于验证管理员身份的合法性,输出界面如图5所示图5 系统登录界面主要实现代码如下:try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch (ClassNotFoundException e1) e1.printStackTrace();JOptionPane.showMessageDialog(null,加载驱动程序失败!);try conn=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=books,sa,123);pstmt=conn.prepareStatement(select * from admins where 管理员编号=? and 登录密码=?);pstmt.setString(1,tyhm.getText();pstmt.setString(2,tpwd.getText();rst=pstmt.executeQuery();if(rst.next()JOptionPane.showMessageDialog(null,用户登录验证成功!,系统提示,JOptionPane.INFORMATION_MESSAGE);this.dispose();MainFrame.m2.setEnabled(true);MainFrame.m3.setEnabled(true);MainFrame.m4.setEnabled(true);MainFrame.m10.setEnabled(false);MainFrame.m11.setEnabled(false);MainFrame.m12.setEnabled(true);elseJOptionPane.showMessageDialog(null,没有这个用户或者密码错误!,系统提示,JOptionPane.ERROR_MESSAGE); rst.close();pstmt.close(); conn.close();catch (SQLException e1) / TODO 自动生成 catch 块e1.printStackTrace();/JOptionPane.showMessageDialog(null,SQL执行错误!);/catch (SQLException e1) /JOptionPane.showMessageDialog(null,SQL执行错误!);/3.3.3 用户添加模块该模块用于实现用户的添加,其界面如图6所示图6 用户添加界面主要代码实现如下:try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);/1、加载数据库驱动程序 catch (ClassNotFoundException e1) JOptionPane.showMessageDialog(null,加载驱动程序失败!);try con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/:1433;DatabaseName=books,sa,123);/2、创建数据库连接对象con pstmt=con.prepareStatement(insert into users(name,sex,age,phone,num)values(?,?,?,?,?);/3、创建PreparedStatement预处理执行对象pstmt pstmt.setString(1,姓名.getText(); pstmt.setString(2,性别.getText(); pstmt.setString(3,年龄.getText(); pstmt.setString(4,联系电话.getText(); pstmt.setString(5,身份证号.getText(); int n=pstmt.executeUpdate(); if(n0)/成功! JOptionPane.showMessageDialog(null,注册成功!,注册提示,JOptionPane.INFORMATION_MESSAGE);this.dispose();else/失败JOptionPane.showMessageDialog(null,新用户注册失败!,注册提示,JOptionPane.INFORMATION_MESSAGE); pstmt.close(); con.close(); catch (SQLException e1) JOptionPane.showMessageDialog(null,SQL执行错误!);elseJOptionPane.showMessageDialog(null,所有信息不能为空,请重新输入!,注册提示,JOptionPane.ERROR_MESSAGE);3.3.4 图书添加模块该模块主要用于图书信息的添加,其界面如图7所示图7 图是添加界面 主要代码实现如下:try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);/1、加载数据库驱动程 catch (ClassNotFoundException e1) JOptionPane.showMessageDialog(null,加载驱动程序失败!);try con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/:1433;DatabaseName=books,sa,123);/2、创建数据库连接对象conpstmt=con.prepareStatement(insert into books(图书编号,图书名,管理员编号,作者,类别,入库时间)values(?,?,?,?,?,?,?);/3、创建PreparedStatement预处理执行对象pstmt pstmt.setString(1,biao1.getText(); pstmt.setString(2,biao2.getText(); pstmt.setString(3,biao3.getText(); pstmt.setString(4,biao4.getText(); pstmt.setString(5,biao5.getText(); pstmt.setString(6,biao6.getText(); int n=pstmt.executeUpdate(); if(n0)/成功!JOptionPane.showMessageDialog(null,新书添加成功!,注册提示,JOptionPane.INFORMATION_MESSAGE);this.dispose();else/失败JOptionPane.showMessageDialog(null,新书添加失败!,注册提示,JOptionPane.INFORMATION_MESSAGE); pstmt.close(); con.close(); catch (SQLException e1) JOptionPane.showMessageDialog(null,SQL执行错误!);elseJOptionPane.showMessageDialog(null,所有信息不能为空,请重新输入!,注册提示,JOptionPane.ERROR_MESSAGE);3.3.5 图书删除模块该模块主要用于实现图书的删除,其界面如图8所示图8 图书删除界面主要代码实现如下:try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch (ClassNotFoundException e1) / TODO 自动生成 catch 块e1.printStackTrace();try con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=books,sa,123);pstmt=con.prepareStatement(delete from books where 图书编号=? and 书名=?);pstmt.setString(1,tx3.getText();pstmt.setString(2,tx2.getText();int n=pstmt.executeUpdate();if(n0)JOptionPane.showMessageDialog(null,图书删除成功!,删除提示,JOptionPane.INFORMATION_MESSAGE);this.repaint();else JOptionPane.showMessageDialog(null,图书删除失败!);pstmt.close();con.close(); catch (SQLException e1) / TODO 自动生成 catch 块e1.printStackTrace();3.3.6 图书借阅模块该模块主要用于实现图书的借阅功能,实现分析:1 判断图书馆中是否有此书,若有则转2,否则退出2 将图书信息表中的图书数量减13 找到用户表,将所借图书数量加14 将借书信息写入借书文件表其界面如图9所示图9 图书借阅界面主要代码实现如下:try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch (ClassNotFoundException e1) / TODO 自动生成 catch 块e1.printStackTrace();try con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/:1433;DatabaseName=books,sa,123);pstmt=con.prepareStatement(select * from borrows where 用户编号=? and 图书编号=? );pstmt.setString(1,tuser_id.getText();pstmt.setString(2,book);/pstmt.setString(3,null);rst=pstmt.executeQuery();if(rst.next() /*& rst.getString(limit_time)=null*/)JOptionPane.showMessageDialog(null,该图书您已借,请归还后再借,借书提示,JOptionPane.INFORMATION_MESSAGE);elsetry con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/:1433;DatabaseName=books,sa,123);pstmt1=con.prepareStatement(insert into borrows(用户编号,图书编号,图书剩余量,管理员) values(?,?,?,?);pstmt1.setString(1,tuser_id.getText();pstmt1.setString(2,b);pstmt1.setString(3,String.valueOf(Integer.parseInt(s)-1);pstmt1.setString(4,tmanager.getText();int n=pstmt1.executeUpdate();if(n0)JOptionPane.showMessageDialog(null,图书借出成功,借书提示,JOptionPane.INFORMATION_MESSAGE);borrow.setEnabled(false);tmanager.setText();tb1.repaint();else JOptionPane.showMessageDialog(null,图书借出失败,借书提示,JOptionPane.INFORMATION_MESSAGE);pstmt1.close(); catch (SQLException e2) / TODO 自动生成 catch 块e2.printStackTrace();3.3.7 图书归还模块该模块主要用于实现图书的归还功能,实现分析:1 判断结束文件表中是否存在此书,若存在则转2,否则退出2 找到图书表将图书数量加13 找到用户表将所借图书减14 找到借书表将此条记录删除其界面如图10所示图10 图书归还界面主要代码实现如下: try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch (ClassNotFoundException e1) / TODO 自动生成 catch 块e1.printStackTrace();try con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/:1433;DatabaseName=Book,sa,123);pstmt=con.prepareStatement(delete from borrows where 用户编号=? and 图书编号=?);pstmt.setString(1,tuser_id.getText();pstmt.setString(2,s1);int n=pstmt.executeUpdate();if(n0)/JOptionPane.showMessageDialog(null,借书记录已删除!,删除提示,JOptionPane.INFORMATION_MESSAGE);elseJOptionPane.showMessageDialog(null,借书记录删除失败!,删除提示,JOptionPane.INFORMATION_MESSAGE);pstmt.close(); catch (SQLException e1) / TODO 自动生成 catch 块e1.printStackTrace();try pstmt=con.prepareStatement(insert into borrows (用户编号,图书编号,归还数量,管理员) values(?,?,?,?);pstmt.setString(1,tuser_id.getText();pstmt.setString(2,s1);pstmt.setString(3,tx7.getText();pstmt.setString(4,tx8.getText();int n=pstmt.executeUpdate();if(n0)JOptionPane.showMessageDialog(null,图书归还成功!,归还提示,JOptionPane.INFORMATION_MESSAGE);setNull();tb.repaint();elseJOptionPane.showMessageDialog(null,图书归还成功!,归还提示,JOptionPane.INFORMATION_MESSAGE);pstmt.close(); catch (SQLException e1) / TODO 自动生成 catch 块e1.printStackTrace();try int i=0;con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/:1433;DatabaseName=books,sa,123);pstmt=con.prepareStatement(select * from borrows where 用户编号=?);pstmt.setString(1,tuser_id.getText();rst=pstmt.executeQuery();while(rst.next()data1i0=rst.getString(编号);data1i1=rst.getString(用户编号);data1i2=rst.getString(图书编号);data1i3=rst.getString(借阅时间);/data1i4=rst.getString(limit_time);data1i5=rst.getString(借阅数量);/data1i6=rst.getString(store_count);data1i7=rst.getString(管理员);i+;tb.repaint();rst.close();pstmt.close(); catch (SQLException e1) / TODO 自动生成 catch 块e1.printStackTrace();3.3.8 触发器1、功能:当向borrow信息表中添加借书信息时,自动将books信息表中相应的库存量减少1。CREATE trigger BOOKTriggeron borrowafter insertasupdate books set store_count = store_count - 1 where book_id = (select book_id from inserted)2、功能:当从borrow信息表中删除借书信息时,自动将books信息表中相应的库存量增加1。create trigger BookDeleteTriggeron borrowafter deleteasupdate books set store_count = store_count + 1 where book_id = (select book_id from deleted)3.4 系统测试3.4.1 测试界面现举一例说明:对于登陆界面的测试:public static void main(String srgs) New LoginFrame();在登录界面中插入以上代码即可。有时要将一些监听注释掉3.4.2 数据库连接测试举例如下:对于登陆界面与数据库连接的测试public static User select(String name,String password)User user=null;TryConnection conn=DBConn.getConn();PreparedStatement stmt=conn.prepareStatement(“select * from user where name=? and password=?”)stmt.setString(1,name);stmt.setString(2,password);Resultset rs=stmt.executeQuery();if(rs.next()user=new User();user.setName(rs.getString(“name”);user.setPassword(rs.getString(“password”);rs.close();stmt.close();con.close();c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论