📄 bank.java
字号:
package bankserver;
import java.sql.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class Bank extends Company {
String JDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String conURL="jdbc:odbc:Bank";
public Connection con;
public static int PORT;
public static int ServicePort;
ServerSocket toService;
ServerSocket toCompany;
public static final double INTEREST=0.005;
public Bank() { //加载jdbc-odbc桥驱动器
try{ Class.forName(JDriver);
}catch(java.lang.ClassNotFoundException e){
System.out.println("forname: "+e.getMessage());
}
}
public void connection() //与数据库连接
{
try {
con=DriverManager.getConnection(conURL);
}catch(SQLException e)
{
System.out.println("SQLException: "+e.getMessage());
}
}
void getPort()throws IOException
{
toService=new ServerSocket(ServicePort);
try{
Socket socket=toService.accept();
try{
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
String str=in.readLine();
PORT=Integer.parseInt(str);
out.println("get PORT successfully!");
}finally{
socket.close();
}
}finally{
toService.close();
}
}
public String login(String account,String password) //登录
{
connection();
try
{
int a=0;
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("select * from Account");
while(rs.next())
{
if(rs.getString("账号").equals(account)&&rs.getString("密码").equals(password))
{
a=1;
break;
}
}
s.close();
con.close();
if(a==1) return "success";
else return "account or code wrong";
}catch(SQLException e){ return e.getMessage();}
}
public String deposit(String account,double money) //存款
{
connection();
try{
PreparedStatement ps=con.prepareStatement("UPDATE Account set 余额=?, 存款时间=? where 账号=?");
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("select * from Account");
while(rs.next()){
if(rs.getString("账号").equals(account)) break;
}
String dtime=rs.getString("存款时间");
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)-Integer.parseInt(temp[1]);
money=money+rs.getDouble("余额")*(time*INTEREST+1);
String newtime=String.valueOf(c.get(Calendar.YEAR))+"-"+String.valueOf(c.get(Calendar.MONTH));
ps.setDouble(1,money);
ps.setString(2,newtime);
ps.setString(3,account);
ps.executeUpdate();
s.close();
ps.close();
con.close();
return "success";
}catch(SQLException e) { return "fail"; }
}
public String withdraw(String account,double money)
{
connection();
try{
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("select * from Account");
while(rs.next()){
if(rs.getString("账号").equals(account)) break;
}
if(rs.getDouble("余额")<money){
s.close();
con.close();
return "not enough";
}
else{
deposit(account,money*-1);
s.close();
con.close();
return "success";
}
}catch(SQLException e){ return "fail";}
}
public String shift(String outaccount,String inaccount,double money) //转账
{
connection();
try{
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("select * from Account");
while(rs.next()){
if(rs.getString("账号").equals(outaccount)) break;
}
if(rs.getDouble("余额")<money){
s.close();
con.close();
return "not enough";
}
else{
int a=0;
rs=s.executeQuery("select * from Loant");
while(rs.next()){
if(rs.getString("账号").equals(inaccount)) {a=1;break;}
}
if(a==0) return "no account";
else{
deposit(outaccount,money*-1);
deposit(inaccount,money);
s.close();
con.close();
return "success";
}
}
}catch(SQLException e){ return "fail";}
}
public String loan(String account,String name,double money,int time,double interest) //贷款
{
connection();
try{
Statement s=con.createStatement();
String r="insert into Loan values(0,0,0,0,0,0,0,0,0)";
s.executeUpdate(r);
s.close();
PreparedStatement ps=con.prepareStatement("UPDATE Loan set 贷款人账号=?,贷款人姓名=?,贷款金额=?,贷款日期=?,还款日期=?,贷款日期=?,利率=?,是否还款=?, 编号=? WHERE 贷款金额=0");
Calendar c=Calendar.getInstance();
String ltime=String.valueOf(c.get(Calendar.YEAR))+"-"+String.valueOf(c.get(Calendar.MONTH));
String ptime=String.valueOf(c.get(Calendar.YEAR)+time)+"-"+String.valueOf(c.get(Calendar.MONTH));
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();
con.close();
return "success+"+str;
}catch(SQLException e)
{
System.out.println(e.getMessage());
return "fail";
}
}
public String ask(String account) //查询
{
connection();
try{
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("select * from Account");
while(rs.next()){
if(rs.getString("账号").equals(account)) break;
}
String str="success+"+account+"+"+rs.getString("姓名")+"+"+rs.getString("性别")+"+"+rs.getString("身份证号码")+"+"+rs.getString("地址")+"+"+rs.getString("固定电话")+"+"+String.valueOf(rs.getDouble("余额"))+"+"+rs.getString("备注");
s.close();
con.close();
return str;
}catch(SQLException e){ return "fail"; }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -