ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:111.33KB ,
资源ID:7584324      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7584324.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java课程设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java课程设计报告.docx

1、java课程设计报告天津工业大学面向对象程序设计课程设计报告题目:Java DAO 模式设计源代码:学 号1411640305姓 名 黄世增班 级计算机1403 指导教师2016年 6月 29日摘 要 自1946年第一台计算机问世以来,计算机产业的飞速发展已远远超出人们对它的预料,在某些生产线上,甚至一秒钟就能生产出一台微型计算机,产量猛增,价格低廉,这就使得它的应用范围迅速扩展。如今,计算机已深入到人类社会的各个领域。各种应用程序不断地被开发应用,随之程序设计语言也不断发展完善,Java便是这程序语言世界里的一朵奇葩,如今甚为流行。与C+语言相比,Java是一种完全面向对象的语言,它吸取了C

2、+语言的语句结构,去掉了指针、多继承、运算符重载等这些降低安全性、低可靠性的语言元素,并实现了自动回收垃圾的功能,从而使得Java语言更具有可移植性、鲁棒性、安全性、与环境无关性等特点,赢得了广大软件开发者的青睐。今天,作为计算机科学与技术专业的学生,更应该了解Java语言的语法规范,理解Java语言程序设计的基本特点,掌握利用Java语言编写程序的基本技巧,学会利用Java开发环境调试程序。为了更进一步将所学知识与实际结合起来,我参加了本次课程设计。本课程设计是面向对象程序设计的后续实践课程,以Java语言为例逐步设计开发一个基于DAO模式的信息管理系统。课程采用循序渐进方式,从设计简单的J

3、ava类开始,逐步增加功能、通过使用设计模式对代码进行重构,分阶段完成3个里程碑版本:基于内存中集合对象的信息管理系统、基于文件的信息管理系统和基于数据库的信息管理系统。通过这些针对性练习使学生充分理解面向对象程序设计的思想及其应用方式。关键词:Java;DAO;信息管理系统;数据库。目录第一章 课程设计目的1第二章 需求分析12.1功能需求12.2系统的开发运行环境1第三章 总体设计13.1分层设计13.2 DAO组成2第4章 详细设计2 4.1数据库连接类2 4.2开发简单Java类4 4.3数据开发层:DAO层4 4.4定义数据层实现类:StudentDAOImpl5 4.5建立数据层工

4、厂类8 4.6业务层实现类8 4.7测试类Test9第五章 调试与测试9 5.1运行结果9 5.2遇到的问题12第六章 课程设计小结12参考文献13第1章 课程设计目的 1、进一步熟悉Java开发环境,熟悉用Java完成一个应用程序的设计过程,掌握有关编辑、调试和整合程序的方法和技巧。 2、通过此设计,了解Java语言的特点;熟悉Java程序的编写;体会Java语言在问题求解中的特点。3、总结学习Java语言的心得和体会,并对Java课程设置提出自己的意见和建议。第2章 需求分析2.1 功能需求 在Java程序中,经常需要把数据持久化,也需要获取持久化的数据,但是在进行数据持久化的过程中面临诸

5、多问题(如:数据源不同、存储类型不同、供应商不同、访问方式不同等等),请问如何能以统一的接口进行数据持久化的操作?此时就需要用到DAO模式。2.2 系统的开发运行环境 本系统开发平台:Java 本系统集成开发环境:Eclipse本系统运行环境:Windows 10本系统用的数据库:SQL Server 2014第3章 总体设计3.1 分层设计 在软件开发过程之中一定要存在有一个程序的层次概念,每一个程序层次都要完成某些具体的操作,而在一般情况下,分层的原则:不超过三层的原则,而常见的分层模式如下:图3-1 分层模式图 本课程设计专注于业务层与数据层。 一个业务层可能需要调用多个数据层,而数据层

6、所提供的都是数据库的原子性操作(INSERT、UPDATE、DELETE、SELECT)。那么就可以给出概念:数据层(数据访问层、持久层),一般会使用“Data Access Object”表示,简称DAO,在DAO之中提供的是一系列的数据库操作标准(接口);业务层(服务层),一般会使用“Service”表示,由于业务层最终也是要给控制层进行调用 (今天给客户直接调用)、所以业务层也需要由一个自己的操作标准,而一个业务层就需要调用多个数据层。3.2 DAO组成 在整个DAO的设计中实际上都是以接口为操作标准的,即:客户端依靠DAO实现的接口进行操作,而服务端要将接口进行的具体的实现,DAO由以

