zoukankan      html  css  js  c++  java
  • go语言 学生管理系统 简化版

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    	"io/ioutil"
    	"os"
    )
    
    type Student struct {
    	ID    int
    	Age   int
    	Score int
    	Name  string
    }
    
    type Class struct {
    	ID      int
    	Student map[int]*Student
    }
    
    func (c *Class) showStudent() {
    	fmt.Printf("	%s	%s	%s	%s
    ", "ID", "姓名", "年龄", "分数")
    	sortId := make([]int, 0)
    	for k := range c.Student {
    		sortId = append(sortId, k)
    	}
    	for _, v := range sortId {
    		studentMsg := c.Student[v]
    		fmt.Println(studentMsg)
    		fmt.Printf("	%s	%s	%s	%s
    ", studentMsg.ID, studentMsg.Name, studentMsg.Age, studentMsg.Score)
    	}
    }
    
    func (c *Class) addStudent() {
    	var id, age, score int
    	var name string
    	fmt.Print("请输入id:")
    	_, err := fmt.Scan(&id)
    	fmt.Print("请输入name:")
    	_, err = fmt.Scan(&name)
    	fmt.Print("请输入age:")
    	_, err = fmt.Scan(&age)
    	fmt.Print("请输入score:")
    	_, err = fmt.Scan(&score)
    	if err != nil {
    		fmt.Println("输入有无,保存信息错误")
    	}
    	_, isSave := c.Student[id]
    	if isSave {
    		fmt.Println("学生ID已存在,请重新输入")
    	}
    	student := &Student{
    		ID:    id,
    		Name:  name,
    		Age:   age,
    		Score: score,
    	}
    	// 将输入内容存入内存
    	c.ID = id
    	c.Student[id] = student
    	// 将map类型转换成string类型,并写入txt文件
    	dataType, _ := json.Marshal(*student)
    	dataString := string(dataType)
    	writeFile(dataString+"
    ")
    
    	fmt.Println("添加成功")
    	fmt.Println(&c)
    }
    
    func (c *Class) delStudent() {
    	fmt.Println("请输入用户ID:")
    	var id int
    	_, err := fmt.Scan(&id)
    	if err != nil {
    		fmt.Println("输入有误,请重新输入")
    	}
    	_, isSave := c.Student[id]
    	if !isSave {
    		fmt.Println("用户ID不存在")
    		return
    	}
    	delete(c.Student, id)
    	fmt.Println("删除成功")
    }
    
    func (c *Class) updateStudent() {
    	fmt.Println("请输入用户ID:")
    	var id int
    	_, err := fmt.Scan(&id)
    	if err != nil {
    		fmt.Println("输入有误")
    		return
    	}
    	_, isSave := c.Student[id]
    	if !isSave {
    		fmt.Println("用户不存在,请重新输入")
    		return
    	}
    	var name string
    	var age int
    	var score int
    	fmt.Println("请输入新的name:")
    	_, err = fmt.Scan(&name)
    	fmt.Println("请输入新的age:")
    	_, err = fmt.Scan(&age)
    	fmt.Println("请输入新的score:")
    	_, err = fmt.Scan(&score)
    
    	student := &Student{
    		ID:    id,
    		Name:  name,
    		Age:   age,
    		Score: score,
    	}
    	c.Student[id] = student
    	fmt.Println("修改成功")
    }
    
    func readFile() {
    	content, err := ioutil.ReadFile("./studentMsg.txt")
    	if err != nil {
    		fmt.Println("read file failed, err:", err)
    		return
    	}
    	fmt.Println("文件内容如下:")
    	fmt.Print(string(content))
    }
    
    func writeFile(name string) {
    	file, err := os.OpenFile("./studentMsg.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
    	if err != nil {
    		fmt.Println("open file failed, err:", err)
    		return
    	}
    	defer file.Close()
    	file.Write([]byte(name+"
    "))       //写入字节切片数据
    	//file.WriteString(name+"
    ") //直接写入字符串数据
    
    	fmt.Println("开始写入文件")
    }
    
    func main() {
    	c := &Class{}
    	c.Student = make(map[int]*Student, 50)
    	for {
    		fmt.Println("学生管理系统:")
    		fmt.Println()
    		fmt.Println("1.查看学生 
    2.添加学生 
    3.删除学生 
    4.修改学生信息 
    5.查看文件 
    6.退出登陆")
    		fmt.Println()
    		fmt.Print("请输入选项: ")
    
    		var num int
    		_, err := fmt.Scan(&num)
    		if err != nil {
    			fmt.Println("输入有无,请重新输入")
    		}
    		switch num {
    		case 1:
    			c.showStudent()
    		case 2:
    			c.addStudent()
    		case 3:
    			c.delStudent()
    		case 4:
    			c.updateStudent()
    		case 5:
    			readFile()
    		case 6:
    			goto goHome
    		default:
    			fmt.Println("输入有无,请重新输入")
    			continue
    		}
    	}
    goHome:
    	fmt.Println("退出系统")
    }
    
    
  • 相关阅读:
    Oracle 按一行里某个字段里的值分割成多行进行展示
    Property or method "openPageOffice" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by
    SpringBoot 项目启动 Failed to convert value of type 'java.lang.String' to required type 'cn.com.goldenwater.dcproj.dao.TacPageOfficePblmListDao';
    Maven 设置阿里镜像
    JS 日期格式化,留作参考
    JS 过滤数组里对象的某个属性
    原生JS实现简单富文本编辑器2
    Chrome控制台使用详解
    android权限(permission)大全
    不借助第三方网站四步实现手机网站转安卓APP
  • 原文地址:https://www.cnblogs.com/ipyanthony/p/14600624.html
Copyright © 2011-2022 走看看