时间:2016-3-27 17:09

银行综合业务平台业务需求

1.首页 
---------------银行综合业务平台-------------------
1开户     2登录    3、退出
------------------------------------------------------------
   说明:还没有账号的用户需要先开户,才能登录
2.开户业务
--------------------开户业务-------------------------
---自动生成账号
用户名:(中文姓名)
密码:
确认密码:
联系电话:
开户金额:
------------------------------------------------------------
说明:密码要求是6位数字,联系电话符合电话号码要求,开户金额为数值
3.登录
--------------------- 用户登录 ---------------------
账号:
密码:
-----------------------------------------------------------
   说明:当用户开户成功就可以通过账号和密码进行登录了,登录后会打开个人银行业务菜单
4.----------------------个人银行业务菜单--------------------------
1 存款   2 取款   3 查询余额   
4 转账      5 修改密码   6 交易记录查询 
            7 注销登录
   --------------------------------------------------------------------------
   根据以上需求,实现各业务编码
   另要求:1所有开户信息写入1个文件,登录时需要读取文件用户信息验证登录
           2.为每个开户账户生成一个以账户命名的文件,记录该账户交易记录
           2 业务操作记录日志,写入日志文件
       
////////////////////////////////////////////////////////////////////////////////////////////////////
提示:
 1 基本信息类设计:账户类(账号,密码,用户名,电话,余额,状态)
       交易记录类(账号,交易类型,交易时间,交易金额)
       操作日志类(账号,操作类型,操作时间)
2 业务管理类设计
      定义账户类和交易记录类集合,供读写文件用

 

 
import java.io.*;
import java.text.*;
import java.util.*;
 
public class BankMain {
public static void main(String[] args)
{
Business b = new Business();
b.mainmenu();
}
}
 
 
 
