编写Java程序_银行终端服务系统
目录
四、UI Model Use Case Diagram UI模块用例图
一、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程序_银行终端服务系统的更多相关文章
- 编写Java程序_连锁超市购物结算系统
目录 功能需求: 一.Use Case 1 显示商品信息列表: 二.Use Case 2 输入购买商品编号 三.Use Case 3 显示购物结算清单 需求分级: 实现代码: 功能需求: Soft f ...
- 编写Java程序_输入本部门五位员工的薪资,并根据用户输入的序号为指定员工进行提薪。若用户输入序号出现越界,则提示错误。
要求说明: 输入本部门五位员工的薪资,并根据用户输入的序号为指定员工进行提薪.若用户输入序号出现越界,则提示错误. 运行效果如图: 实现代码: import java.util.Scanner; pu ...
- 编写Java程序_定义两个方法,实现奇数偶数的判断,并计算和(有参数有返回值方法)
需求说明: 定义两个方法,在控制台输入一个数字,这两个方法可以求出1到该数字之间所有偶数之和.奇数之和,并将对应结果和返回.在main方法中调用该方法,并在控制台打印出结果.(有参数有返回值方法) 运 ...
- 编写Java程序_输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
要求: 输入一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 实现代码: package kaoshi; import java.util.Scanner; pu ...
- 编写Java程序_输入三个整数x,y,z,请把这三个数由小到大输出,请写出实现代码。(3种方法)
要求说明: 输入三个整数x,y,z,请把这三个数由小到大输出. 实现代码: 第1种方法: import java.util.Scanner; public class xyzMaxMin{ publi ...
- 编写Java程序_找星座朋友应用软件
一.About the Project 项目介绍 自古以来,人对于恒星的排列和形状很感兴趣,并很自然地把一些位置相近的星联系起来,组成星座.占星术亦称"占星学"."星占学 ...
- 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 ...
- 初学编写JAVA程序
一.编写JAVA程序 编写JAVA程序,输出一行文本信息:“Hello world”,选择编辑器eclipse,打开之后编写程序 public class Hello{ public static v ...
- 使用wrapper将java程序注册程windows服务后不生效
使用wrapper将java程序注册程windows服务后不生效 使用add.bat或test***.bat测试通过了, 然后使用install***.bat注册后cmd显示注册成功. 但是程序到了运 ...
随机推荐
- 【Linux】【Shell】【Basic】变量与数据类型
1. 变量: 1.1. 局部变量:作用域是函数的生命周期:在函数结束时被自动销毁: 定义局部变量的方法:local VARIABLE=VALUE 1.2. 本地变量:作用域是运行脚本的shell进程的 ...
- redis入门到精通系列(八):redis的高可用--主从复制详解
(一)主从复制介绍 前面所讲的关于redis的操作都属于单机操作,单机操作虽然操作简单,但是处理能力有限,无法高可用.所谓高可用性,就是指当一台服务器宕机的时候,有备用的服务器能顶替上,在单机操作上这 ...
- 通过Shell统计PV和UV
PV.UV是网站分析中最基础.最常见的指标.PV即PageView,网站浏览量,指页面的浏览次数,用以衡量网站用户访问的网页数量.用户没打开一个页面便记录1次PV,多次打开同一页面则浏览量累计:UV即 ...
- maven依赖对zookeeper的版本冲突问题
我用的是springcloudAlibaba+zookeeper zookeeper下载后 1,修改配置文件,conf目录下的zoo_sample.cfg修改为zoo.cfg. 2,打开zoo.cfg ...
- 漏洞扫描器-AWVS
目录 介绍 漏洞扫描 网络爬虫==漏洞分析.验证 主机发现 子域名探测 SQL注入 HTTP头编辑 HTTP监听 介绍 AWVS为Acunetix Web Vulnarability Scanner的 ...
- shell脚本 检查mysql节点数据一致性
一.简介 源码地址 日期:2018/4/12 介绍:参考pt checksum思想改写,可以定制化的检查随意两个mysql节点的数据一致性. 功能: 检查随意两个几点的数据一致性 支持并发检查,基于库 ...
- 位置式PID讲解
table { margin: auto } 一.公式拆解 \(PID\)公式展示: \[u(t)=K_p(e(t)+\frac{1}{T_t } ∫_0^te(t)dt+T_D \frac {de( ...
- 去除爬虫采集到的\xa0、\u3000等字符
\xa0表示不间断空白符,爬虫中遇到它的概率不可谓不小,而经常和它一同出现的还有\u3000.\u2800.\t等Unicode字符串.单从对\xa0.\t.\u3000等含空白字符的处理来说,有以下 ...
- 2、动态规划接替套路框架——Go语言版
前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在 ...
- Codeforces Round #665 (Div. 2) 题解
Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...