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

📄 bankserver.java

📁 本工程模拟网上社区,其中包括银行,软件销售公司,软件投资公司,茶餐馆,和多个服务器.
💻 JAVA
字号:
/*2:17
 * BankServer.java
 *
 * Created on 2007年9月3日, 下午4:11
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package bankserver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.InetAddress;
import java.io.IOException;
import java.util.Vector;
import java.util.StringTokenizer;
import java.util.Calendar;
import java.text.DecimalFormat;
import java.sql.ResultSet;

/**
 *
 * @author Administrator
 */
public class  BankServer{
    String ServerDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    String ServerconURL="jdbc:odbc:Bank";
    public Connection serverCon;
    public static int PORT=3009;
    public ServerSocket toClients;
    public Vector onService=new Vector();
    public boolean done=false;
    public int visitors=0;
    private DecimalFormat decimalformat=new DecimalFormat("##################0.00#");
    public static final double INTEREST=0.005;
    public String localIP;
    private InetAddress inet;
    
    
    
    public BankServer() {                                     //加载jdbc-odbc桥驱动器
          try{  
              Class.forName(ServerDriver);
          }
          catch(java.lang.ClassNotFoundException e){
             System.out.println("forname: "+e.getMessage());
          }
    }
    
    public void connection()            //与数据库连接   
    {
        try {
            serverCon=DriverManager.getConnection(ServerconURL);
        }catch(SQLException e)
        {
            System.out.println("SQLException: "+e.getMessage());
        }
    } 
    
   
   public  String loan(String account,String name,double money,int time,double interest) //贷款
    {
       connection();
         try{
             //确定贷款
             Statement s=serverCon.createStatement();
             ResultSet rs=s.executeQuery("select * from Loan");
             boolean exit=false;
             while(rs.next()){
                if(rs.getString("贷款人账号").equals(account)){
                    if(rs.getString("是否还款").equals("否")){
                        exit=true;
                    }
                    break;
                }
             }
            if(exit) return "exit";
            String r="insert into Loan values(0,0,0,0,0,0,0,0,0)";
            s.executeUpdate(r);
            s.close();
            //记入贷款数据库
            PreparedStatement ps=serverCon.prepareStatement("UPDATE Loan set 贷款人账号=?,贷款人姓名=?,贷款金额=?,贷款日期=?,还款日期=?,贷款时间=?,利率=?,是否还款=?, 编号=? WHERE 贷款金额=0");
            Calendar c=Calendar.getInstance();
            String ltime=String.valueOf(c.get(Calendar.YEAR))+"-"+String.valueOf(c.get(Calendar.MONTH)+1);
            String ptime=String.valueOf(c.get(Calendar.YEAR)+time)+"-"+String.valueOf(c.get(Calendar.MONTH)+1);
            ps.setString(1,account);
            ps.setString(2,name);
            ps.setDouble(3,money);
            ps.setString(4,ltime);
            ps.setString(5,ptime);
            ps.setInt(6,time);
            ps.setDouble(7,interest);
            ps.setString(8,"否");
            String str=String.valueOf(c.get(Calendar.YEAR))+String.valueOf(c.get(Calendar.MONTH))+String.valueOf(c.get(Calendar.DATE))+String.valueOf(c.get(Calendar.HOUR))+String.valueOf(c.get(Calendar.MINUTE));
            ps.setString(9,str);
            ps.executeUpdate();
            ps.close();
            serverCon.close();
            
            return deposit(account,money);
        }
        catch(SQLException e){
            try{
               serverCon.close();
           }
           catch(SQLException sqle){
               sqle.printStackTrace();
           }
            System.out.println(e.getMessage());
            return "fail";
        }
    }
   public  String deposit(String account,double money)     //存款
    {
        connection();
        try{
            Statement s=serverCon.createStatement();
            ResultSet rs=s.executeQuery("select * from Account");
            String dtime=null;
            double moneyin=0.00;
            int exit=0;
            while(rs.next()){
                if(rs.getString("账号").equals(account)){
                    dtime=rs.getString("存款时间");
                    moneyin=rs.getDouble("余额");
                    exit=1;
                    break;
                }
            }
            s.close();
            if(exit==0){
                return "no account";
            }
            StringTokenizer st=new StringTokenizer(dtime,"-");
            String temp[]=new String[st.countTokens()];
            for(int i=0;i<temp.length;i++)
            {
               temp[i]=st.nextToken();
            }
            Calendar c=Calendar.getInstance();
            int time=(c.get(Calendar.YEAR)-Integer.parseInt(temp[0]))*12+c.get(Calendar.MONTH)+1-Integer.parseInt(temp[1]);
            money=Double.valueOf(decimalformat.format(money+moneyin*(time*INTEREST+1)));
            String newtime=String.valueOf(c.get(Calendar.YEAR))+"-"+String.valueOf(c.get(Calendar.MONTH)+1)+"-"+String.valueOf(c.get(Calendar.DAY_OF_MONTH));
            PreparedStatement ps=serverCon.prepareStatement("UPDATE Account set 余额=?, 存款时间=? where 账号=?");
            ps.setDouble(1,money);
            ps.setString(2,newtime);
            ps.setString(3,account);
            ps.executeUpdate();
            ps.close();
            serverCon.close();
            return "success";
        }
        catch(SQLException e) { 
            try{
               serverCon.close();
           }
           catch(SQLException sqle){
               //sqle.printStackTrace();
           }
           System.out.println("SQLException:"+e.getMessage()+"\n"+"At BankThreadServer class while deposit() is called.");
           return "fail"; 
        }
    }
   
  public void operate()throws IOException
   {
       toClients=new ServerSocket(PORT);
       localIP=inet.getLocalHost().getHostAddress();
       System.out.println("服务器已经启动.");
       int customerNumber=1;
       try{
           while(!done){
               Socket clientSocket=toClients.accept();
               if(clientSocket!=null)
               {
                   System.out.println("第"+customerNumber+"位客户连接上服务器..");
                   try{
                        new BankThreadServer(clientSocket,this);
                    }
                   catch(IOException ioe){
                       System.out.println("after new BankThreadServer"+ioe.getMessage());
                   }
                   customerNumber++;
               }
           } 
      }
      finally{
          toClients.close();
          System.out.println("服务器关闭!");
      }
  }
 
}  

⌨️ 快捷键说明

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