已开启
基于仓颉语言的简易学生成绩管理系统山东科技大学 梁绍 栾文静老师 #420
基于仓颉语言的简易学生成绩管理系统山东科技大学 梁绍 栾文静老师 #420
已开启
aholi7c创建于 7月19日
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+}