编写Java程序_银行终端服务系统

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 编写Java程序_银行终端服务系统

一、General description 总体概述

定位:银行软件

风格:金融财务

用户人群:通过银行终端获取银行服务的人群

产品:湖北银行终端服务系统


二、About the Project 项目介绍

银行终端服务系统为个人或企业账号提供银行智能终端服务,主要包括:现金取款、现金存款、余额查询、自助缴费、本行或异行转账、修改密码等基本功能;有些多功能终端系统还提供诸如存折打印、对账单打印、支票存款、信封存款、缴费、充值等一系列便捷服务。本项目主要模拟了湖北银行个人账号终端操作的基本功能,实现了账号金额管理和查询的业务功能。


三、Soft function 软件功能


1. 账号登录


账号为admin,密码为123,用户三次输入错误后系统自动退出。登录验证通过后可以看到系统操作菜单完成后续操作。


2. 功能主菜单


系统有菜单供用户选择操作,只用输入数字就可以选择相关功能。每次操作完成后菜单再次出现,提供用户下次选择,用户可以直接选择退出菜单,系统自动结束。


3. 存款


用户在主菜单中选择存款,系统提示用户输入存款金额,用户如果输入正确的数字,余款将会累加。输入错误的时候,系统会提示,用户可以再次输入。


4. 取款


用户在主菜单中选择取款,系统提示用户输入取款金额,用户输入正确,系统判断余款是否足额,如果不足,系统提示用户,用户可以再次输入。用户输入取款额不是数字,系统也会提示用户输入。


5. 查询


用户在主菜单中选择查询,系统输出用户所有的存取款项的明细信息,包括时间和金额,同时输出帐户的当前余额。


22.png


四、UI Model Use Case Diagram  UI模块用例图

Use Case1 账号登录


23.png


Goal in Context 简要说明:


用户使用银行服务必须首先登录到个人账号,系统默认设置的个人账号为admin,密码为123。如果用户输入错误的登录信息,系统提醒“账号密码输入错误!”。如果连续三次输入错误,系统将自动退出。登录通过后可以看到系统操作菜单。


Description 基本事件流描述:


24.png


Use Case2 存款


25.png


1、用户输入存款金额为非数字,提示:“金额输入错误,存款操作已经取消”如图:



26.png


2、用户输入存款金额为负数或零,系统提示“金额为负数或零,存款操作已经取消”如图:


27.png


3、用户选择的菜单序号不合法,系统自动关闭,如图:


28.png


Goal in Context 简要说明:


通过系统服务菜单,输入“1”选择“存款”服务,系统提示“输入存款金额”,存款成功后,系统提示“已存款XXX”。如果存款金额输入非数字或负数,系统给出相应提示,并停止存款服务,同时显示系统菜单,允许用户再次操作。


Description 基本事件流描述:


29.png


Use Case3 取款


30.png


1、用户输入取款金额为非数字,提示:“金额输入错误,取款操作已经取消”如图:


31.png


2、用户输入存款金额为负数或零,系统提示“金额为负数或零,取款操作已经取消”如图:


32.png


3、用户输入的取款金额超过其存款总额,系统提示“余额不足,取款操作已经取消”如图:


33.png


Goal in Context 简要说明:


通过系统服务菜单,输入“2”选择“取款”服务,系统提示“输入取款金额”,取款成功后,系统提示“已取款XXX”。如果取款金额输入非数字或负数,系统给出相应提示,并停止取款服务,同时显示系统菜单,允许用户再次操作。如果取款金额超出存款总额,提示“余额不足”。


Description 基本事件流描述:


34.png


Use Case4 查询


35.png


Goal in Context 简要说明:

通过系统服务菜单,输入“3”选择“查询”服务,系统按操作时间顺序,显示出用户的历史操作记录及当前余额。


五、需求分级


36.png


六、实现代码


Test 类


import java.util.Date;
import com.ww.service.UserAcountService;
public class Test {
  public static void main(String[] args) {
    UserAcountService uas=new UserAcountService();
    uas.login();
  }
}


UserAcount 类


public class UserAcount {
  //用户类
  public String user_name;//账号
  public String user_pwd;//密码
  public int balance;//账户的余额
  //登录
  public boolean login(String name,String pwd){
    if (user_name.equals(name)&&user_pwd.equals(pwd)) {
      return true;
    } else {
      return false;
    }
  }
  public UserAcount(String userName, String userPwd, int balance) {
    super();
    user_name = userName;
    user_pwd = userPwd;
    this.balance = balance;
  }
  public UserAcount() {
    super();
  }
}


