面向对象程序设计实验报告.docx
- 文档编号:6641722
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:21
- 大小:280.97KB
面向对象程序设计实验报告.docx
《面向对象程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
面向对象程序设计实验报告
上海电力学院
课程设计报告
面向对象程序设计
(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.系统功能
首先编写一个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)主界面
(2)卡号、密码输入最多三次,否则直接退出系统。
(3)取款功能:
取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
(4)查询功能:
实现查询余额功能。
(5)更改密码:
实现密码更改功能,对于密码要有2次验证。
(6)锁卡功能:
实现卡被锁的功能
(7)退卡功能:
实现退出系统功能。
4.核心代码设计
(1)类编写
通过定义两个类,classconsumer(用户类)和classATM(ATM取款机类),对于classATM,public有登陆界面,核对密码,取款功能,功能界面,查询功能,更改密码,锁卡功能,退卡功能。
Private有记录密码输入次数。
对于classconsumer,public有获取姓名,获取卡号,获取密码,获取余额,设置密码,取款。
Private有用户密码,用户姓名。
(2)类的成员函数
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;
};
(3)各个功能的实现
(1)卡号、密码输入最多三次,否则直接退出系统。
voidATM:
:
exitATM()//退卡
{
cout< "< cout<<"请取回你的卡片"< exit(0); } //后面的退卡需要调用此函数 voidATM: : welcome() { times=0; cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"< cout<<"=================================================="< cout<<"*中国农业银行*"< cout<<"欢迎使用ATM自动柜员机"< cout<<"=================================================="< cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"< charpwd[8],num[20],ch; inti=0; do { i=0; cout< "; do { cin.get(ch);//对于键盘字符串的接收! num[i++]=ch; }while(ch! ='\n'); num[i-1]='\0'; i=0; cout<<"请输入密码: "; do{ cin.get(ch); pwd[i++]=ch; }while(ch! ='\n'); pwd[i-1]='\0'; if(! check_passwd(num,pwd)) { cout<<"你输入的卡号或密码有误,请重新输入"< times++; } else { functionshow(); } }while(times<3); exitATM(); } (2)取款功能: 取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。 voidATM: : fetchmoney()//取款 { floatm; charch; do { cout< "< cin>>m; while(m<=0) { cout<<"请输入您的取款金额! "< cin>>m; } if(cnsm.get_money()-m<0) { cout<<"对不起,你的余额不足! "< } else { cout< 请于30秒内取走您的钞票! "< cnsm.set_money(m); } cout<<"是否要继续该项操作: (y/n)"< cin>>ch; }while(ch=='y'||ch=='Y'); } (3)查询功能: 实现查询余额功能。 voidATM: : information()//查询 { cout<<"=================================================="< cout<<"您当前所剩余额为: "< cout<<"=================================================="< } (4)更改密码: 实现密码更改功能,对于密码要有2次验证。 voidATM: : change_passwd()//更改密码 { charpwd[8],repwd[8]; times=0; do { cout< "; cin>>pwd; if(! check_passwd(cnsm.get_num(),pwd)) times++; else break; }while(times<3); intt=1; do { cout<<"请输入新密码: "; cin>>pwd; cout<<"请确认新密码: "; cin>>repwd; t=strcmp(pwd,repwd);//相同返回0; if(t! =0) cout<<"对不起,您输入的两次密码不一样,请重新输入! "< }while(t! =0); cnsm.set_passwd(pwd); cout<<"密码修改成功! "< } (5)锁卡功能: 实现卡被锁的功能。 voidATM: : lock()//锁卡 { cout< "< exit (1);//系统非正常退出 } if(times==3) lock();//当密码输入三次错误后,进行锁卡 (6)退卡功能: 实现退出系统功能。 voidATM: : exitATM()//退卡 { cout< "< cout<<"请取回你的卡片"< exit(0); } (4)主函数 voidmain() { consumerc("张丽","20112218",5000,"456258");//先构造一个用户 ATMatm(c); atm.welcome(); } 三.心得体会 本次面向对象程序设计实践中,我完成了一个模仿ATM机存取款管理系统设计,刚开始时,对于这个课题的设计我首先是先进行功能的分析,针对其功能再设计其函数,在实现各个功能的时候,遇到了许多的问题,比如说取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制,在进行设计时,就没有实现机单笔最大取款金额限制这一要求功能,在实验中,有一些问题难以解决,但是通过查询资料,上网搜索,也得到一定程度的解决。 在设计过程中还有其他的各种问题,有请教老师的,老师都对我进行耐心的指导,解决了一些问题,还有问同学的,做相同课题同学们间的互相交流也使我受益匪浅。 经过一个星期的上机实验,对于面向程序设计这一门课我从课本上的例题教学,上机实验到现在的设计操作,明显有不同的感受,也许在书本上的例题能够看明白看懂,但是在自己进行设计并且运行的时候会出现许多的问题,检验自己许多方面的能力,细心程度,耐心程度等等。 此次课程设计,我对面向对象程序设计的认识得到了一定的提高,其实许多课程也是如此,我们不能单独停留在书本所交给我们的知识里,有时候的很多问题当你通过上机亲自操作,你会发现亲自实践比看书来得直观明了,这次的课程设计的目的也在于此,让我们通过实践来对所学知识进行检验以及深入的理解。 源代码 #include 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<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"< cout<<"=================================================="< cout<<"*中国农业银行*"< cout<<"欢迎使用ATM自动柜员机"< cout<<"=================================================="< cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"< charpwd[8],num[20],ch; inti=0; do { i=0; cout< "; do { cin.get(ch); num[i++]=ch; }while(ch! ='\n'); num[i-1]='\0'; i=0; cout<<"请输入密码: "; do{ cin.get(ch); pwd[i++]=ch; }while(ch! ='\n'); pwd[i-1]='\0'; if(! check_passwd(num,pwd)) { cout<<"你输入的卡号或密码有误,请重新输入"< times++; } else { functionshow(); } }while(times<3); exitATM(); } boolATM: : check_passwd(charnum[],charpwd[]) { if(strcmp(num,cnsm.get_num())==0&&strcmp(pwd,cnsm.get_passwd())==0) returntrue; else returnfalse; } voidATM: : functionshow() { intn; do { cout<<""< cout<<"本机可办理以下业务,请你输入相应的操作序号进行操作: "< cout<<"<1>查询"< cin>>n; while(n<1||n>4) { cout<<"对不起,本机无此项操作,请输入正确的操作序号! "< cin>>n; } switch(n) { case1: information();break; case2: fetchmoney();break; case3: change_passwd();break; case4: exitATM();break; } }while(true); } voidATM: : information()//查询 { cout<<"=================================================="< cout<<"您当前所剩余额为: "< cout<<"=================================================="< } voidATM: : fetchmoney()//取款 { floatm; charch; do { cout< "< cin>>m; while(m<=0) { cout<<"请输入您的取款金额! "< cin>>m; } if(cnsm.get_money()-m<0) { cout<<"对不起,你的余额不足! "< } else { cout< 请于30秒内取走您的钞票! "< cnsm.set_money(m); } cout<<"是否要继续该项操作: (y/n)"< cin>>ch; }while(ch=='y'||ch=='Y'); } voidATM: : change_passwd()//更改密码 { charpwd[8],repwd[8]; times=0; do { cout< "; cin>>pwd; if(! check_passwd(cnsm.get_num(),pwd)) times++; else break; }while(times<3); intt=1; do { cout<<"请输入新密码: "; cin>>pwd; cout<<"请确认新密码: "; cin>>repwd; t=strcmp(pwd,repwd);//相同返回0; if(t! =0) cout<<"对不起,您输入的两次密码不一样,请重新输入! "< }while(t! =0); if(times==3) lock();//当密码输入三次错误后,进行锁卡 cnsm.set_passwd(pwd); cout<<"密码修改成功! "< } voidATM: : lock()//锁卡 { cout< 请于柜台办理相关业务! "< exit (1);//系统非正常退出 } voidATM: : exitATM()//退卡 { cout< "< cout<<"请取回你的卡片"< exit(0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)