ATM柜员机模拟系统_代码
ATM机模拟系统
ATM机模拟系统1.引言1.1编写目的ATM机模拟系统是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着承上启下的作用,其重要性不言而喻。
但是,目前许多银行在具体的一些业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。
然而ATM自动取款功能不带为银行节省大量财力人力,还为广大城市用户带来便捷。
为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档,本文针对上述问题,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析,概要设计,程序编码,软件应用等过程,开发了这个系统。
1.2项目背景待开发项目名称:ATM自动取款机系统的分析与设计使用语言:SQL、C#项目开发者:董立杰、刘许、姜亚娟、孙晓玉1.3定义专业术语与缩略词:帐号:在银行中,事物应用的单个帐号。
帐号可以为多种类型,但是至少包括支票和存款。
每个顾客可以拥有多个帐号。
客户:拥有银行的一个或多个帐号的人。
可以是一个人或多个人,或者是公司。
相同的人,拥有不同的银行帐号被认为是不同的落户。
ATM:ATM是Automatic Teller Machine 的缩写,意为自动柜员机。
是一种高度精密的机电一体化设备,利用磁卡或智能IC卡储存用户信息并通过加密键盘输入密码然后通过银行内部网络验证并进行各种交易的金融自助设备。
事务:对单个客户帐号的单个完整的操作请求,一般是指要做的或所做的事情。
GUI:(Graphical User Interface )图形用户界面。
是指采用图形方式显示的计算机操作用户界面。
1.4参考资料[1]数据库开发与实例[2]软件工程[3]数据库应用项目教程2.项目概述2.1系统简介本设计按要求采用“项目小组”的形式,结合具体开发项目进行设计。
需完成如下文档(1)可行性研究报告(2)项目开发计划(3)需求规格说明书(4)软件设计说明书(5)测试计划测试报告(6)用户操作手册并完成系统的功能设计、数据库设计和人机界面设计。
ATM(JAVA课程设计)
ATM柜员机模拟程序摘要使用图形用户界面。
当输入给定的卡号和密码(初始卡号为123456和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:查询余额:初始余额为50000元ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
ATM存款:不能出现负存款。
修改密码:只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。
一个系统界面的好坏直接影响到用户的操作,界面设计要求样式美观、简单明了、方便易操作。
我设计的界面主要分为窗体、菜单、按钮和文本输入框几个部分,分别执行相应的操作。
关键字:图形用户界面;ATM;柜员机;模拟程序;模块;ATM machines simulation programAbstractUse the graphical user interface. When the input given card number and password (initial card number for 123456 and password for 123456), the system can login ATM machines system, users can according to the following rules:Inquires the balance: initial balance is 50000 yuan ATM withdrawals: every time a multiple of the amount of, the total will not more than 5000 yuan, the amount of withdrawals allows no overdraft.ATM deposits: can't negative deposits.Change the password: only the correct password is old, the new password accords with a requirement, and two enter the same case can be modified successfully password.I designed by ATM machines is mainly composed of the login page module by choice service module is, selecting the service module by withdrawals and module, inquires module, modify the password balance module, return card modules. A system interface has a direct influence on the user's operation, interface design requirements style beauty, simple and clear, make the operation easy. I design interface are divided into form, menu, button and text input box sectionsKeywords:graphical user interface; ATM; Automated Teller Machine; simulation program; module;1 系统需求分析1.1 功能需求分析本ATM柜员机的主要功能如下所述:要求使用图形用户界面。
C语言ATM自动存取款机全套代码
C语言ATM自动存取款机全套代码#include#include#include#include#include#define N 6char b[N]={'8','8','8','8','8','8'};//存放密码int money=5000;int securitytime=3;void Login();void JieMian();void SaveMoney();void GetMoney();void Query();void Return();//密码验证函数,验证成功返回1,否则返回0void Login(){char a[20],ch; //用户登录密码,用以验证int i=0,n=1,k;printf("\n\t\t欢迎使用ICBC ATM自动存取款机\n"); printf("\n请输入密码:");for(n=1;n<=5;n++){while((a[i]=getch())!=13){ i=i+1;printf("*");//将用户输入的密码以*显示}for(k=0;k<6;k++)if(a[k]!=b[k]) break;if (k==6){printf("\n密码正确,请继续!!\n");JieMian(); }else//printf("\n密码错误,请重新输入:\n");printf("\n密码错误,您还有%d次机会,请重新输入:\n",5-n);}printf("\n您已经输入5次错误,您的卡将被没收,请去相关网点办理!\n");exit(1);}// 界面设计void JieMian(){int SelectKey;//system("cls");//清屏幕函数while(1){puts("\n= = = = = = = = = = = = = = = =");puts("| 请选择相应功能: |");puts("| 1. 修改密码PassWord |");puts("| 2. 查询功能Query |");puts("| 3. 取款功能Get Money |");puts("| 4. 存款功能Save Money | ");puts("| 5. 转帐功能Trans Money | ");puts("| 6. 退出功能Return | ");puts("\n= = = = = = = = = = = = = = = = ");printf("\n请选择功能:");scanf("%d",&SelectKey);switch(SelectKey){ case 1:printf("\n修改密码功能\n");//PassWord();break;case 2:printf("\n查询功能\n");Query();break;case 3:printf("\n取款功能\n");GetMoney();break;case 4:printf("\n存款功能\n");SaveMoney();break;case 5:printf("\n转帐功能\n");//Trans();break;case 6:printf("\n退出功能\n");Return();break;}}}/*Query查询功能*/void Query(){system("cls");puts("================================== ==");printf("| Your Query balance is $%ld |\n",money);puts("| Press any key to return... |");puts("================================== ==");return;}/*GetMoney取钱功能*/void GetMoney(){char GetMoney;char kahao[20];long y;//输入待转入的相关信息//卡号,姓名do{puts("=================================");puts("| Please select GetMoney: |");puts("| 1. $100 |");puts("| 2. $200 |");puts("| 3. other |");puts("| 4. Return |");puts("=================================");GetMoney = getch();}while(GetMoney!='1'&&GetMoney!='2'&&GetMoney!='3' && GetMoney!='4');switch(GetMoney){case '1':system("cls");if(money>100){puts("================================== =========");puts("| Your GetMoney is $100,Thank you! |");puts("| Press any key to return... |");puts("===========================================");money=money-100;printf("\n您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '2':system("cls");if(money>200){puts("================================== ======");puts("| Your GetMoney is $200,Thank you! |");puts("| Press any key to return... |");puts("================================== ======");money=money-200;printf("\n 您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '3':system("cls");printf("please get some money:");scanf("%ld",&y);if(money>y){money=money-y;printf("\n您的余额为%d",money);}else{printf("\n您的余额不足!");printf("\n您的余额为%d",money);}getch();break;case '4': break;}return;}/*SaveMoney存钱功能*/void SaveMoney(){ char SaveMoney;long y;do{system("cls");puts("================================== ========");puts("| Please select Save Money: |");puts("| 1. $100 |");puts("| 2. $500 |");puts("| 3. $1000 |");puts("| 4. other |");puts("| 5. Return |");puts("================================== ========");SaveMoney = getch();}while(SaveMoney!='1'&&SaveMoney!='2'&& SaveMoney!='3'&&SaveMoney!='4'&&SaveMoney!='5');switch(SaveMoney){ case '1':{{system("cls");puts("================================== =========");puts("| Your save money is $100,Thank you! |");puts("| Press any key to return... |");puts("================================== ========");}money=money+100;printf("\n您的余额为%d",money);getch();}break;case '2':{system("cls");puts("================================== ============");puts("| Your Save Money is $500,Thank you! |");puts("| Press any key to return... |");puts("================================== ============");money=money+500;printf("\n您的余额为%d",money);getch();}break;case '3':{system("cls");puts("============================================");puts("| Your Save Money is $1000,Thank you! |");puts("| Press any key to return... |");puts("================================== ==========");money=money+1000;printf("\n您的余额为%d",money);getch();}break;case '4':{system("cls");puts("================================== ===========");puts("| Your Save some Money,Thank you! |");puts("| Press any key to return... |");puts("================================== ===========");puts("please save some money:");scanf("%ld",&y);if(y%100!=0)printf("该存款机只能处理整百的操作,请核查!!");else{money=money+y;printf("\n您的余额为%d",money);}getch();}break;case '5':break; }return;}/*Return,退出功能*/void Return(){system("cls");puts("================================== ==");puts("| Thank you for your using! |");puts("| RETURN! |");puts("================================== ==");exit(1);}//主函数int main(){Login();}上一页下一页。
C语言编制模拟ATM取款机密码输入过程(第三天)
C语⾔编制模拟ATM取款机密码输⼊过程(第三天)---恢复内容开始---//// main.c// whilexu//// Created by mac on 18/7/17.// Copyright © 2018年 111. All rights reserved.//#include <stdio.h>int main(int argc, const char * argv[]) {/*初始密码12341、提⽰欢迎光临2、提⽰请输⼊密码:do while循环语句控制能输⼊⼏次密码if语句来判断输⼊的密码是否正确失败:密码错误请重新输⼊(还有⼏次机会)成功:显⽰新的操作界⾯密码正确*/int password = 0;int time = 3;//提⽰⽤户操作printf("*****欢迎光临!*****\n");printf("请输⼊您的密码:");do{scanf("%d",&password);//判断密码是否正确if(password ==1234){printf("密码正确\n");break;}else{time--;if(time==0){printf("错误次数过多,退出\n");break;}printf("密码错误,请重新输⼊密码(还有%d次机会):\n",time);}}while (time>0);return0;}//1、总结:理清要实现的操作有哪些;2、分析要⽤哪些语句来实现;3、根据提⽰的错误来修正错误;4、运⾏---恢复内容结束---。
ATM机的代码(作业)
ATM机的代码(作业)import java.util.Scanner;public class ATMDemo {/*** 简单ATM机取款过程模拟*/public static void main(String[] args) {String pass = ""; // 保存⽤户输⼊密码int amount = 0; // 取款⾦额String password = "111111"; // ⽤户密码int count = 0; // 记录密码输⼊次数boolean isPass = false; // 密码是否通过验证Scanner input = new Scanner(System.in);while (count < 3 && !isPass) {System.out.print("请输⼊密码:");pass = input.next();if (!password.equals(pass)) {count++;continue;}isPass = true; // 密码通过验证System.out.print("请输⼊⾦额:");amount = input.nextInt();while (amount > 0) {if (amount <= 1000 && amount % 100 == 0) {System.out.println("您取了" + amount + "元");System.out.println("交易完成,请取卡!");break; // 完成交易,退出} else {System.out.print("您输⼊⾦额的⾦额不合法,请重新输⼊:");amount = input.nextInt();continue; // 继续让⽤户输⼊⾦额}}}if (!isPass) { // ⽤户输⼊了3次错误密码System.out.print("密码错误,请取卡!");}}}。
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#楼六楼机房进行,持续时间为两周。
基于java_ATM机_银行存取款系统的设计与实现(含源文件)
本科毕业论文(设计)银行存取款系统的设计与实现姓名:__ ________ 系别: 计算机与信息技术学院_专业:_ 计算机科学与技术_ 学号:__ _____指导教师:__ _ _________年月日目录引论 (1)1银行存取款系统概述 (1)1.1背景 (1)1.2意义 (1)2 银行存取款系统需求分析 (1)2.1系统需求 (1)2.2功能需求 (1)2.2.1用户注册和登陆功能 (1)2.2.2用户存取款转账和查询历史功能 (1)2.3软件属性需求 (2)2.4业务流程描述 (2)3.银行存取款系统总体设计 (2)3.1系统设计概述 (2)3.2注册帐户 (2)3.3登录 (2)3.4存款 (2)3.5取款 (2)3.6转账 (2)3.7查询历史 (2)3.8退出 (3)4 Oracle数据库的设计 (3)4.1 Oracle数据库设计概论 (3)4.2 表的结构设计 (3)4.2.1用户表 (3)4.2.2历史表 (3)4.3 PL/SQL存储过程的设计 (3)4.3.1用户表存储过程的设计 (4)4.3.2历史表存储过程的设计 (4)5 银行存取款系统的实现 (5)5.1用户登陆模块的实现 (5)5.1.1界面样式 (5)5.1.2功能实现 (5)5.2新用户注册模块的实现 (6)5.2.1界面样式 (6)5.2.2功能实现 (6)5.3用户操作模块的实现 (7)5.3.1界面样式 (8)5.3.2功能实现 (8)5.4存款模块的实现 (9)5.4.1界面样式 (9)5.4.2功能实现 (9)5.5取款模块的实现 (10)5.5.1界面样式 (11)5.5.2功能实现 (11)5.6转账模块的实现 (12)5.6.1界面样式 (12)5.6.2功能实现 (12)5.7查询历史记录模块的实现 (15)5.7.1界面样式 (15)5.7.2功能实现 (15)6发布程序及分包规范 (16)结论 (16)参考文献 (17)致谢 (17)银行存取款系统的设计与实现摘要计算机科学技术的发展不仅极大地促进了整个科学的发展,而且明显加快了经济信息化和社会信息化的进程。
pythonatm机程序代码
pythonatm机程序代码Python ATM机程序代码随着科技的不断发展,ATM机已经成为了人们日常生活中不可或缺的一部分。
ATM机的出现,不仅方便了人们的生活,也提高了人们的生活质量。
而在ATM机的背后,是一系列复杂的程序代码在运行。
本文将介绍一种基于Python语言的ATM机程序代码。
一、ATM机的基本功能ATM机的基本功能包括:查询余额、取款、存款、转账、修改密码等。
在Python ATM机程序代码中,这些功能都被封装成了函数,方便调用。
1.查询余额查询余额是ATM机最基本的功能之一。
在Python ATM机程序代码中,查询余额的函数如下:```def query_balance():print("您的余额为:", balance)```其中,balance为全局变量,表示用户的余额。
2.取款取款是ATM机的另一个重要功能。
在Python ATM机程序代码中,取款的函数如下:```def withdraw():global balanceamount = int(input("请输入取款金额:"))if amount > balance:print("余额不足!")else:balance -= amountprint("取款成功!")print("您的余额为:", balance)```其中,amount为用户输入的取款金额,如果余额不足,则提示“余额不足!”;否则,从余额中扣除取款金额,并提示“取款成功!”。
3.存款存款是ATM机的另一个重要功能。
在Python ATM机程序代码中,存款的函数如下:```def deposit():global balanceamount = int(input("请输入存款金额:"))balance += amountprint("存款成功!")print("您的余额为:", balance)```其中,amount为用户输入的存款金额,将存款金额加入余额中,并提示“存款成功!”。
C语言模拟ATM机的编写程序
C语言模拟ATM机的编写程序#include <stdio.h>void main(){long int a,b,c,d,e,f,g,k,l,m,n,o,p,h;n=0;h=10000;k=123456;loop0: printf("\t\t\t欢迎使用中国邮政ATM取款机!\n\n");printf("请插入你的银行卡,并输入你的密码,三次密码输入错误,将终止程序:\n");scanf("%ld",&l);if(k==l){loop1: printf("请输入你选择的操作类型:\n");printf("请输入0-4进行选择:\n");printf("1:<转账>\t2:<查询>\t3:<取款>\t4:<修改密码>\t0:<取卡>\n");scanf("%ld",&a);switch(a){case 1: printf("请输入转账账号:\n");scanf("%d",&o);printf("请输入你需要转账的金额:\n");scanf("%d",&p);printf("请输入你选择的操作类型:\n");printf("请输入0或1进行选择:\n");printf("1:<确认>\t0:<返回>\n");h=10000-p;scanf("%ld",&b);switch(b){case 1:printf("\n转账%d元人民币成功!\n\n",p);goto loop1;break;case 0:goto loop1;break;default :printf("\n无此操作项!\n\n");goto loop1;}break;loop4:case 2:printf("请输入你选择的操作类型:\n");printf("请输入0-2进行选择:\n");printf("1:<查询余额>\t2:<查询明细>\t0:<返回>\n");scanf("%ld",&c);switch(c){case 1:printf("\n你的余额为:%5d\n\n",h);goto loop1;break;case 2:printf("\n你的账单为:******。
C语言ATM机代码,简单版。
C语⾔ATM机代码,简单版。
#include <stdio.h>void main(){int i,j;int code=0,flag=0;int choice1=0,choice2=0,choice3=0;int RMB=100000,WB=100000;int cash1=0,cash2=0;char instruct='n';printf("************************************************************\n");printf("* *\n");printf("* *\n");printf("* 欢迎使⽤怪精 ATM取款机 *\n");printf("* *\n");printf("* 监制: rain version number:1.0.1 *\n");printf("* *\n"); printf("* *\n"); printf("************************************************************\n");printf("请键⼊您的密码:\n"); /*密码为9527*/for(i=0;i<3;i++){scanf("%d",&code);system("cls");if(code==9527){break;}if(code!=9527){printf("密码有误!请重新输⼊:\n");flag+=1;}}if(flag==3){printf("密码错误超限,请回去⾯壁思过,再见!");return;}while(instruct=='N'|| instruct=='n' ){if(code==9527){printf("请选择您所需服务!\n");printf("1.查询余额 2.取款 3.退出");scanf("%d",&choice1);system("cls");switch(choice1){case 1:printf("1.⼈民币 2.外汇");scanf("%d",&choice2);system("cls");switch(choice2){case 1:printf("您的⼈民币账户余额:¥%d\n",RMB);break;case 2:printf("您的外币账户余额:$%d\n",WB);break;}break;case 2:printf("1.⼈民币 2.外币");scanf("%d",&choice3);system("cls");switch(choice3){case 1:printf("请输⼊取款⾦额:\n");scanf("%d",&cash1);RMB=RMB-cash1;printf("您的账户余额为:¥%d\n",RMB); break;case 2:printf("请输⼊取款⾦额:\n");scanf("%d",&cash2);WB=WB-cash2;printf("您的账户余额为:$%d\n",WB); break;}break;case 3:break;}printf("是否退出程序<y表⽰是,n表⽰否>:"); scanf("%s",&instruct);}}}。
ATM代码
#include<stdlib.h>
#include<string.h>
struct Vip
{int id;
char mima[6];
char name[20];
int money;
}cat;
int gotoxy(int row,int col)
}
while(b==4)
{
getchar();
system("cls");
return 0;
break;
}
return 0;
}
int zz()
{
int zh,zh1;
int h;
printf("在这里完成转账\n");
getchar();
getchar();
system("cls");
return 0;
break;
}
while(a==6)
{
getchar();
system("cls");
printf("在这里开户\n");
printf("开户账号:%d\n\n");
printf("设置姓名:");
scanf("%s",&cat_);
printf("设置密码:\n");
i=0;
while((mima[i]=getchar())!=13)
gotoxy(1,25);
printf("请输入您的选择:");
ATM代码
对数据库操作的类:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;using System.Data;using System.Configuration;namespace ATM1{/*对users表进行操作的服务类*/class UsersService{private static UsersService userService=null;private UsersService(){}public static UsersService getService(){if (userService == null){//如果是第一次使用方法则实例化userService = new UsersService(); }return userService; }* //得到连接private void openConnection() {if (conn == null){ conn = newSqlConnection(ConfigurationManager.ConnectionStrings["ATM"].ToString());//conn = new SqlConnection(conStr);conn.Open();}}/** * 设置连接命令* command sql语句* isQuery 是否是查询语句,是则不开启业务 * 增删改则开启业*/private void setCommand(string command,bool isQuery){this.openConnection();comm = new SqlCommand();if (!isQuery){tran = conn.BeginTransaction();comm.Transaction = tran;}mandText = command;mandType = CommandType.Text;comm.Connection = conn;}/* *设置命令参数*from 要替换的字符串*to 替换为的字符串*/private void setParameter(string from,object to){comm.Parameters.AddWithValue(from, to);}/***提交结果提交成功 reture true *提交失败 return false 并回滚*对添,删,改有效 */ private bool commitCommand(){try{int numEffected;numEffected= comm.ExecuteNonQuery();if (numEffected >= 1){ //添加成功,提交mit();return true; }else{ //添加失败回滚tran.Rollback();} }catch (Exception e){Console.WriteLine(e.StackTrace); //出现异常回滚tran.Rollback(); }finally{tran.Dispose();this.closeConnection(); }return false; }/** *关闭连接*/private void closeConnection(){ if (conn != null){conn.Close();conn.Dispose();conn = null;}}/*** 登陆* * 判断输入用户不需要开启事务* id 输入卡号* passWd 密码* 没有该用户return false* 存在则 return true* */public bool verifyUser(string id,string passwd){this.setCommand("select count(*) from users where cardNum=@cardNumand passWd=@passWd",true);this.setParameter("@cardNum",id);this.setParameter("@passWd",passwd);int num = (int)m.ExecuteScalar();if (1 == num){return true;}return false;}/*** 开户 * 创建用户服务需要开启事务 * user 要添加的用户 * return* true 添加成功 * false 添加失败 */public bool addUser(UserBean user){this.setCommand("insert into usersvalues(@cardNum,@passWd,@userName,@moneySum,@cardBalance,@identifyCardNum)",false);this.setParameter("@cardNum",user.cardNum);this.setParameter("@passWd", user.passWd);this.setParameter("@userName", erName);this.setParameter("@moneySum", user.moneySum);this.setParameter("@cardBalance", user.cardBalance);this.setParameter("@identifyCardNum", user.identifyCardNum);return mitCommand(); }/*** 改密* * 更改密码服务需要开启事务* id 要修改的卡号* return true 修改成功* reture fasle 修改失败*/public bool setPassWd(string id,string newPasswd){this.setCommand("update users set passWd=@passWd where cardNum=@id",false);this.setParameter("@passWd", newPasswd);this.setParameter("@id",id);return mitCommand(); }/** * 查询金额* id 卡号 * return 查询结果 * */public object getCardBalance(string id){this.setCommand("select cardBalance from users where cardNum=@cardNum",true);this.setParameter("@cardNum",id);return comm.ExecuteScalar(); }/*** 改变金额(包括取现和存款) * id 卡号 * double 增加或减少的金额 * 成功返回 tru * 失败返回 false*public bool changeBalance(string id, decimal balance){//持卡人卡上金额decimal ownerBalance; try{ownerBalance= (decimal)this.getCardBalance(id);}catch (Exception e){Console.WriteLine(e.StackTrace);return false;} //如果转移的金额大于已有的金额,则转账失败if ((ownerBalance+balance)<0){return false;}this.setCommand("update users set cardBalance=@balance where cardnum=@id", false);this.setParameter("@balance",(ownerBalance + balance));this.setParameter("@id",id);return mitCommand();}/** 转账 * from_id 持卡人卡号* to_id 转账到的卡号 * transferMenoy 转账金额* 成功返回 true失败返回 false */public bool transferBalance(string from_id,string to_id,decimal transferMenoy) {decimal ownerBalance =(decimal)this.getCardBalance(from_id);//如果转移的金额大于已有的金额,或卡内金额小于100 则转账失败if (transferMenoy > ownerBalance && ownerBalance<100){ return false; }decimal otherBalance = (decimal)this.getCardBalance(to_id);this.setCommand("update users set cardBalance=@fromOwonerBalance where cardNum=@from_id; update users set cardbalance=@toOwnerBalance where cardNum=@to_id;", false);this.setParameter("@from_id", from_id);this.setParameter("@to_id", to_id);this.setParameter("@fromOwonerBalance",(ownerBalance - transferMenoy));this.setParameter("@toOwnerBalance", (otherBalance+transferMenoy));return mitCommand();}private SqlConnection conn;private SqlCommand comm;private SqlDataReader reader;private SqlTransaction tran;private const string conStr = "server=172.7.41.166;database=ATM;uid=sa;pwd=123"; }}登录界面类using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace ATM1{public partial class LoginForm : Form{public LoginForm(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){userService = UsersService.getService();}//开户按钮的处理private void pbOpen_Click(object sender, EventArgs e){this.Visible = false;OpenForm openForm = new OpenForm(this);openForm.ShowDialog();} //登录按钮的处理private void pbLogin_click(object sender, EventArgs e){string id=tbCreditID.Text.ToString().Trim();string passwd=tbPasswd.Text.ToString().Trim();if (id.Length != 10){ MessageBox.Show("请输入10位卡号"); }else if (passwd.Length != 6){ MessageBox.Show("请输入6位密码"); }else if(erService.verifyUser(id,passwd)&&id.Length==10&&passwd.Length==6) {this.cardID = id;mainForm = new MainForm(this.cardID);this.Visible = false;mainForm.ShowDialog();}else{MessageBox.Show("对不起,没有该用户!");}} //退出按钮的事件private void pbExit_Click(object sender, EventArgs e) {this.Visible = false;endForm = new EndForm();endForm.ShowDialog();}//登陆成功后的主界面private MainForm mainForm;//退卡后的界面private EndForm endForm;//用户服务private UsersService userService;//保留卡号,private string cardID;public string CardID{get { return cardID; }set { cardID = value; }}}}服务选择主界面using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace ATM1{public partial class MainForm : Form{public MainForm(string cardID){InitializeComponent();this.cardID = cardID;}//加载事件private void MainForm_Load(object sender, EventArgs e){erService = UsersService.getService();} //取现按钮的事件dprivate void pbCash_Click(object sender, EventArgs e){this.Dispose();cashForm = new CashForm(this.cardID);cashForm.ShowDialog();}//查询按钮的事件dprivate void pbQuery_Click(object sender, EventArgs e){this.Dispose();queryForm = new QueryForm(this.cardID);queryForm.ShowDialog();}//改密按钮的事件dprivate void pbSetpin_Click(object sender, EventArgs e){this.Dispose();setpinForm = new SetPinForm(this.cardID);setpinForm.ShowDialog();}//转账按钮的事件private void pbTransfer_click(object sender, EventArgs e) {this.Dispose();transferForm = new TransferForm(this.cardID);transferForm.ShowDialog();}//退卡按钮事件private void pbExit_click(object sender, EventArgs e){this.Dispose();EndForm endForm = new EndForm();endForm.ShowDialog();}//存款按钮事件private void pbOpen_Click(object sender, EventArgs e){this.Dispose();DepositForm edpositForm = new DepositForm(this.cardID); edpositForm.ShowDialog();//用户服务private UsersService userService;//修改密码的界面private SetPinForm setpinForm;//取现的界面private CashForm cashForm;//查询的界面private QueryForm queryForm;//转账的界面private TransferForm transferForm;//退卡的界面private EndForm endForm;//卡号private string cardID;public string CardID{get { return cardID; }set { cardID = value; }}}}改密界面using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace ATM1{public partial class SetPinForm : Form{public SetPinForm(string cardID){InitializeComponent();this.cardID = cardID;}private void SetPinForm_Load(object sender, EventArgs e)userService = UsersService.getService();}//取消按钮的事件private void pictureBox1_Click(object sender, EventArgs e){this.Dispose();father = new MainForm(this.cardID);father.ShowDialog();}private void pbEnsure_Click(object sender, EventArgs e){string pin = this.tbPin.Text.Trim();string pin_re = this.tbPin_re.Text.Trim();if (pin.Length == 0 || pin_re.Length == 0){infoForm = new InfoForm(this.cardID, "对不起,密码不能为空!");}else if (!pin.Equals(pin_re)){infoForm = new InfoForm(this.cardID, "对不起,密码前后不符合!"); }else{infoForm = new InfoForm(this.cardID, "密码修改成功。
ATM自动取款机系统的设计及实现--代码
ATM自动取款机系统的设计与实现---代码1.实现类//说明:1.管理员登录密码是:luolin//初始用户import java.util.Scanner;public class Achieve {Scanner in = new Scanner(System.in);public void login_interface()//初始界面{System.out.println("\n\n********************** ");System.out.println("** 欢迎进入ATM机**");System.out.println("**********************");System.out.println(" 选择登录方式:");System.out.println(" 1.管理员");System.out.println(" 2.客户");System.out.println(" 3.退出");System.out.println("**********************\n") ;System.out.print("请输入(1~3):");int n = in.nextInt();Bank_Manager bm = new Bank_Manager();User u = new User();switch(n){case 1 :bm.manager_login_passwd();case 2 :u.login();case 3 :System.out.println("本次操作结束!!");break;default: System.out.println("你输入有误,本次操作结束!!");System.exit(0);}}public static void main(String args[]) {Achieve a = new Achieve();a.login_interface();}}2.用户类:import java.util.Iterator;import java.util.Scanner;public class User {Scanner in = new Scanner(System.in);void login()//登录{boolean sign = true;boolean flag = true;Achieve a = new Achieve();System.out.println("请输入帐号:");int n = in.nextInt();System.out.println("请输入密码:");String m = in.next();Iterator<Bank_Manager> iter = Bank_er_list.iterator();while(iter.hasNext()){Bank_Manager b = iter.next();while(b.zhanghao == n && b.passwd.equals(m)){sign = false;if(flag){user_interface(b);}System.out.print("请输入(1~6或其他):");int s = in.nextInt();switch(s){case1 :deposit(b);System.out.println("\n请按“任意字符+回车”回到登录界面");in.next();user_interface(b);flag=false;continue;case2 :draw_money(b);System.out.println("\n请按“任意字符+回车”回到登录界面");in.next();user_interface(b);flag=false;continue;case3 :serch_money(b);System.out.println("\n请按“任意字符+回车”回到登录界面");in.next();user_interface(b);flag=false;continue;case4 :transform_money(b);System.out.println("\n请按“任意字符+回车”回到登录界面");in.next();user_interface(b);flag=false;continue;case5 :alter_passwd(b);System.out.println("\n请按“任意字符+回车”回到登录界面");in.next();user_interface(b);flag=false;continue;case6 :alter_login();System.out.println("\n请按“任意字符+回车”回到登录界面");in.next();user_interface(b);flag=false;continue;default : a.login_interface();}}}if(sign){System.out.println("账号或密码错误,退出主界面。
Python实现的银行系统模拟程序完整案例
Python实现的银⾏系统模拟程序完整案例本⽂实例讲述了Python实现的银⾏系统模拟程序。
分享给⼤家供⼤家参考,具体如下:银⾏系统模拟程序1、概述使⽤⾯向对象思想模拟⼀个简单的银⾏系统,具备的功能:管理员登录/注销、⽤户开户、登录、找回密码、挂失、改密、查询、存取款、转账等功能。
编程语⾔:python。
2、⽬的通过这个编程练习,可以熟悉运⽤⾯向对象的思想来解决实际问题,其中⽤到的知识点有类的封装、正则表达式、模块等。
3、体会在编写这个程序时,实际上的业务逻辑还是要考虑的,⽐如修改密码时需要输⼊⼿机号、⾝份证号等。
在进⾏类的封装时,实际上还是⽤⾯向过程的思想把⼀些基本的业务逻辑编写成函数,对⼀些重复使⽤的代码也可以封装成函数(就是⾃⼰造适合这个业务的轮⼦,实际开发中很多底层的函数是不⽤⾃⼰再次去实现的,可以直接调⽤),这些都是⼀些底层的封装,然后在实现主要业务时上就可以调⽤类中的⽅法实现,这时只需关注业务逻辑就好了。
使⽤⾯向对象的思想进⾏编程,考虑的点是:实现⼀个功能,有哪些⽅法可以让我进⾏调⽤(指挥者)。
使⽤⾯向过程的思想进⾏编程,考虑的点是:实现⼀个功能,我需要实现哪些⽅法(执⾏者)。
编写这个程序还⽤到⼀个很重要的概念,就是对程序进⾏模块化。
模块化的好处是可以更好的对程序进⾏维护,条理也更清晰。
4、代码1、bankSystem.py⽂件from view import Viewfrom atm import ATMfrom person import Persondef func(view,atm,per):view.funcInterface()choice = input("请选择您要办理的业务:")if choice == '1':return per.checkMoney(atm)elif choice == '2':return per.saveMoney(atm)elif choice == '3':return per.getMoney(atm)elif choice == '4':return per.transferMoney(atm)elif choice == '5':return per.changePassword(atm)elif choice == '6':return per.unlockAccount(atm)elif choice == '7':return per.closeAccount(atm)elif choice == 'T':if per.exit(atm):return Trueelse:print("输⼊有误!")def main():# 管理员登录名为'admin',密码为'123'view = View("admin",'123')view.initface()atm = ATM()view.login()per = Person()while True:view.funcInit()choice = input("请选择您要办理的业务:")if choice == '1':per.newAccount(atm)elif choice == '2':if per.login(atm):while True:if func(view,atm,per) == None:continueelse:breakelif choice == '3':per.findBackPassword(atm)elif choice == '4':per.lockAccount(atm)elif choice == 'T':if per.exit(atm):# 管理员注销系统if view.logout():return Trueelse:print("输⼊有误!")if __name__ == '__main__':main()2、card.py⽂件:'''卡:类名:Card属性:卡号【6位随机】密码余额绑定的⾝份证号⼿机号'''class Card(object):def __init__(self, cardId, password, money,identityId,phoneNum,cardLock='False'):self.cardId = cardIdself.password = passwordself.money = moneyself.identityId = identityIdself.phoneNum = phoneNumself.cardLock = cardLock3、readAppendCard.py⽂件:'''功能:读取⽂件cardInfo.txt的信息⽅法:读、写、删'''from card import Cardimport json# 读class ReadCard(Card):def __init__(self, cardId='', password='', money=0, identityId='', phoneNum='', cardLock=''):Card.__init__(self, cardId, password, money, identityId, phoneNum, cardLock)def dict2Card(self, d):return self.__class__(d["cardId"], d["password"], d["money"],d["identityId"],d["phoneNum"], d["cardLock"]) def read(self):# card对象转为字典with open("cardinfo.txt","r",encoding="utf-8") as fr:cards = []for re in fr.readlines():cards.append(self.dict2Card(eval(re)))return cards# 写class AppendCard(Card):def __init__(self):Card.__init__(self, cardId = '', password = '', money = 0, identityId = '', phoneNum = '', cardLock='')def card2Dict(self,card):return {"cardId": card.cardId, "password": card.password,"money": card.money, "identityId": card.identityId,"phoneNum": card.phoneNum, "cardLock": card.cardLock}def append(self,card,w= 'a'):# 默认是追加,如果w='w'就清空⽂件if w == 'w':with open("cardinfo.txt", "w", encoding="utf-8") as fa:fa.write('')else:with open("cardinfo.txt", "a", encoding="utf-8") as fa:json.dump(card, fa, default=self.card2Dict)fa.write('\n')# 删class Del(object):def del_(self,cardId):readcard = ReadCard()cards = readcard.read()for card in cards:# 删除输⼊的卡号if cardId == card.cardId:cards.remove(card)breakelse:print("卡号不存在!")return False# 重新写⼊⽂件appendcard = AppendCard()appendcard.append('',w='w')for card in cards:appendcard.append(card)return True4、person.py'''⼈类名:Person⾏为:开户、查询、取款、存储、转账、改密、销户、退出'''class Person(object):def __init__(self,name='',identity='',phoneNum='',card=None): = nameself.identity = identityself.phoneNum = phoneNumself.card = card# 登录def login(self,atm):card = atm.login()if card:self.card = cardreturn Trueelse:return False# 开户def newAccount(self,atm):return atm.newAccount()#找回密码def findBackPassword(self,atm):return atm.findBackPassword()# 查询余额def checkMoney(self, atm):return atm.checkMoney(self.card)# 存钱def saveMoney(self, atm):return atm.saveMoney(self.card)# 取钱def getMoney(self, atm):return atm.getMoney(self.card)# 转账def transferMoney(self, atm):return atm.transferMoney(self.card)# 销户def closeAccount(self, atm):return atm.closeAccount(self.card)# 挂失def lockAccount(self, atm):return atm.lockAccount()# 解锁def unlockAccount(self, atm):return atm.unlockAccount(self.card)# 改密def changePassword(self, atm):return atm.changePassword(self.card)# 退出系统def exit(self, atm):return atm.exit()5、view.py'''管理员界⾯类名:View属性:账号,密码⾏为:管理员初始化界⾯管理员登陆系统功能界⾯管理员注销系统功能:开户查询取款存储转账改密销户退出'''from check import Checkimport timeclass View(object):def __init__(self,admin,password):self.admin = adminself.password = password# 管理员初始化界⾯def initface(self):print("*------------------------------------*")print("| |")print("| 管理员界⾯正在启动,请稍候... |")print("| |")print("*------------------------------------*")time.sleep(1)return#管理员登录界⾯def login(self):print("*------------------------------------*")print("| |")print("| 管理员登陆界⾯ |")print("| |")print("*------------------------------------*")check = Check()erName(self.admin,self.password)print("*-------------登陆成功---------------*")print(" 正在跳转到系统功能界⾯,请稍候... ")del checktime.sleep(1)return# 管理员注销界⾯def logout(self):print("*------------------------------------*")print("| |")print("| 管理员注销界⾯ |")print("| |")print("*------------------------------------*")#确认是否注销check = Check()if not check.isSure('注销'):return FalseerName(self.admin,self.password)print("*-------------注销成功---------------*")print(" 正在关闭系统,请稍候... ")del checktime.sleep(1)return True#系统功能界⾯'''系统功能:开户,查询,取款,存储,转账,销户,挂失,解锁,改密,退出 '''def funcInit(self):print("*-------Welcome To Future Bank---------*")print("| |")print("| (1)开户 (2)登录 |")print("| (3)找回密码 (4)挂失 |")print("| (T)退出 |")print("| |")print("*--------------------------------------*")def funcInterface(self):print("*-------Welcome To Future Bank---------*")print("| |")print("| (1)查询 (5)改密 |")print("| (2)存款 (6)解锁 |")print("| (3)取款 (7)销户 |")print("| (4)转账 (T)退出 |")print("| |")print("*--------------------------------------*")6、atm.py'''提款机:类名:ATM属性:⾏为(被动执⾏操作):开户,查询,取款,存储,转账,销户,挂失,解锁,改密,退出'''from check import Checkfrom card import Cardfrom readAppendCard import ReadCard,AppendCardimport randomimport timeclass ATM(object):def __init__(self):# 实例化相关的类self.check = Check()self.readCard = ReadCard()self.appendCard = AppendCard()self.cards = self.readCard.read()# 显⽰功能界⾯def funcShow(self,ope):if ope != "找回密码":print("*-------Welcome To Future Bank-------*")print("| %s功能界⾯ |"%ope)print("*------------------------------------*")else:# 显⽰找回密码界⾯print("*-------Welcome To Future Bank-------*")print("| 找回密码功能界⾯ |")print("*------------------------------------*")# 卡号输⼊def cardInput(self,ope=''):while True:cardId = input("请输⼊卡号:")password = input("请输⼊密码:")card = self.check.isCardAndPasswordSure(self.cards, cardId,password) if not card:print("卡号或密码输⼊有误")if ope == 'login' or ope == 'lock':return Falseelse:continueelse:return card# 登录def login(self):self.funcShow("登录")return self.cardInput('login')#找回密码def findBackPassword(self):self.funcShow("找回密码")cardId = input("请输⼊卡号:")card = self.check.isCardIdExist(self.cards,cardId)if card:if not self.check.isCardInfoSure(card,"找回密码"):returnnewpassword = self.check.newPasswordInput()index = self.cards.index(card)self.cards[index].password = newpasswordself.writeCard()print("找回密码成功!请重新登录")time.sleep(1)return Trueelse:print("卡号不存在")return True# 开户def newAccount(self):self.funcShow("开户")# 输⼊⾝份证号和⼿机号pnum = self.check.phoneInput()iden = self.check.identifyInput()print("正在执⾏开户程序,请稍候...")while True:# 随机⽣成6位卡号cardId = str(random.randrange(100000, 1000000))# 随机⽣成的卡号存在就继续if self.check.isCardIdExist(self.cards,cardId):continueelse:break# 初始化卡号密码,卡⾥的钱,卡的锁定状态card = Card(cardId, '888888', 0, iden, pnum , 'False')self.appendCard.append(card)print("开户成功,您的卡号为%s,密码为%s,卡余额为%d元!"%(cardId,'888888',0)) print("为了账户安全,请及时修改密码")# 更新卡号列表self.cards = self.readCard.read()return True# 查询def checkMoney(self,card):self.funcShow("查询")if self.check.isCardLock(card):print("查询失败!")else:print("卡上余额为%d元!" %card.money)time.sleep(1)# 存款def saveMoney(self,card):self.funcShow("存款")if self.check.isCardLock(card):print("存钱失败!")else:mon = self.check.moneyInput("存款")# 找到所有卡中对应的卡号,然后对此卡进⾏存款操作index = self.cards.index(card)self.cards[index].money += monprint("正在执⾏存款程序,请稍候...")time.sleep(1)self.writeCard()print("存款成功!卡上余额为%d元!"%self.cards[index].money)time.sleep(1)# 取款def getMoney(self,card):self.funcShow("取款")if self.check.isCardLock(card):print("取钱失败!")else:print("卡上余额为%d元!" %card.money)mon = self.check.moneyInput("取款")if mon:if mon > card.money:print("余额不⾜,您当前余额为%d元!"%card.money)time.sleep(1)else:print("正在执⾏取款程序,请稍候...")time.sleep(1)# 找到所有卡中对应的卡号,然后对此卡进⾏存款操作index = self.cards.index(card)self.cards[index].money -= monself.writeCard()print("取款成功!卡上的余额为%d元!"%self.cards[index].money)time.sleep(1)# 转账def transferMoney(self,card):self.funcShow("转账")if self.check.isCardLock(card): #如果卡已锁定就不能进⾏转账操作print("转账失败!")returnwhile True:cardId = input("请输⼊对⽅的账号:")if cardId == card.cardId:print("不能给⾃⼰转账")returncardOther = self.check.isCardIdExist(self.cards,cardId) #判断对⽅卡号是否存在if cardOther == False:print("对⽅账号不存在")returnelse:breakwhile True:print("卡上余额为%d元"%card.money)mon = self.check.moneyInput("转账")if not mon: #输⼊的⾦额不对就返回returnif mon > card.money: #输⼊的⾦额⼤于卡上余额就返回print("余额不⾜,卡上余额为%d元!" % card.money)returnelse:breakprint("正在执⾏转账程序,请稍候...")time.sleep(1)index = self.cards.index(card) # 找到所有卡中对应的卡号,然后对此卡进⾏转账操作 self.cards[index].money -= monindexOther = self.cards.index(cardOther) #找到对卡卡号所处位置self.cards[indexOther].money += monself.writeCard()print("转账成功!卡上余额为%d元!" % self.cards[index].money)time.sleep(1)# 销户def closeAccount(self,card):self.funcShow("销户")if not self.check.isCardInfoSure(card,"销户"):returnif card.money >0:print("卡上还有余额,不能进⾏销户")returnif self.check.isSure("销户"):self.cards.remove(card) #移除当前卡号self.writeCard()print("销户成功!")time.sleep(1)return True# 挂失def lockAccount(self):self.funcShow("挂失")card = self.cardInput('lock')if not card:returnif card.cardLock == "True":print("卡已处于锁定状态")returnif not self.check.isCardInfoSure(card,"挂失"):returnif self.check.isSure("挂失"):index = self.cards.index(card) #找到所有卡中对应的卡号,然后对此卡进⾏挂失操作 self.cards[index].cardLock = "True"self.writeCard()print("挂失成功!")time.sleep(1)return True# 解锁def unlockAccount(self,card):self.funcShow("解锁")if card.cardLock == 'False':print("⽆需解锁,卡处于正常状态")returnif not self.check.isCardInfoSure(card,"解锁"):returnindex = self.cards.index(card)self.cards[index].cardLock = "False"self.writeCard()print("解锁成功!")time.sleep(1)return True# 改密def changePassword(self,card):self.funcShow("改密")if self.check.isCardLock(card):print("卡处于锁定状态,不能进⾏改密")returnif not self.check.isCardInfoSure(card,"改密"):return# 输⼊旧密码while True:password = input("请输⼊旧密码:")if self.check.isPasswordSure(password,card.password):breakelse:print("卡号原密码输⼊错误!")returnnewpassword = self.check.newPasswordInput()index = self.cards.index(card) #找到所有卡中对应的卡号,然后对此卡进⾏改密操作 self.cards[index].password = newpasswordself.writeCard()print("改密成功!请重新登录")time.sleep(1)return True# 写⼊⽂件def writeCard(self):self.appendCard.append('', w='w') #先清除原⽂件再重新写⼊for card in self.cards:self.appendCard.append(card)# 退出def exit(self):if self.check.isSure("退出"):return Trueelse:return False7、check.py'''验证类:⽤户名、密码、卡号、⾝份证、⼿机号验证使⽤正则表达式进⾏⽂本搜索'''import reclass Check(object):def __init__(self):pass#⽤户验证def userName(self,admin,password):self.admin = adminself.password = passwordwhile True:admin = input("请输⼊⽤户名:")password = input("请输⼊密码:")if admin != self.admin or password != self.password:print("⽤户名或密码输⼊有误,请重新输⼊")continueelse:return#是否确认某操作def isSure(self,operate):while True:res = input("是否确认%s?【yes/no】"%operate)if res not in ['yes','no']:print("输⼊有误,请重新输⼊")continueelif res == 'yes':return Trueelse:return False# ⼿机号验证def phoneInput(self):# 简单的⼿机号验证:开头为1且全部为数字,长度为11位while True:pnum = input("请输⼊您的⼿机号:")res = re.match(r"^1\d{10}$",pnum)if not res:print("⼿机号输⼊有误,请重新输⼊")continuereturn pnum# ⾝份证号验证def identifyInput(self):# 简单的⾝份证号验证:6位,只有最后⼀可以为x,其余必须为数字while True:iden = input("请输⼊您的⾝份证号(6位数字):")res = re.match(r"\d{5}\d|x$",iden)if not res:print("⾝份证号输⼊有误,请重新输⼊")continuereturn iden# 卡号是否存在def isCardIdExist(self,cards,cardId):for card in cards:if cardId == card.cardId:return cardelse:return False# 卡号和密码是否⼀致def isCardAndPasswordSure(self,cards,cardId,password):card = self.isCardIdExist(cards,cardId)if card:if card.password == password:return cardreturn False# 密码⼆次确认是否正确def isPasswordSure(self, newassword,oldpassword):if newassword == oldpassword:return Trueelse:return False# 卡号完整信息验证def isCardInfoSure(self,card,ope):phoneNum = input("请输⼊⼿机号:")iden = input("请输⼊⾝份证号:")if card.phoneNum == phoneNum and card.identityId == iden:return Trueprint("%s失败\n密码、⼿机号或⾝份证号与卡中绑定的信息不⼀致"%ope)return False# 卡号是否锁定def isCardLock(self,card):if card.cardLock == "True":print("此卡已挂失!")return Truereturn False# 输⼊⾦额验证def moneyInput(self,ope):mon = input("输⼊%s⾦额(100的倍数):"%ope)# 输⼊的钱必须是100的倍数if re.match(r"[123456789]\d*[0]{2}$", mon):return int(mon)print("输⼊有误,%s⾦额必须是100的倍数!请重新输⼊"%ope)return Falsedef newPasswordInput(self):while True:newpassword = input("请输⼊新密码:")if not re.match(r"\d{6}$",newpassword):print("密码必须是6位的纯数字")continuenewpasswordAgain = input("请重复输⼊新密码:")if self.isPasswordSure(newpassword, newpasswordAgain):breakelse:print("两次输⼊不⼀致!")continuereturn newpassword更多关于Python相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Python程序设计有所帮助。
pythonatm机程序代码
任务名称:Python ATM机程序代码一、引言随着科技的不断发展,自动取款机(ATM)已经成为我们生活中不可或缺的一部分。
ATM机的出现方便了人们的日常生活,为我们提供了便捷的取款、转账和查询服务。
本文将详细介绍如何使用Python编写一个简单的ATM机程序代码,以实现基本的取款、存款和查询功能。
二、程序设计2.1 程序流程下面是程序的基本流程:1.用户输入账号和密码进行登录2.登录成功后,进入主菜单3.用户选择相应的功能进行操作:取款、存款、查询余额、退出4.用户执行完操作后,可以选择返回主菜单继续操作或退出程序2.2 导入模块首先,需要导入相应的模块,以便使用模块中的函数和方法。
在本程序中,我们需要使用time模块来添加延迟效果,以模拟实际的ATM机操作;使用getpass模块来隐藏用户输入的密码。
import timeimport getpass# 其他需要导入的模块(如数据库模块)可根据需要自行添加2.3 登录功能实现在ATM机中,用户需要先进行登录才能进行后续的操作。
因此,我们需要实现一个登录功能。
用户需要输入正确的账号和密码才能成功登录。
def login():account = input("请输入账号:")password = getpass.getpass("请输入密码:")# TODO: 进行账号密码验证的逻辑判断,可连接数据库查询用户信息# 模拟登录操作,延迟2秒time.sleep(2)print("登录成功!")2.4 主菜单功能实现登录成功后,用户将进入主菜单,可以选择相应的功能进行操作。
我们可以使用一个无限循环来实现,用户在每次操作完后,可以选择退出或继续操作。
def main_menu():while True:print("====== 主菜单 ======")print("1. 取款")print("2. 存款")print("3. 查询余额")print("4. 退出")choice = input("请输入您的选择:")if choice == "1":withdraw()elif choice == "2":deposit()elif choice == "3":check_balance()elif choice == "4":print("谢谢使用,再见!")breakelse:print("无效的选择,请重新输入!")2.5 取款、存款和查询余额功能实现在ATM机中,用户可以进行取款、存款和查询余额的操作。
银行ATM自动取款机模拟程序
四、系统设计
• 模块结构图:
模拟ATM取款机
ATM功能类 登陆界面 核对密码 取款 转账 查询信息 退出系统 锁卡
consumer用户类 获取姓名 获取卡号 获取密码 获取余额 核对密码
五、详细设计
否
登陆界面
输入卡号和密码 功能界面 1.修改密码 2.取款 3.转账 4.查询余额 5.退出系统
卡号密码错误 超过3次?
六、编码与调试
consumer::consumer(char Name[],char Kahao[], float Money,char Password[]) //构造函数,建立账户 { strcpy(name,Name); strcpy(kahao,Kahao); money=Money; strcpy(passwd,Password); } float consumer::get_money() //取得余额 { return money; } char*consumer::get_name() //取得姓名 { return name; } char*consumer::get_kahao() //取得卡号 { return kahao; }
五、详细设计
4.3 类的设计
1)、定义了一个ATM取款机类,类中包括以下几部分: 公有段: 依次为登陆界面,核对密码,修改密码,取款,转账,查询信息,退 出系统,功能界面,锁机。 私有段: 记录密码输入次数。 友元函数: 取款,转账,查询信息,账号,密码。 2、)定义了一个consumer 类,类中包括以下几部分: 公有继承了consumer类 私有段: 卡号,用户姓名,用户密码,存款钱数 保护段: 取得姓名,取得卡号,取得密码,取得余额,设置密码,取钱
六、编码与调试
C语言ATM程序模拟
C语言A T M程序模拟As a person, we must have independent thoughts and personality.一、课题要求1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统。
2、查询余额:初始余额为10000元。
3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
4、ATM存款:不能出现负存款。
5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
二、代码#include ""#include ""#include ""#include ""#include ""void gotoxy(int x,int y); 改密码 *\n");printf("* 2.查询余额 *\n");printf("* 3.取款 *\n");printf("* 4.实时存款 *\n");printf("* 5.退出 *\n");printf("********************************\n");switch(getch()){case '1': mima(); break;case '2': yu_e(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': exit(); break;default:printf("error\n");}}回 2.退出 *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}. *\n");printf("* *\n"); printf("* *\n");printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 您的余额为 *\n"); printf("* *\n"); printf(" ");printf("%d",YU_E);printf("\n* *\n"); printf("* 1.返回 2.退出 *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}它 *\n");printf("* *\n"); printf("* 7.返回 8.退出 *\n"); printf("********************************\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入您要取款的金额 *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=z%100;if(beishu!=0){system("cls");delay();printf("********************************\n");printf("* *\n");printf("* 本ATM机只支持 100 的人民币 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000||z>5000){system("cls");printf("********************************\n");printf("* *\n");printf("* 每次取款不能超过 5000 元 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}YU_E=YU_E-z;success();}. *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 操作已成功 *\n"); printf("* *\n"); printf("* 1.返回 2.退出 *\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}. *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();enter_ATM();}//================================================================/ ///============== 简单转移函数=============//void zhuangyi(){mima();}//========================================//三、部分效果截图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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()+"','"+text[2].getText()+"','"+tex t[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自动柜员机");}}。