LogInfo 类


public class LogInfo {
  String checkTime;//操作时间
  String check;//操作类型
  int balance;//操作的金额
  //显示日志
  public void showLogInfo(LogInfo[] ls){
    for (int i = 0; i < ls.length; i++) {
      if (ls[i]!=null) {
        System.out.println(ls[i].checkTime+"\t"+ls[i].check+"\t"+ls[i].balance);
      }
    }
    //余额
  }
  public LogInfo(String checkTime, String check, int balance) {
    this.checkTime = checkTime;
    this.check = check;
    this.balance = balance;
  }
  public LogInfo() {
  }
}


UserAcountService 类


import java.util.Date;
import java.util.Scanner;
import com.ww.entity.LogInfo;
import com.ww.entity.UserAcount;
public class UserAcountService {
  UserAcount ua;
  Scanner inputScanner=new Scanner(System.in);
  //声明一个日志数组,用于保存用户的操作数据
  LogInfo[] ls=new LogInfo[10];
  //登录的方法
  public void login(){
    initUser();//调用方法
    boolean f;
    int count=0;//登录的次数
    do {
      System.out.println("请输入账号:");
      String name=inputScanner.next();
      System.out.println("请输入密码:");
      String pwd=inputScanner.next();
      f=ua.login(name, pwd);
      count++;
      if (!f) {
        System.out.println("登录失败,您还有"+(3-count)+"次机会!");
      }
    } while (f==false&&count<3);
    //1、登录成功
    //2、失败次数达到3次
    if (f) {
      //显示功能菜单
      int choose;
      do {
        choose=showMenu();
        switch (choose) {
        case 1://存款
          addMoney();
          break;
        case 2://取款
          getMoney();
          break;
        case 3://查询
          showLogInfo();
          break;
        default://退出
          System.exit(0);
          System.out.println("谢谢使用,已退出!");
          break;
        }
      } while (choose==1||choose==2||choose==3);
    }else {
      System.out.println("错误次数超过三次,已锁定!");
    }
  }
  //查询
  public void showLogInfo(){
    LogInfo info=new LogInfo();
    info.showLogInfo(ls);
    System.out.println("当前账户的余额:"+ua.balance);
  }
  //取钱
  public void getMoney(){
    System.out.println("请输入取钱的金额:");
    int money=inputScanner.nextInt();
    if (money>=0) {
      if (money<=ua.balance) {
        ua.balance-=money;
        LogInfo li=new LogInfo(new Date().toLocaleString(),"取钱",money);
        //将此日志对象保存到数组中
        for (int i = 0; i < ls.length; i++) {
          if (ls[i]==null) {
            ls[i]=li;
            break;
          }
        }
      } else {
        System.out.println("账户余额不足!");
      }
    } else {
      System.out.println("金额不对,请重新输入!");
    }
  }
  //存款
  public void addMoney() {
    System.out.println("请输入存款的金额:");
    int money=inputScanner.nextInt();
    if (money>=0) {
      ua.balance+=money;
      //保存当前存款的操作日志:操作时间、操作类型、操作金额
      Date date=new Date();//获取当前系统时间
      LogInfo li=new LogInfo(date.toLocaleString(),"存款",money);
      for (int i = 0; i < ls.length; i++) {
        if (ls[i]==null) {
          ls[i]=li;
          break;
        }
      }
    } else {
      System.out.println("金额不对,请重新输入!");
    }
  }
  //显示功能菜单
  public int showMenu(){
    System.out.println("1、存款");
    System.out.println("2、取款");
    System.out.println("3、查询");
    System.out.println("4、退出");
    System.out.println("请选择操作:");
    int choose=inputScanner.nextInt();
    return choose;
  }
  //创建一个用户
  public void initUser(){
    ua=new UserAcount("admin", "123", 1000);
  }
}



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
相关文章
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
85 1
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
119 4
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
47 0
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
50 1
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
3月前
|
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
75 1
介绍一款Java开发的企业接口管理系统和开放平台
YesApi接口管理平台Java版,基于Spring Boot、Vue.js等技术,提供API接口的快速研发、管理、开放及收费等功能,支持多数据库、Docker部署,适用于企业级PaaS和SaaS平台的二次开发与搭建。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等