测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25998. 管理电话号码编写一个使用SQLite管理电话号码的程序,功能有:显示所有电话号码、添加、删除和退出,请补全程序。(本题无需运行通过,写入代码即可)import sqlite3 def init_db(): conn = sqlite3.connect('phonebook.db') cursor = conn.cursor() cursor.execute("DROP TABLE IF EXIS…

填空题 困难

题目描述

管理电话号码

编写一个使用SQLite管理电话号码的程序,功能有:显示所有电话号码、添加、删除和退出,请补全程序。

(本题无需运行通过,写入代码即可)

import sqlite3
def init_db():
    conn = sqlite3.connect('phonebook.db')
    cursor = conn.cursor()
    cursor.execute("DROP TABLE IF EXISTS contacts")
    cursor.execute('''CREATE TABLE contacts (name TEXT NOT NULL,phone TEXT PRIMARY KEY)''')
    conn.commit()
    return conn
def show_all_contacts(conn):
    cursor = conn.cursor()
    cursor.execute("SELECT name, phone FROM contacts ORDER BY name")
    contacts = cursor. ______ ① ______       
    if not contacts:
        print("电话簿为空")
        return    
    for name, phone in contacts:
        print(f"{name}: {phone}")
def add_contact(conn):
    name = input("请输入姓名: ").strip()
    phone = input("请输入电话号码: ").strip()    
    if not name or not phone:
        print("错误: 姓名和电话都不能为空")
        return    
    try:
        cursor = conn.cursor()
        cursor.execute("INSERT INTO contacts (name, phone) VALUES (?, ?)", (______ ② ______, ______ ③ ______))
        conn.commit()
        print(f"成功添加联系人: {name} - {phone}")
    except sqlite3.IntegrityError:
        print("错误: 该电话号码已存在")
def delete_contact(conn):
    phone = input("请输入要删除的电话号码: ").strip()    
    if not phone:
        print("错误: 请输入有效的电话号码")
        return    
    cursor = conn.cursor()
    cursor.execute("SELECT name FROM contacts WHERE phone=?", (phone,))
    result = cursor.______ ④ ______       
    if not result:
        print("错误: 未找到该电话号码")
        return    
    confirm = input(f"确定要删除 {result[0]}({phone}) 吗? (y/n): ").lower()
    if confirm == 'y':
        cursor.execute("DELETE FROM contacts WHERE phone=?", (phone,))
        conn.commit()
        print("联系人已删除")
    else:
        print("取消删除")
# 主程序
def main():
    conn = init_db()    
    while True:
        print("----------------")
        show_all_contacts(conn)
        print("\n请选择操作:")
        print("1. 添加联系人")
        print("2. 删除联系人")
        print("0. 退出程序")        
        choice = input("请输入选项(0-2): ").strip()        
        if choice == "1":
            add_contact(conn)
        elif choice == "2":
            delete_contact(conn)
        elif choice == "0":
            print("\n感谢使用电话簿管理系统,再见!")
            conn.close()
            break
        else:
            print("无效输入,请重新选择!")        
if __name__ == "__main__":
    main()

参考答案

import sqlite3 def init_db(): conn = sqlite3.connect('phonebook.db') cursor = conn.cursor() cursor.execute("DROP TABLE IF EXISTS contacts") cursor.execute('''CREATE TABLE contacts (name TEXT NOT NULL,phone TEXT PRIMARY KEY)''') conn.commit() return conn def show_all_contacts(conn): cursor = conn.cursor() cursor.execute("SELECT name, phone FROM contacts ORDER BY name") contacts = cursor.fetchall() if not contacts: print("电话簿为空") return for name, phone in contacts: print(f"{name}: {phone}") def add_contact(conn): name = input("请输入姓名: ").strip() phone = input("请输入电话号码: ").strip() if not name or not phone: print("错误: 姓名和电话都不能为空") return try: cursor = conn.cursor() cursor.execute("INSERT INTO contacts (name, phone) VALUES (?, ?)", (name, phone)) conn.commit() print(f"成功添加联系人: {name} - {phone}") except sqlite3.IntegrityError: print("错误: 该电话号码已存在") def delete_contact(conn): phone = input("请输入要删除的电话号码: ").strip() if not phone: print("错误: 请输入有效的电话号码") return cursor = conn.cursor() cursor.execute("SELECT name FROM contacts WHERE phone=?", (phone,)) result = cursor.fetchone() if not result: print("错误: 未找到该电话号码") return confirm = input(f"确定要删除 {result[0]}({phone}) 吗? (y/n): ").lower() if confirm == 'y': cursor.execute("DELETE FROM contacts WHERE phone=?", (phone,)) conn.commit() print("联系人已删除") else: print("取消删除") # 主程序 def main(): conn = init_db() while True: print("----------------") show_all_contacts(conn) print("\n请选择操作:") print("1. 添加联系人") print("2. 删除联系人") print("0. 退出程序") choice = input("请输入选项(0-2): ").strip() if choice == "1": add_contact(conn) elif choice == "2": delete_contact(conn) elif choice == "0": print("\n感谢使用电话簿管理系统,再见!") conn.close() break else: print("无效输入,请重新选择!") if __name__ == "__main__": main()

答案解析

评分标准:

(1)fetchall()(或等效答案);(3分)

(2)name(或等效答案); (2分)

(3)phone(或等效答案); (2分)

(4)fetchone()(或等效答案)。(3分)

上一题 下一题