博客班级 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. spring cloud 实现基于Nacos权重的负载均衡

    package com.water.step.service.user.nacos; import com.alibaba.nacos.api.exception.NacosException; im ...

  2. 如何给LG gram写一个Linux下的驱动?

    其实就是实现一下几个Fn键的功能,没有标题吹得那么牛. 不知道为啥,LG gram这本子意外的小众. 就因为这个,装Linux遇到的硬件问题就没法在网上直接搜到解决办法了. Fn + F9 实现阅读模 ...

  3. MeteoInfoLab脚本示例:Streamline流线图

    绘制Stramline流线图的函数是streamline,需要两个变量(U/V分量或者风向/风速).脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') u = f ...

  4. LeCun自曝使用C语言23年之久,2年前才上手Python,还曾短暂尝试Lua!

    程序员圈子的流行风潮,过几年就怀旧风走一波. 这不,最近Twitter上刮起了一阵编程语言使用历史的风潮. 连图灵奖得主.CNN之父-- Yann LeCun 也参与进来了. 他自曝使用C语言时间最长 ...

  5. 【UR #13】Yist

    UOJ小清新题表 题目摘要 UOJ链接 给出一个排列 \(A\) 以及它的一个非空子序列 \(B\),给出一个 \(x\) 并进行若干次操作,每一次操作需要在 \(A\) 中选择一个长度恰好为 \(x ...

  6. hugo官方相关文档地址

    +++ date="2020-10-17" title="hugo官方相关文档地址" tags=["hugo"] categories=[& ...

  7. 一文读懂Redis常见对象类型的底层数据结构

    Redis是一个基于内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件.Redis支持五种常见对象类型:字符串(String).哈希(Hash).列表(List).集合(Set)以及有序集合( ...

  8. Excel 导出的方法 之二

    // <summary> /// 导出到Excel lichenghu /// </summary> /// <param name="dt"> ...

  9. 使用ModelForm校验数据唯一性

    在设计模型类的时候,将指定字段设置unique=true属性,可以保证该字段在数据库中的唯一性. 使用ModelForm可以将指定模型类快速生成表单元素.在提交数据后,使用is_valid()校验时, ...

  10. The path "" is not a valid path to the 3.10.0-957.el7.x86_64 kernel headers.

    安装 kernel-devel yum install kernel-devel-$(uname -r)