2007/06--2007/07:2007年6月开发 “开放式上市基金交易平台”
软件环境:JDK1.5,Tomcat 5.5
硬件环境:Windows2000/XP
开发工具:MyEclipse5.5(英文版)+SQLServer2000+Struts
编程语言:Java
系统结构:Struts架构实现MVC设计模式
项目描述:
系统描述:为基金操作管理员提供办公自动化快速办公。
系统功能:基金销售人员管理模块,基金产品管理模块,客户信息管理模块,客户资金帐户管理模块,
基金交易管理模块。
团队角色:实现基金产品管理模块,基金交易模块,客户信息管理模块,客户资金帐户管理模块。
项目总结:
1:首先对系统整个结构进行分析,分类出具体的包,用于存放各个模块的实体类和对应业务层。
2:系统最底层由com.weiyan.db包下的DBAccess类实现对系统数据访问层的封装,其封装了所有对
数据库的操作。做为系统核心数据访问层.进一步使用代理模式DBAccessManager类,代理了数据
访问层DBAccess,实现数据访问层与业务层的松散耦合。
3:创建继承于RequestProcessor的myRequestPorcess类,实现中文转码问题并在Struts中注册
定制的处理类。
4:创建操作员实体,及操作员业务层.实现对操作员的登陆,注册等功能..系统中各层使用实体传递数据。
5:创建基金实体,及基金业务层,实现对基金的添加,查询,及修改功能。
6:创建客户实体,及客户业务层,实现对客户的注册,查询基本信息,修改信息,及查询客户详细信息
包括基金帐户和资金帐户信息.在页面实现javascript进行局部打印和预览.
7:创建资金帐户实体,及其业务层,实现开立资金帐户,查询资金帐户,追加资金帐户,取钱,冻结
资金帐户,和解除限制,本层特点,验证严格,如没有客户编号不允许开户等等..
8:创建基金帐户实体,及业务层,实现购买基金,查询基金帐户,赎回基金。
9:在本此项目中,对Struts框架进行了更深入的了解,和更熟练的应用。对javascript也有进步。
项目部分业务类:
客户业务层:
import java.sql. * ;
import java.util.ArrayList;
import com.weiyan.FINANCIAL_ACCOUNT.financial_accBean;
import com.weiyan.FINANCIAL_ACCOUNT.financil_accManager;
import com.weiyan.db.DBAccessManager;
import com.weiyan.fund_account.fund_accountBean;
import com.weiyan.fund_account.fund_accountManager;
public class chientManager ... {
// 客户业务操作层
private DBAccessManager db = null;
public chientManager() ...{
db = new DBAccessManager();// 创建数据操作层
}
/** *//**
* 检查身份证是否重复 返回true为可以添加
*
* @param bean
* @return
*/
private boolean Check_id(clientBean bean) ...{
String id = bean.getId_card_no();// 获得身份证
boolean check = true;
String sql = "select * from CLIENT where ID_CARD_NO='" + id + "'";
ResultSet rs = db.Select(sql);
try ...{
if (rs.next()) ...{
check = false;
} else ...{
check = true;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
db.CloseConn();// 关闭
return check;
}
/** *//**
* 添加客户,返回boolean类型,参数是一个客户实体
*
* @param bean
* @return
*/
public boolean AddClient(clientBean bean) ...{
boolean check = true;
String client_name = bean.getClient_name();
String id_card_no = bean.getId_card_no();
String sex = bean.getSex();
String phone = bean.getPhone();
String address = bean.getAddress();
String email = bean.getEmail();
String hobby = bean.getHobby();
if (this.Check_id(bean)) ...{
String sql = "insert into CLIENT (CLIENT_NAME,ID_CARD_NO,SEX,PHONE,ADDRESS,EMAIL,HOBBY) values('"
+ client_name
+ "','"
+ id_card_no
+ "','"
+ sex
+ "','"
+ phone
+ "','"
+ address
+ "','"
+ "','"
+ hobby
+ "')";
if (db.Insert(sql) > 0) ...{
check = true;// 如果影响行>0为添加成功返回真
} else ...{
check = false;
}
} else ...{
check = false; // 如果有此身份证不添加
}
return check;
}
/** *//**
* 查询客户信息,返回一个客户实体,参数为一个客户
*
* @param bean
* @return
*/
public clientBean Getclient(clientBean bean) ...{
String client_name = bean.getClient_name();// 客户姓名
String id_card_no = bean.getId_card_no();// 获得身份证
String sql = "select * from CLIENT where CLIENT_NAME='" + client_name
+ "' and id_card_no='" + id_card_no + "'";
ResultSet rs = db.Select(sql);
clientBean chient = new clientBean();// 构建客户实体
try ...{
if (rs.next()) // 如果有此客户
...{
chient.setClient_no(rs.getInt("client_no"));
System.out.println("------------------------------");
chient.setClient_name(rs.getString("CLIENT_NAME"));//
chient.setSex(rs.getString("SEX"));
// chient.setSex(rs.getString("id_card_no"));
// 完全不知道为什么这里会抛异常,这里十分郁闷...现在知道了是没按数据库顺序读数据
chient.setId_card_no(id_card_no);
chient.setPhone(rs.getString("phone"));
chient.setAddress(rs.getString("ADDRESS"));
chient.setEmail(rs.getString("EMAIL"));
chient.setHobby(rs.getString("HOBBY"));
} else ...{
chient = null;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
db.CloseConn();// 关闭
return chient;
}
/** *//**
* 更新客户信息,更新后返回新的客户实体
*
* @param bean
* @return
*/
public clientBean UpdateUser(clientBean bean) ...{
int client_no = bean.getClient_no();// 获得id
String client_name = bean.getClient_name();
String id_card_no = bean.getId_card_no();
String sex = bean.getSex();
String phone = bean.getPhone();
String address = bean.getAddress();
String email = bean.getEmail();
String hobby = bean.getHobby();
String sql = "update client set client_name='" + client_name
+ "',id_card_no='" + id_card_no + "',sex='" + sex + "',phone='"
+ phone + "',address='" + address + "',email='" + email
+ "',hobby='" + hobby + "' where client_no='" + client_no + "'";
int i = db.Update(sql);
return this.Getclient(bean);
}
/** *//**
* 检查客户编号是否存在 参数客户,返回真假存在为真,可以添加
*
* @param bean
* @return
*/
public boolean CheckClient_no(clientBean bean) ...{
int client_no = bean.getClient_no();// 获得编号
boolean check = true;
String sql = "select * from client where client_no=" + client_no + "";
ResultSet rs = db.Select(sql);
try ...{
if (rs.next())// 如果存在
...{
check = true;
} else ...{
check = false;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
db.CloseConn();
return check;
}
/** *//**
* 根据客户编号获得客户信息
* @param bean
* @return
*/
public clientBean GetClients(clientBean bean) ...{
int client_no = bean.getClient_no();
String sql = "select * from CLIENT where client_no=" + client_no + "";
ResultSet rs = db.Select(sql);
clientBean chient = new clientBean();// 构建客户实体
try ...{
if (rs.next()) // 如果有此客户
...{
chient.setClient_no(rs.getInt("client_no"));
System.out.println("------------------------------");
chient.setClient_name(rs.getString("CLIENT_NAME"));//
chient.setId_card_no(rs.getString("id_card_no"));
chient.setSex(rs.getString("SEX"));
chient.setPhone(rs.getString("phone"));
chient.setAddress(rs.getString("ADDRESS"));
chient.setEmail(rs.getString("EMAIL"));
chient.setHobby(rs.getString("HOBBY"));
} else ...{
chient = null;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
db.CloseConn();// 关闭
return chient;
}
/** *//**
* 获得客户综合信息,对应查询客户详细信息功能
*
* @param bean
* @return
*/
public clientBean GetClientBean(clientBean bean) ...{
int client_no = bean.getClient_no();// 获得客户编号
clientBean clientbean = this.GetClients(bean);// 设置客户基本信息设置完毕
/**//*-------------------------------------------------------------------------------------------------*/
// 开始设置客户资金帐户
financil_accManager accum = new financil_accManager();// 构建资金帐户业务层
financial_accBean accbean = new financial_accBean(); // 资金帐户实体
accbean.setClient_no(client_no);
financial_accBean accbeans = accum.GetAcc(accbean);// 调用资金帐户业务层的获得资金帐户方法.
// System.out.println("*-*-*-*-*-*-*-*-*-*");
// System.out.println(accbeans.getCreate_date());
clientbean.setAccbean(accbeans);// 设置客户的资金帐户设置完毕
/**//*-------------------------------------------------------------------------------------------------*/
// 开始设置客户基金帐户
if(accbeans!=null)//判断如果资金帐户为空,就不可能有基金帐户
...{
int financilg_acc_no = accbeans.getAccount_no();// 获得资金帐户编号***
fund_accountBean accountbean = new fund_accountBean();// 基金帐户实体
accountbean.setFinancial_acc_no(financilg_acc_no);// 设置资金帐户编号
fund_accountManager accountum = new fund_accountManager();// 基金帐户业务层
ArrayList list = accountum.GetAcc_funds(accountbean);// 获得客户所有基金帐户返回一个集合
clientbean.setXiang(list);// 设置客户基金帐户
/**//*--------------------------------------------------------------------------------------------------*/
}
return clientbean;
}
}
基金业务层:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Random;
import com.weiyan.db.DBAccessManager;
// 基金操作业务层
public class fundManager ... {
private DBAccessManager db = null;
public fundManager() ...{
db = new DBAccessManager();
}
/** *//**
* 此方法检测基金名称是否存在,参数基金实体真为可以添加
*
* @param bean
* @return
*/
public boolean CheckFundName(fundBean bean) ...{
boolean check = true;
String fundName = bean.getFund_name();// 获得基金名称
String sql = "select * from FUND where FUND_NAME='" + fundName + "'";
ResultSet rs = db.Select(sql);// 查询
try ...{
if (rs.next()) ...{
check = false;
} else ...{
check = true;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return check;
}
/** *//**
* 添加基金,参数为基金实体,添加成功true 如果名称重复,或数据更新行为0,返回false,
*
* @param bean
* @return
*/
public boolean AddFund(fundBean bean) ...{
boolean check = true;
String fundName = bean.getFund_name();// 获得基金名称
float price = bean.getPrice();// 基金价格
String Desc = bean.getDescrpition();// 基金描述
String sql = "insert into FUND (FUND_NAME,PRICE,DESCRIPTION) values('"
+ fundName + "'," + price + ",'" + Desc + "')";
if (this.CheckFundName(bean)) // 调用内部方法检测基金是否重复
...{
if (db.Insert(sql) > 0) // 如果更新数量多于1
...{
check = true;
} else ...{
check = false;
}
} else ...{
// 如果基金名称重复直接返回假
check = false;
}
return check;
}
/** *//**
* 查询基金返回一个基金实体
*
* @param bean
* @return
*/
public fundBean GetFund(fundBean bean) ...{
String fund_name = bean.getFund_name();// 获得基金名称.
int fund_no = bean.getFund_no();// 获得基金编号
String sql = "select * from fund where fund_no=" + fund_no
+ " and fund_name='" + fund_name + "' "; // 查询基金语句
ResultSet rs = db.Select(sql);
fundBean fundbean = new fundBean();// 构建一个基金实体
try ...{
if (rs.next())// 如果有此基金设置基金属性
...{
fundbean.setFund_no(rs.getInt("fund_no"));
fundbean.setFund_name(rs.getString("fund_name"));
fundbean.setPrice(rs.getFloat("price"));
fundbean.setDescrpition(rs.getString("DESCRIPTION"));
} else ...{// 无此基金返回Null
fundbean = null;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return fundbean;
}
/** *//**
* 修改基金参数,参数为基金实体
*
* @return
*/
public int UpdateFund(fundBean bean) ...{
int fund_no = bean.getFund_no();// 获得编号
String fund_name = bean.getFund_name();// 获得名称
float price = bean.getPrice(); // 获得价格
String desc = bean.getDescrpition();// 获得描述
String status = bean.getStatus();// 获得状态
String sql = "update fund set fund_name='" + fund_name + "',price="
+ price + ",description='" + desc + "',status='" + status
+ "' where fund_no=" + fund_no + "";
return db.Update(sql);
}
/** *//**
* 获得所有基金
*
* @return
*/
public ArrayList GetFund() ...{
ArrayList list = new ArrayList();// 构建集合
String sql = "select * from fund where status='上市'";
ResultSet rs = db.Select(sql);
try ...{
while (rs.next()) ...{
fundBean bean = new fundBean();// 基金实体
bean.setFund_name(rs.getString("fund_name"));// 获得基金名称
float price = rs.getFloat("price");// 获得基金价格
// 当前产品价格
float price1 = this.GetRandom(price);
bean.setPrice(price1);// 基金价格
list.add(bean);
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
/** *//**
* 获得浮动算法
*
* @param price
* @return
*/
public float GetRandom(float price) ...{
Random random = new Random();// 创建随即数对象
int rdm = random.nextInt() % 10;// 随即数
float price1 = price * (1 + (float) rdm / 100);// 基金浮动算法由于int随即数不存小数,转型
return price1;
}
/** *//**
* 根据基金编号获得当前基金变化价格
*
* @return
*/
public float GetDateFund(fundBean bean) ...{
float price = 0;
int id = bean.getFund_no();// 获得基金编号
String sql = "select * from fund where fund_no=" + id + "";
ResultSet rs = db.Select(sql);
try ...{
rs.next();
price = this.GetRandom(rs.getFloat("price"));
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return price;
}
/** *//**
* 根据基金名称获得基金编号
*
* @param bean
* @return
*/
public int GetFund_no(fundBean bean) ...{
String fund_name = bean.getFund_name();// 获得基金名称
int fund_no = 0;
String sql = "select * from fund where fund_name='" + fund_name + "'";
ResultSet rs = db.Select(sql);
try ...{
rs.next();
fund_no = rs.getInt("fund_no");
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return fund_no;
}
}
资金帐户业务层:
// 资金帐户业务层
import java.sql.ResultSet;
import java.sql.SQLException;
import com.weiyan.Child.chientManager;
import com.weiyan.Child.clientBean;
import com.weiyan.db.DBAccessManager;
public class financil_accManager ... {
private DBAccessManager db = null;
public financil_accManager() ...{
db = new DBAccessManager();// 初始化
}
/** *//**
* 检查资金帐户的客户编号是否重复,存在返回假,不存在返回真
*
* @return
*/
public boolean Check_noBool(financial_accBean bean) ...{
boolean check = true;
int client_no = bean.getClient_no();// 获得客户编号
String sql = "select * from FINANCIAL_ACCOUNT where client_no="
+ client_no + "";
ResultSet rs = db.Select(sql);
try ...{
if (rs.next()) ...{// 有此客户
check = false;
} else ...{
check = true;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
db.CloseConn();// 关闭连接
return check;
}
/** *//**
* 检测状态
*
* @param bean
* @return
*/
public boolean Check_State(financial_accBean bean) ...{
boolean check = true;
String sql = "select * from FINANCIAL_ACCOUNT where account_no="
+ bean.getAccount_no() + " ";
ResultSet rs = db.Select(sql);
try ...{
rs.next();
String state = rs.getString("status");
if (state.equals("正常")) ...{
check = true;
} else ...{
check = false;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return check;
}
// public int Check_Fund(financial_accBean bean) {
// int check = 0; // 0代表都成功
// int id = bean.getAccount_no();
// String password = bean.getPassword();
// if (this.check_acc_no(bean)) // 检测资金帐户是否存在
// {
// // 存在0
// if (this.login(bean))// 检测资金帐户和密码是否匹配
// {
// // 正确
// if (this.Check_State(bean))// 检测状态
// {
// // ****
// } else {
// // 状态为冻结3
// }
//
// } else {
// // 密码不正确返回2
// }
//
// } else {
// // 资金帐户不存在返回1
// }
// }
/** *//**
* 资金帐户开户 参数bean 内部调用客户业务层的检测客户编号是否存在的业务方法。
*
* @param bean
* @return
*/
public boolean AddACCOUNT(financial_accBean bean) ...{
int client_no = bean.getClient_no();// 获得客户编号
float financing_amount = bean.getFinancing_amount();// 获得钱
String password = bean.getPassword();
boolean check = true;// 控制流
clientBean clientbean = new clientBean();// 构建客户实体
clientbean.setClient_no(client_no);
chientManager manager = new chientManager();// 构建客户业务层
if (manager.CheckClient_no(clientbean)) ...{// 调用客户业务层的检测编号方法检测客户编号是否存在,客户必须存在
// 真表示存在可以添加,但资金帐户每人只有一个,客户编号不允许重复
if (this.Check_noBool(bean))// 调用内部检测基金帐户客户编号是否重复
...{
String sql = "insert into FINANCIAL_ACCOUNT (client_no,financing_amount,password) values("
+ client_no
+ ","
+ financing_amount
+ ",'"
+ password
+ "')";
if (db.Insert(sql) > 0) // 如果大于0添加成功
...{
check = true;
} else ...{
check = false;
}
} else ...{
check = false;// 编号重复不允许
}
} else ...{
// 如果不存在,直接false;
check = false;
}
return check; // 返回
}
/** *//**
* 获得某个资金帐户内的资金
*
* @param bean
* @return
*/
private float GetFinancing_amount(financial_accBean bean) ...{
int account_no = bean.getAccount_no();// 获得资金帐户编号
String sql = "select * from FINANCIAL_ACCOUNT where account_no="
+ account_no + "";
ResultSet rs = db.Select(sql);
float monay = 0;
try ...{
rs.next();
monay = rs.getFloat(3);
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return monay;
}
/** *//**
* 检查资金帐户是否存在的方法 有返回真,没有返回假
*
* @param bean
* @return
*/
public boolean check_acc_no(financial_accBean bean) ...{
boolean check = true;
int account_no = bean.getAccount_no();// 获得资金帐户编号
String sql = "select * from FINANCIAL_ACCOUNT where account_no="
+ account_no + "";
ResultSet rs = db.Select(sql);// 查询
try ...{
if (rs.next()) ...{
check = true;
} else ...{
check = false;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return check;
}
/** *//**
* 追加资金,参数资金实体,返回真假是否追加成功
*
* @param bean
* @return
*/
public boolean Addfinancil(financial_accBean bean) ...{
boolean check = true;
if (this.check_acc_no(bean))// 检查资金帐户是否存在
...{// 存在返回真
int acc_no = bean.getAccount_no();// 获得基金帐户
float monay = bean.getFinancing_amount();// 获得追加基金
float monay0 = this.GetFinancing_amount(bean);// 获得原来的资金帐户
float NewMonay = monay + monay0;// 追加的+原有的资金和
String sql = "update FINANCIAL_ACCOUNT set financing_amount="
+ NewMonay + " where account_no=" + acc_no + "";
int updaterow = db.Update(sql);
} else ...{
check = false;// 不存在返回假,追加失败,资金帐户不存在
}
return check;
}
/** *//**
* 取钱时候检测密码行为
*
* @param bean
* @return
*/
public boolean login(financial_accBean bean) ...{
boolean check = true;
int id = bean.getAccount_no();
String password = bean.getPassword();
String sql = "select * from FINANCIAL_ACCOUNT where account_no=" + id
+ " and password='" + password + "'";
ResultSet rs = db.Select(sql);
try ...{
if (rs.next()) ...{
check = true;
} else ...{
check = false;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return check;
}
/** *//**
* 取钱方法,总钱-取的。0代表资金帐户不存在,1代表成功,2代表密码错误,3,没有足够资金 4冻结
*
* @param bean
* @return
*/
public int GetMoney(financial_accBean bean) ...{
int check = 1;// 1代表成功
if (this.check_acc_no(bean)) // 检查资金帐户是否存在
...{
if (this.login(bean)) ...{// 检测资金帐户编号和密码
if (this.Check_State(bean)) ...{// 状态检测
int account_on = bean.getAccount_no();// 获得资金帐户编号
String password = bean.getPassword();// 获得密码
float money = bean.getFinancing_amount();// 获得取出钱数
float money0 = this.GetFinancing_amount(bean);// 获得原来的资金帐户
float NewMoney = money0 - money;
if (NewMoney >= 0) ...{
String sql = "update FINANCIAL_ACCOUNT set financing_amount="
+ NewMoney
+ " where account_no="
+ account_on
+ "";
int updaterow = db.Update(sql);
check = 1;// 成功
} else ...{
check = 3;// 没有足够的资金
}
} else ...{
check = 4;// 状态为冻结
}
} else ...{
check = 2;// 用户名密码错误
}
} else ...{
check = 0;// 资金帐户不存在
}
return check;
}
/** *//**
* 加钱方法,总钱+加的。0代表资金帐户不存在,1代表成功,2代表密码错误,3,没有足够资金 4冻结
*
* @param bean
* @return
*/
public int AddMoney(financial_accBean bean) ...{
int check = 1;// 1代表成功
if (this.check_acc_no(bean)) // 检查资金帐户是否存在
...{
if (this.login(bean)) ...{// 检测资金帐户编号和密码
if (this.Check_State(bean)) ...{// 状态检测
int account_on = bean.getAccount_no();// 获得资金帐户编号
String password = bean.getPassword();// 获得密码
float money = bean.getFinancing_amount();// 获得加钱数
float money0 = this.GetFinancing_amount(bean);// 获得原来的资金帐户
float NewMoney = money0 + money;
if (NewMoney >= 0) ...{
String sql = "update FINANCIAL_ACCOUNT set financing_amount="
+ NewMoney
+ " where account_no="
+ account_on
+ "";
int updaterow = db.Update(sql);
check = 1;// 成功
} else ...{
check = 3;// 没有足够的资金
}
} else ...{
check = 4;// 状态为冻结
}
} else ...{
check = 2;// 用户名密码错误
}
} else ...{
check = 0;// 资金帐户不存在
}
return check;
}
/** *//**
* 查询资金帐户信息返回一个资金帐户
*
* @param bean
* @return
*/
public financial_accBean SelectMoney(financial_accBean bean) ...{
int acc_no = bean.getAccount_no();// 资金帐户
int client_no = bean.getClient_no();// 客户编号
String sql = "select * from view1 where account_no=" + acc_no
+ " and client_no=" + client_no + "";
ResultSet rs = db.Select(sql);
financial_accBean acc = new financial_accBean();// 资金帐户实体
try ...{
if (rs.next()) ...{
acc.setClient_no(client_no);
acc.setFinancing_amount(rs.getFloat("financing_amount"));
acc.setCreate_date(rs.getString("create_date"));
acc.setStatus(rs.getString("client_name"));
acc.setAccount_no(rs.getInt("account_no"));
acc.setPassword(rs.getString("status"));
} else ...{
acc = null;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return acc;
}
/** *//**
* 根据客户编号返回资金帐户 参数资金帐户实体,设置客户编号
*
* @param bean
* @return
*/
public financial_accBean GetAcc(financial_accBean bean) ...{
int Client_no = bean.getClient_no();// 获得客户编号
String sql = "select * from financial_account where client_no="
+ Client_no + "";
ResultSet rs = db.Select(sql);
financial_accBean accbean = new financial_accBean();// 资金帐户
// 客户可以没有资金帐户
try ...{
if (rs.next()) ...{
// System.out.println("进入");
accbean.setAccount_no(rs.getInt("account_no"));// 获得资金帐户编号
accbean.setClient_no(rs.getInt("client_no"));// 客户编号
accbean.setFinancing_amount(rs.getFloat("financing_amount"));
accbean.setCreate_date(rs.getString("create_date"));
accbean.setStatus(rs.getString("status"));
} else ...{
accbean = null;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(accbean.getCreate_date());
return accbean;
}
/** *//**
* 冻结资金帐户
*
* @param bean
*/
public void Congeal(financial_accBean bean) ...{
int id = bean.getAccount_no();// 获得要冻结的资金帐户
String sql = "update financial_account set status='冻结'where account_no="
+ id + "";
int updaterow = db.Update(sql);
}
/** *//**
* 解除资金帐户限制
*
* @param bean
*/
public void Decontrol(financial_accBean bean) ...{
int id = bean.getAccount_no();// 获得要解除的资金帐户
String sql = "update financial_account set status='正常'where account_no="
+ id + "";
int updaterow = db.Update(sql);
}
}
基金帐户交易业务层:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.weiyan.FINANCIAL_ACCOUNT.financial_accBean;
import com.weiyan.FINANCIAL_ACCOUNT.financil_accManager;
import com.weiyan.FUND.fundBean;
import com.weiyan.FUND.fundManager;
import com.weiyan.db.DBAccessManager;
public class fund_accountManager ... {
// 基金交易帐户业务层
private DBAccessManager db = null;
private financil_accManager financil = null;// 资金业务层
private fundManager fundmanager = null; // 基金业务层
public fund_accountManager() ...{
db = new DBAccessManager();// 构造初始化
financil = new financil_accManager();// 构建资金帐户业务层由于购买基金要在资金帐户取钱
fundmanager = new fundManager();
}
/** *//**
* 购买基金方法,,内部调用资金帐户业务层的取钱方法,因为在购买的时候需要扣除资金帐户的钱 1成功,2密码错误,3资金不足,4,帐户冻结,0帐户不存在
*
* @param bean
* @param password
* @return
*/
public int BuyFund(fund_accountBean bean, String password) ...{
int financial_acc_no = bean.getFinancial_acc_no();// 获得资金帐户
int fund_no = bean.getFund_no();// 获得基金编号
int quantitiy = bean.getQuantitiy();// 获得购买数量
float price = bean.getPrice();// 获得单价
float shouxu = quantitiy * price * ((float) 1 / 100);// 手续费为总价格的百分之一
// System.out.println("-------------------------------------------");
// System.out.println(shouxu);
float NumPrice = quantitiy * price + shouxu;// 算出总价,也就是在资金帐户里取钱的数量+百分之一手续费
// System.out.println(NumPrice);
financial_accBean financialbean = new financial_accBean();// 构建资金帐户实体
financialbean.setAccount_no(financial_acc_no);
financialbean.setPassword(password);// 设置密码
financialbean.setFinancing_amount(NumPrice);// 设置取出钱
int State = financil.GetMoney(financialbean);
if (State == 1) ...{// 成功取出钱,购买成功
String sql = "insert into fund_account values(" + financial_acc_no
+ "," + fund_no + "," + quantitiy + "," + price + ")";
int updaterow = db.Insert(sql); // 插入数据
return 1;
} else if (State == 0) ...{
return 0;// 资金帐户不存在
} else if (State == 2) ...{
return 2;// 密码错误
} else if (State == 3) ...{
return 3; // 资金不足
} else ...{// 帐户冻结
return 4;
}
}
/** *//**
* 赎回也就是卖,数量不足3,全部赎回删除基金帐户返回5,冻结 2,不是全部赎回 4, 密码错误1,基金帐户不存在0
*
* @param bean
* @return
*/
public int MaiFund(fund_accountBean bean, String password) ...{
int state = 0;
int fund_acc_no = bean.getFund_acc_no();// 获得基金帐户
int Count = bean.getQuantitiy();// 获得赎回数量
financial_accBean finabean = new financial_accBean();// 资金帐户实体
if (this.check_fund_acc_no(bean))// 调用内部方法检测基金帐户是否存在1
...{
fund_accountBean accbean = this.GetaccountBean(bean);// 获得此资金帐户的详细信息
int quantitiy = accbean.getQuantitiy();// 获得原有数量
int s = quantitiy - Count;// 现有数量
int fund_no = accbean.getFund_no();// 获得基金编号
int financial_acc_no = accbean.getFinancial_acc_no();// 获得资金帐户
finabean.setPassword(password);// 获得资金帐户密码
finabean.setAccount_no(financial_acc_no);// 获得资金帐户ID
if (financil.login(finabean))// 调用资金业务层检测资金帐户密码密码2
...{
if (financil.Check_State(finabean)) // 调用资金业务层检测资金状态3
...{
if (s < 0) ...{// 检测数量
// 数量不足 3
state = 3;
} else if (s == 0) ...{ // 如果全部赎回,删除
fundBean fu = new fundBean();// 基金实体
fu.setFund_no(fund_no);// 基金编号
float prices = this.fundmanager.GetDateFund(fu); // 获得当前基金的浮动价格
float shouxu = Count * prices * ((float) 1 / 100);// 手续费为总价格的百分之一
float pricess = Count * prices;// 总价格
float NumPeice = pricess - shouxu;// 总价格减手续费用
this.Delete(bean);// 删除基金帐户
financial_accBean accbeans = new financial_accBean();// 资金实体
finabean.setFinancing_amount(NumPeice);
int is = this.financil.AddMoney(finabean);// 向资金帐户内加钱
if (is == 1) ...{
state = 5;
// 删除返回5
}
} else ...{
// 足卖掉4
fundBean fu = new fundBean();// 基金实体
fu.setFund_no(fund_no);// 基金编号
float prices = this.fundmanager.GetDateFund(fu); // 获得当前基金的浮动价格
float shouxu = Count * prices * ((float) 1 / 100);// 手续费为总价格的百分之一
float pricess = Count * prices;// 总价格
float NumPeice = pricess - shouxu;// 总价格减手续费用
String sql = "update fund_account set quantitiy=" + s
+ " where fund_acc_no=" + fund_acc_no + "";
int i = db.Update(sql);// 更新基金帐户数量
financial_accBean accbeans = new financial_accBean();// 资金实体
finabean.setFinancing_amount(NumPeice);
int is = this.financil.AddMoney(finabean);
if (is == 1) ...{
// 返回4
state = 4;
}
}
} else ...{
// 状态为冻结2
state = 2;
}
} else ...{
// 资金帐户密码错误返回1
state = 1;
}
} else ...{
// 基金帐户不存在返回0
state = 0;
}
return state;
}
/** *//**
* 检测基金帐户是否存在
*
* @param bean
* @return
*/
public boolean check_fund_acc_no(fund_accountBean bean) ...{
boolean check = true;
int id = bean.getFund_acc_no();
String sql = "select * from fund_account where fund_acc_no=" + id + "";
ResultSet rs = db.Select(sql);
try ...{
if (rs.next()) ...{
check = true;
} else ...{
check = false;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return check;
}
/** *//**
* 获得基金帐户
*
* @param bean
* @return
*/
public fund_accountBean GetaccountBean(fund_accountBean bean) ...{
int id = bean.getFund_acc_no();// 获得基金帐户编号
String sql = "select * from fund_account where fund_acc_no=" + id + "";
ResultSet rs = db.Select(sql);
fund_accountBean accbean = new fund_accountBean();// 创建基金帐户实体
try ...{
if (rs.next()) ...{
accbean.setFund_acc_no(id);// 获得基金帐户ID
accbean.setFinancial_acc_no(rs.getInt("financial_acc_no"));// 获得资金帐户
accbean.setFund_no(rs.getInt("fund_no"));// 获得基金ID
accbean.setQuantitiy(rs.getInt("quantitiy"));// 获得购买的数量
accbean.setPrice(rs.getFloat("price"));
} else ...{
accbean = null;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return accbean;
}
/** *//**
* 删除基金帐户,参数基金帐户
*
*/
public void Delete(fund_accountBean bean) ...{
int id = bean.getFund_acc_no();// 获得基金帐户编号
String sql = "delete from fund_account where fund_acc_no=" + id + "";
int updaterow = db.Delete(sql);
}
/** *//**
* 根据基金帐户编号.获得某个基金帐户详细信息
*
* @param bean
* @return
*/
public fund_account_Xiang GetX(fund_accountBean bean) ...{
int fund_acc_no = bean.getFund_acc_no();// 获得基金帐户编号
fund_account_Xiang accbean = new fund_account_Xiang();// 基金帐户详细实体
try ...{
if (this.check_fund_acc_no(bean))// 检测资金帐户是否存在
...{// 如果存在
fund_accountBean account = this.GetaccountBean(bean);// 获得基本基金帐户信息
int fund_no = account.getFund_no();// 获得基金编号
fundBean fundbean = new fundBean();// 基金实体
fundbean.setFund_no(fund_no);
float price = this.fundmanager.GetDateFund(fundbean);// 调用基金业务层获得当前价格
String sql = "select * from view2 where fund_acc_no=" + fund_acc_no
+ "";
ResultSet rs = db.Select(sql);
rs.next();
accbean.setFund_acc_no(rs.getInt("fund_acc_no"));// 开始设置实体
accbean.setQuantitiy(rs.getInt("quantitiy"));
accbean.setPrice(rs.getFloat("price"));
accbean.setFund_name(rs.getString("fund_name"));
accbean.setStatus(rs.getString("status"));
accbean.setCreate_date(rs.getString("create_date"));
accbean.setAccount_no(rs.getInt("account_no"));
accbean.setRmdpeice(price);//浮动价格
} else ...{
accbean = null;
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return accbean;
}
/** *//**
* 根据资金帐户获得当前资金帐户所有基金信息
* @param bean
* @return
*/
public ArrayList GetAcc_funds(fund_accountBean bean)
...{
int financial_acc_no=bean.getFinancial_acc_no();//获得资金帐户
String sql="select * from view2 where account_no="+financial_acc_no+"";
ResultSet rs=db.Select(sql);
ArrayList list=new ArrayList();//创建集合
try ...{
while (rs.next()) // 循环
...{
fund_account_Xiang xiang = new fund_account_Xiang();
int fund_acc_no = rs.getInt("fund_acc_no");// 基金帐户编号
xiang.setFund_acc_no(fund_acc_no);
xiang.setQuantitiy(rs.getInt("quantitiy"));// 购买数量
xiang.setPrice(rs.getFloat("price"));// 买进价格
xiang.setFund_name(rs.getString("fund_name"));// 购买基金产品名称
xiang.setStatus(rs.getString("statu"));// 帐户状态上市还是没
fund_accountBean beans=new fund_accountBean(); //设置基金帐
beans.setFund_acc_no(fund_acc_no);//基金帐户编号
fund_accountBean account = this.GetaccountBean(beans);// 获得基本基金帐户信息
int fund_no = account.getFund_no();// 获得基金编号
fundBean fundbean = new fundBean();// 基金实体
fundbean.setFund_no(fund_no);
float price = this.fundmanager.GetDateFund(fundbean);// 调用基金业务层获得当前浮动价格
xiang.setRmdpeice(price);// 设置当前价格
list.add(xiang);
}
} catch (SQLException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
系统截图: