新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/19 10:44:37来源:尧图网络
跟我一起学“仓颉”编程语言-银行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

相关资讯

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

较早相关资讯

最新相关资讯

Spring Boot+Vue构建儿童玩具共享平台技术解析 2026/9/19 10:42:06

Spring Boot+Vue构建儿童玩具共享平台技术解析

1. 项目背景与需求分析儿童玩具共享平台的设计源于当代家庭育儿过程中的两大痛点:一方面是儿童玩具更新换代快、使用周期短造成的资源浪费,另一方面是家长对多元化、高性价比育儿方式的需求。根据市场调研数据显示,一个普通家庭在孩子0-6岁期…

阅读更多 →
VeighNa Trader 数据库配置与脚本读写实战:八种数据库接入、插件化架构与增删查操作 2026/9/19 10:42:06

VeighNa Trader 数据库配置与脚本读写实战:八种数据库接入、插件化架构与增删查操作

VeighNa Trader 数据库配置与脚本读写实战:八种数据库接入、插件化架构与增删查操作 【免费下载链接】vnpy 基于Python的开源量化交易平台开发框架 项目地址: https://gitcode.com/vnpy/vnpy 导读 VeighNa Trader(vnpy)是一套基于 Py…

阅读更多 →
LLM驱动的研究流水线自动化:OpenResearch实现全解析 2026/9/19 10:42:06

LLM驱动的研究流水线自动化:OpenResearch实现全解析

1. 为什么要专门搭一套"OpenResearch"式的研究流水线先说一下我做这件事的背景。过去很长一段时间,我都在跟研究报告、论文综述、技术调研这类任务打交道,日常工作流基本是这样的:打开十几个浏览器标签页,一边在数据库检…

阅读更多 →
OpenMed 临床诊断编码实战:将 NER 抽取结果映射为 ICD-10-CM / ICD-10-PCS 候选码 2026/9/19 10:42:06

OpenMed 临床诊断编码实战:将 NER 抽取结果映射为 ICD-10-CM / ICD-10-PCS 候选码

OpenMed 临床诊断编码实战:将 NER 抽取结果映射为 ICD-10-CM / ICD-10-PCS 候选码 【免费下载链接】openmed Local-first healthcare AI: clinical NER & HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple ML…

阅读更多 →
健身动作质量评估与CAD建模序列:两个垂直场景开源数据集解析 2026/9/19 10:42:06

健身动作质量评估与CAD建模序列:两个垂直场景开源数据集解析

前天晚上刷 GitHub 的时候,推送里跳出来两个最近开源的数据集。第一个是健身动作相关的,专门用来训练动作识别和动作质量打分;第二个是 CAD 方向的,把二维草图到三维建模的每一步命令整理成结构化数据。两个项目看着完全不搭边&am…

阅读更多 →
Hi3531 uboot移植实战:DDR3参数配置与板级移植详解 2026/9/19 10:39:05

Hi3531 uboot移植实战:DDR3参数配置与板级移植详解

/* 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
📞