java考试题求助

《Java程序设计教程》清华大学出版社 北京交通大学出版社 杨文军 董玉涛 主编
第八章 课后练习第7题
某银行有许多储户,每个储户可以拥有一个或多个账号。现请你开发一个软件,管理银行储户与账号业务。要求如下:
Bank类中有一个customers集合,用来存储所有的Customer(储户)对象,addCustomer()方法用语向该集合中添加储户,getCustomer()方法根据下标值获取某个储户,getNumOfCustomer()方法获取储户总数,getCustomers()方法返回储户列表,以便获得每个储户对象‘
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),则抛出异常并退出交易;如果允许透支(canOverdraft=true),但透支额(amount-balance)超出最大透支额的话,也抛出异常并退出交易;只有在不发生透支或透支额小于最大透支额时,交易才能正常进行。另外,在每次进行透支交易时,最大透支额(maxOverdraft)应作调整,以便使该账号的最大透支额随透支次数的增加而不断减少,从而避免透支的滥用,阻止信用膨胀。CheckingAccount类有两个构造方法,只带一个参数的构造方法用来初始化balance,同时设定canOverdraft=false,maxOverdraft=0.00.
CustomReport类用来显示每个储户的姓名及他所有的账号的类别和余额,以报表的形式输出。
根据以上描述,创建一个TestBanking类,并在其main方法中添加若干储户和账号,然后模拟存款,取款业务,并最终输出一张完整的报表。
要求:
1. 用文件来存储用户的所有信息。
2. 有用户图形界面。(最基本的:存钱、取钱、新增账号、新增账户,可以使用菜单来实现,也可以使用按钮来实现)。

采用以下表格进行模拟:

储户姓名 账号
Saving Account Checking Account
Jane Simms SavingsAccount(500.00,0.05) CheckingAccount(200.00,true,400.00)
Owen Bryant 无 CheckingAccount(200.00)
Tim Soley SavingsAccout(1500.00,0.05) CheckingAccount(300.00)
Maria Soley SavingsAccount(160.00,0.05) 与Tim Soley共享一个CheckingAccount
输出报表格式如下:

CUSTOMERS REPORT

储户姓名:Jane Simms
Savings Account:当前余额是¥****
Checking Account:当前余额是¥****

储户姓名:Owen Bryant
Checking Account:当前余额是¥****

储户姓名:Tim Soley
Savings Account:当前余额是¥****
Checking Account :当前余额是¥****

储户姓名:Maria Soley
Savings Account :当前余额是¥****
Checking Account :当前余额是¥****

Bank类中有一个customers集合,用来存储所有的Customer(储户)对象,addCustomer()方法用语向该集合中添加储户,getCustomer()方法根据下标值获取某个储户,getNumOfCustomer()方法获取储户总数,getCustomers()方法返回储户列表,以便获得每个储户对象‘
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),则抛出异常并退出交易;如果允许透支(canOverdraft=true),但透支额(amount-balance)超出最大透支额的话,也抛出异常并退出交易;只有在不发生透支或透支额小于最大透支额时,交易才能正常进行。另外,在每次进行透支交易时,最大透支额(maxOverdraft)应作调整,以便使该账号的最大透支额随透支次数的增加而不断减少,从而避免透支的滥用,阻止信用膨胀。CheckingAccount类有两个构造方法,只带一个参数的构造方法用来初始化balance,同时设定canOverdraft=false,maxOverdraft=0.00.
CustomReport类用来显示每个储户的姓名及他所有的账号的类别和余额,以报表的形式输出。
根据以上描述,创建一个TestBanking类,并在其main方法中添加若干储户和账号,然后模拟存款,取款业务,并最终输出一张完整的报表。
要求:
1. 用文件来存储用户的所有信息。
2. 有用户图形界面。(最基本的:存钱、取钱、新增账号、新增账户,可以使用菜单来实现,也可以使用按钮来实现)。

采用以下表格进行模拟:

储户姓名 账号
Saving Account Checking Account
Jane Simms SavingsAccount(500.00,0.05) CheckingAccount(200.00,true,400.00)
Owen Bryant 无 CheckingAccount(200.00)
Tim Soley SavingsAccout(1500.00,0.05) CheckingAccount(300.00)
Maria Soley SavingsAccount(160.00,0.05) 与Tim Soley共享一个CheckingAccount
输出报表格式如下:

CUSTOMERS REPORT

储户姓名:Jane Simms
Savings Account:当前余额是¥****
Checking Account:当前余额是¥****

储户姓名:Owen Bryant
Checking Account:当前余额是¥****

储户姓名:Tim Soley
Savings Account:当前余额是¥****
Checking Account :当前余额是¥****

储户姓名:Maria Soley
Savings Account :当前余额是¥****
Checking Account :当前余额是¥****
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-10
11在Oracle中,有一个教师表teacher的结构如下:
ID NUMBER(5),NAME VARCHAR2(25),EMAIL VARCHAR2(50)
下面哪个语句显示没有Email地址的教师姓名( )
A、SELECT name FROM teacher WHERE email = NULL;
B、SELECT name FROM teacher WHERE email <> NULL;
C、SELECT name FROM teacher WHERE email IS NULL;
D、SELECT name FROM teacher WHERE email IS NOT NULL;

