实现通用多级菜单功能(控制台菜单)。菜单是一个树形结构,下图是一个具体实例。,第一级是惠普管理系统,包括1.售前技术支持,2.售后服务,3.资源获取,0.退出系统,惠普管理系统的下一级是售前技术支持,售后服务和资源获取,售前技术支持包括1.产品查询,2.价格查询,3.技术咨询,0.返回上级菜单,售后服务包括1.使用产品指导,2.故障报修,3.退货办理,0,返回上级菜单,资源获取包括1.驱动程序下载,2.应用软件下载,3.使用说明书下载,0,返回上级菜单。售前技术支持的的下一级位产品查询,产品查询包括1.打印机,2.扫描仪,3.笔记本电脑,0.返回上级菜单1、数据库设计: 将树形菜单的内容及从属关系存入一个表中,表结构设计如下。 字段名 说明 约束 类型 ItemID 菜单项id 主键唯一自动增长 int ItemNumber 菜单项编号 不为空 int ItemString 菜单项显示内容 不为空 varchar(50) UpNumber 上一级菜单项id 自引用外键 int ItemCommand 选择本菜单执行的命令 不为空 varchar(50),主程序流程图为读取数据表单并显示,等待用户选择,接受用户选择并执行相应操作请给出代码实现
时间: 2024-01-13 20:03:40 浏览: 101
以下是一个简单的实现通用多级菜单功能的示例代码:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('menu.db')
c = conn.cursor()
# 创建数据表
c.execute('''CREATE TABLE IF NOT EXISTS menu (
ItemID INTEGER PRIMARY KEY AUTOINCREMENT,
ItemNumber INTEGER NOT NULL,
ItemString VARCHAR(50) NOT NULL,
UpNumber INTEGER,
ItemCommand VARCHAR(50) NOT NULL)''')
# 插入数据
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (1, '售前技术支持', 0, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (2, '售后服务', 0, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (3, '资源获取', 0, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (0, '退出系统', 0, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (1, '产品查询', 1, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (2, '价格查询', 1, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (3, '技术咨询', 1, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (0, '返回上级菜单', 1, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (1, '使用产品指导', 2, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (2, '故障报修', 2, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (3, '退货办理', 2, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (0, '返回上级菜单', 2, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (1, '驱动程序下载', 3, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (2, '应用软件下载', 3, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (3, '使用说明书下载', 3, '')")
c.execute("INSERT INTO menu (ItemNumber, ItemString, UpNumber, ItemCommand) VALUES (0, '返回上级菜单', 3, '')")
# 提交更改
conn.commit()
# 读取数据表单并显示
def display_menu(up_num):
c.execute("SELECT * FROM menu WHERE UpNumber = ?", (up_num,))
rows = c.fetchall()
for row in rows:
print(f"{row[1]}. {row[2]}")
choice = input("请输入菜单编号:")
c.execute("SELECT * FROM menu WHERE ItemNumber = ?", (choice,))
row = c.fetchone()
if row:
if row[4] == "":
display_menu(row[0])
else:
print(f"执行命令:{row[4]}")
else:
print("输入有误,请重新输入!")
display_menu(up_num)
display_menu(0)
# 关闭数据库连接
conn.close()
```
注意,在上述示例代码中,使用了 SQLite 数据库来存储菜单数据。同时,为了简化展示,将菜单选择的执行命令都设置为空。在实际应用中,可以根据具体需求设置相应的命令。
阅读全文