ATM实验报告C++.docx
- 文档编号:10565019
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:27
- 大小:176.63KB
ATM实验报告C++.docx
《ATM实验报告C++.docx》由会员分享,可在线阅读,更多相关《ATM实验报告C++.docx(27页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 实验 报告 C+