软件工程作业--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. ...
随机推荐
- javascript 数据类型判断总结
一 typeof 回顾:js有五种基本数据类型:值类型("number","string","boolean","undefine ...
- Spring中的一些面试题
谈谈你对spring IOC和DI的理解,它们有什么区别? IoC [Inverse of Control] 控制反转的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spri ...
- 物联网wifi模块
物联网wifi模块 物联网wifi模块 是上海卓岚推出的MQTT+JSON转Modbus物联网WiFi核心模块.支持以MQTT的方式连接云端服务器,支持可以界面话配置,自主采集Modbus仪表/645 ...
- python面试题-django相关
1.中间件 中间件一般做认证或批量请求处理,django中的中间件,其实是一个类,在请求和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法, 如请求过来 执行process_re ...
- ES异常处理-NoNodeAvailableException
1.问题描述 ES client客户端能创建,但是在用客户端操作时报:NoNodeAvailableException[None of the configured nodes are availab ...
- ansible用get_url模块在受控机下载文件(ansible2.9.5)
一,ansible的get_url模块用途: get_url模块可以在受控机下载文件 可以理解成从受控端执行wget 下载的url支持:http | https | ftp 三种协议 说明:刘宏缔 ...
- elastic后台运行
nohup./bin/elasticsearch&
- soundPool声音池
soundPool可以同时播放多个声音,但是最好文件不要超过1M,声音只能播放几秒,适合游戏混合音效 public class MainActivity extends AppCompatActivi ...
- 感知机vs支持向量机
感知机原理:二维空间中找到一条直线可以把所有二元类别分离开,三维或多维空间中,找到一个分离超平面把所有二元类别分离开.而可把所有二元类别分离开的超平面不止一个,哪个是最好的呢?损失函数:所有误分类的点 ...
- eclipse之SSH配置spring【二】
第一篇中配置struts完成(http://www.cnblogs.com/dev2007/p/6475074.html),在此基础上,继续配置spring. web.xml中增加listener,依 ...