实现下图所示功能

文件1student.go
package main
import (
"fmt"
"os"
)
//定义一个结构体临时存储每一个学生变量
var alls studentmanger
//定义一个功能菜单函数
func showMeu(){
fmt.Println("-----welcome to student sms-----")
fmt.Print(`
1,展示所有的学生信息
2,添加学生信息
3,修改学生信息
4,删除学生信息
5,退出
`)
fmt.Print("请输入你的选择:")
}
func main(){
//程序开始执行的时候初始化并开辟内存空间
alls = studentmanger{
allstu: make(map[int64]student,100),
}
for {
showMeu()
//定义一个变量接收选择
var choice int
fmt.Scanln(&choice)
fmt.Printf("你输入的选择是:%d\n", choice)
switch choice {
case 1:
//全部变量调用展示所有学生信息方法
alls.Showallstus()
case 2:
//全部变量调用增加学生信息方法
alls.Addstus()
case 3:
//全部变量调用修改学生信息方法
alls.Modstus()
case 4:
//全部变量调用删除学生信息方法
alls.Delstus()
case 5:
os.Exit(0)
default:
fmt.Println("输入的有误!!!")
}
}
}
文件2:plugins.go
package main
import "fmt"
//定义结构体存储每一个学生信息
type student struct {
id int64
name string
}
//结构体中定义一个map存储所有学生信息
type studentmanger struct {
allstu map[int64]student
}
//结构体返回函数
func Backstruct (Sid int64,Sname string) *student{
return &student{
id: Sid,
name: Sname,
}
}
func (s studentmanger) Showallstus(){
//检查结构体是否为空
if len(s.allstu) == 0{
fmt.Println("系统中没有任何数据")
}
for _,stu := range s.allstu{
fmt.Printf("id:%d,name:%s\n",stu.id,stu.name)
}
}
func (s studentmanger) Addstus(){
var (
addid int64
addname string
)
fmt.Print("请输入学号:")
fmt.Scanln(&addid)
fmt.Print("请输入姓名:")
fmt.Scanln(&addname)
tmps := Backstruct(addid,addname)
s.allstu[tmps.id] = *tmps
fmt.Println("添加成功!")
}
func (s studentmanger) Modstus(){
//定义变量接收输入需要修改的学号
var Id int64
fmt.Print("请输入需要修改的学号:")
fmt.Scanln(&Id)
//判断输入id是否存在
chocidId,ok := s.allstu[Id]
if !ok {
fmt.Println("输入id不存在!")
return
}
fmt.Printf("你将要修改的是:%d,名字是:%s\n",chocidId.id,chocidId.name)
var Name string
fmt.Print("请输入修改后的名字:")
fmt.Scanln(&Name)
newstu := student{
id:Id,
name:Name,
}
s.allstu[Id] = newstu
fmt.Println("修改完成!")
}
func (s studentmanger)Delstus(){
var Did int64
fmt.Print("请输入需要删除的id:")
fmt.Scanln(&Did)
delete(s.allstu,Did)
fmt.Println("删除完成")
}
网友评论