《【精品】Java面向对象程序设计与系统开发第11章 项目编码实现精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】Java面向对象程序设计与系统开发第11章 项目编码实现精品ppt课件.ppt(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java面向对象程序设计与系统开发第11章 项目编码实现驱动任任务务一一 创建出合理的项目分层结构2目目标及知及知识点点高内聚低耦合的项目结构设计高内聚低耦合的项目结构设计 1 13基本概念基本概念v低耦合低耦合:是指一个软件结构内不同模块之间相互关联的程度要低,也就是要尽量保持模块间的独立性。v高内聚:高内聚:在同一个模块内各个元素彼此结合的紧密程度要高,元素具有高度相关的职责,除了这些职责内的任务,没有其它过多的工作,那么该元素就具有高内聚性,这里的元素可以是功能、对象(类)。4“低耦合、高内聚低耦合、高内聚”的的项目目结构构项目名称项目名称 通用工具包通用工具包 业务处理包业务处理包 业
2、务控制包业务控制包 5目目标及知及知识点点JDBC底底层类的的实现1 1加深面向对象封装的理解加深面向对象封装的理解 28为什么写什么写数据数据库底底层管理管理类v在实际开发当中涉及到数据库操作的很多,因此我们在开发过程中一般将对数据库的基本操作方法封装到一个类中,这样可以增加代码的重用率,减少我们很多工作量和出错的机会v在这里我们将对数据库的常用操作方法封装如下:UML类图中中 减号表示私有减号表示私有 private;加号表示公有加号表示公有public。9任任务实现第一步第一步v按照类图,给DatabaseManager类添加连接数据库和获得数据库查询结果的三个属性,其属性为Connec
3、tion、Statement、ResultSet的对象。private Connection conn=null;/数据库连接对象数据库连接对象private Statement st=null;/执行执行sql语句的对象语句的对象public ResultSet rs=null;/存放查询结果的对象存放查询结果的对象10任任务实现第二步第二步v创建一个获得数据库连接的方法,将类属性中的Connection对象赋值 private void getConnection()final String DRIVERNAME=com.mysql.jdbc.Driver;final String URL
4、=jdbc:mysql:/localhost/atm?characterEncoding=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();1
5、1任任务实现第三步第三步v创建类的构造方法,调用步骤2中创建的方法获得Connection对象,并通过该对象获得Statement对象给类属性赋值。public DatabaseManager()getConnection();try st=conn.createStatement();catch(SQLException e)e.printStackTrace();12任任务实现第四步第四步v完成数据库查询方法,将查询后的结果保存为类中的ResultSet对象属性,其参数为SQL语句字符串。/*数据数据库查询*param sql 传入的入的SQL语句句*/public void execut
6、eQuery(String sql)try r s=st.executeQuery(sql);/执行行SQL语句句获得得结果集果集 catch(Exception e)System.out.println(“执行行executeQuery(String sql)方法出方法出错”);e.printStackTrace();/打印出打印出错误原因原因13任任务实现第五步第五步v完成对数据库的增删改操作的方法,其参数为SQL语句字符串,返回更改了数据库表的行数。/*数据数据库增加增加/删除除/修改修改*param sql 传入的入的SQL语句句*return 0执行成功行成功*/public int
7、 executeUpdate(String sql)int ret=-1 tryret=st.executeUpdate(sql);/执行行SQL语句句对数据表数据表进行操作行操作 catch(Exception e)System.out.println(执行行executeUpdate(sql)方法出方法出错:+sql);e.printStackTrace();/打印出打印出错误原因原因 return ret;14任任务实现第五步第五步v创建关闭数据库资源方法。/*数据数据库关关闭*/public void close()try if(rs!=null)rs.close();/关关闭结果集果
8、集if(st!=null)st.close();/关关闭Statement对象象if(conn!=null)conn.close();/关关闭连接接catch(Exception e)System.out.println(执行行close()方法出方法出错:);e.printStackTrace();15课堂堂总结 16驱动任任务务三三 实现通用方法封装类(Tools),封装对键盘输入获取的方法,和将信息保存到一个特定文件中的方法(模拟打印凭条)。17目目标及知及知识点点获取控制台信息,实现人机交互获取控制台信息,实现人机交互 2对文件的读写操作对文件的读写操作 3BufferedReader
9、类的使用的使用 1 118获取取键盘输入入过程示意程示意图 19读取字符取字符 vBufferedReader br=new BufferedReader(new InputStreamReader(System.in);实现将BufferedReader对象与控制台输入关联了起来,使得我们其后只关注BufferedReader对象中的方法。20【例例11-1】v使用BufferedReader类的相关方法来读取控制台上输入的单个字符。import java.io.*;/要用到要用到输入入输出的出的类,需要,需要导入入该包包class BRRead public static void mai
10、n(String args)throws IOException char c;/定定义一个字符一个字符变量量/*产生生缓冲冲输入流入流对象象br*/BufferedReader br=new BufferedReader(new InputStreamReader(System.in);System.out.println(请输入入);/*调用用br对象的象的read()方法从方法从缓冲冲输入流中入流中获得一个字符并把得一个字符并把这个字符个字符赋值给变量量c*/c=(char)br.read();/读取一个字符取一个字符 System.out.println(c);运行结果:运行结果:请输
11、入请输入135abc121练习v学生实现11-122读取字符串取字符串 v要想读取输入的完整字符串,可以使用BufferedReader 对象的成员方法readLine()。23【例子例子11-2】v从控制台中获得输入的字符串。import java.io.*;class BRReadLines public static void main(String args)throws IOException /*产生生缓冲冲输入流入流对象象br*/BufferedReader br=new BufferedReader(new InputStreamReader(System.in);String
12、 str;/定定义一个字符串一个字符串变量量 System.out.println(请输入入);str=br.readLine();/调用用br对象的象的readLine()方法从方法从缓冲冲输入流中入流中获得一行字符串得一行字符串 并并赋值给变量量str System.out.println(str);运行结果:运行结果:请输入请输入135abc135abc24练习v学生实现11-225 文件读取v文件读取与从控制台读取类似,其差别仅在于读取的对象不同,因此我们只需要将关联控制台转换为关联一个文件即可。26【例子例子10-3】v从文件读取数据import java.io.*;public c
13、lass FileInputTest public static void main(String args)throws IOException BufferedReader fin=null;/定定义一个文件一个文件输入流入流类的的对象象finString readString=;try fin=new BufferedReader(new FileReader(“D:fileTest.txt”);/建立文建立文 件流件流对象,与文件关象,与文件关联while(readString=fin.readLine()!=null)/按行按行读取文件内容,取文件内容,每次每次读一行,循一行,循环读
14、完完为止止 System.out.println(readString);catch(FileNotFoundException e)System.out.println(文件没有找到!文件没有找到!);catch(IOException e)System.out.println(文件文件读取失取失败!);finally fin.close();/关关闭文件流文件流 fileTest.txt文件的内容如下:文件的内容如下:运行结果:运行结果:请输入请输入135abc135abc27文件写入v文件的写入,使用文件输出流(FileOutputStream)的成员方法 write()实现。28【例子
15、例子10-4】v将信息保存到一个特定文件中import java.io.*;public class FileOutputTest public static void main(String args)throws IOException FileOutputStream fout;/定定义一个文件一个文件输出流出流类的的对象象fout /创建文件建文件输出流出流对象象fout,同同时打开了文件打开了文件*.txt,若文件不存在将新建一个若文件不存在将新建一个 fout=new FileOutputStream(D:fileTest.txt);/保存信息到保存信息到d盘的的fileTest.
16、txt文件中文件中 /保存用保存用户信息到文件信息到文件 try /要保存到文件中的用要保存到文件中的用户信息信息 String userInfo=“客客户姓名:姓名:张三三rn客客户帐号:号:123456789rn取款金取款金额:1500元元rn账户余余额:300元元rn;fout.write(userInfo.getBytes();/注意,注意,write方法的参数是字方法的参数是字节数数组,因此因此调用用String对象的象的getBytes方法通方法通过字符串生成字字符串生成字节数数组 catch(IOException e)System.out.println(文件保存失文件保存失败
17、);/文件关文件关闭 fout.close();/关关闭输出流出流对象象,同同时自自动关关闭和保存文件和保存文件 在在D盘生成一个盘生成一个fileTest.txt文件文件 内容如下:内容如下:29任任务实现123引入引入java.util包中包中StringTokenizer类类 使用使用BufferedReader对象的对象的read()方法方法来读取控制台上输入的单个字符来读取控制台上输入的单个字符 使用使用BufferedReader对象的对象的readLine()方法来读取控制台上输入的字符串;方法来读取控制台上输入的字符串;45使用使用BufferedReader对象的对象的rea
18、dLine()方法来读取文件方法来读取文件 使用使用FileOutputStream对象的象的write()方方法把信息写入到特定文件中去法把信息写入到特定文件中去30驱动任任务务四四完成业务层中Login类,实现登录功能31目目标及知及知识点点阅读活动图与时序图阅读活动图与时序图 2根据业务流程完成具体开发任务根据业务流程完成具体开发任务 1 132 登登录业务流程分析流程分析 v业务流程:流程:1.用户输入用户名和密码2.系统根据用户输入的用户名和密码,到后台数据库进行查询,如果存在这样的记录,表示登录成功。3.如果用户输入的用户名和密码不匹配,那么就提示用户名或密码不正确,然后返回登录界
19、面,让用户重新输入用户名和密码。33登登录活活动图 34登登录模模块详细设计 35任任务实现123根据时序图创建出对应的三个类根据时序图创建出对应的三个类 完成完成Login类中的类中的doLogin()方法()方法 在在AutoTerminalMachine中调用中调用doLogin()方法并判断登录是否成功()方法并判断登录是否成功 36驱动任任务务五五完成业务层中BalanceQuery类,实现余额查询功能。37目目标及知及知识点点根据活动图和实训图进行开发根据活动图和实训图进行开发1 138余余额查询流程分析流程分析 v业务流程:流程:从数据库中获取当前登录用户的余额信息,并显示出账户
20、存款余额 39余余额查询活活动图 40余余额查询模模块详细设计 41任任务实现123根据时序图创建出对应的类与方法根据时序图创建出对应的类与方法 完成完成BalanceQuery类中的类中的doBalanceQuery()方法()方法 在在AutoTerminalMachine中调用中调用doBalanceQuery()方法()方法 42驱动任任务务六六完成业务层中Withdrawal类,实现取款功能 43目目标及知及知识点点根据活动图和实训图进行开发根据活动图和实训图进行开发1 144取款流程分析取款流程分析 v业务流程:流程:选择查询余额菜单项,输入取款金额。验证取款金额的合法性,验证通过
21、,提示取款成功和账户余额;否则提示余额不足45取款活取款活动图 46取款模取款模块详细设计 47任任务实现123根据时序图创建出对应的类与方法根据时序图创建出对应的类与方法 完成完成Withdraw类中的类中的doWithdraw()()方法方法 在在AutoTerminalMachine中调用中调用doWithdraw()方法()方法 48驱动任任务务八八完成业务层中TransferAccounts类,实现转账功能 49目目标及知及知识点点根据设计完成开发根据设计完成开发 1 150转帐流程分析流程分析 v业务流程:流程:用户选择转账服务,输入对方账户的账号和金额。从数据库读取用户的存款信息
22、,验证取款金额的合法性,如果验证没有通过提示账户的余额不足。如果验证通过,系统通过数据库存储的账户信息验证用户输入的账户是不是存在,如果不存在,提示对方账号不存在,请确认输入信息后再试。如果对方账户存在,更新数据库信息,然后提示转账成功 51转帐活活动图 52转帐模模块详细设计 53任任务实现v1、根据时序图创建出对应的类与方法;v2、完成TransferAccounts类中的judge(),该方法判断余额是否够转出;isAccountExist(),该方法判断要转入的账号是否存在;updateAccount(),该方法实现将金额从自身账户中扣除并给对方账户增加金额;doTransferAccounts,该方法通过调用以上三个方法实现完整的转账功能;v3、在AutoTerminalMachine中调用doTransferAccounts()方法。54课堂堂总结55