- 博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。
- 博主主页: @是瑶瑶子啦
- 所属专栏: Go语言核心编程
- 近期目标:写好专栏的每一篇文章
学习了Go的基础语法知识,如何巩固和提升呢?跟着瑶瑶子写一个简易的学生信息管理系统来练练手吧!
文章目录
一、学生信息管理系统程序介绍
- 功能介绍 - 添加学员信息- 根据学号(id)编辑学员信息- 展示所有学员信息- 退出系统
二、功能分析和实现
2.1:项目目录结构:
stuInfoProject
:项目文件夹 -go.mod
-main.go
:主程序,核心逻辑代码-student.go
:学生类型结构体的定义、构造函数、方法等-studentSys
:学生信息管理系统类型结构体的定义、构造函数、方法等
2.2:开始菜单:
在
main.go
中定义显示菜单函数
funcshowMenu(){
info :=`
*********************欢迎来到学生管理系统***********
1、添加学员信息
2、编辑学员信息
3、展示所有学员信息
4、退出系统
************************************************
`
fmt.Print(info)}
2.3:类型构建
在这个项目中,我们需要两个结构体:
- 学生结构体:
student
,定义等封装在student.go
文件中
package main
// 定义一个学生类型结构体type student struct{
id int//学号
name string//姓名
class string}// 构造函数funcnewStudent(id int, name, class string)*student {return&student{
id: id,
name: name,
class: class,}}
- 学生信息管理系统结构体
studentSys
,定义和方法等封装在studentSys.go
中
package main
import"fmt"type studentSys struct{
num int//学生的数量
students []*student //存储学生实体的切片}//构造函数funcnewStudentSys()*studentSys {return&studentSys{
num:0,
students:make([]*student,0,100),}}// 1)这个管理系统所具备的方法:添加学生func(sys *studentSys)addStudent(stu *student){
sys.students =append(sys.students, stu)
sys.num +=1
fmt.Println("************添加成功**********")}// 2)编辑学生func(sys *studentSys)updateStudent(stu *student){for i, v :=range sys.students {if stu.id == v.id {//当学号相同时,找到要修改学生
sys.students[i]= stu
fmt.Println("***************修改成功***************")return}}
fmt.Println("*********找不到该学号学生,修改失败*********")}// 3)展示学生func(sys *studentSys)showStudents(){for_, v :=range sys.students {
fmt.Println("学号:", v.id,"姓名:", v.name,"班级", v.class)}}
2.3:整体逻辑:
funcmain(){//构造一个学生管理系统
stuSys :=newStudentSys()//指针类型的,只创建一次,因为只有一个系统for{//打印菜单showMenu()//接收用户输入数据var input int
fmt.Scanf("%d\n",&input)//switch-case进行流程空指switch input {case1://添加学生case2://根据id修改学生信息case3://展示所有学生的信息case4:
os.Exit(0)//退出系统default:
fmt.Println("err:你输入选项格式有误,请重新输入!")}}}
2.5:功能1:添加学员信息
- 根据用户输入生成学员实例
// 获取用户输入的信息,创造学员的函数funcnewStuByUser()(*student,error){var(
id int
name string
class string)//读取用户输入_, err := fmt.Scanln(&id,&name,&class)//出错,给出错误信息,并且将错误返回if err !=nil{
fmt.Println("输入出错,err:", err)}returnnewStudent(id, name, class), err
}
- case1:内核心逻辑代码
case1://添加学生
fmt.Print("请输入学员的学号、名字、班级:(以空格隔开)")
s1, err :=newStuByUser()//调用学生管理系统所具备的方法,像其中添加学生//没有出错才添加if err ==nil{
stuSys.addStudent(s1)}
2.6:功能2:根据id修改学员信息
- 根据用户输入生成学员实例 同上
- case2:内核心逻辑代码
case2:
fmt.Println("请输入该学生的学号,及其要修改的名称和班级:(用空格隔开)")
s1, err :=newStuByUser()if err ==nil{
stuSys.updateStudent(s1)}
2.7:展示所有学员信息、退出程序
case3:
fmt.Println("以下是所有学生信息展示:")
stuSys.showStudents()case4:
os.Exit(0)//退出系统default:
fmt.Println("err:你输入选项格式有误,请重新输入!")}
三、总结
综上,就是一个比较简单的,适合巩固基础的学生信息管理系统的小项目。涉及到函数、结构体、方法、构造函数等基础知识,非常适合小白拿来练手和巩固知识!
欢迎在评论区交流和留下你的想法和建议
如果对你有用,还请:💭评论+👍🏻点赞+⭐收藏+➕关注
- Java岛冒险记【从小白到大佬之路】
- LeetCode每日一题–进击大厂
- 算法
- C/C++
- Go语言核心编程
- 数据结构
版权归原作者 是瑶瑶子啦 所有, 如有侵权,请联系我们删除。