`

模拟实现银行存储实验

阅读更多

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

迷糊啊,快吐血了...

/*
*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();    
 }
}

分享到:
评论

相关推荐

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

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

    操作系统实验指导书

    操作系统实验指导书(可用于课程设计),总共包括十个实验。 课题一 进程创建模拟实现 课题二 连续动态内存管理模拟实现 课题三 基于时间片的高优先级调度模拟实现 ...课题十 请求分页虚拟存储管理的模拟实现

    操作系统实验源码(C/C++模拟)

    实验二 银行家算法的模拟实现 实验三 进程调度算法的模拟实现 实验四 动态存储分区算法的模拟实现 注意 此为基于windows的模拟程序,即仅仅演示这个过程。发这个东西,主要是因为网上的存储分区算法当中几乎没有回收...

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

    操作系统所有实验报告(报告中含有源代码):实验1-进程调度模拟实验;实验2-银行家算法模拟实验;实验3-动态分区存储管理;实验4-请求分页存储管理模拟实验;实验5-命令行接口实验。

    操作系统实验——可视化模拟

    C#实现的对操作系统课程中经典算法的可视化模拟;如进程管理(进程状态转换、生产者-消费者、进程调度、银行家算法),存储管理(动态分区分配算法、分页算法),设备管理(磁盘调度算法)。 适宜人群:正在学习操作...

    数据结构银行业务活动的模拟.doc

    编制一个程序模拟银行 的这种业务活动并计算一天中客户在银行的平均逗留时间。 功能要求: 1).实现数据的输入; 2).各个窗口数据的访问和输出; 3)当前窗口的人员分布情况动态显示。 界面要求:有合理的提示,每个...

    操作系统三个实验报告

    实验一 编程实现银行家安全算法 实验二 存储管理的模拟实现 实验三 磁盘调度算法的模拟实现

    111201操作系统实验题目

    实用的实验报告,实验一 编程实现银行家安全算法 实验二 存储管理的模拟实现 实验三 磁盘调度算法的模拟实现

    13操作系统实验报告.doc

    实 验 报 告 " " 实验名称 进程调度实验 、作业调度实验 银行家算法实验、存储管理实验 课程名称 操作系统 " " 专业班级: 学生姓名: 学 号: 成 绩: 指导教师: 实验日期: "一、实验内容 " "1.进程调度 " "本...

    银行家算法(模拟设备分配和回收的算法)

    1. 银行家算法(模拟设备分配和回收的算法)  用高级语言编写一个银行家的模拟算法。  设置恰当的数据结构,有效存储数据。   输出分配过程、分配结果以及其它相关的信息。  界面友好,提示清晰。

    数据库应用系统设计与实现

    数据库应用系统设计与实现 实验类型:设计型 实验地点:2楼312 ...五、用存储过程实现业务处理 1)完成开户业务 2)完成取款或存款业务 3)根据卡号打印对账单 4)查询、统计指定时间段内没有发生交易的账户信息

    2022年广工操作系统实验(源代码+实验报告)(Java版)

    了解动态分区分配方式中的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。 4、实验四 仿真各种磁盘调度算法 由系统产生一系列磁盘请求(10个),分别给出先来先服务算法、最短寻道...

    基于C语言的银行管理系统(C语言代码+实验报告)

    银行存取款管理设计与实现设计一个模拟银行存取款的功能,最多可以对5000个银行账号的信息进行管理,具体功能如下。(1)提供执行的选择菜单,并按照用户的选择执行相应的操作。(2)客户信息的录入,包括账号、客户...

    操作系统实验报告

    本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 三、实验内容与要求 通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量...

    计算机操作系统实验报告

    进程调度(先来先服务 高优先 短优先) 银行家算法 可变分区模拟 页式虚拟存储模拟 磁盘调度

    操作系统实验

    ●基本要求:利用交互式命令实现树型目录结构和文件管理,同时利用位示图表示外存的分配情况,新建文件时分配必要的空间,模拟文件分配表记录文件在外存上的存储方式。 ●参考学时:8学时 ●参考资料: 在文件中保存...

    操作系统课程设计.doc

    实验一 模拟生产者-消费者问题和读者-写者问题; 实验二 作业调度算法; 实验三 银行家算法; 实验四 动态分区分配存储管理方式的内存分配回收; 实验五 页面置换算法; 实验六 磁盘调度。 满分实验报告。

    操作系统实验报告(无程序)

    1.模拟单处理器系统的进程调度,加深对进程的概念及进程调度算法的理解。用某种语言编写和调试一个进程调度的算法程序,有一些简单的界面,能够运行,仿真操作系统中进程调度的原理和过程。进程调度要求使用高响应比...

    matlab与ccs生成代码-Q-CCS:该存储库包含论文“用于LTE-U和WiFi共存网络的QoS保证的分量载波选择算法”的仿真代码。

    这些模拟基于类似于银行排队系统的事件驱动模拟,以对用户的到达和离开过程进行建模。 如果您对模拟代码感兴趣,请引用以下文章: @INPROCEEDINGS {Chu_GC19,作者= {L。 {Chu}和J. {Zheng}和J. {Xiao}},书名= {...

    电子商务毕业设计论文

    本论文着重阐述了BtoC模拟网站的分析、设计与实现,系统主要包括以下几个模块:会员注册及登录、商品分类展示、商品信息检索、购物车、生成订单、订单查询等模块,通过这些模块实现使学生能够直接感受到电子商务的...

Global site tag (gtag.js) - Google Analytics