跟我一起学“仓颉”编程语言-学生成绩管理系统
·
一、系统需求
使用仓颉编程语言,实现学生成绩管理系统,要求可以新增学生信息、查看所有学生信息、查看个人学生信息、修改学生信息、删除学生信息、保存学生信息的功能。
二、系统实现
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 = ArrayList<Student>()
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()
}
}
}
三、小结
本章为大家详细的介绍了仓颉编程语言中学生成绩管理系统的内容,下一章,为大家带来线程管理的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)