目录

一、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. 转 Android 多线程:手把手教你使用AsyncTask

    转自:https://www.jianshu.com/p/ee1342fcf5e7 前言 多线程的应用在Android开发中是非常常见的,常用方法主要有: 继承Thread类 实现Runnable接口 ...

  2. docker创建tomcat容器无法正常访问

    记一次创建tomcat docker容器后访问是404,进入到tomcat docker容器后发现webapps是空的 1.挂载 docker run -v localConfigFile:/cont ...

  3. jquery datatable使用简单示例

    目标: 使用 jQuery Datatable 构造数据列表,并且增加或者隐藏相应的列,已达到数据显示要求.同时, jQuery Datatable 强大的功能支持:排序,分页,搜索等. Query ...

  4. MySQL(1):SQLyog

    数据库(DataBase,简称DB) 一. 基本数据库操作命令 flush privileges 刷新数据库 show databases 显示所有数据库 use dbname 打开某个数据库 sho ...

  5. React 传值 组件传值 之间的关系

    react 组件相互之间的传值: 传值分父级组件传值给子组件   子组件传值给父组件    平级组件.没有嵌套的组件相互传值 1.父组件向子组件传值 父组件通过属性的形式来向子组件传值,子组件通过pr ...

  6. angular关于select的留白问题

    Angular select留白的问题 小白的总结,大神勿喷:需要转载请说明出处,如果有什么问题,欢迎留言 总结:出现留白说明你的ng-model的值在option的value中没有对应的值: 一.直 ...

  7. java配置文件的使用 —— 设置一个类为单例模式

    阅读本文章前建议先阅读:java通过JDBC访问sqlserver数据库 一.使用原因:通过JDBC连接数据库时有时会需要连接不同的数据库,而jar包.连接url.用户名和密码等都是写定在程序中,不便 ...

  8. 莫烦python教程学习笔记——使用波士顿数据集、生成用于回归的数据集

    # View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...

  9. Pagination.js + Sqlite web系统分页

    前端使用 jquery pagination.js 插件. 环境准备:jquery.js.pagination.js.pagination.css 附件下载:https://files.cnblogs ...

  10. Linkerd Service Mesh 服务配置文件规范

    服务配置文件 为 Linkerd 提供有关服务的附加信息. 以下是可以使用服务配置文件完成的所有操作的参考. 系列 中文手册(https://linkerd.hacker-linner.com) Sp ...