Struts 基金交易平台项目总结(三完结)

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也有进步。

 

项目部分业务类:

                 

客户业务层:

 

package  com.weiyan.Child;

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
                    
+ "','"
                    
+ email
                    
+ "','"
                    
+ 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;

    }


}

 

基金业务层:

 

package  com.weiyan.FUND;

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;
    }


}

 

资金帐户业务层:

 

package  com.weiyan.FINANCIAL_ACCOUNT;

// 资金帐户业务层

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);
    }


}

 

基金帐户交易业务层:

 

package  com.weiyan.fund_account;

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 * ((float1 / 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 * ((float1 / 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 * ((float1 / 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;
        
    }

    
    

}

 

系统截图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值