目录
说明
项目介绍
功能介绍
结构图
各模块代码
登录界面
服务选择界面
存取款界面
修改密码模块
转账模块
总代码
简单做了一个java的ATM机项目、本项目只能作为一个简单的运行程序。因为没有学到数据库,文件等内容,没有存储功能,只能用于已经规定的账户的运行。又因为没有学到图形化界面等内容,不会有弹窗之类的界面,只能用运行窗口进行交互。
本项目的代码是在一个名称为jdk.java的文件里,复制粘贴的时候要注意。
编写程序实现ATM机常见功能。具体功能包括:
(1) 登陆页面模块,对取款者进行身份验证。
(2) 选择服务模块 ,包括取款,余额查询,转帐,修改密码,退出等功能模块。
(3) 取款模块,实现取款的具体操作。
(4) 查询余额模块,查看当前登陆人员的余额。
(5) 修改密码模块,可以方便的实现当前登陆人员对自己的密码进行修改。
(6) 退卡模块,完成取款,查询等功能后退出银行卡。
本系统主要包括登陆模块设计,选择服务模块设计,取款和存款模块设计,修改密码模块设计,退卡模块设计等几个功能模块。其中,
(1)登陆模块设计:与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。
(2) 选择服务模块设计:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
(3) 取款模块设计:在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。
(4) 修改密码模块设计:在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次要匹配,否则也会报错,然后再重新回到修改密码的界面。
(5) 退卡模块设计:此功能非常简单,仅仅是实现弹出卡的功能。
总体设计中最核心的问题是系统总体功能结构的确定和子系统与模块的划分,结构化。
ATM取款机系统功能结构图,如图1所示:
图1 ATM取款机系统功能结构图
void load()
{
Scanner in =new Scanner(System.in);
System.out.println("账号");
id=in.next();
System.out.println("密码");
pwd=in.nextInt();
if(id.equals(gid)&&pwd==123456)
{
service();//登陆成功后进入选择服务界面
}
else
{
System.out.println("错误");
load();//登陆失败后报错并重置
}
}
这个登录界面没有多次输入错误密码锁定的功能,需要的话可以自己加。
void service()
{
int choice;
System.out.println("选择服务 ");
System.out.println("1.存款与取款\n2.查询金额\n3.转账\n4.修改密码\n5.退出");
Scanner in =new Scanner(System.in);
choice=in.nextInt();
if(choice==1)
{
service1();//进入存取款模块
}
else if(choice==2)
{
System.out.println("账户余额为:"+gmoney);//余额查询模块,直接输出,没有再创建函数
service();//返回服务选择界面界面
}
else if(choice==3)
{
service3();//调用转账函数,进入转账界面
}
else if(choice==4)
{
sevice4();//调用密码修改函数,进入密码修改界面
}
else if(choice==5)
{
System.out.println("谢谢使用本ATM机!");//退卡
load();//返回登录界面
}
else
{
System.out.println("错误");
}
}
void service1()
{
int choice1;
System.out.println("存款请输入1,取款请输入2");
Scanner in =new Scanner(System.in);
choice1=in.nextInt();
if(choice1==1)
{
deposit();//存款模块
}
else if(choice1==2)
{
Withdrawal();//取款模块
}
else
{
System.out.println("错误选择,正在跳转主界面");
service();
}
}
void deposit()//存款
{
int money;
System.out.println("请输入存款金额");
Scanner in =new Scanner(System.in);
money=in.nextInt();
if(money%100==0)
{
System.out.println("正在存款中,请把人民币放入放钞口");
gmoney=gmoney+money;
System.out.println("账户金额为:"+gmoney);
service();
}
else
{
System.out.println("金额输入错误,请重新输入");
deposit();
}
}
void Withdrawal()//取款
{
int money;
System.out.println("请输入取款金额");
Scanner in =new Scanner(System.in);
money=in.nextInt();
if(money%100==0)
{
System.out.println("正在取款中,请注意取钞口");
gmoney=gmoney-money;
System.out.println("账户金额为:"+gmoney);
service();
}
else
{
System.out.println("金额输入错误,请重新输入");
Withdrawal();
}
}
}
void sevice4()
{
System.out.println("请设置一个密码:");
Scanner in = new Scanner(System.in);
String pass = in.next();
System.out.println("重复管理员密码:");
in = new Scanner(System.in);
String pass1 = in.next();
if (pass.equals(pass1))
{
System.out.println("已生效,请牢记密码:" + pass);
service();
}
else {
System.out.println("两次密码不一致,请重新设置。");
sevice4();
}
}
这个模块因为没有数据库等原因,并不能实现完全的作用,谨慎复制!
void sevice4() throws IOException
{
System.out.println("请设置一个密码:");
Scanner in = new Scanner(System.in);
int pass = in.nextInt();
System.out.println("重复管理员密码:");
in = new Scanner(System.in);
int pass1 = in.nextInt();
if (pass==pass1) {
pwd=pass1;
System.out.println("已生效,请牢记密码:" + pwd);
// message();
service();
}
else {
System.out.println("两次密码不一致,请重新设置。");
sevice4();
}
}
这是另一个版本,密码仅为int型的,并且有了小改动,还是因为数据库等原因,功能不完整!
void service3()
{
int Transfer;
System.out.println("转账");
System.out.println("输入转出金额");
Scanner in =new Scanner(System.in);
Transfer=in.nextInt();
if(Transfer>0) {
if(Transfer<=gmoney){
gmoney=gmoney-Transfer;
System.out.println("转账成功!余额为;"+(gmoney));
}
else {
System.out.println("余额不足");
service();
}
}
else {
System.out.println("输入正确金额");
service3();
}
service();
}
因为没有数据库连接的原因,没有加转入账户的信息输入等功能,仅做到了系统自带账号的余额减少的功能!
import java.util.Scanner;
class xinxi{
String id;
String gid="admin";
int pwd;
int gmoney;
void load()
{
Scanner in =new Scanner(System.in);
System.out.println("账号");
id=in.next();
System.out.println("密码");
pwd=in.nextInt();
if(id.equals(gid)&&pwd==123456)
{
service();
}
else
{
System.out.println("错误");
load();
}
}
void service()
{
int choice;
System.out.println("选择服务 ");
System.out.println("1.存款与取款\n2.查询金额\n3.转账\n4.修改密码\n5.退出");
Scanner in =new Scanner(System.in);
choice=in.nextInt();
if(choice==1)
{
service1();
}
else if(choice==2)
{
System.out.println("账户余额为:"+gmoney);
service();
}
else if(choice==3)
{
service3();
}
else if(choice==4)
{
sevice4();
}
else if(choice==5)
{
System.out.println("谢谢使用本ATM机!");
load();
}
else
{
System.out.println("错误");
}
}
void sevice4()
{
System.out.println("请设置一个密码:");
Scanner in = new Scanner(System.in);
String pass = in.next();
System.out.println("重复管理员密码:");
in = new Scanner(System.in);
String pass1 = in.next();
if (pass.equals(pass1)) {
System.out.println("已生效,请牢记密码:" + pass);
service();
}
else {
System.out.println("两次密码不一致,请重新设置。");
sevice4();
}
}
void service3()
{
int Transfer;
System.out.println("转账");
System.out.println("输入转出金额");
Scanner in =new Scanner(System.in);
Transfer=in.nextInt();
if(Transfer>0) {
if(Transfer<=gmoney){
gmoney=gmoney-Transfer;
System.out.println("转账成功!余额为;"+gmoney);
}
else {
System.out.println("余额不足");
service();
}
}
else {
System.out.println("输入正确金额");
service3();
}
service();
}
void service1()
{
int choice1;
System.out.println("存款请输入1,取款请输入2");
Scanner in =new Scanner(System.in);
choice1=in.nextInt();
if(choice1==1)
{
deposit();
}
else if(choice1==2)
{
Withdrawal();
}
else
{
System.out.println("错误选择,正在跳转主界面");
service();
}
}
void deposit()
{
int money;
System.out.println("请输入存款金额");
Scanner in =new Scanner(System.in);
money=in.nextInt();
if(money%100==0)
{
System.out.println("正在存款中,请把人民币放入放钞口");
gmoney=gmoney+money;
System.out.println("账户金额为:"+gmoney);
service();
}
else
{
System.out.println("金额输入错误,请重新输入");
deposit();
}
}
void Withdrawal()
{
int money;
System.out.println("请输入取款金额");
Scanner in =new Scanner(System.in);
money=in.nextInt();
if(money%100==0)
{
System.out.println("正在取款中,请注意取钞口");
gmoney=gmoney-money;
System.out.println("账户金额为:"+gmoney);
service();
}
else
{
System.out.println("金额输入错误,请重新输入");
Withdrawal();
}
}
}
public class jdk {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in =new Scanner(System.in);
xinxi message1=new xinxi();
message1.load();
}
}