使用python实现名片管理系统


Posted in Python onJune 18, 2020

python实现名片管理系统(界面+数据库)

开发一个简单的信息管理系统(类似于前面的名片管理系统),要求:

1.用结构化方法或面向对象开发方法开发系统
2.有图形用户界面
3.用数据库存储数据
4.用python语言实现系统

部分功能如下图

进入时的界面

使用python实现名片管理系统

显示所有名片后的界面

使用python实现名片管理系统

新建名片功能

使用python实现名片管理系统

新建成功

使用python实现名片管理系统

查找名片里包含(修改名片和删除名片)

使用python实现名片管理系统

具体代码如下

import sys
from tkinter import *
from tkinter.messagebox import *
from tkinter import ttk
import sqlite3

con = sqlite3.connect(r"D:\Python练习\作业\12月6日python\card.db")
#con.execute("create table card(name primary key ,phone,QQ,email)")

#新增名片
def add():
 add = Tk()
 add.geometry('260x140+350+200')
 add.minsize(260, 140)
 add.maxsize(260, 140)
 add.title("新建名片")
 lf = LabelFrame(add,text="请 输 入 :",labelanchor=N)
 lf.pack()
 Label(lf, text="姓 名:").grid(row=0,column=0)
 Label(lf, text="电 话:").grid(row=1,column=0)
 Label(lf, text="Q Q:").grid(row=2, column=0)
 Label(lf, text="Email:").grid(row=3, column=0)
 name = Entry(lf)
 name.grid(row=0,column=1,columnspan=2)
 phone = Entry(lf)
 phone.grid(row=1,column=1,columnspan=2)
 qq = Entry(lf)
 qq.grid(row=2,column=1,columnspan=2)
 email = Entry(lf)
 email.grid(row=3,column=1,columnspan=2)
 #确定按钮添加数据
 def qd_event():
 try:
 if name.get()=="":
 showinfo(title="提示", message="姓名不能为空!")
 add.destroy()
 else:
 con = sqlite3.connect(r"D:\Python练习\作业\12月6日python\card.db")
 cardList = (name.get(),phone.get(),qq.get(),email.get())
 con.execute("insert into card(name,phone,QQ,email) values (?,?,?,?)",cardList)
 #card = {"姓名":name.get(),"电话":phone.get(),"QQ":qq.get(),"Email":email.get()}
 #card_list.append(card)
 con.commit()
 con.close()
 add.destroy()
 show_all()
 #save_data()
 showinfo(title="提示", message="新建名片成功!")
 except:
 print("error occur")
 showinfo(title="警告", message="姓名不能重复!")
 #取消按钮
 def qx_event():
 add.destroy()
 Button(lf,text=" 确 定 ",command=qd_event).grid(row=4,column=2,sticky=W)
 Button(lf,text=" 取 消 ",command=qx_event).grid(row=4,column=1,sticky=E)
 
#显示所有
def show_all():
 x=dataTreeview.get_children()
 for item in x:
 dataTreeview.delete(item)
 con = sqlite3.connect(r"D:\Python练习\作业\12月6日python\card.db")
 cur = con.execute("select * from card")
 for i in cur:
 print(i)
 n=0
 #dataTreeview.insert('', 1, values=("1","2","3","4"))
 dataTreeview.insert('',n, values=i)
 n+=1 

#清空数据
def del_all():
 x=dataTreeview.get_children()
 for item in x:
 dataTreeview.delete(item)

#查询名片
def search_card():
 search = Tk()
 search.geometry('240x50+450+300')
 search.minsize(240, 80)
 search.maxsize(400, 170)
 search.title("查找名片")
 lf = LabelFrame(search, text="请 输 入 :", labelanchor=N)
 lf.pack()
 Label(lf, text="姓 名:").grid(row=0, column=0)
 name = Entry(lf)
 name.grid(row=0, column=1, columnspan=2)
 #print(name.get())
 def sure():
 con = sqlite3.connect(r"D:\Python练习\作业\12月6日python\card.db")
 cur = con.execute("select * from card")
 for i in cur:
 #print(i)
 #print(name.get())
 #print(name.get()==i[0])
 if name.get() == i[0]:
 print("查找成功")
 #print(i[0])
 update(i[0])
 
 search.destroy()
 break
 else:
 showinfo(title="提示",message="没有找到!")
 Button(lf, text="查找", command=sure).grid(row=1, column=1, sticky=N)

