当前位置: 代码迷 >> 综合 >> 结构体作业
  详细解决方案

结构体作业

热度:31   发布时间:2023-10-16 12:36:00.0
  • 学生管理系统

学生管理系统

package mainimport ("fmt""os""strconv"
)/*
使用面向对象的思维方式实现一个简单的学生信息管理系统。
每个学生有姓名、性别、年龄、班级信息,
用户可以在控制台添加学生、修改学生信息、删除学生、打印所有的学生列表。
*/
// 1. 打印出来全部的学生
// 2. 添加学生信息
// 3. 删除学生信息
// 4. 修改学生信息//定义了一个学生信息map
var allStudent map[int]*student//班级有自己的信息
type class struct {classname string //年级classid   string //班级
}//学生有自己的信息
type student struct {id   intage  intname stringclass
}//平台上面有学生信息
type sms struct {name    stringstudent map[int]*student
}//造一个学生
func newStudent(id, age int, classid, name, classname string) *student {return &student{id:   id,age:  age,name: name,class: class{classname: classname,classid:   classid,},}
}//造一个平台,平台有名字,有学生列表
func newSms(allStudent map[int]*student, name string) *sms {return &sms{name:    name,student: allStudent,}
}//平台上面有操作方式--查看
func (s *sms) showstudent() {for k, v := range allStudent {fmt.Printf("学号:%d\t学生年龄:%d\t学生名称:%s\t学生年级:%s\t学生班级名称:%s\n", k, v.age, v.name, v.classname, v.classid)}
}//平台上面有操作方式--添加
func (s *sms) addstudent() {var (id        intage       intname      stringclassname stringclassid   stringtag       = trueo         string)for tag {fmt.Println("输入需要添加的学生的姓名:")fmt.Scanln(&name)fmt.Println("输入需要添加的学生的学号:")fmt.Scanln(&id)fmt.Println("输入需要添加的学生的年龄:")fmt.Scanln(&age)fmt.Println("输入需要添加的学生的年级:")fmt.Scanln(&classname)fmt.Println("输入需要添加的学生的班级:")fmt.Scanln(&classid)_, ok := allStudent[id]if ok {for key := range allStudent {if key != id {fmt.Println("添加学生成功!!")allStudent[id] = newStudent(id, age, classid, name, classname)break}fmt.Println("--------输入的学号已经存在!!!!")}} else {fmt.Println("添加学生成功!")allStudent[id] = newStudent(id, age, classid, name, classname)}fmt.Println("是否退出(y/n):")fmt.Scanln(&o)if o == "y" {tag = false}}
}//平台上面有操作方式--修改
func (s *sms) upstudent() {var (upname stringupid   intchoice intpri    = func() (*student, string) { //定义匿名函数fmt.Print("输入修改的后的值:")fmt.Scanln(&upname)for k, st := range allStudent {if upid == k {return st, upname}}return nil, ""})fmt.Println("输入要修改的学号:")fmt.Scanln(&upid)fmt.Print(`
 进入平台学生信息修改界面:
	1. 修改姓名
	2. 修改年龄
	3. 修改年级
	4. 修改班级
 `)fmt.Print("输入修改的选项:")fmt.Scanln(&choice)switch choice {case 1:st, upname := pri()if st != nil {st.name = upnamefmt.Printf("-------->修改完成!%s\n", upname)} else {fmt.Printf("-------->修改出现问题!%s\n", upname)}case 2:st, upname := pri()if st != nil {cc, _ := strconv.Atoi(upname)st.age = int(cc)fmt.Printf("-------->修改完成!%s\n", upname)} else {fmt.Printf("-------->修改出现问题!%s\n", upname)}case 3:st, upname := pri()if st != nil {st.classname = upnamefmt.Printf("-------->修改完成!%s\n", upname)} else {fmt.Printf("-------->修改出现问题!%s\n", upname)}case 4:st, upname := pri()if st != nil {st.classid = upnamefmt.Printf("-------->修改完成!%s\n", upname)} else {fmt.Printf("-------->修改出现问题!%s\n", upname)}default:fmt.Println("滚~!!!")}
}//平台上面有操作方式--删除
func (s *sms) delstudent() {var (id   intname string)fmt.Print("请输入需要删除的学号:")fmt.Scanln(&id)name = allStudent[id].namedelete(allStudent, id)fmt.Printf("已经删除的学生%s\n", name)
}//入口函数
func main() {allStudent = make(map[int]*student, 100)fmt.Println(allStudent)schoolms := newSms(allStudent, "大人学校")for {fmt.Printf("欢迎来带%s平台!!!\n", schoolms.name)fmt.Print(`
		1. 查看学生信息
		2. 新增学生信息
		3. 修改学生信息
		4. 删除学生信息
		5. 退出
 `)// 2. 选择var choice intfmt.Print("请输入你需要操作的选项:")fmt.Scanln(&choice)switch choice {case 1:schoolms.showstudent()case 2:schoolms.addstudent()case 3:schoolms.upstudent()case 4:schoolms.delstudent()case 5:os.Exit(1)default:fmt.Println("滚~")}}}
  相关解决方案