ATM模拟程序(有用户界面,连接ACCESS数据库)
- 格式:doc
- 大小:291.00 KB
- 文档页数:28
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柜员机的主要功能如下所述:要求使用图形用户界面。
Java模拟实现ATM机Java模拟ATM机,供⼤家参考,具体内容如下实现登录,查询,转账,取款,修改密码,退出功能。
源码package bank;import java.io.*;import java.util.Scanner;//ATM类public class Atm {private String[] user;//⽤户全部信息private double money;//修改钱数private double userMoney;//⽤户的钱private String newPassword;private String userInFo;private int index;private int a =0;private int count = 10;public void show(){//显⽰界⾯index = logIn();if(index != -1){working();}}private String[] newStringUser(String[] str){count=count+10;String[] newUser = new String[count];for(int i=0;i<a;i++)newUser[i] = str[i];return newUser;}private void getUser(){//从⽂件获取全部⽤户String str;String[] strings = new String[count];File file = new File("src\\bank\\user");FileReader fileReader = null;BufferedReader bufferedReader = null;try{fileReader = new FileReader(file);bufferedReader = new BufferedReader(fileReader);while((str = bufferedReader.readLine())!=null){if(a<=count)strings[a++] = str;elsestrings = newStringUser(strings);}user = new String[a];for(int i=0;i<a;i++)user[i] = strings[i];strings = null;}catch(Exception e){e.printStackTrace();if((fileReader!=null)&&(bufferedReader!=null)){try {bufferedReader.close();fileReader.close();} catch (IOException e1) {e1.printStackTrace();}}}}private int logIn(){//⽤户登录getUser();String name,password,user;int number = -1;Scanner input = new Scanner(System.in);a:while(i<3){System.out.println("请输⼊⽤户名:");name = input.nextLine();System.out.println("请输⼊⽤户密码:");password = input.nextLine();user = name + "*" + password;for(int j=0;j<er.length;j++){a = er[j].split("\\*");userInFo = a[0]+"*"+a[1];if(userInFo.equals(user)){number = j;break a;}}i++;System.out.println("账户或密码错误请重新输⼊。
西安科技大学软件工程课程设计报告题目:ATM柜员机模拟程序班级:信计0801学号:080806013008080601260808060125姓名:覃永贤上官恩辉申松2010年12月目录1概述1.1目的及意义1.2 设计内容1.3 人员组成及分工2系统分析2.1 问题背景及概况2.2 系统需求分析3 系统设计3.1 软件结构设计3.2 数据库设计4系统实现4.1 开发环境4.2 关键技术4.3 主要功能代码5系统测试参考文献日历系统设计文档1 概述1.1目的及意义目的:1、培养独立的Java语言与算法设计方法,具备初步的独立分析和设计能力;2、学习软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、训练综合运用所学的理论知识和方法进行独立分析和解决问题的能力;4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
意义:模拟ATM柜员机的相关功能,实现其取款、余额查询、密码修改等相关功能,通过课程设计让我们了解其相关方面的运作过程。
1.2 设计内容使用图形用户界面模拟ATM柜员机的相关功能。
功能如下:1.实现用户登录功能。
2.实现余额查询功能。
3.实现取款功能。
4.实现密码修改功能。
1.3 人员组成及分工1、组员名单:覃永贤申松上官恩辉2、组员分工:(1)覃永贤负责程序设计(2)上官恩辉负责需求分析(3)申松负责软件测试2系统分析2.1 问题背景及概况人们日常生活中经常使用ATM柜员机,其极大的方便了人们的日常生活,同时在使用的过程中也会遇到这样那样的问题,如果有一款软件模拟ATM,可以帮助人们了解其运行过程,避免有些不必要的麻烦。
2.2 系统需求分析:2.2.1功能需求分析(1)用图形用户界面实现。
本系统基于JA V A采用多线程的程序设计,使得界面清晰直观,系统全部通过界面来实现系统的功能需求。
2.2.2性能需求分析(1)可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比如数据未初始化等,在出现不可知的错误以后,可以尽量安全的退出程序。
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.提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。
《C#课程设计》结业报告学号:专业:姓名:任课教师:日期:2013年12月28日目录摘要 (3)1 系统分析 (3)1.1背景分析 (3)1.2系统功能 (4)1.3主要问题 (4)1.4开发工具与环境 (4)1.4.1开发工具 (5)1.4.2开发环境 (5)2 系统整体设计 (5)2.1设计思想 (5)2.1.1功能模块划分 (5)2.2数据库设计 (6)3 系统详细设计 (7)3.1系统总设计 (7)3.2 登陆界面设计 (8)3.3查询界面设计 (12)3.4存、取款界面设计 (14)3.5转账界面设计 (16)3.6修改密码界面设计 (17)心得体会 (19)模拟ATM取款机系统摘要本ATM系统的目的就是建立一个客户平台,用户使用此平台进行查询余额、存款、取款、转账、修改密码等业务办理。
相对于柜员操作一样的,不过ATM 系统有的功能有权限设置,一些功能只有银行柜员才能进行的业务办理。
ATM取款系统的针对的用户群是使用此软件系统的用户,用户做为系统的服务群体,可以使用数据库已有的账号与密码,登陆ATM系统。
当用户成功登陆后就可以根据用户的需求进行各项业务的办理,办理完所有的手续后,用户的输入的新资料以及办理的业务处理后的信息都会反馈到数据库并且都会存入到数据库中。
这样用户就完成了办理业务。
1 系统分析1.1背景分析随着信息时代科技的飞速发展,使用ATM取款机、计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。
对于一些复杂的信息,就能够充分的发挥它们的优越性。
ATM柜员机就是技术发展的产物,相对的一台ATM柜员机与ATM系统是密不可分的。
本系统就是为了更方便人们的生活而设计的。
ATM系统作为一款数据传输的技术,用户信息和资金信息的繁杂,包含很多的数据的管理,以前的都是由一些柜员进行操作,而且手续很多。
对于ATM取款系统数据的统计和核实等都是采用卡号进行核对的,对于用户的信息资料、以及等用人工办理。
C语言程序设计报告(模拟ATM 取款机)仲恺农业工程学院工程实训报告ATM取款机课程名称C语言程序设计工程实训姓名林少烈院(系)计算机科学与工程学院专业班级计算机113班学号201110214317指导教师王成仲恺农业工程学院教务处制目录1 需求分析 (1)2 系统总框图和功能模块说明 (1)2.1 系统总框图 (1)2.2 功能模块说明 (1)3 系统设计 (2)3.1 主要结构体 (2)3.2主要功能函数 (3)3.3 关键函数的流程图 (3)4 系统调试 (11)5 总结 (21)6 源程序清单 (23)6.1头文件 (23)6.2主程序 (23)6.3 解除被冻结用户 (40)6.4 用户注册 (41)1 需求分析所设计的ATM取款机应具备以下功能:●插入银行卡(用账号输入的方式代替);●密码的输入;●用户信息查询;●用户余额查询;●取款;●转账;●修改密码;●退卡。
2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明输入用户账号模块:在运行时,完成用户账号的输入(代替插卡);输入账号密码模块:①在输入账号之后,完成用户密码的输入;②在修改密码的过程中,完成用户输入旧密码的功能;信息读取功能模块:完成用户信息的读取;冻结账号功能模块:当输入密码3次错误时,冻结用户账号:查询用户信息模块:完成用户的信息查询(不包括余额查询);查询余额功能模块:完成用户余额的查询;取款功能模块:完成取款功能模块:转账功能模块:完成转职功能;修改密码功能模块:完成用户修改密码功能;退卡功能模块:完成退卡功能(即:退出程序功能)。
3 系统设计3.1 主要结构体用户账号、姓名、密码、余额struct User //用户数据{char num[20]; //用户账号char name[10]; //姓名char password[7]; //密码float balance; //余额};3.2主要功能函数void read_info(); //用户信息读取void input_num(char * num); //输入账号void now_exist(char * num); //判断是否被冻结或不存在void existed(char * num);void input_password(char * p_word,char * W); //输入密码void face(); //界面显示void balance_refer(); //余额查询void choose(int c); //菜单选择void draw_money(); //取款void set_password(); //修改密码void input_new_password(char * old_password); //设置新密码void tran_account(); //转账void stamp(); //打印单条void info_refer(); //信息查询void out(); //退出程序void lock(); //冻结账号void save_info(); //存储信息3.3 关键函数的流程图Nnow_exitedinput_password 流choose 函数流程图draw_money 函数input_new_passwo 读取文件数lock 函数流程图save_info 函数流程图4 系统调试首先运行程序,系统提示输入账号。
自动取款机(ATM)模拟程序一、需求我们需要设计一个具备如下功能的ATM模拟程序。
●开户:用户能够通过ATM来开设帐号,开户需要设置密码。
●登录:用户能够登录到已经开设的帐号上,登录需要验证密码。
●管理帐号:用户登录到帐号上后,能够进行如下的操作。
■存款:将指定的款项存到帐号中。
■取款:从帐号中取出指定的款项。
■查询余额:查询帐号的余额。
■修改密码:修改帐号的密码。
二、分析面向对象编程的第一步是进行面向对象分析。
面向对象分析的目标是建立问题领域的模型,包括如下模型。
●功能模型:即画出每一个功能要求的用例图。
●对象模型:对用例模型进行分析,把系统分解成互相协作的类,通过类图/对象图描述对象、对象的属性、对象间的关系。
●动态模型:描述系统的动态行为,通过序列图来描述对象的交互,以揭示对象间如何写作来完成每个具体的用例,单个对象的状态变化和动态行为可以通过状态图来表达。
1.功能模型根据我们的需求,可以很容易地画出A TM模拟程序的用例图:可以看出,用户可以开户和登录帐号,开户或者登录帐号之后就能管理帐号。
要管理账号,就必须首先登录帐号或者开户。
管理帐号的功能包括存款、取款、查询余额和修改密码。
2.对象模型ATM是银行相连的设备,因此银行是A TM模拟程序的相关对象,所有的操作都是针对帐号的,因此帐号是其中的核心对象。
此外,需要一个程序来启动ATM。
因此,在ATM模拟程序中,我们需要处理四个类,或者说四类对象:启动程序、A TM、银行及帐号。
1)帐号类Account帐号类Account包含所有的帐号信息负责所有的帐号操作。
基本的帐号信息包括:●帐号名name●帐号密码password●帐号余额balance主要的帐号操作包括:●登录Login●存款Deposit●取款Withdraw●查询余额Get_Balance●修改密码ChangePassword2)银行类Bank银行类Bank的本质就是一组帐号的组合,并负责管理帐号。
JAVA 期中课程设计报告报告题目:ATM模拟程序姓名:刘佳学号:2009118287学院:信息科学与技术学院专业:计算机科学与技术班级:2009级计科(2)班一、课程设计目的和内容目的:课程设计的主要目的是结合面向对象程序设计课程,培养面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。
内容:设计ATM取款机主要包括登录页面、选择服务、存款、取款、查询余额、修改密码和退出等功能。
注:各种按钮的事件和功能简单模拟ATM取款机的要求。
二、系统需求分析(1)模拟ATM柜员机程序;(2)修改密码。
当用户需要修改密码时,可以用这个功能,新密码长度不小于6位,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
(3)取款。
用户根据自己需要取多少钱,输入要取的金额,每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
(4)查询余额。
用户需要知道自己帐户还剩多少钱时,可以查询自己帐户的余额。
(5)存款。
用户可以存款,金额为100的倍数,不能出现负存款。
(6)锁机。
当用户3次输入密码错误时,停止操作。
三、程序流程图四、程序流程图五、思路分析1、要写这个程序之前我看了书上的选举界面,想仿照这个例子的布局和参数传递来做ATM2、首先是写出各个界面,最初看了书上的选举界面的card布局,但是与我想要的ATM界面布局有所差异,所以后来想到设置窗口为card布局,再在窗口中添加每个面板3、每个面板就是一个出现的界面都是用方法写的以方便窗口调用(程序共有七个界面)4、接下来就是把每个每个面板串起来,这就要用事件来触发它,添加简单的事件。
5、把每个界面串起来后,要突破的第一个难关就是,用户登陆。
(写程序时最初考虑的是用输入输出流来做,因而我就要先写一个文本来存放我的用户名和密码以及用户的钱,首先就是读数据,我看了书上的考试系统的一个例子,我读数据则是在同一个文本中读出多个用户的信息,我则用了两次循环,把用户名、密码、钱读入后,再与我在窗口中输入的信息进行匹配)经过多次修改用户登陆成功了6、在用户登陆的时候,我们不得不考虑这样的问题,如果用户名或者是密码输入错误,我们应该怎样做,应该可以重新输入,首先的思想是光标重定位,但是当学习了线程的休眠以后就调用线程,达到了同样的效果。
7、现在就进入了选择业务的界面,会看到取款,查询余额等按钮选项。
进入第二个难关就是用输入输出流来修改密码,为了要实现这个功能,我把书上第十章的所有例子运行了一遍,看有哪些对于这个功能的实现能够有所帮助,其中发现了创建一个新文本来覆盖,我便在程序中使用了这个功能,用参数来传递修改的变量,后来在记事本中的替换功能中启发,想把改变的字符替换掉,但是这功能没有实现,最后用创建一个新的同名文本覆盖的方法实现了对于密码的修改和取款等变量改变的操作。
8、在实现大体的功能后,便对界面进行美化,首先使用了J类的Button,然后就是初始界面的“欢迎来到ATM取款机”用了线程的方法使它移动,并且设置了字体的一些样式,使字体看起来更加美观,学习了Java util类中的Date后,便在一些界面中加入了计时器。
9、由于用输入输出流做出来的ATM如果要随意的添加或者删除用户的话,其中的代码也会有一点改变,这显得有一些不方便,所以在学习Java连接数据库后,我便尝试用数据库做这个程序。
10、数据库做这个程序的主要思想就是参数传递。
相对于输入输出流要简单一点,而且它可以任意的添加或者删除用户。
因此程序的最后版本就是数据库。
七、调试与运行情况进入初始界面进入输入用户名的界面输入用户名错误时出现的界面(下面的“非法……”这一串字符会在两秒后消失这是调用线程的休眠方法)输入用户名正确后出现输入密码的界面输入密码错误后输入的界面(下面的“密码……”这一串字符会在两秒后消失这是调用线程的休眠方法)当用户名和密码都输入正确后便进入选择业务界面现在进入取款界面如果取100元钱的话,系统会出现以下提示如果选择其他的按钮,会出现以下界面如果选择余额查询的按钮会出现以下界面如果选择存钱这个按钮会出现以下界面如果你输入的金额是非法的(例如:有非数字的)便会出现以下界面现在进入修改密码界面如果你输入的原密码与你的密码不能匹配会出现以下提示信息如果你没有输入新密码或者输入时不小心敲了空格键会出现以下提示信息如果输入新密码和确认密码不相同会出现以下提示信息当你的旧密码输入正确并且新密码和确认密码相同后会出现以下提示信息八、程序代码ATM.javaimport java.sql.*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.Date.*;import java.awt.color.*;import javax.swing.Timer;class frame extends Frame implements ActionListener,Runnable{ Panel Panel1,Panel2,Panel3,Panel4,Panel5,Panel6,Panel7,panel1,panel2,panel3 ,panel4,panel5,panel6,panel7,panel8,panel9,panel10,panel11,panel12,pa nel13,panel14;JButtonbutton1,button2,button3,button4,button5,button6,button7,button8,butto n9,button10,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,b6,b7,b8,c1,c2,d1,d2;Labellabel1,label2,label3,label4,label5,label6,label7,label8,label9,label1 0,label11,label12,label13,label14;TextField text,text1,text2,text3,text4;CardLayout card=new CardLayout();//系统界面布局方式float gmoney=0;int state=0;//判别多个状态 1、修改密码;2、数据输入;3、菜单 String gid,pwd;Thread Scrollwords=null;Account act=new Account();SQL sql1=new SQL();Timer time;boolean boo;Box baseBox ,boxV1,boxV2;frame(String s)//主窗口{ super(s);Scrollwords=new Thread(this);//定义一个滚动字体的线程 time=new Timer(1000,this);//定义一个时间器this.showWelcome();//------------------------------- this.showInput();this.showMenu();this.showGetMoney();//主窗口调用各个方法实现各个界面 this.showQueryLeft();this.showChangeID();this.showXT();//------------------------------------setLayout(card);add(Panel1,"Panel1");add(Panel2,"Panel2");add(Panel3,"Panel3");add(Panel4,"Panel4");add(Panel5,"Panel5");add(Panel6,"Panel6");add(Panel7,"Panel7");addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});//添加window adapter 适配器setBounds(100,100,400,280);setVisible(true);Scrollwords.start();//调用线程的run方法}public void showWelcome()//进入欢迎界面{ Panel1=new Panel();Panel1.setBounds(100,100,400,280);Panel1.setLayout(new GridLayout(3,3,10,10));label1=new Label("欢迎来到ATM提款机");label1.setAlignment(Label.CENTER);//-------------------------label1.setFont(new Font("Serif",Font.BOLD,30));//设置标签的位置,字体样式,字体颜色label1.setForeground(Color.red);//----------------------------button1=new JButton("进入");button2=new JButton("退卡");button1.addActionListener(this);button2.addActionListener(this);panel1=new Panel();panel1.add(button1);panel1.add(button2);Panel1.add(label1);Panel1.add(panel1);}public void run()//字体的移动{ while(true){ int x=label1.getBounds().x;int y=120;x=x+5;label1.setLocation(x,y);if(x>380){ x=10;label1.setLocation(x,y);}try{ Scrollwords.sleep(100);}catch(InterruptedException e){}if(boo){ return; //结束run方法,导致线程死亡。