一、系统需求

使用仓颉编程语言,实现学生成绩管理系统,要求可以新增学生信息、查看所有学生信息、查看个人学生信息、修改学生信息、删除学生信息、保存学生信息的功能。

二、系统实现

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()
        }
    }
}

三、小结

本章为大家详细的介绍了仓颉编程语言中学生成绩管理系统的内容,下一章,为大家带来线程管理的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