package atm;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.JButton;
import javax.swing.JDialog;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.UnknownHostException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.swing.JPasswordField;
public class ATM {
private JFrame frmAtm;
private JTextField account;
private JPasswordField password;
private JLabel tips;
private JPanel Jservice;
private JPanel Jlogin;
private JPanel JDiposit;
private JTextField DPamount;
private JPanel JWithdraw;
private JTextField WDamount;
private JPanel JTransfer;
private JTextField TFtoAccount;
private JTextField TFamount;
private JPanel JReceipt;
private JTextPane JRtextPane;
private JDialog JDlg;
private String userAccount;
BufferedWriter bufferedWriter;
BufferedReader bufferedReader;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ATM window = new ATM();
window.frmAtm.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public ATM() {
frmAtm = new JFrame();
frmAtm.setTitle("ATM-\u767B\u5F55");
frmAtm.setBounds(100, 100, 450, 300);
frmAtm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
Jlogin = new JPanel();
Jlogin.setBorder(new EmptyBorder(5, 5, 5, 5));
Jlogin.setLayout(null);
Jlogin.setVisible(true);
JLabel label = new JLabel("\u8D26\u53F7");
label.setFont(new Font("微软雅黑", Font.PLAIN, 13));
label.setBounds(65, 104, 31, 14);
Jlogin.add(label);
account = new JTextField();
account.setBounds(106, 102, 204, 20);
Jlogin.add(account);
account.setColumns(10);
JLabel label_1 = new JLabel("\u5BC6\u7801");
label_1.setFont(new Font("微软雅黑", Font.PLAIN, 13));
label_1.setBounds(65, 146, 31, 14);
Jlogin.add(label_1);
password = new JPasswordField();
password.setBounds(106, 144, 204, 20);
Jlogin.add(password);
tips = new JLabel("");
tips.setHorizontalAlignment(SwingConstants.CENTER);
tips.setFont(new Font("微软雅黑", Font.PLAIN, 13));
tips.setForeground(Color.RED);
tips.setBounds(106, 65, 204, 14);
Jlogin.add(tips);
JButton login = new JButton("\u767B\u5F55");
login.setFont(new Font("微软雅黑", Font.PLAIN, 13));
login.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
userAccount = account.getText();
String userPSW = new String(password.getPassword());
userAccount.trim();
userPSW.trim();
if(userAccount.length() <16||userPSW.length()!=6) {
tips.setText("卡号或密码格式不正确!");
}
else {
SSLSocket socket = null;
try {
System.setProperty("javax.net.ssl.keyStore", "./cfg/client.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");
System.setProperty("javax.net.ssl.trustStore", "./cfg/server.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory
.getDefault();
socket = (SSLSocket) sslsocketfactory.createSocket(
"127.0.0.1", 8888);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String writeTo = "login\n" + userAccount + '\n' + userPSW+'\n';
String answer;
try {
send(writeTo);
answer = read(socket);
if(answer.equals("notFound")) {
tips.setText("账户不存在!");
}
else if(answer.equals("pswdError")){
tips.setText("密码错误!");
}
else if(answer.equals("success")){
Jlogin.setVisible(false);
Service(socket);
}
else {
tips.setText("未知错误!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
login.setBounds(106, 197, 204, 23);
Jlogin.add(login);
frmAtm.setContentPane(Jlogin);
}
public void Service(SSLSocket socket) {
Jservice = new JPanel();
Jservice.setBorder(new EmptyBorder(5, 5, 5, 5));
Jservice.setLayout(null);
Jservice.setVisible(true);
frmAtm.setTitle("ATM-选择服务");
JButton diposit = new JButton("\u5B58\u6B3E");
diposit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Jservice.setVisible(false);
Diposit(socket);
}
});
diposit.setFont(new Font("微软雅黑", Font.PLAIN, 13));
diposit.setBounds(157, 77, 89, 23);
Jservice.add(diposit);
JButton withdraw = new JButton("\u53D6\u6B3E");
withdraw.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Jservice.setVisible(false);
Withdraw(socket);
}
});
withdraw.setFont(new Font("微软雅黑", Font.PLAIN, 13));
withdraw.setBounds(158, 117, 89, 23);
Jservice.add(withdraw);
JButton transfer = new JButton("\u8F6C\u8D26");
transfer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Jservice.setVisible(false);
Transfer(socket);
}
});
transfer.setFont(new Font("微软雅黑", Font.PLAIN, 13));
transfer.setBounds(158, 156, 89, 23);
Jservice.add(transfer);
JLabel lblNewLabel = new JLabel("\u8BF7\u9009\u62E9\u670D\u52A1\uFF1A");
lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 13));
lblNewLabel.setBounds(157, 37, 86, 14);
Jservice.add(lblNewLabel);
JButton back = new JButton("\u8FD4\u56DE");
back.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Jservice.setVisible(false);
initialize();
}
});
back.setFont(new Font("微软雅黑", Font.PLAIN, 13));
back.setBounds(159, 200, 89, 23);
Jservice.add(back);
frmAtm.setContentPane(Jservice);
}
public void Diposit(SSLSocket socket) {
JDiposit = new JPanel();
JDiposit.setBorder(new EmptyBorder(5, 5, 5, 5));
JDiposit.setLayout(null);
JDiposit.setVisible(true);
frmAtm.setTitle("ATM-存款");
JLabel tips = new JLabel("");
tips.setHorizontalAlignment(SwingConstants.CENTER);
tips.setForeground(Color.RED);
tips.setFont(new Font("微软雅黑", Font.PLAIN, 13));
tips.setBounds(142, 70, 164, 14);
JDiposit.add(tips);
JLabel lblNewLabel = new JLabel("\u8BF7\u8F93\u5165\u5B58\u6B3E\u91D1\u989D\uFF1A");
lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 13));
lblNewLabel.setBounds(59, 123, 109, 14);
JDiposit.add(lblNewLabel);
DPamount = new JTextField();
DPamount.setFont(new Font("Tahoma", Font.PLAIN, 13));
DPamount.setBounds(175, 120, 101, 20);
JDiposit.add(DPamount);
DPamount.setColumns(10);
JButton confirm = new JButton("\u786E\u8BA4");
confirm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String amts = DPamount.getText();
amts.trim();
if(amts.length()==0) {
tips.setText("请输入�
没有合适的资源?快使用搜索试试~ 我知道了~
Java实现C/S模式的模拟ATM取款机,满分程序设计,新手必看!
共58个文件
class:39个
java:8个
jks:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 109 浏览量
2023-05-14
21:28:02
上传
评论 1
收藏 96KB ZIP 举报
温馨提示
项目介绍: 网络计算课学期项目,包括ATM机端提供的登录,存取款,转账,打印凭条功能,配套的银行业务系统和用户业务数据库等,考虑了多线程处理,服务中途出错的业务回滚处理以及安全验证问题。 语言和工具:Java,SQL,Access,WindowBuilder,UCanAccess 使用说明: ATM和Bank是两个project,重构后ATM项目src目录下只有ATM.Java是有效代码,其他只是辅助编写界面使用。 先运行Bank.java以开启服务器,然后运行ATM.java即可开启客户端并进行各项操作。 开发状态: 所有功能完成,通信加密采用SSL加密,服务器端和客户端证书互相授权。基本功能(ATM机端提供的登录,存取款,转账,打印凭条功能,配套的银行业务系统和用户业务数据库等,服务器端多线程处理,基本的安全验和网络出错处理等)均已完成,目前待完成业务回滚和完善安全验证。
资源推荐
资源详情
资源评论
收起资源包目录
ATMandBank.zip (58个子文件)
ATMandBank
Bank
.classpath 829B
.settings
org.eclipse.jdt.core.prefs 587B
src
bank
Bank.java 10KB
bin
bank
Bank$Accepter.class 5KB
Bank$1.class 5KB
Bank.class 3KB
userInfo.accdb 652KB
.project 363B
cfg
client.jks 2KB
server.jks 2KB
ATM
.classpath 295B
.settings
org.eclipse.jdt.core.prefs 587B
src
atm
Service.java 2KB
Withdraw.java 4KB
Receipt.java 1003B
dlg.java 1KB
Transfer.java 5KB
ATM.java 18KB
Diposit.java 4KB
bin
atm
Diposit$3.class 764B
Service$1.class 767B
Transfer$4.class 630B
ATM$8.class 867B
ATM$4.class 867B
dlg.class 2KB
ATM$11.class 870B
Withdraw.class 4KB
Receipt$1.class 698B
Transfer$2.class 770B
ATM$7.class 4KB
Transfer$3.class 2KB
Diposit$2.class 2KB
ATM$12.class 4KB
Withdraw$1.class 859B
ATM$9.class 4KB
Service$3.class 765B
ATM$6.class 774B
ATM$5.class 867B
ATM$10.class 873B
Diposit$1.class 854B
Withdraw$3.class 773B
Transfer$1.class 859B
Service$4.class 683B
Receipt.class 1KB
ATM$1.class 761B
Service$2.class 765B
ATM$2.class 4KB
Service.class 2KB
Withdraw$4.class 630B
Diposit.class 4KB
Diposit$4.class 624B
ATM.class 9KB
Transfer.class 4KB
ATM$3.class 869B
Withdraw$2.class 2KB
.project 362B
cfg
client.jks 2KB
server.jks 2KB
共 58 条
- 1
资源评论
振华OPPO
- 粉丝: 27w+
- 资源: 534
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功