新闻详情

新闻详情

首页 / 资讯中心 / 详情

跟我一起学“仓颉”编程语言-学生成绩管理系统

发布时间:2026/9/18 15:40:44来源:尧图网络
跟我一起学“仓颉”编程语言-学生成绩管理系统
一、系统需求使用仓颉编程语言实现学生成绩管理系统要求可以新增学生信息、查看所有学生信息、查看个人学生信息、修改学生信息、删除学生信息、保存学生信息的功能。二、系统实现package Study.student import std.env.* import std.collection.* import std.convert.* import std.fs.* // 学生信息文件路径 const STUDNT_INFO_PATH ./src/student/student_info.txt // 学生信息集合 var studentList ArrayListStudent() class Student { Student(private var _id: String, private var _name: String, private var _cangJie: Float64, private var _math: Float64, private var _english: Float64){} prop id: String { get() { this._id } } mut prop name: String { get() { this._name } set(_name) { this._name _name } } mut prop cangJie: Float64 { get() { this._cangJie } set(_cangJie) { this._cangJie _cangJie } } mut prop math: Float64 { get() { this._math } set(_math) { this._math _math } } mut prop english: Float64 { get() { this._english } set(_english) { this._english _english } } /* * 新增学生信息 */ func addStudent() { println(\t-----------------------) println(\t 新增学生信息) println(\t-----------------------) print(\t 请输入学号: ) let id getStdIn().readln().getOrThrow() print(\t 请输入姓名: ) let name getStdIn().readln().getOrThrow() print(\t 请输入仓颉成绩: ) let cangJie Float64.parse(getStdIn().readln().getOrThrow()) print(\t 请输入数学成绩: ) let math Float64.parse(getStdIn().readln().getOrThrow()) print(\t 请输入英语成绩: ) let english Float64.parse(getStdIn().readln().getOrThrow()) studentList.add(Student(id, name, cangJie, math, english)) println(\t 新增学生信息成功) println(\t-----------------------) } /* * 修改学生信息 */ func editStudent() { println(\t-----------------------) println(\t 修改学生信息) println(\t-----------------------) print(\t 请输入学号: ) let id getStdIn().readln().getOrThrow() for (student in studentList) { if (id student.id) { print(\t 是否修改姓名(Y/N): ) var flag getStdIn().readln().getOrThrow() if (flag Y || flag y ) { print(\t 请输入新的姓名: ) let name getStdIn().readln().getOrThrow() student.name name } print(\t 是否修改仓颉成绩(Y/N): ) flag getStdIn().readln().getOrThrow() if (flag Y || flag y ) { print(\t 请输入新的仓颉成绩: ) let cangJie Float64.parse(getStdIn().readln().getOrThrow()) student.cangJie cangJie } print(\t 是否修改数学成绩(Y/N): ) flag getStdIn().readln().getOrThrow() if (flag Y || flag y ) { print(\t 请输入新的数学成绩: ) let math Float64.parse(getStdIn().readln().getOrThrow()) student.math math } print(\t 是否修改英语成绩(Y/N): ) flag getStdIn().readln().getOrThrow() if (flag Y || flag y ) { print(\t 请输入新的英语成绩: ) let english Float64.parse(getStdIn().readln().getOrThrow()) student.english english } } } println(\t 修改学生信息成功) println(\t-----------------------) } /* * 删除学生信息 */ func deleteStudent() { println(\t-----------------------) println(\t 删除学生信息) println(\t-----------------------) print(\t 请输入学号: ) let id getStdIn().readln().getOrThrow() studentList.removeIf({student student.id id}) println(\t 删除学生信息成功) println(\t-----------------------) } /* * 查看所有学生成绩 */ func selectStudents() { println(\t-----------------------) println(\t 查看所有学生信息) println(\t-----------------------) println(学号\t 姓名\t 仓颉\t 数学\t 英语) for (student in studentList) { println(${student.id}\t ${student.name}\t ${student.cangJie.format(.1)}\t ${student.math.format(.1)}\t ${student.english.format(.1)}) } println(\t-----------------------) } /* * 查看个人学生成绩 */ func selectStudent() { println(\t-----------------------) println(\t 查看个人学生信息) println(\t-----------------------) print(\t 请输入学号或姓名: ) let idOrName getStdIn().readln().getOrThrow() println(学号\t 姓名\t 仓颉\t 数学\t 英语) for (student in studentList) { if (idOrName student.id || idOrName student.name) { println(${student.id}\t ${student.name}\t ${student.cangJie.format(.1)}\t ${student.math.format(.1)}\t ${student.english.format(.1)}) } } println(\t-----------------------) } /* * 保存学生成绩 */ func saveStudent() { println(\t-----------------------) println(\t 保存学生信息) println(\t-----------------------) if (!exists(STUDNT_INFO_PATH)) { try ( file File.create(STUDNT_INFO_PATH) ) { var data data 学号\t 姓名\t 仓颉\t 数学\t 英语\n for (student in studentList) { data ${student.id}\t\t ${student.name}\t ${student.cangJie.format(.1)}\t ${student.math.format(.1)}\t ${student.english.format(.1)}\n } var byteData data.toArray() File.writeTo(STUDNT_INFO_PATH, byteData) } } else { var data data 学号\t 姓名\t 仓颉\t 数学\t 英语\n for (student in studentList) { data ${student.id}\t\t ${student.name}\t ${student.cangJie.format(.1)}\t ${student.math.format(.1)}\t ${student.english.format(.1)}\n } var byteData data.toArray() File.writeTo(STUDNT_INFO_PATH, byteData) } println(\t 保存学生信息成功) println(\t-----------------------) } } /* * 主菜单 */ func mainMenu() { println(*******************************************) println(***** 欢迎使用钝子生学生成绩管理系统 ******) println(*******************************************) subMenu() } /* * 次要菜单 */ func subMenu() { println(\t-----------------------) println(\t 1. 新增学生信息) println(\t 2. 查看所有学生信息) println(\t 3. 查看个人学生信息) println(\t 4. 修改学生信息) println(\t 5. 删除学生信息) println(\t 6. 保存学生信息) println(\t 7. 退出) println(\t-----------------------) println(*******************************************) print(\t 请选择您的需求: ) } /* * 启动 */ public func start() { mainMenu() while (true) { let student Student(, , 0.0, 0.0, 0.0) let input getStdIn().readln().getOrThrow() if (input 1) { // 新增学生信息 student.addStudent() subMenu() } else if (input 2) { // 查看所有学生信息 student.selectStudents() subMenu() } else if (input 3) { // 查看个人学生信息 student.selectStudent() subMenu() } else if(input 4) { // 修改学生信息 student.editStudent() subMenu() } else if(input 5) { // 删除学生信息 student.deleteStudent() subMenu() } else if(input 6) { // 保存学生信息 student.saveStudent() subMenu() } else if(input 7) { // 退出 println(***************** 已退出 ******************) println(************** 感谢您的使用 ***************) println(*******************************************) break } else { println(\t 非法输入) subMenu() } } }三、小结本章为大家详细的介绍了仓颉编程语言中学生成绩管理系统的内容下一章为大家带来线程管理的内容。最后创作不易如果大家觉得我的文章对学习仓颉服务端开发有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

