软件工程作业--ATM自助银行服务系统
| 博客班级 | 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自助银行服务系统的更多相关文章
- 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用
不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...
- java测试ATM自助操作系统
开学第一周系主任安排了一项测试,测试要求:模拟ATM自助取款机用文件进行存储账户信息,密码等,并进行存款取款,转账,查询记录等操作,而且要进行文件的读取与录入. 这是一个ATM自助取款的操作系统,进行 ...
- 语言模拟ATM自动取款机系统
C语言实验报告 题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...
- 用dedecms自定义表单创建简易自助预约系统
建站往往需要根据客户的需求来增加相应的功能,比如预约.平时用比较多的是织梦系统,那么如何用dedecms自定义表单创建简易自助预约系统呢? 进入dedecms后台,左侧菜单中依次点击“核心” - 频道 ...
- 软件工程作业 - word count
(编程和软件工程作业系列) 实践最简单的项目:WC 实践是理论的基础和验证标准,希望读者贯彻“做中学”的思想,动手实现下面的项目,并和别人的成绩相比较,分析产生差距的原因. 1. 实现一个简单而完整的 ...
- 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统正式上线
经过大量的测试和开发工作,涛舅舅苹果 IOS APP自助生成系统正式上线! 本系统主要功能: 1.用最最简单的方式将H5网站打包生成一个苹果APP 2.只需要提供APP标题,H5网站首页url地址,一 ...
- Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode
Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...
- 对自助提卡系统EDLM的一次代码审计
前言 并非有意愿要审计该站,前面的走的黑盒没有过于精彩部分就不在贴上了,对于此系统站你们懂的,多说无益,这套程序是开源的,像这种自助提卡系统相信大家已经不在陌生了,很多违法网站通过这种平台方式提卡密的 ...
- php编写刷网课自助下单系统(第三方支付实例)
此项目是由于本人刚刚入门php且在校代刷网课而编写的,由于在上课时间不方便接单,故特意写一个自助下单系统来实现客户自助下单.本项目主要实现以下功能:1.用户下单2.用户支付3.用户通过账号查询订单4. ...
随机推荐
- spring cloud 实现基于Nacos权重的负载均衡
package com.water.step.service.user.nacos; import com.alibaba.nacos.api.exception.NacosException; im ...
- 如何给LG gram写一个Linux下的驱动?
其实就是实现一下几个Fn键的功能,没有标题吹得那么牛. 不知道为啥,LG gram这本子意外的小众. 就因为这个,装Linux遇到的硬件问题就没法在网上直接搜到解决办法了. Fn + F9 实现阅读模 ...
- MeteoInfoLab脚本示例:Streamline流线图
绘制Stramline流线图的函数是streamline,需要两个变量(U/V分量或者风向/风速).脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') u = f ...
- LeCun自曝使用C语言23年之久,2年前才上手Python,还曾短暂尝试Lua!
程序员圈子的流行风潮,过几年就怀旧风走一波. 这不,最近Twitter上刮起了一阵编程语言使用历史的风潮. 连图灵奖得主.CNN之父-- Yann LeCun 也参与进来了. 他自曝使用C语言时间最长 ...
- 【UR #13】Yist
UOJ小清新题表 题目摘要 UOJ链接 给出一个排列 \(A\) 以及它的一个非空子序列 \(B\),给出一个 \(x\) 并进行若干次操作,每一次操作需要在 \(A\) 中选择一个长度恰好为 \(x ...
- hugo官方相关文档地址
+++ date="2020-10-17" title="hugo官方相关文档地址" tags=["hugo"] categories=[& ...
- 一文读懂Redis常见对象类型的底层数据结构
Redis是一个基于内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件.Redis支持五种常见对象类型:字符串(String).哈希(Hash).列表(List).集合(Set)以及有序集合( ...
- Excel 导出的方法 之二
// <summary> /// 导出到Excel lichenghu /// </summary> /// <param name="dt"> ...
- 使用ModelForm校验数据唯一性
在设计模型类的时候,将指定字段设置unique=true属性,可以保证该字段在数据库中的唯一性. 使用ModelForm可以将指定模型类快速生成表单元素.在提交数据后,使用is_valid()校验时, ...
- 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)