c++课设报告模拟自动取款机.docx

上传人:b****7 文档编号:24022772 上传时间:2023-05-23 格式:DOCX 页数:23 大小:59.63KB
下载 相关 举报
c++课设报告模拟自动取款机.docx_第1页
第1页 / 共23页
c++课设报告模拟自动取款机.docx_第2页
第2页 / 共23页
c++课设报告模拟自动取款机.docx_第3页
第3页 / 共23页
c++课设报告模拟自动取款机.docx_第4页
第4页 / 共23页
c++课设报告模拟自动取款机.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

c++课设报告模拟自动取款机.docx

《c++课设报告模拟自动取款机.docx》由会员分享,可在线阅读,更多相关《c++课设报告模拟自动取款机.docx(23页珍藏版)》请在冰豆网上搜索。

c++课设报告模拟自动取款机.docx

c++课设报告模拟自动取款机

福建农林大学计算机与信息学院

计算机类

课程设计报告

课程名称:

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

课程设计题目:

模拟自动取款机(ATM)

姓名:

罗嗣茂

系:

信息工程学院

专业:

计算机科学与技术

年级:

1230501

学号:

201230050110

指导教师:

全蕾

 

2014年6月10日

目录

1.设计目的1

2.设计要求1

3.设计方案1

3.1.设计题目:

模拟自动取款机(ATM)1

3.2.系统特点2

4.设计内容3

4.1.层次分析3

4.2.核心算法5

5.实现说明7

5.1.程序代码:

7

5.2.执行结果16

6.总结19

7.参考文献19

模拟自动取款机(ATM)

1.设计目的

《面向对象程序设计课程设计》是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。

其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。

通过课程设计,让学生能够熟练进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。

2.设计要求

1、掌握使用一种面向对象程序设计语言如BorlandC++或VisualC++等。

2、培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。

3、通过课程设计,要求学生在指导教师的指导下,独立完成实习课题的全部内容,包括:

1通过调查研究和上机实习,收集和调查有关技术资料。

2掌握设计课题的基本步骤和方法。

⑶根据课题的要求进行上机实验调试。

4、课程设计完成后,提交课程设计报告

3.设计方案

3.1.设计题目:

模拟自动取款机(ATM)

运用C++语言描述ATM机类和银行卡类,每个类均包含数据成员和成员函数,并运用对象的引用和友元类的知识。

注重面向对象程序设计理论知识的理解与实际的动手编程能力。

运用面向对象的理念实现模拟自动取款机使用过程中的界面和用户交互过程。

本课程设计要实现的主要功能如下:

1.查询银行卡余额;

2.取款;

3.修改银行卡密码;

4.退出系统。

3.2.系统特点

3.2.1.系统实现:

1.核对密码:

核对用户输入的密码是否正确;

2.修改密码:

修改银行卡密码;

3.取款:

取款;

4.查询信息:

查询余额;

5.退出系统:

操作完成退出;

6.锁机吞卡:

操作不当如:

密码输入错误超过3次,银行卡将被锁。

3.2.2.系统分工:

功能

方法或函数

相关描述

相关负责人

登陆界面

voidwelcome()

显示欢迎界面

赵巧娜

核对所输卡号,

密码是否正确

boolcheckpasswd(charn[],charpwd[])

核对信息

赵巧娜

修改密码

voidchangepasswd()

修改银行卡密码

赵巧娜

取款

voidfetchmoney()

取款

赵巧娜

显示信息

voidinformation()

显示银行卡信息

赵巧娜

退出系统

voidexitATM()

退出ATM机

赵巧娜

功能界面

voidfunctionshow()

显示操作功能

赵巧娜

锁卡,退出系统

voidlock()

锁银行卡

赵巧娜

辅助功能

voidClear()

清除屏幕上的信息

赵巧娜

char*getname()

取得银行卡姓名

赵巧娜

char*getnum()

取得银行卡号

赵巧娜

char*getpasswd()

取得银行卡密码

赵巧娜

floatgetmoney()

取得银行卡余额

赵巧娜

voidsetpasswd(charpwd[])

设置银行卡密码

赵巧娜

voidsetmoney(floatm)

更新银行卡金额

赵巧娜

4.设计内容

4.1.层次分析

1.主程序流程图:

2.类结构图:

BankCard

-passwd[8]:

char

-name[20]:

char

-num[20]:

char

-money:

float

+BankCard(charName[],charNum[],floatMoney,charPassword[])

#*getname():

char

#*getnum():

char

#*getpasswd():

char

#getmoney():

float

#setpasswd(charpwd[])

