ATM实验报告C++.docx

上传人:b****8 文档编号:10565019 上传时间:2023-02-21 格式:DOCX 页数:27 大小:176.63KB
下载 相关 举报
ATM实验报告C++.docx_第1页
第1页 / 共27页
ATM实验报告C++.docx_第2页
第2页 / 共27页
ATM实验报告C++.docx_第3页
第3页 / 共27页
ATM实验报告C++.docx_第4页
第4页 / 共27页
ATM实验报告C++.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

ATM实验报告C++.docx

《ATM实验报告C++.docx》由会员分享,可在线阅读,更多相关《ATM实验报告C++.docx(27页珍藏版)》请在冰豆网上搜索。

ATM实验报告C++.docx

ATM实验报告C++

《C++程序设计》开发总结报告

_____(ATM)的编程实现

姓名:

学号:

班级:

程序功能(50分)

代码质量

(20分)

报告质量(30分)

总成绩(100分)

批阅教师签字:

一、程序(或项目)背景

1.注册用户

(1)输入账号

(2)输入密码(3)再次输入密码确认:

若再次输入的密码与第一次不符,会提示重新设置密码。

在密码和账号输入完成之后输入姓名即可完成注册。

2.用户登录

输入账号登录,密码输入三次不正确之后系统自动退出。

(1)取款

(2)存款(3)查询余额(4)修改密码(再次确认)

ATM在社会中被使用的越来越多,一个安全方便的系统是很重要的。

二、相关技术

1.标准输入输出,类和函数

2.程序中使用的类库有

三、程序(或项目)设计

1.分析程序(或项目)的开发思路:

在打开界面的时候可以选择注册新用户或者登录旧用户。

(1)注册时,输入账号、密码和姓名。

(2)登录时,确认账号和密码匹配之后执行取钱,存钱和查询的功能。

密码二次确认。

三次密码错误自动退出。

取款时不能超出当前金额。

2.画出程序流程图或项目的架构图,并加以适当说明;

3.

AccountItem

stringm_Anumber;

stringm_Password;

stringm_Name;

doublem_Balance;

string

AccountItem(AccountItem&a);

AccountItem&operator=(AccountItem&a);

AccountItem();

AccountItem(stringnumber,stringpassword,stringname,doublebalance);

voidDisplay();

voidwrite(ofstream&out);

voidread(ifstream&cin);

intCheckNumber(stringAnumber);

stringGetNumber();

stringGetPassword();

voidUpdatePassword(stringpassword);

voidDeductBalance(doublepay);

voidStoreBalance(doublemoney);

doubleGetBalance();

stringGetName();

intIsNull();

Accountbook

AccountItemb[100];

intm_AccountCount;

voidSetAccountbook();

Accountbook();

voidLoadAccountbook();

voidStoreAccountbook();

AccountItemFindItem(stringnumber);

boolUpdateItem(AccountItemItem);

 

画出程序(或项目)中的关键类图,并加以适当说明。

(可选)

四、程序(或项目)实现

(1)定义

private:

stringAnumber;

stringPassword;

stringName;

doubleBalance;

(2)存钱取钱

voidAccountItem:

:

StoreBalance(doublemoney){

Balance=Balance+money;

}

voidAccountItem:

:

DeductBalance(doublepay){

if(Balance-pay<0){

cout<<"对不起,你的余额不足!

"<

return;

}

else{

Balance=Balance-pay;

}

}

(3)登录时do{

cout<<"请选择:

"<

cin>>n;

switch(n){

case1:

MyAccountbook.SetAccountbook();

break;

case2:

MyAccountbook.LoadAccountbook();

cout<<"请输入帐号:

";

cin>>AccountNo;

FindItem=MyAccountbook.FindItem(AccountNo);

if(FindItem.IsNull())

cout<<"此用户不存在!

"<

return;

cout<<"请输入密码:

";

cin>>AccountPassword;

if(FindItem.GetPassword()!

=AccountPassword)

cout<<"密码错误!

请重新输入"<

time++;

cout<<"请输入密码:

";

cin>>AccountPassword;

(4)登录成功后do{

cout<<"1:

取款\n"

<<"2:

存款\n"<<"3:

查询余额\n"<<"4:

修改密码\n"<<"0:

退出\n"<

cin>>m;

switch(m){

case1:

cout<<"请输入取款金额:

";

if(AccountPay>Balance)

break;

else{

cout<<"请取钱!

"<

break;

}

case2:

cout<<"请输入存款金额(RMB):

";

cin>>AccountPay;

break;

case3:

cout<<"余额是:

"<

break;

case4:

cout<<"请输入原密码:

"<

cin>>AccountPassword;

if(FindItem.GetPassword()==AccountPassword)

{

cout<<"请输入新密码:

"<

cin>>AccountPassword;

FindItem.UpdatePassword(AccountPassword);

cout<<"请确认新密码:

"<

cin>>AccountPassword;

if(FindItem.GetPassword()==AccountPassword){

cout<<"修改成功!

"<

MyAccountbook.UpdateItem(FindItem);

MyAccountbook.StoreAccountbook();

}

break;}}while(m!

=0);

case0:

break;

}}while(n!

=0);

return;}

