面向对象程序设计实验报告_第1页
面向对象程序设计实验报告_第2页
面向对象程序设计实验报告_第3页
面向对象程序设计实验报告_第4页
面向对象程序设计实验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海电力学院课程设计报告面向对象程序设计2012/2013学年第一学期)课题名称模仿ATM机存取款管理系统设计院(系)电子与信息工程学院专业通信工程学号姓名时间2013年1月12日至1月18日地点奋进楼4楼5机房指导教师王剑云#/19目录TOC\o"1-5"\h\z\o"CurrentDocument"一、设计目的与任务21、本课程设计的目的22、本课程设计的任务2\o"CurrentDocument"二、设计方案2\o"CurrentDocument"1.总体设计2\o"CurrentDocument"2.系统功能2\o"CurrentDocument"3.系统截图4\o"CurrentDocument"4.核心代码设计7\o"CurrentDocument"三.心得体会11一、设计目的与任务1、本课程设计的目的(1)课程设计是实践教学环节。设置课程设计的目的是加强学生对本课程及相关课程知识的理解,培养学生综合运用理论知识分析和解决实际问题的方法与能力。有助于提高学生的创新能力和创新意识。搞好课程设计教学工作,对实现专业培养目标,提高学生全面素质有重要作用。(2)通过课程设计更进一步理解C++的基础知识。(3)训练用系统的观点及软件开发的一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程中的问题分析、系统设计、程序编码、调试、测试等方面的基本方法和技能。(4)熟练掌握C++知识在程序中的应用,了解书本知识在解决实际问题中的用途。2、本课程设计的任务模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。功能要求:(1)卡号、密码输入最多三次,否则直接退出系统。(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。(3)查询功能:实现查询余额功能。(4)更改密码:实现密码更改功能,对于密码要有2次验证。(5)锁卡功能:实现卡被锁的功能。(6)退卡功能:实现退出系统功能。二、设计方案1.总体设计设计的这个程序是模拟ATM取款机的使用过程,该程序功能包括:1)卡号、密码输入最多三次,否则直接退出系统。2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。3)查询功能:实现查询余额功能。4)更改密码:实现密码更改功能,对于密码要有2次验证。5)锁卡功能:实现卡被锁的功能。6)退卡功能:实现退出系统功2.系统功能首先编写一个classconsumer(用户类)、classATM(ATM取款机类)和一个main()函数,程序开始运行时调用main函数里设置好的用户信息,通过main函数来调用classATM(ATM取款机类)和classconsumer(用户类)中的相关函数和数据来达到程序的要求。classATM(ATM取款机类)内主要有

voidwelcome();boolcheck_passwd(charn[],charpwd[]);voidfetchmoney();voidfunctionshow();voidinformation();voidchange_passwd();voidlock();voidexitATM();classconsumer(用户类)内主要有//登陆界面//核对密码//取款功能//功能界面//查询功能//更改密码//锁卡功能//退卡功能char*get_name();char*get_num();char*get_passwd();floatget_money();voidset_passwd(charpwd[]);voidset_money(floatm);//获取姓名//获取卡号//获取密码//获取余额//设置密码//取款通过在主界面的输入指令来实现各个函数的调用,以达到模仿ATM取款机的功能。系统功能图与流程图3.系统截图1)主界面\■D:\5K5raC+t\Debug\zhang.exe★宓★灵★右■★賈★窓夭丸★续★宓★珂★宓★灵★右■★賈★窓夭丸★续★宓★珂*巾国农业银厅*

次迎使用白TH它功柜员机☆★空:*蠱*€r*W=*F*程*蠱*€蠱*寸丈*☆“本<1可沓玉爲

本<1可沓玉爲

