ATM管理系统
博客班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
---|---|
作业目标 | ATM管理系统 |
学号 | 3180701321 |
代码
public void showMenu(String[] userNames,String[] passwords,String[] cardNos,double[] moneys) /菜单功能/
{
int out=10;
System.out.println("yhj银行欢迎您,请选择服务!");
while(out==10)
{
System.out.println("1 登入 2 开户 3 销户 4 退出");
int getNum=scanner.nextInt();
switch (getNum)
{
case 1:
this.atmRun(userNames,passwords,cardNos,moneys);
break;
case 2:
this.kaihu(userNames,passwords,cardNos,moneys);
break;
case 3:
this.xiao(passwords,userNames,moneys,cardNos);
break;
case 4:
System.exit(0);
break;
}
}
}
创建账号
Scanner reader = new Scanner(System.in);
static int ii = 0;
public void kaihu(String[] name, String[] mima, String[] cardNos, double[] moneys2) // 开户服务
{
for (int j = 0; j <= 4;) // 一次性最多可以创建4个
{
moneys2[ii] = 0;
System.out.println();
System.out.println("创建账户");
int i = 1;
while (i == 1) // 保证密码错误后还能重新输入
{
System.out.print("请输入账号:");
cardNos[ii] = reader.next();
System.out.print("请输入用户名:");
name[ii] = reader.next();
System.out.print("请设置密码:");
mima[ii] = reader.next();
System.out.print("请确定密码:");
String aaa = new String();
aaa = reader.next();
if (mima[ii].equals(aaa)) // 确认密码
{
System.out.println();
System.out.println("创建成功!");
System.out.println("您创建的账户信息为:");
System.out.println("账号:" + cardNos[ii]);
System.out.println("姓名:" + name[ii]);
System.out.println("密码:" + mima[ii]);
i = 2;
} else {
System.out.println("两次输入的密码不一样!!");
System.out.println("是否要重新创建账号(是 或 否)?");
String aaaa = new String();
aaaa = reader.next();
if ("否".equals(aaaa)) // 否 的话就i=2 结束循环,是 的话就i保持不变
i = 2;
}
}
System.out.println("是否新建第" + (ii + 2) + "个用户(是 或 否)?");
String aaaa = new String();
aaaa = reader.next();
if ("否".equals(aaaa))
j = 5; // 结束总循环
else
ii++;
j++;
}
}
删除账号
public void xiao(String[] mima, String[] name, double[] moneys2, String[] cardNos) // 销户
{
String sn = new String();
System.out.println();
System.out.println("确认是否要销户(是 或 否):");
sn = reader.next();
if ("是".equals(sn)) {
String[] aa = new String[2]; // 为输入的姓名和密码分配空间
System.out.print("请输入用户名:");
aa[1] = reader.next();
int nm = 0;
for (nm = 0; nm <= ii;) {
if (aa[1].equals(name[nm])) {
for (int i = 1; i == 1;) {
System.out.print("请输入密码:");
aa[0] = reader.next(); //
if (mima[nm].equals(aa[0])) {
name[nm] = ""; // 给name[nm]清除值
mima[nm] = "";
cardNos[nm] = "";
moneys2[nm] = 0;
System.out.println("此用户已被销户!!");
i = 2;
} else {
System.out.println("密码 错误!!");
String aaa;
System.out.println("是否要继续(是 或 否)?");
aaa = reader.next();
if ("否".equals(aaa))
i = 2;
}
nm = ii + 1;
}
} else
nm++;
}
}
}
用户账号匹对,账号正确则进入下一个界面
public void atmRun(String[] name, String[] mima, String[] cardNos, double[] moneys2) {
int time = 3; /* 输入密码次数 */
while (time > 0) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String cardNo = scanner.nextLine();
System.out.println("请输入密码:");
String pwd = scanner.nextLine();
int userIndex = this.login(cardNo, pwd, mima, name); /* 执行登录 */
if (userIndex != 10) { /*判断是否登陆成功 */
this.showMenu1(mima, name, cardNos, moneys2); /*执行功能菜单 */
} else {
time--;
System.out.println("您输入的姓名或密码有误");
System.out.println("你还有" + time + "次机会");
}
/*次数用完退出系统 */
if (time == 0) {
System.exit(0);
}
}
}
判断账号是否存在
public int login(String cardNo, String pwd, String[] passwords,
String[] cardNos) { /* cardNo 卡号 pwd 密码 userIndex:10 表示登录失败 否则为成功 /
for (int i = 0; i < cardNos.length; i++) { /循环判断账号是否存在 /
if (cardNo.equals(cardNos[i])) {
userIndex = i;
break;
}
} / 继续判断密码是正确 /
if (userIndex != 10) {
if (pwd.equals(passwords[userIndex])) { /正确 */
return userIndex;
} else {
userIndex = 10;
}
}
return userIndex;
}
登入ATM后的界面,存放ATM的基本功能
public void showMenu1(String[] mima, String[] userNames, String[] cardNos, double[] moneys) {
int out = 1;
System.out.println(userNames[userIndex] + ",下午好!");
while (out == 1) {
System.out.println("1 查询 2 取款 3 存账 4 转账 5 退出");
int getNum = scanner.nextInt();
switch (getNum) {
case 1:
System.out.println("您当前余额为:" + moneys[userIndex]);
break;
case 2:
this.getMoneys(mima, userNames, moneys, cardNos);
break;
case 3:
this.savaMoney(mima, userNames, moneys, cardNos);
break;
case 4:
this.transMoneys(mima, userNames, moneys, cardNos);
break;
case 5:
System.out.println("退出成功!");
System.exit(0);
}
}
}
用户取款,会判断用户的账户余额,若余额不够则取款失败
public void getMoneys(String[] mima, String[] userNames, double[] moneys, String[] cardNos) {
System.out.println("请输入您的取款金额:");
int getMoney = scanner.nextInt();
if (getMoney > moneys[userIndex]) {
System.out.println("您的余额不足哦!!!");
System.out.println("您的余额为:" + moneys[userIndex]);
} else {
moneys[userIndex] -= getMoney;
System.out.println("成功取款" + getMoney + "您的余额为: " + moneys[userIndex]);
}
}
用户存入金额
public void savaMoney(String[] mima, String[] userNames, double[] moneys, String[] cardNos) {
System.out.println("请输入您的存款金额:");
int savaMoney = scanner.nextInt(); //用户存入的金额
moneys[userIndex] += savaMoney;
System.out.println("成功存款" + savaMoney + "您的余额为: " + moneys[userIndex]);
}
实现转账功能,根据转入用户的账号进行
public void transMoneys(String[] mima, String[] userNames, double[] moneys, String[] cardNos) {
int hasUser = 10;
int transIndex = 0;
System.out.println("请输入转账的账号:");
String transCard = scanner.next();
for (int i = 0; i < cardNos.length; i++) {
if (transCard.equals(cardNos[i])) {
hasUser = 5;
transIndex = i;
break;
}
}
if (hasUser == 10) {
System.out.println("此账号不存在!!");
} else {
System.out.println("请输入转账金额:");
double transMoney = scanner.nextDouble();
if (transMoney > moneys[userIndex]) {
System.out.println("转账失败!!");
System.out.println("失败原因:转账金额大于余额,您的余额为:" + moneys[userIndex]);
} else {
transCard += transMoney;
moneys[userIndex] -= transMoney;
System.out.println("成功向:" + userNames[transIndex] + "转账:" + transMoney);
System.out.println("您剩余金额为:" + moneys[userIndex]);
}
}
}
}
主函数先创建Atm类对象再调用showMenu方法
public static void main(String[] args) {
String[] cardNos = new String[10]; /* 账号 */
String[] passwords = new String[10];/* 密码 */
String[] userNames = new String[10];/* 用户名 */
double[] moneys = new double[10]; /* 余额 */
Atm atm = new Atm();
atm.showMenu(userNames, passwords, cardNos, moneys);
}
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 25 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 36 | 12 |
Development | 开发 | 360 | 400 |
Analysis | 需求分析(包括学习新技术) | 50 | 50 |
Design Spec | 生成设计文档 | 50 | 60 |
Design Review | 设计复审 | 20 | 30 |
Coding Standard | 代码规范 | 10 | 20 |
Design | 具体设计 | 20 | 40 |
Coding | 具体编码 | 240 | 280 |
Code Review | 代码复审 | 20 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 120 |
Reporting | 报告 | 20 | 80 |
Test Report | 测试报告 | 30 | 30 |
Size Measurement | 计算工作量 | 20 | 12 |
Postmortem & Process Improvement Plan | Improvement Plan 事后总结,并提出过程改进计划 | 20 | 20 |