12 关于类型定义Number(9,2)说法正确的有( )
A、整数部分9位,小数部分2位,共11位 B、整数部分7位,小数部分2位,共9位
C、整数部分6位,小数点一位,小数部分2位,共9位 D、以上说法均不正确

在Oracle中,有表Person,如下
id name tel age
001 Amber 1234 20
002 Bmy 2345 23
003 Emily 4567 30
004 Eric 5678 20
005 Roy 6789 25
13 SELECT Tel FROM Person WHERE Name like ‘_m_’;执行以上查询,结果是( )。
A 1234
B 2345
C 4567
D 以上皆非

14 以下对于存储过程和函数,描述错误的是( ):
A、存储过程和函数都属于子程序。
B、函数可以返回结果集,而过程不能。
C、JDBC中,调用oracle的存储过程,必须使用CallableStatement类。
D、JDBC中,可以使用CallableStatement调用返回结果集的函数,也可以直接在sql中调
15 在Oracle中,下面用于限制分组函数的返回值的子句是( )
A、WHERE B、HAVING
C、ORDER BY D、无法限定分组函数的返回值

16 关于触发器,下面说法错误的是( ):
A、触发器创建后,可以在sql和PL/SQL中调用
B、替代触发器中,不能包含commit语句
C、替代触发器主要应用于视图
D、创建触发器的语法是:create trigger …

17 .在画布中选择画笔的成员函数是
A.SelectObject(…);
B.SelectPen(…);
C.SelectBrush(…);
D.GetObject(…);

18 用于捕获键盘事件的消息是
A.WM_KEYBOARD
B.VK_ CHAR
C.VK_RETURN
D.WM_CHAR

19 4. 若有以下说明和语句,且0≤i<10, 则下面哪个是对数组元素地址的正确表示?
int a[ ]=, *p, i;
p=a;
A. &a[1] B. a++ C. &p D.&p[i]

20 有如下程序段:
int a []=;
int y,*p=&a[1];
y=(*--p)++;
printf(“%d\n”,y);
输出结果是什么?
A.6
B.8
C.7
D.5

21 .已定义"int a[5]=;int *P1=&a[0]",若b=*(++P1),则b和*P1的值分别为_ __。
A.100 200 B.200 200 C101 101 D.100 101

22 关于构造函数与析构函数的下列说法中正确的是: ①在类中构造函数与析构函数都有固定的函数名。
②在类中构造函数与析构函数都有相同的作用。
③在类中构造函数与析构函数都可以定义多个。
④在类中构造函数与析构函数都可以有返回值。
⑤在类中构造函数与析构函数的参数都可以有默认值。

23 在SGIP协议中,SP向运营商网关发送下行数据前,需要发送的数据包包是
A UNBIND B HELLO C BIND D DELIVER

24 关于synchronized关键字,下面正确的是
A 可以声明同步变量
B 可以声明同步线程
C 可以声明同步方法
D 可以声明同步类

25 public class Foo{
public static void main(String[] args){
try{
return;
}
finally{System.out.println(""Finally"");
}
}
}
结果是:
A 程序正常运行,但不输出任何结果。
B 程序正常运行,并输出 ""Finally""。
C 编译能通过,但运行时会出现一个例外。
D 因为没有catch语句块,所以不能通过编译。

26 下列程序的输出结果是()
public class MainClass{
private int i = 10;
public static void main(String[] args){
int i = 0;
i = i ++;
i+= 1;
System.out.println(i);
}
}
A、1 B、2 C、11 D、12
27 ServletContext对象是由谁创建的?()
选项:
(A)由Servlet容器负责创建,对于每个HTTP请求, Servlet容器都会创建一个ServletContext对象
(B)由JavaWeb应用本身负责为自己创建一个ServletContext对象
(C)由Servlet容器负责创建,对于每个JavaWeb应用,在启动时,Servlet容器都会创建一个ServletContext对象

28 以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?(单选)
request.setAttribute("count",new Integer(0));
Integer count = request.getAttribute("count");
选项:
A)不能编译通过 B)能编译通过,并正常运行
C) 编译通过,但运行时抛出ClassCastException

29 下面哪个说法是正确的? ()
选项:
(A) 对于每个要求访问maillogin.jsp的HTTP请求,Servlet容器都会创建一个HttpSession对象
(B)每个HttpSession对象都有惟一的ID。
(C)JavaWeb应用程序必须负责为HttpSession分配惟一的ID

30 为了使索引键的值在基本表中唯一,在建立索引语句中应使用保留字( )
A UNIQUE
B COUNT
C DISDINCT
D UNION
第2个回答  2011-01-01
11在Oracle中,有一个教师表teacher的结构如下:
ID NUMBER(5),NAME VARCHAR2(25),EMAIL VARCHAR2(50)
下面哪个语句显示没有Email地址的教师姓名( )
A、SELECT name FROM teacher WHERE email = NULL;
B、SELECT name FROM teacher WHERE email <> NULL;
C、SELECT name FROM teacher WHERE email IS NULL;
D、SELECT name FROM teacher WHERE email IS NOT NULL;

