使用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 相关文章推荐
Cpy和Python的效率对比
Mar 20 Python
Python实现抢购IPhone手机
Feb 07 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
python防止随意修改类属性的实现方法
Aug 21 Python
使用Django清空数据库并重新生成
Apr 03 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
Apr 07 Python
PyTorch 导数应用的使用教程
Aug 31 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 Python
Python中X[:,0]和X[:,1]的用法
May 10 Python
Python进程间的通信之语法学习
Apr 11 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
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
小程序中英文混合排序问题解决
2019/08/02 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
上海方立数码笔试题
2013/10/18 面试题
毕业留言寄语大全
2014/04/10 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
质检员工作总结2015
2015/04/25 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android