您的位置:首页 > 编程语言 > Java开发

javaoop涉及到登录者 和登录日志的编写

2016-05-19 18:27 337 查看
1. 基本上 每一个工程都会用到登录日志的

所以 登录 作为 一种 常态 必须要掌握

接口 实现类,其中的 麻烦仅仅就是一个 类型之间的转化

public class LoginLogDaoimpl implements ILoginLogDao {

DBManager db=new DBManager();

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

@Override

public int Add(LoginLog entity) throws SQLException {

String sql="insert into loginlog values(?,getdate(),?)";

Object [] objs={entity.getUname(),entity.getLoginip()};

int iline = db.MyExecuteUpdate(sql, objs);

return iline;

}

调用时 只要 把 entity 中的 每一个 属性的 类型 搞对,传入 即可,

entity 中的 属性值 可能由
用户 自己 输入 或者 是 部分 是 从userInfo
中而来

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

public List<LoginLog> getAll() throws SQLException {

String sql="select * from Loginlog";

List<LoginLog> LoginLogList=new ArrayList<LoginLog>();

LoginLog log=new LoginLog();

ResultSet rst=Db.MyExecuteQuery(sql, objs);

while(rst.next() ){

int id=rst.getInt("id");

String uname=rst.getString("uname");

————————————————————————————————————————————

遇到 了 sql 的 date 转化为 java 中的 date

//
Date logintime=rst.getString("logintime"); 错误的

sql
------------ java

datetime
------------ TIMESTAMP

所以 是

这里所有时间日期都可以被SimpleDateFormat格式化format()

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd
hh:mm:ss");

TIMESTAMP Ttime=(TIMESTAMP)rst.getObject("logintime");

1.1
SQL.date-------> String

String 获得的 Stringtime=sdf.formate(Ttime);

1.2
String ---------->Util.date

Date datetime = sdf.parse(Stringtime);

java.util.Date 是 java.sql.Date 等三个的父类

1.3
String------------》
Timestamp

使用Timestamp的valueOf()方法

Timestamp ts = new Timestamp(System.currentTimeMillis());

String tsStr = "2011-05-09 11:49:45";

ts = Timestamp.valueOf(tsStr);

1.4
Timestamp----------》String

String tsStr =“”;

Sring类型 tsStr = sdf.format(Timestamp类型 );

或者

tsStr =
Timestamp.toString(); ---任何 的 类型都可以 这样 变

**如果
不想 多转化一步, 在 每一个 entity 中 就直接 使用 sql.Date 类型

————————————————————————————————————————

String loginip=rst.getString("loginip");

log=new LoginLog(id,uname,

datetime , loginip);

LoginLogList.add(log);

}

return LoginLogList;

}

}

》》》》》》》》》》》》》》》》》》》

2.1登录验证的问题

1.银行卡 是 你把 卡放进去,

2.卡号 被读卡器 扫描出 一串 字符串--

3. 字符串 这是 会与 数据库 中的 卡号对比,---

4. 如果存在,则给你 一个 输入框 输密码,并且这是 卡号对应的 信息和 密码 已经查询出来,

5. 判断 你的 输入的密码 是否 和 查询出来的 一样,

6. 正确 就会 进入 另一个 界面了

7. 取款 转账 存款 退出 里面 又会 有很多的 子选项

8. 按了 退出, 就会 给 读卡器一个 信号, 读卡器 把卡 吐出来

》》》》》》》》》》》》》》》》》》》》》》》》》》》》

3.1验证 卡号的 存在

public boolean validateAccount(String cardNO){

boolean flag=false;

String sql="select * from account where cardNO=?";

con=DBManager.getCon();

pst=con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,cardNO

ResultSet.CONCUR_READ_ONLY);

pst.setString(1,cardNO);

rst=pst.executeQuery();

if(rst.next()){

flag=true;

}

else{

flag=false;

}

return flag

——————————————————————————————

3.3 主界面的 问题, 可以 写在一起,也不要紧, 用于 可以 一直循环的 调用显示

