Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第1页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第2页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第3页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第4页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计与系统开发,第11章 项目编码实现,2,驱动任务一,创建出合理的项目分层结构,3,目标及知识点,4,基本概念,低耦合:是指一个软件结构内不同模块之间相互关联的程度要低,也就是要尽量保持模块间的独立性。 高内聚:在同一个模块内各个元素彼此结合的紧密程度要高,元素具有高度相关的职责,除了这些职责内的任务,没有其它过多的工作,那么该元素就具有高内聚性,这里的元素可以是功能、对象(类)。,5,“低耦合、高内聚”的项目结构,项目名称,通用工具包,业务处理包,业务控制包,6,任务实现,按照图创建出工程atm_cs,并添加包结构,按照图结构和命名方式,创建出各个类,每个类写上注释,7,驱动任

2、务二,实现项目中数据库底层管理类(DatabaseManager),对数据库的基本操作进行封装。,8,目标及知识点,9,为什么写数据库底层管理类,在实际开发当中涉及到数据库操作的很多,因此我们在开发过程中一般将对数据库的基本操作方法封装到一个类中,这样可以增加代码的重用率,减少我们很多工作量和出错的机会 在这里我们将对数据库的常用操作方法封装如下:,UML类图中 减号表示私有 private; 加号表示公有public。,10,任务实现第一步,按照类图,给DatabaseManager类添加连接数据库和获得数据库查询结果的三个属性,其属性为Connection、Statement、Result

3、Set的对象。,private Connection conn=null; /数据库连接对象 private Statement st=null;/ 执行sql语句的对象 public ResultSet rs=null;/ 存放查询结果的对象,11,任务实现第二步,创建一个获得数据库连接的方法,将类属性中的Connection对象赋值,private void getConnection() final String DRIVERNAME = com.mysql.jdbc.Driver; final String URL = jdbc:mysql:/localhost/atm?charact

4、erEncoding=utf-8; final String LOGIN = root;/数据库管理员用户名 final String PASSWORD = ;/数据库密码 try Class.forName(DRIVERNAME); /加载驱动程序 DriverManager.getConnection(URL, LOGIN, PASSWORD); catch(Exception e) System.out.println(执行getConnection()方法出错:); e.printStackTrace(); ,12,任务实现第三步,创建类的构造方法,调用步骤2中创建的方法获得Conne

5、ction对象,并通过该对象获得Statement对象给类属性赋值。,public DatabaseManager() getConnection(); try st = conn.createStatement(); catch (SQLException e) e.printStackTrace(); ,13,任务实现第四步,完成数据库查询方法,将查询后的结果保存为类中的ResultSet对象属性,其参数为SQL语句字符串。,/* * 数据库查询 * param sql 传入的SQL语句 */ public void executeQuery(String sql) try r s=st.

6、executeQuery(sql);/执行SQL语句获得结果集 catch(Exception e) System.out.println(“执行executeQuery(String sql)方法出错”); e.printStackTrace();/打印出错误原因 ,14,任务实现第五步,完成对数据库的增删改操作的方法,其参数为SQL语句字符串,返回更改了数据库表的行数。,/* * 数据库增加/删除/修改 * param sql 传入的SQL语句 * return 0执行成功 */ public int executeUpdate(String sql) int ret=-1 try ret

