最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)簡(jiǎn)易通訊錄修改版

 更新時(shí)間:2018年03月13日 11:55:26   作者:MTbaby  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)易通訊錄的修改版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

描述:

上一篇博客我寫(xiě)了一個(gè)簡(jiǎn)單的通訊錄,但是還是覺(jué)得不夠完美:

需要輸入ID,雖然ID是主鍵,但是沒(méi)有實(shí)現(xiàn)自增功能;

忘記加電話號(hào)碼了;

如果插入用戶名相同,則后續(xù)的查、改、刪功能受到影響;

所以,我這個(gè)修改版主要修正了以上三點(diǎn)缺陷。具體如下

將用戶ID設(shè)置為自增字段,即就是不用輸入ID,程序會(huì)自動(dòng)幫你將插入的用戶進(jìn)行排序并附上ID,默認(rèn)從1開(kāi)始;SQLite實(shí)現(xiàn)主鍵自增功能,請(qǐng)查看SQLiteAUTOINCREMENT/自動(dòng)遞增這篇博客。
創(chuàng)建表時(shí)增加了電話號(hào)碼字段;
插入的用戶名不能重復(fù);
好了,廢話不多說(shuō),附上新代碼,哈哈~~~

#-*- coding:utf-8 -*-

import sqlite3
#打開(kāi)本地?cái)?shù)據(jù)庫(kù)用于存儲(chǔ)用戶信息
conn = sqlite3.connect('mysql_person.db')

#在該數(shù)據(jù)庫(kù)下創(chuàng)建表,創(chuàng)建表的這段代碼在第一次執(zhí)行后需要注釋掉,否則再次執(zhí)行程序會(huì)一直提示:該表已存在
conn.execute ('''CREATE TABLE MT_table1(
  ID INTEGER PRIMARY KEY  AUTOINCREMENT,
  NAME      TEXT   NOT NULL,
  AGE      INT    NOT NULL,
  ADDRESS    CHAR(50),
  SALARY     REAL,
  PhoneNumber  INT    NOT NULL);''')
print "Table created successfully";

#增加用戶信息
def insert():
  USER_NAME = raw_input('請(qǐng)輸入用戶昵稱:')
  cursor = conn.execute("SELECT name from MT_table1 where name = '%s';"%USER_NAME)
  for row in cursor:
    if USER_NAME == row[0]:
      print "sorry,改用戶名已存在,請(qǐng)重新輸入用戶名"
      break
  else:
    AGE = input('請(qǐng)輸入年齡:')
    ADDRESS = raw_input('請(qǐng)輸入用戶地址:')
    SALARY = input('請(qǐng)輸入用戶薪水:')
    PhoneNumber = input("請(qǐng)輸入聯(lián)系方式:")
    #為避免代碼太長(zhǎng),以下我用字符串的連接特性將代碼縮短
    sql1 = 'INSERT INTO MT_table1(NAME,AGE,ADDRESS,SALARY,PhoneNumber)'
    sql1 += 'VALUES("%s","%d","%s","%d","%d");'%(USER_NAME,AGE,ADDRESS,SALARY,PhoneNumber)
    conn.execute(sql1)
    conn.commit()
    print "Records insert successfully"

#刪除用戶信息
def delete():
  delete_name = raw_input("請(qǐng)輸入所要?jiǎng)h除的聯(lián)系人姓名:")
  cursor = conn.execute("SELECT name from MT_table1 where name = '%s';"%delete_name)
  for row in cursor:
    if delete_name == row[0]:
      conn.execute("DELETE from MT_table1 where name = '%s';"%delete_name)
      conn.commit()
      print "Records delete successfully"
      break
  else:
    print "sorry,不存在該用戶"

#修改用戶信息
def modify():
  update_name = raw_input("請(qǐng)輸入要修改用戶的姓名:")
  sql6 = "SELECT name from MT_table1 where name = '%s';"%update_name
  cursor = conn.execute(sql6)
  for row in cursor:
    if update_name == row[0]:
      New_addr = raw_input("請(qǐng)輸入要修改用戶的新地址:")
      New_age = input("請(qǐng)輸入要修改用戶的新年齡:")
      New_salary = input("請(qǐng)輸入要修改用戶的新薪水:")
      New_num = input("輸入要修改用戶的新號(hào)碼:")
      sql3 = "UPDATE MT_table1 set address = '%s',age = '%d',salary = '%d',PhoneNumber = '%d' where \
      name = '%s';"%(New_addr,New_age,New_salary,New_num,update_name)
      conn.execute(sql3)
      conn.commit()
      print "修改成功"
      sql5 = "SELECT id, name, age,address, salary ,PhoneNumber from MT_table1 where name = '%s';"%update_name
      cursor = conn.execute(sql5)
      for row in cursor:
        print "ID = ", row[0]
        print "NAME = ", row[1]
        print "AGE = ",row[2]
        print "ADDRESS = ", row[3]
        print "SALARY = ", row[4]
        print "PhoneNumber = ",row[5], "\n"
        break
  else:
    print "sorry,不存在該用戶信息"


#查詢用戶信息
def search():
  conn = sqlite3.connect('mysql_person.db')
  search_name = raw_input('請(qǐng)輸入要查詢的用戶姓名')
  sql2 = "SELECT id,name,age, address, salary ,PhoneNumber from MT_table1 where name= '%s';" % (search_name)
  cursor = conn.execute(sql2)
  for row in cursor:
    print "ID = ", row[0]
    print "NAME = ", row[1]
    print "AGE = ",row[2]
    print "ADDRESS = ", row[3]
    print "SALARY = ", row[4]
    print "PhoneNumber = ",row[5], "\n"
    break
  else:
    print "sorry,沒(méi)有該用戶信息"


