- 博主簡(jiǎn)介:努力學(xué)習(xí)的大一在校計(jì)算機(jī)專業(yè)學(xué)生,熱愛學(xué)習(xí)和創(chuàng)作。目前在學(xué)習(xí)和分享:數(shù)據(jù)結(jié)構(gòu)、Go,Java等相關(guān)知識(shí)。
- 博主主頁(yè): @是瑤瑤子啦
- 所屬專欄: Go語(yǔ)言核心編程
- 近期目標(biāo):寫好專欄的每一篇文章
學(xué)習(xí)了Go的基礎(chǔ)語(yǔ)法知識(shí),如何鞏固和提升呢?跟著瑤瑤子寫一個(gè)簡(jiǎn)易的學(xué)生信息管理系統(tǒng)來練練手吧!
一、學(xué)生信息管理系統(tǒng)程序介紹
-
功能介紹
- 添加學(xué)員信息
- 根據(jù)學(xué)號(hào)(id)編輯學(xué)員信息
- 展示所有學(xué)員信息
- 退出系統(tǒng)
二、功能分析和實(shí)現(xiàn)
2.1:項(xiàng)目目錄結(jié)構(gòu):
-
stuInfoProject
:項(xiàng)目文件夾go.mod
-
main.go
:主程序,核心邏輯代碼 -
student.go
:學(xué)生類型結(jié)構(gòu)體的定義、構(gòu)造函數(shù)、方法等 -
studentSys
:學(xué)生信息管理系統(tǒng)類型結(jié)構(gòu)體的定義、構(gòu)造函數(shù)、方法等
2.2:開始菜單:
在main.go
中定義顯示菜單函數(shù)
func showMenu() {
info := `
*********************歡迎來到學(xué)生管理系統(tǒng)***********
1、添加學(xué)員信息
2、編輯學(xué)員信息
3、展示所有學(xué)員信息
4、退出系統(tǒng)
************************************************
`
fmt.Print(info)
}
2.3:類型構(gòu)建
在這個(gè)項(xiàng)目中,我們需要兩個(gè)結(jié)構(gòu)體:
- 學(xué)生結(jié)構(gòu)體:
student
,定義等封裝在student.go
文件中
package main
// 定義一個(gè)學(xué)生類型結(jié)構(gòu)體
type student struct {
id int //學(xué)號(hào)
name string //姓名
class string
}
// 構(gòu)造函數(shù)
func newStudent(id int, name, class string) *student {
return &student{
id: id,
name: name,
class: class,
}
}
- 學(xué)生信息管理系統(tǒng)結(jié)構(gòu)體
studentSys
,定義和方法等封裝在studentSys.go
中
package main
import "fmt"
type studentSys struct {
num int //學(xué)生的數(shù)量
students []*student //存儲(chǔ)學(xué)生實(shí)體的切片
}
//構(gòu)造函數(shù)
func newStudentSys() *studentSys {
return &studentSys{
num: 0,
students: make([]*student, 0, 100),
}
}
// 1)這個(gè)管理系統(tǒng)所具備的方法:添加學(xué)生
func (sys *studentSys) addStudent(stu *student) {
sys.students = append(sys.students, stu)
sys.num += 1
fmt.Println("************添加成功**********")
}
// 2)編輯學(xué)生
func (sys *studentSys) updateStudent(stu *student) {
for i, v := range sys.students {
if stu.id == v.id { //當(dāng)學(xué)號(hào)相同時(shí),找到要修改學(xué)生
sys.students[i] = stu
fmt.Println("***************修改成功***************")
return
}
}
fmt.Println("*********找不到該學(xué)號(hào)學(xué)生,修改失敗*********")
}
// 3)展示學(xué)生
func (sys *studentSys) showStudents() {
for _, v := range sys.students {
fmt.Println("學(xué)號(hào):", v.id, "姓名:", v.name, "班級(jí)", v.class)
}
}
2.3:整體邏輯:
func main() {
//構(gòu)造一個(gè)學(xué)生管理系統(tǒng)
stuSys := newStudentSys() //指針類型的,只創(chuàng)建一次,因?yàn)橹挥幸粋€(gè)系統(tǒng)
for {
//打印菜單
showMenu()
//接收用戶輸入數(shù)據(jù)
var input int
fmt.Scanf("%d\n", &input)
//switch-case進(jìn)行流程空指
switch input {
case 1: //添加學(xué)生
case 2: //根據(jù)id修改學(xué)生信息
case 3: //展示所有學(xué)生的信息
case 4:
os.Exit(0) //退出系統(tǒng)
default:
fmt.Println("err:你輸入選項(xiàng)格式有誤,請(qǐng)重新輸入!")
}
}
}
2.5:功能1:添加學(xué)員信息
- 根據(jù)用戶輸入生成學(xué)員實(shí)例
// 獲取用戶輸入的信息,創(chuàng)造學(xué)員的函數(shù)
func newStuByUser() (*student, error) {
var (
id int
name string
class string
)
//讀取用戶輸入
_, err := fmt.Scanln(&id, &name, &class)
//出錯(cuò),給出錯(cuò)誤信息,并且將錯(cuò)誤返回
if err != nil {
fmt.Println("輸入出錯(cuò),err:", err)
}
return newStudent(id, name, class), err
}
- case1:內(nèi)核心邏輯代碼
case 1: //添加學(xué)生
fmt.Print("請(qǐng)輸入學(xué)員的學(xué)號(hào)、名字、班級(jí):(以空格隔開)")
s1, err := newStuByUser()
//調(diào)用學(xué)生管理系統(tǒng)所具備的方法,像其中添加學(xué)生
//沒有出錯(cuò)才添加
if err == nil {
stuSys.addStudent(s1)
}
2.6:功能2:根據(jù)id修改學(xué)員信息
-
根據(jù)用戶輸入生成學(xué)員實(shí)例
同上 - case2:內(nèi)核心邏輯代碼
case 2:
fmt.Println("請(qǐng)輸入該學(xué)生的學(xué)號(hào),及其要修改的名稱和班級(jí):(用空格隔開)")
s1, err := newStuByUser()
if err == nil {
stuSys.updateStudent(s1)
}
2.7:展示所有學(xué)員信息、退出程序
case 3:
fmt.Println("以下是所有學(xué)生信息展示:")
stuSys.showStudents()
case 4:
os.Exit(0) //退出系統(tǒng)
default:
fmt.Println("err:你輸入選項(xiàng)格式有誤,請(qǐng)重新輸入!")
}
三、總結(jié)
綜上,就是一個(gè)比較簡(jiǎn)單的,適合鞏固基礎(chǔ)的學(xué)生信息管理系統(tǒng)的小項(xiàng)目。涉及到函數(shù)、結(jié)構(gòu)體、方法、構(gòu)造函數(shù)等基礎(chǔ)知識(shí),非常適合小白拿來練手和鞏固知識(shí)!
歡迎在評(píng)論區(qū)交流和留下你的想法和建議
如果對(duì)你有用,還請(qǐng):??評(píng)論+????點(diǎn)贊+?收藏+?關(guān)注文章來源:http://www.zghlxwxcb.cn/news/detail-432675.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-432675.html
- Java島冒險(xiǎn)記【從小白到大佬之路】
- LeetCode每日一題–進(jìn)擊大廠
- 算法
- C/C++
- Go語(yǔ)言核心編程
- 數(shù)據(jù)結(jié)構(gòu)
到了這里,關(guān)于【Golang項(xiàng)目實(shí)戰(zhàn)】用Go寫一個(gè)學(xué)生信息管理系統(tǒng),真的太酷啦| 保姆級(jí)詳解,附源碼——建議收藏的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!