• 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("退出系统")
    }
    
    
  • 相关阅读:
    1024X768大图 (Wallpaper)
    (Mike Lynch)Application of linear weight neural networks to recognition of hand print characters
    瞬间模糊搜索1000万基本句型的语言算法
    单核与双核的竞争 INTEL P4 670对抗820
    FlashFTP工具的自动缓存服务器目录的功能
    LDAP over SSL (LDAPS) Certificate
    Restart the domain controller in Directory Services Restore Mode Remotely
    How do I install Active Directory on my Windows Server 2003 server?
    指针与指针变量(转)
    How to enable LDAP over SSL with a thirdparty certification authority
  • 原文地址:https://www.cnblogs.com/ipyanthony/p/14600624.html
Copyright © 2020-2023  润新知