#setmoney(floatm)

ATM类为BankCard类的友元类

ATM

-times:

int

-totalmoney:

float

-leftmoney:

float

-oncemoney:

float

-&BankCardAtATM:

BankCard

+ATM(&bc:

BankCard)

+welcome()

+checkpasswd(charn[],charpwd[])

+changepasswd()

+fetchmoney()

+information()

+exitATM()

+functionshow()

+lock()

+Clear()

4.2.核心算法

主要核心算法:

取款,修改密码。

以取款为例

1.流程图:

2.算法:

voidATM:

:

fetchmoney()//取款

{

floatm;

charch;

do

{

cout<

";

cin>>m;

while(m<=0)//金额不能为负的

{

cout<<"请输入正确的数字!

"<

cin>>m;

}

if(BankCardAtATM.getmoney()-m<0)

cout<

else

if(m>oncemoney)

cout<

";

else

if(m>leftmoney)

cout<

";

else

{

cout<

";

leftmoney=leftmoney-m;

BankCardAtATM.setmoney(m);

};

Clear();

cout<

(Y/N)";

cin>>ch;

while(ch!

='n'&&ch!

='N'&&ch!

='y'&&ch!

='Y')

{

cin>>ch;

}

}while(ch=='y'||ch=='Y');

}

5.实现说明

5.1.程序代码:

#include

#include

#include

classBankCard;//银行卡类的提前声明

classATM//ATM取款机类的定义

{

public:

ATM(BankCard&bc):

BankCardAtATM(bc)//bc是BankCard类的引用型变量,

{

//因为ATM类中有BankCard类的私有数据成员,所以必须调用BankCard类的构造函数初始化变量bc

totalmoney=200000.0;

oncemoney=5000.0;

leftmoney=20000.0;

}

voidwelcome();//登陆界面

boolcheckpasswd(charn[],charpwd[]);//核对所输卡号,密码是否正确

voidchangepasswd();//修改密码

voidfetchmoney();//取款

voidinformation();//显示插入ATM机中的银行卡信息

voidexitATM();//退出系统

voidfunctionshow();//功能界面

voidlock();//锁卡,退出系统

voidClear();//清屏

private:

inttimes;//记录密码次数

floattotalmoney;//记录本ATM机存款总额

floatleftmoney;//记录取款机剩余金额

floatoncemoney;//记录取款单笔最高金额

BankCard&BankCardAtATM;//插入ATM机的银行卡信息

};

//BankCard类的声明

classBankCard//银行卡类

{

public:

friendclassATM;//将ATM类设置为BankCard类的友元类

BankCard(charName[],charNum[],floatMoney,charPassword[]);

protected:

char*getname();//取得银行卡姓名

char*getnum();//取得银行卡号

char*getpasswd();//取得银行卡密码

floatgetmoney();//取得银行卡余额

voidsetpasswd(charpwd[]);//设置银行卡密码

voidsetmoney(floatm);//更新银行卡金额

private:

charpasswd[8];//存储用户密码

charname[20];//存储用户姓名

charnum[20];//存储银行卡号

floatmoney;//存储银行卡金额

};

BankCard:

:

BankCard(charName[],charNum[],floatMoney,charPassword[])

{

strcpy(name,Name);

strcpy(num,Num);

money=Money;

strcpy(passwd,Password);

}

floatBankCard:

:

getmoney()//取得银行卡金额

{

returnmoney;

}

char*BankCard:

:

getname()//取得银行卡姓名

{

returnname;

}

char*BankCard:

:

getnum()//取得银行卡号

{

returnnum;

}

char*BankCard:

:

getpasswd()//取得银行卡密码

{

returnpasswd;

}

voidBankCard:

:

setmoney(floatm)//更新银行卡余额

{

money-=m;

}

voidBankCard:

:

setpasswd(charpwd[])//设置银行卡密码

{

strcpy(passwd,pwd);

}

//ATM类的成员函数实现

voidATM:

:

welcome()//显示欢迎界面

{charch;

charnum[8];

charpwd[8];

times=0;

cout<<"\t\t欢迎使用本行的ATM自动取款机!

"<

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

checkpasswd(num,pwd))//检查卡号、密码是否正确

{

cout<

times++;

}

else

{

functionshow();//检查合格,显示功能界面

}

}while(times<3);//卡号、密码输错超过3次,锁卡退出系统

lock();

}

boolATM:

:

checkpasswd(charnum[],charpwd[])//检查卡号、密码是否正确

