最新Java面向对象程序设计与系统开发第11章 项目编码实现(共56张PPT课件).pptx
-
资源ID:24213029
资源大小:4.36MB
全文页数:56页
- 资源格式: PPTX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
最新Java面向对象程序设计与系统开发第11章 项目编码实现(共56张PPT课件).pptx
面向对象程序设计面向对象程序设计(chn x sh j)与系统开发与系统开发第11章 项目编码(bin m)实现 第一页,共五十六页。2驱动驱动(q dn)任务一任务一 创建出合理(hl)的项目分层结构第二页,共五十六页。3目标目标(mbio)及知识点及知识点高内聚低耦合的项目结构设计高内聚低耦合的项目结构设计 1 1第三页,共五十六页。4基本概念基本概念v 低耦合低耦合:是指一个软件结构内不同模块之间相互关联的程度要低,也就是要尽量保持模块间的独立性。 v 高内聚:高内聚:在同一个模块内各个(gg)元素彼此结合的紧密程度要高,元素具有高度相关的职责,除了这些职责内的任务,没有其它过多的工作,那么该元素就具有高内聚性,这里的元素可以是功能、对象(类)。 第四页,共五十六页。5“低耦合、高内聚低耦合、高内聚”的项目的项目(xingm)结结构构项目名称项目名称 通用通用(tngyng)工具包工具包 业务业务(yw)处理包处理包 业务控制包业务控制包 第五页,共五十六页。6任务任务(rn wu)实现实现1按照按照(nzho)图创建出工程图创建出工程atm_cs,并添加包结并添加包结构构 23按照图结构和命名方式按照图结构和命名方式(fngsh),创建出各个,创建出各个类类 每个类写上注释每个类写上注释第六页,共五十六页。7驱动驱动(q dn)任务任务二二实现(shxin)项目中数据库底层管理类(DatabaseManager),对数据库的基本操作进行封装。第七页,共五十六页。8目标目标(mbio)及知识点及知识点JDBC底底层类层类的的实现实现1 1加深面向对象封装的理解加深面向对象封装的理解 2第八页,共五十六页。9为什么写为什么写数据库底层数据库底层(d cn)管理类管理类v 在实际开发当中涉及到数据库操作的很多,因此我们在开发过程中一般将对数据库的基本操作方法封装到一个类中,这样可以增加(zngji)代码的重用率,减少我们很多工作量和出错的机会v 在这里我们将对数据库的常用操作方法封装如下: UML类图类图中中 减号表示私有减号表示私有(syu) private; 加号表示公有加号表示公有public。 。第九页,共五十六页。10任务任务(rn wu)实现实现第一步第一步v按照类图,给DatabaseManager类添加连接数据库和获得数据库查询结果的三个属性(shxng),其属性(shxng)为Connection、Statement、ResultSet的对象。private Connection conn=null; /数据库连接对象数据库连接对象private Statement st=null;/ 执行执行sql语句的对象语句的对象public ResultSet rs=null;/ 存放查询存放查询(chxn)结果的对象结果的对象第十页,共五十六页。11任务任务(rn wu)实现实现第二步第二步v 创建一个获得数据库连接的方法,将类属性(shxng)中的Connection对象赋值 private void getConnection() final String DRIVERNAME = com.mysql.jdbc.Driver; final String URL = 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()方法方法(fngf)出出错错: :); e.printStackTrace();第十一页,共五十六页。12任务任务(rn wu)实现实现第三步第三步v创建类的构造方法,调用步骤2中创建的方法获得Connection对象,并通过(tnggu)该对象获得Statement对象给类属性赋值。public DatabaseManager()getConnection();try st = conn.createStatement(); catch (SQLException e) e.printStackTrace();第十二页,共五十六页。13任务任务(rn wu)实现实现第四步第四步v完成数据库查询方法,将查询后的结果保存为类中的ResultSet对象(duxing)属性,其参数为SQL语句字符串。/* * 数据数据库查询库查询 * param sql 传传入的入的SQL语语句句 */public void executeQuery(String sql) try r s=st.executeQuery(sql);/执执行行SQL语语句句获获得得(hud)结结果集果集 catch(Exception e) System.out.println(“执执行行executeQuery(String sql)方法出方法出错错” ”);e.printStackTrace();/打印出打印出错误错误原因原因第十三页,共五十六页。14任务任务(rn wu)实现实现第五步第五步v完成对数据库的增删改操作的方法(fngf),其参数为SQL语句字符串,返回更改了数据库表的行数。/* * 数据数据库库增加增加/删删除除/修改修改 * param sql 传传入入(chun r)的的SQL语语句句 * return 0执执行成功行成功 */public int executeUpdate(String sql) int ret=-1 tryret=st.executeUpdate(sql);/执执行行SQL语语句句对对数据表数据表进进行操作行操作 catch(Exception e) System.out.println(执执行行executeUpdate(sql)方法出方法出错错: :+sql); e.printStackTrace();/打印出打印出错误错误原因原因 return ret;第十四页,共五十六页。15任务任务(rn wu)实现实现第五步第五步v创建关闭数据库资源(zyun)方法。/* * 数据数据库库关关闭闭 */public void close()try if (rs!=null)rs.close();/关关闭结闭结果集果集if (st!=null)st.close();/关关闭闭Statement对对象象if (conn!=null)conn.close();/关关闭连闭连接接(linji)catch(Exception e)System.out.println(执执行行close()方法出方法出错错: :);e.printStackTrace();第十五页,共五十六页。16课堂课堂(ktng)总结总结 第十六页,共五十六页。17驱动驱动(q dn)任务任务三三 实现通用方法(fngf)封装类(Tools),封装对键盘输入获取的方法,和将信息保存到一个特定文件中的方法(模拟打印凭条)。 第十七页,共五十六页。18目标目标(mbio)及知识点及知识点获取控制台信息,实现人机交互获取控制台信息,实现人机交互 2对文件的读写操作对文件的读写操作 3BufferedReader类类的使用的使用 1 1第十八页,共五十六页。19获取获取(huq)键盘输入过程示意图键盘输入过程示意图 第十九页,共五十六页。20读取字符读取字符(z f) v BufferedReader br = new BufferedReader(new InputStreamReader(System.in); 实现将BufferedReader对象与控制台输入关联了起来(q li),使得我们其后只关注BufferedReader对象中的方法。 第二十页,共五十六页。21【例例11-1】v 使用BufferedReader类的相关方法来读取控制台上输入(shr)的单个字符。import java.io.*; /要用到要用到输输入入输输出的出的类类,需要,需要导导入入该该包包class BRRead public static void main(String args ) throws IOException char c; /定定义义一个字符一个字符变变量量 /*产产生生缓缓冲冲输输入入(shr)流流对对象象br*/ BufferedReader br=new BufferedReader(new InputStreamReader(System.in); System.out.println(请输请输入入); /*调调用用br对对象的象的read( )方法从方法从缓缓冲冲输输入流中入流中获获得一个字符并把得一个字符并把这这个字符个字符赋值给变赋值给变量量c*/ c = (char) br.read( );/读读取一个字符取一个字符 System.out.println(c); 运行运行(ynxng)结果:结果:请输入请输入135abc1第二十一页,共五十六页。22练习练习(linx)v 学生(xu sheng)实现11-1第二十二页,共五十六页。23读取字符串读取字符串 v 要想读取输入(shr)的完整字符串,可以使用BufferedReader 对象的成员方法readLine( )。第二十三页,共五十六页。24【例子例子(l zi)11-2】v 从控制台中获得(hud)输入的字符串。import java.io.*; class BRReadLines public static void main(String args ) throws IOException /* 产产生生缓缓冲冲输输入流入流对对象象br */ BufferedReader br=new BufferedReader(new InputStreamReader(System.in); String str; /定定义义一个字符串一个字符串变变量量(binling) System.out.println(请输请输入入); str = br.readLine( );/调调用用br对对象的象的readLine()方法从方法从缓缓冲冲输输入流中入流中获获得一行字符串得一行字符串 并并赋值给变赋值给变量量str System.out.println(str); 运行结果:运行结果:请输入请输入135abc135abc第二十四页,共五十六页。25练习练习(linx)v 学生(xu sheng)实现11-2第二十五页,共五十六页。26 文件(wnjin)读取v 文件读取与从控制台读取类似,其差别仅在于读取的对象不同,因此我们只需要(xyo)将关联控制台转换为关联一个文件即可。第二十六页,共五十六页。27【例子例子(l zi)10-3】v 从文件读取数据import java.io.*;public class FileInputTest public static void main(String args) throws IOException BufferedReader fin = null;/ 定定义义一个一个(y )文件文件输输入流入流类类的的对对象象finString readString = ;try fin = new BufferedReader(new FileReader(“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文件的内容文件的内容(nirng)如下:如下:运行结果:运行结果:请输入请输入135abc135abc第二十七页,共五十六页。28文件(wnjin)写入v 文件的写入,使用文件输出(shch)流(FileOutputStream)的成员方法 write ( )实现。 第二十八页,共五十六页。29【例子例子(l zi)10-4】 v 将信息保存到一个(y )特定文件中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.txt文件中文件中 / 保存用保存用户户信息到文件信息到文件 try /要保存到文件中的用要保存到文件中的用户户信息信息 String userInfo=“客客户户姓名:姓名:张张三三rn客客户帐户帐号:号:123456789rn取款金取款金额额: : 1500元元rn账户账户余余额额: :300元元rn; fout.write(userInfo.getBytes();/注意,注意,write方法方法(fngf)的参数是字的参数是字节节数数组组, , 因此因此调调用用String对对象的象的getBytes方法通方法通过过字符串生成字字符串生成字节节数数组组 catch (IOException e) System.out.println(文件保存失文件保存失败败); / 文件关文件关闭闭 fout.close();/ 关关闭输闭输出流出流对对象象,同同时时自自动动关关闭闭和保存文件和保存文件 在在D盘生成一个盘生成一个fileTest.txt文件文件 内容如下:内容如下:第二十九页,共五十六页。30任务任务(rn wu)实现实现123引入引入java.util包中包中StringTokenizer类类 使用使用BufferedReader对象的对象的read()方法方法(fngf)来来读取控制台上输入的单个字符读取控制台上输入的单个字符 使用使用BufferedReader对象的对象的readLine( ) 方法来方法来读取控制读取控制(kngzh)台上输入的字符串;台上输入的字符串; 45使用使用BufferedReader对象的对象的readLine()方法方法来读取文件来读取文件 使用使用FileOutputStream对对象的象的write ( )方法把信息写方法把信息写入到特定文件中去入到特定文件中去第三十页,共五十六页。31驱动驱动(q dn)任务任务四四完成(wn chng)业务层中Login类,实现登录功能第三十一页,共五十六页。32目标目标(mbio)及知识点及知识点阅读活动图与时序图阅读活动图与时序图 2根据业务流程完成具体开发任务根据业务流程完成具体开发任务 1 1第三十二页,共五十六页。33 登录登录(dn l)业务流程分析业务流程分析 v 业务流程:业务流程: 1.用户输入用户名和密码 2.系统根据用户输入的用户名和密码,到后台数据库进行(jnxng)查询,如果存在这样的记录,表示登录成功。 3.如果用户输入的用户名和密码不匹配,那么就提示用户名或密码不正确,然后返回登录界面,让用户重新输入用户名和密码。第三十三页,共五十六页。34登录登录(dn l)活动图活动图 第三十四页,共五十六页。35登录模块详细登录模块详细(xingx)设计设计 第三十五页,共五十六页。36任务任务(rn wu)实现实现123根据时序根据时序(sh x)图创建出对应的三个类图创建出对应的三个类 完成完成(wn chng)Login类中的类中的doLogin()方()方法法 在在AutoTerminalMachine中调用中调用doLogin()()方法并判断登录是否成功方法并判断登录是否成功 第三十六页,共五十六页。37驱动驱动(q dn)任务任务五五完成业务(yw)层中BalanceQuery类,实现余额查询功能。第三十七页,共五十六页。38目标目标(mbio)及知识点及知识点根据活动图和实训图进行开发根据活动图和实训图进行开发1 1第三十八页,共五十六页。39余额余额(y )查询流程分析查询流程分析 v 业务流程:业务流程: 从数据库中获取当前登录用户(yngh)的余额信息,并显示出账户存款余额 第三十九页,共五十六页。40余额查询余额查询(chxn)活动图活动图 第四十页,共五十六页。41余额查询余额查询(chxn)模块详细设计模块详细设计 第四十一页,共五十六页。42任务任务(rn wu)实现实现123根据时序图创建根据时序图创建(chungjin)出对应的类与方法出对应的类与方法 完成完成(wn chng)BalanceQuery类中的类中的doBalanceQuery()方法()方法 在在AutoTerminalMachine中调用中调用doBalanceQuery()方法()方法 第四十二页,共五十六页。43驱动驱动(q dn)任务任务六六完成(wn chng)业务层中Withdrawal类,实现取款功能 第四十三页,共五十六页。44目标目标(mbio)及知识点及知识点根据活动图和实训图进行开发根据活动图和实训图进行开发1 1第四十四页,共五十六页。45取款流程取款流程(lichng)分析分析 v 业务流程:业务流程: 选择查询余额菜单项,输入取款金额。 验证取款金额的合法性,验证通过,提示取款成功和账户余额;否则(fuz)提示余额不足第四十五页,共五十六页。46取款活动取款活动(hu dng)图图 第四十六页,共五十六页。47取款模块取款模块(m kui)详细设计详细设计 第四十七页,共五十六页。48任务任务(rn wu)实现实现123根据时序图创建出对应根据时序图创建出对应(duyng)的类与方法的类与方法 完成完成(wn chng)Withdraw类中的类中的doWithdraw()方法()方法 在在AutoTerminalMachine中调用中调用doWithdraw()方法)方法 第四十八页,共五十六页。49驱动驱动(q dn)任务任务八八完成业务层中TransferAccounts类,实现(shxin)转账功能 第四十九页,共五十六页。50目标目标(mbio)及知识点及知识点根据设计完成开发根据设计完成开发 1 1第五十页,共五十六页。51转帐转帐(zhun zhn)流程分析流程分析 v 业务流程:业务流程: 用户选择转账服务,输入对方账户的账号和金额。 从数据库读取用户的存款信息,验证(ynzhng)取款金额的合法性,如果验证(ynzhng)没有通过提示账户的余额不足。 如果验证通过,系统通过数据库存储的账户信息验证用户输入的账户是不是存在,如果不存在,提示对方账号不存在,请确认输入信息后再试。 如果对方账户存在,更新数据库信息,然后提示转账成功 第五十一页,共五十六页。52转帐转帐(zhun zhn)活动图活动图 第五十二页,共五十六页。53转帐模块转帐模块(m kui)详细设计详细设计 第五十三页,共五十六页。54任务任务(rn wu)实现实现v 1、根据时序图创建出对应的类与方法;v 2、完成TransferAccounts类中的judge(),该方法判断余额是否够转出;isAccountExist(),该方法判断要转入的账号是否存在;updateAccount(),该方法实现将金额从自身账户中扣除并给对方账户增加金额;doTransferAccounts,该方法通过(tnggu)调用以上三个方法实现完整的转账功能;v 3、在AutoTerminalMachine中调用doTransferAccounts()方法。第五十四页,共五十六页。55课堂课堂(ktng)总结总结第五十五页,共五十六页。内容(nirng)总结面向对象程序设计与系统开发。/*。课堂总结。/要用到输入输出的类,需要导入该包。/调用br对象的readLine()方法从缓冲输入流中获得一行字符串。/ 定义一个文件输入流类的对象fin。/ 定义一个文件输出流类的对象fout。/保存信息到d盘的fileTest.txt文件中。1500元rn账户余额:300元rn。阅读活动图与时序(sh x)图。从数据库中获取当前登录用户的余额信息,并显示出账户存款余额第五十六页,共五十六页。