intmain(){

Massaged;

d.MakeMassage();

return0;

}

列出实现中遇到的问题和解决方案。

开始的时候由于函数过多,经常混淆,后来把函数名以功能命名就得到了改善。

五、结果展示

登录界面

注册用户

密码错误三次自动退出

六、心得体会

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

就像我在写ATM类时,写完后,忘了在大括号后加个分号,这一点小小的错误也耽误了我几十分钟,所以说细节很重要。

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

在具体操作中对这学期所学的C++语言的理论知识得到巩固,达到课程设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C++语言具有的语句简洁,使用灵活,执行效率高等特点。

发现上机的重要作用,特别是对数组和循环有了深刻的理解。

七、参考文献

[1]陈维兴,林小茶:

《C++面向对象程序设计教程》[M],清华大学出版社

[2]丁峻岭:

《C语言程序设计》[M],中国铁道出版社

[3]孟程,刘峰:

《C++程序设计实例与操作》[M],航空工业出版社

 

源代码

#include

#include

#include

usingnamespacestd;

classAccountItem

{

private:

stringAnumber;

stringPassword;

stringName;

doubleBalance;

public:

AccountItem(AccountItem&a)

{

Anumber=a.Anumber;

Password=a.Password;

Name=a.Name;

Balance=a.Balance;

}

AccountItem&operator=(AccountItem&a)

{

Anumber=a.Anumber;

Password=a.Password;

Name=a.Name;

Balance=a.Balance;

return*this;

}

voidSetAccountItem(stringnumber,stringpassword,stringname,doublebalance);

AccountItem();

AccountItem(stringnumber,stringpassword,stringname,doublebalance);

voidDisplay();

voidwrite(ofstream&out);

voidread(ifstream&cin);

intCheckNumber(stringAnumber);

stringGetNumber();

stringGetPassword();

voidUpdatePassword(stringpassword);

voidDeductBalance(doublepay);

voidStoreBalance(doublemoney);

doubleGetBalance();

stringGetName();

intIsNull();

};

voidAccountItem:

:

SetAccountItem(stringnumber,stringpassword,stringname,doublebalance)

{

Anumber=number;

Password=password;

Name=name;

Balance=balance=0;

}

voidAccountItem:

:

UpdatePassword(stringpassword)

{

Password=password;

}

voidAccountItem:

:

StoreBalance(doublemoney)

{

Balance=Balance+money;

}

intAccountItem:

:

CheckNumber(stringAnumber)

{

if(Anumber==Anumber)

{

return1;

}

else

{

return0;

}

}

stringAccountItem:

:

GetNumber()

{

returnAnumber;

}

stringAccountItem:

:

GetPassword()

{

returnPassword;

}

voidAccountItem:

:

DeductBalance(doublepay)

{

if(Balance-pay<0)

{

cout<<"对不起,你的余额不足!

"<

return;

}

else

{

Balance=Balance-pay;

}

}

doubleAccountItem:

:

GetBalance()

{

returnBalance;

}

stringAccountItem:

:

GetName()

{

returnName;

}

intAccountItem:

:

IsNull()

{

if(Anumber=="")

return1;

return0;

}

voidAccountItem:

:

read(ifstream&cin)

{

cin>>Name;

cin>>Balance;

cin>>Anumber;

cin>>Password;

}

voidAccountItem:

:

write(ofstream&cout)

{

cout<

cout<

cout<

cout<

}

AccountItem:

:

AccountItem()

{

Anumber="";

Password="";

Name="";

Balance=0;

}

AccountItem:

:

AccountItem(stringnumber,stringpassword,stringname,doublebalance)

{

Anumber=number;

Password=password;

Name=name;

Balance=balance;

}

voidAccountItem:

:

Display()

{

cout<<"账号:

";

cout<

cout<<"密码:

";

cout<

cout<<"姓名:

";

cout<

cout<<"存款余额:

";

cout<

}

classAccountbook