和>>>>理以下业瓠请你输入相应的操作序号迸行操作:办询款r.■…D帖K丽.■…D帖K丽€--\DetiLig\zhang_eM&"★条★宓★去*★宓*☆★佥★茂*45G25S呻国衣土银行X啟回S.升行自訪柜員矶本机可外理以下业瓠请你输入相应的操作序号进行操作:<1>杳询<2>里款<3>更改擁<4>适匕&刘不起,本机元止闻揉件,谙揃入王萌的凜作序号?(2)卡号、密码输入最多三次,否则直接退出系统。r,l~'D:\?t超1C-t\IDebug\zhang.exe'★池*黃必■黃-A■★说*itSA±§:2011ZZ1B嘯鰭卡韻黑有误,请重新输入谙Ajr-^-:20112218请输入密^.222222[尔繼入的卡号或密码有误,请重新输入请请你麵人主号:泅代和疏端入的卡号或密^有误Pressanijkeytocontinue请重覇输入3)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。|回|回★英?★>i■★:幺*工7^壬★:?★??★>L★匚弋*耳豆机呻同欣迎使血豆机呻同欣迎使血i^Jjj).A.4r^:20112218请输入密码=456258密办询款骰出^>>>>轧1234<<<<舞以下'咛,诘竹編“相噪作尺寻址苻噪件=!<uZn>您要取多少钱:密办询款骰出^>>>>轧1234<<<<舞以下'咛,诘竹編“相噪作尺寻址苻噪件=!<uZn>您要取多少钱:GOBOy您雯书爭少袖;30B鎳歸圖gw4)查询功能:实现查询余额功能。木机可也理卩下业务.请你输人相直的握咋序号进苻握F<1>杏询您,当苗所剩会瓢黄,4咖^56258123456123456理以下业务.请懈&入相应的操作序号进行操作:^56258123456123456理以下业务.请懈&入相应的操作序号进行操作:5)更改密码:实现密码更改功能,对于密码要有2次验证。-JT月〈旦即百狼^>>>>fell234力<<SZ€3rdTrdTrzTT力旧斯新改入人讥修码请请工畧6)锁卡功能:实现卡被锁的功能理次下业実肩你输入相应的操牛序号酉二操匸nTp理次下业実肩你输入相应的操牛序号酉二操匸nTpi®-&黑改二可莹取一還机>>>->E;:1234<K:f£3请输A.H密讶:linn-一q一『®-^-®-入人认青青青-一q一『®-^-®-入人认青青青333333444444444444疋环起,由于你加操作頁误,您的卡片已被^请于柜廿打浬相天业叙Pressan5?keytocontinue7)退卡功能:实现退出系统功能。本机可汗淫以下业亏-诗味输入杓应射操仁序弓进彳一操乍;7)退卡功能:实现退出系统功能。本机可汗淫以下业亏-诗味输入杓应射操仁序弓进彳一操乍;<1>查诃<2>取款<3>更取留码<4>很”感轆支叭綢鋼Pressan^Fkey七ocoirtiriLic.4.核心代码设计(1)类编写通过定乂两个类,classconsumer(用户类)和classATM(ATM取款机类),对于classATMpublic有登陆界面,核对密码,取款功能,功能界面,查询功能,更改密码,锁卡功能,退卡功能。Private有记录密码输入次数。对于classconsumer,public有获取姓名,获取卡号,获取密码,获取余额,设置密码,取款。Private有用户密码,用户姓名。(2)类的成员函数classATM//ATM取款机类{public://登陆界面//登陆界面//核对密码//取款功能voidwelcome();boolcheck_passwd(charn[],charpwd[]);voidfetchmoney();

