- 博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。
- 博主主页: @是瑶瑶子啦
- 所属专栏: Go语言核心编程
- 近期目标:写好专栏的每一篇文章
学习了Go的基础语法知识,如何巩固和提升呢?跟着瑶瑶子写一个简易的学生信息管理系统来练练手吧!
stuInfoProject
:项目文件夹
go.mod
main.go
:主程序,核心逻辑代码student.go
:学生类型结构体的定义、构造函数、方法等studentSys
:学生信息管理系统类型结构体的定义、构造函数、方法等在main.go
中定义显示菜单函数
func showMenu() {
info := `
*********************欢迎来到学生管理系统***********
1、添加学员信息
2、编辑学员信息
3、展示所有学员信息
4、退出系统
************************************************
`
fmt.Print(info)
}
在这个项目中,我们需要两个结构体:
student
,定义等封装在student.go
文件中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,
}
}
studentSys
,定义和方法等封装在studentSys.go
中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:你输入选项格式有误,请重新输入!")
}
综上,就是一个比较简单的,适合巩固基础的学生信息管理系统的小项目。涉及到函数、结构体、方法、构造函数等基础知识,非常适合小白拿来练手和巩固知识!
欢迎在评论区交流和留下你的想法和建议
如果对你有用,还请:评论+点赞+⭐收藏+➕关注