欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    面向对象程序设计实验报告(共19页).doc

    • 资源ID:14377870       资源大小:279KB        全文页数:19页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向对象程序设计实验报告(共19页).doc

    精选优质文档-倾情为你奉上上 海 电 力 学 院课程设计报告面向对象程序设计(2012 /2013学年第一学期)课题名称 模仿ATM机存取款管理系统设计院(系) 电子与信息工程学院 专 业 通信工程 学 号 姓 名 时 间 2013年1月12日至1月18日地 点 奋进楼4楼5机房 指导教师 王剑云 目录一、设计目的与任务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. 系统功能首先编写一个class consumer(用户类)、class ATM(ATM取款机类)和一个main()函数,程序开始运行时调用main函数里设置好的用户信息,通过main函数来调用class ATM(ATM取款机类)和class consumer(用户类)中的相关函数和数据来达到程序的要求。class ATM(ATM取款机类)内主要有 void welcome(); / 登陆界面 bool check_passwd(char n,char pwd); / 核对密码 void fetchmoney(); / 取款功能 void functionshow(); / 功能界面 void information(); / 查询功能 void change_passwd(); / 更改密码 void lock(); / 锁卡功能 void exitATM(); / 退卡功能class consumer(用户类)内主要有char* get_name(); / 获取姓名 char* get_num(); / 获取卡号 char* get_passwd(); / 获取密码 float get_money(); / 获取余额 void set_passwd(char pwd); / 设置密码 void set_money(float m); / 取款通过在主界面的输入指令来实现各个函数的调用,以达到模仿ATM取款机的功能。系统功能图与流程图输入与功能对应的的数字判断有否开始执行相应功能结束是否ATM取款机Class ATM登陆Get name用户姓名Get num用户卡号Class consumer 用户类Main 主函数Welcome 登陆界面Check_passwd 核对密码Fetchmoney 取款Functionshow 功能Information查询Change_pssswd 改密改密Lock锁卡Exit退卡Get passwd密码Get money余额Get passwd密码设置Set money取款存储用户信息3 系统截图(1) 主界面 (2) 卡号、密码输入最多三次,否则直接退出系统。(3)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。(4) 查询功能:实现查询余额功能。(5) 更改密码:实现密码更改功能,对于密码要有2次验证。(6) 锁卡功能:实现卡被锁的功能(7) 退卡功能:实现退出系统功能。4. 核心代码设计(1)类编写通过定义两个类,class consumer(用户类)和class ATM(ATM取款机类),对于class ATM,public有登陆界面,核对密码,取款功能,功能界面,查询功能,更改密码,锁卡功能,退卡功能。Private有记录密码输入次数。对于class consumer,public有获取姓名,获取卡号,获取密码 ,获取余额,设置密码,取款。Private有用户密码,用户姓名。(2) 类的成员函数 class ATM / ATM取款机类public: ATM(consumer& cn):cnsm(cn) void welcome(); / 登陆界面 bool check_passwd(char n,char pwd); / 核对密码 void fetchmoney(); / 取款功能 void functionshow(); / 功能界面 void information(); / 查询功能 void change_passwd(); / 更改密码 void lock(); / 锁卡功能 void exitATM(); / 退卡功能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 passwd8;/ 用户密码char name20; / 用户姓名char num20;float money;(3) 各个功能的实现(1) 卡号、密码输入最多三次,否则直接退出系统。void ATM:exitATM() /退卡cout<<endl<<" 感谢您支持,欢迎下次光临! "<<endl;cout<<" 请取回你的卡片 "<<endl;exit(0);/后面的退卡需要调用此函数void ATM:welcome()times=0;cout<<""<<endl; cout<<"="<<endl;cout<<" *中国农业银行* "<<endl;cout<<" 欢迎使用ATM自动柜员机 "<<endl; cout<<"="<<endl; cout<<""<<endl;char pwd8,num20,ch;int i=0;doi=0;cout<<endl<<"请输入卡号:"docin.get(ch); /对于键盘字符串的接收!numi+=ch;while(ch!='n');numi-1='0'i=0;cout<<"请输入密码:"docin.get(ch);pwdi+=ch;while(ch!='n');pwdi-1='0'if(!check_passwd(num,pwd)cout<<"你输入的卡号或密码有误,请重新输入"<<endl;times+;elsefunctionshow();while(times<3);exitATM(); (2) 取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。void ATM:fetchmoney() /取款float m;char ch;docout<<endl<<"您要取多少钱:"<<endl; / 两种情况cin>>m;while(m<=0)cout<<"请输入您的取款金额!"<<endl;cin>>m;if(cnsm.get_money()-m<0)cout<<"对不起,你的余额不足!"<<endl;elsecout<<endl<<"操作成功!请于30秒内取走您的钞票!"<<endl;cnsm.set_money(m);cout<<"是否要继续该项操作:(y/n) "<<endl;cin>>ch;while(ch='y'|ch='Y');(3) 查询功能:实现查询余额功能。void ATM:information() /查询cout<<"="<<endl;cout<<"您当前所剩余额为: "<<cnsm.get_money()<<endl; /必须声明友元才能用cnsm调用其成员函数cout<<"="<<endl;(4)更改密码:实现密码更改功能,对于密码要有2次验证。void ATM:change_passwd() /更改密码char pwd8,repwd8;times=0;docout<<endl<<"请输入旧密码:"cin>>pwd;if(!check_passwd(cnsm.get_num(),pwd) times+;elsebreak;while(times<3); int t=1;docout<<"请输入新密码:"cin>>pwd;cout<<"请确认新密码:"cin>>repwd;t=strcmp(pwd,repwd); / 相同返回0;if(t!=0)cout<<"对不起,您输入的两次密码不一样,请重新输入!"<<endl;while(t!=0);cnsm.set_passwd(pwd);cout<<"密码修改成功!"<<endl;(5) 锁卡功能:实现卡被锁的功能。void ATM:lock() /锁卡cout<<endl<<"对不起,由于你的操作有误,你的卡片已被没收! "<<endl;exit(1); / 系统非正常退出if(times=3)lock(); /当密码输入三次错误后,进行锁卡(6)退卡功能:实现退出系统功能。void ATM:exitATM() /退卡cout<<endl<<" 感谢您支持,欢迎下次光临! "<<endl;cout<<" 请取回你的卡片 "<<endl;exit(0);(4) 主函数void main()consumer c("张丽","",5000,"");/ 先构造一个用户ATM atm(c);atm.welcome();三.心得体会本次面向对象程序设计实践中,我完成了一个模仿ATM机存取款管理系统设计,刚开始时,对于这个课题的设计我首先是先进行功能的分析,针对其功能再设计其函数,在实现各个功能的时候,遇到了许多的问题,比如说取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制,在进行设计时,就没有实现机单笔最大取款金额限制这一要求功能,在实验中,有一些问题难以解决,但是通过查询资料,上网搜索,也得到一定程度的解决。在设计过程中还有其他的各种问题,有请教老师的,老师都对我进行耐心的指导,解决了一些问题,还有问同学的,做相同课题同学们间的互相交流也使我受益匪浅。经过一个星期的上机实验,对于面向程序设计这一门课我从课本上的例题教学,上机实验到现在的设计操作,明显有不同的感受,也许在书本上的例题能够看明白看懂,但是在自己进行设计并且运行的时候会出现许多的问题,检验自己许多方面的能力,细心程度,耐心程度等等。此次课程设计,我对面向对象程序设计的认识得到了一定的提高,其实许多课程也是如此,我们不能单独停留在书本所交给我们的知识里,有时候的很多问题当你通过上机亲自操作,你会发现亲自实践比看书来得直观明了,这次的课程设计的目的也在于此,让我们通过实践来对所学知识进行检验以及深入的理解。源代码#include<iostream>using namespace std;class consumer;class ATM / ATM取款机类public: ATM(consumer& cn):cnsm(cn) void welcome(); / 登陆界面 bool check_passwd(char n,char pwd); / 核对密码 void fetchmoney(); / 取款功能 void functionshow(); / 功能界面 void information(); / 查询功能 void change_passwd(); / 更改密码 void lock(); / 锁卡功能 void exitATM(); / 退卡功能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 passwd8;/ 用户密码char name20; / 用户姓名char num20;float money;consumer: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;void consumer:set_passwd(char pwd)strcpy(passwd,pwd);void ATM:welcome()times=0;cout<<""<<endl; cout<<"="<<endl;cout<<" *中国农业银行* "<<endl;cout<<" 欢迎使用ATM自动柜员机 "<<endl; cout<<"="<<endl; cout<<""<<endl;char pwd8,num20,ch;int i=0;doi=0;cout<<endl<<"请输入卡号:"docin.get(ch); numi+=ch;while(ch!='n');numi-1='0'i=0;cout<<"请输入密码:"docin.get(ch);pwdi+=ch;while(ch!='n');pwdi-1='0'if(!check_passwd(num,pwd)cout<<"你输入的卡号或密码有误,请重新输入"<<endl;times+;elsefunctionshow();while(times<3);exitATM(); bool ATM:check_passwd(char num,char pwd)if(strcmp(num,cnsm.get_num()=0&&strcmp(pwd,cnsm.get_passwd()=0)return true;else return false;void ATM:functionshow()int n;do cout<<" "<<endl; cout<<"本机可办理以下业务,请你输入相应的操作序号进行操作:"<<endl; cout<<"<1> 查询 "<<endl<<"<2> 取款 "<<endl<<"<3> 更改密码 "<<endl<<"<4> 退出 "<<endl;cin>>n;while(n<1|n>4)cout<<"对不起,本机无此项操作,请输入正确的操作序号!"<<endl;cin>>n;switch(n)case 1:information(); break;case 2:fetchmoney();break;case 3:change_passwd(); break;case 4:exitATM(); break; while(true);void ATM:information() /查询cout<<"="<<endl;cout<<"您当前所剩余额为: "<<cnsm.get_money()<<endl; /必须声明友元才能用cnsm调用其成员函数cout<<"="<<endl;void ATM:fetchmoney() /取款float m;char ch;docout<<endl<<"您要取多少钱:"<<endl; / 两种情况cin>>m;while(m<=0)cout<<"请输入您的取款金额!"<<endl;cin>>m;if(cnsm.get_money()-m<0)cout<<"对不起,你的余额不足!"<<endl;elsecout<<endl<<"操作成功!请于30秒内取走您的钞票!"<<endl;cnsm.set_money(m);cout<<"是否要继续该项操作:(y/n) "<<endl;cin>>ch;while(ch='y'|ch='Y');void ATM:change_passwd() /更改密码char pwd8,repwd8;times=0;docout<<endl<<"请输入旧密码:"cin>>pwd;if(!check_passwd(cnsm.get_num(),pwd) times+;elsebreak;while(times<3); int t=1;docout<<"请输入新密码:"cin>>pwd;cout<<"请确认新密码:"cin>>repwd;t=strcmp(pwd,repwd); / 相同返回0;if(t!=0)cout<<"对不起,您输入的两次密码不一样,请重新输入!"<<endl;while(t!=0);if(times=3)lock(); /当密码输入三次错误后,进行锁卡cnsm.set_passwd(pwd);cout<<"密码修改成功!"<<endl;void ATM:lock() /锁卡cout<<endl<<"对不起,由于你的操作有误,您的卡片已被锁!请于柜台办理相关业务! "<<endl;exit(1); / 系统非正常退出void ATM:exitATM() /退卡cout<<endl<<" 感谢您支持,欢迎下次光临! "<<endl;cout<<" 请取回你的卡片 "<<endl;exit(0);void main()consumer c("张丽","",5000,"");/ 先构造一个用户ATM atm(c);atm.welcome();专心-专注-专业

    注意事项

    本文(面向对象程序设计实验报告(共19页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开