基于Go编写一个人员管理系统案例

代码结构

在这里插入图片描述

人员结构体

package entity

// 结构体:人
type Person struct {
	Id   int
	Name string
	Sex  string
	Age  int
}

// 构造函数
func NewPerson(id int, name, sex string, age int) *Person {
	return &Person{
		Id:   id,
		Name: name,
		Sex:  sex,
		Age:  age,
	}
}

人员管理结构体

package service

import (
	"demo/entity"
	"fmt"
)

type PersonService struct {
	num        int              // 人员数量
	personList []*entity.Person // 人员切片
}

// 构造函数
func NewPersonService() *PersonService {
	return &PersonService{
		num:        0,
		personList: make([]*entity.Person, 0, 100),
	}
}

// 1)添加人员
func (personService *PersonService) AddPerson(person *entity.Person) {
	for _, v := range personService.personList {
		if person.Id == v.Id {
			fmt.Println("===========人员ID已存在,添加失败===========")
			return
		}
	}
	personService.personList = append(personService.personList, person)
	personService.num += 1
	fmt.Println("===========添加成功===========")
}

// 2)删除人员
func (personService *PersonService) DeletePerson(id int) {
	for i, v := range personService.personList {
		if id == v.Id {
			personService.personList = append(personService.personList[:i], personService.personList[i+1:]...)
			fmt.Println("===========删除成功===========")
			return
		}
	}
	fmt.Println("===========人员ID不存在,删除失败===========")
}

// 3)修改人员
func (personService *PersonService) UpdatePerson(person *entity.Person) {
	for i, v := range personService.personList {
		if person.Id == v.Id {
			personService.personList[i] = person
			fmt.Println("===========修改成功===========")
			return
		}
	}
	fmt.Println("===========人员ID不存在,修改失败===========")
}

// 4)查询人员
func (personService *PersonService) ListPerson() {
	fmt.Println("ID", "姓名", "性别", "年龄")
	for _, v := range personService.personList {
		fmt.Println(v.Id, v.Name, v.Sex, v.Age)
	}
}

主函数

package main

import (
	"demo/entity"
	"demo/service"
	"fmt"
	"os"
)

func main() {
	// 人员管理系统
	personService := service.NewPersonService()

	for {
		// 打印菜单
		showMenu()

		// 控制台指令
		var command int
		fmt.Scanf("%d\n", &command)

		switch command {
		case 1: // 添加人员
			fmt.Println("【添加人员】")
			fmt.Println("请输入人员的ID、名字、性别、年龄(以空格隔开):")
			p, err := newPersonByScan()
			if err == nil {
				personService.AddPerson(p)
			}
		case 2: // 删除人员
			fmt.Println("【删除人员】")
			fmt.Println("请输入人员的ID:")
			var id int
			// 读取控制台输入
			_, err := fmt.Scanln(&id)
			if err != nil {
				fmt.Println("输入错误,err:", err)
			}
			personService.DeletePerson(id)
		case 3: // 修改人员
			fmt.Println("【修改人员】")
			fmt.Println("请输入人员的ID、名字、性别、年龄(以空格隔开):")
			p, err := newPersonByScan()
			if err == nil {
				personService.UpdatePerson(p)
			}
		case 4: // 查询人员
			fmt.Println("【查询人员】")
			personService.ListPerson()
		case 5: // 退出系统
			fmt.Println("【退出系统】")
			fmt.Println("Bye!")
			os.Exit(0)
		default:
			fmt.Println("指令有误,请重新输入!")
		}
	}
}

// 获取控制台输入,创建人员对象
func newPersonByScan() (*entity.Person, error) {
	var (
		id   int
		name string
		sex  string
		age  int
	)
	// 读取控制台输入
	_, err := fmt.Scanln(&id, &name, &sex, &age)
	// 出错
	if err != nil {
		fmt.Println("输入错误,err:", err)
	}
	return entity.NewPerson(id, name, sex, age), err
}

func showMenu() {
	fmt.Println("********************人员管理系统********************")
	fmt.Println("1、添加人员")
	fmt.Println("2、删除人员")
	fmt.Println("3、修改人员")
	fmt.Println("4、查询人员")
	fmt.Println("5、退出系统")
	fmt.Println("****************************************************")
}

测试

添加人员

在这里插入图片描述

删除人员

在这里插入图片描述

修改人员

在这里插入图片描述

查询人员

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PG_强哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值