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

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

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

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

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

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

面向对象程序设计之课程设计

 

上 海 电 力 学 院

 

课程设计报告

面向对象程序设计

(2012 /2013 学年第一学期)

 

课题名称模仿 ATM 机存取款管理系统设计

院(系)电子与信息工程学院

专业通信工程

学号

姓名

时间2013 年 1 月 12 日至 1 月 18 日

地点奋进楼 4 楼 5 机房

指导教师王剑云

面向对象程序设计之课程设计

 

 

一、设计目的与任务 .......................................................................2

 

1、本课程设计的目的 ........................................................................................................................2

 

2、本课程设计的任务 ........................................................................................................................2

 

二、设计方案 ...................................................................................3

 

1.总体设计......................................................................................................................................3

 

2.系统功能......................................................................................................................................3

 

3. 系统截图 .....................................................................................................................................4

 

4.核心代码设计 .............................................................................................................................6

 

三.心得体会 ....................................................................................13

 

1

面向对象程序设计之课程设计

 

一、设计目的与任务

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

取款机类)和 classconsumer(用户类)中的相关函数和数据来达到程序的要求。

class

ATM(ATM 取款机类)内主要有

2

面向对象程序设计之课程设计

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 取款机的功能。

 

系统功能图与流程图

 

开始

 

输入与功能对

应的的数字

判断有否

 

执行相应功能

 

结束

 

3

面向对象程序设计之课程设计

 

ATM 取款机

 

Class ATM

登陆

 

Welcome

登陆界面

 

Check_passwd

核对密码

 

Fetchmoney

取款

 

Functionshow

功能

 

Information

查询

 

Change_psss

wd 改密

改密

Lock

锁卡

Exit

退卡

Class consumer

用户类

 

Get name

用户姓名

 

Get num

用户卡号

 

Get passwd

密码

 

Get money

余额

 

Get passwd

密码设置

 

Set money

取款

Main

主函数

 

存储用户

信息

 

3.系统截图

4

面向对象程序设计之课程设计

(1)主界面

 

(2)卡号、密码输入最多三次,否则直接退出系统。

 

5

面向对象程序设计之课程设计

(3)取款功能:

取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。

 

(4)查询功能:

实现查询余额功能。

 

(5)更改密码:

实现密码更改功能,对于密码要有 2 次验证。

 

6

面向对象程序设计之课程设计

(6)锁卡功能:

实现卡被锁的功能

 

(7)退卡功能:

实现退出系统功能。

 

4.核心代码设计

(1)类编写

通过定义两个类,classconsumer(用户类)和 classATM(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();// 取款功能

 

7

面向对象程序设计之课程设计

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 passwd[8];// 用户密码

char name[20]; // 用户姓名

char num[20];

float money;

};

(3)各个功能的实现

(1)卡号、密码输入最多三次,否则直接退出系统。

void ATM:

:

exitATM()//退卡

{

cout<

"<

cout<<"请取回你的卡片"<

exit(0);

}

//后面的退卡需要调用此函数

void ATM:

:

welcome()

{

times=0;

cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<

cout<<"=================================================="<

cout<<"*中国农业银行*"<

 

8

面向对象程序设计之课程设计

cout<<"欢迎使用 ATM 自动柜员机"<

cout<<"=================================================="<

cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<

char pwd[8],num[20],ch;

int i=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)取款功能:

取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。

void ATM:

:

fetchmoney()//取款

{

float m;

char ch;

do

 

9

面向对象程序设计之课程设计

{

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)查询功能:

实现查询余额功能。

void ATM:

:

information()//查询

{

cout<<"=================================================="<

cout<<"您当前所剩余额为:

 "<

调用其成员函数

cout<<"=================================================="<

}

(4)更改密码:

实现密码更改功能,对于密码要有 2 次验证。

void ATM:

:

change_passwd()//更改密码

{

char pwd[8],repwd[8];

times=0;

do

{

cout<

";

cin>>pwd;

if(!

check_passwd(cnsm.get_num(),pwd))

times++;

else

break;

}while(times<3);

 

10

面向对象程序设计之课程设计

int t=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)锁卡功能:

实现卡被锁的功能。

void ATM:

:

lock()//锁卡

{

cout<

 "<

exit

(1); // 系统非正常退出

}

if(times==3)

lock();//当密码输入三次错误后,进行锁卡

(6)退卡功能:

实现退出系统功能。

void ATM:

:

exitATM()//退卡

{

cout<

"<

cout<<"请取回你的卡片"<

exit(0);

}

 

(4)主函数

void main()

{

consumer c("张丽","20112218",5000,"456258");// 先构造一个用户

ATM atm(c);

atm.welcome();

}

 

11

面向对象程序设计之课程设计

 

三.心得体会

本次面向对象程序设计实践中,我完成了一个模仿 ATM 机存取款管理系统设计,刚开

始时,对于这个课题的设计我首先是先进行功能的分析,针对其功能再设计其函数,在实

现各个功能的时候,遇到了许多的问题,比如说取款金额受卡余额、机单笔最大取款金额

及机当前剩余金额的限制,在进行设计时,就没有实现机单笔最大取款金额限制这一要求

功能,在实验中,有一些问题难以解决,但是通过查询资料,上网搜索,也得到一定程度

的解决。

在设计过程中还有其他的各种问题,有请教老师的,老师都对我进行耐心的指导,

解决了一些问题,还有问同学的,做相同课题同学们间的互相交流也使我受益匪浅。

经过一个星期的上机实验,对于面向程序设计这一门课我从课本上的例题教学,上机

实验到现在的设计操作,明显有不同的感受,也许在书本上的例题能够看明白看懂,但是

在自己进行设计并且运行的时候会出现许多的问题,检验自己许多方面的能力,细心程度,

耐心程度等等。

此次课程设计,我对面向对象程序设计的认识得到了一定的提高,其实许多课程也是

如此,我们不能单独停留在书本所交给我们的知识里,有时候的很多问题当你通过上机亲

自操作,你会发现亲自实践比看书来得直观明了,这次的课程设计的目的也在于此,让我

们通过实践来对所学知识进行检验以及深入的理解。

 

源代码

#include

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();// 退卡功能

12

面向对象程序设计之课程设计

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 passwd[8];// 用户密码

char name[20]; // 用户姓名

char num[20];

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

13

面向对象程序设计之课程设计

{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<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<

cout<<"=================================================="<

cout<<"*中国农业银行*"<

cout<<"欢迎使用 ATM 自动柜员机"<

cout<<"=================================================="<

cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<

char pwd[8],num[20],ch;

int i=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');

 

14

面向对象程序设计之课程设计

pwd[i-1]='\0';

 

if(!

check_passwd(num,pwd))

{

cout<<"你输入的卡号或密码有误,请重新输入"<

times++;

}

else

{

functionshow();

}

 

}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<<""<

cout<<"本机可办理以下业务,请你输入相应的操作序号进行操作:

"<

cout<<"<1> 查询 "< 取款 "< 更改密码 "<

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

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

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

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