package mainimport ( "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("\t%s\t%s\t%s\t%s\n", "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("\t%s\t%s\t%s\t%s\n", 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+"\n") 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+"\n")) //写入字节切片数据 //file.WriteString(name+"\n") //直接写入字符串数据 fmt.Println("开始写入文件")}func main() { c := &Class{} c.Student = make(map[int]*Student, 50) for { fmt.Println("学生管理系统:") fmt.Println() fmt.Println("1.查看学生 \n2.添加学生 \n3.删除学生 \n4.修改学生信息 \n5.查看文件 \n6.退出登陆") 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("退出系统")}
总结 以上是内存溢出为你收集整理的go语言 学生管理系统 简化版全部内容,希望文章能够帮你解决go语言 学生管理系统 简化版所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)