package ATM;
//此页是基本方法页,所有的方法都放在本页,其他类通过调用本页方法来实现功能
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//atm的增删改查
public class Basic_operation{
//以下三个接数据库增删改查所用的变量
public String sql;
public PreparedStatement ps;
public static Connection con;
public static String cardID="";//用户卡号
public static String password="123456";//用户登陆密码(默认为123456)
public static String password2="";//新密码(修改密码)
public static String password3="";//确认新密码(修改密码)
public static String balanceFixed ="0";//盛放余额的变量
public String s="";//接收各个方法返回值的变量
//构造方法
Basic_operation() {
//连接数据库
con = GetDBConnection.ConnectDB("atmBankDatabase", "root", "");
if(con == null) {
System.out.println("数据库连接失败");
return;
}
sql="select balance from account where id=?;";
try {
ps=con.prepareStatement(sql);
ps.setString(1, cardID);
ResultSet rs =ps.executeQuery();//向数据库发送数据查询语句
while(rs.next()) {
balanceFixed = rs.getString("balance");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//1.查余额
public String select(String cardID) throws SQLException {
String
sql="select balance from account where id=?;";
ps=con.prepareStatement(sql);
ps.setString(1, cardID);
ResultSet rs =ps.executeQuery();//向数据库发送数据查询语句
while(rs.next()) {
balanceFixed = rs.getString("balance");
}
double balance_number = Double.parseDouble(balanceFixed);
System.out.println("当前账户余额:"+balance_number);
balanceFixed = String.valueOf(balance_number);
s="当前账户余额:"+balanceFixed;
return s;
}
//2.取款
public String Withdrawal(String cardID,String take_money2) {
//take_money要取的钱数
boolean isNum = take_money2.matches("[0-9]+");
if(isNum) {
double take_money = Double.parseDouble(take_money2);
if(take_money<=5000) {
if(take_money%100 == 0) {
try {
//balance_number:数字格式的余额,用于和将要取的金额做比较
double balance_number = Double.parseDouble(balanceFixed);
if(take_money<=balance_number) {
sql="update account set balance=?-? where id=?;";
ps=con.prepareStatement(sql);
ps.setDouble(1, balance_number);//余额
ps.setDouble(2, take_money);//要取的金额
ps.setString(3, cardID);
ps.executeUpdate();
balance_number=balance_number-take_money;
balanceFixed=String.valueOf(balance_number);
System.out.println("取款成功,当前余额为:"+balanceFixed);
s="取款成功,当前余额为:"+balanceFixed;
}else {
System.out.println("余额不足,请重新输入");
s="余额不足,请重新输入";
//Withdrawal(cardID,take_money);
}
} catch (SQLException e) {
System.out.println("取款出错");
s="取款出错";
}
}else {
System.out.println("取款金额必须是100的整数倍,请重新输入");
s="取款金额必须是100的整数倍,请重新输入";
}
}else {
System.out.println("单次取款金额不得超过5000,请重新输入");
s="单次取款金额不得超过5000,请重新输入";
}
}else {
s="取款失败,您的输入为非数字";
System.out.println("取款失败,您的输入为非数字");
}
return s;
}
//3.存款
public String deposit(String cardID,String m) {
boolean isNum = m.matches("[0-9]+");
if(isNum) {
double add_money2 = Double.parseDouble(m);
if(add_money2>0) {
if(add_money2%100 == 0) {
try {
//balance_number:数字格式的余额,用于和将要取的金额做比较
double balance_number = Double.parseDouble(balanceFixed);
sql="update account set balance=?+? where id=?;";
ps=con.prepareStatement(sql);
ps.setDouble(1, balance_number);//余额
ps.setDouble(2, add_money2);//要存的金额
ps.setString(3, cardID);
ps.executeUpdate();
balance_number=balance_number+add_money2;
balanceFixed=String.valueOf(balance_number);
s="存款成功 当前余额为:"+balanceFixed;
System.out.println("存款成功");
System.out.println("当前余额为:"+balanceFixed);
} catch (SQLException e) {
System.out.println("存款出错");
}
}else {
s="存款金额必须是100的整数倍,请重新输入";
System.out.println("存款金额必须是100的整数倍,请重新输入");
}
}else {
s="不得输入负数,请重新输入";
System.out.println("不得输入负数,请重新输入");
}
}else {
s="存款失败,您的输入为非数字";
System.out.println("存款失败,您的输入为非数字");
}
return s;
}
//4.修改密码
public String changePassword(String cardID,String password,String password2,String password3) {
String yuanPassword="";//原密码
sql="select apassword from account where id=?;";
try {
ps=con.prepareStatement(sql);
ps.setString(1, cardID);
ResultSet rs =ps.executeQuery();//向数据库发送数据查询语句
while(rs.next()) {
yuanPassword=rs.getString("apassword");
}
if(yuanPassword.equals(password)) {
if(password2.length()>=6) {
char[] a = password2.toCharArray();
if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3]&&a[3]==a[4]&&a[4]==a[5]) {
System.out.println("不可以设置全部数字相同的密码");
s="不可以设置全部数字相同的密码";
}else {
if(password2.equals(password3)) {
sql="update account set apassword=? where id=?;";
ps = con.prepareStatement(sql);
ps.setString(1, password2);
ps.setString(2, cardID);
ps.executeUpdate();
System.out.println("密码修改成功");
s="密码修改成功";
}else {
System.out.println("两次密码不相同,请重新输入");
s="两次密码不相同,请重新输入";
}
}
}else {
System.out.println("修改失败,密码长度不可小于6位");
s="修改失败,密码长度不可小于6位";
}
}else {
System.out.println("原密码错误,请重新输入");
s="原密码错误,请重新输入";
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return s;
}
//5.登陆
public String jlogin(String cardID,String password) {
String newCardID="0";
String newPassword="0";
sql="select id,apassword from account where id=?;";
try {
ps=con.prepareStatement(sql);
ps.setString(1, cardID);
ResultSet rs =ps.executeQuery();//向数据库发送数据查询语句
while(rs.next()) {
newCardID= rs.getString("id");
newPassword=rs.getString("apassword");
}
if(cardID.equals(newCardID) && password.equals(newPassword)) {
System.out.println("登陆成功");
s = "登陆成功";
this.cardID=cardID;//使另一个类可以调用这个cardID
}else {
System.out.println("用户名或密码不正确,请重新输入");
s="用户名或密码不正确,请重新输入";
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return s;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Basic_operation a = new Basic_operation();
//以下开始设计测试用例
//-----------------------------------------------
//1、测试查询语句(未报错)
// try {
// a.select("62250028");
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//2、测试取款语句
//(每次取款金额为100的倍数(256,3000,6000),总额不超过5000元(6000),支取金额不允许透支(2000))
//a.Withdrawal("62250028", 256);//取款金额必须是100的整数倍,请重新输入
//a.Withdrawal("62250028", 3000);//取款成功
//a.Withdrawal("62250028", 6000);//单次取款金额不得超过5000,请重新输入
//3、测试存款语句
//不能出现负存款(-100,4000)
//a.deposit("62250028", -100);//不得输入负数,请重新输入
//a.deposit("62250028", 9100);//存款成功(回车)当前余额为:10000.0
//4、新密码长度不小于6位,

night猿
- 粉丝: 161
最新资源
- 网络教学模式省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件.pptx
- 电子商务概论-李琪版的ppt课件.ppt
- 基于SVM的乳腺癌图像识别,使用DDSM公开数据集
- 教育软件代理协议书.docx
- 基于单片机的自动避障小车设计与实现.doc
- 软件工程基础习题集.docx
- 云桌面虚拟化解决方案.docx
- 招聘成功的人才微软招聘过程及经验(最终).pptx
- 综合布线毕业设计论文.doc
- 网络营销--如何让你的网店人尽皆知.pptx
- 2019金融数据科技信息区块链PPT模板.pptx
- SQLServer数据库系统设计与实现指导书.doc
- 鄂教版七上语文大自然语言图文.pptx
- 2022年C语言知识点总结正式版.doc
- 干货分享区块链核心技术之共识机制样本.docx
- 通信公司企业文化诊断报告终稿.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