12 关于类型定义Number(9,2)说法正确的有( )
A、整数部分9位,小数部分2位,共11位 B、整数部分7位,小数部分2位,共9位
C、整数部分6位,小数点一位,小数部分2位,共9位 D、以上说法均不正确

在Oracle中,有表Person,如下
id name tel age
001 Amber 1234 20
002 Bmy 2345 23
003 Emily 4567 30
004 Eric 5678 20
005 Roy 6789 25
13 SELECT Tel FROM Person WHERE Name like ‘_m_’;执行以上查询,结果是( )。
A 1234
B 2345
C 4567
D 以上皆非

14 以下对于存储过程和函数,描述错误的是( ):
A、存储过程和函数都属于子程序。
B、函数可以返回结果集,而过程不能。
C、JDBC中,调用oracle的存储过程,必须使用CallableStatement类。
D、JDBC中,可以使用CallableStatement调用返回结果集的函数,也可以直接在sql中调
15 在Oracle中,下面用于限制分组函数的返回值的子句是( )
A、WHERE B、HAVING
C、ORDER BY D、无法限定分组函数的返回值

16 关于触发器,下面说法错误的是( ):
A、触发器创建后,可以在sql和PL/SQL中调用
B、替代触发器中,不能包含commit语句
C、替代触发器主要应用于视图
D、创建触发器的语法是:create trigger …

17 .在画布中选择画笔的成员函数是
A.SelectObject(…);
B.SelectPen(…);
C.SelectBrush(…);
D.GetObject(…);

18 用于捕获键盘事件的消息是
A.WM_KEYBOARD
B.VK_ CHAR
C.VK_RETURN
D.WM_CHAR

19 4. 若有以下说明和语句,且0≤i<10, 则下面哪个是对数组元素地址的正确表示?
int a[ ]=, *p, i;
p=a;
A. &a[1] B. a++ C. &p D.&p[i]

20 有如下程序段:
int a []=;
int y,*p=&a[1];
y=(*--p)++;
printf(“%d\n”,y);
输出结果是什么?
A.6
B.8
C.7
D.5

21 .已定义"int a[5]=;int *P1=&a[0]",若b=*(++P1),则b和*P1的值分别为_ __。
A.100 200 B.200 200 C101 101 D.100 101

22 关于构造函数与析构函数的下列说法中正确的是: ①在类中构造函数与析构函数都有固定的函数名。
②在类中构造函数与析构函数都有相同的作用。
③在类中构造函数与析构函数都可以定义多个。
④在类中构造函数与析构函数都可以有返回值。
⑤在类中构造函数与析构函数的参数都可以有默认值。

23 在SGIP协议中,SP向运营商网关发送下行数据前,需要发送的数据包包是
A UNBIND B HELLO C BIND D DELIVER

24 关于synchronized关键字,下面正确的是
A 可以声明同步变量
B 可以声明同步线程
C 可以声明同步方法
D 可以声明同步类

25 public class Foo{
public static void main(String[] args){
try{
return;
}
finally{System.out.println(""Finally"");
}
}
}
结果是:
A 程序正常运行,但不输出任何结果。
B 程序正常运行,并输出 ""Finally""。
C 编译能通过,但运行时会出现一个例外。
D 因为没有catch语句块,所以不能通过编译。

26 下列程序的输出结果是()
public class MainClass{
private int i = 10;
public static void main(String[] args){
int i = 0;
i = i ++;
i+= 1;
System.out.println(i);
}
}
A、1 B、2 C、11 D、12
27 ServletContext对象是由谁创建的?()
选项:
(A)由Servlet容器负责创建,对于每个HTTP请求, Servlet容器都会创建一个ServletContext对象
(B)由JavaWeb应用本身负责为自己创建一个ServletContext对象
(C)由Servlet容器负责创建,对于每个JavaWeb应用,在启动时,Servlet容器都会创建一个ServletContext对象

28 以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?(单选)
request.setAttribute("count",new Integer(0));
Integer count = request.getAttribute("count");
选项:
A)不能编译通过 B)能编译通过,并正常运行
C) 编译通过,但运行时抛出ClassCastException

29 下面哪个说法是正确的? ()
选项:
(A) 对于每个要求访问maillogin.jsp的HTTP请求,Servlet容器都会创建一个HttpSession对象
(B)每个HttpSession对象都有惟一的ID。
(C)JavaWeb应用程序必须负责为HttpSession分配惟一的ID

30 为了使索引键的值在基本表中唯一,在建立索引语句中应使用保留字( )
A UNIQUE
B COUNT
C DISDINCT
D UNION本回答被网友采纳
第3个回答  2018-07-29
控制台结果:2 9 18
indexOf(),从index位置寻找字符串str首次出现java的位置,第一次是2,然后index+=4,index=4,。第二次从str第5个位置开始寻找,以此类推。
第4个回答  2011-01-01
真想要的话,先把分给了,加我百度HI,我给你做个。。。。。。。。。
相似回答