ATM柜员机模拟系统代码.docx
- 文档编号:9463735
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:11
- 大小:16.86KB
ATM柜员机模拟系统代码.docx
《ATM柜员机模拟系统代码.docx》由会员分享,可在线阅读,更多相关《ATM柜员机模拟系统代码.docx(11页珍藏版)》请在冰豆网上搜索。
ATM柜员机模拟系统代码
Win.java
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.sql.*;
publicclassWinextendsJFrameimplementsActionListener{
JTextFieldtext[]=newJTextField[6];
JTextAreashow=newJTextArea(9,30);
JTabletable;//标签
JButtoninsert,update,select,delete,C,Q;
Win(){
setLayout(newFlowLayout());
for(inti=0;i<5;i++){
text[i]=newJTextField(10);
}
add(newJLabel("卡号:
"));
add(text[0]);
add(newJLabel(":
"));
add(text[1]);
add(newJLabel("密码:
"));
add(text[2]);
add(newJLabel("余额:
"));
add(text[3]);
add(newJLabel("序号:
"));
add(text[4]);
C=newJButton("存款");
C.addActionListener(this);
add(C);
Q=newJButton("取款");
Q.addActionListener(this);
add(Q);
update=newJButton("修改密码");
update.addActionListener(this);
add(update);
insert=newJButton("添加新用户");
insert.addActionListener(this);
add(insert);
select=newJButton("查询用户信息");
select.addActionListener(this);
add(select);
delete=newJButton("删除用户信息");
delete.addActionListener(this);
add(delete);
add(newJScrollPane(show));
add(newJLabel("提示:
1.每次取款金额为100的倍数,总额不能超过5000元,支取金额不允许透支"));
add(newJLabel("2.存款金额不能为负存款"));
add(newJLabel("3.新密码长度不小于6位,不允许出现6位完全相同的情况"));
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidactionPerformed(ActionEvente){
Operationmodify=newOperation();
modify.setDatasourceName("XX");
if(e.getSource()==insert)
{
modify.setSQL("INSERTINTOXXVALUES('"+text[4].getText()+"','"+text[0].getText()+"','"+text[1].getText()+"','"+text[2].getText()+"','"+text[3].getText()+"')");
StringbackMess=modify.modifyRecord();
show.append("添加新用户"+backMess);
}
elseif(e.getSource()==C)
{
Connectioncon=null;
Statementsql;
ResultSetrs=null;
try{
doublen=2000;
con=DriverManager.getConnection("jdbc:
odbc:
XX","","");
con.setAutoCommit(false);
sql=con.createStatement();
rs=sql.executeQuery("SELECT*FROMXXWHERE卡号='123456'");//查询
rs.next();
doublemoney=rs.getDouble(5);
System.out.println("操作前用户的余额:
"+money);
doublemoney1=money+n;//存款
sql.executeUpdate
("UPDATEXXSET余额=+'"+money1+"'WHERE卡号='123456'");//存款后更新余额
mit();
con.setAutoCommit(true);//提交事务结果到数据库
sql=con.createStatement();//创建数据库操作对象
}
catch(SQLExceptione1)
{try{con.rollback();}//如果操作失败则结束事务
catch(SQLExceptionexp){}
System.out.println(""+e);
}
}
elseif(e.getSource()==Q)
{Connectioncon=null;
Statementsql;
ResultSetrs=null;
try{
doublen=5000;
con=DriverManager.getConnection("jdbc:
odbc:
XX","","");
con.setAutoCommit(false);
sql=con.createStatement();
rs=sql.executeQuery("SELECT*FROMXXWHERE卡号='123456'");
rs.next();
doublemoney=rs.getDouble(5);
System.out.println("操作前用户的余额:
"+money);
doublemoney2=money-n;//取款
sql.executeUpdate
("UPDATEXXSET余额=+'"+money2+"'WHERE卡号='123456'");//取款后更新余额
mit();
con.setAutoCommit(true);
sql=con.createStatement();
}
catch(SQLExceptione1)
{try{con.rollback();}
catch(SQLExceptionexp){}
System.out.println(""+e);
}
}
elseif(e.getSource()==update)
{
modify.setSQL("UPDATEXXSETXX.密码=+'"+text[2].getText()+"'WHERE(((XX.卡号)=+'"+text[0].getText()+"'));");
StringbackMess=modify.modifyRecord();
show.append("修改密码"+backMess);
}
elseif(e.getSource()==delete)
{
modify.setSQL("DELETE*FROMXXWHERE(((XX.卡号)=+'"+text[0].getText()+"'));");
StringbackMess=modify.modifyRecord();
show.append("删除用户信息"+backMess);
}
elseif(e.getSource()==select)
{
Queryquery=newQuery();
query.setDatasoureName("XX");
query.setTableName("XX");
Objecta[][]=query.getRecord();
Stringb[]={"序号","卡号","","密码","余额"};
table=newJTable(a,b);
JFrameframe=newJFrame();
frame.add(newJScrollPane(table));
frame.setVisible(true);
frame.setBounds(400,400,600,200);
}
}
publicvoidsetBounds(inti,intj,intk,intl){}
}
Operation.java
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassOperation{
StringdatasourceName="";//数据源名称
StringSQL,message="";//表名
publicOperation()//增删改的主代码
{
try{Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver");}//操作数据源
catch(Exceptione){}
}
publicvoidsetSQL(StringSQL)//建立一个新的数据源
{this.SQL=SQL;}
publicvoidsetDatasourceName(Strings)
{datasourceName=s.trim();}
publicStringmodifyRecord(){
Connectioncon=null;
Statementsql=null;
try{Stringuri="jdbc:
odbc:
"+datasourceName;
Stringid="";
Stringpassword="";
con=DriverManager.getConnection(uri,id,password);
sql=con.createStatement();
sql.execute(SQL);
message="操作成功";
con.close();
}
catch(SQLExceptione)
{message=e.toString();}
returnmessage;
}/*数据源读取初始化*/
publicvoidsetTableName(Stringstring){}//表名
publicObject[][]getRecord()//存放操作结果数组
{returnnull;}
}
Query.java
importjava.sql.*;
import.httpserver.Authenticator.Result;
publicclassQuery
{StringdatasourceName="";//数据源名
StringtableName="";//表名
Objecta[][];
publicQuery()
{
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}//桥接器
catch(ClassNotFoundExceptione)
{System.out.print(e);}
}
publicvoidsetDatasoureName(Strings)
{datasourceName=s.trim();}
publicvoidsetTableName(Strings)
{tableName=s.trim();}
publicObject[][]getRecord()//获取表中记录
{
Connectioncon;
PreparedStatementsql;//预处理命令
ResultSetrs;//结果集
try{
Stringuri="jdbc:
odbc:
"+datasourceName;
Stringnumber="";
Stringpassword="";
con=DriverManager.getConnection(uri,number,password);//初始化连接
DatabaseMetaDatametadata=con.getMetaData();
//连接对象调用getMetaData()方法返回一个DatabaseMetaData对象
ResultSetrs1=metadata.getColumns(null,null,tableName,null);
//将表中的字段信息以行列的形式存储在Result中
int字段个数=0;
while(rs1.next())
{字段个数++;}
intn=getAmount();
a=newObject[n][字段个数];
sql=con.prepareStatement("SELECT*FROM"+tableName);//查询表名
rs=sql.executeQuery();
intm=0;
while(rs.next())//输出结果集中的数据
{for(intk=1;k<=字段个数;k++)
{a[m][k-1]=rs.getString(k);}
m++;
}
con.close();
}
catch(SQLExceptione)
{System.out.println("请输入正确的表名"+e);}
returna;
}
publicintgetAmount()
{
Connectioncon;
Statementsql;
ResultSetrs;
try{
Stringuri="jdbc:
odbc:
"+datasourceName;
Stringid="";
Stringpassword="";
con=DriverManager.getConnection(uri,id,password);
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//以只读方式滚动查询
rs=sql.executeQuery("SELECT*FROM"+tableName);//获取所在行
rs.last();
introws=rs.getRow();//当前游标所指行号
returnrows;
}
catch(SQLExceptionexp)
{
System.out.println(""+exp);
return0;
}
}
publicvoidinputQueryResult(){}
}
ATM.java
publicclassATM{
publicstaticvoidmain(Stringargs[])
{Winwin=newWin();
win.setBounds(400,300,400,300);//设置组件在容器中的位置和本身的大小
win.setTitle("ATM自动柜员机");
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 柜员机 模拟 系统 代码