目录
四、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);
}
}