⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atmserver.java

📁 模拟银行的ATM自动取款机
💻 JAVA
字号:
import java.net.*;
import java.io.*;

public class ATMServer{
   private ServerSocket server;
   private Socket s;
   
   /*public static void main(String args[]){
      ATMServer server=new ATMServer();
   }*/
   
   public ATMServer(){
      try{
         server=new ServerSocket(5555);
         s=null;
         System.out.print("服务器启动"+"\n");
      }catch(IOException e){}
      Listen();
      
   }
   
   private void Listen(){
      while(true){
         try{
            s=server.accept();
            ServerThread st=new ServerThread(s);
            System.out.print("侦听到远程连接!"+"\n");
            new Thread(st).start();
            System.out.print("建立独立线程并开始运行"+"\n");
         }catch(IOException e){}
      }
   }
}


class ServerThread implements Runnable{
   private Socket s;
   private DataOutputStream dout;
   private DataInputStream din;
   private String ATMnum;
   
   public ServerThread(Socket s){
      this.s=s;
      try{
         dout=new DataOutputStream(s.getOutputStream());
         din=new DataInputStream(s.getInputStream());
      }catch(IOException e){}
   }
   
   public void run(){
       ATMnum=getString();
       System.out.print("ATM号:"+ATMnum+"\n");

       while(true){//等待用户插卡操作
            System.out.print("等待插卡......\n");
            String ID=getString();
            System.out.print("接受到用户卡号"+ID+"\n");
            Employer account=new Employer(ATMnum);
            int check=account.IsAccountExsit(ID);
            if(check==1){
               sendString("true");
            }
            else{
               sendString("false");
               continue;
            }
            
            
            String password=getString();
            int i=0;
            while(i<3){
               boolean c=account.checkPassWordCustomer(password);
               if(c==true){
                  sendString("true");
                  break;
               }
               else{
                  sendString("false");
                  i++;
                  System.out.print("第"+i+"次密码错误!!\n");
                  if(i!=3) password=getString();
               }
            }
            if(i==3) continue;
            System.out.print("接受到用户密码"+password+"\n");
            
            
            while(true){//等待用户发送操作命令
               System.out.print("等待用户操作......\n");
               String command=getString();
               System.out.print("接受到命令:"+command+"\n");
               if(command.equals("Query")){
                  String cash=String.valueOf(account.getMoney());
                  sendString(cash);
                  System.out.print("用户查询金额为"+cash+"\n");
                  command="";
               }
               if(command.equals("Draw")){
                  String str=getString();
                  float draw=Float.parseFloat(str);
                  int ch=account.ATMDraw(draw);
                  System.out.print("用户要求取款金额"+str+"  操作返回值"+ch+"\n");
                  sendInt(ch);
                  command="";
               }
               if(command.equals("ChangePassWord")){
                  String newPassword=getString();
                  account.changePassWordCustomer(newPassword);
                  System.out.print("用户修改密码为"+newPassword+"\n");
                  sendString("true");
                  command="";
               }
               if(command.equals("MoveMoney")){
                  String nextID=getString();
                  float money=Float.parseFloat(getString());
                  int k=account.moveMoney(nextID,money);
                  sendInt(k);
                  command="";
                  System.out.print("用户转帐金额"+money+"目标ID"+nextID+"操作返回"+k+"\n");
               }
               if(command.equals("Quit")){//结束操作,进入下一等待状态
                  command="";
                  System.out.print("用户退卡结束操作\n");
                  break;
               }
            }
            
         }

   }
   
   public String getString(){ 
         String str=null;
         try{
            str=din.readUTF();
         }catch(IOException e){}    
         return str;    
   }
   
   public void sendString(String str){
      try{
         dout.writeUTF(str);
      }catch(IOException e){}
   }
   
   public void sendInt(int ch){
      try{
         dout.writeInt(ch);
      }catch(IOException e){}
   }
}
         

   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -