1、定義學生結構體
student.go
type student struct {
id int
name string
age int
}
2、定義管理者結構體,其中管理者中存儲着所有學生資訊
type manage struct {
// 所有學生資訊
students map[int]student
}
3、管理者應該具有學生資訊管理能力:增删改查學生。完整的
manage.go
如下:
type manage struct {
// 所有學生資訊
students map[int]student
}
// 判斷學生是否存在
func (this manage) isExist(id int) bool {
_,exist := this.students[id]
return exist
}
// 添加學生
func (this manage) addStudent(s student) {
this.students[s.id]=s
}
// 删除學生
func (this manage) deleteStudent(id int) bool {
_,exist:=this.students[id]
// 不存在該學生
if !exist {
return false
}
delete(this.students,id)
return true
}
// 查詢單個學生資訊
func (this manage) getStudent(id int) student{
return this.students[id]
}
// 查詢所有學生
func (this manage) listStudent() map[int]student {
return this.students
}
// 修改學生資訊
func (this manage) updateStudent(s student) {
this.students[s.id]=s
}
4、定義圖形化界面
import (
"fmt"
)
// 學生管理系統:實作檢視、添加、修改、删除學生
var m=manage{
students: map[int]student{},
}
// 系統入口
func Start() {
for {
fmt.Println("======歡迎來到學生管理系統======")
fmt.Println(" 1.檢視所有學生資訊 ")
fmt.Println(" 2.檢視某個學生資訊 ")
fmt.Println(" 3.添加學生 ")
fmt.Println(" 4.修改學生資訊 ")
fmt.Println(" 5.删除學生 ")
fmt.Println(" 6.退出 ")
fmt.Println("============================")
fmt.Printf("請輸入你要進行的操作:")
var option int
fmt.Scanln(&option) // 擷取輸入值
switch option {
case 1:
getAll()
case 2:
getOne()
case 3:
addStudent()
case 4:
UpdateStudent()
case 5:
delStudent()
case 6:
return
default:
fmt.Println("請輸入合法的操作")
}
}
}
// 查找所有學生
func getAll() {
students:=m.listStudent()
for _,s := range students {
fmt.Println("學号:",s.id,"姓名:",s.name,"年齡:",s.age)
}
}
// 查詢某個學生
func getOne() {
fmt.Printf("請輸入要查詢的學生ID:")
var id int
fmt.Scanln(&id)
s:=m.getStudent(id)
fmt.Println("學号:",s.id,"姓名:",s.name,"年齡:",s.age)
}
// 添加學生
func addStudent() {
var id int
var name string
var age int
fmt.Printf("請輸入學生ID:")
fmt.Scanln(&id)
res:=m.isExist(id)
if res {
fmt.Println("該學生已存在!不可重複添加")
return
}
fmt.Printf("請輸入學生姓名:")
fmt.Scanln(&name)
fmt.Printf("請輸入學生年齡:")
fmt.Scanln(&age)
s:=student{
id:id,
name:name,
age:age,
}
m.addStudent(s)
fmt.Println("添加成功!")
}
// 删除學生
func delStudent() {
var id int
fmt.Printf("請輸入要删除的學生ID:")
fmt.Scanln(&id)
res:=m.deleteStudent(id)
if res {
fmt.Println("删除成功")
} else {
fmt.Println("不存在該學生!")
}
}
// 修改學生資訊
func UpdateStudent() {
var id int
fmt.Printf("請輸入學生ID:")
fmt.Scanln(&id)
s:=m.getStudent(id)
fmt.Println("學生目前的資訊是=>學号:",s.id,"姓名:",s.name,"年齡:",s.age)
fmt.Printf("請輸入要修改的學生姓名:")
fmt.Scanln(&s.name)
fmt.Printf("請輸入要修改的學生年齡:")
fmt.Scanln(&s.age)
m.updateStudent(s)
fmt.Println("修改成功!")
}
執行部分效果如下:
