已开启
基于仓颉语言的简易学生成绩管理系统山东科技大学 梁绍 栾文静老师 #420
aholi7c创建于 7月19日
基于仓颉语言的简易学生成绩管理系统山东科技大学 梁绍 栾文静老师 #420
已开启
共 1 个文件变更+188-0
| @@ -0,0 +1,188 @@ | |||
| 1 | +// 学生数据结构体 | ||
| 2 | +struct Student { | ||
| 3 | + var id: Int64 // 学号 | ||
| 4 | + var name: String // 姓名 | ||
| 5 | + var chinese: F64 // 语文 | ||
| 6 | + var math: F64 // 数学 | ||
| 7 | + var english: F64 // 英语 | ||
| 8 | +} | ||
| 9 | + | ||
| 10 | +// 全局存储学生数组 | ||
| 11 | +var studentList: Array<Student> = Array() | ||
| 12 | + | ||
| 13 | +// 打印主菜单 | ||
| 14 | +func showMenu() { | ||
| 15 | + println("===== 学生成绩管理系统 =====") | ||
| 16 | + println("1. 添加学生成绩") | ||
| 17 | + println("2. 根据学号查询学生") | ||
| 18 | + println("3. 修改学生成绩") | ||
| 19 | + println("4. 删除学生信息") | ||
| 20 | + println("5. 显示全部学生") | ||
| 21 | + println("6. 成绩统计(平均分/总分)") | ||
| 22 | + println("7. 按总分排序") | ||
| 23 | + println("0. 退出系统") | ||
| 24 | + print("请输入功能编号:") | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +// 1. 添加学生 | ||
| 28 | +func addStudent() { | ||
| 29 | + print("请输入学生学号:") | ||
| 30 | + let id = std.io.readInt64() | ||
| 31 | + // 判断学号是否重复 | ||
| 32 | + for s in studentList { | ||
| 33 | + if s.id == id { | ||
| 34 | + println("错误:该学号已存在!") | ||
| 35 | + return | ||
| 36 | + } | ||
| 37 | + } | ||
| 38 | + print("请输入学生姓名:") | ||
| 39 | + let name = std.io.readLine() | ||
| 40 | + print("语文成绩:") | ||
| 41 | + let chi = std.io.readF64() | ||
| 42 | + print("数学成绩:") | ||
| 43 | + let mat = std.io.readF64() | ||
| 44 | + print("英语成绩:") | ||
| 45 | + let eng = std.io.readF64() | ||
| 46 | + let newStu = Student{id: id, name: name, chinese: chi, math: mat, english: eng} | ||
| 47 | + studentList.append(newStu) | ||
| 48 | + println("学生添加成功!") | ||
| 49 | +} | ||
| 50 | + | ||
| 51 | +// 2. 学号查询学生 | ||
| 52 | +func queryStudent() { | ||
| 53 | + print("输入要查询的学号:") | ||
| 54 | + let targetId = std.io.readInt64() | ||
| 55 | + var findFlag = false | ||
| 56 | + for s in studentList { | ||
| 57 | + if s.id == targetId { | ||
| 58 | + printStudentInfo(s) | ||
| 59 | + findFlag = true | ||
| 60 | + break | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | + if !findFlag { | ||
| 64 | + println("未找到该学号学生") | ||
| 65 | + } | ||
| 66 | +} | ||
| 67 | + | ||
| 68 | +// 打印单个学生详情 | ||
| 69 | +func printStudentInfo(s: Student) { | ||
| 70 | + let total = s.chinese + s.math + s.english | ||
| 71 | + let avg = total / 3 | ||
| 72 | + println("------------------------") | ||
| 73 | + println("学号:${s.id} 姓名:${s.name}") | ||
| 74 | + println("语文:${s.chinese} 数学:${s.math} 英语:${s.english}") | ||
| 75 | + println("总分:${total:.2f} 平均分:${avg:.2f}") | ||
| 76 | + println("------------------------") | ||
| 77 | +} | ||
| 78 | + | ||
| 79 | +// 3. 修改学生成绩 | ||
| 80 | +func updateStudent() { | ||
| 81 | + print("输入待修改学号:") | ||
| 82 | + let targetId = std.io.readInt64() | ||
| 83 | + var idx: Int64 = -1 | ||
| 84 | + for i in 0..studentList.size() { | ||
| 85 | + if studentList[i].id == targetId { | ||
| 86 | + idx = i | ||
| 87 | + break | ||
| 88 | + } | ||
| 89 | + } | ||
| 90 | + if idx == -1 { | ||
| 91 | + println(" 无此学生") | ||
| 92 | + return | ||
| 93 | + } | ||
| 94 | + print("新语文成绩:") | ||
| 95 | + studentList[idx].chinese = std.io.readF64() | ||
| 96 | + print("新数学成绩:") | ||
| 97 | + studentList[idx].math = std.io.readF64() | ||
| 98 | + print("新英语成绩:") | ||
| 99 | + studentList[idx].english = std.io.readF64() | ||
| 100 | + println("成绩修改完成") | ||
| 101 | +} | ||
| 102 | + | ||
| 103 | +// 4. 删除学生 | ||
| 104 | +func deleteStudent() { | ||
| 105 | + print("输入要删除的学号:") | ||
| 106 | + let targetId = std.io.readInt64() | ||
| 107 | + for i in 0..studentList.size() { | ||
| 108 | + if studentList[i].id == targetId { | ||
| 109 | + studentList.removeAt(i) | ||
| 110 | + println(" 删除成功") | ||
| 111 | + return | ||
| 112 | + } | ||
| 113 | + } | ||
| 114 | + println(" 未找到学生") | ||
| 115 | +} | ||
| 116 | + | ||
| 117 | +// 5. 展示全部学生 | ||
| 118 | +func showAllStudent() { | ||
| 119 | + if studentList.isEmpty() { | ||
| 120 | + println("暂无学生数据") | ||
| 121 | + return | ||
| 122 | + } | ||
| 123 | + println("\n===== 全部学生列表 =====") | ||
| 124 | + for s in studentList { | ||
| 125 | + printStudentInfo(s) | ||
| 126 | + } | ||
| 127 | +} | ||
| 128 | + | ||
| 129 | +// 6. 成绩统计 | ||
| 130 | +func statScore() { | ||
| 131 | + if studentList.isEmpty() { | ||
| 132 | + println("无数据,无法统计") | ||
| 133 | + return | ||
| 134 | + } | ||
| 135 | + var sumChi: F64 = 0.0 | ||
| 136 | + var sumMat: F64 = 0.0 | ||
| 137 | + var sumEng: F64 = 0.0 | ||
| 138 | + let count = studentList.size() as F64 | ||
| 139 | + for s in studentList { | ||
| 140 | + sumChi += s.chinese | ||
| 141 | + sumMat += s.math | ||
| 142 | + sumEng += s.english | ||
| 143 | + } | ||
| 144 | + println("===== 班级成绩统计 =====") | ||
| 145 | + println("语文平均分:${sumChi / count:.2f}") | ||
| 146 | + println("数学平均分:${sumMat / count:.2f}") | ||
| 147 | + println("英语平均分:${sumEng / count:.2f}") | ||
| 148 | +} | ||
| 149 | + | ||
| 150 | +// 7. 按总分降序排序 | ||
| 151 | +func sortByTotal() { | ||
| 152 | + if studentList.isEmpty() { | ||
| 153 | + println("无学生数据") | ||
| 154 | + return | ||
| 155 | + } | ||
| 156 | + // 自定义排序:总分从高到低 | ||
| 157 | + studentList.sortBy{ a, b => | ||
| 158 | + let totalA = a.chinese + a.math + a.english | ||
| 159 | + let totalB = b.chinese + b.math + b.english | ||
| 160 | + totalB <=> totalA | ||
| 161 | + } | ||
| 162 | + println(" 已按总分降序排序,排序后列表:") | ||
| 163 | + showAllStudent() | ||
| 164 | +} | ||
| 165 | + | ||
| 166 | +// 程序入口 | ||
| 167 | +func main() { | ||
| 168 | + loop { | ||
| 169 | + showMenu() | ||
| 170 | + let op = std.io.readInt64() | ||
| 171 | + match op { | ||
| 172 | + 1 => addStudent() | ||
| 173 | + 2 => queryStudent() | ||
| 174 | + 3 => updateStudent() | ||
| 175 | + 4 => deleteStudent() | ||
| 176 | + 5 => showAllStudent() | ||
| 177 | + 6 => statScore() | ||
| 178 | + 7 => sortByTotal() | ||
| 179 | + 0 => { | ||
| 180 | + println("系统退出,再见!") | ||
| 181 | + break | ||
| 182 | + } | ||
| 183 | + _ => println("输入错误,请选择0-7功能") | ||
| 184 | + } | ||
| 185 | + println("\n按下回车继续...") | ||
| 186 | + std.io.readLine() | ||
| 187 | + } | ||
| 188 | +} | ||