面向对象程序设计实验报告.docx

上传人:b****5 文档编号:6641722 上传时间:2023-01-08 格式:DOCX 页数:21 大小:280.97KB
下载 相关 举报
面向对象程序设计实验报告.docx_第1页
第1页 / 共21页
面向对象程序设计实验报告.docx_第2页
第2页 / 共21页
面向对象程序设计实验报告.docx_第3页
第3页 / 共21页
面向对象程序设计实验报告.docx_第4页
第4页 / 共21页
面向对象程序设计实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

面向对象程序设计实验报告.docx

《面向对象程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

面向对象程序设计实验报告.docx

面向对象程序设计实验报告

 

上海电力学院

课程设计报告

面向对象程序设计

(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);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1