ATM柜员机模拟系统-代码
ATM模拟系统代码

#include<stdio.h>#include<stdlib.h>struct time{int year,month,day;float hour,minute,second;char place[50];};struct person{int action;struct time*time;struct person*next;};struct st{ char name[9];int number;int password;int money;struct person*go;struct st*next;};void create(struct st ** head);struct st *check(struct st * head,int a ,int b);void mean ();void display(struct st *p);void revise (struct st *p);void reserch (struct st *p);void save (struct st *p);void take (struct st *p);void main (){int select=1,i=0,a,b;struct st *head=NULL,*p;create(&head);printf("\n\n\n\n\n\n\n\t\t欢迎使用本系统\n\n\t\t帐号:\n\t\t密码:");while(i<3){scanf("%d%d",&a,&b);p=check(head,a,b);if(!p){printf(i<2?"\t\t信息错误,请重新输入\n":"\t\t您无权使用本系统\n");i++;}else break;}if(i==3)exit(0);while(select!=6){ mean();printf("\t\t请选择服务:");scanf("%d",&select);switch(select){case 1:display(p);break;case 2:revise(p);break;case 3:reserch(p);break;case 4:save(p);break;case 5:take(p);break;case 6:printf("\n\t\t谢谢使用\n");break;}}}void create(struct st * *head){struct st *p;FILE *fp;fp=fopen("E:\\取款机.txt","r");while(!feof(fp)){p=(struct st * )malloc(sizeof(struct st));fscanf(fp,"%s",p->name);fscanf(fp,"%d",&p->number);fscanf(fp,"%d",&p->password);fscanf(fp,"%d",&p->money);p->next=*head;*head=p;} }struct st *check(struct st * head,int a ,int b){struct st *p;p=head;while(p){if(p->number==a&&p->password==b)return p;else p=p->next;}return NULL;}void mean (){printf("\n\t\t1: 显示所有信息\n");printf("\t\t2: 修改信息\n");printf("\t\t3: 查看信息\n");printf("\t\t4: 存款\n");printf("\t\t5: 取款\n");printf("\t\t6: 退出系统\n");}void display(struct st *p){printf("\t\t户主:%s\n",p->name);printf("\t\t账号:%d\n",p->number);printf("\t\t余额:%d\n",p->money);}void revise (struct st *p){printf("\t\t旧密码:%d\n",p->password);printf("\t\t请输入新密码:");scanf("%d",&p->password);printf("\t\t当前密码:%d",p->password);}void reserch (struct st *p){printf("\t\t余额: %d\n",p->money);}void save (struct st *p){ int a;printf("\t\t请输入存款金额:");scanf("%d",&a);p->money+=a;}void take (struct st * p){ int a,s=0,b;struct person*mm, *ma;FILE *fp;fp=fopen("E:\\11.txt","r");mm=(struct person*)malloc(sizeof(struct person));p->go=mm;mm->next=NULL;printf("\t\t请输入取款金额:");scanf("%d",&a);while(a<5000){if(p->money>=a){p->money-=a;s+=a;mm->action=a;if(s>50000){fscanf(fp,"%d%d%d",p->go->time->year,p->go->time->month,p->g o->time->day);fscanf(fp,"%f%f%f",p->go->time->hour,p->go->time->minute,p->g o->time->second);fscanf(fp,"%s",p->go->time->place);fclose(fp);}ma=(struct person*)malloc(sizeof(struct person));ma->next=NULL;mm-ma;printf("\n\t\t继续1 返回0 :");scanf("%d",&b);if(b==1){printf("\t\t请输入取款金额:");scanf("%d",&a);}else if(!b)break;elseprintf("\n\t\t输入有误");}else{printf("\t\t对不起,余额不足%d!\n",a);break;}}printf("\n\t\t对不起,每次取款不能超过5000\n");}。
java课程设计ATM柜员机模拟程序

数据库连接:使用JDBC连接 数据库,进行数据查询
查询语句:编写SQL查询语句, 根据用户输入进行查询
结果展示:将查询结果以列表 或表格形式展示给用户
05
AT M 柜 员 机 的 数 据 库 设计
数据库表结构设计
用户表:存储用户信息,包括用户名、密码、余额等 交易表:记录用户的交易信息,包括交易时间、交易金额、交易类型等 账户表:存储账户信息,包括账户编号、账户类型、账户余额等 银行信息表:存储银行信息,包括银行名称、银行地址、银行电话等 系统日志表:记录系统操作日志,包括操作时间、操作人、操作内容等
网络中断等
性能测试与优化
测试方法:压力测 试、负载测试、稳 定性测试等
测试工具: JMeter、 LoadRunner等
优化目标:提高系 统响应速度、减少 资源消耗、提高系 统稳定性等
优化方法:代码优 化、数据库优化、 缓存优化等
调试过程与问题解决
测试环境搭建:安装Java开发环境,配置 数据库,安装模拟器等
06
AT M 柜 员 机 的 测试与调试
01 添加章节标题
02
AT M 柜 员 机 模 拟 程 序 概述
AT M 柜 员 机 的 基 本 功 能
存 款 : 用 户 可 以 将 现 金 存 入 AT M 柜 员 机 , 系统会自动识别并记录存款金额
转 账 : 用 户 可 以 通 过 AT M 柜 员 机 进 行 转 账操作,系统会自动记录转账信息
异地备份:将 备份数据存储 在异地,防止 自然灾害等意 外情况导致的
数据丢失
访问控制:设 置严格的访问 控制策略,防 止未授权访问
安全审计:定 期进行安全审 计,及时发现 并修复安全漏
模拟ATM代码

