Python实现功能完整的个人员管理程序

要实现功能完整的个人员管理程序,可以按以下步骤进行:

1. 确定需求和数据结构

首先需要确定个人员管理程序的需求,例如需要储存和管理的信息类型,比如姓名、年龄、性别等。在此基础上,可以选择合适的数据结构来储存和处理信息。比如可以使用Python中的字典(dict)或列表(list)。

2. 实现基本的增删改查功能

根据需求和数据结构,可以实现基本的增删改查功能。比如可以用字典来存储每个人的信息,并实现增加、删除、修改和查询个人信息的功能代码,如下所示:

people = {} # 存储人员信息的字典

# 添加一个人员信息
def add_person(name, age, sex):
    people[name] = {"age": age, "sex": sex}

# 删除一个人员信息
def del_person(name):
    if name in people:
        del people[name]

# 修改一个人员信息
def modify_person(name, age=None, sex=None):
    if name in people:
        if age:
            people[name]["age"] = age
        if sex:
            people[name]["sex"] = sex

# 查询一个人员信息
def query_person(name):
    if name in people:
        return people[name]
    else:
        return None

3. 实现文件读写操作

为保存和读取数据,可以使用Python中的文件读写操作。使用文件系统来存储数据有一个优点是即使在程序关闭的情况下,数据仍然可以保存在文件中,并在程序再次启动时读取。下面是一个示例,可以将数据保存在CSV文件中:

import csv

# 保存人员信息到CSV文件中
def save_people_to_csv(file_path):
    with open(file_path, mode='w', newline='') as file:
        fieldnames = ['name', 'age', 'sex']
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        for name, info in people.items():
            writer.writerow({'name': name, 'age': info['age'], 'sex': info['sex']})

# 从CSV文件中读取人员信息
def load_people_from_csv(file_path):
    try:
        with open(file_path) as file:
            reader = csv.DictReader(file)
            for row in reader:
                add_person(row['name'], int(row['age']), row['sex'])
    except FileNotFoundError:
        print("The file is not exist!")

示例1:完整代码实现

import csv

people = {} # 存储人员信息的字典

# 添加一个人员信息
def add_person(name, age, sex):
    people[name] = {"age": age, "sex": sex}

# 删除一个人员信息
def del_person(name):
    if name in people:
        del people[name]

# 修改一个人员信息
def modify_person(name, age=None, sex=None):
    if name in people:
        if age:
            people[name]["age"] = age
        if sex:
            people[name]["sex"] = sex

# 查询一个人员信息
def query_person(name):
    if name in people:
        return people[name]
    else:
        return None

# 保存人员信息到CSV文件中
def save_people_to_csv(file_path):
    with open(file_path, mode='w', newline='') as file:
        fieldnames = ['name', 'age', 'sex']
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        for name, info in people.items():
            writer.writerow({'name': name, 'age': info['age'], 'sex': info['sex']})

# 从CSV文件中读取人员信息
def load_people_from_csv(file_path):
    try:
        with open(file_path) as file:
            reader = csv.DictReader(file)
            for row in reader:
                add_person(row['name'], int(row['age']), row['sex'])
    except FileNotFoundError:
        print("The file is not exist!")

# 测试
if __name__ == '__main__':
    load_people_from_csv("people.csv") # 从CSV文件中读取人员信息
    add_person("张三", 30, "男") # 添加人员信息
    save_people_to_csv("people.csv") # 保存人员信息到CSV文件中
    del_person("张三") # 删除人员信息
    modify_person("李四", age=35) # 修改人员信息
    query_person("李四") # 查询人员信息

示例2:使用面向对象方式实现

import csv

class People:
    def __init__(self, filepath):
        self.filepath = filepath
        self.people = {}
        self.load()

    def add(self, name, age, sex):
        self.people[name] = {"age": age, "sex": sex}
        self.save()

    def delete(self, name):
        if name in self.people:
            del self.people[name]
            self.save()

    def modify(self, name, age=None, sex=None):
        if name in self.people:
            if age:
                self.people[name]["age"] = age
            if sex:
                self.people[name]["sex"] = sex
            self.save()

    def query(self, name):
        if name in self.people:
            return self.people[name]
        else:
            return None

    def save(self):
        with open(self.filepath, mode='w', newline='') as file:
            fieldnames = ['name', 'age', 'sex']
            writer = csv.DictWriter(file, fieldnames=fieldnames)
            writer.writeheader()
            for name, info in self.people.items():
                writer.writerow({'name': name, 'age': info['age'], 'sex': info['sex']})

    def load(self):
        try:
            with open(self.filepath) as file:
                reader = csv.DictReader(file)
                for row in reader:
                    self.add(row['name'], int(row['age']), row['sex'])
        except FileNotFoundError:
            print("The file is not exist!")

# 测试
if __name__ == '__main__':
    people = People("people.csv")
    people.add("张三", 30, "男") # 添加人员信息
    people.delete("张三") # 删除人员信息
    people.modify("李四", age=35) # 修改人员信息
    people.query("李四") # 查询人员信息

以上就是实现功能完整的个人员管理程序的攻略,通过使用Python中的字典、列表、文件读写操作、面向对象等特性,可以使程序设计更加简洁、易于维护和拓展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现功能完整的个人员管理程序 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • ubuntu下安装Python多版本的方法及注意事项

    下面我会详细讲解“ubuntu下安装Python多版本的方法及注意事项”的完整攻略。在Ubuntu系统中,我们可以通过以下步骤来安装Python多版本。 安装pyenv pyenv是一个Python版本管理工具,它可以方便地管理多个Python版本,我们可以通过以下命令来安装pyenv。 $ git clone https://github.com/yyuu…

    人工智能概览 2023年5月25日
    00
  • docker-compose+nginx部署前后端分离的项目实践

    下面我将详细讲解“docker-compose+nginx部署前后端分离的项目实践”的完整攻略。 环境准备 首先,我们需要准备以下环境: docker 17.06 或更高版本 docker-compose 1.14 或更高版本 构建后端应用镜像 我们可以使用 Dockerfile 构建后端应用镜像,示例如下: FROM openjdk:8-jre-alpin…

    人工智能概览 2023年5月25日
    00
  • Python 文件和输入输出小结

    针对 Python 文件和输入输出小结的完整攻略,以下是详细的讲解: 1. 文件 在 Python 程序中,文件操作是非常常见的操作之一。Python 中读写文件分为文本文件和二进制文件。 (1) 打开文件 在 Python 中打开文件有两种方式,一种是通过 open() 函数打开,另一种是通过 with 语句打开。其中,通过 with 语句打开文件是比较好…

    人工智能概览 2023年5月25日
    00
  • Linux系统下Navicat 激活教程详解

    下面我将详细讲解“Linux系统下Navicat 激活教程详解”的完整攻略: Linux系统下Navicat 激活教程详解 前言 Navicat 是一款数据库管理工具,提供了丰富的功能,可以帮助我们高效地管理数据库。而在Linux系统下,Navicat的破解和激活是比较困难的一件事情。本文将为大家详细讲解Linux系统下Navicat的激活教程。 具体步骤 …

    人工智能概览 2023年5月25日
    00
  • 基于Python实现人脸识别和焦点人物检测功能

    下面我将详细讲解“基于Python实现人脸识别和焦点人物检测功能”的完整攻略。 准备工作 在实现人脸识别和焦点人物检测功能之前,我们需要准备以下工作: 安装Python环境 安装必要的Python第三方库:OpenCV、face_recognition、Pillow等 获取人脸识别和焦点人物检测的训练数据集(可以在网上下载) 实现方式 人脸识别 步骤一:读取…

    人工智能概览 2023年5月25日
    00
  • OpenCV图像处理之自定义滤波

    非常感谢您对OpenCV的关注。下面,我来为您介绍OpenCV图像处理之自定义滤波的完整攻略。 1. 自定义滤波基本概念 自定义滤波是指对图像进行非线性滤波,也被称为卷积(convolution)或卷积核(kernel)。这里的卷积指的是函数之间的运算,不是卷积神经网络中的卷积操作。 2. 自定义滤波实现方法 自定义滤波的实现方法是通过OpenCV中的函数f…

    人工智能概论 2023年5月25日
    00
  • 使用mongoTemplate实现多条件加分组查询方式

    使用mongoTemplate实现多条件加分组查询方式需要遵循以下步骤: 步骤1:定义查询条件和分组条件 首先需要定义查询条件和分组条件,以及要返回的字段。可以使用Criteria和Aggregation实现。 例如: Criteria criteria = new Criteria(); criteria.and("age").gt(2…

    人工智能概论 2023年5月25日
    00
  • 使用wxPython获取系统剪贴板中的数据的教程

    使用wxPython获取系统剪贴板中的数据,可以分为以下几步: 导入wxPython库:在Python中使用wxPython库来操作窗口和剪贴板,需要先导入wx库。可以使用pip命令安装wxPython,也可以直接导入wx库,如下所示: import wx 创建App对象:在使用wxPython进行GUI开发时,需要先创建App对象,负责应用程序的初始化设置…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部