7、=st.executeUpdate(sql);/执行SQL语句对数据表进行操作 catch(Exception e) System.out.println(执行executeUpdate(sql)方法出错:+sql); e.printStackTrace();/打印出错误原因 return ret; ,15,任务实现第五步,创建关闭数据库资源方法。,/* * 数据库关闭 */ public void close() try if (rs!=null) rs.close();/关闭结果集 if (st!=null) st.close();/关闭Statement对象 if (conn!=null

8、) conn.close();/关闭连接 catch(Exception e) System.out.println(执行close()方法出错:); e.printStackTrace(); ,16,课堂总结,17,驱动任务三,实现通用方法封装类(Tools),封装对键盘输入获取的方法,和将信息保存到一个特定文件中的方法(模拟打印凭条)。,18,目标及知识点,19,获取键盘输入过程示意图,20,读取字符,BufferedReader br = new BufferedReader(new InputStreamReader(System.in); 实现将BufferedReader对象与控制

9、台输入关联了起来,使得我们其后只关注BufferedReader对象中的方法。,21,【例11-1】,使用BufferedReader类的相关方法来读取控制台上输入的单个字符。,import java.io.*; /要用到输入输出的类,需要导入该包 class BRRead public static void main(String args ) throws IOException char c; /定义一个字符变量 /*产生缓冲输入流对象br*/ BufferedReader br=new BufferedReader(new InputStreamReader(System.in);

10、System.out.println(请输入); /*调用br对象的read( )方法从缓冲输入流中获得一个字符并把这个字符赋值给变量c*/ c = (char) br.read( );/读取一个字符 System.out.println(c); ,运行结果: 请输入 135abc 1,22,练习,学生实现11-1,23,读取字符串,要想读取输入的完整字符串,可以使用BufferedReader 对象的成员方法readLine( )。,24,【例子11-2】,从控制台中获得输入的字符串。,import java.io.*; class BRReadLines public static voi

11、d main(String args ) throws IOException /* 产生缓冲输入流对象br */ BufferedReader br=new BufferedReader(new InputStreamReader(System.in); String str; /定义一个字符串变量 System.out.println(请输入); str = br.readLine( );/调用br对象的readLine()方法从缓冲输入流中获得一行字符串 并赋值给变量str System.out.println(str); ,运行结果: 请输入 135abc 135abc,25,练习,学

12、生实现11-2,26,文件读取,文件读取与从控制台读取类似,其差别仅在于读取的对象不同,因此我们只需要将关联控制台转换为关联一个文件即可。,27,【例子10-3】,从文件读取数据,import java.io.*; public class FileInputTest public static void main(String args) throws IOException BufferedReader fin = null;/ 定义一个文件输入流类的对象fin String readString = ; try fin = new BufferedReader(new FileReade

13、r(“D:fileTest.txt”);/ 建立文 件流对象,与文件关联 while (readString = fin.readLine() != null) /按行读取文件内容, 每次读一行,循环读完为止 System.out.println(readString); catch (FileNotFoundException e) System.out.println(文件没有找到!); catch (IOException e) System.out.println(文件读取失败!); finally fin.close();/ 关闭文件流 ,fileTest.txt文件的内容如下:,运

14、行结果: 请输入 135abc 135abc,28,文件写入,文件的写入,使用文件输出流(FileOutputStream)的成员方法 write ( )实现。,29,【例子10-4】,将信息保存到一个特定文件中,import java.io.*; public class FileOutputTest public static void main(String args) throws IOException FileOutputStream fout; / 定义一个文件输出流类的对象fout / 创建文件输出流对象fout,同时打开了文件*.txt,若文件不存在将新建一个 fout =

15、new FileOutputStream(D:fileTest.txt);/保存信息到d盘的fileTest.txt文件中 / 保存用户信息到文件 try /要保存到文件中的用户信息 String userInfo=“客户姓名:张三rn客户帐号:123456789rn取款金额: 1500元rn账户余额:300元rn; fout.write(userInfo.getBytes();/注意,write方法的参数是字节数组, 因此调用String对象的getBytes方法通过字符串生成字节数组 catch (IOException e) System.out.println(文件保存失败); / 文

16、件关闭 fout.close();/ 关闭输出流对象,同时自动关闭和保存文件 ,在D盘生成一个fileTest.txt文件 内容如下:,30,任务实现,引入java.util包中StringTokenizer类,使用BufferedReader对象的read()方法来读取控制台上输入的单个字符,使用BufferedReader对象的readLine( ) 方法来读取控制台上输入的字符串;,使用BufferedReader对象的readLine()方法来读取文件,使用FileOutputStream对象的write ( )方法把信息写入到特定文件中去,31,驱动任务四,完成业务层中Login类,

17、实现登录功能,32,目标及知识点,33,登录业务流程分析,业务流程: 1.用户输入用户名和密码 2.系统根据用户输入的用户名和密码,到后台数据库进行查询,如果存在这样的记录,表示登录成功。 3.如果用户输入的用户名和密码不匹配,那么就提示用户名或密码不正确,然后返回登录界面,让用户重新输入用户名和密码。,34,登录活动图,35,登录模块详细设计,36,任务实现,根据时序图创建出对应的三个类,完成Login类中的doLogin()方法,在AutoTerminalMachine中调用doLogin()方法并判断登录是否成功,37,驱动任务五,完成业务层中BalanceQuery类,实现余额查询功能

18、。,38,目标及知识点,39,余额查询流程分析,业务流程: 从数据库中获取当前登录用户的余额信息,并显示出账户存款余额,40,余额查询活动图,41,余额查询模块详细设计,42,任务实现,根据时序图创建出对应的类与方法,完成BalanceQuery类中的doBalanceQuery()方法,在AutoTerminalMachine中调用doBalanceQuery()方法,43,驱动任务六,完成业务层中Withdrawal类,实现取款功能,44,目标及知识点,45,取款流程分析,业务流程: 选择查询余额菜单项,输入取款金额。 验证取款金额的合法性,验证通过,提示取款成功和账户余额;否则提示余额不足,46

温馨提示

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

最新文档

评论

0/150

提交评论