脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python实现简单通讯录管理系统

python实现简单通讯录管理系统

2023-02-02 15:52Shelumiel Yan Python

这篇文章主要为大家详细介绍了python实现简单通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了python实现通讯录管理系统的具体代码,供大家参考,具体内容如下

=====欢迎使用通讯录管理系统=====
1.添加
2.修改
3.册除
4.查询
5.排序
6.退出
=========================

请选择你要执行的操作的序号,具体要求:

1)通讯录要以文件的形式存储在硬盘上(比如D:\tongxunlu) ,每一条数据(联系人姓名和手机号码)存储一行,如果一个联系人有多个手机号,则都存储在同一行,即通讯录中每个联系入的数据占一行。

2)系统运行时初始菜单如上,根据用户选择的序号执行相应的操作:

添加功能:提醒角户输入姓名和手机号码,同时进行手机号码格式检查,合法则该姓名和手机号码插入到通讯录最后一行。
修改功能:根据用户指定的联系人姓名修改其手机号码,修改后保存文件。 删除功能:根据用户输人的姓名删除该条记录。
查询功能:可以根据联系人姓名查询其手机号,也可以根据手机号查询联系人姓名。 排序功能:要求用户选择按联系人姓名升序或降序,对通讯录进行排序。
退出功能:结束程序的运行。 注意:只有选择序号6(退出)时,程序的运行才会结束,否则一直循环等待用户进行增删改查操作。

这里我利用openpyxl对Excel操作

源码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
from openpyxl import load_workbook
 
fn = r'd:\tongxunlu.xlsx'
 
 
# 打印操作菜单
def showMenu():
    print("========欢迎使用通讯录管理系统========")
    print("     1.添加")
    print("     2.修改")
    print("     3.删除")
    print("     4.查询")
    print("     5.排序")
    print("     6.退出")
    print("==================================")
 
 
# 打开文件
def openFile():
    wb = load_workbook(fn)
    ws = wb.active
    return ws, wb
 
 
# 判断手机号是否合法
def isLegal(s):
    if len(s) == 11 and s.isdigit():
        return True
    else:
        return False
 
 
# 添加手机号
def addData():
    data = input("输入姓名和号码(空格分开):").split(" ")
    for i in range(len(data), 1, -1):                # 从最后一个手机号开始
        s = isLegal(data[i - 1])
    if not s:
        print("手机号码必须为11位数字!")
        addData()
    else:
        w1, w2 = openFile()
        w1.append(data)
        print("添加成功!")
        w2.save(fn)
 
 
# 更改手机号
def changeData():
    flag = False
    data = input("请输入需要修改的姓名和新的手机号码(空格分开):").split(" ")
    if not isLegal(data[1]):
        print("手机号码必须为11位数字!")
        changeData()
    else:
        w1, w2 = openFile()
        for row in w1.rows:
            if row[0].value == data[0]:
                flag = True
                row[1].value = data[1]
        if not flag:
            print("通讯录中没有此人!")
            changeData()
        else:
            print("修改成功!")
            w2.save(fn)
 
 
# 删除人
def delete():
    flag = False
    x = 0
    name = input("请输入要删除的姓名:")
    w1, w2 = openFile()
    for row in w1.rows:
        x += 1
        if row[0].value == name:
            flag = True
            w1.delete_rows(x)
    if not flag:
        print("通讯录中没有此人!")
    else:
        print("删除成功!")
        w2.save(fn)
 
 
# 查找手机号或者姓名
def search():
    flag = False
    data = input("请输入姓名或手机号码:")
    w1, w2 = openFile()
    for row in w1.rows:
        if row[0].value == data:
            flag = True
            print(row[1].value)
            if row[2].value is not None:
                print(row[2].value)
        elif row[1].value == data or row[2].value == data:
            flag = True
            print(row[0].value)
    if not flag:
        print("通讯录中没有此人或手机号!")
        search()
 
 
# 排序
def sort():
    s = input("请输入正序或逆序(正序输入F,逆序输入T):")
    if s == "F":
        flag = False
    elif s == "T":
        flag = True
    data = []
    w1, w2 = openFile()
    for row in w1.rows:
        data1 = []
        for cell in row:
            data1.append(cell.value)
        data.append(data1)
    data.sort(key=lambda x: x[0], reverse=flag)
    w2.remove(w1)
    w1 = w2.create_sheet()
    for i in data:
        w1.append(i)
    w2.save(fn)
 
 
# 循环函数
while True:
    showMenu()
    num = int(input("请输入操作序号:"))
    if num == 1:
        addData()
    elif num == 2:
        changeData()
    elif num == 3:
        delete()
    elif num == 4:
        search()
    elif num == 5:
        sort()
    elif num == 6:
        print("再见!")
        break
    else:
        print("输入的序号不在范围内!")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_45939329/article/details/118051511

延伸 · 阅读

精彩推荐
  • PythonPython 根据相邻关系还原数组的两种方式(单向构造和双向构造)

    Python 根据相邻关系还原数组的两种方式(单向构造和双向构造)

    本文主要介绍了Python 根据相邻关系还原数组的两种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    宫水三叶的刷题日记7922021-12-15
  • Pythonpython计算方程式根的方法

    python计算方程式根的方法

    这篇文章主要介绍了python计算方程式根的方法,涉及Python数学运算的相关技巧,需要的朋友可以参考下...

    songguo11552020-06-23
  • Python用PyQt打造具有专业外观的GUI(上)

    用PyQt打造具有专业外观的GUI(上)

    PyQt的布局管理器layout managers提供了一种用户友好且高效的方式,可以在GUI上排列图形组件或小部件。...

    Python中文社区(ID:python-ch3062020-12-18
  • Pythonpython实现泊松图像融合

    python实现泊松图像融合

    这篇文章主要为大家详细介绍了python实现泊松图像融合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    yjl91227662021-03-22
  • PythonPython 中类的构造方法 __New__的妙用

    Python 中类的构造方法 __New__的妙用

    这篇文章主要介绍了Python 中类的构造方法 New的妙用,Python 的类中,所有以双下划线__包起来的方法,叫魔术方法,魔术方法在类或对象的某些事件发出后...

    somenzz9942022-02-12
  • PythonPython中os.path用法分析

    Python中os.path用法分析

    这篇文章主要介绍了Python中os.path用法,实例分析了os.path的各种常用方法,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    脚本之家5182020-05-19
  • Python分享几道你可能遇到的python面试题

    分享几道你可能遇到的python面试题

    最近去笔试,在面试过程中遇到了几个编程题,比较基础。所以想着总结一下,所以下面这篇文章主要给大家分享了几道你可能遇到的python面试题,文中给...

    Hi!Roy!3762020-11-27
  • PythonDjango1.7+python 2.78+pycharm配置mysql数据库教程

    Django1.7+python 2.78+pycharm配置mysql数据库教程

    原本感觉在Django1.7+python 2.78+pycharm环境下配置mysql数据库是件很容易的事情,结果具体操作的时候才发现,问题还是挺多的,这里记录一下最终的配置结果,...

    脚本之家5092020-05-12