1. 程式人生 > 實用技巧 >Go實現學生管理系統

Go實現學生管理系統

student.go


package main
import (
	"fmt"
)

// 學生
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,
	}
}
// 學生管理
type manage  struct {
	allStudent []*student
}

// 學生管理的建構函式
func newManage() *manage{
	return &manage{
		allStudent: make([]*student, 0, 100),
	}
}

// 新增學生
func (s *manage) addStudent(newstu *student){
	s.allStudent = append(s.allStudent, newstu)
}
// 編輯學生資訊
func (s *manage)modifystudent(newstu *student){
	for i, v := range s.allStudent{
		if newstu.id == v.id{
			s.allStudent[i] = newstu
			return
		}
	}
	fmt.Printf("系統不存在學號為%d的這個學生!\n", newstu.id)
}
// 展示所有學生資訊
func (s *manage) showAllStudent(){
	for _, v := range s.allStudent{
		fmt.Printf("學號:%d---姓名:%s---班級%s\n", v.id, v.name, v.class)
	}
}

main.go

package main
import (
	"fmt"
	"os"
)

func menu(){
	fmt.Println("歡迎使用go學生管理系統")
	fmt.Println("1:新增學生")
	fmt.Println("2:編輯學生資訊")
	fmt.Println("3:展示所有學生資訊")
	fmt.Println("4:退出")
}

func getInput() *student{
	var (
		id int
		name string 
		class string
	)
	fmt.Println("請輸入學生的學號:")
	fmt.Scanf("%d\n", &id)
	fmt.Println("請輸入學生的姓名:")
	fmt.Scanf("%s\n", &name)
	fmt.Println("請輸入學生的班級")
	fmt.Scanf("%s\n", &class)
	stu := newStudent(id, name, class)
	return stu
}

func main(){
	sm := newManage()
	for{
		//1.列印系統
		menu()

		//2.使用者選擇操作
		var input int
		fmt.Print("請輸入你要的運算元:")
		fmt.Scanf("%d\n", &input)
		fmt.Println("你選擇的操作是:", input)
		// 3.執行操作
		switch input{
			case 1:
				stu := getInput()
				sm.addStudent(stu)
				break
			case 2:
				stu := getInput()
				sm.modifystudent(stu)
				break
			case 3:
				sm.showAllStudent()
				break
			case 4:
				os.Exit(0)
		}
	}
}