项目过程:
07/09/13
这次项目是一个基金交易系统.使用Struts技术来实现所有功能...
首先我对各层进行了细致的分析, 将各个类归属到具体的包下.
今天发现,做页面是件挺郁闷的事情,Html的样式拿到Eclipse里面总会变化些,最后还是被我调整好了.
1.首先我做了基金操作员模块,功能包括注册,登陆,和对输入的验证.
由salesBean作为操作员实体,用于存储操作员信息。salesManager类:基金操作员业务层,实现了对基金操
做员的业务的封装,如,在注册时检测用户名是否存在,登陆检测等....具体类如下:
基金柜台操作员实体:
package
com.weiyan.SALES;
public class salesBean ... {
//基金柜台操作人员实体
private int sales_no; // 操作人员编号
private String username;// 操作人员登陆名
private String password;// 密码
private String realname;// 真实姓名
private String sex;// 性别
private String create_date;// 创建时间
public String getCreate_date() ...{
return create_date;
}
public void setCreate_date(String create_date) ...{
this.create_date = create_date;
}
public String getPassword() ...{
return password;
}
public void setPassword(String password) ...{
this.password = password;
}
public String getRealname() ...{
return realname;
}
public void setRealname(String realname) ...{
this.realname = realname;
}
public int getSales_no() ...{
return sales_no;
}
public void setSales_no(int sales_no) ...{
this.sales_no = sales_no;
}
public String getSex() ...{
return sex;
}
public void setSex(String sex) ...{
this.sex = sex;
}
public String getUsername() ...{
return username;
}
public void setUsername(String username) ...{
this.username = username;
}
}
public class salesBean ... {
//基金柜台操作人员实体
private int sales_no; // 操作人员编号
private String username;// 操作人员登陆名
private String password;// 密码
private String realname;// 真实姓名
private String sex;// 性别
private String create_date;// 创建时间
public String getCreate_date() ...{
return create_date;
}
public void setCreate_date(String create_date) ...{
this.create_date = create_date;
}
public String getPassword() ...{
return password;
}
public void setPassword(String password) ...{
this.password = password;
}
public String getRealname() ...{
return realname;
}
public void setRealname(String realname) ...{
this.realname = realname;
}
public int getSales_no() ...{
return sales_no;
}
public void setSales_no(int sales_no) ...{
this.sales_no = sales_no;
}
public String getSex() ...{
return sex;
}
public void setSex(String sex) ...{
this.sex = sex;
}
public String getUsername() ...{
return username;
}
public void setUsername(String username) ...{
this.username = username;
}
}
操作基金柜台操作员实体的对应业务层
package
com.weiyan.SALES;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.weiyan.db.DBAccessManager;
public class salesManager ... {
private DBAccessManager db = null;
public salesManager() ...{
db = new DBAccessManager();// 构造方法初始化数据操作层
}
/** *//**
* 登陆检测
*
* @param bean
* @return
*/
public boolean CheckUser(salesBean bean) ...{
boolean check = true;
String username = bean.getUsername();
String password = bean.getPassword();
String sql = "select * from SALES where USERNAME='" + username
+ "' 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;
}
/** *//**
* 检测用户名是否存在 没有返回真可以注册
*
* @param bean
* @return
*/
public boolean CheckuserName(salesBean bean) ...{
boolean check = true;
String username = bean.getUsername();// 获得UserName
String sql = "select * from SALES where USERNAME='" + username + "'";
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;
}
/** *//**
* 注册基金柜台操作人员注册成功返回真..
*
* @param bean
* @return
*/
public boolean AddSales(salesBean bean) ...{
boolean check = true;// 控制流判断
String username = bean.getUsername();
String password = bean.getPassword();
String realname = bean.getRealname();
String sex = bean.getSex();
String sql = "insert into SALES (USERNAME,PASSWORD,REALNAME,SEX) values('"
+ username
+ "','"
+ password
+ "','"
+ realname
+ "','"
+ sex
+ "')";
if (this.CheckuserName(bean)) // 调用本类自己的方法检测用户名是否已存在
...{
if (db.Insert(sql) > 0)// 注册
...{
check = true; // 如果更新大于0YES
} else ...{
check = false;// 不大于0失败
}
} else ...{
check = false;// 有此用户直接失败
}
return check;
}
}
import java.sql.ResultSet;
import java.sql.SQLException;
import com.weiyan.db.DBAccessManager;
public class salesManager ... {
private DBAccessManager db = null;
public salesManager() ...{
db = new DBAccessManager();// 构造方法初始化数据操作层
}
/** *//**
* 登陆检测
*
* @param bean
* @return
*/
public boolean CheckUser(salesBean bean) ...{
boolean check = true;
String username = bean.getUsername();
String password = bean.getPassword();
String sql = "select * from SALES where USERNAME='" + username
+ "' 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;
}
/** *//**
* 检测用户名是否存在 没有返回真可以注册
*
* @param bean
* @return
*/
public boolean CheckuserName(salesBean bean) ...{
boolean check = true;
String username = bean.getUsername();// 获得UserName
String sql = "select * from SALES where USERNAME='" + username + "'";
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;
}
/** *//**
* 注册基金柜台操作人员注册成功返回真..
*
* @param bean
* @return
*/
public boolean AddSales(salesBean bean) ...{
boolean check = true;// 控制流判断
String username = bean.getUsername();
String password = bean.getPassword();
String realname = bean.getRealname();
String sex = bean.getSex();
String sql = "insert into SALES (USERNAME,PASSWORD,REALNAME,SEX) values('"
+ username
+ "','"
+ password
+ "','"
+ realname
+ "','"
+ sex
+ "')";
if (this.CheckuserName(bean)) // 调用本类自己的方法检测用户名是否已存在
...{
if (db.Insert(sql) > 0)// 注册
...{
check = true; // 如果更新大于0YES
} else ...{
check = false;// 不大于0失败
}
} else ...{
check = false;// 有此用户直接失败
}
return check;
}
}
2:基金操作模块
基金操作由基金实体类,和基金业务层两个类为对基金的核心封装. 基金实体类代表了一项基金,业务层提供
对基金的操作的封装。
package
com.weiyan.FUND;
import java.sql.ResultSet;
import java.sql.SQLException;
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);
}
}
import java.sql.ResultSet;
import java.sql.SQLException;
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);
}
}
寄语:今天在计算机前做这编写这个程序10几个小时,收获了很多,马上就快毕业面试了,我相信我的努力能
带给我不一样的机遇。
07/09/15
今天主要完成了客户的模块的部分功能,包括注册客户,查询客户,修改客户,及显示客户详细信息的功能.
1.首先建立客户实体类ClientBean。存储客户信息...在各层之间传递数据..
2. 创建客户业务层,实现对客户的操作。具体代码如下:
package
com.weiyan.Child;
import java.sql. * ;
import com.weiyan.db.DBAccessManager;
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();
}
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();
}
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);//调用内部方法获得更新完的客户
}
}
import java.sql. * ;
import com.weiyan.db.DBAccessManager;
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();
}
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();
}
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);//调用内部方法获得更新完的客户
}
}
项目所用一些知识总结:
在struts中如何使单选按钮默认选中某项?
<
html:radio property
=
"
radioVal
"
value
=
"
radioVal.man
"
/>
男
< html:radio property = " radioVal " value = " radioVal.woman " /> 女
解决方案1:简单选中
在 </ html > 的最后加上(就是说当页面执行完时)
即 < script >
document.all( " radioVal " )[ 1 ].checked = true ; // 第二个radio选中
</ script >
</ html >
< html:radio property = " radioVal " value = " radioVal.woman " /> 女
解决方案1:简单选中
在 </ html > 的最后加上(就是说当页面执行完时)
即 < script >
document.all( " radioVal " )[ 1 ].checked = true ; // 第二个radio选中
</ script >
</ html >
JS动态时间:
<
html
>
< head >
< script type ="text/javascript" > ...
function show5()
...{if(!document.layers&&!document.all)
return
var Digital=new Date()
var hours=Digital.getHours()
var minutes=Digital.getMinutes()
var seconds=Digital.getSeconds()
var dn="AM"
if(hours>12)...{dn="PM"
hours=hours-12
}if(hours==0)
hours=12
if(minutes<=9)
minutes="0"+minutes
if(seconds<=9)
seconds="0"+seconds
//change font size here to your desire
myclock="<font >"+hours+":"+minutes+":"+seconds+" "+dn+"</font>";
if(document.layers)...{
document.layers.liveclock.document.write(myclock)
document.layers.liveclock.document.close()
}else if(document.all)
liveclock.innerHTML=myclock
setTimeout("show5()",1000)
}
</ script >
</ head >
< body onLoad ="show5()" >
< span id ="liveclock" style ="font-family:'宋体'" style ="font-size:9px" ></ span >
</ body >
</ html >
< head >
< script type ="text/javascript" > ...
function show5()
...{if(!document.layers&&!document.all)
return
var Digital=new Date()
var hours=Digital.getHours()
var minutes=Digital.getMinutes()
var seconds=Digital.getSeconds()
var dn="AM"
if(hours>12)...{dn="PM"
hours=hours-12
}if(hours==0)
hours=12
if(minutes<=9)
minutes="0"+minutes
if(seconds<=9)
seconds="0"+seconds
//change font size here to your desire
myclock="<font >"+hours+":"+minutes+":"+seconds+" "+dn+"</font>";
if(document.layers)...{
document.layers.liveclock.document.write(myclock)
document.layers.liveclock.document.close()
}else if(document.all)
liveclock.innerHTML=myclock
setTimeout("show5()",1000)
}
</ script >
</ head >
< body onLoad ="show5()" >
< span id ="liveclock" style ="font-family:'宋体'" style ="font-size:9px" ></ span >
</ body >
</ html >