python实现通讯录系统
作者:不许代码码上红 发布时间:2023-06-12 20:57:50
标签:python,通讯录
本文实例为大家分享了python实现通讯录系统的具体代码,供大家参考,具体内容如下
一、首先,给大家看一下这个系统的主菜单效果
如下:
二、步骤分析
1、首先创建一个main.py文件:
main.py:
#导入管理系统模块
from managerSystem import ContactManager
#启动管理系统
if __name__=='__main__':
contact_manager=ContactManager()
contact_manager.run()
2、第二步,将主菜单列表展示出出来:
*创建managerSystem.py:
*在mangagerSystem.py中写一个静态方法:
#2.1系统菜单功能实现--静态方法
@staticmethod
def show_menu():
print('请选择如下功能:')
print('1、添加联系人')
print('2、删除联系人')
print('3、修改联系人信息')
print('4、查询联系人信息')
print('5、显示所有联系人信息')
print('6、保存联系人信息')
print('7、退出系统')
3、第三步,实现功能:
例如,增加联系人功能函数:
def add_contact(self):
# 1. 用户输入姓名 性别 手机号
name = input('请输入您的姓名:')
gender = input('请输入您的性别:')
tel = input('请输入您的电话:')
# 2.创建联系人对象
contact = Contact(name, gender, tel)
# 3. 将该对象添加到联系人列表
self.contact_list.append(contact)
print(self.contact_list)
print(contact)
4、创建contact表:
contact:
class Contact(object):
def __init__(self,name,gender,tel):
#形参 name,gender,tel
#实例属性
self.name=name
self.gender=gender
self.tel=tel
def __str__(self):
return f'{self.name},{self.gender},{self.tel}'
5、记录数据:contact.data:
最后,给大家managerSystem.py源代码:
from contact import Contact
class ContactManager(object):
def __int__(self):
self.contact_list=[]
def run(self):
self.load_contact()
while True:
self.show_menu()
menu_num=int(input('请输入您需要的功能序号:'))
if menu_num==1:
self.add_contact()
elif menu_num==2:
self.del_contact()
elif menu_num==3:
self.modify_contact()
elif menu_num==4:
self.search_contact()
elif menu_num==5:
self.show_contact()
elif menu_num==6:
self.save_contact()
elif menu_num==7:
break
@staticmethod
def show_menu():
print('请选择如下功能:')
print('1、添加联系人')
print('2、删除联系人')
print('3、修改联系人信息')
print('4、查询联系人信息')
print('5、显示所有联系人信息')
print('6、保存联系人信息')
print('7、退出系统')
def add_contact(self):
name = input('请输入您的姓名:')
gender = input('请输入您的性别:')
tel = input('请输入您的电话:')
contact = Contact(name, gender, tel)
self.contact_list.append(contact)
print(self.contact_list)
print(contact)
def del_contact(self):
del_name = input('请输入要删除的联系人姓名:')
flag=1
for i in self.contact_list:
if i.name == del_name:
self.contact_list.remove(i)
flag=0
break
if flag==1:
print('查无此人!')
print(self.contact_list)
def modify_contact(self):
modify_name = input('请输入要修改的联系人姓名:')
flag=1
for i in self.contact_list:
if i.name == modify_name:
i.name = input('请输入联系人姓名:')
i.gender = input('请输入联系人性别:')
i.tel = input('请输入联系人手机号:')
print(f'修改该联系人信息成功,姓名:{i.name}, 性别{i.gender}, 手机号{i.tel}')
flag=0
break
if flag==1:
print('查无此人!')
def search_contact(self):
search_name = input('请输入要查询的联系人姓名:')
flag=1
for i in self.contact_list:
if i.name == search_name:
print(f'姓名{i.name}, 性别{i.gender}, 手机号{i.tel}')
flag=0
break
if flag==1:
print('查无此人!')
def show_contact(self):
print("姓名\t性别\t手机号")
for i in self.contact_list:
print(f'{i.name}\t{i.gender}\t{i.tel}')
def save_contact(self):
f = open('contact.data', 'w')
new_list = [i.__dict__ for i in self.contact_list]
f.write(str(new_list))
f.close()
def load_contact(self):
try:
f = open('contact.data', 'r')
except:
f = open('contact.data', 'w')
else:
data = f.read()
new_list = eval(data)
self.contact_list = [Contact(i['name'], i['gender'], i['tel']) for i in new_list]
finally:
f.close()
来源:https://blog.csdn.net/qq_45801904/article/details/123693545
0
投稿
猜你喜欢
- 安装Nginx首先拉下centos镜像docker pull centos我们安装最新的nginx1.19版本:下载地址将centos镜像运
- 完美解决“换另一台电脑上用VS2008继续开发web项目时出现 “System.Runtime.InteropServices.COMExc
- subplot函数介绍matplotlib下, 一个 Figure 对象可以包含多个子图(Axes), 可以使用 subplot() 快速绘
- 根据"客服果果"的"十几行的超简日历组件"http://bbs.51js.com/viewthrea
- 进入:直接输入python即可,如图所示退出:1:输入exit(),回车2:输入quit(),回车3:输入ctrl+z,回车来源:https
- 在实际的数据库应用中,我们经常遇到这样一个问题,连接到Oracle数据库的用户在作了一次操作后,再也没有后续操作,但却长时间没有和数据库断开
- 调用pytorch内置的模型的方法import torchvisionmodel = torchvision.models.resnet50
- <?php/*======================================事务处理==================
- 这是经常用的一个分页存储过程 希望大家指点不足 代码如下:USE [a6756475746] GO /****** Object
- 本文实例讲述了python实现获取单向链表倒数第k个结点的值。分享给大家供大家参考,具体如下:#初始化链表的结点class Node():
- 1. viper的介绍viper是go一个强大的流行的配置解决方案的库。viper是spf13的另外一个重量级库。有大量项目都使用该库,比如
- 不知道大家有没发现DWMX中有一个和FW差不多的制作弹出菜单功能?这个功能允许用文字和图片做为主菜单,如果用文字的话要先做虚拟链接。下面简单
- HTML 5基本思维概念形成于2003年,之后W3C对页面超文本应用技术工作小组(WHATWG)开发的HTML草图颇感兴趣,这个小组的开发人
- 今天在开发一个手机短信通讯录的前端界面时,界面中使用了checkbox,来做为各项的选择控件,但是操作时,除了点差子。由于逻辑需要,需要预先
- 众所周知,程序在启动后,各个程序文件都会被加载到内存中,这样如果程序文本再次变化,对当前程序的运行没有影响,这对程序是一种保护。但是,对于像
- 相关概念并发:指一个时间段内,有几个程序在同一个cpu上运行,但是任意时刻只有一个程序在cpu上运行。比如说在一秒内cpu切换了100个进程
- Django中内置了邮件发送功能,被定义在django.core.mail模块中。发送邮件需要使用SMTP服务器,常用的免费服务器有:163
- * 惯,请先看测试页面:event-test.html 结论:在非IE浏览器,同一元素同一事件类型的处理函数是先进先出的。只有IE下,是先进
- 看看这个logo,有些像python的小蛇吧 。这次介绍的数据库codernityDB是纯python开发的。先前用了下tinyDB这个本地
- 代码如下:<% class MyClass Dim var '公共变量必须使