天津理工大学Java实验3实验报告
java语言程序设计实验报告

java语言程序设计实验报告
《Java语言程序设计实验报告》
实验目的:通过本次实验,学生将学会使用Java语言进行程序设计,掌握Java
语言的基本语法和编程技巧,并能够编写简单的Java程序。
实验内容:本次实验主要包括以下内容:1. Java语言的基本语法和数据类型;2. Java程序的输入输出;3. Java程序的流程控制;4. Java程序的函数和类的定义;
5. Java程序的异常处理等。
实验步骤:1. 阅读相关的Java语言教材和资料,了解Java语言的基本概念和
语法规则;2. 编写简单的Java程序,包括输入输出、流程控制、函数和类的定
义等;3. 调试和运行编写的Java程序,查看程序的运行结果;4. 对程序进行优
化和改进,提高程序的效率和性能。
实验结果:通过本次实验,学生将能够熟练掌握Java语言的基本语法和编程技巧,能够编写简单的Java程序,并能够运用Java语言解决实际的问题。
实验总结:通过本次实验,学生将对Java语言有了更深入的了解,掌握了Java
语言的基本概念和编程技巧,能够独立编写简单的Java程序。
同时,学生也将
培养了良好的编程习惯和解决问题的能力,为今后的学习和工作打下了良好的
基础。
结语:通过本次实验,学生将能够熟练掌握Java语言的基本语法和编程技巧,
为今后的学习和工作打下了良好的基础。
同时,也希望学生能够在今后的学习
和工作中不断提高自己的编程能力,为科技创新和社会发展做出更大的贡献。
Java实验三实验报告1

Java实验三实验报告1一、实验目的本次 Java 实验的主要目的是深入理解和掌握 Java 中的面向对象编程概念,通过实际的编程实践,提高对类、对象、继承、多态等特性的运用能力,同时培养良好的编程习惯和代码规范。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java Developers三、实验内容1、设计一个名为`Shape` 的抽象类,其中包含一个抽象方法`calculateArea()`用于计算图形的面积。
2、分别创建`Circle`(圆形)、`Rectangle`(矩形)和`Triangle`(三角形)类继承自`Shape` 类,并实现各自的`calculateArea()`方法来计算具体图形的面积。
3、创建一个测试类`TestShapes`,在其中创建不同图形的对象,并调用其计算面积的方法,输出结果。
四、实验步骤1、创建`Shape` 抽象类```javaabstract class Shape {abstract double calculateArea();}```2、创建`Circle` 类继承自`Shape` 类```javaclass Circle extends Shape {private double radius;public Circle(double radius) {thisradius = radius;}@Overridedouble calculateArea(){return MathPI radius radius;}}```3、创建`Rectangle` 类继承自`Shape` 类```javaclass Rectangle extends Shape {private double length;private double width;public Rectangle(double length, double width) {thislength = length;thiswidth = width;}@Overridedouble calculateArea(){return length width;}}```4、创建`Triangle` 类继承自`Shape` 类```javaclass Triangle extends Shape {private double base;private double height;public Triangle(double base, double height) {thisbase = base;thisheight = height;}@Overridedouble calculateArea(){return 05 base height;}}```5、创建测试类`TestShapes````javapublic class TestShapes {public static void main(String args) {Circle circle = new Circle(50);Rectangle rectangle = new Rectangle(40, 60);Triangle triangle = new Triangle(30, 80);Systemoutprintln("圆形的面积:"+ circlecalculateArea());Systemoutprintln("矩形的面积:"+ rectanglecalculateArea());Systemoutprintln("三角形的面积:"+trianglecalculateArea());}}```五、实验结果运行测试类`TestShapes` 后,输出结果如下:```圆形的面积:78539816矩形的面积:240三角形的面积:120```六、实验中遇到的问题及解决方法1、在编写抽象类和子类的代码时,一开始对于抽象方法的定义和实现理解不够清晰,导致代码出现错误。
java实验三报告模板

