博客班级 AHPU软件工程
作业要求 ATM自助银行服务系统
作业目标 编码实现ATM自助银行服务系统
学号 3180701118

一、作业要求

编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

(5)转账(一个账户转到另一个账户)等...

二、代码及运行界面

1、test类

(Java程序的入口)

♡代码:

public class Main {
public static void main(String[] args) {
bank b=new bank ();
User u=new User();
b.menu();
}
}

2、User类

(主要是set、get方法和类的构造器)

♡代码:

public class User {
private String name;//姓名
private int accountId;//账号
private String password;//密码
private String address;//家庭地址
private String phone;//联系电话
private double balance;//余额
public User(){}
public User(String name, int accountId, String password, String address, String phone, double balance) {
this.name = name;
this.accountId = accountId;
this.password = password;
this.address = address;
this.phone = phone;
this.balance = balance;
} public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
} public int getAccountId(){
return this.accountId;
}
public void setAccountId(int accountId){
this.accountId=accountId;
} public String getPassword(){
return this.password;
}
public void setPassword(String password){
this.password=password;
} public String getAddress(){
return this.address;
}
public void setAddress(String address){
this.address=address;
} public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
} public double getBalance(){
return this.balance;
}
public void setBalance(double balance){
this.balance=balance;
}
}

3、bank类

(实现ATM的操作功能)

1.菜单选项

(选择开户/登录)

♡代码:

public void menu() {

        Scanner sc = new Scanner(System.in);
int ch;
while(true){
System.out.println("===========欢迎使用ATM自助银行服务==========");
System.out.printf("\t\t\t1、开户\n\t\t\t2、登录\n\t\t\t0、退出\n");
System.out.println("============欢迎使用ATM自助银行服务==========");
System.out.print("输入您要操作编号:");
ch = sc.nextInt();
switch (ch) {
case 1:
setAccount();//开户
break;
case 2:
onuser = userLogin();//登录
if(onuser!=null) menu1();
break;
case 0: //退出
return;
default:
System.out.println("输入错误!请重新输入!");
break;
}
}
}

♡运行界面:

2.开户

♡代码:

//开户
public void setAccount() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入姓名:");
String name = sc.next();
System.out.print("请输入家庭地址:");
String address = sc.next();
System.out.print("请输入身份证号:");
String accountId = sc.next();
System.out.print("请输入手机号:");
String phone=sc.next();
System.out.print("请输入银行卡要设置的密码:");
String pwd1 = sc.next();
System.out.print("请再次输入密码:");
String pwd2 = sc.next();
if (pwd1.equals(pwd2)) {
System.out.println(i);
user[i] = new User(name, i, pwd1, address,phone, 0);
System.out.println("开户成功!你的卡号为:" + i);
i++;
} else
System.out.println("两次密码不同!请您再一次确认密码!");
}

♡运行界面:

3.登录

♡代码:

    public User userLogin() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入卡号");
int aId = sc.nextInt();
System.out.print("请输入密码");
String pwd = sc.next();
for (int i = 0; i < user.length; i++) {
if (user[i] != null) {
if (aId == user[i].getAccountId() && pwd.equals(user[i].getPassword())) {
System.out.println(user[i].getName() + "先生/女士,欢迎登录!");
return user[i];
}
}
}
System.out.println("卡号或密码有误");
return null;
}

♡运行界面:

4.菜单选择(登录成功操作选项)

♡代码:

public void menu1(){
Scanner sc = new Scanner(System.in);
int ch;
while(true){
System.out.println("===========欢迎使用ATM自助银行服务==========");
System.out.println("\t\t1、取款\n\t\t2、存款\n\t\t3、查询余额\n\t\t4、转账\n\t\t5、修改密码\n\t\t6、销户\n\t\t7、重新登录");
System.out.println("============欢迎使用ATM自助银行服务==========");
System.out.print("输入您要操作编号:");
ch = sc.nextInt();
switch (ch) {
case 1:
drawMoney();//取款
break;
case 2:
depositMoney();//存款
break;
case 3:
showBalance();//查询余额
break;
case 4:
transferMoney();//转账
break;
case 5:
updatePassword();//修改密码
break;
case 6:
cancelAccount();//销户
return;
case 7:
reLogin();//重新登录
return;
default:
System.out.println("输入错误!请重新输入!");
break;
}
}
}

♡运行界面:

5.取款

♡代码:

    public void drawMoney() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入取款金额:");
double blc = sc.nextDouble();
if (blc > onuser.getBalance()) {
System.out.println("您的余额不足!无法取钱!");
} else if (blc <= 0) {
System.out.println("输入不正确!");
} else {
onuser.setBalance(onuser.getBalance() - blc);
System.out.println("取钱成功!");
}
}

♡运行界面:

6.存款

♡代码:

public void depositMoney() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入存款金额:");
double dsm = sc.nextDouble();
if (dsm <= 0) {
System.out.println("输入不正确!");
} else {
onuser.setBalance(onuser.getBalance() + dsm);
System.out.print(onuser.getBalance());
System.out.println("存款成功!");
}
}

♡运行界面:

7.查询余额

♡代码:

    public void showBalance() {
System.out.println("您的余额为:"+onuser.getBalance() );
}

♡运行界面:

8.转账

♡代码:

 public void transferMoney() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要转入的卡号;");
int aId = sc.nextInt();
if (user[aId] == null) {
System.out.println("该卡号不存在");
} else {
System.out.print("请输入要转入金额:");
double blc = sc.nextDouble();
if (blc > onuser.getBalance()) {
System.out.println("您的余额不足!无法取钱!");
} else if (blc <= 0) {
System.out.println("输入不正确");
} else {
onuser.setBalance(onuser.getBalance() - blc);
user[aId].setBalance(user[aId].getBalance() + blc);
System.out.println("转账成功");
}
} }