#顯示所有用戶信息
def showall():
  cursor = conn.execute("SELECT id, name,age, address, salary ,PhoneNumber from MT_table1")
  for row in cursor:
    print "ID = ", row[0]
    print "NAME = ", row[1]
    print "AGE = ",row[2]
    print "ADDRESS = ", row[3]
    print "SALARY = ", row[4]
    print "PhoneNumber = ",row[5], "\n"
  print "Operation done successfully";
  cursor = conn.execute("select count(*) from MT_table1;")
  for row in cursor:
    print "一共有%d個(gè)用戶"%row[0]

def menu():
  print '1.新增聯(lián)系人'
  print '2.刪除聯(lián)系人'
  print '3.修改聯(lián)系人'
  print '4.查詢聯(lián)系人'
  print '5.顯示所有聯(lián)系人'
  print '6.退出程序'
  print 'What do you want to do?'
while True:
  menu()
  x = raw_input('請(qǐng)輸入您的選擇菜單號(hào):')
  if x == '1':
    insert()
    continue
  if x == '2':
    delete()
    continue
  if x == '3':
    modify()
    continue
  if x == '4':
    search()
    continue
  if x == '5':
    showall()
    continue
  if x == '6':
    print "謝謝使用!"
    exit()
    continue
  else:
    print "輸入的選項(xiàng)不存在,請(qǐng)重新輸入!"
    continue

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python面向?qū)ο缶幊淘O(shè)計(jì)原則之單一職責(zé)原則詳解

    python面向?qū)ο缶幊淘O(shè)計(jì)原則之單一職責(zé)原則詳解

    這篇文章主要為大家詳細(xì)介紹了python面向?qū)ο缶幊淘O(shè)計(jì)原則之單一職責(zé)原則,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 使用pandas讀取文件的實(shí)現(xiàn)

    使用pandas讀取文件的實(shí)現(xiàn)

    這篇文章主要介紹了使用pandas讀取文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 快速進(jìn)修Python指南之文件操作

    快速進(jìn)修Python指南之文件操作

    這篇文章主要為大家介紹了Java開(kāi)發(fā)者快速進(jìn)修Python指南之文件操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Python編寫(xiě)通訊錄通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)實(shí)現(xiàn)模糊查詢功能

    Python編寫(xiě)通訊錄通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)實(shí)現(xiàn)模糊查詢功能

    數(shù)據(jù)庫(kù)存儲(chǔ)通訊錄,要求按姓名/電話號(hào)碼查詢,查詢條件只有一個(gè)輸入入口,自動(dòng)識(shí)別輸入的是姓名還是號(hào)碼,允許模糊查詢。這篇文章主要介紹了Python編寫(xiě)通訊錄,支持模糊查詢,利用數(shù)據(jù)庫(kù)存儲(chǔ),需要的朋友可以參考下
    2019-07-07
  • Python的turtle繪圖庫(kù)使用基礎(chǔ)

    Python的turtle繪圖庫(kù)使用基礎(chǔ)

    turtle庫(kù)是Python語(yǔ)言中一個(gè)很流行的繪制圖像的函數(shù)庫(kù),想象一個(gè)小烏龜,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動(dòng),從而在它爬行的路徑上繪制了圖形,需要的朋友可以參考下
    2023-04-04
  • Python返回真假值(True or False)小技巧

    Python返回真假值(True or False)小技巧

    這篇文章主要介紹了Python返回真假值(True or False)小技巧,本文探討的是最簡(jiǎn)潔的條件判斷語(yǔ)句寫(xiě)法,本文給出了兩種簡(jiǎn)潔寫(xiě)法,需要的朋友可以參考下
    2015-04-04
  • Python lambda表達(dá)式用法實(shí)例分析

    Python lambda表達(dá)式用法實(shí)例分析

    這篇文章主要介紹了Python lambda表達(dá)式用法,結(jié)合實(shí)例形式分析了lambda表達(dá)式的具體功能、應(yīng)用場(chǎng)景及相關(guān)使用技巧,需要的朋友可以參考下
    2018-12-12
  • Python中的map()、apply()、applymap()的區(qū)別小結(jié)

    Python中的map()、apply()、applymap()的區(qū)別小結(jié)

    map()、apply()和applymap()方法是Python中常用的轉(zhuǎn)換方法,,輸出的結(jié)果及類型完全取決于作為給定方法的參數(shù)的函數(shù),本文就來(lái)介紹一下這三種方法的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Python線程的兩種編程方式

    Python線程的兩種編程方式

    這篇文章主要介紹了Python線程的兩種編程方式,Python中如果要使用線程的話,一種是函數(shù)式,一種是用類來(lái)包裝的線程對(duì)象,需要的朋友可以參考下
    2015-04-04
  • python中的字符串內(nèi)部換行方法

    python中的字符串內(nèi)部換行方法

    今天小編就為大家分享一篇python中的字符串內(nèi)部換行方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論

尼勒克县| 黑山县| 建宁县| 大同市| 土默特左旗| 平泉县| 策勒县| 麻江县| 奉新县| 平谷区| 津南区| 建瓯市| 乌兰县| 嘉禾县| 民和| 炎陵县| 牙克石市| 游戏| 铁岭县| 鹤庆县| 常熟市| 乳山市| 西城区| 互助| 满城县| 贵溪市| 宁阳县| 高清| 商洛市| 喀什市| 上思县| 来宾市| 南川市| 广州市| 六安市| 泗阳县| 永和县| 新河县| 莲花县| 洮南市| 新乐市|