python實(shí)現(xiàn)簡(jiǎn)單通訊錄管理系統(tǒng)
本文實(shí)例為大家分享了python實(shí)現(xiàn)通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
=====歡迎使用通訊錄管理系統(tǒng)=====
1.添加
2.修改
3.冊(cè)除
4.查詢
5.排序
6.退出
=========================
請(qǐng)選擇你要執(zhí)行的操作的序號(hào),具體要求:
1)通訊錄要以文件的形式存儲(chǔ)在硬盤上(比如D:\tongxunlu) ,每一條數(shù)據(jù)(聯(lián)系人姓名和手機(jī)號(hào)碼)存儲(chǔ)一行,如果一個(gè)聯(lián)系人有多個(gè)手機(jī)號(hào),則都存儲(chǔ)在同一行,即通訊錄中每個(gè)聯(lián)系入的數(shù)據(jù)占一行。
2)系統(tǒng)運(yùn)行時(shí)初始菜單如上,根據(jù)用戶選擇的序號(hào)執(zhí)行相應(yīng)的操作:
添加功能:提醒角戶輸入姓名和手機(jī)號(hào)碼,同時(shí)進(jìn)行手機(jī)號(hào)碼格式檢查,合法則該姓名和手機(jī)號(hào)碼插入到通訊錄最后一行。
修改功能:根據(jù)用戶指定的聯(lián)系人姓名修改其手機(jī)號(hào)碼,修改后保存文件。 刪除功能:根據(jù)用戶輸人的姓名刪除該條記錄。
查詢功能:可以根據(jù)聯(lián)系人姓名查詢其手機(jī)號(hào),也可以根據(jù)手機(jī)號(hào)查詢聯(lián)系人姓名。 排序功能:要求用戶選擇按聯(lián)系人姓名升序或降序,對(duì)通訊錄進(jìn)行排序。
退出功能:結(jié)束程序的運(yùn)行。 注意:只有選擇序號(hào)6(退出)時(shí),程序的運(yùn)行才會(huì)結(jié)束,否則一直循環(huán)等待用戶進(jìn)行增刪改查操作。
這里我利用openpyxl對(duì)Excel操作
源碼:
from openpyxl import load_workbook fn = r'd:\tongxunlu.xlsx' # 打印操作菜單 def showMenu(): ? ? print("========歡迎使用通訊錄管理系統(tǒng)========") ? ? print(" ? ? 1.添加") ? ? print(" ? ? 2.修改") ? ? print(" ? ? 3.刪除") ? ? print(" ? ? 4.查詢") ? ? print(" ? ? 5.排序") ? ? print(" ? ? 6.退出") ? ? print("==================================") # 打開文件 def openFile(): ? ? wb = load_workbook(fn) ? ? ws = wb.active ? ? return ws, wb # 判斷手機(jī)號(hào)是否合法 def isLegal(s): ? ? if len(s) == 11 and s.isdigit(): ? ? ? ? return True ? ? else: ? ? ? ? return False # 添加手機(jī)號(hào) def addData(): ? ? data = input("輸入姓名和號(hào)碼(空格分開):").split(" ") ? ? for i in range(len(data), 1, -1):?? ??? ??? ??? ?# 從最后一個(gè)手機(jī)號(hào)開始 ? ? ? ? s = isLegal(data[i - 1]) ? ? if not s: ? ? ? ? print("手機(jī)號(hào)碼必須為11位數(shù)字!") ? ? ? ? addData() ? ? else: ? ? ? ? w1, w2 = openFile() ? ? ? ? w1.append(data) ? ? ? ? print("添加成功!") ? ? ? ? w2.save(fn) # 更改手機(jī)號(hào) def changeData(): ? ? flag = False ? ? data = input("請(qǐng)輸入需要修改的姓名和新的手機(jī)號(hào)碼(空格分開):").split(" ") ? ? if not isLegal(data[1]): ? ? ? ? print("手機(jī)號(hào)碼必須為11位數(shù)字!") ? ? ? ? changeData() ? ? else: ? ? ? ? w1, w2 = openFile() ? ? ? ? for row in w1.rows: ? ? ? ? ? ? if row[0].value == data[0]: ? ? ? ? ? ? ? ? flag = True ? ? ? ? ? ? ? ? row[1].value = data[1] ? ? ? ? if not flag: ? ? ? ? ? ? print("通訊錄中沒有此人!") ? ? ? ? ? ? changeData() ? ? ? ? else: ? ? ? ? ? ? print("修改成功!") ? ? ? ? ? ? w2.save(fn) # 刪除人 def delete(): ? ? flag = False ? ? x = 0 ? ? name = input("請(qǐng)輸入要?jiǎng)h除的姓名:") ? ? w1, w2 = openFile() ? ? for row in w1.rows: ? ? ? ? x += 1 ? ? ? ? if row[0].value == name: ? ? ? ? ? ? flag = True ? ? ? ? ? ? w1.delete_rows(x) ? ? if not flag: ? ? ? ? print("通訊錄中沒有此人!") ? ? else: ? ? ? ? print("刪除成功!") ? ? ? ? w2.save(fn) # 查找手機(jī)號(hào)或者姓名 def search(): ? ? flag = False ? ? data = input("請(qǐng)輸入姓名或手機(jī)號(hào)碼:") ? ? w1, w2 = openFile() ? ? for row in w1.rows: ? ? ? ? if row[0].value == data: ? ? ? ? ? ? flag = True ? ? ? ? ? ? print(row[1].value) ? ? ? ? ? ? if row[2].value is not None: ? ? ? ? ? ? ? ? print(row[2].value) ? ? ? ? elif row[1].value == data or row[2].value == data: ? ? ? ? ? ? flag = True ? ? ? ? ? ? print(row[0].value) ? ? if not flag: ? ? ? ? print("通訊錄中沒有此人或手機(jī)號(hào)!") ? ? ? ? search() # 排序 def sort(): ? ? s = input("請(qǐng)輸入正序或逆序(正序輸入F,逆序輸入T):") ? ? if s == "F": ? ? ? ? flag = False ? ? elif s == "T": ? ? ? ? flag = True ? ? data = [] ? ? w1, w2 = openFile() ? ? for row in w1.rows: ? ? ? ? data1 = [] ? ? ? ? for cell in row: ? ? ? ? ? ? data1.append(cell.value) ? ? ? ? data.append(data1) ? ? data.sort(key=lambda x: x[0], reverse=flag) ? ? w2.remove(w1) ? ? w1 = w2.create_sheet() ? ? for i in data: ? ? ? ? w1.append(i) ? ? w2.save(fn) # 循環(huán)函數(shù) while True: ? ? showMenu() ? ? num = int(input("請(qǐng)輸入操作序號(hào):")) ? ? if num == 1: ? ? ? ? addData() ? ? elif num == 2: ? ? ? ? changeData() ? ? elif num == 3: ? ? ? ? delete() ? ? elif num == 4: ? ? ? ? search() ? ? elif num == 5: ? ? ? ? sort() ? ? elif num == 6: ? ? ? ? print("再見!") ? ? ? ? break ? ? else: ? ? ? ? print("輸入的序號(hào)不在范圍內(nèi)!")
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python實(shí)現(xiàn)通訊錄管理系統(tǒng)
- python實(shí)現(xiàn)通訊錄系統(tǒng)
- 如何用Python寫一個(gè)簡(jiǎn)單的通訊錄
- python實(shí)現(xiàn)學(xué)生通訊錄管理系統(tǒng)
- python數(shù)據(jù)庫編程 Mysql實(shí)現(xiàn)通訊錄
- python數(shù)據(jù)庫編程 ODBC方式實(shí)現(xiàn)通訊錄
- python實(shí)現(xiàn)手機(jī)通訊錄搜索功能
- Python實(shí)現(xiàn)通訊錄功能
- Python實(shí)現(xiàn)命令行通訊錄實(shí)例教程
- 一個(gè)簡(jiǎn)單的python程序?qū)嵗?通訊錄)
相關(guān)文章
Python 實(shí)現(xiàn)12306登錄功能實(shí)例代碼
這篇文章主要介紹了Python 實(shí)現(xiàn)12306登錄功能的完整代碼,需要的朋友可以參考下2018-02-02python運(yùn)行shell命令subprocess的實(shí)現(xiàn)
本文主要介紹了python運(yùn)行shell命令subprocess的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03python的launcher用法知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于python的launcher用法知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-08-08如何使用pytorch實(shí)現(xiàn)LocallyConnected1D
由于LocallyConnected1D是Keras中的函數(shù),為了用pytorch實(shí)現(xiàn)LocallyConnected1D并在960×33的數(shù)據(jù)集上進(jìn)行訓(xùn)練和驗(yàn)證,本文分步驟給大家介紹如何使用pytorch實(shí)現(xiàn)LocallyConnected1D,感興趣的朋友一起看看吧2023-09-09Python制作動(dòng)態(tài)詞頻條形圖的全過程
說起動(dòng)態(tài)圖表,最火的莫過于動(dòng)態(tài)條形圖了,下面這篇文章主要給大家介紹了關(guān)于Python制作動(dòng)態(tài)詞頻條形圖的全過程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11Python與C++中梯度方向直方圖的實(shí)現(xiàn)
在學(xué)習(xí)HOG特征的時(shí)候,發(fā)現(xiàn)一片英文文章講得淺顯易懂。因此翻譯在這里學(xué)習(xí),感興趣的朋友快來看看吧2022-03-03Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.du
本文主要介紹了Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.dumps()),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Jupyter Notebook讀取csv文件出現(xiàn)的問題及解決
這篇文章主要介紹了Jupyter Notebook讀取csv文件出現(xiàn)的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01使用python爬取微博數(shù)據(jù)打造一顆“心”
這篇文章主要介紹了使用python基于微博數(shù)據(jù)打造一顆“心”,作為程序員,我準(zhǔn)備了一份特別的禮物,用以往發(fā)的微博數(shù)據(jù)打造一顆“愛心”,我想她一定會(huì)感動(dòng)得哭了吧,需要的朋友可以參考下2019-06-06