`

模拟实现银行存储实验

阅读更多

对前天写的程序进行了修改,主要在于填加一个管理员。能够实现帐户的填加,删除和冻结。

迷糊啊,快吐血了...

/*
*Title 模拟实现银行存储系统
*用户实现存钱,取钱,转帐..
*填加了一个管理员,实现简单的帐户填加,删除,冻结...
*@author realsmy
*2006-10-21 9:16
*/

import java.io.*;
import java.util.*;

//定义帐户类
class ZhangHu {
 private String name;
 private String password;
 private int money;
 ZhangHu(){
  
 }
 ZhangHu(String name,String password, int money){
  this.name = name;
  this.password = password;
  this.money = money;
 }
 public void setM(int a){
  money = money + a;
  System.out.println("存储了"+a+"元,帐户"+name+"尚有余额"+money+"元");
 }
 public void getM(int a){
  if(a > money){
   System.out.println("对不起,您的金额不足"+a+"元");
  }
  else{
   money = money - a;
   System.out.println("取得了"+a+"元,帐户"+name+"尚有余额"+money+"元");
  }
 }
 public String getName(){
  return name;
 }
 public String getPassword(){
  return password;
 }
 public int getMoney(){
  return money;
 }
 public void setName(String name){
  this.name = name;
 }
 public void setPassword(String password){
  this.password = password;
 }
 public void setMoney(int money){
  this.money = money;
 }
}

//定义管理员类
class Manager
{
 //private static Vector vec = new Vector();
 //Enumeration vc = vec.elements();
 public void add(){
  ZhangHu zh = new ZhangHu();
  try{
    System.out.println("请输入帐户名:");
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
    zh.setName(in.readLine());
    System.out.println("请输入密码:");
    while(true){
     zh.setPassword(in.readLine());
     System.out.println("请再次输入密码:");
     if(zh.getPassword().equals(in.readLine())){
      break;
     }
     else{
      System.out.println("两次输入的密码不一致,请重新输入密码:");
      continue;
     }
    }
    System.out.println("请输入该帐户的金额:");
    zh.setMoney(Integer.parseInt(in.readLine()));
    PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(zh.getName()+".txt")));//创建文件
    writer.println(zh.getPassword());
    writer.println(zh.getMoney());
    writer.flush() ;
    System.out.println("帐户"+zh.getName()+"已经创建成功");
   }catch(IOException e){} 
 }
 public void del(){
  ZhangHu zh2;
  String name = null;
  //int p = 0;//判断是否删除成功
  System.out.println("请输入您要删除的帐户:");
  while(true){
   try{
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
    name = in.readLine();
   }catch(IOException e){}
   //while(vc.hasMoreElements()){
   File fl = new File(name+".txt");
   if(fl.exists()){
    fl.delete();
    System.out.println("帐户"+name+"删除成功");
    break;
   }
   else{
    System.out.println("您所输入的帐户并不存在,请重新输入:");
   }
  }  
 }
 public void froze(){
  ZhangHu zh3 = new ZhangHu();
  String name = null;
  System.out.println("请输入您要冻结的帐户:");
  while (true){  
   try{
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    name = in.readLine();
   }catch(IOException e){}
   File fl = new File(name+".txt");
   if (fl.exists()){//如果该帐户存在,则读取该帐户的数据
    try{
     BufferedReader reader = new BufferedReader(new FileReader( name + ".txt"));
     zh3.setPassword(reader.readLine());
     zh3.setMoney(Integer.parseInt(reader.readLine()));
    }catch(IOException e){}
    File fr = new File("frozen");
    if(!fr.exists()){
     try{
      fr.mkdir();//创建一个此目录的文件夹
     }catch(SecurityException e){}
    }
    File frfl = new File(fr,name+".txt");
    try{
     PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(frfl)));
     writer.println(zh3.getPassword());
     writer.println(zh3.getMoney());
     writer.flush() ;
    }catch(IOException e){}
    fl.delete();
    System.out.println("帐户"+name+"冻结成功!");
    break;
   }
   else{
    System.out.println("您所输入的帐户并不存在,请重新输入:");
   }
  }
 
 }
}
//银行模拟系统
public class Bank_Test{
 String name;
 String password;
 String pw;
 int money;
 int choose;
 int a,b;//存取的金额,临时变量
 int type;//登陆身份
 File fl;
 ZhangHu user,user2;//帐户对象
 Manager manager;
 //Manager manager;//管理员对象
 String toname;//转入帐户名
 String c;//临时存储转入帐户密码
 public Bank_Test(){
  if(login() == 1){
   manager_login();
   manage();
  }
  else{
   if(user_login()){
    user = new ZhangHu(name,password,money);
    cunqu(); 
   }
  }   
 }
 //实现登陆方法login
 public int login(){
  System.out.println("您好,欢迎光临赵家银行!\n请选择您的登陆身份:1. 管理员 2. 用户");
  while(true){
   try{
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
    type = Integer.parseInt(in.readLine());
   }catch(IOException e){}
   if (type == 1){
    return 1;
   }
   else if (type == 2)
   {
    return 2;
   }
   else{
    System.out.println("输入错误,请重新输入:");
    continue;
   }
  }
 }
 //实现管理员登陆方法manager_login()
 public void manager_login(){
  System.out.println("请输入管理员帐号:");
  while(true){
   try{
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
    name = in.readLine();
   }catch(IOException e){}
   if (name.equals("admin")){
    System.out.println("请输入密码:");
    while(true){
     try{
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
      password = in.readLine();
     }catch(IOException e){}
     if (password.equals("admin")){
      System.out.println("登陆成功!欢迎您admin!");
      break;
     }
     else{
      System.out.println("密码错误,请重新输入:");
     }
    }
    break;
   }
   else{
    System.out.println("对不起,您输入的帐号并不存在,请重新输入:");
    continue;
   }
  }
 }
 //实现管理员管理方法manage()
 public void manage(){
  manager = new Manager();
  while(true){
   System.out.println("请选择您要进行的操作:\n1. 填加帐户 2. 删除帐户 3. 冻结帐户 4. 退出"); 
   while(true){
    try{
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
     choose = Integer.parseInt(in.readLine());
    }catch(IOException e){}
    if(choose == 1){
     manager.add();
     break;
    }
    else if(choose == 2){
     manager.del();
     break;
    }
    else if(choose == 3){
     manager.froze();
     break;
    }
    else if (choose ==4){
     System.exit(0);
    }
    else{
     System.out.println("输入错误,请重新输入:");
     continue;
    }
   }
  }
 }
 //实现用户登陆方法user_login()
 public boolean user_login(){
  System.out.println("尊敬的用户您好,欢迎光临赵家银行!请输入您的帐户号码:");
  while(true){
   try{
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
    name = in.readLine();
   }catch(IOException e){}
   fl = new File("frozen",name+".txt");
   if(fl.exists()){
    System.out.println("对不起,您的帐户已被冻结!");
    return false;
   }
   fl = new File(name+".txt");
   //判断帐户是否存在
   if(!fl.exists()){
    System.out.println("对不起,您输入的帐户并不存在,请重新输入:");
    continue;
   }
   //帐户存在,开始判断密码
   try{
    System.out.println("请输入您的密码:");
    BufferedReader in2 = new BufferedReader(new InputStreamReader(System.in));  
    password = in2.readLine();
   }catch(IOException e){}
   //取文件中的密码
   try{
    BufferedReader reader = new BufferedReader(new FileReader( name + ".txt"));
    pw = reader.readLine();
    money = Integer.parseInt(reader.readLine());
   }catch(IOException e){}
   //判断密码
   if(password.equals(pw)){
    System.out.println("登陆成功");
    System.out.println("您的用户尚有余额"+money+"元");
    return true;
   }
   else{
    System.out.println("对不起,您输入的密码不正确,请重新输入帐户:");
    continue;
   }   
  }
 }
  //实现user存取方法cunqu
  public void cunqu(){
   while(true){
   System.out.println("请选择您要进行的操作:");
   System.out.println("1. 存钱 2. 取钱 3. 转帐 4. 退出 ");
   try{
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
     choose = Integer.parseInt(in.readLine());
    }catch(IOException e){}
   //存钱
   if(choose == 1){
    System.out.println("请输入你要存储的金额:");
    try{
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
     a = Integer.parseInt(in.readLine());
    }catch(IOException e){}
    user.setM(a);
    //infile(user);

   }
   //取钱
   else if(choose == 2){
    System.out.println("请输入你要取得的金额:");
    try{
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
     a = Integer.parseInt(in.readLine());
    }catch(IOException e){}
    user.getM(a);
    infile(user);
   }
   else if(choose == 3){
    System.out.println("请输入你要转入的帐户:");
    while(true){
     try{
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
      toname= in.readLine();
     }catch(IOException e){}
     fl = new File(toname+".txt");
     //判断帐户是否存在
     if(!fl.exists()){
      System.out.println("对不起,您输入的帐户并不存在,请重新输入:");
      continue;
     }
     else{
      break;
     }
    }
    System.out.println("请输入你要转入的金额:");
    try{
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));     
     a = Integer.parseInt(in.readLine());
    }catch(IOException e){}
    user.getM(a);
    infile(user);
    try{
     BufferedReader reader = new BufferedReader(new FileReader( toname + ".txt"));
     c = reader.readLine();
     b = Integer.parseInt(reader.readLine());
    }catch(IOException e){}
    user2 = new ZhangHu(toname,c,b);
    user2.setM(a);
    infile(user2);
    
   }
   else if(choose == 4){
    System.exit(0);
   }
   else{
    System.out.println("输入不正确。");
    continue;
   }
  }
 }
 //存入文件
 public void infile(ZhangHu p){
  try{
   PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(p.getName()+".txt")));
   writer.println(p.getPassword());
   writer.println(p.getMoney());
   writer.flush() ;
  }catch(IOException e){}
 }
 public static void main(String [] args){
  Bank_Test a = new Bank_Test();    
 }
}

分享到:
评论

相关推荐

    c++银行模拟系统实验报告

    本篇实验报告是关于使用C++构建一个银行模拟系统的详细阐述,该系统采用事件驱动模型,目的是评估和优化银行的服务效率。系统通过模拟顾客的到达、服务和离开过程,计算平均等待时间和窗口利用率,以此分析银行的...

    操作系统所有实验报告:进程调度,银行家算法,动态分区存储,请求分页存储管理,命令行接口

    这里,我们有五个重要的实验报告,涵盖了操作系统的主要功能领域:进程调度、银行家算法、动态分区存储、请求分页存储管理和命令行接口。 首先,实验1——进程调度模拟实验,主要涉及操作系统如何在多个并发执行的...

    模拟银行家算法实现死锁避免

    在模拟银行家算法的实现中,通常会使用数据结构如链表或矩阵来存储这些信息,并通过一系列的条件判断和循环操作来执行上述步骤。例如,通过遍历所有进程,检查它们的剩余需求是否能被满足,然后尝试重新分配资源,...

    操作系统 模拟实现死锁避免实验报告

    ### 操作系统模拟实现死锁避免实验报告 #### 实验目的 本次实验旨在深入理解操作系统中的死锁概念及其避免机制。通过编程实现银行家算法,检验系统状态的安全性,掌握如何预防死锁的发生,为未来在实际操作系统环境...

    操作系统实验——模拟银行家算法

    操作系统实验——模拟银行家算法是计算机科学领域中的一个重要实践,主要涉及操作系统中的资源分配与死锁预防策略。在这个实验中,我们将深入理解银行家算法的工作原理,并通过编程实现来模拟这个算法。 银行家算法...

    银行模拟业务(数据结构 实验 MFC)

    在本实验项目“银行模拟业务(数据结构 实验 MFC)”中,主要涉及了三个核心概念:数据结构、MFC(Microsoft Foundation Classes)以及银行业务的模拟实现。这三个方面共同构建了一个完整的银行数据管理系统,旨在让...

    c语言模拟银行家算法

    根据给定的信息,本文将详细解释“C语言模拟银行家算法”的实现原理及代码细节。 ### 一、银行家算法简介 银行家算法是一种避免死锁的算法,它通过检查系统的资源分配情况来确保系统不会进入不安全状态,从而防止...

    数据结构大型实验--银行模拟系统

    这个实验的核心是构建一个模拟银行日常运营的系统,它涵盖了账户管理、交易处理、客户信息存储等多个功能模块。下面将详细介绍这个实验涉及的关键知识点。 首先,**数据结构** 是整个系统的基础。在银行模拟系统中...

    数据结构课程实验C++实现的银行系统(离散事件模拟)

    《数据结构课程实验:C++实现的银行系统——离散事件模拟详解》 在学习数据结构的过程中,学生们经常会被布置一些结合实际应用的项目,以此加深对数据结构的理解。本次介绍的“数据结构课程实验”就是一个典型的...

    银行家算法实验报告

    【银行家算法实验报告】 操作系统课程中的银行家算法实验旨在帮助学生深入理解进程死锁的概念,以及如何通过银行家算法确保系统的安全性。银行家算法是一种预防死锁的策略,它通过对资源分配进行预检查,避免系统...

    银行家算法c语言实现+实验报告

    在C语言实现银行家算法时,我们需要定义数据结构来存储这些矩阵,例如使用二维数组。同时,还需要实现以下核心功能: 1. 初始化:设置初始的资源分配矩阵和最大需求矩阵,以及当前可用资源数量。 2. 请求分配:进程...

    操作系统实验指导书(用c语言实现了操作系统里的几个经典算法!)

    在实验六中,学生将模拟可变分区存储管理,这是一种动态调整内存分区大小的内存管理策略。这涉及到内存分配和回收算法,如最佳适应(Best Fit)、最坏适应(Worst Fit)和首次适应(First Fit)等,以高效地使用...

    操作系统之JAVA语言实现和模拟银行家算法

    在这个大作业中,我们将讨论如何使用JAVA语言来实现银行家算法,并对相关知识点进行深入的探讨。 首先,我们要理解银行家算法的基本思想。该算法的核心是预防死锁,通过预分配和动态分配资源,确保系统总能在有限的...

    操作系统实验 银行家算法 实验报告及附录代码

    ### 操作系统实验:银行家算法实验报告及附录代码 #### 一、实验目的 本次实验的主要目的是理解和掌握死锁的基本概念及其预防方法。通过实际编程实现银行家算法,来学习如何通过资源分配策略避免系统进入死锁状态...

    银行家算法模拟c/c++

    本实验旨在通过编程的方式,帮助学生深入理解银行家算法的具体实现过程及其背后的逻辑原理。 #### 实验目的 1. **理解资源分配**:通过模拟多个进程共享有限资源的情况,加深对多道程序环境下资源分配的理解。 2. ...

    银行排队模拟系统实验报告.doc

    本银行排队模拟系统实验报告通过设计和实现银行排队系统,模拟了银行的排队业务,满足了客户的需求,提高了银行的服务效率。 八、参考文献 1. 数据结构课程设计实验报告 2. 银行排队管理系统设计 3. 排队理论与...

    操作系统实验 文档+实验目的+原理+内容+结果+小结 银行家算法

    本实验报告总结了银行家算法的原理和实现,展示了银行家算法在操作系统中的应用。通过实验,我们可以更好地理解银行家算法的内涵,并熟悉动态资源分配算法的应用。同时,本实验也提高了我们的编程能力和问题解决能力...

    计算机操作系统-实验二:银行家算法

    在“计算机操作系统-实验二:银行家算法”文档中,可能涵盖了如何设置实验环境,如何定义进程和资源,如何实现资源分配和安全性检查的算法,以及如何分析和解释实验结果等内容。实验可能要求学生通过编程实现算法,...

    商业银行业务模拟实验报告.doc

    实验中所覆盖的核心环节,包括资金的存储、流通、增值等,都是银行运营的核心内容,对金融知识的学习和银行业务的理解至关重要。 总而言之,商业银行业务模拟实验不仅提供了一个实践操作的平台,而且增强了学生的...

    基于 Java 实现银行家算法【100011124】

    本实验分为五个小实验,实验一的目的是模拟在单处理器环境下的处理器调度,加深了解处理器调度的工作。实验二的目的是理解在不同的存储管理方式下应怎样进行存储空间的分配和回收。实验三的目的是掌握磁盘存储空间的...

Global site tag (gtag.js) - Google Analytics