java综合实验报告样例

摘 要

随着计算机的普及,计算机技术的快速发展,计算机在各行各业的应用也越来越广泛,为了满足时代的需要,JAVA不仅是一门最为流行的计算机语言,而且已经形成一种专门的技术,带来了20世纪末和本世纪初网络科技和网络经济超常发展。JAVA的与平台无性、高可靠性、安全机制和内嵌网络支持等特性使它成为编写网络应用程序的首选工具之一。
我们本次的Java课程设计的最终目标是实现一个图书信息管理系统,使其具有一般图书管理系统所具有的功能,可以实现管理员登录,读者登录、管理员退出、读者用户注册、读者信息修改、读者查询、新书入库、书籍查询、书籍借阅与归还等功能。在设计中我们主要进行了数据库及类的设计,把整个系统分成了3个包和4个表。通过应用awt、swing、插件,sql、util等包,合理的添加了按钮、菜单、文本框、文本区、表格等组件类,还包含窗口、面板等容器类,经过设计者合理的布局,完成了窗体的设计,并通过建立JDBC连接到Mysql数据库后,向数据库发送SQL语句实现程序与数据库中表间的消息通信,从而实现了相应的图书管理系统的功能。程序设计的实现,使我们进一步理解JAVA的基本概念、理论和方法以及MySQL数据库语言和eclipse插件的运用,初步掌握JDK、Eclipse的调试和数据库连接、事务处理、图形界面的应用,以及程序中错误的解决方法,明确JAVA在实际程序设计中的应用。使课堂中学习到理论得到应用。

【关键词】图书馆管理系统 Java程序设计语言 Mysql数据库 JDBC

前 言

图书馆在正常运营中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。
我们将设计一个图书馆管理信息系统。
现有的图书管理系统,其功能还需继续完善,为了便于管理员对图书管理系统进行妥善的管理和读者的查询,图书管理系统提供了读者注册添加、读者修改、读者查询、新书入库等功能,为读者提供了书籍查询、读者借阅信息查询等多种功能。
实现SQL语句的界面按钮的事件处理。对于读者而言他们的需求是了解图书的基本情况,自己的借阅情况。总而言之就是实现对各个信息表的查询,修改;

第一章 开发工具及思想

开发工具
Window10 ,jdk 8.0 eclipse WindowBuilder插件 Mysql数据库 SQLyog
采用MVC设计:按功能对各种对象进行划分,使程序更加直观,便于重用和后期维护,降低程序的耦合性
模型(model):用于封装与应用程序的业务逻辑相关的数据以及对数据的处理逻辑;
示图(view):提供与用户交互的数据展现界面
控制器:根据用户的请求调度模型获取数据,再通过视图展现给用户,达到交互目的;
具体到图书信息管理系统而言:
模型: a.数据模型 model包下的Books类,User类Reader类(属性,构造方法,属性方法)
b.数据逻辑处理模型 model包下的BookOper类,User_Log类等,(提供图书信息的增删查改操作)
示图(view):view包下的登陆界面,主界面,图书添加界面,图书管理界面,读者系统界面;
控制器:视图当中的组件通过事件处理,调度方法,显式不同的界面

第二章 程序要求及概要设计

一、设计要求:图书信息管理系统

  1. 使用图形用户界面
  2. 用数据库建立1或2个图书信息表。(不限使用哪种数据库)
  3. 能连接数据库并实现查询、增、删、改等功能。

二、功能概述:

  1. 非功能性需求:所有用户在使用本系统之前都必须通过自己的用户名和密码登录,才能进行其他操作。该子系统主要负责判断登录时判断用户名和密码的正确性。
  2. 图书管理系统:该子系统主要负责图书查询、修改和删除功能的实现。
  3. 读者信息管理系统:包括读者信息查询、修改功能。
  4. 读者客户端系统:该子系统主要负责读者图书借阅,图书归还查看自己借阅的图书

三、程序流程设计:

在这里插入图片描述

四、Java层次分析

在这里插入图片描述

第三章 功能模块化实现

1.工具类模块设计:
此程序核心思想就是通过程序代码实现本地数据库内容的增删查改,首要的问题就是实现数据库的连接,创建一个配置文件,将获取连接和资源关闭封装为一个工具类,加载配置文件实现连接基本信息的读取,同时方法用static修饰,调用时,直接使用类名调用,提高程序的复用性,使信息与程序实现分离,降低程序的耦合性
核心代码实现:
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(“jdbc.properties”); // 获取基本信息
Properties pt = new Properties();
pt.load(is);// 读取输入流中的信息
String user = pt.getProperty(“user”);
String password = pt.getProperty(“password”);
String url = pt.getProperty(“url”);
String driverClass = pt.getProperty(“driverClass”);
// 加载驱动连接
Class.forName(driverClass);
// 获取连接
con = DriverManager.getConnection(url, user, password);
为了给用户更好的交互体验,当输入为空时提示相应的信息,不为空时提供相应操作需要增加一个判断字符是否为空的工具类
2.登录模块设计:
利用JLabel, JTextField, Jpassword , JButton设计登陆界面,User_log类实现用户登录查验,获取用户输入的用户名和密码,连接数据库进行信息比对,若与数据库匹配为空,则弹出消息框提示用户,匹配成功则进入主界面,User类将数据库中的每一行数据封装为User的一个对象,数据表中的列信息账户和密码对应User类的属性,以及属性的各种方法,实现对数据表的封装。
核心代码实现