package com.lovo.atm;import java.util.Scanner;public class A TM {private int cash = 50000;private final int MAX_CASH = 100000;private User theUser;public void run(){this.welcome();this.initData();boolean flag = this.login();if(flag){while(true){int choice = this.choice();switch(choice){case 1:this.queryMoney();break;case 2:this.saveMoney();break;case 3:this.getMoney();break;case 4:this.changPwd();break;case 5:this.exit();break;default:System.out.println("没有该功能,请重新选择!");break;}}}else{System.out.println("对不起,三次登陆失败!你的卡被没收!");}}private void welcome(){System.out.println("*************************************");System.out.println("* *");System.out.println("* 欢迎使用A TM系统*");System.out.println("* *");System.out.println("* *");System.out.println("* *");System.out.println("*************************************");}private void initData(){this.theUser = new User();this.theUser.setUsername("t90");this.theUser.setPassword("123456");this.theUser.setAccount(10000);}private boolean login(){Scanner scan = new Scanner(System.in);int num = 0;do{System.out.println("请输入您的用户名:");String inputName = scan.next();System.out.println("请输入您的密码:");String inputPwd = scan.next();if(inputName.equals(this.theUser.getUsername()) &&inputPwd.equals(this.theUser.getPassword())){System.out.println("登陆成功!欢迎您," + inputName);return true;}else{System.out.println("用户名密码有误,请查证!");}num++;}while(num < 3);return false;}private int choice(){Scanner scan = new Scanner(System.in);System.out.println("*************************************");System.out.println("* 1.查询余额*");System.out.println("* 2.存款*");System.out.println("* 3.取款*");System.out.println("* 4.修改密码*");System.out.println("* 5.退出*");System.out.println("*************************************");return scan.nextInt();}private void queryMoney(){}private void saveMoney(){}private void getMoney(){}private void changPwd(){}private void exit(){}}package com.lovo.atm;public class User {private String username;private String password;private int account;public int getAccount() {return account;}public void setAccount(int account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}public String getUsername() {return username;}public void setUsername(String username) { ername = username;}}。
模拟ATM程序代码

