第一步:建立一张银行账户表 叫 BankAccount 并建立一个序列
id number pk //用户id
ano varchar2(30) uk //用户卡号
apassword varchar2(30) //用户密码
aname varchar2(30) //用户名
amoney number //余额
//创建银行用户表
drop table bank_account;
create table bank_account(
id number constraint bank_account_id_pk primary key,
ano varchar(30) constraint bank_account_ano_uk unique,
apassword varchar(30),
aname varchar(30),
amoney number
);
drop sequence bank_account_id_seq;
create sequence bank_account_id_seq;
6.2 写一个java程序 用来开户 只要输入 账号 密码 开户人的姓名 余额
开户信息如下 6225880111887788 123456 zhangsan 99999999
6225880111887799 123456 lisi 9
第二步:创建Bean包,编写实体类
public class BankAccount {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAno() {
return ano;
}
public void setAno(String ano) {
this.ano = ano;
}
public String getAname() {
return aname;
}
public void setAname(String aname) {
this.aname = aname;
}
public String getApassword() {
return apassword;
}
public void setApassword(String apassword) {
this.apassword = apassword;
}
public String getAmoney() {
return amoney;
}
public void setAmoney(String amoney) {
this.amoney = amoney;
}
@Override
public String toString() {
return "BankAccount [id=" + id + ", ano=" + ano + ", aname=" + aname + ", apassword=" + apassword + ", amoney="
+ amoney + "]";
}
public BankAccount(String ano, String aname, String apassword, String amoney) {
super();
this.ano = ano;
this.aname = aname;
this.apassword = apassword;
this.amoney = amoney;
}
public BankAccount(int id, String ano, String aname, String apassword, String amoney) {
super();
this.id = id;
this.ano = ano;
this.aname = aname;
this.apassword = apassword;
this.amoney = amoney;
}
public BankAccount() {
super();
// TODO Auto-generated constructor stub
}
private int id;
private String ano;
private String aname;
private String apassword;
private String amoney;
}
第三步:创建账号,编写开户程序
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
import com.xdl.util.JdbcUtil2;
public class CreateBankAccount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入开户的卡号:");
String ano = sc.nextLine();
System.out.println("请输入开户的名字:");
String aname = sc.nextLine();
System.out.println("请输入开户的密码:");
String apassword = sc.nextLine();
System.out.println("请输入开户的钱数:");
String smoney = sc.nextLine();
//double amoney = Double.parseDouble(smoney);
// 把输入的数据 包装成对象
BankAccount ba = new BankAccount(ano, aname, apassword, smoney);
Connection conn = null;
PreparedStatement ps = null;
conn = JdbcUtil2.getConnection();
String sql="insert into bank_account values(bank_account_id_seq.nextval,?,?,?,?)";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, ba.getAno());
ps.setString(2, ba.getApassword());
ps.setString(3, ba.getAname());
ps.setDouble(4, Double.parseDouble(ba.getAmoney()));
int rows = ps.executeUpdate();
if(rows == 1) {
System.out.println("开户成功");
}else{
System.out.println("开户失败");
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtil2.releaseResource(conn, ps, null);
}
}
}
第四步:编写转账程序
1、先登录,登录成功才可以执行转账程序
2、转账逻辑时,链接会自动进行数据的提交,这样万一转入的账户不成功,则无法回退之前的操作,为了解决 操作语句 需要同时成功或同事失败 则需要关闭连接的自动提交
禁止自动提交 conn.setAutoCommit(false);
语句都成功 就提交 conn.commit() ;否则进行回滚 conn.rollback();
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import com.xdl.util.JdbcUtil2;
public class BankAccountTransfer {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入登录的卡号:");
String ano = sc.nextLine();
System.out.println("请输入登录的密码:");
String apassword = sc.nextLine();
Connection conn = null;
PreparedStatement ps = null;
/* 定义两个转账的 PreparedStatement */
PreparedStatement from = null;
PreparedStatement to = null;
ResultSet rs = null;
BankAccount ba = null;
conn = JdbcUtil2.getConnection();
String sql="select * from bank_account where ano=? and apassword=?";
try {
ps=conn.prepareStatement(sql);
ps.setString(1, ano);
ps.setString(2, apassword);
rs = ps.executeQuery();
if(rs.next()){
ba = new BankAccount(rs.getInt("id"),
rs.getString("ano"), rs.getString("aname"), rs.getString("apassword"),
rs.getString("amoney"));
}
if(ba!=null){
System.out.println("登录成功");
// 从当前账户中扣除输入的金额
System.out.println("请输入转账的金额:");
String smoney=sc.nextLine();
double money = Double.parseDouble(smoney);
sql="update bank_account set amoney=amoney-? where ano=?";
// 禁止自动提交
conn.setAutoCommit(false);
from = conn.prepareStatement(sql);
from.setDouble(1, money);
from.setString(2, ba.getAno());
int fromf=from.executeUpdate();
// 提示用户输入转入的账号 和 账户名
System.out.println("请输入收款的账号:");
String toano = sc.nextLine();
System.out.println("请输入收款人姓名:");
String toaname= sc.nextLine();
sql="update bank_account set amoney=amoney+? where ano=? and aname=?";
to=conn.prepareStatement(sql);
to.setDouble(1, money);
to.setString(2, toano);
to.setString(3, toaname);
int tof = to.executeUpdate();
if(fromf==1 && tof==1){
System.out.println("转账成功");
conn.commit(); //提交
}else{
System.out.println("转账失败");
conn.rollback(); //回滚
}
}else{
System.out.println("登录失败");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil2.releaseResource(conn, ps, rs);
JdbcUtil2.releaseResource(conn, from, null);
JdbcUtil2.releaseResource(conn, to, null);
}
}
}
多媒体教室管理员工作总结范文三篇篇一:多媒体教室管理工作总结在这过去的一学期,我一直严格要求自己,努力工作,刻苦学习,兢兢业业,较好地完成了领导交给的工作任务,在工作中取得了一定的成绩,受到领导、同事和学生的一致认可和好评。回顾过去,工作总结如下:一、努力学习,不断提高自己的政治思想素质。本人热爱党的教育事业,热爱本职工作,加强自我修养,热爱学生,真诚对待学生,受到学生的好评。特别是在此期间,我努...
一个模型结果形式如下,提取出来第一种方式pre_re = mymodel(x)pre_re : tensor([ 预测值的结果 ],device='cuda:0,' ,grad_fn=<AddmBackward>)#######################想要使用预测结果的内容#1.需要将输入预测进行detach(),因为tensor数据是一个整体对象pre_re.detach()的结果仍然时Tensor类型,若想使用需要使用numpy()detach后,pre_re : te
[准备]硬件: 电脑、树莓派4B、显示器(hdmi线Micro HDMI转标准HDMI)、鼠标、键盘、读卡器、TF卡、网线[安装]1. 将读卡器插入电脑usb口;2. 打开Raspberry PI Imager,点击CHOOSE OS,选择Use custom导入ubuntu20镜像(解压好的 .img文件)3. 选择读卡器4. 点击WRITE,开始烧写系统,等待一段时间,软件提示烧写完毕。5. ...
安装步骤1、下载后得到zip压缩包.2、解压到自己想要安装到的目录,本人解压到的是D:\Environment\mysql-5.7.193、添加环境变量:我的电脑->属性->高级->环境变量选择PATH,在其后面添加: 你的mysql 安装文件下面的bin文件夹4、编辑 my.ini 文件 ,注意替换路径位置[mysqld]basedir=D:\Program Files\mysql-5.7\datadir=D:\Program Files\mysql-5.7\data\
一、MSE(Mean Squared Error)名称:均方误差公式:二、RMSE(Root Mean Squared Error)名称:均方根误差公式:三、MAE(Mean Absolute Error)名称:平均绝对值误差公式:注:上述衡量指标的局限:同一个模型,解决不同问题,因为数量量级可能不同,所以最终的结果无法横向对比,如果将最终的结果映射到[0,1]区间内,这样就可以横向比较哪个模型能更好的解决此问题,故R Squared即可满足要求。四、R ..
当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行action之后,直接发送这个包,只有在内核无法查找到流表项的时候,才会到用户态查找用户态的流表。仅仅查找内核中flow table的情况被称为fast pa...
本文实例讲述了Android闪屏效果实现方法。分享给大家供大家参考,具体如下:闪屏,就是SplashScreen,也可以说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后,自动关闭。android的实现非常简单,使用Handler对象的postDelayed方法就可以实现。在这个方法里传递一个Runnable对象和一个延迟的时间。该方法实现了一个延迟执行的效果,延迟的时间由第2个参数指定,单...
ESLintESLint是一个静态代码分析工具(Static program analysis,可以在没有任何程序执行的情况下,对代码进行分析)ESLint可以帮助我们在项目中建立统一的团队代码规范,保持正确、统一的代码风格,提高代码的可读性、可维护 性ESLint的规则是可配置的,我们可以自定义属于自己的规则ESLint在分析的时候,是依赖JS编译器的,通过JS编辑器,ESLint将我们编写的代码进行词法分析和语法分析生成对应的AST树,ESLint通过遍历AST树对代码进行合法性校验
为什么80%的码农都做不了架构师?>>> ...
试验一 对话框、按扭及编辑框控件一、目的和要求 掌握对话框编辑器的使用方法 熟悉对话框的编辑过程 掌握控件的创建和使用方法 掌握静态控件、按钮和编辑控件的使用方 二、上机准备 复习教材第四章关于对话框、静态控件、按钮和编辑框控件等内容 设计一个对话框,用于学生成绩的输入,要求能输入学生姓名、学号、性别以及3门课程成绩。在该对话框中要用到控件:
Windows的西班牙语输入法:一、带重音符号的小写元音字母字符按键á先按一下【’】键,然后按一下【A】键é先按一下【’】键,然后按一下【E】键í先按一下【’】键,然后按一下【I】键ó先按一下【’】键,然后按一下【O】键ú先按一下【’】键,然后按一下【U】键二、带重音符号的大写元音字母字符按键Á先按一下【’】键,然后按着【Shift】键,再按一下【A】键É先按一下【’】键,然后按着【Shift】键,再按一下【E
1、什么是zigbee?它能干什么用?为什么引入zigbee?zigbee是无线设备之间的一种通信方式,类似于人与人之间用普通话交流,普通话就是一种通信方式。zigbee通信方式和zigbee协议说的是一回事。节点、无线模块、无线设备说的是一个东西。zigbee的作用构建无线局域网2.zigbee和无线传感器网络之间的关系?如果一个无线局域网用于传感器数据收集和监控,那么这个网路就叫无线传感器网络。无线传感器网络是无线局域网的一个具体应用。蓝牙:功耗低,组建网络节点数少7-8WIFI:通信速率