使用python實現(xiàn)名片管理系統(tǒng)
python實現(xiàn)名片管理系統(tǒng)(界面+數(shù)據(jù)庫)
開發(fā)一個簡單的信息管理系統(tǒng)(類似于前面的名片管理系統(tǒng)),要求:
1.用結(jié)構(gòu)化方法或面向?qū)ο箝_發(fā)方法開發(fā)系統(tǒng)
2.有圖形用戶界面
3.用數(shù)據(jù)庫存儲數(shù)據(jù)
4.用python語言實現(xiàn)系統(tǒng)
部分功能如下圖
進入時的界面
顯示所有名片后的界面
新建名片功能
新建成功
查找名片里包含(修改名片和刪除名片)
具體代碼如下
import sys from tkinter import * from tkinter.messagebox import * from tkinter import ttk import sqlite3 con = sqlite3.connect(r"D:\Python練習(xí)\作業(yè)\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) #確定按鈕添加數(shù)據(jù) def qd_event(): try: if name.get()=="": showinfo(title="提示", message="姓名不能為空!") add.destroy() else: con = sqlite3.connect(r"D:\Python練習(xí)\作業(yè)\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="姓名不能重復(fù)!") #取消按鈕 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練習(xí)\作業(yè)\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 #清空數(shù)據(jù) 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練習(xí)\作業(yè)\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練習(xí)\作業(yè)\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="提示!修改名片在空白處輸入確認(rèn)修改即可",anchor=E).grid(row=4, column=0, columnspan=3) def xg_event(n): print(n) print(name.get()) con = sqlite3.connect(r"D:\Python練習(xí)\作業(yè)\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練習(xí)\作業(yè)\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) #退出系統(tǒng) def quit(): root.destroy() def about(): showinfo(title="關(guān)于我們",message="卡片管理系統(tǒng)\n版本號:V4.0 \n作者:華浩新\n完成日期:2019年12月18日") #創(chuàng)建一個Tk根窗口組件root root=Tk() root.title("名片管理系統(tǒng)") root["width"]=800 root["height"]=500 #系統(tǒng)管理菜單欄 mubar=Menu(root) muLogin=Menu(mubar,tearoff=0) mubar.add_cascade(label="系統(tǒng)管理",menu=muLogin) muLogin.add_command(label="加載數(shù)據(jù)",command=show_all) muLogin.add_command(label="清空數(shù)據(jù)",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="關(guān)于",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='名片管理系統(tǒng)V4.0', bg='white', fg='blue', font=('宋體', 15)).pack(side=BOTTOM, fill='x') root["menu"]=mubar root.mainloop()
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python名片管理系統(tǒng)+猜拳小游戲案例實現(xiàn)彩(色控制臺版)
- python實現(xiàn)簡單的名片管理系統(tǒng)
- Python實戰(zhàn)之實現(xiàn)簡單的名片管理系統(tǒng)
- python實現(xiàn)簡易名片管理系統(tǒng)
- python3實現(xiàn)名片管理系統(tǒng)(控制臺版)
- python名片管理系統(tǒng)開發(fā)
- 用python實現(xiàn)名片管理系統(tǒng)
- Python實現(xiàn)名片管理系統(tǒng)
- Python綜合應(yīng)用名片管理系統(tǒng)案例詳解
- python實現(xiàn)一個函數(shù)版的名片管理系統(tǒng)過程解析
- 如何使用Python實現(xiàn)名片管理系統(tǒng)
相關(guān)文章
Python實現(xiàn)Harbor私有鏡像倉庫垃圾自動化清理詳情
這篇文章主要介紹了Python實現(xiàn)Harbor私有鏡像倉庫垃圾自動化清理詳情,文章圍繞主題分享相關(guān)詳細(xì)代碼,需要的小伙伴可以參考一下2022-05-05Python 裝飾器實現(xiàn)DRY(不重復(fù)代碼)原則
python的裝飾器就是一種代碼簡潔的手段,在函數(shù)和方法有改動時,使得改動量最小。這篇文章給大家介紹了Python 裝飾器實現(xiàn)DRY(不重復(fù)代碼)原則,感興趣的朋友一起看看吧2018-03-03python+tkinter+mysql做簡單數(shù)據(jù)庫查詢界面
本文主要介紹了python+tkinter+mysql做簡單數(shù)據(jù)庫查詢界面,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01python多進程及通信實現(xiàn)異步任務(wù)的方法
這篇文章主要介紹了python多進程及通信實現(xiàn)異步任務(wù)需求,本人也是很少接觸多進程的場景,對于python多進程的使用也是比較陌生的。在接觸了一些多進程的業(yè)務(wù)場景下,對python多進程的使用進行了學(xué)習(xí),覺得很有必要進行一個梳理總結(jié),感興趣的朋友一起看看吧2022-05-05Python?matplotlib調(diào)整坐標(biāo)軸位置、標(biāo)簽位置和標(biāo)簽方向以及X軸刻度標(biāo)簽位置
我們在用matplotlib繪制圖的時候總是有各種需求,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib調(diào)整坐標(biāo)軸位置、標(biāo)簽位置和標(biāo)簽方向以及X軸刻度標(biāo)簽位置的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04