一、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”选择“查询”服务,系统按操作时间顺序,显示出用户的历史操作记录及当前余额。
五、需求分级
六、实现代码
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); } }