Go语言学生信息管理系统

构建一个简单的学生信息管理系统,使用Go语言来实现。本项目将包括学生信息的添加、修改、删除和查看功能。

项目概述

我们将创建一个名为Database的结构体,该结构体包含一个Allstudent字段,用于存储学生信息。学生信息将使用student_list结构体来表示,包括学号、姓名、年龄和学校。系统将提供以下功能:

  1. 添加学生信息
  2. 修改学生信息
  3. 删除学生信息
  4. 显示全部学生信息
  5. 退出程序

数据结构定义

首先,我们定义了两个结构体,分别是Databasestudent_list,如下所示:

type Database struct {
	Allstudent map[int]student_list
}

type student_list struct {
	name   string
	school string
	id     int
	age    int
}

Database结构体包含一个Allstudent字段,用于存储学生信息,其中键是学号(int类型),值是student_list结构体。

添加学生信息

接下来,我们定义了Add_Student方法,用于向学生信息数据库中添加学生。在该方法中,我们首先获取用户输入的学号,并检查该学号是否已经存在于数据库中。如果学号已存在,我们将显示学生信息并提醒用户学生已被录入。否则,我们将提示用户输入学生的姓名、年龄和学校,并将学生信息添加到数据库中。

func (d *Database) Add_Student() {
	// 获取用户输入的学号和检查是否已存在
	var addid int
	var addage int
	var addname string
	var addschool string
	fmt.Print("请输入你要录入的学生信息:\n")
	fmt.Print("1.学号:")
	fmt.Scan(&addid)
	stuinfo, exist := d.Allstudent[addid]
	if exist {
		fmt.Print("该学生已被录入\n")
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", stuinfo.id, stuinfo.name, stuinfo.age, stuinfo.school)
		return
	} else {
		fmt.Print("2.姓名:")
		fmt.Scan(&addname)
		fmt.Print("3.年龄:")
		fmt.Scan(&addage)
		fmt.Print("4.学校:")
		fmt.Scan(&addschool)
		d.Allstudent[addid] = student_list{addname, addschool, addid, addage}
		fmt.Print("录入成功,该学生信息为:\n")
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", addid, addname, addage, addschool)
	}
}

修改学生信息

我们还定义了Modify_Student方法,用于修改学生的信息。用户需要输入要修改的学生的学号,系统将检查该学号是否存在于数据库中。如果存在,系统将显示该学生的信息,并允许用户输入新的姓名、年龄和学校信息,然后更新数据库中的信息。

func (d *Database) Modify_Student() {
	// 获取用户输入的要修改的学号
	var orid int
	var modid int
	var modage int
	var modname string
	var modschool string
	fmt.Print("请输入你要修改学生的学号:\n")
	fmt.Scan(&orid)
	stuinfo, exist := d.Allstudent[orid]
	if exist {
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", stuinfo.id, stuinfo.name, stuinfo.age, stuinfo.school)
		fmt.Print("请输入学生修改后的姓名:")
		fmt.Scan(&modname)
		fmt.Print("请输入学生修改后的年龄:")
		fmt.Scan(&modage)
		fmt.Print("请输入学生修改后的学校:")
		fmt.Scan(&modschool)
		fmt.Print("请输入学生修改后的学号")
		fmt.Scan(&modid)
		delete(d.Allstudent, orid)
		d.Allstudent[modid] = student_list{
			modname,
			modschool,
			modid,
			modage,
		}
		fmt.Print("信息修改成功,修改后的信息为:\n")
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", modid, modname, modage, modschool)
	} else {
		fmt.Print("该学生信息不存在\n")
	}
}

删除学生信息

我们的系统还提供了Delete_stu方法,用于删除学生信息。用户需要输入要删除的学生的学号,系统将检查该学号是否存在于数据库中。如果存在,系统将删除该学生的信息。

func (d *Database) Delete_stu() {
	// 获取用户输入的要删除的学号
	var delid int
	fmt.Print("请输入你要修改学生的学号:\n")
	fmt.Scan(&delid)
	stuinfo, exist := d.Allstudent[delid]
	if exist {
		fmt.Printf("已删除学生信息:%v\n", stuinfo)
		delete(d.Allstudent, delid)
	} else {
		fmt.Printf("该学生信息不存在\n")
	}
}

显示全部学生信息

最后,我们定义了Show_Info方法,用于显示数据库中的所有学生信息。

func (d *Database) Show_Info() {
	for _, stuinfo := range d.Allstudent {
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", stuinfo.id, stuinfo.name, stuinfo.age, stuinfo.school)
	}
}

主函数

main函数中,我们创建了一个Database对象,并初始化了一个包含学生信息的map。然后,我们使用一个无限循环来显示用户菜单和接收用户输入,根据用户的选择执行相应的操作。当用户选择退出时,循环结束,程序退出。

func main() {
	// 创建学生信息数据库
	student_data := Database{}
	student_data.Allstudent = make(map[int]student_list, 20)

	for {
		var choice int
		fmt.Printf("菜单:\n   1. 添加学生信息\n")
		fmt.Printf("   2. 修改学生信息\n")
		fmt.Printf("   3. 删除学生信息\n")
		fmt.Printf("   4. 显示全部学生信息\n")
		fmt.Printf("   5. 退出\n")
		fmt.Printf("请输入操作对应的数字:\n")
		fmt.Scan(&choice)

		// 根据用户选择执行操作
		switch choice {
		case 1:
			student_data.Add_Student()
		case 2:
			student_data.Modify_Student()
		case 3:
			student_data.Delete_stu()
		case 4:
			student_data.Show_Info()
		case 5:
			fmt.Println("程序已退出")
			return
		default:
			fmt.Println("请输入1~5之间的数字")
		}
	}
}

总结

该学生信息管理系统使用Go语言实现了添加、修改、删除和查看学生信息的功能。这个项目可以帮助你熟悉Go语言中的结构体、map数据结构和命令行输入。你可以根据这个项目继续扩展和改进,添加更多功能和验证机制,以适应不同的需求。希望这个项目能帮助你更好地理解和使用Go语言。如果你有任何问题或建议,请随时留言。

完整代码附上:

package main

import (
	"fmt"
)


type Database struct {
	 Allstudent map[int]student_list
}

type student_list struct {
	name string
	school string
	id int
	age int
}

func (d *Database) Add_Student() {
	var addid int
	var addage int
	var addname string
	var addschool string
	fmt.Print("请输入你要录入的学生信息:\n")
	fmt.Print("1.学号:")
	fmt.Scan(&addid)
	stuinfo, exist := d.Allstudent[addid]
	if exist{
		fmt.Print("该学生已被录入\n")
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", stuinfo.id,  stuinfo.name,  stuinfo.age,  stuinfo.school)
		return
	}else{
		fmt.Print("2.姓名:")
		fmt.Scan(&addname)
		fmt.Print("3.年龄:")
		fmt.Scan(&addage)
		fmt.Print("4.学校:")
		fmt.Scan(&addschool)
		d.Allstudent[addid] = student_list{addname, addschool, addid, addage}
		fmt.Print("录入成功,该学生信息为:\n")
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", addid, addname, addage,  addschool)
	}

}

func (d *Database) Modify_Student(){
	var orid int
	var modid int
	var modage int
	var modname string
	var modschool string
	fmt.Print("请输入你要修改学生的学号:\n")
	fmt.Scan(&orid)
	stuinfo, exist := d.Allstudent[orid]
	if exist{
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", stuinfo.id,  stuinfo.name,  stuinfo.age,  stuinfo.school)
		fmt.Print("请输入学生修改后的姓名:")
		fmt.Scan(&modname)
		fmt.Print("请输入学生修改后的年龄:")
		fmt.Scan(&modage)
		fmt.Print("请输入学生修改后的学校:")
		fmt.Scan(&modschool)
		fmt.Print("请输入学生修改后的学号")
		fmt.Scan(&modid)
		delete(d.Allstudent, orid)
		d.Allstudent[modid] = student_list{
			modname,
			modschool,
			modid,
			modage,
		}
 		fmt.Print("信息修改成功,修改后的信息为:\n")
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", modid, modname, modage, modschool)
	}else{
		fmt.Print("该学生信息不存在\n")
	}
}

func (d *Database) Delete_stu(){
	var delid int
	fmt.Print("请输入你要修改学生的学号:\n")
	fmt.Scan(&delid)
	stuinfo, exist := d.Allstudent[delid]
	if exist{
		fmt.Printf("已删除学生信息:\n", stuinfo)
		delete(d.Allstudent,delid)
	}else {
		fmt.Printf("该学生信息不存在\n")
	}
}

func (d *Database) Show_Info(){
	for _, stuinfo := range d.Allstudent{
		fmt.Printf("学号:%d 姓名:%s 年龄:%d 学校:%s\n", stuinfo.id,  stuinfo.name,  stuinfo.age,  stuinfo.school)
	}
}

func main(){
	student_data := Database{}
	student_data.Allstudent = make(map[int]student_list, 20)
	for{
		var choice int
		fmt.Printf("菜单:\n   1.  添加学生信息\n")
		fmt.Printf("   2.  修改学生信息\n")
		fmt.Printf("   3.  删除学生信息\n")
		fmt.Printf("   4.  显示全部学生信息\n")
		fmt.Printf("   5.  退出\n")
		fmt.Printf("请输入操作对应的数字:\n")
		fmt.Scan(&choice)



		switch choice {
		case 1:
			student_data.Add_Student()
		case 2:
			student_data.Modify_Student()
	    case 3:
			student_data.Delete_stu()
		case 4:
			student_data.Show_Info()
		case 5:
			os.Exit(0)  //Exit 函数可以让当前程序以给出的状态码 code 退出
		default:
			fmt.Println("请输入1~5之间的数字")
		}

	}



}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值