#修改名片
def update(n):
 
 update = Tk()
 update.geometry('400x170+350+200')
 update.minsize(400, 170)
 update.maxsize(400, 170)
 update.title("查找名片")
 lf1 = LabelFrame(update, text="名片信息",labelanchor=N)
 lf1.pack()
 Label(lf1, text="姓 名:").grid(row=0, column=0)
 Label(lf1, text="电 话:").grid(row=1, column=0)
 Label(lf1, text="Q Q:").grid(row=2, column=0)
 Label(lf1, text="Email:").grid(row=3, column=0)
 con = sqlite3.connect(r"D:\Python练习\作业\12月6日python\card.db")
 print(n+"好靓仔")
 cur = con.execute("select * from card where name =="+"'"+n+"'")
 print("'"+n+"'")
 for i in cur:
 print(i[0]+i[1]+i[2]+i[3])
 Label(lf1, text=i[0], width=20, anchor=W).grid(row=0, column=1, columnspan=2)
 Label(lf1, text=i[1], width=20, anchor=W).grid(row=1, column=1, columnspan=2)
 Label(lf1, text=i[2], width=20, anchor=W).grid(row=2, column=1, columnspan=2)
 Label(lf1, text=i[3], width=20, anchor=W).grid(row=3, column=1, columnspan=2)
 name = Entry(lf1)
 name.grid(row=0, column=3, columnspan=2)
 phone = Entry(lf1)
 phone.grid(row=1, column=3, columnspan=2)
 qq = Entry(lf1)
 qq.grid(row=2, column=3, columnspan=2)
 email = Entry(lf1)
 email.grid(row=3, column=3, columnspan=2)
 Label(lf1,text="提示!修改名片在空白处输入确认修改即可",anchor=E).grid(row=4, column=0, columnspan=3)
 def xg_event(n):
 print(n)
 print(name.get()) 
 con = sqlite3.connect(r"D:\Python练习\作业\12月6日python\card.db")
 con.execute("update card set name=?,phone=?,qq=?,email=? where name ="+"'"+n+"'",(name.get(),phone.get(),qq.get(),email.get()))
 con.commit()
 con.close()
 update.destroy()
 show_all()
 
 #删除名片
 def delete(n):
 con = sqlite3.connect(r"D:\Python练习\作业\12月6日python\card.db")
 con.execute("delete from card where name ="+"'"+n+"'")
 con.commit()
 con.close()
 show_all()
 showinfo(title="提示", message="已删除!")
 update.destroy()
 Button(lf1, text="修 改", command=lambda: xg_event(n)).grid(row=5, column=2, sticky=E)
 Button(lf1, text="删 除", command=lambda: delete(n)).grid(row=5, column=1, sticky=E)

 
#退出系统
def quit():
 root.destroy()


def about():
 showinfo(title="关于我们",message="卡片管理系统\n版本号:V4.0 \n作者:华浩新\n完成日期:2019年12月18日")

 #创建一个Tk根窗口组件root
root=Tk()
root.title("名片管理系统")
root["width"]=800
root["height"]=500


#系统管理菜单栏
mubar=Menu(root)
muLogin=Menu(mubar,tearoff=0)
mubar.add_cascade(label="系统管理",menu=muLogin)
muLogin.add_command(label="加载数据",command=show_all)
muLogin.add_command(label="清空数据",command=del_all)
tc=muLogin.add_command(label="退出",command=quit)

#名片管理菜单栏
muCard=Menu(mubar,tearoff=0)
mubar.add_cascade(label="名片管理",menu=muCard)
muCard.add_command(label="显示所有",command=show_all)
root.bind("<Button-1>,")
muCard.add_command(label="新建",command=add)
muCard.add_command(label="查找",command=search_card)
muCard.add_command(label="保存")

#帮助菜单栏
muHelp=Menu(mubar,tearoff=0)
mubar.add_cascade(label="帮助",menu=muHelp)
muHelp.add_command(label="关于",command=about)
t=Text(root,width=100,height=30)
t.pack()



dataTreeview = ttk.Treeview(root, height=19,show='headings', column=('name', 'phone', 'QQ', 'email'))
dataTreeview.column('name', width=80, anchor="center")
dataTreeview.column('phone', width=80, anchor="center")
dataTreeview.column('QQ', width=80, anchor="center")
dataTreeview.column('email', width=80, anchor="center")

dataTreeview.heading('name', text='姓名')
dataTreeview.heading('phone', text='电话')
dataTreeview.heading('QQ', text='QQ')
dataTreeview.heading('email', text='邮箱')
dataTreeview.place(rely=0, relwidth=1)
Label(root, text='名片管理系统V4.0', bg='white', fg='blue', font=('宋体', 15)).pack(side=BOTTOM, fill='x')

root["menu"]=mubar
root.mainloop()

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python合并两个字典的常用方法与效率比较
Jun 17 Python
Python语言实现百度语音识别API的使用实例
Dec 13 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
python实现Windows电脑定时关机
Jun 20 Python
Python Socket编程之多线程聊天室
Jul 28 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
python创建n行m列数组示例
Dec 02 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python如何在bool函数中取值
Sep 21 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 #Python
浅谈keras.callbacks设置模型保存策略
Jun 18 #Python
用python实现名片管理系统
Jun 18 #Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 #Python
python退出循环的方法
Jun 18 #Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 #Python
Python字符串格式化常用手段及注意事项
Jun 17 #Python
You might like
PHP调用三种数据库的方法(1)
2006/10/09 PHP
PHP 时间日期操作实战
2011/08/26 PHP
php实现mysql封装类示例
2014/05/07 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
PHP 实现缩略图
2021/03/09 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Django后台admin的使用详解
2019/07/08 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
优秀员工推荐信
2014/05/10 职场文书
外贸业务员求职信
2014/06/16 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
财务会计实训报告
2014/11/05 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP