新闻详情

新闻详情

首页 / 资讯中心 / 详情

跟我一起学“仓颉”编程语言-银行ATM机系统

发布时间:2026/9/2 12:23:34来源:尧图网络
跟我一起学“仓颉”编程语言-银行ATM机系统
一、系统需求使用仓颉编程语言实现一个可以多用户的开户、查看余额、存款、取款的银行ATM机自动存取款系统。二、系统实现package Study.atm import std.random.Random import std.env.* import std.convert.* import std.collection.* // 用来存储多个账户信息 var accountList ArrayListAccount() /* * 账户类 */ class Account { private var _idcard: String private var _password: String private var _money: Float64 0.0 mut prop idcard: String { get() { this._idcard } set(_idcard) { this._idcard _idcard } } mut prop password: String { get() { this._password } set(_password) { this._password _password } } mut prop money: Float64 { get() { this._money } set(_money) { this._money _money } } } /* * 主菜单 */ func mainMenu() { println(欢迎使用ATM机自动存取款系统) subMenu() } /* * 次要菜单 */ func subMenu() { println(1. 开户) println(2. 余额) println(3. 存款) println(4. 取款) println(5. 退出) print(请选择您的需要: ) } /* * 开户 */ func createAccount() { println(开户信息) let id (Random().nextInt64(899999) 100000).toString() println(系统生成的卡号为: ${id}) print(请输入密码: ) let password getStdIn().readln().getOrThrow() while (true) { print(请再次输入密码: ) let passwordAgain getStdIn().readln().getOrThrow() if (password passwordAgain) { break } else { println(两次输入的密码不一样) } } var account Account() account.idcard id account.password password accountList.add(account) println(开户成功) println(卡号: ${account.idcard}) println(密码: ${account.password}) println(余额: ${account.money.format(.2)}) } /* * 检查用户信息 */ func checkAccount(data: String) { var result for (account in accountList) { if (data account.idcard) { result account.idcard } else if (data account.password) { result account.password } } return result } /* * 登录 */ func login() { print(请输入卡号: ) var id getStdIn().readln().getOrThrow() while (true) { if (id checkAccount(id)) { break } else { print(卡号错误, 请重新输入: ) id getStdIn().readln().getOrThrow() } } print(请输入密码: ) var password getStdIn().readln().getOrThrow() while (true) { if (password checkAccount(password)) { break } else { print(密码错误, 请重新输入: ) password getStdIn().readln().getOrThrow() } } return id } /* * 余额 */ func show() { println(余额信息) let id login() for (account in accountList) { if (id account.idcard) { println(您的余额为: ${account.money.format(.2)}) } } } /* * 存款 */ func save() { println(存款信息) let id login() print(请输入您的存款金额: ) let money getStdIn().readln().getOrThrow() for (account in accountList) { if (id account.idcard) { account.money Float64.parse(money) break } } println(存款成功) } /* * 取款 */ func take() { println(取款信息) let id login() var flag true while (flag) { print(请输入取款金额: ) let money Float64.parse(getStdIn().readln().getOrThrow()) for (account in accountList) { if (id account.idcard) { if (account.money 0.0 money account.money) { account.money - money println(取款成功) println(您的取款金额为: ${money.format(.2)}) println(您的余额为: ${account.money.format(.2)}) break } else { println(取款失败) println(您的取款金额为: ${money.format(.2)}) break } } } println(是否再次取款) println(再次取款: Y/y) println(取消取款: N/n) let takeInfo getStdIn().readln().getOrThrow() if (takeInfo y || takeInfo Y) { flag true } else if (takeInfo n || takeInfo N) { flag false } else { flag false println(非法输入) break } } } /* * 启动 */ public func begin() { mainMenu() while (true) { let input getStdIn().readln().getOrThrow() if (input 1) { // 开户 createAccount() // 次要菜单 subMenu() } else if (input 2) { // 余额 show() // 次要菜单 subMenu() } else if (input 3) { // 存款 save() // 次要菜单 subMenu() } else if (input 4) { // 取款 take() // 次要菜单 subMenu() } else if (input 5) { println(退出系统) break } else { println(非法输入) subMenu() } } }三、小结本章为大家详细的介绍了仓颉编程语言中银行ATM机系统的内容下一章为大家带来学生成绩管理系统的内容。最后创作不易如果大家觉得我的文章对学习仓颉服务端开发有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

10 分钟上手 tinygrad:5 秒训完 MNIST 的完整指南 2026/9/2 12:22:29

10 分钟上手 tinygrad:5 秒训完 MNIST 的完整指南

10 分钟上手 tinygrad:5 秒训完 MNIST 的完整指南 【免费下载链接】tinygrad You like pytorch? You like micrograd? You love tinygrad! ❤️ 项目地址: https://gitcode.com/GitHub_Trending/tiny/tinygrad 上周凌晨一点,我要调一个张量融合…

阅读更多 →
轻量级物理引擎Tinyphysicsengine:C语言单文件库集成与验证指南 2026/9/2 12:22:29

轻量级物理引擎Tinyphysicsengine:C语言单文件库集成与验证指南

今天来看一个非常轻量级的物理引擎项目:Tinyphysicsengine。如果你正在寻找一个易于集成、不依赖复杂第三方库、且能在嵌入式或资源受限环境中运行的物理模拟解决方案,那么这个项目值得你花几分钟了解一下。它不是一个功能齐全的3A游戏引擎,而…

阅读更多 →
资源管理器又崩了?ExplorerPatcher 修复资源管理器崩溃的完整指南(按症状排查) 2026/9/2 12:22:29

资源管理器又崩了?ExplorerPatcher 修复资源管理器崩溃的完整指南(按症状排查)

资源管理器又崩了?ExplorerPatcher 修复资源管理器崩溃的完整指南(按症状排查) 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/Ex…

阅读更多 →
QT集成Halcon显示3D对象实战:嵌入窗口、交互与性能优化 2026/9/2 12:22:29

QT集成Halcon显示3D对象实战:嵌入窗口、交互与性能优化

简介:面向需要把 Halcon 的三维对象嵌入到 Qt 界面中的开发者,此资源提供了一个可直接运行的工程模板,完整演示了基于 OpenGL 的显示方案,有效解决点云、网格模型无法在普通窗口控件中展示的问题。压缩包内共有七个文件&#xff0…

阅读更多 →
一个变量换掉整块后台的皮:vue-vben-admin 主题定制,从品牌主色到暗色模式 2026/9/2 12:22:29

一个变量换掉整块后台的皮:vue-vben-admin 主题定制,从品牌主色到暗色模式

一个变量换掉整块后台的皮:vue-vben-admin 主题定制,从品牌主色到暗色模式 【免费下载链接】vue-vben-admin A modern vue admin panel built with Vue3, Shadcn UI, Vite, TypeScript, and Monorepo. Its fast! 项目地址: https://gitcode.com/GitHub…

阅读更多 →
ELPI:可嵌入λProlog解释器,解决逻辑引擎嵌入难题 2026/9/2 12:19:29

ELPI:可嵌入λProlog解释器,解决逻辑引擎嵌入难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