- 博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。
- 博主主页: @是瑶瑶子啦
- 所属专栏: Go语言核心编程
- 近期目标:写好专栏的每一篇文章
学习了Go的基础语法知识,如何巩固和提升呢?跟着瑶瑶子写一个简易的学生信息管理系统来练练手吧!
在main.go中定义显示菜单函数
func showMenu() { info := ` *********************欢迎来到学生管理系统*********** 1、添加学员信息 2、编辑学员信息 3、展示所有学员信息 4、退出系统 ************************************************ ` fmt.Print(info) }
在这个项目中,我们需要两个结构体:
package main // 定义一个学生类型结构体 type student struct { id int //学号 name string //姓名 class string } // 构造函数 func newStudent(id int, name, class string) *student { return &student{ id: id, name: name, class: class, } }
package main import "fmt" type studentSys struct { num int //学生的数量 students []*student //存储学生实体的切片 } //构造函数 func newStudentSys() *studentSys { return &studentSys{ num: 0, students: make([]*student, 0, 100), } } // 1)这个管理系统所具备的方法:添加学生 func (sys *studentSys) addStudent(stu *student) { sys.students = append(sys.students, stu) sys.num += 1 fmt.Println("************添加成功**********") } // 2)编辑学生 func (sys *studentSys) updateStudent(stu *student) { for i, v := range sys.students { if stu.id == v.id { //当学号相同时,找到要修改学生 sys.students[i] = stu fmt.Println("***************修改成功***************") return } } fmt.Println("*********找不到该学号学生,修改失败*********") } // 3)展示学生 func (sys *studentSys) showStudents() { for _, v := range sys.students { fmt.Println("学号:", v.id, "姓名:", v.name, "班级", v.class) } }
func main() { //构造一个学生管理系统 stuSys := newStudentSys() //指针类型的,只创建一次,因为只有一个系统 for { //打印菜单 showMenu() //接收用户输入数据 var input int fmt.Scanf("%d\n", &input) //switch-case进行流程空指 switch input { case 1: //添加学生 case 2: //根据id修改学生信息 case 3: //展示所有学生的信息 case 4: os.Exit(0) //退出系统 default: fmt.Println("err:你输入选项格式有误,请重新输入!") } } }
// 获取用户输入的信息,创造学员的函数 func newStuByUser() (*student, error) { var ( id int name string class string ) //读取用户输入 _, err := fmt.Scanln(&id, &name, &class) //出错,给出错误信息,并且将错误返回 if err != nil { fmt.Println("输入出错,err:", err) } return newStudent(id, name, class), err }
case 1: //添加学生 fmt.Print("请输入学员的学号、名字、班级:(以空格隔开)") s1, err := newStuByUser() //调用学生管理系统所具备的方法,像其中添加学生 //没有出错才添加 if err == nil { stuSys.addStudent(s1) }
同上
case 2: fmt.Println("请输入该学生的学号,及其要修改的名称和班级:(用空格隔开)") s1, err := newStuByUser() if err == nil { stuSys.updateStudent(s1) }
case 3: fmt.Println("以下是所有学生信息展示:") stuSys.showStudents() case 4: os.Exit(0) //退出系统 default: fmt.Println("err:你输入选项格式有误,请重新输入!") }
综上,就是一个比较简单的,适合巩固基础的学生信息管理系统的小项目。涉及到函数、结构体、方法、构造函数等基础知识,非常适合小白拿来练手和巩固知识!
欢迎在评论区交流和留下你的想法和建议
如果对你有用,还请:💭评论+👍🏻点赞+⭐收藏+➕关注