分享
分销 收藏 举报 申诉 / 18
播放页_导航下方通栏广告

类型ajva课程设计报告javadao模式设计.doc

  • 上传人:w****g
  • 文档编号:2492330
  • 上传时间:2024-05-30
  • 格式:DOC
  • 页数:18
  • 大小:136.92KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ajva 课程设计 报告 javadao 模式 设计
    资源描述:
    天津工业大学 面向对象程序设计课程设计报告 题目:Java DAO 模式设计 学 号 1411640305 姓 名 黄世增 班 级 计算机1403 指导教师 2016年 6月 29日 摘 要 自1946年第一台计算机问世以来,计算机产业的飞速发展已远远超出人们对它的预料,在某些生产线上,甚至一秒钟就能生产出一台微型计算机,产量猛增,价格低廉,这就使得它的应用范围迅速扩展。如今,计算机已深入到人类社会的各个领域。各种应用程序不断地被开发应用,随之程序设计语言也不断发展完善,Java便是这程序语言世界里的一朵奇葩,如今甚为流行。与C++语言相比,Java是一种完全面向对象的语言,它吸取了C++语言的语句结构,去掉了指针、多继承、运算符重载等这些降低安全性、低可靠性的语言元素,并实现了自动回收垃圾的功能,从而使得Java语言更具有可移植性、鲁棒性、安全性、与环境无关性等特点,赢得了广大软件开发者的青睐。 今天,作为计算机科学与技术专业的学生,更应该了解Java语言的语法规范,理解Java语言程序设计的基本特点,掌握利用Java语言编写程序的基本技巧,学会利用Java开发环境调试程序。为了更进一步将所学知识与实际结合起来,我参加了本次课程设计。本课程设计是《面向对象程序设计》的后续实践课程,以Java语言为例逐步设计开发一个基于DAO模式的信息管理系统。课程采用循序渐进方式,从设计简单的Java类开始,逐步增加功能、通过使用设计模式对代码进行重构,分阶段完成3个里程碑版本:基于内存中集合对象的信息管理系统、基于文件的信息管理系统和基于数据库的信息管理系统。通过这些针对性练习使学生充分理解面向对象程序设计的思想及其应用方式。 关键词:Java;DAO;信息管理系统;数据库。 目 录 第一章 课程设计目的……………………………………………1 第二章 需求分析…………………………………………………1 2.1功能需求……………………………………………………………………1 2.2系统的开发运行环境………………………………………………………1 第三章 总体设计…………………………………………………1 3.1分层设计……………………………………………………………………1 3.2 DAO组成……………………………………………………………………2 第四章 详细设计…………………………………………………2 4.1数据库连接类………………………………………………………………2 4.2开发简单Java类……………………………………………………………4 4.3数据开发层:DAO层………………………………………………………4 4.4定义数据层实现类:StudentDAOImpl……………………………………5 4.5建立数据层工厂类…………………………………………………………8 4.6业务层实现类………………………………………………………………8 4.7测试类Test………………………………………………………………9 第五章 调试与测试………………………………………………9 5.1运行结果…………………………………………………………………9 5.2遇到的问题………………………………………………………………12 第六章 课程设计小结…………………………………………12 参考文献……………………………………………………………13 天津工业大学14级专业课程设计 第一章 课程设计目的 1、进一步熟悉Java开发环境,熟悉用Java完成一个应用程序的设计过程,掌握有关编辑、调试和整合程序的方法和技巧。 2、通过此设计,了解Java语言的特点;熟悉Java程序的编写;体会Java语言在问题求解中的特点。 3、总结学习Java语言的心得和体会,并对Java课程设置提出自己的意见和建议。 第二章 需求分析 2.1 功能需求 在Java程序中,经常需要把数据持久化,也需要获取持久化的数据,但是在进行数据持久化的过程中面临诸多问题(如:数据源不同、存储类型不同、供应商不同、访问方式不同等等),请问如何能以统一的接口进行数据持久化的操作?此时就需要用到DAO模式。 2.2 系统的开发运行环境 本系统开发平台:Java 本系统集成开发环境:Eclipse 本系统运行环境:Windows 10 本系统用的数据库:SQL Server 2014 第三章 总体设计 3.1 分层设计 在软件开发过程之中一定要存在有一个程序的层次概念,每一个程序层次都要完成某些具体的操作,而在一般情况下,分层的原则:不超过三层的原则,而常见的分层模式如下: 图3-1 分层模式图 本课程设计专注于业务层与数据层。 一个业务层可能需要调用多个数据层,而数据层所提供的都是数据库的原子性操作(INSERT、UPDATE、DELETE、SELECT)。那么就可以给出概念: ·数据层(数据访问层、持久层),一般会使用“Data Access Object”表示,简称DAO,在DAO之中提供的是一系列的数据库操作标准(接口); ·业务层(服务层),一般会使用“Service”表示,由于业务层最终也是要给控制层进行调用 (今天给客户直接调用)、所以业务层也需要由一个自己的操作标准,而一个业务层就需要调用多个数据层。 3.2 DAO组成 在整个DAO的设计中实际上都是以接口为操作标准的,即:客户端依靠DAO实现的接口进行操作,而服务端要将接口进行的具体的实现,DAO由以下几个部分组成: ·DatabaseConnect:专门负责数据库的打开与关闭操作的类; ·VO:主要由属性、setter、getter方法组成,VO类中的属性与表中的字段相对应,每一个VO类的对象都表示表中的每一条记录; ·DAO:主要定义操作的接口,定义一系列数据库的原子性操作,例如:增加、显示、修改、删除、按ID查询等; ·Impl:DAO接口的真实实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭; ·Factory:工厂类,通过工厂类取得一个DAO的实例化对象; ·Operate:业务层实现类。 第四章 详细设计 4.1 数据库连接类 在整个JDBC操作过程之中,数据库只有打开后才可以进行一系列的操作,而后数据库的连接有必须关闭。那么为了方便控制,可以直接将数据库的打开和关闭封装在一个类之中。 数据库的连接类保存包为“cn.edu.tjpu.cs.infosystem.dbc”,而且数据库的连接只针对SQL Server定义。 public class DatabaseConnection { private Connection conn;//声明Connection对象 public DatabaseConnection(){ try{ //加载数据库驱动类 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); }catch(ClassNotFoundException 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(){ return this.conn; } public void close(){ if(this.conn != 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类的最主要的设计思想来源于数据表,所以一定要和数据表的结构映射上; ·简单Java类的名称要与数据表的名称保持一致,注意大小写,例如:student表,类:Student; ·为了方便程序扩展,所有的简单Java类必须实现java.io.Serializable接口; ·类之中的属性必须使用private封装,封装后的属性一定要编写setter、getter方法; ·类之中一定要提供有无参构造方法; ·类之中不允许使用基本数据类型,所有的基本类型全部替换为包装类; ·类之中不允许出现任何的输出语句,所有的输出必须交给调用处执行; ·类可以有选择性的覆写Object类的:equals()、hashCode()、toString()。 简单Java类要求保存在cn.edu.tjpu.cs.infosystem.vo包中。 4.3 开发数据层:DAO层 数据层又称为持久层,指的是进行持久化数据操作的。持久层属于DAO层,所以在进行开发的时候首先要开发出操作的标准,而后进行子类的实现。 因为持久层最终要交给业务层迚行调用,所以持久层必须有一个自己的操作接口,用于定义标准,但是此接口的命名是有要求的,如果当前操作的是Student表,那么这个接口应该命名为StudentDAO,但是为了区分接口还有类,所以现在要求在接口定义前增加一个字母I,所以Student表的持久层标准名称:IStudentDAO,而且此接口要保存在cn.edu.tjpu.cs.infosystem.dao下(因学生和工人的操作是一样的,所以这里及后面的部分只讨论学生的情况)。 public interface IStudentDAO { public boolean doCreate(Student vo) throws Exception; public boolean doUpdate(Student vo) throws Exception; public boolean doRemove(Integer id) throws Exception; public Student findById(Integer id) throws Exception; public List findAll() throws Exception; public List 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子包之中,而且名称后面一定要加上Impl。但是对于实现类,现在采用如下的方式编写。注意:一个业务层会调用多个数据层操作,那么可以将数据库的连接和关闭交给业务层处理,DAO层只完成标准的JDBC操作,而且每一个方法都只完成一个基本的原子性操作。 4.4.1 创建 public boolean doCreate(Student vo) throws Exception{ String sql = "insert into student(id,name,age,score) values(?,?,?,?)"; pstmt = conn.prepareStatement(sql);//创建PrepareStatement 接口对象 pstmt.setInt(1, vo.getId()); pstmt.setString(2, vo.getName()); pstmt.setInt(3, vo.getAge()); pstmt.setFloat(4, vo.getScore()); int len = pstmt.executeUpdate();//执行SQL return true; } 4.4.2 更新 public boolean doUpdate(Student vo) throws Exception{ String sql = "update student set name=?,age=?,score=? where id = ?"; pstmt = 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) return true; else return false; } 4.4.3 删除 public boolean doRemove(Integer 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) return true; else return false; } 4.4.4 按ID查询 public Student findById(Integer id) throws Exception{ String 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.getFloat("score")); return stu; } else return null; } 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("age"), res.getFloat("score"))); } return s; } } 4.5 建立数据层工厂类 最终数据层是要交给业务层调用的,而业务层为了和数据层之间不产生耦合,所以不允许直接使用子类为数据层接口实例化,必须通过工厂类来完成,工厂应该保存在cn.edu.tjpu.cs.infosystem.factory包下。 public class DAOFactory { public static IStudentDAO getIStudentDAOInstance(Connection conn){ return new StudentDAOImpl(conn); } public static IWorkerDAO getIWorkerDAOInstance(Connection conn){ return new WorkerDAOImpl(conn); } } 4.6 业务层实现类 如果要定义业务层实现类请一定要记住这个类要有两个功能:打开和关闭数据库(不管是否出异常,数据库都要关闭)、调用数据层方法。 4.6.1 定义IPersonOperate接口 public interface IPersonOperate { public boolean add(Person vo)throws Exception; public boolean delete(int id)throws Exception; public boolean update(Person vo)throws Exception; public List list()throws Exception; public Person get(int id)throws Exception;// public List find(String name)throws Exception; } 4.6.2 定义StudentOperate实现类 public class StudentOperate implements IPersonOperate{ private DatabaseConnection dbc = new DatabaseConnection(); public boolean 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);//增加 } return false; }catch(Exception e){ throw e; }finally{ this.dbc.close(); } } } 4.7 测试类Test 在测试类中定义一个StudentOperate变量stuop,调用StudentOperate实现类中的方法实现各个功能。 第五章 调试与测试 5.1 运行结果 图5-1 添加和显示功能 图5-2 按ID查询功能 图5-3 修改功能 图5-4 删除功能 5.2 遇到的问题 写完程序后调试,发现显示和查询的功能不行,显示只能显示刚添加的信息,以前添加的信息显示不出来,而查询则什么信息也没有。我检查了一会儿,觉得可能是HashMap集合有问题,便将它换成了List,但还是不行,在机房检查了很久还是没检查出来,故等到老师检查了我还没完成。我拿到了宿舍,前前后后检查了一遍,发现list()方法和get()方法返回的是list集合对象和student对象,我没将它们赋予一个对象,就直接写在程序中,导致查询的时候没结果,所以最后改进了就可以了。 第六章 课程设计小结 通过这次的课程设计,我对这个学期所学的高级JAVA语言程序设计有了进一步从理论到实践的升华,将自己平时所学到的知识应用到了实践中,还有通过查询了很多的相关知识来充实自己,也使自己的课程设计能够做的比较好。 参考文献 [1] 明日科技.Java从入门到精通(第3版).北京:清华大学出版社,2012. 目 录 第一章 概 论 1 1.1项目名称 1 1.2项目地点 1 1.3区域特点 1 1.4建设规模 1 1.5可行性研究范围 2 1.6项目估算总投资额 3 第二章 项目市场分析 3 2.1####县经济发展趋势分析 3 2.2####县房地产发展概况 4 2.3区域市场分析 10 2.4项目利弊分析 11 第三章 项目定位及销售预测 12 3.1项目定位 12 3.2销售情况预测 14 3.3销售价格预测 14 第四章 项目的工程技术方案 15 4.1总平面及建筑方案 15 4.2结构 16 4.3供配电工程 16 4.4给排水工程 16 4.5人防 17 4.6弱电工程 17 4.7主要设备设施 17 4.8交通与停车 17 4.9环境保护 17 第五章 项目管理与建设进度计划 19 5.1项目运作模式 19 5.2招投标管理 19 5.3工程监理 19 5.4物业管理 19 5.5建设进度计划 19 5.6销售计划 20 第六章 项目营销和招商方案 21 6.1销售、租赁比例 21 6.2运营策略 21 6.3招商策略 22 第七章 投资估算和资金筹措 25 7.1投资估算 25 7.2资金筹措 27 7.3资金平衡计划:见下表 28 第八章 效益分析 29 8.1销售收入、销售税金及附加估算 29 8.2经营成本及费用估算 30 第九章 项目风险及防范措施 31 9.1市场风险 31 9.2筹资风险 31 9.3销售不确定性风险 31 9.4项目开发的风险 32 9.5成本控制的风险 32 第十章 结论及建议 33 10.1结论 33 10.2建议 33 - 15 -
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:ajva课程设计报告javadao模式设计.doc
    链接地址:https://www.zixin.com.cn/doc/2492330.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork