zoukankan      html  css  js  c++  java
  • Go语言基础之结构体练习

    Go语言基础之结构体练习

    一、创建目录结构

    image-20211104090541405

    image-20211104090559962

    二、实现功能

    // studeng.go文件
    package main
    
    import "fmt"
    
    /*
    @author RandySun
    @create 2021-11-03-8:00
    */
    type Student struct {
    	id    int
    	name  string
    	class string
    }
    
    // 学生信息初始化
    func NewStudent(id int, name, class string) *Student {
    	return &Student{id, name, class}
    }
    
    type StudentMgr struct {
    	allStudent []*Student
    }
    
    // 初始化
    func NewStudentMgr() *StudentMgr {
    	return &StudentMgr{
    		allStudent: make([]*Student, 0, 10),
    	}
    
    }
    
    // 添加学生
    func (sMgr *StudentMgr) addStudent(student *Student) {
    	// StudentMgr要定义指针接收者
    	for _, stu := range sMgr.allStudent {
    		if stu.id == student.id {
    			fmt.Println("添加学员已经存在,请输入其他同学信息!")
    			return
    		}
    	}
    	sMgr.allStudent = append(sMgr.allStudent, student)
    	fmt.Println("添加成功")
    }
    
    // 修改学生
    func (sMgr *StudentMgr) modifyStudent(student *Student) {
    	// StudentMgr要定义指针接收者
    	for index, stu := range sMgr.allStudent {
    		if stu.id == student.id {
    			sMgr.allStudent[index] = student
    			fmt.Println("修改成功")
    			return
    		}
    	}
    	fmt.Println("学生信息不存在,请添加学员信息")
    }
    
    // 删除学生
    func (sMgr *StudentMgr) deleteStudent(id int) {
    	if len(sMgr.allStudent) == 0 {
    		fmt.Println("学员信息为空")
    		return
    	}
    	// StudentMgr要定义指针接收者
    	for index, stu := range sMgr.allStudent {
    		if stu.id == id {
    			endIndex := index + 1
    			sMgr.allStudent = append(sMgr.allStudent[:index], sMgr.allStudent[endIndex:]...)
    			fmt.Println("删除成功")
    			return
    		}
    	}
    	fmt.Println("学生信息不存在,请添加学员信息")
    }
    
    // 展示学生信息
    func (sMgr StudentMgr) showStudent() {
    	if len(sMgr.allStudent) == 0 {
    		fmt.Println("学员信息为空")
    		return
    	}
    	for _, stu := range sMgr.allStudent {
    		fmt.Printf("学生编号: %d 学生姓名: %s 学生班级: %s
    ", stu.id, stu.name, stu.class)
    	}
    }
    
    
    // core.go文件
    package main
    
    import "fmt"
    
    /*
    @author RandySun
    @create 2021-11-04-8:38
    */
    // 学生管理系统
    
    // 1. 添加学员
    // 2. 编辑学员
    // 3. 删除学员
    // 4. 展示学员
    
    func inputStudentInfo() *Student {
    	var id int
    	var name string
    	var class string
    
    	fmt.Printf("请输入学生编号:")
    	fmt.Scanf("%d
    ", &id)
    	fmt.Printf("请输入学生姓名:")
    	fmt.Scanf("%s
    ", &name)
    	fmt.Printf("请输入学生班级:")
    	fmt.Scanf("%s
    ", &class)
    
    	return NewStudent(id, name, class)
    }
    
    func inputStudentId() int{
    	var id int
    
    	fmt.Printf("请输入学生编号:")
    	fmt.Scanf("%d
    ", &id)
    	return id
    }
    func showMenu() {
    	fmt.Println(" 1. 添加学员")
    	fmt.Println(" 2. 编辑学员")
    	fmt.Println(" 3. 删除学员")
    	fmt.Println(" 4. 展示学员")
    
    }
    
    func Run() {
    	var stuMgr = NewStudentMgr()
    	for {
    		fmt.Println("欢迎来到学生管理系统")
    		showMenu()
    		fmt.Printf("请输入操作编号:")
    		var choice int
    		fmt.Scanf("%d
    ", &choice)
    		switch choice {
    		case 1:
    			// 添加信息
    			stu := inputStudentInfo()
    			stuMgr.addStudent(stu)
    		case 2:
    			// 修改学生信息
    			stuMgr.showStudent()
    			stu := inputStudentInfo()
    			stuMgr.modifyStudent(stu)
    		case 3:
    			// 删除信息
    			stuMgr.showStudent()
    			id := inputStudentId()
    			stuMgr.deleteStudent(id)
    		case 4:
    			// 展示学生信息
    			stuMgr.showStudent()
    		default:
    			fmt.Println("请选择已有功能")
    		}
    	}
    
    }
    
    
    // main.go文件
    package main
    
    /*
    @author RandySun
    @create 2021-11-03-8:00
    */
    
    
    func main() {
    	Run()
    }
    
    

    三、效果

    image-20211104090835371

    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    Python核心编程——正则表达式
    Python 随笔之Redis
    我的第一个Python随笔
    python练习题-day20
    python练习题-day19
    python练习题-day18
    python练习题-day16
    python练习题-day15
    python练习题-day14
    python练习题-day13
  • 原文地址:https://www.cnblogs.com/randysun/p/15518346.html
Copyright © 2011-2022 走看看