java面向对象版ATM管理系统.docx
《java面向对象版ATM管理系统.docx》由会员分享,可在线阅读,更多相关《java面向对象版ATM管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
java面向对象版ATM管理系统
这段时间闲的没事接了一个课程设计,具体就是学完java基础入门语法和面向对象(封装,继承,多态)之后需要做一个模拟ATM的管理系统,功能包括注册登陆、存取查功能。
前后思考加实现用了半天时间去完善修改实现此系统,一方面是对自己以前所学知识的回顾以及综合运用,另一方面也是给新人指条路,毕竟学习确实不易,还是希望大家少走弯路。
Java基础语法和面向对象的重点在此简单罗列以下,各位小伙伴查漏补缺,看自己哪块知识有漏洞去加深学习巩固下知识------》》》
变量、运算符、循环、函数、数组、面向对象、this、super、static、final、成员变量局部变量、构造函数、函数重载、重写/覆写、封装、继承、多态、抽象、接口。
其中尤为重要的是接口,无论是以后工作还是学习最常用最重要的就是接口,做项目各成员分工之后各自实现自己的部分,最后对接一下接口就OK了,所以说接口无论是在面向对象中还是在以后的开发中都很重要。
通俗来讲接口举个例子,电脑的USB接口可以对接鼠标、键盘、硬盘、数据线等等,对接的对象不同实现的功能就不同,在实际开发中每个人的功能是不一样的,实现了接口的对接即实现了此功能的植入调用。
好了,接下来是开始今天的项目展示和思路分析,话不多说开始!
首先思路要清晰,我们需要什么,要做什么,有什么用,了解清楚才好下手。
具体分为存取成员信息变量类、登陆注册类、存查取类、菜单类以及测试类。
各个功能模块实现独立分开,详细介绍如下:
Account类:
用于存取用户成员变量信息
Menu类:
主菜单即登陆注册菜单,以及登陆成功后的存取查操作菜单
RegisAndLogin类:
包括登陆和注册方法
Operation类:
登陆成功后的存取查方法
AtmTest类:
功能测试类
重点:
该系统最重要的是要把账户类作为参数去传递,因为要实现操作的变量信息随时能够接收到,举个例子,如果不把账户类作为参数,在注册信息成功后再去登陆是绝对不可能的,因为变量复赋值后的值是传递不过去的,其他类和方法接收不到。
1.Account.java类
成员变量私有化,其他类通过setter、getter方法获取以及存取信息(有参构造函数可以不写,我再此是为了在测试的时候不用在去注册信息,直接登录就可以了,去掉有参构造的同时在测试类中实例化账户类时调用无参构造器就可以)
packagecom.atm.twelve;
publicclassAccount{
privateintusername;
privateintpassword;
privateStringname;
privateintage;
privateintmoney;
publicintgetUsername(){
returnusername;
}
publicvoidsetUsername(intusername){
this.username=username;
}
publicintgetPassword(){
returnpassword;
}
publicvoidsetPassword(intpassword){
this.password=password;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicintgetMoney(){
returnmoney;
}
publicvoidsetMoney(intmoney){
this.money=money;
}
publicAccount(){
}
publicAccount(intusername,intpassword,Stringname,intage,intmoney){
this.username=username;
this.password=password;
this.name=name;
this.age=age;
this.money=money;
}
}
2.Menu.java类
packagecom.atm.twelve;
//菜单
publicclassMenu{
publicvoidmenu(){
System.out.println("----------------------");
System.out.println("|欢迎进入ATM机系统|");
System.out.println("|1注册|");
System.out.println("|2登录|");
System.out.println("|欢迎进入ATM机系统|");
System.out.println("----------------------");
System.out.println("请输入整数序号:
");
}
publicvoidwelcome(Accountaccount){
System.out.println("----------------------");
System.out.println("欢迎"+account.getName()+"进入ATM机系统");
System.out.println("|1查询余额|");
System.out.println("|2存款|");
System.out.println("|3取款|");
System.out.println("|4退出|");
System.out.println("----------------------");
System.out.println("请输入整数序号:
");
}
}
3.AtmTest.java类
packagecom.atm.twelve;
importjava.util.Scanner;
//ATM测试类
publicclassAtmTest{
publicstaticvoidmain(String[]args){
Menum=newMenu();
Scannersc=newScanner(System.in);
RegisAndLoginr=newRegisAndLogin();
Accounta=newAccount(17159,123456,"杨乾",20,10000);
booleanb=false;
Operationo=newOperation();
//主菜单界面
while(true){
m.menu();
intindex=sc.nextInt();
if(index==1){
//注册
b=r.regis(a,sc);
if(b){
System.out.println("注册成功!
");
System.out.println(a.getName()+"------初始账户余额:
"+a.getMoney());
}else{
System.out.println("注册次数用完,请明天再来!
");
}
}elseif(index==2){
//登陆
b=r.login(a,sc);
if(b){
System.out.println("登陆成功,欢迎"+a.getName()+"用户!
");
break;
}else{
System.out.println("登陆次数用完,请明天再来!
");
}
}
}
//操作界面
if(b){
while(true){
m.welcome(a);
intindex=sc.nextInt();
if(index==1){
//查询余额
o.findMoney(a,sc);
}elseif(index==2){
//存款
o.addMoney(a,sc);
}elseif(index==3){
//取款
o.putMoney(a,sc);
}else{
//退出
break;
}
}
}
}
}
4.RegisAndLogin.java类
两个方法用boolean用来返回是否成功注册登录,以便后续的操作判断
packagecom.atm.twelve;
importjava.util.Scanner;
//登陆、注册类
publicclassRegisAndLoginextendsAccount{
//boolean用于判断是否注册成功
publicbooleanregis(Accountaccount,Scannersc){
System.out.println("请输入整数型的注册账户:
");
intuname=sc.nextInt();
for(inti=0;i<3;i++){
System.out.println("请输入整数型的账户密码:
");
intpword=sc.nextInt();
System.out.println("请二次输入密码:
");
intpword2=sc.nextInt();
if(pword==pword2){
//成功
account.setPassword(pword);
break;
}else{
System.out.println("两次输入密码不正确!
");
if(i==2){
returnfalse;
}
}
}
System.out.println("请输入用户名:
");
Stringname=sc.next();
System.out.println("请输入年龄:
");
intage=sc.nextInt();
account.setMoney(10000);
account.setUsername(uname);
account.setName(name);
account.setAge(age);
returntrue;
}
//boolean用于判断是否登陆成功
publicbooleanlogin(Accountaccount,Scannersc){
System.out.println("请输入账户名:
");
for(inti=0;i<3;i++){
intuname=sc.nextInt();
if(uname==account.getUsername()){
//账号正确
break;
}else{
System.out.println("不存在此账户!
请重新输入:
");
if(i==2){
returnfalse;
}
}
}
System.out.println("请输入账户密码:
");
for(intj=0;j<3;j++){
intpword=sc.nextInt();
if(pword==account.getPassword()){
//密码正确
break;
}else{
System.out.println("密码有误!
请重新输入:
");
if(j==2){
returnfalse;
}
}
}
returntrue;
}
}
5.Operation.java类
注意:
1.存款数额大于0
2.取款数额为正且不能大于所有金额
3.查询余额为初始余额加上存取的余额,因为初始余额是在注册的时候已经赋值过的
packagecom.atm.twelve;
importjava.util.Scanner;
publicclassOperation{
publicvoidaddMoney(Accountaccount,Scannersc){
System.out.println("请输入存款数额:
");
intmoney=sc.nextInt();
if(money>0){
account.setMoney(money+account.getMoney());
System.out.println("存款成功!
");
}else{
System.out.println("存款数额不能为零或负!
");
}
}
publicvoidfindMoney(Accountaccount,Scannersc){
System.out.println("您的余额为:
"+account.getMoney());
}
publicvoidputMoney(Accountaccount,Scannersc){
System.out.println("请输入你的取款额:
");
intmoney=sc.nextInt();
if(0System.out.println("取款成功!
");
account.setMoney(account.getMoney()-money);
}else{
System.out.println("余额不足!
");
}
}
}
再来个运行效果图吧
因为有构造函数,用户信息已经有了,所以直接登陆即可
1.账号三次输入错误后,重新登陆密码三次输入错误,再成功登陆
----------------------
| 欢迎进入ATM机系统 |
| 1注册 |
| 2登录 |
| 欢迎进入ATM机系统 |
----------------------
请输入整数序号:
2
请输入账户名:
156
不存在此账户!
请重新输入:
156
不存在此账户!
请重新输入:
156
不存在此账户!
请重新输入:
登陆次数用完,请明天再来!
----------------------
| 欢迎进入ATM机系统 |
| 1注册 |
| 2登录 |
| 欢迎进入ATM机系统 |
----------------------
请输入整数序号:
2
请输入账户名:
17159
请输入账户密码:
123
密码有误!
请重新输入:
456
密码有误!
请重新输入:
456
密码有误!
请重新输入:
登陆次数用完,请明天再来!
----------------------
| 欢迎进入ATM机系统 |
| 1注册 |
| 2登录 |
| 欢迎进入ATM机系统 |
----------------------
请输入整数序号:
2
请输入账户名:
17159
请输入账户密码:
123456
登陆成功,欢迎杨乾用户!
----------------------
欢迎杨乾进入ATM机系统
| 1查询余额 |
| 2存款 |
| 3取款 |
| 4退出 |
----------------------
请输入整数序号:
2.注册密码三次输入错误之后重新注册成功后登陆
----------------------
| 欢迎进入ATM机系统 |
| 1注册 |
| 2登录 |
| 欢迎进入ATM机系统 |
----------------------
请输入整数序号:
1
请输入整数型的注册账户:
17159
请输入整数型的账户密码:
123456
请二次输入密码:
456
两次输入密码不正确!
请输入整数型的账户密码:
123
请二次输入密码:
456
两次输入密码不正确!
请输入整数型的账户密码:
123
请二次输入密码:
456
两次输入密码不正确!
注册次数用完,请明天再来!
----------------------
| 欢迎进入ATM机系统 |
| 1注册 |
| 2登录 |
| 欢迎进入ATM机系统 |
----------------------
请输入整数序号:
1
请输入整数型的注册账户:
17159
请输入整数型的账户密码:
123456
请二次输入密码:
123456
请输入用户名:
YQ
请输入年龄:
20
注册成功!
YQ------初始账户余额:
10000
----------------------
| 欢迎进入ATM机系统 |
| 1注册 |
| 2登录 |
| 欢迎进入ATM机系统 |
----------------------
请输入整数序号:
2
请输入账户名:
17159
请输入账户密码:
123456
登陆成功,欢迎YQ用户!
----------------------
欢迎YQ进入ATM机系统
| 1查询余额 |
| 2存款 |
| 3取款 |
| 4退出 |
----------------------
请输入整数序号:
3.登陆成功后存查取款
登陆成功,欢迎杨乾用户!
----------------------
欢迎杨乾进入ATM机系统
| 1查询余额 |
| 2存款 |
| 3取款 |
| 4退出 |
----------------------
请输入整数序号:
1
您的余额为:
10000
----------------------
欢迎杨乾进入ATM机系统
| 1查询余额 |
| 2存款 |
| 3取款 |
| 4退出 |
----------------------
请输入整数序号:
2
请输入存款数额:
8000
存款成功!
----------------------
欢迎杨乾进入ATM机系统
| 1查询余额 |
| 2存款 |
| 3取款 |
| 4退出 |
----------------------
请输入整数序号:
3
请输入你的取款额:
4567
取款成功!
----------------------
欢迎杨乾进入ATM机系统
| 1查询余额 |
| 2存款 |
| 3取款 |
| 4退出 |
----------------------
请输入整数序号:
1
您的余额为:
13433
----------------------
欢迎杨乾进入ATM机系统
| 1查询余额 |
| 2存款 |
| 3取款 |
| 4退出 |
----------------------
请输入整数序号: