大一寒假时我做了一个图书管理系统 感觉和本次作业很相似 所以开始是想用c语言编写
但在后来的功能管理时发现调用的内存太大 导致程序运行很缓慢,在网上找了很多资料后 决定转为面向对象 使用Java语言。
`package ATMSystem;
public class ATMDemo {
//用户名,密码,账户余额
private String username;
private String password;
private double money;
public ATMDemo() {
}
public ATMDemo(String username,String password,double money) {
this.username=username;
this.password=password;
this.money=money;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username=username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password=password;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money=money;
}
@Override
public String toString() {
return "[username=" + username + ",password=" + password + ",money=" + money + "]";
}
}这里定义用户属性 可以再到用时再new新对象 即为开户 若要销户也可直接delete 还可节省内存;import java.util.*;
public class ATMTest {
ATMDemo atm=new ATMDemo();//实例化一个类对象
Scanner input=new Scanner(System.in);//控制台输入
private int num=0;//记录输入密码的次数
public void Select() {
System.out.println("==========欢迎访问ATM银行管理系统==========");
System.out.println("请输入用户名:");
String username=input.next();
System.out.println("请输入密码:");
String password=input.next();
if(username.equals(atm.getUsername())&&password.equals(atm.getPassword()) ) {//用户名、密码输入正确
System.out.println("登录成功!!!");
while(true) {
System.out.println("尊敬的用户您好:");
System.out.println("请选择的项目:1.取钱 2.存钱 3.查询余额 4.转账 5.重新登录 6.退出登录");
switch(input.nextInt()) {
case 1:
takeMoney();//取钱
break;
case 2:
saveMoney();//存钱
break;
case 3:
selectMoney();//查询余额
break;
case 4:
transferMoney();//转账
break;
case 5:
Select();//重新登录
break;
case 6:
System.out.println("感谢您的本次使用,欢迎下次访问该系统!");
System.exit(0);//退出
break;
default :
System.out.println("你输入有误!请重新输入!!!");
break;
}
}
}else {//用户名或密码不正确
System.out.println("用户名或密码错误,请重新输入!!!");
Select();//重新输入
}
}
public void takeMoney() {//取钱
System.out.println("请输入取钱金额(元):");
double rmb=input.nextDouble();//控制台获取取钱金额
if(rmb<=atm.getMoney()) {
rmb=atm.getMoney()-rmb;
atm.setMoney(rmb);
System.out.println("取款成功,请取走您的现金!!!");
}else {//取钱金额大于当前账户余额
System.out.println("余额不足!!!");
}
}
public void saveMoney() {//存钱
System.out.println("请输入存钱金额(元):");
double rmb=input.nextDouble();
rmb+=atm.getMoney();
atm.setMoney(rmb);//
System.out.println("恭喜您,存款成功!!!");
}
public void selectMoney() {//查询余额
System.out.println("当前,您的帐户余额为:" + atm.getMoney() + "元");//调用get方法获取账户余额
}
public void transferMoney() {//转账
System.out.println("请输入转账人的用户名:");
String username=input.next();
System.out.println("请输入转账金额:");
double rmb=input.nextDouble();
if(rmb<=atm.getMoney()) {//转账金额小于等于当前账户余额
rmb=atm.getMoney()-rmb;//减去转走的
atm.setMoney(rmb);//调用set方法更新当前账户余额
System.out.println("转账成功!!!");
}else {//转账金额大于当前账户余额
System.out.println("转账金额不足,转账失败!");
}
}
}这里是主要功能类 先通过选择语句进入不同的功能模块 再写不同的功能的方法,实现模块化编程,也更容易看懂;public class main {
public static void main(String[] args) {
ATMTest atmtest=new ATMTest();
atmtest.Select();
}
}`
这里主函数直接调用所写类,若有需求变化也可直接在对应类中更改 因为对java的new使用不够熟练这里使用我直接在用户类里定义对象 初始余额10000
大致运行如图
psp表格如图
小结
本次作业我又详细的学习了java类的定义和调用 更深入的了解了面向对象编程的优越性 但自己的知识储备过于匮乏 从网上找了很多资料才勉强完成任务,未来的学习没有止境 我希望在不久后能够自己独立写出一个完善的管理系统