class Business {
 
//用于存储账户信息
static ArrayList<Account> Acc = new ArrayList<Account>();
 
//定义日志对象,用于操作文件
Log log = new Log();
 
static Scanner sc = new Scanner(System.in);
 
//读取文件信息,将账户信息组合成对象存入Acc集合
public void readIn()
{
log.readIn();
}
 
//主页  实现开户、登录、退出功能
public void mainmenu()
{
readIn();
while(true)
{
System.out.println("------------银行综合业务平台------------");
System.out.println("                                        ");
System.out.println("        1、开户  2、登录  3、退出       ");
System.out.println("                                        ");
System.out.println("-----------------请选择-----------------");
 
String s = sc.next();
String regex = "^[1-3]$";
if(!s.matches(regex))
{
System.out.println("输入有误,请重新选择:");
continue;
}
switch(s)
{
case "1" :
create();
break;
case "2" :
login();
break;
case "3" :
log.writeIn();
System.exit(0);
}
}
}
/**
 * 开户
 * 将信息存入对象
 * 对象添加到Acc集合
 * 将Acc集合写入文件
 */
public void create()
{
Account acc = null;
System.out.println("账号:");
System.out.println(getAccount());
 
 
String password1 = "";
String password2 = "";
while(true)
{
System.out.println("请输入密码:(6位数数字)");
String regPass = "[0-9]{6}";
 
password1 = sc.next();
if(!password1.matches(regPass))
{
System.out.println("密码格式不正确,请重新输入!");
continue;
}
System.out.println("请再次输入密码:");
password2 = sc.next();
if(password1.equals(password2))
{
break;
}
else
{
System.out.println("两次密码不一致!是否重新输入?Y/N");
while(true)
{
String sel = sc.next();
if(sel.equals("Y") || sel.equals("y"))
break;
else if(sel.equals("N") || sel.equals("n"))
return;
else
System.out.println("您的输入有误,请重新输入:");
}
}
}
String name = "";
while(true)
{
System.out.println("请输入用户名:(2-4位汉字)");
name = sc.next();
String regCh = "^[\u4e00-\u9fa5]{2,4}$";
if(!name.matches(regCh))
{
System.out.println("用户名格式不正确,请重新输入!");
continue;
}
else
{
break;
}
}
String tel = "";
while(true)
{
System.out.println("请输入电话号码:");
tel = sc.next();
String regTel = "^[1][0-9]{10}$";
if(tel.matches(regTel))
{
break;
}
else
{
System.out.println("aa");
System.out.println("手机号码格式不正确,请重新输入!");
continue;
}
}
double balance = 0;
String balances = "";
while(true)
{
System.out.println("请输入开户金额:");
balances = sc.next();
String regBal = "\\d{1,12}(\\.\\d{1,2})?";
 
if(!balances.matches(regBal))
{
System.out.println("输入金额不正确,请重新输入:");
continue;
}
else
{
balance = Double.parseDouble(balances);
break;
}
}
System.out.println("确认开户?Y/N");
while(true)
{
String sel = sc.next();
if(sel.equals("Y") || sel.equals("y"))
{
acc = new Account(String.valueOf(getAccount()),password1,name,tel,balance,1);
Acc.add(acc);log.writeRecord(acc.getAccount(), "开户");
log.writeIn();
System.out.println("开户成功!");
log.writeRoot(acc.getAccount(),"开户");
break;
}
else if(sel.equals("N") || sel.equals("n"))
{
return;
}
else
{
System.out.println("输入有误,请重新输入!");
}
}
personal(acc);
}
 
//登录,根据账户名和密码进行登录,并且判断账户状态
public void login()
{
int count = 0;//用于锁定账户,超过三次锁定
if(Acc.size() == 0)
{
System.out.println("无账户!");
return;
}
while(true)
{
System.out.println("请输入账号:");
int index = getIndex();
if(index == -1)
return;
Account acc = Acc.get(index);
if(acc.getState() == -1)
{
System.out.println("账户已锁定!");
log.writeIn();
return ;
}
System.out.println("请输入密码:");
String password = sc.next();
if(!acc.getPassword().equals(password))
{
count++;
if(count > 2)
{
acc.setState(-1);
}
System.out.println("密码错误!");
continue;
}
System.out.println("登录成功!");
log.writeRoot(acc.getAccount(),"登录");
personal(acc);
return;
}
}
 
//个人主页
public void personal(Account acc)
{
while(true)
{
System.out.println("----------个人银行业务菜单----------");
System.out.println("                                    ");
System.out.println("             1、存款                ");
System.out.println("             2、取款                ");
System.out.println("             3、查询信息            ");
System.out.println("             4、转账                ");
System.out.println("             5、修改密码            ");
System.out.println("             6、查询交易记录        ");
System.out.println("             7、注销登录            ");
System.out.println("                                    ");
System.out.println("---------------请选择---------------");
 
String regex = "^[1-7]$";
String sel = sc.next();
if(!sel.matches(regex))
{
System.out.println("输入有误,请重新输入:");
continue;
}
switch(sel)
{
case "1" :
deposit(acc);//存款
break;
case "2" :
withdraw(acc);//取款
break;
case "3" :
query(acc);//查询余额
break;
case "4" :
carry_over(acc);//转账
break;
case "5" :
revise(acc);//修改密码
break;
case "6" :
record(acc);//查询操作记录
break;
case "7" :
logout(acc);//注销登录
return;
}
}
}
 
//存款
public void deposit(Account acc)
{
String balances = "";
double balance = 0;
 
while(true)
{
System.out.println("请输入存款金额:");
balances = sc.next();
String regBal = "\\d{1,12}(\\.\\d{1,2})?";
 
if(!balances.matches(regBal))
{
System.out.println("输入金额不正确,请重新输入:");
continue;
}
else
{
balance = Double.parseDouble(balances);
break;
}
}
System.out.println("存款金额:" + balance +"\n确认存入?Y/N");
while(true)
{
String sel = sc.next();
if(sel.equals("Y") || sel.equals("y"))
{
break;
}
else if(sel.equals("N") || sel.equals("n"))
{
return;
}
else
{
System.out.println("输入有误,请重新输入!");
}
}
acc.setBalance(acc.getBalance() + balance);
System.out.println("存款成功!");
log.writeRecord(acc.getAccount(), "存款:+" + balance);
log.writeIn();
log.writeRoot(acc.getAccount(),"存款");
}
 
//取款
public void withdraw(Account acc)
{
String balances = "";
double balance = 0;
while(true)
{
System.out.println("请输入取款金额:");
balances = sc.next();
String regBal = "\\d{1,12}(\\.\\d{1,2})?";
if(!balances.matches(regBal))
{
System.out.println("输入金额不正确,请重新输入:");
continue;
}
else
{
balance = Double.parseDouble(balances);
break;
}
}
if(acc.getBalance() - balance < 0)
{
System.out.println("余额不足!");
return ;
}
System.out.println("取款金额:" + balance +"\n确认取出?Y/N");
while(true)
{
String sel = sc.next();
if(sel.equals("Y") || sel.equals("y"))
{
break;
}
else if(sel.equals("N") || sel.equals("n"))
{
return;
}
else
{
System.out.println("输入有误,请重新输入!");
}
}
acc.setBalance(acc.getBalance() - balance);
System.out.println("取款成功!");
log.writeRecord(acc.getAccount(), "取款:-" + balance);
log.writeIn();
log.writeRoot(acc.getAccount(),"取款");
}
 
//查询余额
public void query(Account acc)
{
 
System.out.println("账号:" + acc.toString().split(":")[0]);
System.out.println("密码:" + acc.toString().split(":")[1]);
System.out.println("姓名:" + acc.toString().split(":")[2]);
System.out.println("电话:" + acc.toString().split(":")[3]);
System.out.println("余额:" + acc.toString().split(":")[4]);
System.out.println("状态:" + acc.toString().split(":")[5]);
log.writeRecord(acc.getAccount(), "查询用户信息");
log.writeIn();
}
 
//转账
public void carry_over(Account acc)
{
System.out.println("请输入要转入的账号:");
int index = getIndex();
if(-1 == index)
return ;
Account tacc = Acc.get(index);
double balance = 0;
String balances = "";
while(true)
{
System.out.println("请输入转账金额:");
balances = sc.next();
String regBal = "\\d{1,12}(\\.\\d{1,2})?";
 
if(!balances.matches(regBal))
{
System.out.println("输入金额不正确,请重新输入:");
continue;
}
else
{
balance = Double.parseDouble(balances);
break;
}
}
if(acc.getBalance() - balance < 0)
{
System.out.println("余额不足!");
return ;
}
System.out.println("要转入的账户:" + tacc.getAccount());
System.out.println("转入金额:" + balance);
System.out.println("确认转入?Y/N");
while(true)
{
String sel = sc.next();
if(sel.equals("Y") || sel.equals("y"))
{
break;
}
else if(sel.equals("N") || sel.equals("n"))
{
return;
}
else
{
System.out.println("输入有误,请重新输入!");
}
}
tacc.setBalance(tacc.getBalance() + balance);
acc.setBalance(acc.getBalance() - balance);
System.out.println("转账成功");
 
log.writeRecord(tacc.getAccount(), "转账:+" + balance );
log.writeRecord(acc.getAccount(), "转账:-" + balance );
log.writeIn();
log.writeRoot(acc.getAccount(),"转账");
}
 
//修改密码
public void revise(Account acc)
{
System.out.println("请输入原密码");
String password = sc.next();
if(!password.equals(acc.getPassword()))
{
System.out.println("密码不正确!");
return;
}
while(true)
{
System.out.println("请输入密码:");
String password1 = sc.next();
System.out.println("请再次输入密码:");
String password2 = sc.next();
if(password1.equals(password2))
{
acc.setPassword(password1);
log.writeRecord(acc.getAccount(), "修改密码");
log.writeIn();
System.out.println("修改密码成功!");
log.writeRoot(acc.getAccount(),"修改密码");
return ;
}
else
{
System.out.println("两次密码不一致!是否重新输入?Y/N");
while(true)
{
String sel = sc.next();
if(sel.equals("Y") || sel.equals("y"))
break;
else if(sel.equals("N") || sel.equals("n"))
return;
else
System.out.println("您的输入有误,请重新输入:");
}
}
}
}
 
//查询交易记录
public void record(Account acc)
{
log.readRecord(acc.getAccount());
log.writeRecord(acc.getAccount(), "查询交易记录");
log.writeIn();
log.writeRoot(acc.getAccount(),"查询交易记录");
}
 
//注销登录
public void logout(Account acc)
{
log.writeIn();
System.out.println("注销成功!");
log.writeRoot(acc.getAccount(),"退出登录");
}
 
//根据账户获取脚标并返回脚标
public int getIndex()
{
while(true)
{
String account = sc.next();
for(int index = 0; index < Acc.size(); index++)
{
Account acc = Acc.get(index);
if(acc.getAccount().equals(account))
{
return index;
}
}
System.out.println("账号不存在!");
return -1;
}
}
//获取账号,用于开户
public int getAccount()
{
if(Acc.size() == 0)
{
return 10001;
}
else
{
return Acc.size()+10001;
}
}
}
 
 
 