oh-my-openagent prompt-async-gate 路径兼容性修复实录:从 `got undefined` 生产故障到双端回归验证 2026/9/19 1:04:17

oh-my-openagent prompt-async-gate 路径兼容性修复实录:从 `got undefined` 生产故障到双端回归验证

oh-my-openagent prompt-async-gate 路径兼容性修复实录:从 got undefined 生产故障到双端回归验证 【免费下载链接】oh-my-openagent OmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering. 项目地址: h…

阅读更多 →
ArcGIS土方计算全流程:TIN建模、投影校正与填挖方量批量统计 2026/9/19 1:04:17

ArcGIS土方计算全流程:TIN建模、投影校正与填挖方量批量统计

简介:这是一份针对测绘、地理信息与土木工程从业者的技术论证资料,围绕ArcGIS在土方量计算中的实用性展开,针对传统CASS不规则三角网法建模繁琐、可视化差、易出错等痛点,系统说明ArcGIS的替代优势。资源为单个PDF文件&#xff0c…

阅读更多 →
Claude Code /rc 扫码连不上?TaoToken 这样排查接口地址 2026/9/19 1:04:17

Claude Code /rc 扫码连不上?TaoToken 这样排查接口地址

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

阅读更多 →
把 Claude Code 的模型通道改到 TaoToken 之后,PowerShell 字体还被劫持? 2026/9/19 1:04:17

把 Claude Code 的模型通道改到 TaoToken 之后,PowerShell 字体还被劫持?

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

阅读更多 →
云上  会话想走兼容通道,TaoToken 行不行? 2026/9/19 1:04:17

云上 会话想走兼容通道,TaoToken 行不行?

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

阅读更多 →
DeepSeek Harness插件接入实战:从加载机制到Markdown预览开发 2026/9/19 1:01:17

DeepSeek Harness插件接入实战:从加载机制到Markdown预览开发

关于DeepSeek Harness这个系列,前面三篇我们已经从安装部署聊到配置文件,再到任务和上下文的管理,算是把骨架搭起来了。今天这篇是第四篇,专门聊插件接入。说句实在话,DSH这个工具从“能用”到“顺手”,中间…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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