做网站域名怎么选有利于seo,php做一个网站,手机端开发网站模板下载,网站开发出来有后台么#x1f3c6;本文收录于「Bug调优」专栏#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案#xff0c;希望能够助你一臂之力#xff0c;帮你早日登顶实现财富自由#x1f680;#xff1b;同时#xff0c;欢迎大家关注收藏… 本文收录于「Bug调优」专栏主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案希望能够助你一臂之力帮你早日登顶实现财富自由同时欢迎大家关注收藏订阅持续更新中upupup 问题描述 根据问题要求恰当定义一个或多个类注意每个类功能划分的合理性。 模拟 ATM 柜员机程序 内容要求设计模拟 ATM 柜员机程序。 要求当输入给定的卡号和密码初始卡号和密码为 123456时系统能登录 ATM 柜员机 系统用户可以按照以下规则进行 (1)查询余额初始余额为 10000 元 (2)ATM 取款每次取款金额为 100 的倍数总额不超过 5000 元支取金额不允许透支。 (3)ATM 存款不能出现负存款。 (4)修改密码新密码长度不小于 6 位不允许出现 6 位完全相同的情况只有旧密码 正确新密码符合要求且两次输入相同的情况下才可以成功修改密码
注释详细每个变量都要求有注释说明用途方法有注释说明功能对参数、返回值也要以注释的形式说明用途关键的语句段要求有注释解释。 程序的层次清晰独创性强可读性强。 如上问题有来自我自身项目开发有的收集网站有的来自读者如有侵权立马删除。 解决方案 如下是上述问题的解决方案仅供参考
代码展示 以下是一个使用C实现的模拟ATM系统程序。程序定义了两个类ATM和分别用于处理ATM操作和用户信息。每个类的功能划分合理代码注释详细程序层次清晰。
#include iostream
#include string
#include vectorusing namespace std;class User {
private:string cardNumber; // 卡号string password; // 密码double balance; // 余额public:User(string cardNumber, string password, double balance) : cardNumber(cardNumber), password(password), balance(balance) {}string getNumber() {return cardNumber;}bool verify(string input) {return input password;}double getBalance() {return balance;}bool deposit(double amount) {if (amount 0) {balance amount;return true;}return false;}bool withdraw(double amount) {if (amount 0 amount balance ((int)amount % 100 0) amount 5000) {balance - amount;return true;}return false;}bool change(string old, string newPass, string confirm) {if (verify(old) newPass.length() 6 newPass confirm) {password newPass;return true;}return false;}
};class ATM {
private:User* user; // 当前登录的用户public:ATM() : user(nullptr) {}bool login(vectorUser users, string cardNumber, string password) {for (auto u : users) {if (u.getNumber() cardNumber u.verify(password)) {user u;return true;}}return false;}void logout() {user nullptr;}void checkBalance() {if (user ! nullptr) {cout 您的余额为: user-getBalance() 元 endl;} else {cout 请先登录! endl;}}void deposit(double amount) {if (user ! nullptr) {if (user-deposit(amount)) {cout 存款成功当前余额为: user-getBalance() 元 endl;} else {cout 存款失败请输入有效金额! endl;}} else {cout 请先登录! endl;}}void withdraw(double amount) {if (user ! nullptr) {if (user-withdraw(amount)) {cout 取款成功当前余额为: user-getBalance() 元 endl;} else {cout 取款失败请确认金额是否正确或余额是否充足! endl;}} else {cout 请先登录! endl;}}void change(string old, string newPass, string confirm) {if (user ! nullptr) {if (user-change(old, newPass, confirm)) {cout 密码修改成功! endl;} else {cout 密码修改失败请确认旧密码是否正确以及新密码是否符合要求! endl;}} else {cout 请先登录! endl;}}
};int main() {vectorUser users;users.emplace_back(123456, 123456, 10000.0);ATM atm;int choice;string cardNumber, password, old, newPass, confirm;double amount;while (true) {cout 欢迎使用ATM系统! endl;cout 1. 登录 endl;cout 2. 查询余额 endl;cout 3. 存款 endl;cout 4. 取款 endl;cout 5. 修改密码 endl;cout 6. 注销 endl;cout 7. 退出系统 endl;cout 请选择操作: ;cin choice;switch (choice) {case 1:cout 请输入卡号: ;cin cardNumber;cout 请输入密码: ;cin password;if (atm.login(users, cardNumber, password)) {cout 登录成功! endl;} else {cout 登录失败卡号或密码错误! endl;}break;case 2:atm.checkBalance();break;case 3:cout 请输入存款金额: ;cin amount;atm.deposit(amount);break;case 4:cout 请输入取款金额: ;cin amount;atm.withdraw(amount);break;case 5:cout 请输入旧密码: ;cin old;cout 请输入新密码: ;cin newPass;cout 请确认新密码: ;cin confirm;atm.change(old, newPass, confirm);break;case 6:atm.logout();cout 已注销! endl;break;case 7:cout 退出系统! endl;return 0;default:cout 无效选择请重新选择! endl;break;}}return 0;
}代码说明
代码说明是对提供的代码进行解释以下是对您提供的代码的详细说明
类 User用户类 成员变量 cardNumber: 存储用户的卡号。password: 存储用户的密码。balance: 存储用户的账户余额。 构造函数初始化用户对象的卡号、密码和余额。 成员函数 getNumber(): 返回用户的卡号。verify(string input): 验证输入的密码是否与用户密码匹配。getBalance(): 返回用户的当前余额。deposit(double amount): 存款操作如果存款金额大于0则增加余额并返回true。withdraw(double amount): 取款操作如果取款金额大于0、不超过余额、是100的倍数且不超过5000则减少余额并返回true。change(string old, string newPass, string confirm): 修改密码操作如果旧密码正确、新密码长度至少6位、两次输入的新密码一致则更新密码。
类 ATM自动取款机类 成员变量 user: 指向当前登录用户的指针。 构造函数初始化user为nullptr表示没有用户登录。 成员函数 login(vectorUser users, string cardNumber, string password): 登录操作通过遍历用户列表来验证卡号和密码如果找到匹配的用户则设置当前用户并返回true。logout(): 注销操作将user设置为nullptr。checkBalance(): 查询余额操作如果用户已登录则显示余额。deposit(double amount): 存款操作如果用户已登录调用用户对象的存款方法并显示结果。withdraw(double amount): 取款操作同上。change(string old, string newPass, string confirm): 修改密码操作同上。
主函数 main()
初始化一个用户列表包含一个示例用户。创建ATM对象。提供一个循环菜单让用户选择不同的操作 登录、查询余额、存款、取款、修改密码、注销或退出系统。 根据用户的选择执行相应的ATM操作。 希望如上措施及解决方案能够帮到有需要的你。 PS如若遇到采纳如下方案还是未解决的同学希望不要抱怨急躁毕竟影响因素众多我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴即把你未解决或者产生新Bug黏贴在评论区我们大家一起来努力一起帮你看看可以不咯。 若有对当前Bug有与如下提供的方法不一致有个不情之请希望你能把你的新思路或新方法分享到评论区一起学习目的就是帮助更多所需要的同学正所谓「赠人玫瑰手留余香」。 ☀️写在最后 ok以上就是我这期的Bug修复内容啦如果还想查找更多解决方案你可以看看我专门收集Bug及提供解决方案的专栏「Bug调优」都是实战中碰到的Bug希望对你有所帮助。到此咱们下期拜拜。 码字不易如果这篇文章对你有所帮助帮忙给bug菌来个一键三连(关注、点赞、收藏) 您的支持就是我坚持写作分享知识点传播技术的最大动力。 同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 以第一手学习bug菌的首发干货不仅能学习更多技术硬货还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料你想要的我都有 关于我
我是bug菌CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家C站博客之星Top30华为云2023年度十佳博主掘金多年度人气作者Top40掘金等各大社区签约作者51CTO年度博主Top12掘金/InfoQ/51CTO等社区优质创作者全网粉丝合计 30w硬核微信公众号「猿圈奇妙屋」欢迎你的加入免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料你想要的我都有关键是你不来拿哇。