{

if(strcmp(num,BankCardAtATM.getnum())==0&&

strcmp(pwd,BankCardAtATM.getpasswd())==0)

returntrue;

else

returnfalse;

}

voidATM:

:

functionshow()//显示功能菜单

{

intn;

do

{

cout<

cout<

"<

cout<<"\t\t1)修改密码"<

cout<<"\t\t2)取款"<

cout<<"\t\t3)查询余额"<

cout<<"\t\t4)退出系统"<

cout<<"********************************************************************"<

cout<<"请输入您要进行的操作:

";

cin>>n;

while(n<1||n>4)//输入正确的功能代号,不正确则反复重输

{

cout<

";

cin>>n;

}

Clear();

switch(n)

{

case1:

changepasswd();//选择修改秘密

Clear();

break;

case2:

fetchmoney();//选择取款

Clear();

break;

case3:

information();//选择查询余额

break;

case4:

exitATM();//选择退出系统

break;

}

}while(true);

}

voidATM:

:

changepasswd()//修改卡密码

{

charpwd[8],repwd[8];

times=0;

do

{

cout<

";//有三次输入旧密码的机会

cin>>pwd;

if(!

checkpasswd(BankCardAtATM.getnum(),pwd))

{times++;

cout<

Clear();

}

else

break;

}while(times<3);

if(times==3)//3次都没有输入正确的旧密码,则锁卡退出系统

lock();

intt=0;

do

{

cout<

";

cin>>pwd;

cout<

";

cin>>repwd;

if((t=strcmp(pwd,repwd))!

=0)

{cout<

Clear();

}

}while(t!

=0);

BankCardAtATM.setpasswd(pwd);

cout<

";//调用BankCard类的成员函数setpasswd设置新密码

}

voidATM:

:

fetchmoney()//取款

{

floatm;

charch;

do

{

cout<

";

cin>>m;

while(m<=0)//金额不能为负的

{

cout<

";

cin>>m;

}

if(BankCardAtATM.getmoney()-m<0)

cout<

else

if(m>oncemoney)

cout<

";

else

if(m>leftmoney)

cout<

";

else

{

cout<

";

leftmoney=leftmoney-m;

BankCardAtATM.setmoney(m);

};

Clear();

cout<

(Y/N)";

cin>>ch;

while(ch!

='n'&&ch!

='N'&&ch!

='y'&&ch!

='Y')

{

cin>>ch;

}

}while(ch=='y'||ch=='Y');

}

voidATM:

:

information()//显示银行卡信息

{

cout<<"********************************************************************"<

cout<<"*用户姓名:

"<

cout<<"*卡号:

"<

cout<<"*余额:

"<

cout<<"********************************************************************"<

}

voidATM:

:

lock()

{

cout<

"<

exit

(1);

}

voidATM:

:

exitATM()

{

cout<<"请取卡...."<

exit(0);

}

voidATM:

:

Clear()

{

system("cls");

}//清屏函数

voidmain()

{

BankCardc1("张三","39328",30000,"123456");

ATMatm(c1);

atm.welcome();

}

5.2.执行结果

初始卡号:

39328初始密码:

123456初始金额:

30000,单笔取款:

5000,ATM机最高存款额:

200000,ATM机当前剩余存款:

20000.

1.输入正确的卡号和密码进入系统:

2.密码或卡号输入错误:

3.输入错误的操作序号:

4.选择1操作(修改密码):

a)密码输入错误:

(旧密码)

b)新密码输入错误:

c)新旧密码输入正确:

5.选择2操作(取款):

1)输入正确的金额:

(5000)

2)输入正确的金额(6000):

3)输入正确的金额(27000):

4)连续取款4笔(5000)继续操作时:

6.选择3操作:

7.选择4操作(退出系统):

8.密码输错三次:

6.总结

这次课程设计让我更加了解了学到的C++知识。

课程设计不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力同时这也使我更加了解编程思想和编程技巧。

这次课程设计让我有一个深刻的体会,那就是细节决定成败,编程最需要的是严谨,如何的严谨都不过分,往往检查了半天发现错误发生在某个括号,分号,引号,或者数据类型上。

程序设计时,也不要怕遇到错误,在实际操作过程中犯的一些错误还会有意外的收获,感觉课程设计很有意思。

在具体操作中所学的理论知识得到巩固,达到课程设计的基本目的,也发现自己的不足之出。

由于自己的知识局限性,该课程设计实现的功能不是很完善并且在实际运行中存在着许多缺陷。

7.参考文献

[1]马石安魏文平编著《面向对象程序设计教程》清华大学出版社.

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

当前位置:首页 > 法律文书 > 起诉状

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

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