class Log {
 
//将文件信息读入Acc集合
public void readIn()
{
File f = new File("D:\\Bank\\");
BufferedReader bufr = null;
String msg = "";
File f2 = null;
try
{
if(!f.exists())
{
f.mkdirs();
}
f2 = new File("D:\\Bank\\BankMsg.txt");
if(!f2.exists())
f.createNewFile();
bufr = new BufferedReader(new FileReader(f2));
while((msg = bufr.readLine()) != null)
{
String[] strArr = msg.split(":");
Business.Acc.add(new Account(strArr[0],strArr[1],strArr[2],strArr[3],Double.parseDouble(strArr[4]),Integer.parseInt(strArr[5])));
}
}
catch (IOException ex){}
finally
{
if(bufr != null)
{
try
{
bufr.close();
}
catch(IOException ex){}
}
}
}
//查询交易记录
public void readRecord(String account)
{
File f = new File("D:\\Bank\\Account");
File f2 = null;
BufferedReader bufr = null;
String msg = "";
try
{
if(!f.exists())
{
f.mkdirs();
}
f2 = new File("D:\\Bank\\Account\\" + account + ".txt");
if(!f2.exists())
f.createNewFile();
bufr = new BufferedReader(new FileReader(f2));
while((msg = bufr.readLine()) != null)
{
System.out.println(msg);
}
}
catch (IOException ex){}
finally
{
if(bufr != null)
{
try
{
bufr.close();
}
catch(IOException ex){}
}
}
}
//管理员日志
public void writeRoot(String account,String record)
{
File f = new File("D:\\Bank\\Account");
BufferedWriter bufw = null;
File f2 = null;
try
{
if(!f.exists())
{
f.mkdirs();
}
f2 = new File("D:\\Bank\\Account\\root.txt");
if(!f2.exists())
f.createNewFile();
bufw = new BufferedWriter(new FileWriter(f2,true));
bufw.write(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
bufw.newLine();
bufw.write("账号:" + account + "\n操作类型:" + record);
bufw.newLine();
bufw.flush();
 
}
catch(IOException ex)
{}
finally
{
if(bufw != null)
{
try
{
bufw.close();
}
catch(IOException ex)
{}
}
}
}
//将Acc集合写入文件
public void writeIn()
{
File f = new File("D:\\Bank");
BufferedWriter bufw = null;
File f2 = null;
try
{
if(!f.exists())
{
f.mkdirs();
}
f2 = new File("D:\\Bank\\BankMsg.txt");
if(!f2.exists())
f.createNewFile();
bufw = new BufferedWriter(new FileWriter(f2));
for(Account acc : Business.Acc)
{
bufw.write(acc.toString());
bufw.newLine();
bufw.flush();
}
}
catch(IOException ex){}
finally
{
if(bufw != null)
{
try
{
bufw.close();
}
catch(IOException ex){}
}
}
}
//添加用户操作记录
public void writeRecord(String account,String record)
{
File f = new File("D:\\Bank\\Account");
BufferedWriter bufw = null;
File f2 = null;
try
{
if(!f.exists())
{
f.mkdirs();
}
f2 = new File("D:\\Bank\\Account\\" + account + ".txt");
if(!f2.exists())
f.createNewFile();
bufw = new BufferedWriter(new FileWriter(f2,true));
bufw.write(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
bufw.newLine();
bufw.write(record);
bufw.newLine();
bufw.flush();
 
}
catch(IOException ex)
{}
finally
{
if(bufw != null)
{
try
{
bufw.close();
}
catch(IOException ex)
{}
}
}
}
}
 
 
 
 
class Account {
private String account; //账户
private String password;//密码
private String name;//用户名
private String tel;//电话
private double balance;//余额
private int state;//账户状态
 
@Override
public String toString() {
return account + ":" + password + ":" + name + ":" + tel
+ ":" + balance + ":" + state;
}
 
public Account() {
super();
}
 
public Account(String account, String password, String name, String tel, double balance, int state) {
super();
this.account = account;
this.password = password;
this.name = name;
this.tel = tel;
this.balance = balance;
this.state = state;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
}

Java第一阶段项目实训的更多相关文章

  1. 自我总结(六)---(学习j2ee+j2ee第一阶段项目)

    自我完善的过程就是在不断的自我总结不断的改进. 学习了Struts2 Spring Hibernate. 十天前结束了这个课程.也考试了.这次考试老师说机试考的还不错.其实就是一个简单的用户登录,进行 ...

  2. Java第一阶段总结

    学习java已经一个多月的时间了,第一阶段总算完成了. 这中间遇到很多问题,通过问同学问学长,收获了很多,但也知道自己和其他同学相差很远.他们java第一阶段只用了不到一个月的时间,而我拖了很长时间, ...

  3. java - 第一阶段总结

    java - 第一阶段总结 递归 递归:能不用就不用,因为效率极低 package over; //递归 public class Fi { public static void main(Strin ...

  4. BeagleBone Black项目实训手册(大学霸内部资料)

    BeagleBone Black项目实训手册(大学霸内部资料) 介绍:本教程是<BeagleBone Black快速入门教程>的后续教程.本教程以项目操作为主,讲解LED项目.声音项目.传 ...

  5. 小型APP系统开发与应用项目实训

    实训项目 :             小型APP系统开发与应用项目实训                           项目成品名称:          果乐多商城               项 ...

  6. 《JAVA课程设计》实训第四天——《猜猜看》游戏

    第四天,本来想进一步去改进<猜猜看>游戏的.可是非常多问题都不理解.也不熟悉怎么去弄到连接数据库.统计猜对次数,所以并没有进行再多的改动. 基本上就是这种执行结果了 import java ...

  7. Android电子书项目实训【项目说明】【1】

    概述: 本实训项目是本科教学中,Android课程实训的项目,旨在训练Android App訪问server,获取server数据,解析,并呈现的流程.主要包括的功能有: 1.用户注冊 2.登录 3. ...

  8. Java第一阶段作业总结

    目录 0.前言 1.作业过程总结 2.OO设计心得 3.测试的理解与实践 4.课程收获 5.对课程的建议 前言 本次博客针对第一阶段的三次作业发表总结,作业要求主要是初学者对于Java的基本语法.用法 ...

  9. JAVA EE 第一阶段项目问题

    一: 乱码 原因: 由于同组的其他同学的myeclipse默认的编码方式是GBK,而我的默认的是UTF-8.所以当我使用svn把其他同学提交到组长那里去的代码下载下来的时候,就全乱码了! 解决问题: ...

随机推荐

  1. 部署springboot时出现的问题

    一.打包出现问题 后经发现是因为maven的打包插件的版本问题,需要修改版本 <plugins> <plugin> <groupId>org.springframe ...

  2. 【开发工具】-- IDEA集成Git在实际项目中的运用

    1.企业实际项目中Git的使用 在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目.以我工作过的公司如华为的项目,一般是存放在企业内部的CodeHub ...

  3. 微信小程序云开发-云存储的应用-云相册

    一.准备工作 1.创建数据库表images 2.设置数据库表images的权限 二.创建图片列表页 创建图片列表页imageList,用于展示图片列表.该页面具有跳转到图片上传页面.图片列表展示.删除 ...

  4. Hive开发要知道数据仓库的四个层次设计

    数据仓库:数据仓库全面接收源系统数据,ETL进程对数据进行规范化.验证.清洗,并最终装载进入数据集市,通过数据集市支持系统进行数据查询.分析,整个数据仓库包含四大层次. 1.数据仓库的四个操作    ...

  5. Python基础之用PyQt5界面代码分离以及自定义一个槽函数

    最近开发一个项目,需要用到界面,遇到界面不能实时更新的问题,看到网上很多用槽函数,但是大多都是些button的,并不是我需要的,要么就是整数的,后来自己进行尝试,写了一个自定义的槽函数处理treewi ...

  6. Axure RP 9 Enterprise/Pro/Team for Mac/Windows安装破解版激活教程

    Axure RP 9.0 是一款功能强大的.操作方便.专业可靠的快速原型设计工具.一款能够在这里体验最简单的设计方式,这里有着全新的升级的软件界面,更加的时尚,更加的丰富,专为每一个用户提供了便捷的设 ...

  7. 看视频学Bootstrap—在微软虚拟学院学习Bootstrap

    Bootstrap 是目前最流行的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB项目. 如果您希望在几个小时内对Bootstrap有一个直观的了解,观看微软虚拟学院(M ...

  8. python2 与 python3 依赖包冲突问题

    原文链接   https://www.2cto.com/database/201805/749294.html 执行pip的时候取的是/usr/bin这里的pip,查看这里是否存在pip3,没有的话需 ...

  9. php中英文字符串转字母转大小写

    <?php //转小写 function lowercase($a){ $b = str_split($a, 1); $r = ''; foreach($b as $v){ $v = ord($ ...

  10. 记录21.08.04 — mybatis入门学习

    mybatis入门 mybatis简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工 ...