Golang学生成绩管理系统

package main

import (
	"fmt"
	"os"
)

type student struct {
     
	name0        string
	num0, score0 int
}

func newStudent(name string, num, score int) *student {
      //模拟student的构造函数
	return &student{
     
		name0:  name,
		num0:   num,
		score0: score,
	}
}

var studentInf = make([]*student, 0, 100)

func userInput() *student {
     
	var (
		name       string
		num, score int
	)
	fmt.Print("请输入学生学号:")
	fmt.Scanln(&num)

	fmt.Print("请输入学生姓名:")
	fmt.Scanln(&name)

	fmt.Print("请输入学生成绩:")
	fmt.Scanln(&score)
	return newStudent(name, num, score)
}

func addInf() {
     
	ptr := userInput() //ptr类型是*student
	studentInf = append(studentInf, ptr)
	fmt.Println("添加信息成功!")
	fmt.Printf("您添加信息如下:\n姓名:%v\t学号:%v\t成绩:%v\n", ptr.name0, ptr.num0, ptr.score0)
	menu()
}

func printInf() {
     
	if len(studentInf) == 0 {
     
		fmt.Println("没有任何成绩信息")
		menu()
	}
	for _, val := range studentInf {
     
		fmt.Printf("%#v\n", *val)
	}
	menu()
}

func changeInf() {
     
	var (
		num int
	)
	fmt.Print("请输入想要修改的学生学号:")
	fmt.Scanln(&num)
	var finish bool
	for index, val := range studentInf {
     
		if val.num0 == num {
     
			ptr := userInput()
			studentInf[index] = ptr
			finish = true
			fmt.Printf("修改成功!姓名:%s\t学号:%d\t成绩:%d\n", ptr.name0, ptr.num0, ptr.score0)
			menu()
		}
	}
	if !finish {
     
		fmt.Println("输入的学号不存在")
	}
}
func menu() {
     
	fmt.Printf("--------------------学生成绩管理系统--------------------\n")
	fmt.Printf("0.添加学生成绩                             1.修改学生成绩\n")
	fmt.Printf("2.查看学生成绩				   3.退出系统\n")

	var choose int
	fmt.Scanln(&choose)
	switch choose {
     
	case 0:
		addInf()
	case 1:
		changeInf()
	case 2:
		printInf()
	case 3:
		fmt.Println("退出系统!")
		os.Exit(0)
	default:
		fmt.Println("输入有误,请重新选择:")
		menu()
	}
}

func main() {
     
	menu()
}

你可能感兴趣的:(剑指offer)