Java面向对象程序设计与系统开发第11章 项目编码实现.ppt

上传人:sccc 文档编号:6146063 上传时间:2023-09-29 格式:PPT 页数:55 大小:4.36MB
返回 下载 相关 举报
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第1页
第1页 / 共55页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第2页
第2页 / 共55页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第3页
第3页 / 共55页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第4页
第4页 / 共55页
Java面向对象程序设计与系统开发第11章 项目编码实现.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《Java面向对象程序设计与系统开发第11章 项目编码实现.ppt》由会员分享,可在线阅读,更多相关《Java面向对象程序设计与系统开发第11章 项目编码实现.ppt(55页珍藏版)》请在三一办公上搜索。

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

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

3、的对象。,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?characterEncoding=utf

4、-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中创建的方法获得Connection对象,并通过该对象获得Statement对

5、象给类属性赋值。,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.executeQuery(sql);/执行SQL语句获得结果集 catch(Exce

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

7、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)conn.close();/关闭连接catch(Exception e)System.out.println(执行close()方法出错:);

8、e.printStackTrace();,16,课堂总结,17,驱动任务三,实现通用方法封装类(Tools),封装对键盘输入获取的方法,和将信息保存到一个特定文件中的方法(模拟打印凭条)。,18,目标及知识点,19,获取键盘输入过程示意图,20,读取字符,BufferedReader br=new BufferedReader(new InputStreamReader(System.in);实现将BufferedReader对象与控制台输入关联了起来,使得我们其后只关注BufferedReader对象中的方法。,21,【例11-1】,使用BufferedReader类的相关方法来读取控制台上

9、输入的单个字符。,import java.io.*;/要用到输入输出的类,需要导入该包class BRRead public static void main(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();/读

10、取一个字符 System.out.println(c);,运行结果:请输入135abc1,22,练习,学生实现11-1,23,读取字符串,要想读取输入的完整字符串,可以使用BufferedReader 对象的成员方法readLine()。,24,【例子11-2】,从控制台中获得输入的字符串。,import java.io.*;class BRReadLines public static void main(String args)throws IOException/*产生缓冲输入流对象br*/BufferedReader br=new BufferedReader(new InputStr

11、eamReader(System.in);String str;/定义一个字符串变量 System.out.println(请输入);str=br.readLine();/调用br对象的readLine()方法从缓冲输入流中获得一行字符串 并赋值给变量str System.out.println(str);,运行结果:请输入135abc135abc,25,练习,学生实现11-2,26,文件读取,文件读取与从控制台读取类似,其差别仅在于读取的对象不同,因此我们只需要将关联控制台转换为关联一个文件即可。,27,【例子10-3】,从文件读取数据,import java.io.*;public cla

12、ss 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)/按行读取文件内容,每次读一行,循环读完为止 System.out.println(readString);c

13、atch(FileNotFoundException e)System.out.println(文件没有找到!);catch(IOException e)System.out.println(文件读取失败!);finally fin.close();/关闭文件流,fileTest.txt文件的内容如下:,运行结果:请输入135abc135abc,28,文件写入,文件的写入,使用文件输出流(FileOutputStream)的成员方法 write()实现。,29,【例子10-4】,将信息保存到一个特定文件中,import java.io.*;public class FileOutputTest

14、 public static void main(String args)throws IOException FileOutputStream fout;/定义一个文件输出流类的对象fout/创建文件输出流对象fout,同时打开了文件*.txt,若文件不存在将新建一个 fout=new FileOutputStream(D:fileTest.txt);/保存信息到d盘的fileTest.txt文件中/保存用户信息到文件 try/要保存到文件中的用户信息 String userInfo=“客户姓名:张三rn客户帐号:123456789rn取款金额:1500元rn账户余额:300元rn;fout

15、.write(userInfo.getBytes();/注意,write方法的参数是字节数组,因此调用String对象的getBytes方法通过字符串生成字节数组 catch(IOException e)System.out.println(文件保存失败);/文件关闭 fout.close();/关闭输出流对象,同时自动关闭和保存文件,在D盘生成一个fileTest.txt文件 内容如下:,30,任务实现,引入java.util包中StringTokenizer类,使用BufferedReader对象的read()方法来读取控制台上输入的单个字符,使用BufferedReader对象的read

16、Line()方法来读取控制台上输入的字符串;,使用BufferedReader对象的readLine()方法来读取文件,使用FileOutputStream对象的write()方法把信息写入到特定文件中去,31,驱动任务四,完成业务层中Login类,实现登录功能,32,目标及知识点,33,登录业务流程分析,业务流程:1.用户输入用户名和密码2.系统根据用户输入的用户名和密码,到后台数据库进行查询,如果存在这样的记录,表示登录成功。3.如果用户输入的用户名和密码不匹配,那么就提示用户名或密码不正确,然后返回登录界面,让用户重新输入用户名和密码。,34,登录活动图,35,登录模块详细设计,36,任

17、务实现,根据时序图创建出对应的三个类,完成Login类中的doLogin()方法,在AutoTerminalMachine中调用doLogin()方法并判断登录是否成功,37,驱动任务五,完成业务层中BalanceQuery类,实现余额查询功能。,38,目标及知识点,39,余额查询流程分析,业务流程:从数据库中获取当前登录用户的余额信息,并显示出账户存款余额,40,余额查询活动图,41,余额查询模块详细设计,42,任务实现,根据时序图创建出对应的类与方法,完成BalanceQuery类中的doBalanceQuery()方法,在AutoTerminalMachine中调用doBalanceQu

18、ery()方法,43,驱动任务六,完成业务层中Withdrawal类,实现取款功能,44,目标及知识点,45,取款流程分析,业务流程:选择查询余额菜单项,输入取款金额。验证取款金额的合法性,验证通过,提示取款成功和账户余额;否则提示余额不足,46,取款活动图,47,取款模块详细设计,48,任务实现,根据时序图创建出对应的类与方法,完成Withdraw类中的doWithdraw()方法,在AutoTerminalMachine中调用doWithdraw()方法,49,驱动任务八,完成业务层中TransferAccounts类,实现转账功能,50,目标及知识点,51,转帐流程分析,业务流程:用户选

19、择转账服务,输入对方账户的账号和金额。从数据库读取用户的存款信息,验证取款金额的合法性,如果验证没有通过提示账户的余额不足。如果验证通过,系统通过数据库存储的账户信息验证用户输入的账户是不是存在,如果不存在,提示对方账号不存在,请确认输入信息后再试。如果对方账户存在,更新数据库信息,然后提示转账成功,52,转帐活动图,53,转帐模块详细设计,54,任务实现,1、根据时序图创建出对应的类与方法;2、完成TransferAccounts类中的judge(),该方法判断余额是否够转出;isAccountExist(),该方法判断要转入的账号是否存在;updateAccount(),该方法实现将金额从自身账户中扣除并给对方账户增加金额;doTransferAccounts,该方法通过调用以上三个方法实现完整的转账功能;3、在AutoTerminalMachine中调用doTransferAccounts()方法。,55,课堂总结,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号