7、下几个部分组成:DatabaseConnect:专门负责数据库的打开与关闭操作的类;VO:主要由属性、setter、getter方法组成,VO类中的属性与表中的字段相对应,每一个VO类的对象都表示表中的每一条记录;DAO:主要定义操作的接口,定义一系列数据库的原子性操作,例如:增加、显示、修改、删除、按ID查询等;Impl:DAO接口的真实实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭;Factory:工厂类,通过工厂类取得一个DAO的实例化对象;Operate:业务层实现类。第4章 详细设计4.1 数据库连接类在整个JDBC操作过程之中,数据库只有打开后才可以进行一系列的操作,而

8、后数据库的连接有必须关闭。那么为了方便控制,可以直接将数据库的打开和关闭封装在一个类之中。数据库的连接类保存包为“cn.edu.tjpu.cs.infosystem.dbc”,而且数据库的连接只针对SQL Server定义。publicclass DatabaseConnection private Connection conn;/声明Connection对象 public DatabaseConnection() try /加载数据库驱动类 Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch(ClassNot

9、FoundException e) e.printStackTrace(); try /通过访问数据库的URL获取数据库连接对象 this.conn = DriverManager.getConnection(jdbc:sqlserver:/127.0.0.1:1433;Data baseName=infosystem,root,123456); catch(SQLException e) e.printStackTrace(); public Connection getConnection() returnthis.conn; publicvoid close() if(this.conn

10、 != null) try this.conn.close(); catch(SQLException e) e.printStackTrace(); 4.2开发简单Java类简单Java类指的就是累的结构比较单一,主要是由属性、setter/getter方法组成,简单Java类的主要功能是作为一种数据的载体进行存放,而日后对于简单Java类也会出现如下的名称:POJO(简单Java类)、VO(值对象)、TO(DTO,数据传输对象,主要用于分布式)、PO(持久化对象)。可是对于简单Java类的组成结构在开发之中也有了明确要求:简单Java类的最主要的设计思想来源于数据表,所以一定要和数据表的结

11、构映射上;简单Java类的名称要与数据表的名称保持一致,注意大小写,例如:student表,类:Student;为了方便程序扩展,所有的简单Java类必须实现java.io.Serializable接口;类之中的属性必须使用private封装,封装后的属性一定要编写setter、getter方法;类之中一定要提供有无参构造方法;类之中不允许使用基本数据类型,所有的基本类型全部替换为包装类;类之中不允许出现任何的输出语句,所有的输出必须交给调用处执行;类可以有选择性的覆写Object类的:equals()、hashCode()、toString()。简单Java类要求保存在cn.edu.tjpu

12、.cs.infosystem.vo包中。4.3 开发数据层:DAO层数据层又称为持久层,指的是进行持久化数据操作的。持久层属于DAO层,所以在进行开发的时候首先要开发出操作的标准,而后进行子类的实现。因为持久层最终要交给业务层迚行调用,所以持久层必须有一个自己的操作接口,用于定义标准,但是此接口的命名是有要求的,如果当前操作的是Student表,那么这个接口应该命名为StudentDAO,但是为了区分接口还有类,所以现在要求在接口定义前增加一个字母I,所以Student表的持久层标准名称:IStudentDAO,而且此接口要保存在cn.edu.tjpu.cs.infosystem.dao下(因

13、学生和工人的操作是一样的,所以这里及后面的部分只讨论学生的情况)。publicinterface IStudentDAO publicboolean doCreate(Student vo) throws Exception; publicboolean doUpdate(Student vo) throws Exception; publicboolean doRemove(Integer id) throws Exception; public Student findById(Integer id) throws Exception; publicList findAll() throw

14、s Exception; publicList findAll(String column,String keyWord,Integer currentPage,Integer lineSize) throws Exception; public Integer getAllCount(String column,String keyWord) throws Exception;4.4 定义数据层实现类:StudentDAOImpl 接口标准定义完成之后,下面就可以进行实现类的编写,编写的实现类要保存在cn.edu.tjpu.cs.infosystem.dao.impl子包之中,而且名称后面一

15、定要加上Impl。但是对于实现类,现在采用如下的方式编写。注意:一个业务层会调用多个数据层操作,那么可以将数据库的连接和关闭交给业务层处理,DAO层只完成标准的JDBC操作,而且每一个方法都只完成一个基本的原子性操作。4.4.1 创建publicboolean doCreate(Student vo) throws Exception String sql = insert into student(id,name,age,score) values(?,?,?,?); pstmt = conn.prepareStatement(sql);/创建PrepareStatement 接口对象 ps

