封面
实验题目
姓 名
学 院
专 业
学 号 指导教师
基于面向对象思想编写的银行系统 软件学院 软件工程 2011 年 5 月11日
银行系统实验报告
1、实验目的
(1)熟悉java面向对象的编程方法,熟悉类的使用;
(2)掌握this、static关键字的使用; (3)熟练掌握Vector类的使用; (4)学会构造函数;
(5)熟练编程中的流程控制;
2、实验步骤
(1)在整个程序中抽取出两个类:银行顾客和管理员,其中银行顾客用Cust类表示,管理员用Emp类表示。银行顾客具有的属性为:取钱(getmoney)、存钱(savemoney)、查询(printlnfor)、转账(zhuanzhang),修改密码(changePWD);管理员的属性为:添加用户(add)、删除用户(delete)、计算总额(allsum)、打印顾客清单(print)、查询某个顾客(chaxun)。
(2)定义一个工具类KB,为以后输入语句提供方便;
(3)按需求调用各个类的行为状态完成类的编写,再编写主函数; (4)调试并运行程序。
3.实验过程(问题及解决方案)
(1)Cust类中判断密码时,应用这样的代码 boolean pwd()
{
for (int a=0;a<3;a++ ) {
System.out.println(\"请输入密码\");
int i=new Scanner(System.in).nextInt(); if(i==this.pwd) return true; else
{ System.out.println(\"密码输入错误\");
System.out.println(\"重新输入请按1,\退出请按2\\n\"); int g=new Scanner(System.in).nextInt();
- 1 -
}
if (g==2)
{ return false;
}
} }
结果编译时出错,显示无返回语句
解决方案:输入密码为错,且选择“2”退出时,用break跳出循环,最后再return false 即
boolean pwd()
{
for (int a=0;a<3;a++ ) {.
...
}
}
if (g==2) { }
break;
}
return false;
(2)运行判断密码的程序时,三次输入密码错误时应直接跳出程序,然而在上面这个程序中并没有直接跳出,而是再次执行语句System.out.println(\"重新输入请按1,\退出请按2\\n\");然后才跳出循环 解决方案:
方案1:将输出提示错误的语句与取密码值的语句分开放在两个不同的for循环中;结果行不通;
方案2:将a<3改成a<2,然后在for后面再写一条当a=2时的语句,即
boolean pwd()
{
- 2 -
int a=0;
for (a=0;a<2; ) {...
}
if (g==2) {
break; } else
a++;
} if(a==2)
System.out.println(\"密码输入有误,请下次光临\"); }
return false;
结果不成功;
方案:3:分析,当连续输入3次错误的密码时,应该显示两次“密码输入错误,请重新输入”,所以当a=2时就应该不在执行这条输出语句,所以就想办法给这条语句自己一个约束条件,即当a!=2时执行这条语句,所以就加上一个if语句限制这条语句,结果运行成功。
boolean pwd()
System.out.println(\"密码输入错误\");
System.out.println(\"重新输入请按1,\退出请按2\\n\"); int g=new Scanner(System.in).nextInt();
{
...
else {
if (a!=2)
{
- 3 -
}
}
if (g==2) {
break; }
} else
System.out.println(\"对不起,请您下次光临\");
}
return false;
(3)转账时未传递参数,结果显示找不到符号v
解决方案:将zhuanzhang()改为zhuanzhang(Vector v),同时将与此有关的调用都传递上参数。
(4)测试时v找不到符号
解决方案:将所有的“v.”改成“e.v.”,原因是Cust类中的顾客信息的初始化都是在管理员的类中完成的,所以想要调用顾客信息时要将管理员的类名加在前面。
4.实验总结
Java是一种简单的、面向对象的、安全的编程语言,它具有可移植性;Java中的程序中的类能够动态的载入到运行环境中,类的使用也使java程序的升级变得更加简单,更加容易实现。
Vector类的使用使java程序添加删除信息变得十分容易。
使用static关键字可以使它所定义的类成员的使用完全独立于该类的任何对象,使该类可以被它自己使用,一个成员被static修饰之后,它可以在该类的任何对象创建之前被访问,而不需要引用任何对象。但同时static关键字也有几条限制,如它只能引用static类型的数据,只能调用其他的static方法;
在成员方法中,对访问的同类中成员前加不加this效果都一样,但this关键字也并不是没有用处的,如在以下两种情况下使用this就使程序变得更加完善、好用:(1)当我们想通过构造的方法将外部传入的参数赋值给类成员变量,构造方法的形参名称与类成员变量名相同时,这时需要使用this;(2)构造方法是在产生对象时被java系统自动调用的,我们不能在程序中像调用其他方法一样去调用构造方法。这时我们可以用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法;
构造方法在程序设计中非常有用,它可以为类的成员进行初始化工作,当一个
- 4 -
类的实例对象刚刚出现时,这个类的构造方法就回自动被调用,我们可以再这个方法中加入要完成初始化工作的代码,它可以避免我们在编程过程中忽略对变量的初始化。
- 5 -
因篇幅问题不能全部显示,请点此查看更多更全内容