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

来源:互联网 发布:兄弟连php视频 编辑:程序博客网 时间:2024/04/30 15:52

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.2String ---------->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;
}
}



0 0
原创粉丝点击