public class AccountDao {

private Connection con=null;

private CallableStatement cst=null;

String cardNo;

Scanner sc=new Scanner(System.in);

//获取银行卡号

public String getCardNO(){

System.out.print("请输入银行卡号:");

cardNo=sc.next();

return cardNo;

}

//菜单

public void menu() throws Exception{

while(true){

System.out.println("[1]开户 [2]存款");

System.out.println("[3]取款 [4]转账");

System.out.println("[5]查看余额 [6]退出系统");

System.out.println("----------------------------------------");

System.out.println("请选择如下操作:");

int x=sc.nextInt();

switch(x){

case 1:

this.openAccount();

break;

case 2:

this.insertMoney();

break;

case 3:

this.drawMoney();

break;

case 4:

this.transMoney();

break;

case 5:

this.searchBalance();

break;

case 6:

System.exit(0);

break;

}

}

}

//开户

public void openAccount() {

System.out.println("请输入姓名:");

String name=sc.nextLine();

System.out.println("请输入身份证号码:");

String passportID=sc.nextLine();

System.out.println("请输入电话号码:");

String telephone=sc.nextLine();

System.out.println("请输入卡号:");

String cardNO=sc.nextLine();

try {

con=DBManager.getCon();

con.setAutoCommit(false);

存储 过程

cst=con.prepareCall("{call bankpro(?,?,?,?)}");

cst.setString(1, name);

cst.setString(2, passportID);

cst.setString(3, telephone);

cst.setString(4, cardNO);

cst.execute();

con.commit();

提交 这个

System.out.println("开户成功");

}

catch (Exception e) {

try {

con.rollback();

} catch (Exception e1) {

e1.printStackTrace();

}

System.out.println("开户失败");

e.printStackTrace();

}

finally{

DBManager.closeStatement(cst);

DBManager.closeCon(con);

}

}

//存款

public void insertMoney(){

System.out.println("请输入存入金额:");

float money=sc.nextFloat();

try {

con=DBManager.getCon();

con.setAutoCommit(false);

cst=con.prepareCall("{call insertpro(?,?)}");

cst.setFloat(1, money);

cst.setString(2, cardNo);

cst.execute();

con.commit();

System.out.println("存款成功");

}

catch (Exception e) {

try {

con.rollback();

} catch (Exception e1) {

e1.printStackTrace();

}

System.out.println("存款失败");

e.printStackTrace();

}

finally{

DBManager.closeStatement(cst);

DBManager.closeCon(con);

}

}

//取款

public void drawMoney(){

System.out.println("请输入取出金额:");

float money=sc.nextFloat();

try {

if(money>this.searchBalance()){

throw new Exception("账户余额不足");

}

con=DBManager.getCon();

con.setAutoCommit(false);

cst=con.prepareCall("{call drawpro(?,?)}");

cst.setFloat(1, money);

cst.setString(2, cardNo);

cst.execute();

con.commit();

System.out.println("取款成功");

}

catch (Exception e) {

try {

con.rollback();

} catch (Exception e1) {

e1.printStackTrace();

}

System.out.println("取款失败");

e.printStackTrace();

}

finally{

DBManager.closeStatement(cst);

DBManager.closeCon(con);

}

}

//转账

public void transMoney(){

System.out.println("请输入转账金额:");

float tran=sc.nextFloat();

String fromcardNO=cardNo;

System.out.println("请输入转进银行账号:");

String tocardNo=sc.next();

try{

if(tran>this.searchBalance()){

throw new Exception("账户余额不足");

}

ATMDao dao=new ATMDao();

if(dao.judgeAccount(tocardNo)==true){

con=DBManager.getCon();

con.setAutoCommit(false);

cst=con.prepareCall("{call tranpro(?,?,?)}");

cst.setFloat(1, tran);

cst.setString(2, fromcardNO);

cst.setString(3, tocardNo);

cst.execute();

con.commit();

System.out.println("转账成功");

}

else

throw new Exception("银行卡号不存在");

}

catch(Exception e){

try {

con.rollback();

} catch (Exception e1) {

e1.printStackTrace();

}

System.out.println("转账失败");

e.printStackTrace();

}

finally{

DBManager.closeStatement(cst);

DBManager.closeCon(con);

}

}

//查看余额

public float searchBalance(){

float balance=0;

try {

con=DBManager.getCon();

con.setAutoCommit(false);

cst=con.prepareCall("{call searchpro(?,?)}");

cst.setString(1, cardNo);

cst.registerOutParameter(2, java.sql.Types.FLOAT);

cst.execute();

balance=cst.getFloat(2);

System.out.println("余额为:"+balance);

System.out.println("----------------------------------------");

con.commit();

}

catch (Exception e) {

try {

con.rollback();

} catch (Exception e1) {

e1.printStackTrace();

}

System.out.println("查询失败");

e.printStackTrace();

}

finally{

DBManager.closeStatement(cst);

DBManager.closeCon(con);

}

return balance;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: