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

代码结构

在这里插入图片描述

人员结构体

package entity// 结构体:人
type Person struct {Id   intName stringSex  stringAge  int
}// 构造函数
func NewPerson(id int, name, sex string, age int) *Person {return &Person{Id:   id,Name: name,Sex:  sex,Age:  age,}
}

人员管理结构体

package serviceimport ("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 += 1fmt.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] = personfmt.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 mainimport ("demo/entity""demo/service""fmt""os"
)func main() {// 人员管理系统personService := service.NewPersonService()for {// 打印菜单showMenu()// 控制台指令var command intfmt.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   intname stringsex  stringage  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("****************************************************")
}

测试

添加人员

在这里插入图片描述

删除人员

在这里插入图片描述

修改人员

在这里插入图片描述

查询人员

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/8857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AutoGPT】踩坑帖(follow李鱼皮)

本文写于2024年5月7日 参考视频:AutoGPT傻瓜式使用教程真实体验! 对应文章:炸裂的AutoGPT,帮我做了个网站! 平台:GitPod 云托管服务 原仓库已经改动很大,应使用的Repo为:Auto-GPT-ZH…

服务器拒绝登陆:Permission denied (publickey,password)

在账号密码正确的情况下,登陆服务器出现Permission denied (publickey,password)错误。 主要原因是shell软件(比如zsh软件)卸载后,主机的默认shell配置未改成可使用的shell软件(比如系统默认的bash) 通过…

人工智能将改变科研?从胰腺癌早筛到新药研发

去年底英国《自然》杂志刊文预测的2024年十大科学进展中,人工智能的进步和ChatGPT人工智能占据前两位。那么,人工智能对于科学而言,它的哪些成果将带来有益的发展?今天我们请知名科普作者张田勘来聊聊这个话题。 (1&am…

互联网巨头新战场:百度高管抖音首秀背后的营销变革与争议浪潮

在这个流量为王的时代,每一次跨界尝试都可能成为行业瞩目的焦点。5月7日,中国互联网巨头百度的公关副总裁璩静,以其独特的姿态,踏入了短视频的风口浪尖——抖音平台。这一看似寻常的举动,实则在业界激起了千层浪&#…

C语言 | Leetcode C语言题解之第76题最小覆盖子串

题目&#xff1a; 题解&#xff1a; char* minWindow(char* s, char* t) {int tLen strlen(t);int hash[256] { 0 };for (int i 0; i < tLen; i)hash[t[i]];for (int i 0; i < 256; i) {if (0 hash[i])hash[i] INT_MIN;}int left, right, count, start, minLen, s…

VBA 创建透视表,录制宏,自动化报表

目录 一. 数据准备二. 需求三. 准备好报表模板四. 执行统计操作&#xff0c;录制宏4.1 根据数据源创建透视表4.2 填充数据到报表4.3 结束宏录制 五. 执行录制好的宏&#xff0c;自动化报表 一. 数据准备 ⏹数据源1 姓名学科成绩丁志敏语文91李平平语文81王刚语文64张伊语文50…

【C++数据结构】string的模拟实现

为了更好的使用C中的标准库&#xff0c;下面是对string一些比较重要的接口进行模拟实现&#xff0c;有需要借鉴即可。 这里给出string文档地址链接&#xff0c;方便对照&#xff1a;LINK 目录 1.string结构的设计2.string构造函数2.1构造函数分开写2.2构造函数一块写2.3拷贝构造…

再学Java基础——HashMap和Hashtable

HashMap和Hashtable在Java中都是用于存储键值对的数据结构&#xff0c;但它们之间存在一些重要的区别。以下是它们之间的主要差异&#xff1a; 线程安全性&#xff1a; Hashtable是线程安全的&#xff0c;它的每个方法&#xff08;如put和get&#xff09;都是同步的&#xff0…

城市运行管理服务平台架构

城市运行管理服务平台是一种集成化的信息系统&#xff0c;其根本宗旨在于推动城市的高效运作与精细管理&#xff0c;进而提升广大市民的生活质量&#xff0c;并致力于实现城市的长期、稳定与可持续发展。 一、平台架构 1、核心优势 2、7个应用系统 &#xff08;1&#xff09;…

C++聊天服务器数据库创建

创建数据库chat show databases&#xff1a;展示所有的数据库 create database chat&#xff1a;创建一个数据库chat use chat&#xff1a;使用数据库 创建表User、Friend、AllGroup、GroupUser、OfflineMessage 表User包含&#xff1a;用户id、用户名、用户密码、当前登录…

78.子集

1.题目 子集 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/subsets/ 2.思路 3.C代码实现 class Solution { public:vector<vector<int>> ret;vector<int> path;vector<vector<int>> subsets(vector<int>& …

详解Go语言Map

Map的声明 使用make()函数定义Map map_name : make(map[KeyType]valueType,initialCapacity)KeyType是键的类型&#xff0c;ValueType是值的类型&#xff0c;initialCapacity是可选参数&#xff0c;用于指定map的初始容量。 使用map关键字定义Map m : map[string]int {&quo…

MySQL: Buffer Pool概念整理

一. 简介 MySQL中的Buffer Pool是InnoDB存储引擎用来缓存表数据和索引的内存区域。这是InnoDB性能优化中最关键的部分之一。通过在内存中缓存这些数据&#xff0c;InnoDB可以极大减少对磁盘I/O的需求&#xff0c;因为从内存中读取数据远比从磁盘读取要快得多。因此&#xff0c…

项目管理在软件工程中的实践方法

软件工程是一个复杂的过程&#xff0c;涉及到需求分析、设计、编码、测试和维护等多个阶段。有效的项目管理对于确保软件项目成功至关重要。以下是结合附件内容&#xff0c;关于项目管理在软件工程中实践的一些方法。 1. 明确项目愿景和目标 在项目启动之初&#xff0c;项目经…

基于Seata实现分布式事务实现

Seata 是一个开源的分布式事务解决方案&#xff0c;它提供了高性能和简单易用的分布式事务服务。Seata 将事务的参与者分为 TC&#xff08;Transaction Coordinator&#xff09;、TM&#xff08;Transaction Manager&#xff09;和 RM&#xff08;Resource Manager&#xff09;…

在word中使用tab键对齐文本时,会删除光标所在文字

问题 在word中使用tab键对齐文本时&#xff0c;会删除光标所在文字。 原因 先按了insert键&#xff0c;输入模式改为改写模式。 解决办法 再按一次insert键&#xff0c;切换到插入模式。

淘宝电商商家ERP订单接口接入指南:对接ERP与淘宝系统的数据桥梁

最近几年&#xff0c;电商发展如火如荼&#xff0c;一方面互联网企业在推互联网 和O2O&#xff0c;同时很多传统企业也在积极互联网&#xff0c;通过各种电商平台拓展销售渠道&#xff0c;有些还同时建有自建的电商平台。这些电商平台通常下单&#xff0c;结算&#xff0c;促销…

MYSQL 实验十五:

实验15 事务设计与锁 一、实验目的 通过实验&#xff0c;掌握数据库管理系统中事务和锁的概念和并发控制的方法,并且能够进行合理的事务设计。 二、实验原理 1、事务 事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性&#xff0c;称为 ACID&#…

Cheetah3D for Mac - 轻松打造专业级3D作品

对于追求专业级3D作品的设计师来说&#xff0c;Cheetah3D for Mac无疑是一款不可多得的工具。 这款软件拥有强大的建模、渲染和动画功能&#xff0c;能够满足您在3D设计方面的各种需求。通过简单的操作&#xff0c;您可以轻松构建出复杂的3D模型&#xff0c;并为其添加逼真的材…

Gitlab自动化测试的配置

1. 代码分支命名规范检测 Setting → Repository → Push rules → Branch name&#xff0c;添加分支命名规范对应的正则表达式。如&#xff1a; ^(Release|Tag|Develop|Feature)_._.|Main$ 表示分支名只能以以下关键字之一开头&#xff1a;Release、Tag、Develop和Feature。 …