Appearance
项目 1:控制台版学生管理系统
增删改查学生信息
功能需求
- 添加学生信息
- 查询学生信息
- 修改学生信息
- 删除学生信息
- 显示所有学生信息
数据结构设计
go
type Student struct {
ID int
Name string
Age int
Score float64
}切片 / Map 存储数据
使用切片存储
go
var students []Student使用 Map 存储
go
var students map[int]Student菜单交互
完整代码
go
package main
import (
"fmt"
"os"
)
type Student struct {
ID int
Name string
Age int
Score float64
}
var students []Student
var nextID = 1
func main() {
for {
showMenu()
var choice int
fmt.Print("请选择操作: ")
fmt.Scan(&choice)
switch choice {
case 1:
addStudent()
case 2:
queryStudent()
case 3:
modifyStudent()
case 4:
deleteStudent()
case 5:
showAllStudents()
case 6:
fmt.Println("退出系统")
os.Exit(0)
default:
fmt.Println("无效选择,请重新输入")
}
fmt.Println()
}
}
func showMenu() {
fmt.Println("============= 学生管理系统 ============")
fmt.Println("1. 添加学生")
fmt.Println("2. 查询学生")
fmt.Println("3. 修改学生")
fmt.Println("4. 删除学生")
fmt.Println("5. 显示所有学生")
fmt.Println("6. 退出系统")
fmt.Println("======================================")
}
func addStudent() {
var name string
var age int
var score float64
fmt.Print("请输入学生姓名: ")
fmt.Scan(&name)
fmt.Print("请输入学生年龄: ")
fmt.Scan(&age)
fmt.Print("请输入学生成绩: ")
fmt.Scan(&score)
student := Student{
ID: nextID,
Name: name,
Age: age,
Score: score,
}
students = append(students, student)
nextID++
fmt.Println("学生添加成功!")
}
func queryStudent() {
var id int
fmt.Print("请输入学生ID: ")
fmt.Scan(&id)
for _, s := range students {
if s.ID == id {
fmt.Printf("ID: %d, 姓名: %s, 年龄: %d, 成绩: %.2f\n", s.ID, s.Name, s.Age, s.Score)
return
}
}
fmt.Println("未找到该学生")
}
func modifyStudent() {
var id int
fmt.Print("请输入学生ID: ")
fmt.Scan(&id)
for i, s := range students {
if s.ID == id {
var name string
var age int
var score float64
fmt.Print("请输入新的姓名: ")
fmt.Scan(&name)
fmt.Print("请输入新的年龄: ")
fmt.Scan(&age)
fmt.Print("请输入新的成绩: ")
fmt.Scan(&score)
students[i] = Student{
ID: id,
Name: name,
Age: age,
Score: score,
}
fmt.Println("学生信息修改成功!")
return
}
}
fmt.Println("未找到该学生")
}
func deleteStudent() {
var id int
fmt.Print("请输入学生ID: ")
fmt.Scan(&id)
for i, s := range students {
if s.ID == id {
students = append(students[:i], students[i+1:]...)
fmt.Println("学生删除成功!")
return
}
}
fmt.Println("未找到该学生")
}
func showAllStudents() {
if len(students) == 0 {
fmt.Println("暂无学生信息")
return
}
fmt.Println("============= 学生列表 ============")
for _, s := range students {
fmt.Printf("ID: %d, 姓名: %s, 年龄: %d, 成绩: %.2f\n", s.ID, s.Name, s.Age, s.Score)
}
fmt.Println("===================================")
}运行效果
============= 学生管理系统 ============
1. 添加学生
2. 查询学生
3. 修改学生
4. 删除学生
5. 显示所有学生
6. 退出系统
======================================
请选择操作: 1
请输入学生姓名: Alice
请输入学生年龄: 20
请输入学生成绩: 95
学生添加成功!
============= 学生管理系统 ============
1. 添加学生
2. 查询学生
3. 修改学生
4. 删除学生
5. 显示所有学生
6. 退出系统
======================================
请选择操作: 5
============= 学生列表 ============
ID: 1, 姓名: Alice, 年龄: 20, 成绩: 95.00
===================================