{

private:

AccountItemb[100];

intm_AccountCount;

public:

voidSetAccountbook();

Accountbook();

voidLoadAccountbook();

voidStoreAccountbook();

AccountItemFindItem(stringnumber);

boolUpdateItem(AccountItemItem);

};

voidAccountbook:

:

SetAccountbook()

{

stringAccountNo;

stringAccountPassword;

stringItemName;

doubleBalance;

stringpassword1,password2;

ofstreamOutput("accountbook.txt");

cout<<"请输入帐号:

";

cin>>AccountNo;

cout<<"请输入密码:

";

while

(1){

cin>>password1;

cout<<"请输入确认密码:

"<

cin>>password2;

if(password1==password2)

{

AccountPassword=password1;

break;

}

else

{

cout<<"密码和确认密码不同!

"<<"请重新输入:

"<

}

}

cout<<"请输入姓名:

";

cin>>ItemName;

b[m_AccountCount].SetAccountItem(AccountNo,AccountPassword,ItemName,Balance);

m_AccountCount++;

for(intj=0;j

{

b[j].write(Output);

}

}

Accountbook:

:

Accountbook()

{

m_AccountCount=0;

}

voidAccountbook:

:

LoadAccountbook()

{

ifstreamInput("accountbook.txt");

intj=0;

while(Input)

{

b[j].read(Input);

j++;

}

Input.close();

m_AccountCount=j;

return;

}

AccountItemAccountbook:

:

FindItem(stringnumber)

{

inti;

boolFound=false;

for(i=0;i

{

if(b[i].GetNumber()==number)

{

Found=true;

break;

}

}

if(Found==true)

{

returnb[i];

}

else

{

returnAccountItem();

}

}

boolAccountbook:

:

UpdateItem(AccountItemItem)

{

stringno=Item.GetNumber();

inti;

boolflag=false;

for(i=0;i

{

if(b[i].GetNumber()==no)

{

flag=true;

break;

}

}

if(flag=true)

{

b[i]=Item;

}

returnflag;

}

voidAccountbook:

:

StoreAccountbook()

{

ofstreamOutput("accountbook.txt");

intk;

for(k=0;k

{

b[k].write(Output);

}

Output.close();

return;

}

classMassage

{

private:

AccountbookMyAccountbook;

AccountItemFindItem;

public:

Massage(){}

voidMakeMassage();

};

voidMassage:

:

MakeMassage()

{

ifstreamInput("accountbook.txt");

intn;

inttime=0;

stringAccountNo;

stringAccountPassword;

doubleAccountPay;

stringItemName;

doubleBalance;

stringTransactionCode;

cout<

do

{

cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"

<<"※※\n"

<<"※欢迎使用银行管理系统模拟ATM机※\n"

<<"※※\n"

<<"※请用户在使用前选择开户:

※\n"

<<"※1:

注册开户※\n"

<<"※2:

用户登录※\n"

<<"※0:

退出※\n"

<<"※※\n"

<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<

cout<<"请选择:

"<

cin>>n;

switch(n)

{

case1:

MyAccountbook.SetAccountbook();

break;

case2:

MyAccountbook.LoadAccountbook();

cout<<"请输入帐号:

";

cin>>AccountNo;

FindItem=MyAccountbook.FindItem(AccountNo);

if(FindItem.IsNull())

{

cout<<"此用户不存在!

"<

return;

}

cout<<"请输入密码:

";

cin>>AccountPassword;

if(FindItem.GetPassword()!

=AccountPassword)

{

cout<<"密码错误!

请重新输入"<

time++;

cout<<"请输入密码:

";

cin>>AccountPassword;

if(FindItem.GetPassword()!

=AccountPassword)

{

cout<<"密码错误!

请重新输入"<

time++;

cout<<"请输入密码:

";

cin>>AccountPassword;

if(FindItem.GetPassword()!

=AccountPassword)

{

cout<<"密码错误3次!

系统自动退出!

"<

return;

}

}

}

intm;

do{

cout<<"1:

取款\n"

<<"2:

存款\n"<<"3:

查询余额\n"<<"4:

修改密码\n"<<"0:

退出\n"<

cin>>m;

switch(m)

{

case1:

cout<<"请输入取款金额:

";

cin>>AccountPay;

FindItem.DeductBalance(AccountPay);

MyAccountbook.UpdateItem(FindItem);

MyAccountbook.StoreAccountbook();

if(AccountPay>Balance)

break;

else{

cout<<"请取钱!

"<

break;

}

case2:

cout<<"请输入存款金额(RMB

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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