编写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显示注册成功. 但是程序到了运 ...
随机推荐
- docker安装jumpserver
注意MySQL的密码设置要有复杂度,否则jumpserver用不了 #先准备一台服务器安装MySQL和redis(注意官网版本要求) root@ubuntu:~# docker pull mysql: ...
- my37_MGR流控对数据库性能的影响以及MGR与主从的性能对比
mysql> show variables like 'group_replication_flow_control_applier_threshold'; +----------------- ...
- Properties类继承HashTable类,一般用来给程序配置属性文件。
package com.itcast.demo04.Prop;import jdk.internal.util.xml.impl.ReaderUTF8;import sun.nio.cs.UTF_32 ...
- 1.Thmeleaf模板引擎
1.Thmeleaf的基本语法 大部分的Thmeleaf表达式都直接被设置到HTML节点中,作为HTML节点的一个属性存在,这样同一个模板文件既可以使用浏览器直接打开,也可以放到服务器中用来显示数据, ...
- 1945-祖安 say hello-String
1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include<bits/stdc++.h> 3 char str[100][40]; 4 char s[10 ...
- 【C/C++】小红的字符串 / 中兴捧月
考试的时候想复杂了,其实直接一边写放进set里去重就可以了 很有意思 自己的理解就是cpp的map+set或者就是set可以完成大多数java的hashset操作 链接:https://ac.nowc ...
- 【C/C++】例题3-6 环状序列/算法竞赛入门经典/数组和字符串
[字典序比较] 对于两个字符串,比较字典序,从第一个开始,如果有两位不一样的出现,那么哪个的ASCII码小,就是字典序较小.如果都一样,那么短的小. [题目] 输入一个环状串,输出最小的字典序序列. ...
- PDF.js Electron Viewer
PDF.js 是基于 HTML5 解析与渲染 PDF 的 JavaScript 库,由 Mozilla 主导开源. 本文旨在介绍 PDF.js 于 Electron 里如何开始使用,实际尝试了用其 A ...
- [BUUCTF]PWN——others_babystack
others_babystack 附件 步骤: 例行检查,64位程序,开了挺多保护 本地试运行一下程序 64位ida载入,看main函数 1是read函数,存在栈溢出:2是puts函数,3退出 利用思 ...
- python selenium 多账户自动登入163邮箱
pycharm一些快捷键: ' ctrl ' +' / ' :注释 ' Tab ' :同时缩进 ' shift ' +' Tab ' :左移 一次缩进 本文webinfo.txt路径:C:\Pytho ...