zoukankan      html  css  js  c++  java
  • Golang项目之结构体版学生管理系统

    前言

    学习第4天,基于结构体的方式对函数版本重构编写小项目:学生管理系统

    代码

    package main
    
    import (
    	"fmt"
    	"os"
    )
    
    // 菜单系统(将菜单系统封装到函数中)
    func showMenu(){
    	fmt.Println("欢迎光临学生管理系统")
    	fmt.Println(`
    		1.查看所有学生
    		2.新增学生
    		3.删除学生
    		4.退出
    	`)
    }
    
    // 造一个存储学生数据的类型
    type student struct{
    	id int64
    	name string
    }
    
    
    // newStudent是一个student类型的构造函数
    func newStudent(id int64,name string)*student{
    	return &student{
    		id:id,
    		name:name,
    	}
    }
    
    // 造一个学生管理者(将学生数据存储到该类型中)
    type sutdentManager struct{
    	store_student map[int64]*student
    }
    
    func (s sutdentManager)showAllStudent(){
    	// 显示所有学生信息(从学生管理者:sutdentManager存储的变量store_student获取到学生数据数据)
    	for _,stu := range s.store_student {
    		fmt.Printf("学号:%d 姓名:%s
    ",stu.id,stu.name)
    	}
    }
    
    func (s sutdentManager)addStudent(){
    	// 添加学生
    	// 1.请输入学生的id和姓名
    	var (
    		id int64
    		name string
    	)
    	fmt.Print("请输入学生id:")
    	fmt.Scanln(&id)
    
    	fmt.Print("请输入学生姓名:")
    	fmt.Scanln(&name)
    
    	// 2.判断学生是否存在
    	if _,ok := s.store_student[id]; ! ok {
    		newStu := newStudent(id,name)
    		s.store_student[id] = newStu
    		fmt.Printf("学生信息 ID:%v、姓名:%v 添加成功
    ",id,name)
    	} else {
    		fmt.Printf("学生信息 ID:%v、姓名:%v 已存在,请勿重复添加
    ",id,name)
    	}
    	// 3.将学生信息添加到信息存储系统(store_student)
    }
    
    func (s sutdentManager)deleteStudent(){
    	// 删除学生
    	// 1.判断学生是否存在
    	var id int64
    	fmt.Print("请输入学生id:")
    	fmt.Scanln(&id)
    
    	// 2.根据学生id删除对应的学生信息
    	if _,ok := s.store_student[id]; ! ok {
    		// 学生id不存在
    		fmt.Printf("学生信息 ID:%v 不存在,删除失败
    ",id)
    	}else{
    		// 学生id存在,删除成功
    		delete(s.store_student,id)
    		fmt.Printf("学生信息 ID:%v 存在,删除成功
    ",id)
    	}
    }
    
    func main(){
    	// 初始化学生数据存储变量(开辟内存空间)
    	stuManger := sutdentManager{
    		store_student: make(map[int64]*student,200),
    	}
    	for {
    		// 1. 打印选项菜单
    
    		showMenu() 
    
    		// 2.等待用户输入选项
    		var choice int
    		fmt.Print("选项:")
    		fmt.Scanln(&choice)
    		fmt.Printf("你选择了:%d选项
    ",choice)
    		// 3.执行对应的方法
    		switch choice {
    		case 1:
    			stuManger.showAllStudent()
    		case 2:
    			stuManger.addStudent()
    		case 3:
    			stuManger.deleteStudent()
    		case 4:
    			os.Exit(1)
    		default:
    			fmt.Println("输入的选项不存在")
    		}
    	}
    }
    
  • 相关阅读:
    MVC3 中上传大文件
    js 将十进制转换为八位二进制数组
    nodejs 读取并处理二进制文件
    freeswitch源码编译 ./configure 遇到的问题
    通道设置静态坐席
    呼叫中心静态座席的配置
    ECharts报表
    combotree
    openlayer PanZoom
    为什么要始终使用PreparedStatement代替Statement?
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12309652.html
Copyright © 2011-2022 走看看