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
posted @ 2020-11-19 00:36  吴瓘玺  阅读(83)  评论(0编辑  收藏  举报