《《JAVA图书管理系统开发》实训报告(共34页).doc》由会员分享,可在线阅读,更多相关《《JAVA图书管理系统开发》实训报告(共34页).doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上JAVA图书管理系统开发实训报告 课程名称: JAVA 图书管理系统开发 专 业: 计算机应用技术 班 级:ZB10001 学 号: 姓 名: 成 绩: 计算机学院二一二年三月五日目 录一、程序设计目的通过项目驱动的学习和综合实训,熟练掌握运用Java语言进行桌面应用程序开发的基本知识和技能;熟练掌握JAVA的基本语法与JDBC数据库技术的应用;进一步熟悉SQL Server数据库的数据库管理(数据库的创建、备份与恢复、函数与存储过程的应用、数据导入导出、作业的调度等)、表的设计(表的创建、修改、删除,字段的默认值、约束及关系等)、数据的查询处理(insert、upd
2、ate、delete、select语句的应用)等技术;并能结合数据库应用技术和软件工程技术进行桌面应用程序的开发,能基本胜任Java桌面开发程序员的岗位。二、程序设计题目描述和要求图书管理系统,是一个由人、计算机等组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。其功能一般包括:图书信息管理、用户信息管理、图书借阅、图书归还、违约与毁坏赔偿、图书借还查询等等。三、程序设计报告内容3.1 系统需求分析以我校实际情况为基础,对于图书馆图书管理设计一个适合于学校图书馆使用的图书管理系统。还可以为学校领导提供图书的库存和图书流通量的查询。该系统需要完成对图书类别管理、统计管理、库存管理、
3、用户信息管理、图书借阅管理、图书归还管理、超期与损毁赔偿管理、图书借还查询管理、图书出入库和统计查询等。3.1.1 功能需求描述(1)、图书管理:对图书进行分类存储(计算机、机械、建筑、文学、心理、艺术、经济、历史、地理、其它)。在入库和出库的时候按图书类别进行管理。可对现有图书信息信息进行管理(查询、修改)。(2)、库存信息管理:对于图书出库图书登记和入库图书登记。(3)、用户信息管理:可以实现对不同用户进行添加、查询、删除和修改,并给与不同用户不同权限。(4)、图书借阅管理:对于图书借阅信息的登记(书名、图书编号、馆藏、借书日期、借期、应还日期)、对现有图书库存减少、对图书借阅人信息进行登
4、记(姓名/学号、本次借阅册数、图书编号)。(5)、图书归还管理:对图书信息进行登记(图书编号、借书日期、借期、应还日期、超期、续期)对图书借阅人信息进行登记(姓名/学号、现借册数、现借藏书信息)。 (6)、图书超期与损毁赔偿管理:对于超期、损毁图书进行赔偿收费并登记赔偿人和管理员信息以及费用金额。图书管理系统图书管理用户管理现有库存管理出库管理入库管理图书借阅管理图书归还管理添加用户管理删除用户管理修改用户管理权限管理图书赔偿管理系统设计图1、 图书类别管理:对图书进行分类存储。在入库和出库的时候按图书类别进行管理。(1)分类:按图书的性质进行分类,并在图书编号中对不同类别的书籍使用不同的类别
5、标示符(计算机(JS)、机械(JQ)、建筑(JZ)、文学(WX)、心理(XL)、艺术(YS)、经济(JJ)、历史(LS)、地理(DL)。(2)图书信息管理:对现有图书信息进行查看并可以修改。2、 库存信息管理:对于图书出库图书登记和入库图书登记及现有库存图书进行管理。(1) 入库管理:记录入库图书总量,分类别进行统计并记录。记录登记人员姓名。(将这些信息记录进数据库中,在相应查询权限下可以查询。但是记录后不可修改。)(2) 出库管理:记录出库图书总量,分类别进行统计记录,记录登记人员姓名。将这些信息记录进数据库中,在相应查询权限下可以查询。但是记录后不可修改。)(3) 现有库存管理:对现有库存
6、进行管理,在入库时对库存进行增加并对每一本图书进行分类编号登记,在出库时对库存减少并删除相应的图书信息。3、 用户信息管理:可以实现对不同用户进行添加、查询、删除和修改,并给与不同用户不同权限。(1) 用户信息添加:对用户的相应信息进行添加(用户名,密码,出生日期,性别,管理操作权限,借阅权限)。(2) 用户信息查询:对用户的信息进行查询。(3) 用户信息删除:对用户信息进行删除。(4) 用户信息修改:用户可以对自己的用户密码和出生日期进行修改,管理员只可以修改用户的权限4、 图书借阅管理:对于图书借阅信息的登记(书名、图书编号、馆藏、借书日期、借期、应还日期)同时系统自动对借阅图书量增加、对
7、现有图书库存减少、对图书借阅人信息进行登记(姓名/学号、本次借阅册数、现借册数、可借册数、现借藏书信息)。(1) 借阅信息登记:对用户的信息进行登记(姓名、本次借阅册数、现借册数、可借册数、现借藏书信息),并根据借书权限借阅相应的书籍数量。(将信息记录入数据库中相应权限可以进行查询。)(2) 对借阅图书进行登记:对借出图书的书名、图书编号、馆藏、借书日期、借期、应还日期进行登记并关联相应的借书用户系统自动的在书籍借阅标示栏加一表示借出。(图书在图书馆内借阅栏标示0,借出后自动加1,归还自动减1,损毁在借阅的基础上加1。将信息记录入数据库中相应权限可以进行查询。)(0表示在书库中,1表示借出,2
8、表示损毁)。5、 图书归还管理:对图书信息进行登记(书名、图书编号、馆藏、借书日期、借期、应还日期、超期、续期)对图书借阅人信息进行登记(姓名/学号、现借册数、可借册数、现借藏书信息)。(1) 用户信息显示:显示用户信息(姓名/学号、现借册数、可借册数、现借藏书信息),对图书信息管登记(书名、图书编号、馆藏、借书日期、借期、应还日期、超期、续期)并根据是否超期损毁进行相应操作。(2) 用户信息删除:对相应的借书用户关联图书信息删除。系统自动在图书标示栏内减1。系统自动将用户现借数量减1,可借数量加1。6、 图书超期和损毁赔偿管理:对于超期、损毁图书进行赔偿收费并登记赔偿人和管理员信息以及费用金
9、额。(1) 超期赔偿管理:登记用户信息(姓名/学号)查看超期时间并对其进行赔偿收费(记录收费人信息,赔偿人信息,收费金额,收费日期并存入数据库中)。(2) 损毁赔偿管理:登记用户信息(姓名/学号)并对其进行赔偿收费(记录收费人信息,赔偿人信息,收费金额,收费日期并存入数据库中)。在图书信息中的借阅标示栏内系统自动在借阅的基础上加1表示损毁。3.1.2 对应数据需求描述1 、 图书类别管理数据需求:图书分类管理数据需求:(按:计算机、机械、建筑、文学、心理、艺术、经济、历史、地理九类进行分类)。并对分类图书进行标识(计算机(JS)、机械(JQ)、建筑(JZ)、文学(WX)、心理(XL)、艺术(Y
10、S)、经济(JJ)、历史(LS)、地理(DL)。并在标识符后面加四位编号(例子:JS0001)。数据项数据需求图书类别名称按图书类别进行分类(初始分为九种),计算机、机械、建筑、文学、心理、艺术、经济、历史、地理。在系统完成后可进行类别的添加和删除修改。(10汉字内)类别说明对相应类别进行详细描述。2 、库存信息管理数据需求:(1) 入库管理数据需求:数据项数据需求入库编号用于在数据库中唯一标识入库信息。自动增加入库ISBN编号用于唯一标识图书的图书ISBN编码 。入库图书数量图书的数量。入库时间记录图书入库时间。入库操作员编号记录登记图书入库操作员的编号。(2) 出库管理数据需求:出库编号用
11、于在数据库中唯一标识出库信息。自动增加出库ISBN编号用于唯一标识图书的图书ISBN编码 。出库图书数量图书数量出库时间记录图书出库时间。出库操作员编号登记图书出库操作员的编号。3、 用户信息管理数据需求:(1)用户信息添加数据需求:数据项数据需求用户编号用于唯一标识学生,要求:共8位,前2为年份,中间2位特殊类别标号(默认00),后面4位为报名序号。姓名15个汉字以内,可能带有特殊符号(可修改)。性别只能是“男”或“女”。密码任意612位字符。电话十一为数字(座机前面加区号)。班级存储学院班级详细信息注册时间如:2012-12-10用户权限号只能有以下四种(领导,管理员,教师,学生),状态包
12、括:正常、暂停使用和已注销(2)用户权限管理:数据项数据需求权限编号编号用于标示权限类别的编号权限名称权限的名称。(领导、教师、管理员、学生)可借阅书籍根据权限借阅不同数量的书籍。(3)用户信息修改数据需求:修改用户的信息。数据项数据需求用户编号用于唯一标识学生,要求:共8位,前2为年份,中间2位特殊类别标号(默认00),后面4位为报名序号。姓名15个汉字以内,可能带有特殊符号(可修改)。性别只能是“男”或“女”。密码任意612位字符。电话十一为数字(座机前面加区号)。班级存储学院班级详细信息注册时间如:2012-12-10用户权限号权限的标识号码。只能有以下四种(领导,管理员,教师,学生),
13、状态包括:正常、暂停使用和已注销(5)用户信息删除数据需求:删除用户的注册信息。4 、图书借阅,归还管理数据需求:在借阅图书时的数据需求。数据项数据需求借还编号唯一标识借阅信息的编号。在数据库中区别信息。用户编号管理员人工将用户编号输入登记框。ISBN管理员人工将图书编号输入登记框。借阅时间系统自动在电脑上获取时间。借阅数量登记借阅书籍的数量。归还时间在归还时自动获取时间。5、图书超期和损毁赔偿管理数据需求:数据项数据需求赔偿编号唯一标识借阅信息编号。自动增加。用户编号管理员人工将用户编号输入文本框。ISBN编号管理员人工将图书编号输入文本框。情况描述对于赔偿情况的详细描述处理结果管理员登记赔
14、偿金额收费时间系统自动获取系统时间。操作员编号输入操作员编号。3.1.3 数据库概念模型设计用户电话班级注册时间密码姓名用户编号性别权限号状态图1 用户实体图权限权限名权限编号可借阅书籍数量图2 权限实体图图书图书名作者出版社书价库存量ISBN编号类别名出版时间现存量图3 图书实体图类别类别说明图书类别名图4 类别实体图借还用户编号ISBN编号借阅数量借阅时间归还时间借还编号图5 借还实体图赔偿用户编号ISBN编号情况描述处理时间处理结果操作员编号赔偿编号图6 赔偿实体图入库入库时间入库数量入库操作员编号入库ISBN编号入库编号图7 入库实体图出库出库时间出库数量出库操作员编号出库ISBN编号
15、出库编号图8 出库实体图功能功能编号功能模块图9 功能实体图模块功能编号权限编号图10 模块实体图读者图书类别借还违约所属管理员图书管理用户管理NMNNMMM1NN图11 各实体关系图3.1.4数据库逻辑模型设计模型设计根据E-R图,将其转换为关系模式可得到以下8个关系模式:用户(用户编号、姓名、性别、密码、电话、班级、注册时间、权限编号、状态)权限(权限编号、权限名称、可借阅书籍)模块(权限编号、功能名称)图书(ISBN编号、图书名、作者、出版社、出版时间、书价、图书书类别名、库存量、现存量)类别(图书类别名、说明)借还(借阅编号、用户编号、ISBN、借阅时间、借阅数量、归还时间)赔偿(赔偿
16、编号、用户编号、ISBN编号、原因、处理结果、处理时间、操作员编号)出库(出库编号、ISBN编号、出库图书数量、出库时间、出库操作员编号)入库(入库编号、ISBN编号、入库图书数量、入库时间、入库操作员编号)3.1.5表的设计与实现表一:用户信息表(users)=(OK)字段名称类型是否为空默认值是否主键用户编号(user_Id)intnot null自动增加主键用户名(user_Name)varchar(10)not null性别(user_Sex)char(2)not null男密码(user_Pwd)char(12)not null电话(user_Tel)varchar (30)班级(u
17、ser_Class)varchar (50)注册时间(user_Time)datetimenot null自动获取权限编号(limit_Id)varchar(10)not null学生外键状态(user_State)char(4)not null使用表二:用户权限表(limit)=(OK)字段名称类型是否为空默认值是否主键权限编号(limit_Id)varchar(10)not null自动增加主键(S001)权限类名(limit_Name)varchar(15)not null借阅书籍数量(limit_Qty)int not null3表三:图书信息表(books)字段名称类型是否为空默认值
18、是否主键ISBN编号(book_Id)varchar(17)not null主键图书名(book_Name)varchar(30)not null作者(book_Author)varchar (10)not null出版社(book_Society)varchar(50)not null出版时间(book_Time)datatimenot null书价(book_Price)intnot null图书类别名(book_Sort)varchar(10)not null计算机外键库存量(book_Qty)int现存量(book_Qtyx)int表四:功能模块表(module)=(OK)字段名称类型
19、是否为空默认值是否主键权限编号(lilmit_Id)varchar(10)not null外键模块名称(module_Name)varchar(30)not null表五:超期损毁表(compensate)字段名称类型是否为空默认值是否主键赔偿编号(cpt_Id)intnot null主键用户编号(user_Id)intnot null外键ISBN编号(book_Id)varchar(17)not null外键原因(cpt_Cause)varchar (50)not null收费(cpt_result)char(10)not null收费时间(cpt_Time)datatimenot null
20、自动获取操作员编号(user_Id)intnot null外键表七:图书类别表:(sort)=字段名称类型是否为空默认值是否主键图书类别名(book_Sort)varchar(10)not null计算机主键说明explaintext表六:借阅归还表(borrow)字段名称类型是否为空默认值是否主键借阅编号(borrow_Id)intnot null主键用户编号(user_Id)Intnot null外键ISBN编号(book_Id)varchar(17)not null外键借阅时间(borrow_Time)datetimenot null自动获取借阅数量(borrow_Qty)int归还时间
21、(return_Time)datatime自动获取表八:入库表:(enter)字段名称类型是否为空默认值是否主键入库编号(enter_Id)intnot null自动增加主键ISBN编号(book_Id)varchar(17)not null外键入库图书数量(enter_Qty)intnot null入库时间(enter_Time)datatimenot null自动获取入库操作员编号(user_Id)intnot null外键表九:出库表(out)字段名称类型是否为空默认值是否主键出库编号(out_Id)varchar(10)not null自动增加主键ISBN编号(book_Id)varc
22、har(12)not null外键出库图书数量(out_Qty)intnot null出库时间(out_Time)datatimenot null自动获取出库操作员编号(user_Id)varchar(10)not null外键管理系统窗口图3.2系统详细设计与实现3.2.1 登陆界面设计public void actionPerformed(ActionEvent e) /监视器if(e.getSource()=Ok)/点击确定时执行的语句if(yh.getText().equals()/判断用户号是否输入JOptionPane.showMessageDialog(Ok,请输入账号 ,提示,
23、JOptionPane.INFORMATION_MESSAGE);else if(mm.getText().equals()/判断密码是否为空JOptionPane.showMessageDialog(Ok,请输入 密码!,提示,JOptionPane.INFORMATION_MESSAGE);try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch (ClassNotFoundException e1) JOptionPane.showMessageDialog(null,数据库驱动程序不存在,提示,JOpt
24、ionPane.ERROR_MESSAGE);try Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=图书管理系统,sa,123);PreparedStatement pstmt=con.prepareStatement(select * from users where user_Id=? and user_Pwd=? and user_State=使用);pstmt.setInt(1,Integer.parseInt(yh.getText();p
25、stmt.setString(2,mm.getText();ResultSet rst=pstmt.executeQuery();if(rst.next()new MainFrame(图书管理系统,Integer.parseInt(yh.getText();this.dispose();elseJOptionPane.showMessageDialog(null,用户名不存在或者密码不正确,请重新输入!,提示,JOptionPane.ERROR_MESSAGE); catch (SQLException e1) JOptionPane.showMessageDialog(null,SQL语句执
26、行错误!,提示,JOptionPane.ERROR_MESSAGE);if(e.getSource()=Cancel)/点击取消实现的this.dispose();if(bc.isSelected()=true)/选择记住密码savaFile();if(bc.isSelected()=false)/未选择记住密码savaFile1();if(e.getSource()=login)/点击注册按钮new LoginFrame(注册);public void savaFile()/实现对文本框文字的保存File f=new File(.datadk.txt);try FileWriter txt=
27、new FileWriter(f);txt.write(yh.getText()+-);txt.write(mm.getText()+);txt.close(); catch (IOException e) / TODO 自动生成 catch 块e.printStackTrace();public void savaFile1()/实现对空白文本的保存File f=new File(.datadk.txt);try FileWriter txt=new FileWriter(f);txt.write(yh.getText()+-);txt.write(+);txt.close(); catch
28、 (IOException e) / TODO 自动生成 catch 块e.printStackTrace();public void Duqu() /实现对文字的读取FileReader fr;try fr = new FileReader(.datadk.txt);BufferedReader br = new BufferedReader(fr); try String line = br.readLine();yh.setText(line.toString().substring(0,line.toString().indexOf(-);mm.setText(line.toStrin
29、g().substring(line.toString().indexOf(-)+1,line.toString().indexOf(+); catch (IOException e) e.printStackTrace(); catch (FileNotFoundException e1) e1.printStackTrace(); 3.2.2 主界面void setAllFrameIcon()/在运行新窗体之前,将所有的窗体最小化JInternalFrame jf;jf=desk1.getAllFrames();for(int i=0;ijf.length;i+)try if(!jfi.i
30、sIcon() jfi.setIcon(true); catch (PropertyVetoException e) e.printStackTrace();desk1.validate();boolean getDakai(String s)/判断标题为s的窗体是否打开JInternalFrame jf;jf=desk1.getAllFrames();for(int i=0;ijf.length;i+)if(s.equals(jfi.getTitle()return false;return true;void openFrame(String s)/搜索标题为s的窗体,并将其显式出来JIn
31、ternalFrame jf;jf=desk1.getAllFrames();for(int i=0;i0)/判断成功并提示! JOptionPane.showMessageDialog(null,注册用户成功!,添加用户提示,JOptionPane.INFORMATION_MESSAGE); this.dispose(); else/失败 JOptionPane.showMessageDialog(null,注册用户失败!,添加用户提示,JOptionPane.ERROR_MESSAGE); pstmt.close();/7、关闭预处理对象pstmt con.close();/8、关闭数据库
32、连接对象con catch (SQLException e1) JOptionPane.showMessageDialog(null,SQL语句执行错误!,提示,JOptionPane.ERROR_MESSAGE);if(e.getSource()=Cancel)this.dispose();3.2.4 图书登记界面设计/为下拉菜单添加数据库中数据try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch (ClassNotFoundException e1) JOptionPane.showMessageDia
33、log(null,数据库驱动程序不存在,提示,JOptionPane.ERROR_MESSAGE);try Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=图书管理系统,sa,123);PreparedStatement pstmt=con.prepareStatement(select book_Sort from sort);ResultSet rst=pstmt.executeQuery();while(rst.next()Sortext.ad
34、dItem(rst.getString(1);rst.close();pstmt.close();con.close(); catch (SQLException e1) JOptionPane.showMessageDialog(null,SQL语句执行错误!,提示,JOptionPane.ERROR_MESSAGE);/监视器方法public void actionPerformed(ActionEvent e) if(e.getSource()=Ok)/点击登记实现的事件try Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=图书管理系统,sa,123);/2、创建数据库连接对象con/下面在添加分组 PreparedStatement pstmt=con.prepareStatement(insert into books(books_Id,books_Name,books_Author,books_Society,books_Time,books_Price,b