ATM模拟——课程设计

 简介

网上有很多类似的atm模拟设计,但是实在是和我们老师要求不太一样,所以我还是自己写了一份,不是特别完美,没有工厂模式和事务处理,但是也是相对而言比较不错了,当时评分是90,也属于A 。φ(>ω<*)

现在来看看效果图吧

 

 

 代码实现

 BookDAO接口

package instance.atm.dao;

import java.util.List;

public interface BookDAO {
    public int update(double money,String name);
    public int update1(String word,String name);
    public double select(String name);
    public double select1(String name,String password);
}

BookDAOImpl类

package instance.atm.dao;

import instance.atm.JDBCUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BookDAOImpl implements BookDAO {
    private Connection con;
    private PreparedStatement pstmt = null;
    ResultSet resultSet=null;


    public BookDAOImpl(){
        con = JDBCUtil.getConnection();
    }

    @Override
    public int update(double money, String name) {
        int num = 0;
        try {
            pstmt = con.prepareStatement("update car set money = ? where name = ?");
            pstmt.setDouble(1,money);
            pstmt.setString(2,name);
            num = pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return num;
    }


    @Override
    public int update1(String word,String name) {
        int num = 0;
        try {
            pstmt = con.prepareStatement("update car set password = ? where name = ?");
            pstmt.setString(1,word);
            pstmt.setString(2,name);
            num = pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return num;
    }

    @Override
    public double select(String name) {
        double num1=0;
        try {
            pstmt=con.prepareStatement("select money from car where name='"+name+"';");
            resultSet=pstmt.executeQuery();
            while (resultSet.next()){
                num1 = resultSet.getDouble("money");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return num1;
    }

    public double select1(String name,String word) {
        double num1=0;
        try {
            pstmt=con.prepareStatement("select money from car where name='"+name+"' and password= '"+word+"'");
            resultSet=pstmt.executeQuery();
            while (resultSet.next()){
                num1 = resultSet.getDouble("money");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return num1;
    }


}

BookService接口

package instance.atm.service;

public interface BookService {
    public int updateword(double money,String name);
    public int updateword(String word,String name);
    public double selectword1(String name);
    public double selectword(String name,String word);
}

BookServicelmpl类

package instance.atm.service;

import instance.atm.dao.BookDAO;

public class BookServiceImpl implements BookService {
    private BookDAO bookDAO;


    public BookServiceImpl(BookDAO bookDAO){
        this.bookDAO = bookDAO;
    }
    @Override
    public int updateword(double money, String name) {
        return bookDAO.update(money,name);
    }

    @Override
    public int updateword(String word, String name) {
        return bookDAO.update1(word,name);
    }



    public double selectword1(String name) {
        return bookDAO.select(name);
    }

    @Override
    public double selectword(String name, String word) {
        return bookDAO.select1(name,word);
    }


}

AtmTest类

package instance.atm;

import instance.atm.dao.BookDAO;
import instance.atm.dao.BookDAOImpl;
import instance.atm.service.BookService;
import instance.atm.service.BookServiceImpl;

import java.util.Scanner;

public class AtmTest{//银行
    private Dl dl;
    private Bank bank;
    private String name;
    private String password;
    private double money;
    private int sum;
    BookDAO bookDAO = new BookDAOImpl();
    BookService bookService = new BookServiceImpl(bookDAO);


    public AtmTest(){
        this.sum=1;
        dl=new Dl();
        bank=new Bank();

    }

    public AtmTest(String name, String password, double money){
        this.name=name;
        this.money=money;
        this.password=password;
    }

    public void Test(){
        dl.dl();
        Scanner scanner=new Scanner(System.in);
        String name=scanner.next();//nextLine
        String word=scanner.next();

            money=bookService.selectword(name,word);
            if(money>0){
                Car car=new Car(name,word,money);
                dl.xs();
                while(true) {
                    dl.xz();
                    sum++;
                    if (sum > 10) break;
                    switch (scanner.nextInt()) {
                        case 1:    //1.取款
                            bank.drawMoney(car);
                            break;
                        case 2:    //2.存款
                            bank.savemoney(car);
                            break;
                        case 3:    //3.转账
                            bank.transfer(car);
                         break;

                        case 4:   //4.查询
                            bank.query(car);
                            break;

                         case 5:   //5.修改密码
                             bank.setpassword(car);
                         break;

                        case 6:   //6.结束
                            dl.js();
                            System.exit(0);//退出
                            break;
                        default:
                            dl.zc();
                            break;
                    }}}else{
                        sum++;
                        if (sum > 5) {
                            dl.tc();
                            System.exit(0);
                        }
                        dl.sb();
                        Test();

                }

    }

}


Bank类

package instance.atm;

import instance.atm.dao.BookDAO;
import instance.atm.dao.BookDAOImpl;
import instance.atm.service.BookService;
import instance.atm.service.BookServiceImpl;

import java.util.Scanner;

public class Bank {
    Scanner scanner = new Scanner(System.in);
    Dl dl = new Dl();
    private double money;
    private int num ;
    BookDAO bookDAO = new BookDAOImpl();
    BookService bookService = new BookServiceImpl(bookDAO);

    public Bank(){
        this.money=0;
        this.num=1;
    }


    public void drawMoney(Car car) {

        dl.qk();
        double s = scanner.nextDouble();
        if (s > car.getMoney()) {
            dl.mq();
        } else {
            s = car.getMoney() - s;
            int num = bookService.updateword(s, car.getUsername());
            if (num > 0) {
                car.setMoney(s);
                dl.qq();

            }

        }

    }

    public void setpassword(Car car) {     //修改密码

            dl.s1();
            String paword = scanner.next();
            if (paword.equals(car.getPassword())) {
                dl.s2();
                String newpassword1 = scanner.next();
                dl.s3();
                String newpassword2 = scanner.next();
                if (newpassword1.equals(newpassword2)) {
                    int i=bookService.updateword(newpassword1,car.getUsername());
                    if (i > 0) {
                        dl.s4();
                        car.setPassword(newpassword1);
                        System.exit(0);
                    }

                } else {
                    dl.s5();
                    setpassword(car);
                }
            } else {
                num++;
                if (num >= 5) {
                    dl.tc();
                    System.exit(0);
                }
                dl.s6();
                setpassword(car);
            }


    }

    public void savemoney(Car car) {

        Scanner scanner = new Scanner(System.in);
        dl.cq();
        double s = scanner.nextDouble();
        s = car.getMoney() + s;
        int num = bookService.updateword(s, car.getUsername());
        car.setMoney(s);
        if (num > 0) {
            dl.ck();
        }


    }

    public void transfer(Car car) {    //3.转账
        dl.zz1();
        String zh = scanner.next();
        double s = scanner.nextDouble();

        money = (int) bookService.selectword1(zh);
        if (money > 0) {

            if (s > car.getMoney()) {
                dl.mq();
            } else {
                double a = s + money;
                s = car.getMoney() - s;
                int i = bookService.updateword(s, car.getUsername());
                if (i > 0) {
                    bookService.updateword(a, zh);
                    car.setMoney(s);
                    dl.cz();
                }
            }
        } else {
            dl.zb();
        }

    }




    public void query(Car car) {     //4.查询
        dl.cx1();
        System.out.println("|          " + car.getMoney() + "               |");
        dl.cx2();
    }

}

Car类

package instance.atm;

public class Car {//卡个人信息
    //账号,密码,余额
    private String username;//账号
    private String password;//密码
    private double money;//余额

    public Car() {

    }

    public Car(String username, String password, double money) {
        this.username = username;
        this.password = password;
        this.money = money;
    }

    public String getUsername() {
        return this.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;
    }

    public String toString() {
        return "账号是:" + username + "\n密码是:" + password + "\n余额:" + money;
    }

}

JDBCUtil类

package instance.atm;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
//resources
//properties

public class JDBCUtil {
    private static String driver=null;
    private static String url=null;
    private static String username = null;
    private static String password = null;
    private static Connection con = null;
    private static Statement stmt = null;
    private static ResultSet rs = null;

    static{
        try{
            InputStream in = JDBCUtil.class.getClassLoader().getResourceAsStream("db.properties");
            Properties prop = new Properties();
            prop.load(in);

            driver = prop.getProperty("driver");
            url = prop.getProperty("url");
            username = prop.getProperty("username");
            password = prop.getProperty("password");

            Class.forName(driver);

        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        try {
            con = DriverManager.getConnection(url,username,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

    public static void release(Connection con,Statement stmt,ResultSet rs){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }



}

Main类

package instance.atm;

public class Main {
    public static void main(String[] args) {
        AtmTest atmTest = new AtmTest();
        atmTest.Test();
    }
}

 要加载mavan,还有定义资源文件

db.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/atm?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false
username=root
password=dengning

Dl类

package instance.atm;

public class Dl {
    public void dl(){
        System.out.println(
                " =========欢迎使用本ATM机======== " +'\n'+
                "|                              |" +'\n'+
                "|     请输入账号:               |" +'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|     请输入密码:               |" +'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }
    public void xs(){
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|     您已成功登陆               |" +'\n'+
                "|          祝您使用愉快!         |" +'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }

    public void xz(){
        System.out.println(
                "==========欢迎使用本ATM机=========="  +'\n'+
                "|                               |" +'\n'+
                "|   请选择你需要的服务:           |" +'\n'+
                "|                               |" +'\n'+
                "| 1.取款                2.存款   |" +'\n'+
                "|                               |" +'\n'+
                "| 3.转账                4.查询   |" +'\n'+
                "|                               |" +'\n'+
                "| 5.修改密码             6.结束   |" +'\n'+
                "|                               |" +'\n'+
                "|_______________________________|");
    }

    public void sb(){
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|     您的账号或密码错误          |" +'\n'+
                "|          请您重新登陆!         |" +'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }
    public void tc(){
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|    您的账号或密码              |" +'\n'+
                "|        错误次数过多!           |" +'\n'+
                "|    如果需要继续操作             |" +'\n'+
                "|        请联系前台工作人员       |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }

    public void qk(){//取款
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|    请输入您要取款的金额:        |" +'\n'+
                "|                              |" +'\n'+
                "|      1     2      3          |" +'\n'+
                "|      4     5      6          |" +'\n'+
                "|      7     8      9          |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }

    public void mq(){//金额不够
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|     您的账号余额不足            |" +'\n'+
                "|          请您重新操作!         |" +'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }

    public void qq(){//取钱
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|     您的现金即将放出            |" +'\n'+
                "|          请您及时收取!         |" +'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }

    public void cq(){//存钱
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|    请输入您要存款的金额:        |" +'\n'+
                "|                              |" +'\n'+
                "|      1     2      3          |" +'\n'+
                "|      4     5      6          |" +'\n'+
                "|      7     8      9          |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }

    public void ck(){//存款成功
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|     您已成功存款               |" +'\n'+
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }

    public void cx1(){//查询
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|     您的余额还有:             |" );

    }
    public void cx2(){
        System.out.println(
                "|                              |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }
    public void zz1(){//转账
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                "|                              |" +'\n'+
                "|    尊敬的用户:                |" +'\n'+
                "|        您好!                 |" +'\n'+
                "|     请输入你要转的账号:        |" +'\n'+
                "|     请输入你要转的金额:        |" +'\n'+
                "|                              |" +'\n'+
                "|______________________________|");
    }
    public void cz(){//转账成功
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|     您已成功转账               |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }
    public void zb(){//转账失败
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|     您输入的账号不存在          |" +'\n'+
                        "|          请您重新输入!         |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }
    public void s1(){//修改密码
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|    请输入原密码:              |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }
    public void s2(){//修改密码
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|    请输入新密码:              |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }
    public void s3(){//修改密码
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|    请再次输入新密码:           |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }
    public void s4(){
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|     你已成功修改密码            |" +'\n'+
                        "|          请您重新操作!         |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }

    public void s5(){//金额不够
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|     您两次输入的密码不同        |" +'\n'+
                        "|          请您重新操作!         |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }
    public void s6(){//修改密码
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|    您输入的密码与原密码不相同    |" +'\n'+
                        "|        请重新输入:            |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }

    public void js(){
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|     感谢您的使用               |" +'\n'+
                        "|        期待您的再次使用!       |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }
    public void zc(){
        System.out.println(
                "=========欢迎使用本ATM机=========="+'\n'+
                        "|                              |" +'\n'+
                        "|    尊敬的用户:                |" +'\n'+
                        "|        您好!                 |" +'\n'+
                        "|     您的输入有误               |" +'\n'+
                        "|        请您的重新输入!         |" +'\n'+
                        "|                              |" +'\n'+
                        "|                              |" +'\n'+
                        "|______________________________|");
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值