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日

相关文章

  • 如何将PDF转换成Word文档的方法总结

    如何将PDF转换成Word文档的方法总结 PDF文件是一种非常常见的文件格式,但如果需要进行编辑或修改,最好将其转换为Word文档。今天我们就来总结一下如何将PDF文件转换为Word文档的方法。 方法1:使用Adobe Acrobat Adobe Acrobat是一款非常流行的PDF编辑器,同样也提供了将PDF文件转换为Word文档的功能。 步骤1:打开Ad…

    人工智能概览 2023年5月25日
    00
  • Nginx配置文件详解以及优化建议指南

    Nginx(engine x)是一个高性能的HTTP和反向代理服务器,由于其性能优异,可靠性高,被广泛应用于互联网、CDN、网站加速等领域。本篇文章将详细讲解Nginx配置文件的内容和优化建议,帮助读者更好地了解Nginx服务器。 Nginx配置文件详解 Nginx的主要配置文件是nginx.conf,该文件位于Nginx服务器的默认配置目录/etc/ngi…

    人工智能概览 2023年5月25日
    00
  • 关于Django使用 django-celery-beat动态添加定时任务的方法

    关于Django使用django-celery-beat动态添加定时任务的方法 Django是一个开放源代码的高层次Python Web框架。开发人员可以利用Django的许多条款和模块来开发完整的Web应用程序。而celery是Python语言使用的一个异步任务队列,它轻量级、高效,可靠,非常适用于处理高并发的异步任务。而django-celery-bea…

    人工智能概览 2023年5月25日
    00
  • 使用tensorflow显示pb模型的所有网络结点方式

    显示pb模型的所有网络节点可以通过TensorFlow提供的工具tf.GraphDef().返回一个TensorFlow计算图的protocol buffer定义。可以通过以下步骤在Python API中使用tf.GraphDef(): 1.导入TensorFlow模块 import tensorflow as tf 2.定义待加载的pb模型文件路径。其中w…

    人工智能概论 2023年5月24日
    00
  • 聊一聊SpringBoot服务监控机制

    我来为你详细讲解“聊一聊SpringBoot服务监控机制”的完整攻略。首先,我们需要了解Spring Boot中的监控机制是什么。在使用Spring Boot进行开发时,我们经常需要监控服务的运行情况,包括对应用程序的性能、健康状况以及运维诊断等等。Spring Boot提供了多种监控机制,主要包括:Actuator、Dropwizard Metrics等。…

    人工智能概览 2023年5月25日
    00
  • skywalking分布式服务调用链路追踪APM应用监控

    SkyWalking是一款开源的分布式系统APM工具,它具有对分布式系统进行调用链分析和故障诊断的能力。本攻略将解释如何安装和使用SkyWalking进行分布式服务调用链路追踪。 安装SkyWalking 下载SkyWalking安装包,官网文档下载链接为 https://skywalking.apache.org/downloads/。 解压下载后的Sky…

    人工智能概览 2023年5月25日
    00
  • DDoS攻击的趋势与相关防御策略

    DDoS攻击的趋势与相关防御策略 DDoS攻击的趋势 随着互联网的不断发展和普及,DDoS攻击(分布式拒绝服务攻击)已经成为网络安全领域的一大热门话题。DDoS攻击的目的是通过占用目标服务器的大量带宽和资源,从而导致服务不可用。而恶意攻击者越来越善于使用各种技术和手段来实施DDoS攻击。以下是DDoS攻击的一些趋势: 攻击峰值不断升高 随着攻击工具的不断改进…

    人工智能概论 2023年5月25日
    00
  • OpenCV4.1.0+VisualStudio2019开发环境搭建(超级简单)

    下面我将为您详细讲解“OpenCV4.1.0+VisualStudio2019开发环境搭建(超级简单)”的完整攻略。 第一步 安装Visual Studio 2019 首先,我们需要安装Visual Studio 2019,可以在微软官网下载安装包进行安装。具体步骤可以参考下面的链接:Visual Studio 2019安装教程 第二步 安装CMake Op…

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