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()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章