python名片系统代码练习并存储到数据库中

我们首先要了解要干什么,咱要实现以下界面,进行增删改查,能够输入查询,并且将数据存储到数数据库中,和文件中。
在这里插入图片描述
主页面代码如下:

#调用增删改查函数

import 名片项目.dyhs as dy
#调用存储文件函数
import 名片项目.xmfz1 as dx
dx.read_f()
while True:
    dy.xscd()
    aa =input ("请选择希望执行的操作")
    print("请选择您的操作[%s]"%aa)
    #1,2,3针对名片的操作
    if aa in ['1','2','3']:
        if aa == '1':
            dy.xzhs()
        elif aa == '2':
            sql = 'select * from xmb'
            list =dy.selectData(sql)
            print(list)
        elif aa =='3':
            dy.selectA()

    elif aa == '0':
        print('欢迎再次使用【名片管理系统】')
        dx.write_f(dy.card_list)
        break

实现增删改查函数:

import pymysql.cursors
card_list = [] #记录所有的名片字典
#显示菜单

def xscd():
    print("*"*70)
    print('1.创建名片')
    print("2.显示全部")
    print("3.显示所有名片")
    print("0.退出")
    print('*'*70)

def xzhs():#新增名片
    #1.提示用户输入名片的详细信息
    name_str = input('请输入姓名:')
    phon_str = input('请输入电话:')
    qq_str = int(input('请输入QQ:'))
    email_str = input('请输入邮箱:')
    #2.使用用户输入的信息建立一个名片字典
    card_dict = {"name":name_str,
                 'phon':phon_str,
                 'qq':qq_str,
                 'email':email_str}
    #3.将名片字典添加到列表中
    # card_list.append(card_dict)
    #将名片字典添加到数据库中
    sql = "insert into xmb(name,phon,qq,email) values('%s','%s',%d,'%s')"%(name_str,phon_str,qq_str,email_str)
    insertData(sql)
    print('插入成功')



    #4.提示用户添加成功
    print('添加%s 的名片成功!'%name_str)
    print("_"*70)


def show_all():
    print("*" * 70)
   #显示所有名片
    #判断是否存在名片记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print('【当前没有任何的名片记录,请使用新增功能添加名片】')
        #return 可以返回一个函数的执行结果
        #下方的代码不会被执行
        #如果 return 后面没有任何的内容,表示会返回到调用函数的位置
        #并且不反悔任何的结果
        return

    #打印表头
    for name in ['姓名','电话','QQ','邮箱']:
        print(name,end='\t\t\t')
    print("")
    print('_'*70)
    #遍历名片列表依次输出字典信息
    for card_dict in card_list:
        print('%s\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t'%(card_dict['name'],
                                          card_dict['phon'],
                                          card_dict['qq'],
                                          card_dict['email']))

#显示所有
def sho():
    print('-'*70)
    list_dic = selectA()
    for i in list_dic:
        print("姓名:%s\t\t  电话:%s\t\t  qq:%s\t\t  电话%s\t\t"
              % (i['name'], i['phon'], i['qq'], i['email']))

#查询所有的
def selectA():
    sql = "select name,phon ,qq,email from xmb order by id asc"
    list =selectData(sql)
    list_dic = tupeleToDic(list)
    return list_dic


def tupeleToDic(list):
    new_list = []
    for tuple in list:
        new_list.append({
            "id":tuple[0],
            "name": tuple[1],
            "emil": tuple[2],
            "tel": tuple[3],
        })
    return new_list


def ssmp():
    """查询名片"""
    print("_" * 70)
    #1.提示用户输入要搜索的姓名
    find_name = input('请输入要搜索的姓名:')

    #2.遍历列表。查询要搜索的姓名,如果没有找到,需要提示用户
    for card_dict in card_list:
        if card_dict['name'] == find_name:
            print('姓名\t\t电话\t\tQQ\t\t邮箱')
            print("_" * 70)
            print('%s\t\t%s\t\t%s\t\t%s\t\t' % (card_dict['name'],
                                                        card_dict['phon'],
                                                        card_dict['qq'],
                                                        card_dict['emall']))
            #删除修改
            deal_card(card_dict)
            break
    else:
        print('抱歉没有找到 %s '%find_name)

#封装一个函数专门修改和操作
def deal_card(find_dict): #指定一个形参,表示已经找到的字典
    """处理查找到的名片

    :param find_dict: 查找到的名片
    """
    print(find_dict)
    a_str = input('请选择要执行的操作 '
                  '【1】.修改 【2】.删除 0.返回上级:')
    if a_str == '1':
    #把传递函数的字典中每个键值对的值进行替换
        find_dict['name'] = input_card_info(find_dict['name'],'姓名:')
        find_dict['phon'] = input_card_info(find_dict['phon'],'电话:')
        find_dict['qq'] = input_card_info(find_dict['qq'],'QQ:')
        find_dict['emall'] = input_card_info(find_dict['emall'],'邮箱:')

        print('修改名片')
    elif a_str =='2':
        card_list.remove(find_dict)
        print('删除成功')


def input_card_info(dict_value,tip_message):
    """输入名片信息

    :param dict_value: 字典中原有的值
    :param tip_message: 输入的提示文字
    :return:如果用户输入了内容,就返回内容,否则返回字典中原有的值
    """
    #1.提示用户输入内容
    #2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    #3.如果用户没有输入内容,返回‘字典中原有的值

    result_str = input(tip_message)
    if len(result_str)>0:
        return result_str
    else:
        return dict_value


#插入数据
def insertData(sql):
    conn = getConnect()#获取连接
    cursor = conn.cursor() #创建游标(新建查询会话),通过游标执行sql语句
    cursor.execute(sql)#(5)将sql语句放入游标中,准备执行
    conn.commit()#提交,真正的执行
    closeConnect(cursor,conn)#关闭

    count = cursor.rowcount
    if count>0:
        return  True
    else:
        return False

#链接数据库
def getConnect():
    conn = pymysql.connect(host='localhost',
                           user='root',
                           password='123',
                           database='xmmysql',
                           charset='utf8')
    return conn


#关闭连接
def closeConnect(cursor,conn):
    if cursor:
        cursor.close()
    if conn:
        conn.close()

#查询数据
def selectData(sql):
    conn = getConnect()#获取链接
    cursor = conn.cursor()#创建游标(新建查询会话),通过游标执行sql语句
    cursor.execute(sql)#将sql语句放入游标中,准备执行
    closeConnect(cursor,conn)#关闭
    return cursor.fetchall() #结果是一个元组,元组中元素又是元组

存储函数:

import 名片项目.dyhs as dy

#读文件

def read_f():
    global card_list
    try:
        f = open('ccwj.txt',mode='r',encoding='utf8')
        card_list = eval(f.read(card_list))
        f.close()
    except:
        pass


#写文件
def write_f(a):
    f = open('ccwj.txt','w',encoding='utf8')
    f.write(str(a))
    f.write('\t')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值