1、面向对象分析与设计ATM系统分析与设计需求分析一.总体要求:1,ATM叽要可以判断磁卡的类别,如果不是有效的磁卡则退卡;2,可以在较快的时间内响应用户的请求,并针对相应的请求执行正确的操作;3,当卡在ATM机内30秒内没有操作时,系统自动没收信用卡;4,查自己的账户时应显示余额和可用余额, 并显示ATM机里所拥有的现金面值, 让用户可以做出正确的选择;5,提取现金时提示用户输入取款金额并判断输入是否确,如果错误提醒用户并要求重新操作,正确则提醒用户收取现金;钞票在出钞机内 30秒内没人取走,自动回收钞票;6,转账汇款时让用户选择转账类型,要求用户输入转账账号并要求用户输入两 次,以确保没有输入
2、错误,在两次输入都正确的情况下,让用户输入转账金额, 并作最后的确认。7,进入修改密码界面后提醒用户输入新密码,并要求再次输入以确保密码统一 无误,在确认后完成修改操作,并提醒用户新询密码生效;8,对于错误的操作或者操作延时做出有效的处理。二,系统要求:要求用户一次取款数额不得大于 2500元;要求用户一天取款数额不得超过 5000元;要求用户连续输入错误密码次数不得超过 3次。三,系统性能要求:要求反应时间不得大于10秒钟;四:设计目标:系统可以提供24小时不间断服务,操作简单,可以很方便为用户提供取款、转 账/汇款、查询账户信息等服务。模型分析:设计DFD图(1)顶层DFD图:(2) 0层
3、 DFD图:用户密码确认银行卡退出选择操作判断超时退出类型操作类型执行操作(3)1 层 DFD图用户银行卡F(密码、选择(确认丿信息*选择交易未超时信息操作是否超过EL账更改密转账 .更改密码 -退出类型码操作取款子系统:客户存储信息单超时信息是否打印账单警告信息银行卡取款调用取选择选择货取款讨f提取 30秒内.操作款系统l币种类/金额U、现金/丿无响应收回货币选择信息现金用户警示信息查询子系统:客户存储信息单选择交易查询操作选择信息调用查询系统选择货币种类查询信息显查询账尸转账子系统:选择信息用户客户存储信息单选择 交易转入卡号信息更改密码子系统:客户存储信息单选择信息二:组织结构设计(1
4、)系统结构ATM机系统(2)读卡机系统(3 )键盘输入子系统认证子系统:显示子系统:出钞子系统:打印子系统:数据库子系统:建立模型:建立基本系统模型图:建立序列图:代码设计:#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();/ 查询信息voi
5、d 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();
6、/ 取得余额void set_passwd(char pwd);/ 设置密码void set_money(float m);/ 取钱private:char passwd8;/ 用户密码char name20;/ 用户姓名char num20;float money;/ * consumer 类的成员函数#include#include consumer:consumer(char Name, char Num,float Money,char Password) strcpy(name,Name); strcpy(num,Num);money=Money; strcpy(passwd,Pas
7、sword);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;void consumer:set_passwd(char pwd)strcpy(passwd,pwd);/ * ATM 类的成员函数#include #include #includevoid AT
8、M:welcome()times=0;cout$欢迎使用ATM自动取款机!endl;char pwd8,num20,ch;int i=0;doi=0;coutendl 请输入卡号 :; do(ch); numi+=ch;while(ch!=n); numi-1=0;i=0;cout 请输入密码 :;do(ch); pwdi+=ch;while(ch!=n); pwdi-1=0;if(!check_passwd(num,pwd)cout 你输入的卡号或密码有误, 请重新输入 endl;times+;elsefunctionshow(); while(times3);lock();bool ATM
9、:check_passwd(char num,char pwd)if(strcmp(num,()=0&strcmp(pwd,()=0)return true;elsereturn false;void ATM:functionshow()int n;docoutendl 请你输入相应的操作序号进行操作: endl;cout1) 修改密码 endl2) 取款 endl3) 查询余额 endl4) 退出系统 endl;cout;cinn;while(n4)cout 请输入正确的操作序号 !endl;cout;cinn;switch(n)case 1: change_passwd();break;c
10、ase 2: fetchmoney();break;case 3: information();break;case 4: exitATM();break;while(true);void ATM:change_passwd()char pwd8,repwd8;times=0;docoutendlpwd;if(!check_passwd(),pwd)times+;elsebreak;while(times3);if(times=3)lock();int t=0;docoutpwd;coutrepwd;if(t=strcmp(pwd,repwd)!=0)cout 密码不一致,请重新输入 !end
11、l;while(t!=0);(pwd);cout 密码修改成功 endl;void ATM:fetchmoney()float m;char ch;do:endl ;coutendlm;while(m=0)cout 请输入正确金额 endl;cout ;cinm;if()-m0)cout 对不起,你的余额不足 !endl;elsecoutendl 操作成功,请取钱 !endl; (m);cout 是否要继续该项操作: (Y/N) endl; cout ;cinch;while(ch!=n&ch!=N&ch!=Y&ch!=y)cout;cinch;while(ch=y|ch=Y);void ATM:information()coutendl;cout 用户姓名: ()endl;cout 卡号: ()endl;cout 余额 : ()endl;coutendl;void ATM:lock()coutendl 对不起,由于你的操作有误, 你的卡已经被没收 ! endl;exit(1);void ATM:exitATM()coutendl 感谢你对本银行的支持, 欢迎下次光临 !endl;cout请取卡endl;exit(0);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2