目录

一、General description 总体概述

二、About the Project 项目介绍

三、Soft function 软件功能

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

Use Case1 账号登录

Use Case2 存款

Use Case3 取款

Use Case4 查询

五、需求分级

六、实现代码


一、General description 总体概述

定位:银行软件

风格:金融财务

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

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

二、About the Project 项目介绍

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

三、Soft function 软件功能

1. 账号登录

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

2. 功能主菜单

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

3. 存款

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

4. 取款

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

5. 查询

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

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

Use Case1 账号登录

Goal in Context 简要说明:

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

Description 基本事件流描述:

Use Case2 存款

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

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

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

Goal in Context 简要说明:

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

Description 基本事件流描述:

Use Case3 取款

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

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

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

Goal in Context 简要说明:

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

Description 基本事件流描述:

Use Case4 查询

Goal in Context 简要说明:

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

五、需求分级

Requirement ID 需求ID

Requirement Name 需求名称

Classification 需求分级

SC.01

账号登录

A

SC.02

存款

A

SC.03

取款

A

SC.04

查询

A

六、实现代码

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);
}
}

编写Java程序_银行终端服务系统的更多相关文章

  1. 编写Java程序_连锁超市购物结算系统

    目录 功能需求: 一.Use Case 1 显示商品信息列表: 二.Use Case 2 输入购买商品编号 三.Use Case 3 显示购物结算清单 需求分级: 实现代码: 功能需求: Soft f ...

  2. 编写Java程序_输入本部门五位员工的薪资,并根据用户输入的序号为指定员工进行提薪。若用户输入序号出现越界,则提示错误。

    要求说明: 输入本部门五位员工的薪资,并根据用户输入的序号为指定员工进行提薪.若用户输入序号出现越界,则提示错误. 运行效果如图: 实现代码: import java.util.Scanner; pu ...

  3. 编写Java程序_定义两个方法,实现奇数偶数的判断,并计算和(有参数有返回值方法)

    需求说明: 定义两个方法,在控制台输入一个数字,这两个方法可以求出1到该数字之间所有偶数之和.奇数之和,并将对应结果和返回.在main方法中调用该方法,并在控制台打印出结果.(有参数有返回值方法) 运 ...

  4. 编写Java程序_输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

    要求: 输入一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 实现代码: package kaoshi; import java.util.Scanner; pu ...

  5. 编写Java程序_输入三个整数x,y,z,请把这三个数由小到大输出,请写出实现代码。(3种方法)

    要求说明: 输入三个整数x,y,z,请把这三个数由小到大输出. 实现代码: 第1种方法: import java.util.Scanner; public class xyzMaxMin{ publi ...

  6. 编写Java程序_找星座朋友应用软件

    一.About the Project 项目介绍 自古以来,人对于恒星的排列和形状很感兴趣,并很自然地把一些位置相近的星联系起来,组成星座.占星术亦称"占星学"."星占学 ...

  7. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  8. 初学编写JAVA程序

    一.编写JAVA程序 编写JAVA程序,输出一行文本信息:“Hello world”,选择编辑器eclipse,打开之后编写程序 public class Hello{ public static v ...

  9. 使用wrapper将java程序注册程windows服务后不生效

    使用wrapper将java程序注册程windows服务后不生效 使用add.bat或test***.bat测试通过了, 然后使用install***.bat注册后cmd显示注册成功. 但是程序到了运 ...

随机推荐

  1. 【Linux】【Shell】【Basic】变量与数据类型

    1. 变量: 1.1. 局部变量:作用域是函数的生命周期:在函数结束时被自动销毁: 定义局部变量的方法:local VARIABLE=VALUE 1.2. 本地变量:作用域是运行脚本的shell进程的 ...

  2. redis入门到精通系列(八):redis的高可用--主从复制详解

    (一)主从复制介绍 前面所讲的关于redis的操作都属于单机操作,单机操作虽然操作简单,但是处理能力有限,无法高可用.所谓高可用性,就是指当一台服务器宕机的时候,有备用的服务器能顶替上,在单机操作上这 ...

  3. 通过Shell统计PV和UV

    PV.UV是网站分析中最基础.最常见的指标.PV即PageView,网站浏览量,指页面的浏览次数,用以衡量网站用户访问的网页数量.用户没打开一个页面便记录1次PV,多次打开同一页面则浏览量累计:UV即 ...

  4. maven依赖对zookeeper的版本冲突问题

    我用的是springcloudAlibaba+zookeeper zookeeper下载后 1,修改配置文件,conf目录下的zoo_sample.cfg修改为zoo.cfg. 2,打开zoo.cfg ...

  5. 漏洞扫描器-AWVS

    目录 介绍 漏洞扫描 网络爬虫==漏洞分析.验证 主机发现 子域名探测 SQL注入 HTTP头编辑 HTTP监听 介绍 AWVS为Acunetix Web Vulnarability Scanner的 ...

  6. shell脚本 检查mysql节点数据一致性

    一.简介 源码地址 日期:2018/4/12 介绍:参考pt checksum思想改写,可以定制化的检查随意两个mysql节点的数据一致性. 功能: 检查随意两个几点的数据一致性 支持并发检查,基于库 ...

  7. 位置式PID讲解

    table { margin: auto } 一.公式拆解 \(PID\)公式展示: \[u(t)=K_p(e(t)+\frac{1}{T_t } ∫_0^te(t)dt+T_D \frac {de( ...

  8. 去除爬虫采集到的\xa0、\u3000等字符

    \xa0表示不间断空白符,爬虫中遇到它的概率不可谓不小,而经常和它一同出现的还有\u3000.\u2800.\t等Unicode字符串.单从对\xa0.\t.\u3000等含空白字符的处理来说,有以下 ...

  9. 2、动态规划接替套路框架——Go语言版

    前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在 ...

  10. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...