voidfunctionshow();voidinformation();voidchange_passwd();voidlock();voidexitATM();private:inttimes;//记录密码输入次数//功能界面//功能界面//查询功能//更改密码//锁卡功能//退卡功能};classconsumer//用户类{public:friendclassATM;consumer(charName[],charNum[],floatMoney,charPassword[]);protected:char*get_name();//获取姓名char*get_num();//获取卡号char*get_passwd();//获取密码floatget_money();//获取余额voidset_passwd(charpwd[]);//设置密码voidset_money(floatm);//取款private:charpasswd[8];//用户密码charname[20];//用户姓名charnum[20];floatmoney;};3)各个功能的实现卡号、密码输入最多三次,否则直接退出系统。voidATM::exitATM()//退卡{cout<<endl<<"感谢您支持,欢迎下次光临!"<<endl;cout<<"请取回你的卡片"<<endl;exit(0);}//后面的退卡需要调用此函数voidATM::welcome(){times=0;coutvv"*"vvendl;cout<<"=================================================="<<endl;coutvv"*中国农业银行*"vvendl;coutvv"欢迎使用ATM自动柜员机"vvendl;cout<<"=================================================="<<endl;coutvv"*"vvendl;charpwd[8],num[20],ch;inti=0;do{i=0;coutvvendlvv"请输入卡号:";do{cin.get(ch);//对于键盘字符串的接收!num[i++]=ch;}while(ch!='\n');num[i-1]='\0';i=0;coutvv"请输入密码:";do{cin.get(ch);pwd[i++]=ch;}while(ch!='\n');pwd[i-1]='\0';if(!check_passwd(num,pwd)){coutvv"你输入的卡号或密码有误,请重新输入"vvendl;times++;}else{functionshow();}}while(timesv3);exitATM();}取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制voidATM::fetchmoney()//取款{floatm;charch;docoutvvendlvv"您要取多少钱:"vvendl;//两种情况cin>>m;while(mv=0){coutvv"请输入您的取款金额!"vvendl;cin>>m;}if(cnsm.get_money()-mv0){coutvv"对不起,你的余额不足!"vvendl;}else{coutvvendlvv'操作成功!请于30秒内取走您的钞票!"vvendl;cnsm.set_money(m);}coutvv"是否要继续该项操作:(y/n)"vvendl;cin>>ch;}while(ch=='y'||ch=='Y');}查询功能:实现查询余额功能。voidATM::information()//查询{coutvv"=================================================="vvendl;coutvv"您当前所剩余额为:"vvcnsm.get_money()vvendl;〃必须声明友元才能用cnsm调用其成员函数coutvv"=================================================="vvendl;}更改密码:实现密码更改功能,对于密码要有2次验证。voidATM::change_passwd()//更改密码{charpwd[8],repwd[8];times=0;do{coutvvendlvv"请输入旧密码:";cin>>pwd;if(!check_passwd(cnsm.get_num(),pwd))times++;elsebreak;}while(timesv3);intt=1;do{coutvv"请输入新密码:";cin>>pwd;coutvv"请确认新密码:”;cin>>repwd;t=strcmp(pwd,repwd);//相同返回0;if(t!=0)coutvv'对不起,您输入的两次密码不一样,请重新输入!"vvendl;}while(t!=0);cnsm.set_passwd(pwd);coutvv"密码修改成功!"vvendl;}锁卡功能:实现卡被锁的功能。voidATM::lock()//锁卡{coutvvendlvv"对不起,由于你的操作有误,你的卡片已被没收!"vvendl;exit(1);//系统非正常退出}if(times==3)lock();//当密码输入三次错误后,进行锁卡退卡功能:实现退出系统功能。voidATM::exitATM()//退卡{coutvvendlvv"感谢您支持,欢迎下次光临!"vvendl;coutvv"请取回你的卡片"vvendl;exit(0);}(4)主函数voidmain(){consumerc("张丽",”20112218",5000,"456258");〃先构造一个用户ATMatm(c);atm.welcome();}心得体会本次面向对象程序设计实践中,我完成了一个模仿ATM机存取款管理系统设计,刚开始时,对于这个课题的设计我首先是先进行功能的分析,针对其功能再设计其函数,在实现各个功能的时候,遇到了许多的问题,比如说取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制,在进行设计时,就没有实现机单笔最大取款金额限制这一要求功能,在实验中,有一些问题难以解决,但是通过查询资料,上网搜索,也得到一定程度的解决。在设计过程中还有其他的各种问题,有请教老师的,老师都对我进行耐心的指导,解决了一些问题,还有问同学的,做相同课题同学们间的互相交流也使我受益匪浅。经过一个星期的上机实验,对于面向程序设计这一门课我从课本上的例题教学,上机实验到现在的设计操作,明显有不同的感受,也许在书本上的例题能够看明白看懂,但是在自己进行设计并且运行的时候会出现许多的问题,检验自己许多方面的能力,细心程度,耐心此次课程设计,我对面向对象程序设计的认识得到了一定的提高,其实许多课程也是如此,我们不能单独停留在书本所交给我们的知识里,有时候的很多问题当你通过上机亲自操作,你会发现亲自实践比看书来得直观明了,这次的课程设计的目的也在于此,让我们通过实践来对所学知识进行检验以及深入的理解。源代码#include<iostream>usingnamespacestd;classconsumer;classATM//ATM取款机类{public:ATM(consumer&cn):cnsm(cn){}voidwelcome();//登陆界面boolcheck_passwd(charn[],charpwd[]);//核对密码voidfetchmoney();//取款功能voidfunctionshow();//功能界面voidinformation();//查询功能voidchange_passwd();//更改密码voidlock();//锁卡功能voidexitATM();//退卡功能private:inttimes;//记录密码输入次数consumer&cnsm;};classconsumer//用户类{public:friendclassATM;consumer(charName[],charNum[],floatMoney,charPassword[]);protected:char*get_name();//获取姓名char*get_num();//获取卡号char*get_passwd();//获取密码floatget_money();//获取余额voidset_passwd(charpwd[]);//设置密码voidset_money(floatm);//取款private:charpasswd[8];//用户密码charname[20];//用户姓名charnum[20];floatmoney;};consumer::consumer(charName[],charNum[],floatMoney,charPassword[]){strcpy(name,Name);strcpy(num,Num);money=Money;strcpy(passwd,Password);}floatconsumer::get_money(){returnmoney;}char*consumer::get_name()//对于数组的返回操作返回指针{returnname;}char*consumer::get_num(){returnnum;}char*consumer::get_passwd(){returnpasswd;}voidconsumer::set_money(floatm){money-=m;}voidconsumer::set_passwd(charpwd[]){strcpy(passwd,pwd);}voidATM::welcome(){times=0;cout<<"=================================================="<<endl;coutvv"*中国农业银行*"vvendl;coutvv"欢迎使用ATM自动柜员机"vvendl;coutvv"=================================================="vvendl;^^^"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"vvendl;charpwd[8],num[20],ch;inti=0;do{i=0;coutvvendlvv"请输入卡号:";do{cin.get(ch);num[i++]=ch;}while(ch!='\n');num[i-1]='\0';i=0;coutvv"请输入密码:";do{cin.get(ch);pwd[i++]=ch;}while(ch!='\n');pwd[i-1]='\0';if(!check_passwd(num,pwd)){coutvv"你输入的卡号或密码有误,请重新输入"vvendl;times++;}else{functionshow();}}while(timesv3);exitATM();}boolATM::check_passwd(charnum[],charpwd[]){if(strcmp(num,cnsm.get_num())==0&&strcmp(pwd,cnsm.get_passwd())==0)returntrue;elsereturnfalse;}voidATM::functionshow(){intn;do{coutvv""vvendl;coutvv"本机可办理以下业务,请你输入相应的操作序号进行操作:"vvendl;coutvv"v1>查询"vvendlvv"v2>取款"vvendlvv"v3>更改密码"vvendlvv"v4>退出"vvendl;cin>>n;while(nv1||n>4){cout<<"对不起,本机无此项操作,请输入正确的操作序号!"vvendl;cin>>n;}switch(n){case1:information();break;case2:fetchmoney();break;case3:change_passwd();break;case4:exitATM();break;}}while(true);}voidATM::information()//查询{cout<<"=================================================="<<endl;cnsmcout<<"您当前所剩余额为:"<<cnsm.get_money()<<endl;//必须声明友元才能用cnsm调用其成员函数cout<<"===============================================

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论