if(p)
{
while(t<3)
{
i=0;
printf("\n\t密码: ");
while((ch=getch())!='\r')
{
pass[i++]=ch;
putchar('*');
}
pass[i]='\0';
if(strcmp(p->password,pass)==0)
p=head;
system("cls");
if(p)
{
printf("\n");
printf("\n\t账号: ");
scanf("%s",acc);
while(p)
{
if(strcmp(p->account,acc)==0)
break;
else p=p->next;
}
while(t<3)
{
i=0;
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
{
system("cls");
printf("\n\t杰西银行ATM自动存取款机用户登录成功\n");
ATM自助取款机系统java代码(大全)

ATM自助取款机系统java代码(大全)第一篇:ATM自助取款机系统java代码(大全)public void actionPerformed(ActionEvent e)//界面显示控制 {String IC_Number=“";String password=”“;String IC_No=”“;z30.setVisible(false);floatleftmoney=0;floatmoneys=0;float mon=0;float money1=0;float money2=0;if(true){int No_50=0,No_100=0;String strin=”select NO_50,NO_100 from ATM ATM_ID='123456789'“;ResultSetrsSQLSelect=executeQuery(stri n);try{ if(rsSQLSelect.next()){No_50=Integer.parseInt(rsSQLSelect.getString(”NO_50“));No_100=Integer.parseInt(rsSQLSelect.getString(”NO_100“));where}}catch(Exception er){System.out.println(”查询ATM机信息出错!“);}if(No_50==0&&No_100==0){z1.setVisible(false);t1.setText(”对不起,本ATM自动取款机暂停服务!“);cl.show(c,”1“);}}cl.show(c,”1“);if(e.getSource()==z1){t3.setText(”“);text1.setText(”“);cl.show(c,”2“);}if(e.getSource()==z4||e.getSource()==z6||e.getSource()==z1 1||e.getSource()==z16||e.getSource()==z18||e.getSource()==z22) { closeDBConnectio n();cl.show(c,”1“);}if(e.getSource()==z2){ closeDBConnection();System.exit(0);}if(e.getSource()==z3){ IC_Number=text1.getText().trim();if(getname(IC_Number)){z5.setVisible(true);pw1.setVisible(true);t4.setVisible(true);pw1.setText(”“);t5.setText(”“);cl.show(c,”3“);}else{t3.setText(”您输入的卡号不存在,请重新输入!“);cl.show(c,”2“);}}if(e.getSource()==z5){password=pw1.getText().trim();IC_Number=text1.getText().tr im();if(!login(IC_Number,password)){t5.setText(”您输入的密码错误,请重新输入!“);pw1.setText(”“);n--;cl.show(c,”3“);}else{t5.setText(”“);cl.show(c,”4“);}if(n<0){n=2;t5.setText(”您已经三次输入错误密码,谢谢您的使用,欢迎下次光临!“);z5.setVisible(false);pw1.setVisible(false);t4.setVisible(false);cl.show(c,”3“);}}if(e.getSource()==z7){t33.setText(”“);cl.show(c,”5“);}if(e.getSource()==z8)//余额查询 { DBAccess d=new DBAccess();String str3=”“;String stri=”“;IC_Number=text1.getText().trim();t29.setText(IC_Number);leftmoney=getmoney(IC_Number);t30.setText(Float.toString(leftmoney));stri=”selectbank_name from IC,bank where IC.bank_NO=bank.bank_NO and IC_ID='“+IC_Number+”'“;ResultSetrsSQLSelect=d.executeQu ery(stri);try{if(rsSQLSelect.next()){str3=rsSQLSelect.getString(”bank_name“);//mit();}} catch(Exception er){}t32.setText(str3);cl.show(c,”10“);}if(e.getSource()==z9){t23.setText(”“);cl.show(c,”9“);}if(e.getSource()==z10){t28.setText(”“);cl.show(c,”11“);}if(e.getSource()==z12){ DBAccess d=new DBAccess();IC_Number=text1.getText().trim();fetchmoney=Integ er.parseInt(text2.getText());if(fetchmoney<=0){t9.setText(”取款金额非法!请重新输入!“);text2.setText(”“);cl.show(c,”6“);return;}if(fetchmoney>1000){t9.setText(”每次交易金额最大为1000元!“);text2.setText(”“);cl.show(c,”6“);return;}if(fetchmoney%50!=0){t9.setText(”取款金额只能为50的倍数!“);text2.setText(”“);cl.show(c,”6“);return;} leftmoney=getmoney(IC_Number);if(fetchmoney>leftmoney){t9.setText(”您的余额不足,请重新输入取款金额!“);text2.setText(”“);cl.show(c,”6“);return;}int No_50=0,No_100=0,x_50=0,x_100=0,mo=0;String str1=”select NO_50,NO_100 from ATM where ATM_ID='123456789'“;ResultSetrsSQLSelect=d.executeQuery(s tr1);try{ if(rsSQLSelect.next()){No_50=Integer.parseInt(rsSQLSelect.getString(”NO_50“));No_100=Integer.parseIn t(rsSQLSelect.getString(”NO_100“));}}catch(Exception er){System.out.println(”查询ATM机信息出错!“);}x_100=fetchmoney/100;if(No_100{ mo=fetchmoney-No_100*100;x_50=mo/50;if(x_50>No_50){t9.setText(”取款机现钞不足!“);text2.setText(”“);cl.show(c,”6“);return;}else{No_50=No_50-x_50;No_100=0;}}else{No_100=No_100-x_100;x_50=(fetchmoney-x_100*100)/50;if(x_50>No_50){t9.setText(”取款机50面值现钞不足!“);text2.setText(”“);cl.show(c,”6“);return;}else{No_50=No_50-x_50;}}String str2=”update ATM set NO_50=“+No_50+” where ATM_ID='“+ATM_id+”'“;String str3=”update ATM set NO_100=“+No_100+” whereATM_ID='“+ATM_id+”'“;d.executeUpdate(str2);d.executeUpd ate(str3);setmoney(fetchmoney,IC_Number);t12.setText(Float.toString(fetchmoney));cl.show(c,”7“);text2.setText(”");第二篇:ATM取款机java课程设计黄淮学院JAVA 课程设计报告题目:《ATM柜员机》课程设计学院:信息工程学院专业:计算机科学与技术指导老师:二0一三年六月目录课程设计过程概述.......................................................................................3 2 课程设计题目描述和基本设计要求...........................................................3 3 系统需求分析...............................................................................................3 3.1 功能需求分析···················································································· 3 3.2 其他需求分析.................................................................................... 4 4 系统设计........................................................................................................4 4.1 总体设计........................................................................................... 4 4.2 ATM柜员机界面设计......................................................................... 5 4.3 各功能模块设计.. (7)4.3.1 登陆页面模块设计............................................................. 7 4.3.2 选择服务模块设计............................................................. 8 4.3.3 取款模块设计..................................................................... 9 4.3.4 修改密码模块设计............................................................. 9 4.3.5 退卡模块设计. (10)4.4 异常处理情况说明.......................................................................... 10 5 系统实现与测试.........................................................................................11 6 课程设计总结.............................................................................................13 6.1 遇到的问题及解决办法.................................................................. 13 6.2 心得体会......................................................................................... 14 参考文献..........................................................................................................15 附录 (15)ATM初始账号:000000初始密码:123456ATM柜员机课程设计过程概述2013年6月,JAVA课程设计在1#楼六楼机房进行,持续时间为两周。
ATM柜员机模拟系统_代码

Win.javaimport java.awt.*;import javax.swing.*;import java.awt.event.*;import java.sql.*;public class Win extends JFrame implements ActionListener { JTextField text[]=new JTextField[6];JTextArea show=new JTextArea(9,30);JTable table;//标签JButton insert,update,select,delete,C,Q;Win() {setLayout(new FlowLayout());for(int i=0;i<5;i++) {text[i]=new JTextField(10);}add(new JLabel("卡号:"));add(text[0]);add(new JLabel(":"));add(text[1]);add(new JLabel("密码:"));add(text[2]);add(new JLabel("余额:"));add(text[3]);add(new JLabel("序号:"));add(text[4]);C=new JButton("存款");C.addActionListener(this);add(C);Q=new JButton("取款");Q.addActionListener(this);add(Q);update=new JButton("修改密码");update.addActionListener(this);add(update);insert=new JButton("添加新用户");insert.addActionListener(this);add(insert);select=new JButton("查询用户信息");select.addActionListener(this);add(select);delete=new JButton("删除用户信息");delete.addActionListener(this);add(delete);add(new JScrollPane(show));add(new JLabel("提示:1.每次取款金额为100的倍数,总额不能超过5000元,支取金额不允许透支"));add(new JLabel("2.存款金额不能为负存款"));add(new JLabel("3.新密码长度不小于6位,不允许出现6位完全相同的情况"));setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {Operation modify=new Operation();modify.setDatasourceName("XX");if(e.getSource()==insert){modify.setSQL("INSERT INTO XX VALUES('"+text[4].getText()+"','"+text[0].getText()+"','"+text[1].getText()+"','"+tex t[2].getText()+"','"+text[3].getText()+"')");String backMess=modify.modifyRecord();show.append("添加新用户"+backMess);}else if(e.getSource()==C){Connection con=null;Statement sql;ResultSet rs = null;try{double n=2000;con=DriverManager.getConnection("jdbc:odbc:XX","","");con.setAutoCommit(false);sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM XX WHERE 卡号='123456'");//查询rs.next();double money=rs.getDouble(5);System.out.println("操作前用户的余额:"+money);double money1=money+n; //存款sql.executeUpdate("UPDATE XX SET 余额=+'"+money1+"' WHERE 卡号='123456'"); //存款后更新余额mit();con.setAutoCommit(true); //提交事务结果到数据库sql=con.createStatement(); //创建数据库操作对象}catch(SQLException e1){ try{ con.rollback(); } //如果操作失败则结束事务catch(SQLException exp){}System.out.println(""+e);}}else if(e.getSource()==Q){ Connection con=null;Statement sql;ResultSet rs = null;try{double n=5000;con=DriverManager.getConnection("jdbc:odbc:XX","","");con.setAutoCommit(false);sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM XX WHERE 卡号='123456'");rs.next();double money=rs.getDouble(5);System.out.println("操作前用户的余额:"+money);double money2=money-n; //取款sql.executeUpdate("UPDATE XX SET 余额=+'"+money2+"' WHERE 卡号='123456'"); //取款后更新余额mit();con.setAutoCommit(true);sql=con.createStatement();}catch(SQLException e1){ try{ con.rollback(); }catch(SQLException exp){}System.out.println(""+e);}}else if(e.getSource()==update){modify.setSQL("UPDATE XX SET XX.密码 =+'"+text[2].getText()+"' WHERE (((XX.卡号)=+'"+text[0].getText()+"'));");String backMess=modify.modifyRecord();show.append("修改密码"+backMess);}else if(e.getSource()==delete){modify.setSQL("DELETE * FROM XX WHERE (((XX.卡号)=+'"+text[0].getText()+"'));");String backMess=modify.modifyRecord();show.append("删除用户信息"+backMess);}else if(e.getSource()==select){Query query =new Query();query.setDatasoureName("XX");query.setTableName("XX");Object a[][]=query.getRecord();String b[]={"序号","卡号","","密码","余额"};table=new JTable(a,b);JFrame frame=new JFrame();frame.add(new JScrollPane(table));frame.setVisible(true);frame.setBounds(400,400,600,200);}}public void setBounds(int i, int j, int k, int l) {}}Operation.javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class Operation{String datasourceName=""; //数据源名称String SQL,message=""; //表名public Operation() //增删改的主代码{try{ Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver"); } //操作数据源catch(Exception e){}}public void setSQL(String SQL) //建立一个新的数据源{ this.SQL=SQL; }public void setDatasourceName(String s){ datasourceName=s.trim(); }public String modifyRecord(){Connection con=null;Statement sql=null;try{ String uri="jdbc:odbc:"+datasourceName;String id="";String password="";con=DriverManager.getConnection(uri,id,password);sql=con.createStatement();sql.execute(SQL);message="操作成功";con.close();}catch(SQLException e){ message=e.toString(); }return message;} /*数据源读取初始化*/public void setTableName(String string) {} //表名public Object[][] getRecord() //存放操作结果数组{ return null; }}Query.javaimport java.sql.*;import .httpserver.Authenticator.Result;public class Query{ String datasourceName=""; //数据源名String tableName=""; //表名Object a[][];public Query(){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");} //桥接器 catch(ClassNotFoundException e){System.out.print(e);}}public void setDatasoureName(String s){ datasourceName=s.trim(); }public void setTableName(String s){ tableName=s.trim(); }public Object[][] getRecord() //获取表中记录{Connection con;PreparedStatement sql; //预处理命令ResultSet rs; //结果集try{String uri="jdbc:odbc:"+datasourceName;String number="";String password="";con=DriverManager.getConnection(uri,number,password); //初始化连接DatabaseMetaData metadata=con.getMetaData();//连接对象调用getMetaData()方法返回一个DatabaseMetaData对象ResultSet rs1=metadata.getColumns(null,null,tableName,null);//将表中的字段信息以行列的形式存储在Result中int 字段个数=0;while(rs1.next()){ 字段个数++;}int n=getAmount();a=new Object[n][字段个数];sql=con.prepareStatement("SELECT * FROM "+tableName); //查询表名rs=sql.executeQuery();int m=0;while(rs.next()) //输出结果集中的数据{ for(int k=1;k<=字段个数;k++){ a[m][k-1]=rs.getString(k); }m++;}con.close();}catch(SQLException e){ System.out.println("请输入正确的表名"+e); }return a;}public int getAmount(){Connection con;Statement sql;ResultSet rs;try{String uri="jdbc:odbc:"+datasourceName;String id="";String password="";con=DriverManager.getConnection(uri,id,password);sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_RE AD_ONLY); //以只读方式滚动查询rs=sql.executeQuery("SELECT * FROM "+tableName); //获取所在行st();int rows=rs.getRow(); //当前游标所指行号return rows;}catch(SQLException exp){System.out.println(""+exp);return 0;}}public void inputQueryResult() {}}ATM.javapublic class ATM {public static void main(String args[]){ Win win=new Win();win.setBounds(400,300,400,300); //设置组件在容器中的位置和本身的大小win.setTitle("ATM自动柜员机");}}。
C++编写的ATM自动取款机模拟程序分析

C++编写的ATM自动取款机模拟程序分析第一篇:C++编写的ATM自动取款机模拟程序分析// ************************************ // * * // * function.h * // * * // ************************************ #includeclass consumer;class ATM // ATM取款机{ public: ATM(consumer& cn):cnsm(cn){ } void welcome();// 登陆界面bool check_passwd(char n[],char pwd[]);// 核对密码void change_passwd();// 修改密码 void fetchmoney();// 取款void information();// 查询信息 void exitATM();// 退出系统void functionshow();// 功能界面 void lock();// 锁机 private: int times;// 记录密码输入次数consumer& cnsm;};class consumer // 用户 { public: friend class ATM;consumer(char Name[],char Num[], float Money,char Password[]);protected: char* get_name();// 取得姓名 char* get_num();// 取得卡号 char* get_passwd();// 取得密码float get_money();// 取得余额void set_passwd(char pwd[]);// 设置密码void set_money(float m);// 取钱 private: char passwd[8];// 用户密码 char name[20];// 用户姓名 char num[20];float money;};// ************************************ // * * // * consumer类的成员&&函数 * // * * // ************************************ #include“function.h” #includeconsumer::consumer(char Name[], char Num[],float Money,char Password[]){ strcpy(name,Name);strcpy(num,Num);money=Money;strcpy(passwd,Password);} float consumer::get_money(){ return money;}char* consumer::get_name(){ return name;}char* consumer::get_num(){ return num;}char* consumer::get_passwd(){ return passwd;}void consumer::set_money(float m){ money-=m;} voidconsumer::set_passwd(char pwd[]){ strcpy(passwd,pwd);} // ************************************ // * * // * ATM类的成员&&函数 * // * * // ************************************#include “function.h” #include #include void ATM::welcome(){ times=0;cout<<“$ 欢迎使用若雪银行ATM自动取款机!~!”<”;cin>>n;while(n<1||n>4){ cout<<“请输入正确的操作序号!”<”;cin>>n;} switch(n){ case 1: change_passwd();break;case 2: fetchmoney();break;case 3: information();break;case 4: exitATM();break;} }while(true);} void ATM::change_passwd(){ char pwd[8],repwd[8];times=0;do { cout<>pwd;if(!check_passwd(cnsm.get_num(),pwd))times++;el se break;}while(times<3);if(times==3)lock();int t=0;do { cout<<“请输入新密码:”;cin>>pwd;cout<<“请再输入一次新密码:”;cin>>repwd;if((t=strcmp(pwd,repwd))!=0)cout<<“你输入的两次密码不一样,请重新输入!”<”<>m;while(m<=0){ cout<<“请输入正确的数字!”< ”;cin>>m;} if(cnsm.get_money()-m<0){ cou t<<“对不起,你的余额不足!” < ”;cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){ cou t<<“$ >”;cin>>ch;} }while(ch=='y'||ch=='Y');} void ATM::information(){ cout<<“**********************************”< #include“function.h” void main(){ consumer c1(“jim”,“12345”,5200.3f,“123”);// 先构造一个用户ATM atm(c1);atm.welcome();}第二篇:ATM自动取款机C++课程设计C++课程设计学校:惠州学院题目:设计ATM自动取款机系统系别:电子科学系班级: 11电信2班学号: 110703229 姓名:王志勇2014年4月21日一、课程设计目的及要求1.1设计目的1.提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。
ATM自动取款机模拟程序

银行ATM自动取款机模拟程序本程序需要两个文件,ATM程序文件及系统管理员管理,两个文件必须在同一个文件或同一路径下!1.ATM程序文件://////CUser.h //////////#include<fstream>using namespace std;struct user{int Money;int User;int Password;};class CAtm{public:int Login();//登陆void GetBalance();//查询余额void ChangePassword();//修改密码void DrawMoney();//取款void TranserAccounts();//转账void BankSaving();//存款int Exit();//退出系统private:int Position;//数据位置user us[5];//保存文件内容user us[20];user s;};///////////User.cpp /////////////#include<iostream>#include<fstream>#include"CUser.h"using namespace std;int CAtm::Login() //登录{ int save[5];//保存被吃卡的用户的账号bool flag;int i,j,k,num;fstream iofile("atm.dat",ios::in|ios::binary);iofile.read((char*)&us,sizeof(us));fstream in("jiesuo.dat",ios::in|ios::out|ios::binary);in.read((char*)&save,sizeof(save));cout<<"请输入你的账号:";cin>>num;flag=true;for(i=0;i<5;i++){ if(us[i].User==num) {flag=false;j=i;}}if(flag==true) { cout<<"账号不存在!"<<endl;return 0;}for(k=0;k<5;k++)//判断账号是否已经被锁{if(save[k]==num){ cout<<"你的账号已锁,请寻系统管理员解锁!"<<endl;return 0;}}k=0;cout<<"请输入密码:";cin>>num;for(i=1;i<=3;i++){ k++;if(us[j].Password!=num){ if(k==3){ cout<<"你的卡被锁定了,请找系统管理员解锁!"<<endl;save[j]=us[j].User;in.close();fstream out("jiesuo.dat",ios::out|ios::binary);out.write((char*)&save,sizeof(save));out.close();return 0;}else { cout<<"请重新输入密码:";cin>>num;}}}cout<<"密码正确,进入系统!"<<endl;er=us[j].User;s.Money=us[j].Money;s.Password=us[j].Password;Position=j;iofile.close();return 1;}void CAtm::GetBalance()//查询余额{ cout<<"您的账户余额:"<<s.Money<<endl;}void CAtm::ChangePassword()// 修改密码{ fstream iofile("atm.dat",ios::in|ios::out|ios::binary);cout<<"请输入新密码:";cin>>s.Password;iofile.seekp((Position+1)*sizeof(s),ios::beg);iofile.write((char*)&s,sizeof(s));iofile.close();}void CAtm::DrawMoney()//取款{int j;cout<<"请输入取款金额:";cin>>j;while(j>s.Money){cout<<"金额不足,请重新输入取款金额:";cin>>j;}s.Money=s.Money-j;fstream iofile("atm.dat",ios::in|ios::out|ios::binary);iofile.seekp((Position+1)*sizeof(s),ios::beg);iofile.write((char*)&s,sizeof(s));cout<<"取款金额是:"<<j<<" "<<"取款成功!!"<<endl;iofile.close();}void CAtm::TranserAccounts()//转账{ int s1,p,i;cout<<"请输入要转入的账号:";cin>>s1;bool flag=true;for(i=0;i<5;i++){ if(us[i].User==s1) {flag=false; p=i;}}if(flag==true)cout<<"账号不存在!"<<"请重新输入账号:";cout<<"请输入要转入的金额:";cin>>s1;while(s1>s.Money){cout<<"请重新输入转入金额:";cin>>s1;}us[p].Money=s1;s.Money=s.Money-s1;us[Position].Money=s.Money;fstream iofile("atm.dat",ios::in|ios::out|ios::binary);iofile.write((char*)&us,sizeof(us));iofile.close();cout<<"转账成功!"<<endl;}void CAtm::BankSaving()//存款缴费{ int k;cout<<"请输入要存款的金额:";cin>>k;s.Money=s.Money+k;fstream iofile("atm.dat",ios::in|ios::out|ios::binary);iofile.seekp((Position+1)*sizeof(s),ios::beg);iofile.write((char*)&s,sizeof(s));iofile.close();}int CAtm::Exit()//退出系统{cout<<" 谢谢使用本程序!!!"<<endl;return 0;}//////////////main.cpp ////////////////#include<iostream>#include"CUser.h "using namespace std;int main(){ cout<<" 欢迎使用银行ATM自动取款机模拟程序!"<<endl;cout<<endl;cout<<" 首次使用本程序,请先运行系统管理员程序!"<<endl;cout<<endl;cout<<" 说明:账号,密码,金额相同"<<endl;cout<<endl;cout<<" 文件中定义为5个账户,分别为1.2.3.4.5 "<<endl;cout<<endl;cout<<" 初始化时,请注意这些!!!"<<endl;cout<<endl;CAtm atm;if(atm.Login()==1){ cout<<" 1 查询余额"<<endl;cout<<" 2 修改密码"<<endl;cout<<" 3 取款"<<endl;cout<<" 4 转账"<<endl;cout<<" 5 存款"<<endl;cout<<" 0 退出系统"<<endl;int n;cout<<"请选择操作:";while(cin>>n){if(n==0) return atm.Exit();//退出系统if(n==1) atm.GetBalance();//查询余额if(n==2) atm.ChangePassword();//修改密码if(n==3) atm.DrawMoney();//取款if(n==4) atm.TranserAccounts();//转账if(n==5) atm.BankSaving();//存款cout<<"请继续选择操作:";}}return 0;}2.系统管理员程序:#include<iostream>#include<fstream>using namespace std;struct user{int Money;int User;int Password;};int main(){ int a[5]={0,0,0,0,0};int n;user us[20];cout<<" 欢迎使用系统管理员程序"<<endl;cout<<endl;cout<<" 说明:本程序只能建立5个账户!"<<endl;cout<<endl;cout<<" 请输入相应数字选择操作:"<<endl;cout<<endl;cout<<"----------------------------"<<endl;cout<<"- 0 结束操作-"<<endl;cout<<"- 1 用户信息-"<<endl;cout<<"- 2 吃卡解锁-"<<endl;cout<<"- 3 系统初始化-"<<endl;cout<<"----------------------------"<<endl;cout<<endl;cout<<"说明:用户信息的操作是进行开户操作!"<<endl;cout<<" 系统初始化是采用已定义好的5个账户,即原始系统初始化!"<<endl;while(cin>>n){ if(n==1){ user u[5];int i;fstream iofile("..\\ATM自动取款机\\atm.dat",ios::in|ios::out|ios::binary);if(!iofile){cerr<<"打开文件失败!";return -1;}cout<<"请输入数据:"<<endl;cout<<"账号密码金额"<<endl;for(i=0;i<5;i++){cin>>u[i].User>>u[i].Password>>u[i].Money;}iofile.write((char*)&u,sizeof(u));iofile.close();cout<<endl;cout<<"数据输入结束!"<<endl;cout<<endl;continue;}if(n==2){ fstream iofile("..\\ATM自动取款机\\atm.dat",ios::in|ios::binary);iofile.read((char*)&us,sizeof(us));fstream in("..\\ATM自动取款机\\jiesuo.dat",ios::in|ios::out|ios::binary);int i,j,p;bool flag;cout<<"请输入要解锁的账号:";cin>>j;flag=true;while(flag==true){for(i=0;i<5;i++){ if(j==us[i].User) { flag=false;p=i; break; }if(flag==true) { cout<<"账号不存在!"<<endl;cout<<"请重新输入账号:"; }cin>>j;}}a[p]=0;cout<<"解锁成功"<<endl;in.write((char*)&a,sizeof(a));in.close();continue;}if(n==3){ cout<<"系统初始化"<<endl;fstream out("..\\ATM自动取款机\\jiesuo.dat",ios::out|ios::binary);out.write((char*)&a,sizeof(a));user u[5];int i;fstream iofile("..\\ATM自动取款机\\atm.dat",ios::out|ios::binary);if(!iofile){cerr<<"打开文件失败!";return -1;}for(i=0;i<5;i++){u[i].User=i+1;u[i].Password=i+1;u[i].Money=i+1;}iofile.write((char*)&u,sizeof(u));iofile.close();cout<<"初始化成功!!!"<<endl;continue;}if(n==0){ return 0;}}return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import .*;
import .*;
import .*;
public class Win extends JFrame implements ActionListener {
JTextField text[]=new JTextField[6];
JTextArea show=new JTextArea(9,30);
JTable table;次取款金额为100的倍数,总额不能超过5000元,支取金额不允许透支"));
add(new JLabel("2.存款金额不能为负存款"));
add(new JLabel("3.新密码长度不小于6位,不允许出现6位完全相同的情况"));
setVisible(true);
setDefaultCloseOperation;
}
public void actionPerformed(ActionEvent e) {
Operation modify=new Operation();
("XX");
if()==insert)
{
("INSERT INTO XX VALUES
('"+text[4].getText()+"','"+text[0].getText()+"','"+text[1].getText()+"','"+tex t[2].getText()+"','"+text[3].getText()+"')");
String backMess=();
("添加新用户"+backMess);
}
else if()==C)
{
Connection con=null;
Statement sql;
ResultSet rs = null;
try{
double n=2000;
con=("jdbc:odbc:XX","","");
(false);
sql=();
rs=("SELECT * FROM XX WHERE 卡号='123456'"); 码
=+'"+text[2].getText()+"' WHERE (((XX.卡号)=+'"+text[0].getText()+"'));");
String backMess=();
("修改密码"+backMess);
}
else if()==delete)
{
("DELETE * FROM XX WHERE (((XX.卡
号)=+'"+text[0].getText()+"'));");
String backMess=();
("删除用户信息"+backMess);
}
else if()==select)
{
Query query =new Query();
("XX");
("XX");
Object a[][]=();
String b[]={"序号","卡号","姓名","密码","余额"};
table=new JTable(a,b);
JFrame frame=new JFrame();
(new JScrollPane(table));
(true);
(400,400,600,200);
}
}
public void setBounds(int i, int j, int k, int l) {} }
import class Operation{
String datasourceName=""; ;
import class Query
{ String datasourceName=""; //数据源名
String tableName=""; //表名
Object a[][];
public Query()
{
try{("");} //桥接器
catch(ClassNotFoundException e)
{ }
public void setDatasoureName(String s)
{ datasourceName=(); }
public void setTableName(String s)
{ tableName=(); }
public Object[][] getRecord() //获取表中记录
{
Connection con;
PreparedStatement sql; //预处理命令
ResultSet rs; //结果集
try{
String uri="jdbc:odbc:"+datasourceName;
String number="";
String password="";
con=(uri,number,password); //初始化连接
DatabaseMetaData metadata=();
//连接对象调用getMetaData()方法返回一个DatabaseMetaData对象
ResultSet rs1=(null,null,tableName,null);
//将表中的字段信息以行列的形式存储在Result中
int 字段个数=0;
while())
{ 字段个数++;}
int n=getAmount();
a=new Object[n][字段个数];
sql=("SELECT * FROM "+tableName); //查询表名
rs=();
int m=0;
while()) //输出结果集中的数据
{ for(int k=1;k<=字段个数;k++)
{ a[m][k-1]=(k); }
m++;
}
();
}
catch(SQLException e)
{ "请输入正确的表名"+e); }
return a;
}
public int getAmount()
{
Connection con;
Statement sql;
ResultSet rs;
try{
String uri="jdbc:odbc:"+datasourceName;
String id="";
String password="";
con=(uri,id,password);
sql=,; //以只读方式滚动查询
rs=("SELECT * FROM "+tableName); //获取所在行 ();
int rows=(); //当前游标所指行号
return rows;
}
catch(SQLException exp)
{
""+exp);
return 0;
}
}
public void inputQueryResult() {}
}
public class ATM {
public static void main(String args[])
{ Win win=new Win();
(400,300,400,300); //设置组件在容器中的位置和本身的大小 ("ATM自动柜员机");
}
}。