介绍
总结go语言的基础学习,通过两种方式实现简单的学生信息管理系统
方法一
package main
import (
"fmt"
"os"
)
// 定义所有学生信息
var studentData map[int]*student
// 定义学生
type student struct {
id int64
name string
score int
}
// 初始化分配内存空间
func init() {
studentData = make(map[int]*student,100)
}
func main() {
for{
fmt.Println("北京大学学生管理系统欢迎您!")
fmt.Println(`1:查看所有学生信息
2:新增学生
3:删除学生
4:退出系统`)
fmt.Print("请输入操作的序号:")
var inputId int
fmt.Scanln(&inputId)
switch inputId {
case 1:
showStudent()
case 2:
addStudent()
case 3:
delStudent()
case 4:
os.Exit(1)
}
}
}
// @title 学生信息展示
func showStudent() {
fmt.Println("------------------------------")
for k,v := range studentData {
fmt.Printf("学号:%d,姓名:%s,分数:%d \n", k, v.name, v.score)
}
fmt.Println("------------------------------")
}
// @title 添加学生信息
func addStudent() {
// 定义输入的参数
var (
id int64
name string
score int
)
// 执行输入操作
fmt.Print("请输入学生的学号:")
fmt.Scanln(&id)
fmt.Print("请输入学生的姓名:")
fmt.Scanln(&name)
fmt.Print("请输入学生的分数:")
fmt.Scanln(&score)
// 通过构造函数生成学生信息
stu := newAddStudent(id,name,score)
// 追加到 map 中
studentData[int(id)] = stu
fmt.Printf("学号为:%d 的学生添加成功了\n", id)
}
// @title 删除学生信息
func delStudent() {
var id int64
fmt.Print("请输入学生的学号:")
fmt.Scanln(&id)
delete(studentData, int(id))
fmt.Printf("学号为:%d 的学生删除成功\n", id)
}
// @title 新增学生构造函数
func newAddStudent(id int64, name string,score int) *student {
return &student{
id:id,
name:name,
score: score,
}
}
方法二
package main
import (
"fmt"
"os"
)
// 定义所有学生信息
var studentData map[int]*student
// 定义学生
type student struct {
id int64
name string
score int
}
// 初始化分配内存空间
func init() {
studentData = make(map[int]*student,100)
}
func main() {
s := student{}
for{
fmt.Println("北京大学学生管理系统欢迎您!")
fmt.Println(`1:查看所有学生信息
2:新增学生
3:删除学生
4:退出系统`)
fmt.Print("请输入操作的序号:")
var inputId int
fmt.Scanln(&inputId)
switch inputId {
case 1:
s.showStudent()
case 2:
s.addStudent()
case 3:
s.delStudent()
case 4:
os.Exit(1)
}
}
}
// @title 学生信息展示
func (s *student) showStudent() {
fmt.Println("| ID | 姓名 | 成绩 |")
for k,v := range studentData {
fmt.Printf("| %-d | %-s | %-d |\n", k, v.name, v.score)
}
}
// @title 添加学生信息
func (s *student) addStudent() {
// 定义输入的参数
var (
id int64
name string
score int
)
// 执行输入操作
fmt.Print("请输入学生的学号:")
fmt.Scanln(&id)
fmt.Print("请输入学生的姓名:")
fmt.Scanln(&name)
fmt.Print("请输入学生的分数:")
fmt.Scanln(&score)
// 通过构造函数生成学生信息
stu := newAddStudent(id,name,score)
// 追加到 map 中
studentData[int(id)] = stu
fmt.Printf("学号为:%d 的学生添加成功了\n", id)
}
// @title 删除学生信息
func (s *student) delStudent() {
var id int64
fmt.Print("请输入学生的学号:")
fmt.Scanln(&id)
delete(studentData, int(id))
fmt.Printf("学号为:%d 的学生删除成功\n", id)
}
// @title 新增学生构造函数
func newAddStudent(id int64, name string,score int) *student {
return &student{
id:id,
name:name,
score: score,
}
}
学生管理系统完整版
main.go
package main
import (
"fmt"
"os"
)
func main() {
var (
s = studentDb{studentData: make(map[int64]*student)} // 初始化学生的内存空间
input int // 定义键盘输入参数
)
welcome() // 输出系统欢迎界面
menu() // 输出控制菜单
for {
fmt.Print("请输入操作的序号[1,2,3,4,5]===>>>:")
// 判断输入
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Println("Error:输入错误,请重新输入")
}
// 处理操作序号
switch input {
case 1:
s.show()
case 2:
s.create()
case 3:
s.update()
case 4:
s.delete()
case 0:
os.Exit(1)
default:
fmt.Println("Error:没有此序号,请重新输入")
}
}
}
// 系统欢迎界面
func welcome() {
fmt.Println("----------------------------------------------")
fmt.Println("| Welcome to [清华大学] 学生管理系统 |")
fmt.Println("----------------------------------------------")
}
// 选择菜单
func menu() {
fmt.Println("----------------------------------------------")
fmt.Println("| 序号 | 操作内容 |")
fmt.Println("| 1 | 查看所有学生 |")
fmt.Println("| 2 | 添加学生 |")
fmt.Println("| 3 | 修改学生信息 |")
fmt.Println("| 4 | 删除学生 |")
fmt.Println("| 0 | 退出系统 |")
fmt.Println("----------------------------------------------")
}
student.go
package main
import "fmt"
// 定义学生数据源
type studentDb struct {
studentData map[int64]*student
}
// 定义单个学生包含的信息
type student struct {
name string
age int8
}
// 添加学生
func (s *studentDb) create() {
var (
id int64
n string
a int8
)
fmt.Printf("请输入学生的ID学号:")
_, err := fmt.Scanln(&id)
if err != nil {
fmt.Println("Error:学生信息输入错误!")
return
}
fmt.Printf("请输入学生的姓名:")
_, err = fmt.Scanln(&n)
if err != nil {
fmt.Println("Error:学生信息输入错误!")
return
}
fmt.Printf("请输入学生的age:")
_, err = fmt.Scanln(&a)
if err != nil {
fmt.Println("Error:学生信息输入错误!")
return
}
// 添加学生
stu := &student{
name: n,
age: a,
}
s.studentData[id] = stu
fmt.Println("恭喜您,添加成功!")
}
// 删除学生
func (s *studentDb) delete() {
// 引导输入
var input int64
fmt.Printf("请输入学生的ID则系统进行查找:")
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Println("Error:输入错误,请重新输入")
return
}
// 判断是否存在
_,ok := s.studentData[input]
if !ok {
fmt.Println("没有找到此学生!!!")
return
}
// 进行删除
delete(s.studentData, input)
fmt.Println("恭喜您,学生删除成功咯!")
}
// 修改学生
func (s *studentDb) update() {
// 引导输入
var input int64
fmt.Printf("请输入学生的ID则系统进行查找:")
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Println("Error:输入错误,请重新输入")
return
}
// 判断是否存在
v,ok := s.studentData[input]
if !ok {
fmt.Println("没有找到此学生!!!")
return
}
fmt.Printf("您要修改的学生信息是:学号:%d、姓名:%s、年龄:%d \n", input, v.name, v.age)
// 进行修改
var (
n string
a int8
)
fmt.Printf("请输入学生的姓名:")
_, err = fmt.Scanln(&n)
if err != nil {
fmt.Println("Error:学生信息输入错误!")
return
}
fmt.Printf("请输入学生的age:")
_, err = fmt.Scanln(&a)
if err != nil {
fmt.Println("Error:学生信息输入错误!")
return
}
v.name = n
v.age = a
s.studentData[input] = v
fmt.Println("恭喜您,修改成功了666!")
}
// 查看学生
func (s *studentDb) show() {
fmt.Println("所有的学生信息展示如下:")
for k,v := range s.studentData {
fmt.Printf("学号:%d、姓名:%s、年龄:%d \n",k, v.name, v.age)
}
}