16、tmt.setInt(1, vo.getId(); pstmt.setString(2, vo.getName(); pstmt.setInt(3, vo.getAge(); pstmt.setFloat(4, vo.getScore(); intlen = pstmt.executeUpdate();/执行SQL returntrue; 4.4.2 更新publicboolean doUpdate(Student vo) throws Exception String sql = update student set name=?,age=?,score=? where id = ?; ps

17、tmt = conn.prepareStatement(sql);/创建PrepareStatement 接口对象 pstmt.setInt(4, vo.getId(); pstmt.setString(1, vo.getName(); pstmt.setInt(2, vo.getAge(); pstmt.setFloat(3, vo.getScore(); int len = pstmt.executeUpdate();/执行SQL if(len != 0) returntrue; else returnfalse; 4.4.3 删除publicboolean doRemove(Intege

18、r id) throws Exception String sql = delete from student where id = ?; pstmt = conn.prepareStatement(sql);/创建PrepareStatement 接口对象 pstmt.setInt(1, id); int len = pstmt.executeUpdate();/执行SQL if(len != 0) returntrue; else returnfalse; 4.4.4 按ID查询public Student findById(Integer id) throws Exception Str

19、ing sql = select * from student where id =?; Student stu = new Student(); pstmt = conn.prepareStatement(sql);/创建PrepareStatement 接口对象 pstmt.setInt(1, id); res = pstmt.executeQuery(); if(res.next() stu.setId(res.getInt(1); stu.setName(res.getString(name); stu.setAge(res.getInt(age); stu.setScore(res.

20、getFloat(score); return stu; else returnnull; 4.4.5 查询全部 public List findAll() throws Exception String sql = select * from student; pstmt = conn.prepareStatement(sql);/创建PrepareStatement接口对象 res = pstmt.executeQuery(); while(res.next() s.add(new Student(res.getInt(id),res.getString(name),res.getInt(

21、age), res.getFloat(score); return s; 4.5 建立数据层工厂类最终数据层是要交给业务层调用的,而业务层为了和数据层之间不产生耦合,所以不允许直接使用子类为数据层接口实例化,必须通过工厂类来完成,工厂应该保存在cn.edu.tjpu.cs.infosystem.factory包下。publicclass DAOFactory publicstatic IStudentDAO getIStudentDAOInstance(Connection conn) returnnew StudentDAOImpl(conn); publicstatic IWorkerDA

22、O getIWorkerDAOInstance(Connection conn) returnnew WorkerDAOImpl(conn); 4.6 业务层实现类如果要定义业务层实现类请一定要记住这个类要有两个功能:打开和关闭数据库(不管是否出异常,数据库都要关闭)、调用数据层方法。4.6.1 定义IPersonOperate接口publicinterface IPersonOperate publicboolean add(Person vo)throws Exception; publicboolean delete(int id)throws Exception; publicbool

23、ean update(Person vo)throws Exception; publicList list()throws Exception; public Person get(int id)throws Exception;/ publicList find(String name)throws Exception;4.6.2 定义StudentOperate实现类publicclass StudentOperate implements IPersonOperate private DatabaseConnection dbc = new DatabaseConnection();

24、publicboolean add(Person vo)throws Exception try Connection conn = this.dbc.getConnection(); IStudentDAO dao = DAOFactory.getIStudentDAOInstance(conn); if(dao.findById(vo.getId() = null)/数据不存在 return dao.doCreate( (Student) vo);/增加 returnfalse; catch(Exception e) throw e; finally this.dbc.close(); 4

25、.7 测试类Test 在测试类中定义一个StudentOperate变量stuop,调用StudentOperate实现类中的方法实现各个功能。第5章 调试与测试5.1 运行结果图5-1 添加和显示功能图5-2 按ID查询功能图5-3 修改功能图5-4 删除功能5.2 遇到的问题写完程序后调试,发现显示和查询的功能不行,显示只能显示刚添加的信息,以前添加的信息显示不出来,而查询则什么信息也没有。我检查了一会儿,觉得可能是HashMap集合有问题,便将它换成了List,但还是不行,在机房检查了很久还是没检查出来,故等到老师检查了我还没完成。我拿到了宿舍,前前后后检查了一遍,发现list()方法和get()方法返回的是list集合对象和student对象,我没将它们赋予一个对象,就直接写在程序中,导致查询的时候没结果,所以最后改进了就可以了。第6章 课程设计小结通过这次的课程设计,我对这个学期所学的高级JAVA语言程序设计有了进一步从理论到实践的升华,将自己平时所学到的知识应用到了实践中,还有通过查询了很多的相关知识来充实自己,也使自己的课程设计能够做的比较好。参考文献1 明日科技.Java从入门到精通(第3版).北京:清华大学出版社,2012.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1