第一篇:银行ATM机工作流程模拟编程(链表)
程序设计基础
(一)综合作业
银行ATM机工作流程模拟编程
班级学号姓名
[综合作业目的]
1、通过编程及上机调试,掌握函数、文件、结构及链表的综合应用;
2、掌握查找、排序等基本算法;
3、掌握模块化程序设计的方法。
[综合作业内容]
编程,模拟一个ATM(Automatic Teller Machine,自动取款机)的工作流程。依据帐户信息:姓名、帐号、密码、余额,完成ATM机功能:登录、显示余额、取款、修改密码。具体要求:
1、合理规划数据结构,以保存储户信息;
2、使用链表结构记录有关数据,使用链表完成相关操作;
3、使用文件记载储户信息,程序启动时加载储户信息,程序退出时保存储户信息;
4、程序工作流程:
显示登录界面:帐号:
密码:
接受用户输入。
若为非法用户,提示出错,并重新登录,3次出错后退出;
若为合法用户,则显示操作菜单,提供下述服务:
① 显示基本信息
② 修改密码
③ 查询余额
④ 存款
⑤ 取款(每次取款额度为¥5000元)
⑥ 退出
5、* 用户一次登录后的取款总数超过¥50000者,则程序自动产生一个明细记录,记载该用户的登录时间、地点(登录时间、地点假设已知,并用字符串表示)。考虑此种情况较少出现,为节省存储空间,不宜在描述储户信息的数据结构中直接分配字符数组(建议在其数据结构中添加一个指向字符串数组的指针,…);
6、提交设计文档及源代码清单。
[综合作业要求]
1、独立、按时完成综合作业;
2、进行需求分析,完成相关数据结构的规划与设计;
3、实现菜单所列功能。具体要求:
每个功能为一个独立的函数;所有的输入之前都要有提示。
4、在程序的调试中,应用所学的计算机知识,完成大批数据的输入。并列出完整、严格的测试结果(包括输入和输出);
5、提交完整的C代码及设计文档(包括设计方案、具体功能及实现、特点小结等)。1
第二篇:模拟ATM机流程
模拟ATM机流程
package com.igeekhome.demo2;
import java.util.Scanner;
//银行帐户类
public class Account { // 属性
private int id;private String name;private String pass;private double balance;private static int currentID = 1;// 记录当前的卡
// get/set public int getId(){
return this.id;}
public String getName(){
return this.name;}
public String getPass(){
return this.pass;}
public double getBalance(){
return this.balance;}
//构造函数
public Account(String name,String pass,double money){
this.name = name;
this.pass = pass;
this.balance = money;
this.id = currentID++;}
/*******业务方法*********/
//存款
public void saveMoney(){ Scanner in = new Scanner(System.in);//接收存款的金额
System.out.print(“请输入存款的金额:”);int money = in.nextInt();
//修改余额
this.balance+=money;
//给出提示
System.out.println(“存款成功,当前的余额是:”+this.balance);}
//取款
public void drawMoney(){ Scanner in = new Scanner(System.in);//接收取款的金额
System.out.print(“请输入取款的金额:”);int money = in.nextInt();//判断余额是否大于取款金额,如果满足上面的条件,则修改余额,并给出提示
if(this.balance>money){
this.balance-=money;
System.out.println(“取款成功,当前的余额是:”+this.balance);}else{//如果不满足,则给出取款 失败的动提示
System.out.println(“余额不足,取款失败”);}
}
//修改密码
public void modifyPass(){ Scanner in = new Scanner(System.in);//接收原密码
System.out.print(“请输入原密码:”);String oldPass = in.nextLine();//判断密码是否正确,如果不正确,则给出提示,结束方法
if(this.pass.equals(oldPass)==false){
System.out.println(“原密码不正确,修改密码失败”);
return;//返回,不再往下执行
}
//如果正确,则接收新密码
System.out.print(“请输入新密码:”);String newPass1 = in.nextLine();
//再次接收新密码
System.out.print(“请再次输入新密码:”);
String newPass2 = in.nextLine();
//判断两次新密码是否一致,如果一致,修改密码,给出提示
if(newPass1.equals(newPass2)){
this.pass = newPass1;
System.out.println(“修改密码成功”);
}else{ //如果不一致,给出修改密码失败提示
System.out.println(“两次新密码不一致,修改密码失败”);
}
}
}
package com.igeekhome.demo2;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
//创建一个帐户对象,进行模拟操作
Account a = new Account(“张三”,“888888”,1000);
//System.out.println(a.getId()+“,”+a.getPass());
//调用登录方法,并得到返回结果
boolean flag = Test.login(a.getId(), a.getPass());
if(flag){//如果返回值为true,才进行到主菜单进行相关的操作
Test.showMenu(a);
}
}
//进行登录操作,如果成功,则返回true,否则返回false /*
* 用户在ATM机进行操作时,可以有三次输入密码的机会,如果三次中任何一次输入正确,可以进入到主界面进行相关操作,如果三次都不正确,则输出“请与管理员联系”
*/ public static boolean login(int id,String pass){//id,pass现有卡的卡号和密码
Scanner in = new Scanner(System.in);
for(int i=1;i<=3;i++){
System.out.print(“请输入卡号:”);
String s = in.nextLine();
int curID = Integer.parseInt(s);
System.out.print(“请输入密码:”);
String curPass = in.nextLine();
//如果卡号和密码都正确,则返回 true
if(id==curID && pass.equals(curPass))
return true;
if(i<3)
System.out.println(“卡号或密码不正确,请重新输入!”);
else
System.out.println(“三次输入错误,请与管理员进行联系”);}
return false;}
//显示菜单,进行相关操作
public static void showMenu(Account a){ Scanner in = new Scanner(System.in);
System.out.println(“欢迎使用ATM取款机”);while(true){
System.out.println(“请选择:1.查询余额;2.取款;3.存款;4.修改密码;5.退出:”);
int choose = in.nextInt();//接收用户的选择
if(choose==5)
break;
switch(choose){
case 1:System.out.println(“您的余额是:”+a.getBalance());break;
case 2:a.drawMoney();break;
case 3:a.saveMoney();break;
case 4:a.modifyPass();break;
default:System.out.println(“您的输入有误,请重新输入”);break;
} }
System.out.println(“感谢您再次使用!”);} }
第三篇: 《ATM模拟银行》设计报告
《C/S项目实训》
课程设计报告
题 目: ATM模拟银行
学生姓名(学号): 代小龙(20***1)安梓玮(20***7)侯硕(20***5)
专 业: 信息管理与信息系统
班 级: 18信管(一)班
指导教师: 申晨
信息管理与工程系
2019年01月02日
基于Java的ATM模拟银行开发与设计
摘要:
自动取款机又称ATM,意思是自动柜员机,因大部分用于取款,又称自动取款机。它是一种利用磁性代码卡或智能卡实现金融交易的自助服务,代替银行柜面人员的工作。可提取现金、查询存款余额、进行账户之间资金转账、余额查询等工作;还可以进行现金存款(实时入账)、中间业务等工作。持卡人可以根据密码办理自动取款、查询余额、转账、现金存款,更改密码,缴纳手机话费等业务。我们在这次课程设计上运用了JAVA以及 SQL Server 2012进行设计。.该系统是站在用户的角度来实现取款,存款,转账,修改密码,定期存款,查询余额多个页面的实现,页面的实现满足了银行基本的业务需求,使银行工作规范化,自动化,在系统页面设计方面,我们使得系统的功能操作简单,用户体验较好。
窗体底端
关键字:ATM模拟机,用户,管理员,页面设计,JAVA,sql server,Eclipse集成开发环境下开发系统
目 录 项目简介与分工 1
1.1 项目简介 1
1.1.1 系统开发需求 1
1.1.2系统具体事务 1
1.1.3 系统开发环境要求 1
1.2 项目分工 2 项目设计方案 3 项目功能实现 4
3.1数据库的实现 4
3.2主要功能实现 5
3.2.1主界面 5
3.2.2普通用户存款界面 9
3.2.3用户转账 11
3.2.4手机缴费 16
3.2.5用户取款 19
3.2.6冻结 24
3.2.7开户 26
3.2.8销户 30项目总结及展望 33 心得体会 34
参 考 文 献 35 项目简介与分工
1.1 项目简介
本系统采用JAVA语言编写测试完成,基本上在字符界面下模拟了ATM系统的相关实现。主要模拟银行ATM机系统功能,主要有查阅、转账、取款、存款、添加用户、删除用户、修改密码、冻结用户,管理员解冻、手动手机费缴费等功能
1.1.1 系统开发需求
随着市场经济的发展,经济信息化程度的不断深入,银行的传统业务己愈来
愈不能满足银行客户的需要。同时,随着国内银行机构的大量增加,我国的银行业面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。随着信息技术对银行业的渗透和促进,银行卡业务近年来得到“迅猛发展,银行卡发卡量、交易量大幅激增,ATM设备数量也随之增加。
1.1.2系统具体事务
用户:用户存款、取款、转账、余额信息查询、修改密码、手机话费的缴费并与数据库实时同步。
管理员:对用户账号的冻结以及解冻并询问是否修改密码、开户与销户、与数据库实时同步。
1.1.3 系统开发环境要求.操作系统:Windows系统
.开发语言:Java、SQL server
.数据库:SQLServer2012
.软件:eclipse
1.2 项目分工
代小龙:管理员的开户,销户,冻结,用户明细,JDBC的连接
安梓玮:存款,转账,查询余额,电话缴费,撰写报告
侯硕:取款,用户界面美化,撰写报告 项目设计方案
实现ATM机的基本功能,包括:查询余额、存款、取款、转账、用户明细、手机缴费以及管理员开户、销户等操作,等基本功能;
查询余额:连接数据库,根据与数据库内数据相同的正确的用户名和密码登录查询对应的余额;转账,存取款的金额必须为100或者是100的整数倍,操作完成后会实时更新数据库内相应的内容。
修改密码:在旧密码相同的情况下,新密码和确认密码也相同的情况下,密码修改完成。
转账:可以转账任何金额,但是当转账金额小于余额时,转账失败。
手机缴费:需要缴费的手机号需时已经存在的,可以存任意金额。
管理员操作的基本功能包括对银行卡开户、销户、冻结、解冻、修改管理员密码等的操作,并在数据库内实时更新。项目功能实现
3.1数据库的实现
card表:主要是用户银行卡的信息,包括账号、密码、余额、是否被冻结、存款余额,其中account是varchar型的主键。
details表:主要是户主名account,日期和资金明细。
GLY表:包含所有管理员的信息。并对管理员的account设为主键。
3.2主要功能实现
3.2.1登录界面package atm_client;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import comm.Card;
import comm.CardGLY;
public class Login extends JFrame {
JTextField tfAccount;
JPasswordField tfPwd;
JButton btOK,btCancel,btGLY;
Card currCard;
CardGLY currCardGLY;
private int count=0;
public void init(){
//界面
JLabel IAccount,IPwd,Itag;
IAccount= new JLabel(”账号:“);
IPwd= new JLabel(”密码:“);
Itag=new JLabel(”欢迎登录ATM系统“);
tfAccount = new JTextField();
tfPwd =new JPasswordField();
btOK=new JButton(”普通登录“);
btGLY=new JButton(”管理员登录“);
btCancel =new JButton(”取消“);
Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20));
btGLY.setFont(new Font(”“,Font.CENTER_BASELINE, 12));
btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12));
btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12));
IAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
tfAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
tfPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
IPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
JPanel panelOne = new JPanel(null);
panelOne.setOpaque(false);
Itag.setBounds(120,15,350,30);
btOK.setBounds(40, 270, 100, 40);
btGLY.setBounds(160,270,100,40);
btCancel.setBounds(280,270,100,40);
tfAccount.setBounds(160,100,160,40);
IAccount.setBounds(90,105,80,40);
IPwd.setBounds(90, 165,80, 40);
tfPwd.setBounds(160,160,160,40);
panelOne.add(Itag);
panelOne.add(IPwd);
panelOne.add(IAccount);
panelOne.add(btCancel);
panelOne.add(btGLY);
panelOne.add(btOK);
panelOne.add(tfAccount);
panelOne.add(tfPwd);
this.add(panelOne);
this.setTitle(”精神小伙银行“);
this.setBounds(700, 250, 450, 400);
this.setVisible(true);
//监听
//普通用户登录
btOK.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
String account=tfAccount.getText();
String pwd=new String(tfPwd.getPassword());
BufferedReader br=null;
PrintWriter pw=null;
String strEcho=”“;
try {
Socket s=new Socket(InetAddress.getByName(”127.0.0.1“), 8009);
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(s.getOutputStream());
pw.write(”Loginrn“);
pw.write(account+”rn“);
pw.write(pwd+”rn“);
pw.flush();
strEcho=br.readLine();
if(strEcho.equals(”1“)){
JOptionPane.showMessageDialog(Login.this, ”对不起,您的账号有误!“);
tfAccount.setText(”“);
tfPwd.setText(”“);
}else if(strEcho.equals(”2“)){
float money =Float.parseFloat(br.readLine());
String dongjie=br.readLine();
String name=br.readLine();
currCard=new Card(account,pwd,money,dongjie,name);
JOptionPane.showMessageDialog(Login.this, ”欢迎登录河北金苑银行!“);
Login.this.dispose();
new MainFrame(br,pw,currCard).init();
}else if(strEcho.equals(”3“)){
count++;
if(count==3){
JOptionPane.showMessageDialog(Login.this, ”对不起,密码错误3次,您的卡已被冻结!请联系管理员“);
pw.write(”dongjiern“);
pw.flush();
Login.this.dispose();
}else {
JOptionPane.showMessageDialog(Login.this,”密码错误,请重新输入“);
String c=String.valueOf(count);
pw.write(c+”rn“);
pw.flush();
}
}else if(strEcho.equals(”4“)){
JOptionPane.showMessageDialog(Login.this,”对不起,您的卡已被冻结,请联系管理员“);
Login.this.dispose();
}
} catch(UnknownHostException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//管理员登录
btGLY.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
String account=tfAccount.getText();
String pwd=new String(tfPwd.getPassword());
BufferedReader br=null;
PrintWriter pw=null;
String strEcho=”“;
try {
Socket s=new Socket(InetAddress.getByName(”127.0.0.1“), 8009);
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(s.getOutputStream());
pw.write(”GLYrn“);
pw.write(account+”rn“);
pw.write(pwd+”rn“);
pw.flush();
strEcho=br.readLine();
if(strEcho.equals(”9“)){
JOptionPane.showMessageDialog(Login.this, ”对不起,您的账号有误!“);
tfAccount.setText(”“);
tfPwd.setText(”“);
}else if(strEcho.equals(”8“)){
JOptionPane.showMessageDialog(Login.this,”您已经以管理员身份登录!“);
Login.this.dispose();
new MainFrameGLY(br,pw,currCardGLY).init();
}else if(strEcho.equals(”7“)){
JOptionPane.showMessageDialog(Login.this,”您的密码错误“);
}
} catch(UnknownHostException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
btCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
Login.this.dispose();
}
});
}
public static void main(String[] args){
new Login().init();
}
}
3.2.2普通存款界面package atm_client;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
import atm_client.Take;
public class Save extends JFrame implements ActionListener{
// 存款界面按钮
JTextField tfmoney;
private JButton bt000,bt001,bt002,bt003,bt004,bt005,bt006,bt007,bt008,bt009;
private JButton bt100,bt200,bt300,bt500,bt1000;
private JButton btOK,btCancel,btRetry;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Save(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTake = new JPanel(null);
panelTake.setBackground(new Color(119,119,253));
JLabel lblqukuan = new JLabel(”请输入您的存款数:“);
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 20, 150, 30);
lblqukuan=new JLabel(”提示:只能是100元或100元的整数倍。“);
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 50, 300, 30);
tfmoney=new JTextField(12);
tfmoney.setEnabled(false);
panelTake.add(tfmoney);
tfmoney.setBounds(115,90,200,30);
bt100=new JButton(”100“);
panelTake.add(bt100);
bt100.addActionListener(this);
bt100.setBounds(45,190,60,30);
bt200=new JButton(”200“);
panelTake.add(bt200);
bt200.addActionListener(this);
bt200.setBounds(115,190,60,30);
bt300=new JButton(”300“);
panelTake.add(bt300);
bt300.addActionListener(this);
bt300.setBounds(185,190,60,30);
bt500=new JButton(”500“);
panelTake.add(bt500);
bt500.addActionListener(this);
bt500.setBounds(255,190,60,30);
bt1000=new JButton(”1000“);
panelTake.add(bt1000);
bt1000.addActionListener(this);
bt1000.setBounds(325,190,65,30);
bt001=new JButton(”1“);
panelTake.add(bt001);
bt001.addActionListener(this);
bt001.setBounds(45,230,60,30);
bt002=new JButton(”2“);
panelTake.add(bt002);
bt002.addActionListener(this);
bt002.setBounds(115,230,60,30);
bt003=new JButton(”3“);
panelTake.add(bt003);
bt003.addActionListener(this);
bt003.setBounds(185,230,60,30);
bt004=new JButton(”4“);
panelTake.add(bt004);
bt004.addActionListener(this);
bt004.setBounds(255,230,60,30);
bt005=new JButton(”5“);
panelTake.add(bt005);
bt005.addActionListener(this);
bt005.setBounds(325,230,65,30);
bt006=new JButton(”6“);
panelTake.add(bt006);
bt006.addActionListener(this);
bt006.setBounds(45,270,60,30);
bt007=new JButton(”7“);
panelTake.add(bt007);
bt007.addActionListener(this);
bt007.setBounds(115,270,60,30);
bt008=new JButton(”8“);
panelTake.add(bt008);
bt008.addActionListener(this);
bt008.setBounds(185,270,60,30);
bt009=new JButton(”9“);
panelTake.add(bt009);
bt009.addActionListener(this);
bt009.setBounds(255,270,60,30);
bt000=new JButton(”0“);
panelTake.add(bt000);
bt000.addActionListener(this);
bt000.setBounds(325,270,65,30);
btOK=new JButton(”确定“);
panelTake.add(btOK);
btOK.addActionListener(this);
btOK.setBounds(70,140,80,30);
btRetry=new JButton(”重输“);
panelTake.add(btRetry);
btRetry.addActionListener(this);
btRetry.setBounds(175,140,80,30);
btCancel=new JButton(”返回“);
panelTake.add(btCancel);
btCancel.addActionListener(this);
btCancel.setBounds(280,140,80,30);
this.setTitle(”存款!“);
this.add(panelTake);
this.setSize(435,350);
this.setVisible(true);
this.setLocation(500, 250);
}
@Override
public void actionPerformed(ActionEvent arg0){
// TODO Auto-generated method stub
if(arg0.getSource()==bt100||arg0.getSource()==bt200||arg0.getSource()==bt300||arg0.getSource()==bt500||arg0.getSource()==bt1000)
tfmoney.setText(arg0.getActionCommand());
else if(arg0.getSource()==bt000||arg0.getSource()==bt001||arg0.getSource()==bt002||arg0.getSource()==bt003||arg0.getSource()==bt004||arg0.getSource()==bt005||arg0.getSource()==bt006||arg0.getSource()==bt007||arg0.getSource()==bt008||arg0.getSource()==bt009){
tfmoney.setText(tfmoney.getText()+arg0.getActionCommand());
}else if(arg0.getSource()==btOK){
int saveMoney=Integer.parseInt(tfmoney.getText());
if(saveMoney%100!=0){
JOptionPane.showMessageDialog(Save.this, ”对不起,您输入的金额不符合规定!“);
tfmoney.setText(”“);
}
else{
//发送新的账户信息给服务器
pw.write(”savern“);
pw.write(saveMoney+”rn“);
pw.flush();
//等待响应,更新当前登录账号
String strEcho=”“;
try {
strEcho = br.readLine();
if(strEcho.equals(”Success“)){
currCard.setMoney(currCard.getMoney()+saveMoney);
JOptionPane.showMessageDialog(null, ”恭喜你成功存款“+saveMoney+”元n当前账户余额为:“+currCard.getMoney());
tfmoney.setText(”“);
} else if(strEcho.equals(”Failure“)){
JOptionPane.showMessageDialog(Save.this,”存款失败“);
}
} catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else if(arg0.getSource()==btCancel){
Save.this.dispose();
new MainFrame(br,pw,currCard).init();
}else if(arg0.getSource()==btRetry){
tfmoney.setText(”“);
}
}
}
3.2.3用户转账界面package atm_client;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
public class Trans extends JFrame {
JTextField Taccount,Tmoney;
JButton btOk,btCancel;
JLabel lAccount,lMoney;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Trans(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTrans=new JPanel(null);
panelTrans.setLayout(new GridLayout(3,2));
lAccount =new JLabel(”账户:“);
lMoney =new JLabel(”金额:“);
btOk = new JButton(”确定“);
btCancel = new JButton(”取消“);
Taccount=new JTextField();
Tmoney = new JTextField();
panelTrans.add(lAccount);
panelTrans.add(Taccount);
panelTrans.add(lMoney);
panelTrans.add(Tmoney);
panelTrans.add(btOk);
panelTrans.add(btCancel);
this.add(panelTrans);
this.setTitle(”转账!“);
this.setSize(300,160);
this.setLocation(500, 250);
this.setVisible(true);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btOk.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
if(Taccount.getText().equals(”“)){
JOptionPane.showMessageDialog(Trans.this, ”请输入账号“);
}else if(Tmoney.getText().equals(”“)){
JOptionPane.showMessageDialog(Trans.this, ”请输入金额“);
}else {
pw.write(”transrn“);
pw.write(Taccount.getText()+”rn“);
pw.write(Tmoney.getText()+”rn“);
pw.flush();
String strEcho=”“;
try {
strEcho=br.readLine();
if(strEcho.equals(”Success“)){
currCard.setMoney(currCard.getMoney()-Float.parseFloat(Tmoney.getText()));
JOptionPane.showMessageDialog(Trans.this, ”转账成功“);
}else if(strEcho.equals(”1“)){
JOptionPane.showMessageDialog(Trans.this, ”账号不存在“);
}else if(strEcho.equals(”2“)){
JOptionPane.showMessageDialog(Trans.this,”不能向自己转账“);
}else if(strEcho.equals(”3“)){
JOptionPane.showMessageDialog(Trans.this,”余额不足“);
}else if(strEcho.equals(”Fuilure“)){
JOptionPane.showMessageDialog(Trans.this,”转账失败“);
}
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
btCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
Trans.this.dispose();
}
});
}
}
3.2.4手机缴费package atm_client;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
public class Communi extends JFrame{
JTextField TNumber,Tmoney;
JButton btOk,btCancel;
JLabel INumber,lMoney;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Communi(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTrans=new JPanel(null);
panelTrans.setLayout(new GridLayout(3,2));
INumber =new JLabel(”账户:“);
lMoney =new JLabel(”金额:“);
btOk = new JButton(”确定“);
btCancel = new JButton(”取消“);
TNumber=new JTextField();
Tmoney = new JTextField();
panelTrans.add(INumber);
panelTrans.add(TNumber);
panelTrans.add(lMoney);
panelTrans.add(Tmoney);
panelTrans.add(btOk);
panelTrans.add(btCancel);
this.add(panelTrans);
this.setTitle(”手机缴费!“);
this.setSize(300,160);
this.setLocation(500, 250);
this.setVisible(true);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btOk.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
if(TNumber.getText().equals(”“)){
JOptionPane.showMessageDialog(Communi.this, ”请输入手机号“);//导入类——消息对话框
}else if(Tmoney.getText().equals(”“)){
JOptionPane.showMessageDialog(Communi.this, ”请输入金额“);
}else {
pw.write(”communirn“);
pw.write(TNumber.getText()+”rn“);
pw.write(Tmoney.getText()+”rn“);
pw.flush();
String strEcho=”“;
try {
strEcho=br.readLine();
if(strEcho.equals(”Success“)){
currCard.setMoney(currCard.getMoney()-Float.parseFloat(Tmoney.getText()));
JOptionPane.showMessageDialog(Communi.this, ”充值成功“);
Communi.this.dispose();
}else if(strEcho.equals(”1“)){
JOptionPane.showMessageDialog(Communi.this, ”手机号不存在“);
}else if(strEcho.equals(”2“)){
JOptionPane.showMessageDialog(Communi.this,”余额不足“);
}else if(strEcho.equals(”Fuilure“)){
JOptionPane.showMessageDialog(Communi.this,”充值失败“);
}
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
btCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
Communi.this.dispose();
}
});
}
}
3.2.5用户取款package atm_client;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
import atm_client.Take;
public class Take extends JFrame implements ActionListener{
// 取款界面按钮
JTextField tfmoney;
private JButton bt000,bt001,bt002,bt003,bt004,bt005,bt006,bt007,bt008,bt009;
private JButton bt100,bt200,bt300,bt500,bt1000;
private JButton btOK,btCancel,btRetry;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Take(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTake = new JPanel(null);
panelTake.setBackground(new Color(119,119,253));
JLabel lblqukuan = new JLabel(”请输入您要取的钱数:“);
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 20, 150, 30);
lblqukuan=new JLabel(”提示:只能是100元或100元的整数倍。“);
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 50, 300, 30);
tfmoney=new JTextField(12);
tfmoney.setEnabled(false);
panelTake.add(tfmoney);
tfmoney.setBounds(115,90,200,30);
bt100=new JButton(”100“);
panelTake.add(bt100);
bt100.addActionListener(this);
bt100.setBounds(45,190,60,30);
bt200=new JButton(”200“);
panelTake.add(bt200);
bt200.addActionListener(this);
bt200.setBounds(115,190,60,30);
bt300=new JButton(”300“);
panelTake.add(bt300);
bt300.addActionListener(this);
bt300.setBounds(185,190,60,30);
bt500=new JButton(”500“);
panelTake.add(bt500);
bt500.addActionListener(this);
bt500.setBounds(255,190,60,30);
bt1000=new JButton(”1000“);
panelTake.add(bt1000);
bt1000.addActionListener(this);
bt1000.setBounds(325,190,65,30);
bt001=new JButton(”1“);
panelTake.add(bt001);
bt001.addActionListener(this);
bt001.setBounds(45,230,60,30);
bt002=new JButton(”2“);
panelTake.add(bt002);
bt002.addActionListener(this);
bt002.setBounds(115,230,60,30);
bt003=new JButton(”3“);
panelTake.add(bt003);
bt003.addActionListener(this);
bt003.setBounds(185,230,60,30);
bt004=new JButton(”4“);
panelTake.add(bt004);
bt004.addActionListener(this);
bt004.setBounds(255,230,60,30);
bt005=new JButton(”5“);
panelTake.add(bt005);
bt005.addActionListener(this);
bt005.setBounds(325,230,65,30);
bt006=new JButton(”6“);
panelTake.add(bt006);
bt006.addActionListener(this);
bt006.setBounds(45,270,60,30);
bt007=new JButton(”7“);
panelTake.add(bt007);
bt007.addActionListener(this);
bt007.setBounds(115,270,60,30);
bt008=new JButton(”8“);
panelTake.add(bt008);
bt008.addActionListener(this);
bt008.setBounds(185,270,60,30);
bt009=new JButton(”9“);
panelTake.add(bt009);
bt009.addActionListener(this);
bt009.setBounds(255,270,60,30);
bt000=new JButton(”0“);
panelTake.add(bt000);
bt000.addActionListener(this);
bt000.setBounds(325,270,65,30);
btOK=new JButton(”确定“);
panelTake.add(btOK);
btOK.addActionListener(this);
btOK.setBounds(70,140,80,30);
btRetry=new JButton(”重输“);
panelTake.add(btRetry);
btRetry.addActionListener(this);
btRetry.setBounds(175,140,80,30);
btCancel=new JButton(”返回“);
panelTake.add(btCancel);
btCancel.addActionListener(this);
btCancel.setBounds(280,140,80,30);
this.setTitle(”取款!“);
this.add(panelTake);
this.setSize(435,350);
this.setVisible(true);
this.setLocation(500, 250);
}
@Override
public void actionPerformed(ActionEvent arg0){
// TODO Auto-generated method stub
if(arg0.getSource()==bt100||arg0.getSource()==bt200||arg0.getSource()==bt300||arg0.getSource()==bt500||arg0.getSource()==bt1000)
tfmoney.setText(arg0.getActionCommand());
else if(arg0.getSource()==bt000||arg0.getSource()==bt001||arg0.getSource()==bt002||arg0.getSource()==bt003||arg0.getSource()==bt004||arg0.getSource()==bt005||arg0.getSource()==bt006||arg0.getSource()==bt007||arg0.getSource()==bt008||arg0.getSource()==bt009){
tfmoney.setText(tfmoney.getText()+arg0.getActionCommand());
}else if(arg0.getSource()==btOK){
int takeMoney=Integer.parseInt(tfmoney.getText());
if(currCard.getMoney() JOptionPane.showMessageDialog(Take.this, ”对不起,您的余额不足!“); tfmoney.setText(”“); }else if(takeMoney%100!=0){ JOptionPane.showMessageDialog(Take.this, ”对不起,您输入的金额不符合规定!“); tfmoney.setText(”“); } else{ //发送新的账户信息给服务器 pw.write(”takern“); pw.write(takeMoney+”rn“); pw.flush(); //等待响应,更新当前登录账号 String strEcho=”“; try { strEcho = br.readLine(); if(strEcho.equals(”Success“)){ currCard.setMoney(currCard.getMoney()-takeMoney); JOptionPane.showMessageDialog(null, ”恭喜你成功取款“+takeMoney+”元n当前账户余额为:“+currCard.getMoney()); tfmoney.setText(”“); } else if(strEcho.equals(”Failure“)){ JOptionPane.showMessageDialog(Take.this,”取款失败“); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } }else if(arg0.getSource()==btCancel){ Take.this.dispose(); }else if(arg0.getSource()==btRetry){ tfmoney.setText(”“); } } } } 3.2.6冻结 package atm_client; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import comm.CardGLY; public class DongJie extends JFrame implements ActionListener{ JButton btOK,btCancel; JTextField Account,Name; BufferedReader br; PrintWriter pw; CardGLY currCardGLY; public DongJie(BufferedReader br,PrintWriter pw,CardGLY currCardGLY){ this.br=br; this.pw=pw; this.currCardGLY=currCardGLY; } public void init(){ JLabel IAccount,IName,Itag; IAccount =new JLabel(”账号“); IName=new JLabel(”用户名“); Itag=new JLabel(”请输入要冻结的账号及用户名“); Account =new JTextField(); Name =new JTextField(); btOK=new JButton(”确定“); btCancel=new JButton(”取消“); Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20)); btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); IAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Account.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Name.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); IName.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); JPanel panelOne = new JPanel(null); panelOne.setOpaque(false); Itag.setBounds(80,15,350,30); btOK.setBounds(80, 270, 100, 40); btCancel.setBounds(240,270,100,40); Account.setBounds(160,100,160,40); IAccount.setBounds(90,105,80,40); IName.setBounds(90, 165,80, 40); Name.setBounds(160,160,160,40); btCancel.addActionListener(this); btOK.addActionListener(this); panelOne.add(Itag); panelOne.add(IName); panelOne.add(IAccount); panelOne.add(btCancel); panelOne.add(btOK); panelOne.add(Account); panelOne.add(Name); this.add(panelOne); this.setTitle(”代小龙+安梓玮+侯硕“); this.setBounds(700, 250, 450, 400); this.setVisible(true); } @Override public void actionPerformed(ActionEvent arg0){ // TODO Auto-generated method stub if(arg0.getSource()==btOK){ if(Account.getText().equals(”“)||Name.getText().equals(”“)){ JOptionPane.showMessageDialog(DongJie.this,”用户名和账号不能为空“); }else { pw.write(”dongjiern“); pw.write(Account.getText()+”rn“); pw.write(Name.getText()+”rn“); pw.flush(); System.out.println(Name.getText()+Name.getText()); try { String strEcho=br.readLine(); if(strEcho.equals(”9“)){ JOptionPane.showMessageDialog(DongJie.this, ”账号不存在,请重新输入“); Account.setText(”“); Name.setText(”“); }else if(strEcho.equals(”7“)){ JOptionPane.showMessageDialog(DongJie.this, ”冻结成功“); DongJie.this.dispose(); new Ask(br, pw, currCardGLY).init(); }else if(strEcho.equals(”5“)){ JOptionPane.showMessageDialog(DongJie.this, ”用户名错误“); Name.setText(”“); }else if(strEcho.equals(”6“)){ JOptionPane.showMessageDialog(DongJie.this, ”您的账号已被冻结“); DongJie.this.dispose(); }else if(strEcho.equals(”8“)){ JOptionPane.showMessageDialog(DongJie.this, ”冻结失败“); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } }else if(arg0.getSource()==btCancel){ DongJie.this.dispose(); } } } package atm_client; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import comm.CardGLY; public class Open extends JFrame implements ActionListener{ JTextField tfname;//文本框 JTextField tfmoney; JPasswordField tfpwd;//密码框 JPasswordField tfpwd1; JButton btOK,btCancel; CardGLY currCardGLY; BufferedReader br; PrintWriter pw; public Open(BufferedReader br,PrintWriter pw,CardGLY currCardGLY){ this.br=br; this.pw=pw;//文本字节流写入 this.currCardGLY=currCardGLY; } //初始化 public void init(){ JLabel Iname;//标签组件 JLabel Imoney; JLabel Ipwd,Ipwd1; JLabel Itag=new JLabel(”请输入要开户用户的基本信息“); Ipwd=new JLabel(”密码:“); Ipwd1=new JLabel(”确认密码“); Iname=new JLabel(”姓名:“); Imoney=new JLabel(”预存金额“); tfname=new JTextField(); tfmoney=new JTextField(); btOK=new JButton(”确定“); btCancel=new JButton(”取消“); tfpwd=new JPasswordField(); tfpwd1=new JPasswordField(); Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20)); Iname.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfmoney.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfname.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfpwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfpwd1.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Ipwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Ipwd1.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Imoney.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); JPanel panelOne = new JPanel(null); panelOne.setOpaque(false);//设置控件透明 Itag.setBounds(80,15,350,30); Iname.setBounds(70,85,80,40); tfname.setBounds(200,80,160,40); Ipwd.setBounds(70, 135, 80, 40); tfpwd.setBounds(200, 130, 160, 40); Ipwd1.setBounds(70, 185,80, 40); tfpwd1.setBounds(200, 180, 160, 40); Imoney.setBounds(70, 235, 80, 40); tfmoney.setBounds(200, 230, 160, 40); btOK.setBounds(80, 280, 100, 40); btCancel.setBounds(240,280,100,40); btOK.addActionListener(this); btCancel.addActionListener(this); panelOne.add(Itag); panelOne.add(Iname); panelOne.add(Ipwd); panelOne.add(Ipwd1); panelOne.add(Imoney); panelOne.add(tfname); panelOne.add(tfpwd); panelOne.add(tfpwd1); panelOne.add(tfmoney); panelOne.add(btCancel); panelOne.add(btOK); this.add(panelOne); this.setTitle(”代小龙+安梓玮+侯硕“); this.setBounds(700, 250, 450, 400); this.setVisible(true); } //监听button.@Override //socket编程,client发出消息,在Server中接收,并且在接收时采用readline()方法时需要注意,//readline()方法要读到分隔符才会完成读取操作,用pw.write,或者pw.println public void actionPerformed(ActionEvent arg0){ // TODO Auto-generated method stub if(arg0.getSource()==btOK){ //如果事件源始按钮OK,则进行下面操作 if(tfname.getText().equals(”“)||tfpwd.getText().equals(”“)||tfpwd.getText().equals(”“)){ JOptionPane.showMessageDialog(Open.this,”账号密码不能为空“);//导入类——消息对话框 }else if(!tfpwd.getText().equals(tfpwd1.getText())){ JOptionPane.showMessageDialog(Open.this,”两次输入的密码不相同“); tfpwd.setText(”“); tfpwd1.setText(”“); }else if(tfmoney.getText().equals(”“)){ JOptionPane.showMessageDialog(Open.this,”若不需要存钱,请输入0“); }else if(tfpwd.getText().equals(tfpwd1.getText())&&!tfname.getText().equals(”“)&&!tfmoney.getText().equals(”“)){ pw.write(”openrn“);//在服务器获取输入流写入一段字符 pw.write(tfname.getText()+”rn“); pw.write(tfpwd.getText()+”rn“); pw.write(tfmoney.getText()+”rn“); pw.flush(); try { String strEcho=br.readLine(); if(strEcho.equals(”1“)){ JOptionPane.showMessageDialog(Open.this,”开户失败!有用户名重复的可能!“); }else if(strEcho.equals(”2“)){ String account=br.readLine(); JOptionPane.showMessageDialog(Open.this,”开户成功!您的账号为“+account+”,请牢记您的账号“); Open.this.dispose(); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } }else if(arg0.getSource()==btCancel){ Open.this.dispose(); } } } package atm_client; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import comm.CardGLY; public class Close extends JFrame implements ActionListener { BufferedReader br; PrintWriter pw; CardGLY currCardGLY; private JButton btOK,btCancel; private JTextField tfAccount; private JPasswordField tfPwd; public Close(BufferedReader br,PrintWriter pw,CardGLY currCardGLY){ this.br=br; this.pw=pw; this.currCardGLY=currCardGLY; } public void init(){ JLabel IAccount,IPwd,Itag; IAccount= new JLabel(”账号:“); IPwd= new JLabel(”密码:“); Itag=new JLabel(”请输入要销户的账号及密码“); tfAccount=new JTextField(); tfPwd=new JPasswordField(); btOK=new JButton(”确定“); btCancel=new JButton(”取消“); Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20)); btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); IAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); IPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); JPanel panelOne = new JPanel(null); panelOne.setOpaque(false); Itag.setBounds(120,15,350,30); btOK.setBounds(80, 270, 100, 40); btCancel.setBounds(240,270,100,40); tfAccount.setBounds(160,100,160,40); IAccount.setBounds(90,105,80,40); IPwd.setBounds(90, 165,80, 40); tfPwd.setBounds(160,160,160,40); btCancel.addActionListener(this); btOK.addActionListener(this); panelOne.add(Itag); panelOne.add(IPwd); panelOne.add(IAccount); panelOne.add(btCancel); panelOne.add(btOK); panelOne.add(tfAccount); panelOne.add(tfPwd); this.add(panelOne); this.setTitle(”代小龙+安梓玮+侯硕“); this.setBounds(700, 250, 450, 400); this.setVisible(true); } @Override public void actionPerformed(ActionEvent arg0){ // TODO Auto-generated method stub if(arg0.getSource()==btOK){ String account=tfAccount.getText(); String pwd=new String(tfPwd.getPassword()); pw.write(”closern“); pw.write(account+”rn“); pw.write(pwd+”rn“); pw.flush(); String strEcho; try { strEcho=br.readLine(); if(strEcho.equals(”7“)){ JOptionPane.showMessageDialog(Close.this, ”销户成功“); }else if(strEcho.equals(”9“)){ JOptionPane.showMessageDialog(Close.this, ”您输入的账号不存在“); tfAccount.setText(”“); tfPwd.setText(”“); }else if(strEcho.equals(”8“)){ JOptionPane.showMessageDialog(Close.this, ”销户失败“); }else if(strEcho.equals(”6“)){ JOptionPane.showMessageDialog(Close.this, ”您的密码错误“); tfPwd.setText(”"); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } }else if(arg0.getSource()==btCancel){ Close.this.dispose(); } } }项目总结及展望 本次课程设计主要做的是模拟ATM机,在实现传统的ATM机基础功能的情况下,我们还增添新的内容,用户明细以及话费缴费。实现了普通用户与管理员登录。管理员对用户账号的冻结,解冻。连接数据库并实时更新。将普通用户和管理员的信息分别放在两个表中。 在实现过程中,由于考虑和实现不充分,表的结构过于简单。在实现话费充值上号码预存实现的不人性化,我们后续会加以完善。在接下来的学习中,我们想更加完善ATM功能,并增加新的特色,完善界面。心得体会 通过这次的c/s程序设计,从了解用户需求,到设计数据库,编写代码,连接数据库,调试程序,实现功能我们都得到了很大的进步,我们遇到过很多Bug,我们请教别人,上网查询,最终可以说是得到解决,把老师在课上所授的知识应用到实践中去。c/s程序设计中,是java与连接数据库的统一。为了防止开户生成的账号重复,我们在数据库中对相应的表设置主键,以免重复,在明细中,我们修复了很多问题,克服了很多困难,最终得以实现,感谢申晨老师的帮助,让我们更加深入了解Java语言设计并应用到实践中去。感受到了Java语言编程的魅力,在接下来的时间中,我们不会停止对Java网络项目编程的探索和学习。 参 考 文 献 [1] Eric.Java编程思想[M].第4版.机械工业出版社, 机械工业出版社 [2] JAVA从入门到精通[M].北京:清华大学出版社, 2005.4 [3]萨师煊,王珊.《数据库系统概论》.高等教育出版社,2002.2 [4] Brown.JAVA编程指南(第二版)[M].电子工业出版社,2003.3 [5] 清宏计算机工作室.JAVA编程技巧[M].机械工业出版社,2004.5 [6] 耿祥义,张跃平.JAVA实用教程[M].清华大学出版社,2003.5.1 值机日常工作流程 一、准备工作 1核对航班机型、飞机号、到达站; 2准备行李牌、VIP行李牌、头等舱行李牌及标贴; 3清理工作台面,检查电脑、磅秤、和行李转盘,登机牌数量; 二、办理值机手续 1、输入离港系统工作号; 2、检查离港系统中航班的飞机号、座位布局; 3、值机查验:旅客证件、客票、客票姓名与证件姓名; 如行李超重则应收取逾重行李费; 询问旅客是否购买托运行李保险,填写保险单,收取相应的保险费;检查行李牌上的目的地是否正确,并正确栓挂在旅客的托运行李上;将旅客的行李票粘贴或附在旅客客票的空白处;如旅客的托运行李包装不符和要求或有破损,以及所托运行李为易碎易损物品,应填写免责行李牌,请旅客签名,并将免责行李牌号抄于旅客乘机联背面空白处,在此托运行李上拴挂免责行李牌;VIP旅客及公务舱、头等舱旅客的托运行李则应拴挂相应的行李牌 如旅客行李上有旧的行李牌,应予以清除; 在离港系统中提取旅客姓名,如旅客有托运行李,还应输入行李件数、重量,接受旅客,在规定范围内,尽量按旅客要求安排座位,并打印登机牌;头等舱旅客及公务舱旅客应填写相应的休息牌交给旅客,并通知中转柜台; 在旅客客票乘机联及旅客联相应栏目复写旅客接收的离港序号、座位号,正确、完整的撕下客票的乘机联 ;将旅客的证件、客票未使用的乘机联、客票旅客联、行李票及旅客的登机牌唱交旅客;如旅客有行李托运,则应请旅客在行李通过安检机后再离开;如在办理过程中遇特殊情况应及时上报;航班预计起飞时间前30分钟停止办理乘机手续;并初始关闭(CI)航班;严格控制在航班离港时间前25分钟截止办理乘机手续,如仍有较多旅客未办理乘机手续,及时报带班主任安排人员接替;如航班延误,须增加柜台开放时间; 三、报载 将该航班所有乘机联集中清点,并与离港系统中的人数、行李件数、行李重量相核对,用对讲机与行李房核对行李件数;(如货运收运了团队行李,应将件数和重量通知该航班值机员,值机员应及时将行李件数、重量加入离港电脑中,以便配载员配载以及核对) 正常航班预计起飞前25分钟,至迟应于20分钟前、不正常航班在航班飞机落地时间向结算室报载; 填写《出港航班业务交接单》; 做好送航班的准备工作,带齐乘机联、对讲机、该航班行李牌和《出港业务交接单》到结算室; 将《出港航班业务交接单》交结算控制员签字; 四、送飞机 了解飞机停机位,核对飞机号,领取该航班舱单、业务袋及随机业务文件,送飞机;不正常航班在航班飞机到达旅客下完前到达飞机上,观查是否能上客,如能上客,及时通知上客; 在舱门口检查登机旅客有无携带超大行李,如有说服旅客将行李交运,在行李上拴挂行李牌后,将行李交行李房人员送入货舱后,将行李票交给旅客; 将舱单交给机长签字,业务袋交给乘务长,并请乘务长在《出港航班业务交接单》上签名; 与结算和第二验票口核对人数,待旅客到齐后用对讲机通知结算;如有旅客未登机,查找出旅客姓名后,用对讲机通知结算室广播,并将该旅客乘机联找出,查看该旅客是否有托运行李,如未到旅客有托运行李,将行李号报给行李房人员将行李找出;若旅客在离港时间前三分钟仍未找到,请示结算室是否将未到旅客及其行李拉下,结算同意后用对讲机通知行李房将该行李拉下,减去未到旅客后与结算和第二验票口重新核对旅客人数,通知机组减人后确切人数(及货邮行的增减)并在舱单上做相应的修改,人数到齐后通知结算; 经结算同意后方可放飞机; 将签过字的舱单和交接单送回结算室; 五、回到值机室后,清理值机柜台,收回补加乘机联,(如有未登机旅客,将未登机旅客乘机联交给中转柜台),根据实际乘机联做帐,并做好记录工作。 住院部药房摆药机工作流程 一、摆药机开关机管理(工作时间为早8:00—晚24:0) 1、开机:当日负责摆药的药师启动摆药机 ① 打开设备前方的主电源开关; ② 打开电脑电源开关(注意加热辊温度需达到70℃); ③ 打开药房管理和摆药机程序,并检查连接是否正常; ④ 摆药机在没有进行开机检查前不得进行摆药工作。 2、关机:夜班药师准时关闭摆药机 ① 点击屏幕右上角“关闭”按钮或右下角“退出”按钮,关闭程序; ② 点击桌面开始菜单退出系统; ③ 打开主机舱柜将电脑电源开关向左拧至“off”位置; ④ 再将主电源开关向左拧至“off”位置。 二、摆药机运行管理 1、摆药机操作人员应熟悉《摆药机操作手册》内容,并严格按照该手册要求使用摆药机,未经培训的人员不得私自操作摆药机。 2、操作流程 ① 设备接收到医嘱单后自动进行配药工作,如果未自动配药,请点击“填充”按钮; ② 如果有需要STS托盘配药的医嘱,设备会自动识别并在触摸屏提示,此时打开STS托盘; ③ STS托盘打开后,根据打印出来的配药单进行STS托盘手工配药(药师首先进行手部消毒); ④ 手工配药结束后,重新核对清单的药品信息确保药品摆放的正确性,关闭STS托盘。⑤ STS托盘收回后设备将自动继续摆药工作; ⑥ 摆药中有的药盒药品用量多,会出项提示缺药,找出相应的药盒进行药品填充,放回原位后,点击触摸屏显示屏上“重试”选项; ⑦ 当整个配药工作完成后,检查药包打印信息和装药情况是否正确。 3、常见问题 ① 摆药机运行过程中出现一些常见问题,操作人员应及时处理并详细记录、跟踪处理,填写《摆药机使用情况登记本》,签名确认后留存备查。② 需要其他部门协同解决的问题上报科室,由专业人员负责维修,个人不得随意拆卸维修摆药机。 三、药盒的管理 1、当日负责摆药的药师在摆药机使用前检查药盒中药品数量,对于不足的应及时进行补充,并仔细核对药名、规格、剂型、厂家,不得将不匹配的药品加入摆药机药盒,补充完毕后双人核对可装回摆药机,并有摆药机拆零记录,备查。 2、填充药品时,为了保证药品质量,填药量不宜过多,够当日用即可,药品距离药盒顶端不小于1cm。 四、摆药机的耗材管理 1、当日负责摆药的药师在包装袋用尽后和墨带一并更换,在进行更换时,严格按照摆药机上面的标示图进行更换,非摆药机操作人员不得进行此项工作。 2、摆药人员应随时关注耗材使用情况,需要请领时,及时上报药房负责人,由药房负责人请领并留存耗材出库单。 五、摆药机的日常维护 1、严禁私自移动摆药机,以免出现数据紊乱或硬件损坏的现象。 2、每日在摆药工作结束后,做好摆药机的清洁工作。 3、摆药机应由工程师每6个月对机器内部零件进行一次全面维护检查。 六、摆药机的清洁制度 摆药机各部位清洁时间严格按照以下时间执行,清洁时使用无毛屑脱落的专用抹布喷淋95%酒精擦拭,并填写清洁记录。 1、每日检查清洁项目:末端药斗的清洁;加热辊的清洁。(当日摆药药师) 2、每周清洁项目:配药罐的清洁;内部药柜药斗的清洁;STS托盘的清洁。(当日摆药药师) 3、每两周清洁项目:双挡板的清洁;主药斗的清洁;STS药斗的清洁。(当日摆药药师) 4、每半年清洁项目:前端药柜的清洁;内部药柜的清洁(厂家工程师负责)第四篇:航班值机工作流程(右3)
第五篇:住院部药房摆药机工作流程