本文档如对你有帮助,请帮忙下载支持!计算机科学与技术系实验报级 15 软工2班号06孙魏东同组人员 实验日期、实验目的与要求(简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要 求。
)目的:1. 掌握Java 类的结构、类的定义、方法和属性的定义以及对象的实现。
2. 掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传 递和返回值的用法。
3. 掌握类变量与实例变量,以及类方法与实例方法的区别。
要求: 1. 2. 3.4. 区别5. 应用程序中的其它类提供一些实用工具所用, 在Java 的类库中大量的静态方 法正是出于此目的而定义的。
)6. 程序应包括各个被调用方法的执行结果的显示。
7. 写出实验报告。
要求记录编译和执行Java 程序当中的系统错误信息提示,并给出解决办法。
(附运行界面、源代码) 。
专业名称 软件工程 课程名称面向对象程序设计项目名称实验三 类和对象 正确地定义类、方法和属性,要求属性均定义成私有的( Private )学会方法的参数传递和返回值的用法 熟练使用类及其成员修饰符类变量与实例变量,以及类方法与实例方法的使用(静态方法常常为二、实验内容(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、原理、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 )实验目的1:定义一个高校人员类School_Property,包含姓名、出生年月、性别、身份证号、手机号码,所在学校,入校时间,家庭地址等私有属性,以及访问属性的方法。
编写程序,创建一个高校人员类的对象,设置属性值,然后打印出该对象的各项属性信息。
原理:编写一个高校学生类School_Property,类里存放姓名name出生年月dateofbirth、性别sex、身份证号id、手机号码tel,所在学校school,入校时间entertime,家庭地址address 等私有属性,以及访问属性的方法getName(),getSex() 等。
JAVA实验报告三

Java语言程序设计实验报告三班级:姓名:学号:一、实验教学目的与基本要求Java程序设计的实验是Java程序设计课程重要的实践教学环节。
实验的目的不仅仅是验证理论知识,更重要的是通过上机加强学生的动手能力,掌握常用Java开发环境的使用方法,培养学生分析问题、解决问题、应用知识的能力和创新精神。
充分放手让学生自行设计、自主调试,真正培养学生的实践动手能力,全面提高学生的综合素质。
本课程是一门程序设计语言课程,通过本课程的学习,学生能够掌握Java 语言程序的基本特点、基本编程方法和基本开发技巧,培养学生阅读、分析、设计和调试Java语言的能力,并具备一定的面向对象程序设计思想。
本课程的主要任务是在已学习的编程语言基础上,讲述Java语言的数据结构和语法规则;基本控制结构和编程技巧;Java语言面向对象的特点、编程方法和程序设计思路;Java语言的GUI程序和文件及I/O流的编程方法;能够正确配置Java开发环境,并使用相关的编辑、编译、调试、运行命令。
(1)掌握Java语言的编程技巧,能够独立进行面向对象的开发能力。
(2)具有根据编程需求独立查询Java类库文档及相关资料,完成系统的能力。
(3)具有分析、寻找和排除程序中常见问题的能力。
二、实验内容与收获(5)Java图形界面的设计(AWT事件处理,使用Graphics类绘图,创建菜单)a)程序代码:package com;import java.awt.Button;import java.awt.Dimension;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class TestFram {public static void main(String[] args){Frame f=new Frame("测试程序");//创建一个窗口实例,标题为UGI应用程序f.setSize(500,500);f.setVisible(true);f.addWindowListener(new MyWindowListener());//注册事件监听器//f.addWindowListener(new MyWindowAdapter());//注册事件适配器}}/*-------事件监听器---------*/package com;import java.awt.Window;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;public class MyWindowListener implements WindowListener{@Overridepublic void windowActivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowClosed(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stube.getWindow().setVisible(false);//隐藏窗口((Window)e.getComponent()).dispose();//关闭窗口//另一种方式://((Window)e.getSource()).dispose();System.out.println("已经关闭窗口! ");System.exit(0);//关闭程序}@Overridepublic void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub}@Overridepublic void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub}@Overridepublic void windowIconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}}/*--------事件适配器-------*/package com;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class MyWindowAdapter extends WindowAdapter {public void windowClosing(WindowEvent e){System.out.println("事件适配器,已经执行!");e.getWindow().dispose();//关闭窗口System.exit(0);}}运行截图:图5.1 Frame打开图图5.2 利用事件监听器处理关闭事件图5.3利用事件适配器程序代码:package io;import java.awt.*;import java.awt.event.*;public class io{Frame f=new Frame("DrawLine");public void init(){f.setSize(500,500);f.setVisible(true);f.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e){Graphics g=f.getGraphics();Graphics h=f.getGraphics();h.setColor(Color.red);g.setColor(Color.red);g.drawString(new String("(100,100)"),100,100);h.drawString(new String("(300,300)"),300,300);g.drawLine(100,100,300,300);}});}public static void main(String[] args){new io().init();}}运行截图:图5.4 左击鼠标画出直线图运行截图:图5.5Menu图b)调试课件中GUI和IO文件夹下的程序;心得体会:本次实验是关于JAVA的GUI,通过学习,我了解了如何使用AWT进行事件处理,并且学习了简单的用户图形界面设计。
Java实三报告

浙江万里学院实验报告课程名称: 面向对象程序设计实验名称: 数据库的连接:JDBC* 专业班级: 电子商务112班 姓名: 陈依丽 学号: 2011014732 实验日期: 2013.12 实验3 数据库的连接:JDBC*一、实验目的了解JDBC 核心API ,利用JDBC 核心API ,建立数据库连接、执行SQL 语句、取得查询集、数据类型支持等功能。
二、实验要求了解JDBC 的概念和工作原理。
掌握使用JDBC 实现简单的数据库管理。
三、实验内容(一)配置ODBC 数据源1. 从开始菜单中,选择设置|控制面板。
2. 在控制面板中选择"32位 ODBC"。
3. 打开"32位 ODBC"后,看到的应该是一个卡片式对话框,上面一排有多个卡片标签,其中包括"用户DSN"、"系统DSN"、"文件DSN"等等。
选择"系统DSN"。
4. 单击"系统DSN"中的"添加…"按钮,弹出一个对话框。
5. 在对话框中,列出了当前系统支持的ODBC 数据源的驱动程序,选择"Microsoft Access Driver",单击"完成"按钮,弹出一个对话框。
6. 在对话框中,向"数据源"文本框内输入数据源的名字,这个名字可以任取,在这个例子中,我们输入的名字是"vfox"。
然后,单击"创建"按钮。
7. 在对话框中,选择数据库存放的目录,然后向"数据库名"文本框内输入数据库的名字,这个名字可以任取,在这个例子中,我们输入的名字是"vfox"。
然后,8. 单击"确定"按钮,会弹出显示"数据库创建成功"的对话框。
JAVA程序设计实验报告

JAVA程序设计实验报告实验报告一、实验目的本次实验的主要目的是熟悉并掌握JAVA程序设计的基本知识和技能,通过实验来加深对JAVA的理解和应用。
二、实验内容本次实验主要是设计一个简单的学生信息管理系统,实现学生信息的添加、查找、修改和删除功能。
三、实验步骤1. 首先,创建一个名为Student的类,用于存储学生的信息。
该类需要包含学生的姓名、年龄和学号等信息的私有变量,并提供对应的get和set方法。
2. 接下来,创建一个名为StudentManager的类,用于实现学生信息的管理功能。
该类需要包含一个存储学生信息的List,并提供添加、查找、修改和删除学生信息的方法。
3. 在StudentManager类中,实现添加学生信息的方法。
该方法需要先实例化一个Student对象,然后通过调用Student对象的set方法设置学生信息,并将该学生信息添加到List中。
4. 实现查找学生信息的方法。
该方法需要输入一个学生的学号,并在List中查找对应的学生信息,然后返回该学生的相关信息。
5. 实现修改学生信息的方法。
该方法需要输入一个学生的学号和需要修改的信息,并在List中找到对应的学生信息,然后调用Student对象的set方法修改学生信息。
6. 实现删除学生信息的方法。
该方法需要输入一个学生的学号,并在List中找到对应的学生信息,然后将该学生信息从List中删除。
7. 在主函数中,创建一个StudentManager对象,然后可以通过调用StudentManager对象的方法来实现学生信息的管理。
四、实验结果通过运行程序,可以实现对学生信息的添加、查找、修改和删除等功能,可以有效地管理学生的信息。
五、实验总结通过本次实验,我进一步加深了对JAVA程序设计的理解和应用。
学会了如何创建类、定义变量、编写方法以及使用集合等技能。
同时,我也体会到了实验的重要性,通过实验加深了对理论知识的掌握,提高了解决问题的能力。
java项目实验报告

java项目实验报告Java项目实验报告一、引言在计算机科学领域,Java是一种广泛应用的编程语言,具有跨平台的特性,被广泛用于开发各种类型的软件和应用程序。
本实验旨在通过一个具体的Java项目,探索和实践Java编程的基本原理和技术。
二、项目背景本项目是一个学生信息管理系统,旨在帮助学校管理学生的个人信息、课程成绩和课程安排等相关信息。
该系统的主要功能包括学生信息的录入、查询和修改,课程成绩的录入和查询,以及课程安排的管理等。
三、项目架构1. 数据库设计为了存储学生信息、课程成绩和课程安排等数据,我们使用了MySQL数据库。
通过设计合理的数据表结构,我们能够高效地存储和检索数据。
其中,学生信息表包括学生ID、姓名、性别和年龄等字段;课程成绩表包括学生ID、课程名称和成绩等字段;课程安排表包括课程名称、上课时间和地点等字段。
2. 后端开发为了处理前端页面的请求和与数据库的交互,我们使用了Java的Spring框架。
Spring框架提供了丰富的功能和工具,使得后端开发更加高效和便捷。
通过使用Spring框架,我们能够实现学生信息的增删改查功能,以及课程成绩和课程安排的管理功能。
3. 前端开发为了展示学生信息、课程成绩和课程安排等数据,我们使用了HTML、CSS和JavaScript等前端技术。
通过设计美观的页面和交互效果,我们能够提供良好的用户体验。
同时,我们还使用了Bootstrap框架来简化前端开发的过程,使得页面的布局和样式更加统一和美观。
四、实验过程1. 数据库设计与搭建首先,我们根据项目需求设计了合理的数据库表结构,并使用MySQL数据库进行搭建。
通过创建表、定义字段和设置主键等操作,我们成功地创建了学生信息表、课程成绩表和课程安排表。
2. 后端开发与接口设计接下来,我们使用Spring框架进行后端开发。
通过创建Java类和定义接口,我们实现了学生信息的增删改查功能,以及课程成绩和课程安排的管理功能。
java实验实验报告

java实验实验报告Java 实验实验报告一、实验目的本次 Java 实验的主要目的是通过实际操作和编程实践,深入理解和掌握 Java 编程语言的基本概念、语法结构、面向对象编程的思想以及常用类库的使用。
同时,培养我们解决实际问题的能力和编程思维,提高代码的质量和可读性。
二、实验环境1、操作系统:Windows 102、开发工具:IntelliJ IDEA3、 JDK 版本:18三、实验内容(一)基本语法练习1、数据类型与变量在 Java 中,我们学习了不同的数据类型,如整数类型(`int`、`long`)、浮点数类型(`float`、`double`)、字符类型(`char`)和布尔类型(`boolean`)。
通过定义和使用这些变量,我们能够存储和操作各种类型的数据。
```javaint age = 25;double salary = 500050;char grade ='A';boolean isStudent = true;```2、控制结构包括条件语句(`ifelse`、`switch`)和循环语句(`for`、`while`、`dowhile`)。
这些控制结构使我们能够根据不同的条件执行不同的代码块,或者重复执行一段代码。
```javaint num = 10;if (num > 5) {Systemoutprintln("Number is greater than 5");} else {Systemoutprintln("Number is less than or equal to 5");}switch (num) {Systemoutprintln("One");break;case 10:Systemoutprintln("Ten");break;default:Systemoutprintln("Unknown");}for (int i = 0; i < 5; i++){Systemoutprintln(i);}int count = 0;while (count < 3) {Systemoutprintln("Count: "+ count);count++;}count = 0;Systemoutprintln("Count: "+ count);count++;} while (count < 3);```(二)面向对象编程1、类与对象创建了自定义的类来表示现实世界中的实体。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天津理工大学计算机科学与工程学院实验报告2016 至2017 学年第一学期课程名称Java语言程序设计学号学生姓名年级2015级专业计算机科学与技术教学班号实验地点7-220实验时间2017年11月27日第5节至第6节主讲教师董玉涛辅导教师董玉涛实验(三)实验名称银行业务管理软件软件环境Windows 8.1,Java SE 9,JDK 8,Eclipse硬件环境PC机实验目的1.理解并掌握面向对象程序设计中类与对象的基本概念2.理解并掌握Java中定义类、创建对象、使用对象成员的方法3. 理解并掌握Java中继承机制及实现方法4. 掌握Java中接口用法5. 掌握Java中多态的实现方法实验内容(应包括实验题目、实验要求、实验任务等)某银行有许多储户,每个储户可以拥有一个或多个帐号。
现要求你开发一个软件,管理银行储户与帐号业务。
见图1。
Bank类中有一个customers集合,用来存储所有的Customer(储户)对象,addCustomer方法用于向该集合中加储户,getCustomer方法根据下标值取某个储户,getNumOfCustomers方法取储户总数,getCustomers方法返回储户的Iterator,以便获得每个储户对象。
Customer类有一个accounts集合,用来存储某个储户的所有Account(帐号)对象,addAccount方法用于向该集合中加帐号,getAccount方法根据下标值取该储户的某个帐号,getNumOfAccounts方法取该储户的帐号总数,getAccounts方法返回该储户的帐号的Iterator,以便获得每个帐号对象。
Account类是抽象类,有一个balance属性,代表余额。
deposit方法表示存款,amount参数是存款额。
withdraw方法表示取款,取款额amount如果超出了余额就会抛出透支异常,我们需要自己定义一个OverdraftException类来表示这个异常,当抛出透支异常时,不进行取款交易,并报告用户此项错误。
SavingsAccount类表示存款帐号,继承Account,新增一个属性interestRate, 代表利率。
CheckingAccount类表示大额存款帐号,也继承Account,它有一个叫canOverdraft的属性,是一个boolean值,代表该帐号能否透支(true-能,false -否);它还有一个叫maxOverdraft的属性,表示该帐号允许的最大透支额。
这个类的withdraw(取款)方法需要考虑的因素比较多:在发生透支时,如果帐号不允许透支(canOverdraft=false),则抛出OverdraftException异常并退出交易;如果允许透支(canOverdraft=true),但透支额(amount-balance)超过最大透支额的话,也抛出OverdraftException异常并退出交易;只有在不发生透支或透支额小于最大透支额时交易才能正常进行。
另外,在每次进行透支交易时,最大透支额(maxOverdraft)应做调整,以便使该帐号的最大透支额随透支次数的增加而不断减少,从而可以避免透支的滥用,阻止信用膨胀。
CheckingAccount类有两个构造方法,只带一个参数的构造方法用来初始化balance,同时设定canOverdraft=false,maxOverdraft=0.00。
CustomerReport类用来显示每个储户的姓名以及他所持有的帐号的类别和余额,以报表的形式输出。
根据以上描述,创建一个TestBanking类,并在其main方法中添加若干储户和帐号,然后模拟存款、取款业务,并最终输出一张完整的报表。
采用下表中的数据进行模拟:帐号储户姓名Savings Account Checking Account Jane Simms SavingsAccount (500.00, 0.05) CheckingAccount (200.00, true, 400.00)Owen Bryant 无CheckingAccount (200.00)Tim Soley SavingsAccount (1500.00, 0.05) CheckingAccount (300.00)Maria Soley SavingsAccount (150.00, 0.05) 与Tim Soley共享一个CheckingAccount输出报表格式如下:CUSTOMERS REPORT==================储户姓名:Jane SimmsSavings Account:当前余额是¥XXXXChecking Account:当前余额是¥XXXX储户姓名:Owen BryantChecking Account:当前余额是¥XXXX储户姓名:Tim SoleySavings Account:当前余额是¥XXXXChecking Account:当前余额是¥XXXX储户姓名:Maria SoleySavings Account:当前余额是¥XXXXChecking Account:当前余额是¥XXXX实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)一、实验步骤与算法描述(1)定义一个抽象基类Account(2)定义一个BANK类,在类中定义customers集合,用来存储所有的Customer对象。
类中包含4个方法:addCustomer方法用于向该集合中加储户;getCustomer方法根据下标值取某个储户;getNumOfCustomers方法取储户总数;getCustomers方法返回储户的Iterator,以便获得每个储户对象。
(3)定义一个CUSTOMER类,在类中定义一个accounts集合,用来存储某个储户的所有Account对象。
类中包含4个方法:addAccount方法用于向该集合中加帐号;getAccount方法根据下标值取该储户的某个帐号;getNumOfAccounts方法取该储户的帐号总数;getAccounts方法返回该储户的帐号的Iterator,以便获得每个帐号对象。
(4)定义一个SAVINGSACCOUNT类,继承Account,新增一个属性interestRate, 代表利率。
(5)定义一个CheckingAccount类,继承Account,按照题目要求相应在类中声明两个属性:canOverdraft与maxOverdraft的属性,(6)定义一个CustomerReport类,用来显示每个储户的姓名以及他所持有的帐号的类别和余额,以报表的形式输出。
(7)创建TESTMAIN主类,调用上述各类的方法。
并在其main方法中添加相应的储户和帐号,模拟存款、取款业务。
二、实验结果:三、实验分析总结本次实验中,主要练习编译了跟抽象类有关的相关程序。
其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。
通过本次实验,基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用。
以后也还需要多加练习,能更加熟悉。
同时,编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查。
直到最终搞清为止。
package ex3;public abstract class Account{protected double balance;public Account(double d){this.balance=d;}public double getBalance(){return this.balance;}public void setBalance(double newBalance){this.balance=newBalance;}protected void deposit(double amount){this.balance+=amount;}protected void withdraw(double amount) throws OverdraftException {if(balance<amount){throw new OverdraftException("取款超过余额");}this.balance-=amount;}}package ex3;import java.util.*;public class BANK{List<CUSTOMER> customers=new ArrayList<CUSTOMER>();public BANK(){}public void addCustomer(String first,String last){CUSTOMER cstm=new CUSTOMER(first,last);customers.add(cstm);}public CUSTOMER getCustomer(int i){List<CUSTOMER> list=new ArrayList<CUSTOMER>();Iterator<CUSTOMER> it=customers.iterator();while(it.hasNext()){CUSTOMER temp=it.next();list.add(temp);}return list.get(i-1);}public int getNumOfCustomers(){List<CUSTOMER> list=new ArrayList<CUSTOMER>();Iterator<CUSTOMER> it=customers.iterator();while(it.hasNext()){CUSTOMER temp=it.next();list.add(temp);}return list.size();}public Iterator<CUSTOMER> getCustomers(){Iterator<CUSTOMER> it=customers.iterator();return it;}}package ex3;public class CHECACCOUNT extends Account{public CHECACCOUNT(double bal){super(bal);canOverdraft=false;maxOverdraft=0.00;}public CHECACCOUNT(double bal,boolean initcan,double initmax) {super(bal);canOverdraft=initcan;maxOverdraft=initmax;}protected boolean canOverdraft;protected double maxOverdraft;protected void deposit(double amount){this.balance+=amount;}public void withdraw(double amount) throws OverdraftException{if(balance<amount && canOverdraft==false){throw new OverdraftException("不允许透支!");}if(canOverdraft==true && maxOverdraft<(amount-balance)){throw new OverdraftException("超过透支限额!");}balance-=amount;if(balance<0){maxOverdraft+=balance;}}}package ex3;import java.util.*;public class CUSTOMER{String firstName;String lastName;List<Account> accounts=new ArrayList<Account>();public CUSTOMER(String first,String last){this.firstName=first;stName=last;}String getName(){return stName+" "+this.firstName;}public void addAccount(Account acc){accounts.add(acc);}public Account getAccount(int i){List<Account> list=new ArrayList<Account>();Iterator<Account> it=accounts.iterator();while(it.hasNext()){Account temp=it.next();list.add(temp);}return list.get(i-1);}public int getNumOfAccounts(){List<Account> list=new ArrayList<Account>();Iterator<Account> it=accounts.iterator();while(it.hasNext()){Account temp=it.next();list.add(temp);}return list.size();}public Iterator<Account> getAccounts(){Iterator<Account> it=accounts.iterator();return it;}}package ex3;public class CUSTOMERREPORT {public CUSTOMERREPORT(){}public void generateReport(BANK bank){System.out.println("CUSTOMERS REPORT");System.out.println("==================");System.out.println("储户姓名:"+bank.getCustomer(1).getName());System.out.println("Savings Account:当前余额是¥"+bank.getCustomer(1).getAccount(1).getBalance());System.out.println("Checking Account:当前余额是¥"+bank.getCustomer(1).getAccount(2).getBalance());System.out.println();System.out.println("储户姓名:"+bank.getCustomer(2).getName());System.out.println("Checking Account:当前余额是¥"+bank.getCustomer(2).getAccount(1).getBalance());System.out.println();System.out.println("储户姓名:"+bank.getCustomer(3).getName());System.out.println("Savings Account:当前余额是¥"+bank.getCustomer(3).getAccount(1).getBalance());System.out.println("Checking Account:当前余额是¥"+bank.getCustomer(3).getAccount(2).getBalance());System.out.println();System.out.println("储户姓名:"+bank.getCustomer(4).getName());System.out.println("Savings Account:当前余额是¥"+bank.getCustomer(4).getAccount(1).getBalance());System.out.println("Checking Account:当前余额是¥"+bank.getCustomer(4).getAccount(2).getBalance());}}package ex3;public class OverdraftException extends Exception{private static final long serialVersionUID = 1L;public OverdraftException(){super();}public OverdraftException(String msg){super(msg);}}package ex3;public class SA VING extends Account{double interestRate;public SA VING(double d, double e){super(d);this.interestRate=e;}}package ex3;public class TESTMAIN{public static void main(String[] args){BANK bank=new BANK();bank.addCustomer("Simms", "Jane");bank.addCustomer("Bryant", "Owen");bank.addCustomer("Soley", "Tim");bank.addCustomer("Soley", "Maria");SA VING saving=new SA VING(500.00,0.05);CHECACCOUNT checking=new CHECACCOUNT (200.00, true, 400.00);bank.getCustomer(1).addAccount(saving);bank.getCustomer(1).addAccount(checking);checking=new CHECACCOUNT (200.00);bank.getCustomer(2).addAccount(checking);saving=new SA VING(1500.00, 0.05);checking=new CHECACCOUNT (200.00, true, 400.00);bank.getCustomer(3).addAccount(saving);计算机科学与工程系bank.getCustomer(3).addAccount(checking);saving=new SA VING(150.00, 0.05);bank.getCustomer(4).addAccount(saving);bank.getCustomer(4).addAccount(checking);CUSTOMERREPORT cr=new CUSTOMERREPORT();cr.generateReport(bank);}}11。