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("退出系统")
    }
    
    
  • 相关阅读:
    java服务端微信小程序支付
    H5商城,纯前端静态页面
    上海期货交易所CTP行情和交易接入
    iOS12 Network框架 自签名证书认证
    Android 本地播放器
    Spring Boot 集成 GRPC
    pandas DataFrame 索引(iloc 与 loc 的区别)
    编程规范 —— 类的命名
    pandas 操作 excel
    matplotlib 操作子图(subplot,axes)
  • 原文地址:https://www.cnblogs.com/ipyanthony/p/14600624.html
Copyright © 2011-2022 走看看