♡运行界面:

9.修改密码

♡代码:

public void updatePassword() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入新密码:");
String pwd1 = sc.next();
System.out.print("请再次输入密码:");
String pwd2 = sc.next();
if (pwd1.equals(pwd2)) {
onuser.setPassword(pwd1);
System.out.println("修改成功!");
} else
System.out.println("两次密码不同,请确认密码!"); }

♡运行界面:

10.销户

♡代码:

public void cancelAccount() {
user[onuser.getAccountId()] = null;
System.out.println("注销成功");
reLogin();
}

♡运行界面:

11.重新登陆

♡代码:

 public void reLogin() {
onuser = null;
System.out.println("欢迎下次光临!");
}

三、作业小结

psp表格

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 180 240
Development 开发 120 150
Analysis 需求分析(包括学习新技术) 10 10
Design Spec 生成设计文档 30 40
Design Review 设计复审 5 10
Coding Standard 代码规范 5 10
Design 具体设计 20 40
Coding 具体编码 120 180
Code Review 代码复审 5 7
Test 测试(自我测试,修改代码,提交修改) 10 15
Reporting 报告 20 60
Test Report 测试报告 5 5
Size Measurement 计算工作量 5 10
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 10 15

心得和经验

本次作业用Java实现。

软件工程作业--ATM自助银行服务系统的更多相关文章

  1. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用

    不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...

  2. java测试ATM自助操作系统

    开学第一周系主任安排了一项测试,测试要求:模拟ATM自助取款机用文件进行存储账户信息,密码等,并进行存款取款,转账,查询记录等操作,而且要进行文件的读取与录入. 这是一个ATM自助取款的操作系统,进行 ...

  3. 语言模拟ATM自动取款机系统

    C语言实验报告       题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...

  4. 用dedecms自定义表单创建简易自助预约系统

    建站往往需要根据客户的需求来增加相应的功能,比如预约.平时用比较多的是织梦系统,那么如何用dedecms自定义表单创建简易自助预约系统呢? 进入dedecms后台,左侧菜单中依次点击“核心” - 频道 ...

  5. 软件工程作业 - word count

    (编程和软件工程作业系列) 实践最简单的项目:WC 实践是理论的基础和验证标准,希望读者贯彻“做中学”的思想,动手实现下面的项目,并和别人的成绩相比较,分析产生差距的原因. 1. 实现一个简单而完整的 ...

  6. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统正式上线

    经过大量的测试和开发工作,涛舅舅苹果 IOS APP自助生成系统正式上线! 本系统主要功能: 1.用最最简单的方式将H5网站打包生成一个苹果APP 2.只需要提供APP标题,H5网站首页url地址,一 ...

  7. Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

    Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...

  8. 对自助提卡系统EDLM的一次代码审计

    前言 并非有意愿要审计该站,前面的走的黑盒没有过于精彩部分就不在贴上了,对于此系统站你们懂的,多说无益,这套程序是开源的,像这种自助提卡系统相信大家已经不在陌生了,很多违法网站通过这种平台方式提卡密的 ...

  9. php编写刷网课自助下单系统(第三方支付实例)

    此项目是由于本人刚刚入门php且在校代刷网课而编写的,由于在上课时间不方便接单,故特意写一个自助下单系统来实现客户自助下单.本项目主要实现以下功能:1.用户下单2.用户支付3.用户通过账号查询订单4. ...

随机推荐

  1. LVM创建及管理

    安装lvm yum install -y lvm yum install -y lvm

  2. day53 Pyhton 前端04

    内容回顾: 盒子: 内边距:padding,解决内部矛盾,内边距的增加整个盒子也会增加 外边距:margin,解决外部矛盾,当来盒子都有外边距的时候,取两者最大值 边框:border border-c ...

  3. 【源码项目+解析】C语言/C++开发,打造一个小项目扫雷小游戏!

    一直说写个几百行的小项目,于是我写了一个控制台的扫雷,没有想到精简完了代码才200行左右,不过考虑到这是我精简过后的,浓缩才是精华嘛,我就发出来大家一起学习啦,看到程序跑起来能玩,感觉还是蛮有成就感的 ...

  4. Docker下部署springboot项目

    1.背景 如何在docker容器环境下部署一个springboot项目? 2.具体步骤 第一步:准备一个springboot项目的xxxx.jar包 jar包中用于测试的一个接口如下 第二步:编写Do ...

  5. PHP SPL标准库-迭代器

    通过某种统一的方式遍历链表或者数组中的元素的过程叫做迭代遍历,这种统一的遍历工具我们叫做迭代器. PHP中迭代器是通过Iterator 接口定义的. ArrayIterator迭代器 foreach ...

  6. Vue 父子组件通信入门

    父组件向子组件传值 1.组件实例定义方式,注意:子组件一定要使用props属性来定义父组件传递过来的数据 <script type="text/javascript"> ...

  7. Jupyter Notebook使用教程

    关于安装我就不说了,可以参考知乎https://zhuanlan.zhihu.com/p/33105153(总结的很全面) 首先打开Jupyter Notebook后,新建notebook:点击右上角 ...

  8. [C#.NET 拾遗补漏]10:理解 volatile 关键字

    要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理.比如对于下面这段代码: public class Example { public int x; public v ...

  9. D. Yet Another Problem On a Subsequence 解析(DP)

    Codeforce 1000 D. Yet Another Problem On a Subsequence 解析(DP) 今天我們來看看CF1000D 題目連結 題目 略,請直接看原題 前言 這題提 ...

  10. 【总结】spring基础

    一.spring 1.spring体系结构 (1)核心容器(core container):由spring-core,spring-beans,spring-context和spring-expres ...