首页 > 文章列表 > Golang助学跟练班day5-跟练加餐练习题

Golang助学跟练班day5-跟练加餐练习题

golang
328 2023-06-10

问题内容

Golang助学跟练班day5-跟练加餐练习题

  1. 假设你正在开发一个学生管理系统,使用结构体表示学生信息(姓名、年龄、性别等),请定义一个包含这些字段的学生结构体。
  2. 在学生管理系统中,每个学生可以有多个课程,每个课程有课程名称和分数。请定义一个结构体表示课程信息,并将其嵌套在学生结构体中。
  3. 学生管理系统需要能够添加新的学生。请编写一个函数,接受学生结构体作为参数,并将其添加到学生列表中。
  4. 学生管理系统需要能够根据学生的姓名查找学生信息。请编写一个函数,接受学生姓名作为参数,并返回对应学生的信息。
  5. 在学生管理系统中,有一个特殊的学生称为班级代表,他们具有额外的职责和权限。请定义一个结构体表示班级代表,并将其嵌套在学生结构体中。
  6. 学生管理系统需要能够设置班级代表。请编写一个函数,接受学生结构体指针和班级代表结构体指针作为参数,并将学生的班级代表设置为给定的代表。
  7. 在学生管理系统中,需要为每个学生计算平均分。请编写一个方法,接受学生结构体指针作为接收者,并计算学生的平均分。
  8. 学生管理系统需要能够输出所有学生的信息。请编写一个函数,接受学生列表作为参数,并打印每个学生的姓名、年龄和平均分。
  9. 假设你正在开发一个餐厅管理系统,使用结构体表示菜品信息(名称、价格、描述等)。请定义一个包含这些字段的菜品结构体。
  10. 在餐厅管理系统中,菜品可以按照菜单分类进行管理。请定义一个结构体表示菜单信息,并将菜品列表嵌套在菜单结构体中。

正确答案

1、学生结构体定义:

type Student struct {
	Name   string // 学生姓名
	Age    int    // 学生年龄
	Gender string // 学生性别
}

2、嵌套课程信息的学生结构体定义:

type Course struct {
	Name  string  // 课程名称
	Score float64 // 课程分数
}

type Student struct {
	Name    string   // 学生姓名
	Age     int      // 学生年龄
	Gender  string   // 学生性别
	Courses []Course // 学生课程列表
}

3、添加学生的函数定义:

func AddStudent(students []Student, student Student) []Student {
	students = append(students, student)
	return students
}

4、根据学生姓名查找学生信息的函数定义:

func FindStudentByName(students []Student, name string) *Student {
	for i, student := range students {
		if student.Name == name {
			return &students[i]
		}
	}
	return nil
}

5、嵌套班级代表的学生结构体定义:

type ClassMonitor struct {
	Name   string // 班级代表姓名
	Duty   string // 班级代表职责
	Access bool   // 班级代表权限
}

type Student struct {
	Name          string        // 学生姓名
	Age           int           // 学生年龄
	Gender        string        // 学生性别
	Courses       []Course      // 学生课程列表
	ClassMonitor  ClassMonitor  // 班级代表信息
}

6、设置班级代表的函数定义:

func SetClassMonitor(student *Student, classMonitor ClassMonitor) {
	student.ClassMonitor = classMonitor
}

7、计算学生平均分的方法定义:

func (s *Student) CalculateAverageScore() float64 {
	totalScore := 0.0
	for _, course := range s.Courses {
		totalScore += course.Score
	}
	return totalScore / float64(len(s.Courses))
}

8、输出学生信息的函数定义:

func PrintStudents(students []Student) {
	for _, student := range students {
		fmt.Printf("Name: %sn", student.Name)
		fmt.Printf("Age: %dn", student.Age)
		fmt.Printf("Average Score: %.2fn", student.CalculateAverageScore())
		fmt.Println()
	}
}

9、餐厅菜品结构体定义:

type Dish struct {
	Name        string  // 菜品名称
	Price       float64 // 菜品价格
	Description string  // 菜品描述
}

10、嵌套菜品列表的菜单结构体定义:

type Menu struct {
	Category string // 菜单分类
	Dishes   []Dish // 菜品列表
}