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

📄 cibcserver.java

📁 银行系统
💻 JAVA
字号:
//CIBC服务器

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

class CIBCthread extends Thread{
	public CIBCthread(Socket s,Socket cibc,Csm c){
		this.s=s;
		this.cibc=cibc;
		this.c=c;
	}
	public void run(){
		try{
			Vector v = new Vector();            //创建一个集合类,保存数据
		  RandomAccessFile raf = new RandomAccessFile("e:\\CIBC.dat", "rw");           //加载数据
		  try{
			  do{
				  String id = raf.readUTF();
				  String password = raf.readUTF();
				  double money = raf.readDouble();
				  String name = raf.readUTF();
				  Csm c = new Csm(id,password,money,name);
				  v.add(c);
			  }while(true);
		  }
		  catch(EOFException eof){
		  }
		  raf.close();				    
		  
			InputStream isatm=s.getInputStream();                     //ATM客户机的输入流
			BufferedReader bratm=new BufferedReader(new InputStreamReader(isatm));
			
			OutputStream osatm=s.getOutputStream();           //向ATM客户机的输出流
			PrintWriter outatm=new PrintWriter(osatm,true);
			
			OutputStream oscch=cibc.getOutputStream();               //向CCH总行的输出流
			PrintWriter outcch=new PrintWriter(oscch,true);
			
			String latm=null;            //接收ATM输入
			String idatm=null;           //接收ATM用户名
			String psdatm=null;          //接收ATM密码
			String ltd=null;
			
			boolean stopFlag=false;
			int pos=-1;
			
			while(!stopFlag){
			  latm=bratm.readLine();                //检查ID
			  if(latm.startsWith("t")){
			  	InetAddress iatd=InetAddress.getLocalHost();
		      int portd=3333;
		      Socket std=new Socket(iatd,portd);         //连接TD服务器
		      
		      InputStream istd=std.getInputStream();             //TD支行的输入流
			    BufferedReader brtd=new BufferedReader(new InputStreamReader(istd));
			
			    OutputStream ostd=std.getOutputStream();            //向TD支行的输出流
			    PrintWriter outtd=new PrintWriter(ostd,true);
		     
		      outtd.println("CIBC-ATM");
		      if((brtd.readLine()).equals("start")){
		        outtd.println(latm);
		        while(!stopFlag){
		      	  ltd=brtd.readLine();       //接收TD的输入数据
		          outatm.println(ltd); 
		          latm=bratm.readLine();
		          if((latm.equals("ok"))||(latm.equals("error"))){
		        	  stopFlag=true;
		        	  break;
		        	}
		          outtd.println(latm);     
		        }
		        while(stopFlag){
		          outtd.println(latm);
		          ltd=brtd.readLine();
		          outatm.println(ltd);
		          if((ltd.substring(0,2)).equals("04")){
		           	break;
		          }
		          latm=bratm.readLine();
		        }
          }
			  }
			  else{
			    for(int index=0; index<v.size(); index++){
			      Csm c = (Csm)v.get(index);
			      String str=c.getID();
				    if(str.equals(latm)){
					    pos = index;     
					    break;
				    } 			
			    }			
			    if(pos==-1){ 
				    outatm.println("error");                  			  		
			    }
			    else{                           //查找到该ID		
				    c = (Csm)v.get(pos);	    //将该ID信息传给c
				    outatm.println("ok");
				    stopFlag=true;
			    }
			  }
			}
			while(stopFlag){
			  psdatm=bratm.readLine();                  //检查密码
			  if(psdatm.equals(c.getPassword())){
				  outatm.println("ok");
				  while((latm=bratm.readLine())!=null){           
				    if(latm.substring(0,2).equals("01")){              //存款
				  	  m=c.getMoney()+Double.parseDouble(latm.substring(2));
					    c.setMoney(m);
					    outatm.println("01");
					    outcch.println(latm);            //向CCH总行
				    }
				    else if(latm.substring(0,2).equals("02")){            //取款
					    m=c.getMoney()-Double.parseDouble(latm.substring(2));
					    c.setMoney(m);
					    outatm.println("02");
					    outcch.println(latm);            //向CCH总行
				    }
				    else if(latm.substring(0,2).equals("03")){            //查询余额
					    outatm.println(c.getMoney());
				    }
				    else if(latm.substring(0,2).equals("04")){            //退出
				    	outatm.println("04");
				    	RandomAccessFile raf2 = new RandomAccessFile("e:\\CIBC.dat", "rw");		//保存数据
			        Csm c = (Csm)v.get(pos);
			      
			        raf2.writeUTF(c.getID());
			        raf2.writeUTF(c.getPassword());
			        raf2.writeDouble(c.getMoney());
			        raf2.writeUTF(c.getName());			
	
		          raf2.close();	
			  		  break;
				    }
				    else{
				    	outatm.println("00");
				    }
			    }  
			  }
			  else{	
				  outatm.println("error");
			  }
			}
		  s.close();
			outatm.close();
		  osatm.close();
		  bratm.close();
			isatm.close();
		}
		catch(Exception e){
		}
	}
	private Csm c=null;
	private Socket cibc=null;
	private Socket s=null;
	private double m=0;
}

public class CIBCServer{
	public static void main(String[] args)throws Exception{
	  InetAddress ia=InetAddress.getLocalHost();
		int port=1111;
		Socket cibc=new Socket(ia,port);      //连接CCH服务器
		
		OutputStream osc=cibc.getOutputStream();
		PrintWriter outc=new PrintWriter(osc,true);
		String lcch=null;                                                                                                                                                                
	  outc.println("01");     	             //向总行报到 
     
    ServerSocket CIBC=new ServerSocket(2222);           //CIBC服务器端口
			
		boolean stopFlag=false;
		while(!stopFlag){
			System.out.println("CIBC服务器已启动...");
			Socket s=CIBC.accept();              //等待ATM客户  
			Csm c=new Csm(); 
		  
			InputStream isatm=s.getInputStream();
			BufferedReader bratm=new BufferedReader(new InputStreamReader(isatm));
			String latm=null;               
			
			OutputStream osatm=s.getOutputStream();
			PrintWriter outatm=new PrintWriter(osatm,true);
			
			latm=bratm.readLine();
			if(latm.equals("CIBC-ATM")){           //接收ATM的报到
				System.out.println("CIBC-ATM启动");
				outatm.println("start");              //返回给ATM
			}	
			else if(latm.equals("TD-ATM")){
				System.out.println("TD-ATM启动");
				outatm.println("start");
			}	
				
			CIBCthread CI=new CIBCthread(s,cibc,c);        //启动一个线程
			CI.start();
		}
		
	}
}

⌨️ 快捷键说明

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