String sql="select * from t_user where user_Name=? and password=?";
			ps = connection.prepareStatement(sql);
			//填充占位符
			ps.setObject(1, user.getUser_Name());
			ps.setObject(2, user.getPassword());
			//获取结果集
			rs = ps.executeQuery();
			if(rs.next()) {
			  rsuser=new User();
			  rsuser.setId(rs.getString("id"));
			  rsuser.setUser_Name(rs.getString("user_Name"));
			  rsuser.setPassword(rs.getString("password"));
			}

通过查询数据库用户表返回结果集,读取,创建一个用户实体类对象,将数据库中的数据赋值给用户类对象,在登陆界面获取文本框中的内容,调用user的构造器获取一个User对象,作为参数传给Login方法,若为空则与数据库中的数据不符,否则登陆成功,达到查验的功能;
3.图书管理模块的设计
(1)图书添加模块的设计
使用swing组件设计图书添加界面,添加按钮的事件处理,若添加成功弹出添加成功消息,若添加失败,则返回错误信息,由于数据库表格将图书编号设置为主键,如若用户输入一个图书编号与数库中的编号重复,则弹出消息框,提示编号已存在,请勿重复添加,避免了主键重复报错;

java.sql.PreparedStatement ps = null;
			// .预编译sql语句,返回prepareStatement实例
String sql = "insert  ignore into t_book(idBook,bookType,bookName,author,press,pressTime) values( ?,?,?,?,?,?)";
			ps = con.prepareStatement(sql);
			// 3.填充占位符
			ps.setObject(1, book.getIdBook());
			ps.setObject(2, book.getBookType());
			ps.setObject(3, book.getBookName());
			ps.setObject(4, book.getAuthor());
			ps.setObject(5, book.getPress());
			ps.setObject(6, book.getPressTime());
			return ps.executeUpdate();

(2)书籍管理模块的设计
此模块包含了三个子模块,对应图书的删除,查询,修改 模块;
设计一个表格用来显示,查询所反馈的结果,在跳转到这一界面时,表格将数据中的数据初始化到表格中,方便用户查看,同时添加了表格点击事件,点击表格中的数据,对应的显示到文本框中,便于修改,和删除,同时也可以通过输入图书编号的方式进行删除,对于编号不存在的情况,给用户反馈一个信息;
查询代码核心实现

StringBuffer sb = new StringBuffer("select  *  from  t_book ");
		if (InputUtil.isNotempty(book.getBookName())) {
			sb.append(" and bookName like '%" + book.getBookName() + "%'");}
		if (InputUtil.isNotempty(book.getAuthor())) {
			sb.append(" and author like '%" + book.getAuthor() + "%'");}PreparedStatement ps = con.prepareStatement(sb.toString().replaceFirst("and", "where"));

使用sql语句拼接,实现表格数据的初始化,通过判断,当查询文本框内存在字符串时,实现sql语句的模糊查询,从而实现查询功能;
(3)读者系统模块设计
读者可以根据需求查询自己所要查询的书籍数据,并进行借阅查询,查询自己借阅的书籍;

String pressTime = this.pressTimeTxt.getText();
		Connection con=null;
		try {
			con = JdbcUtil.getConnection();
			Books books = new Books(idBook,bookType,bookName,author,press,pressTime);
			 BookOper.updata1(con,books);
			 BookOper.delecte(con,idBook);
		}catch(Exception e1) {
			e1.printStackTrace();
		}finally {
			JdbcUtil.closeResource(null, con);
		}
		JOptionPane.showMessageDialog(null, "借阅成功");
	}
con = JdbcUtil.getConnection();
					Books books = new Books(idBook,bookType,bookName,author,press,pressTime);
					 BookOper.updata(con,books);
					 BookOper.delecte1(con,idBook);
				}catch(Exception e1) {
					e1.printStackTrace();
				}finally {
					JdbcUtil.closeResource(null, con);
				}
				JOptionPane.showMessageDialog(null, "图书归还成功");

第四章 程序测试及问题

测试项目主要针对本小组开发的图书馆管理系统进行系统测试,主要包括功能测试、界面测试
登录测试:考虑用户账号用户名是否存在,输入不匹配字符,为空,所出现的情况
在这里插入图片描述

图书管理(增删查改)功能测试
图书添加 考虑文本内容为空,编号重复
在这里插入图片描述

查、改、删:考虑重复删除问题,表格内容与文本框内容对应

图书借阅,归还测试考虑重复借阅,归还,查询为系统内图书,已经借阅的图书不再显示,
在这里插入图片描述
在这个程序中所出现过的问题,数据库连接问题,sql语句问题,图形界面事件处理问题
由于开发时间有限,该程序系统还存在很多的缺陷,只是对单一的表单数据进行操作,设计模块没有采用继承接口的方式,程序复用性较低,功能方面没达到一定的系统性,在之后作进一步的完善;

结 论

图书馆管理信息系统到此就制作完成了。通过这次程序设计,使我受到了一次用专业知识、专业技能分析和解决问题的全面系统的锻炼。使我在综合知识的选用方面,在应用软件开发的基本思想、方法方面,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步。为日后成为合格的应用型人才打下良好的基础。在团队合作下,基本上完成了设计任务,在软件的设计方面也有了一定的提高,熟练掌握了Java语言运用和编程技巧,为今后的学习打下了专业基础。在这次的程序设计中,让我们深深地体现到进行软件开发不是一件简单的事情,它需要设计者具有专业知识、缜密的思维、严谨的工作态度以及较高的分析问题、解决问题的能力,而我们在很多方面还有欠缺。希望在今后的学习中可以弥补这些缺陷,逐步完善我们的能力与专业知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值