实现通用多级菜单功能(控制台菜单)。菜单是一个树形结构,下图是一个具体实例。,第一级是惠普管理系统,第二级是售前技术支持,售后服务和资源获取,售前技术支持的下一级位产品查询,1、数据库设计: 将树形菜单的内容及从属关系存入一个表中,表结构设计如下。 字段名 说明 约束 类型 ItemID 菜单项id 主键唯一自动增长 int ItemNumber 菜单项编号 不为空 int ItemString 菜单项显示内容 不为空 varchar(50) UpNumber 上一级菜单项id 自引用外键 int ItemCommand 选择本菜单执行的命令 不为空 varchar(50),请给出代码实现
时间: 2024-02-23 07:56:42 浏览: 267
好的,以下是一个简单的实现。
首先是数据库设计,根据题目要求,我们可以设计一个名为 `Menu` 的表。
```sql
CREATE TABLE Menu (
ItemID INT PRIMARY KEY AUTO_INCREMENT,
ItemNumber INT NOT NULL,
ItemString VARCHAR(50) NOT NULL,
UpNumber INT,
ItemCommand VARCHAR(50) NOT NULL,
FOREIGN KEY (UpNumber) REFERENCES Menu(ItemID)
);
```
然后我们可以插入一些数据,模拟菜单的结构。
```sql
INSERT INTO Menu (ItemNumber, ItemString, UpNumber, ItemCommand)
VALUES (1, '惠普管理系统', NULL, ''),
(2, '售前技术支持', 1, ''),
(3, '售后服务', 1, ''),
(4, '资源获取', 1, ''),
(5, '产品查询', 2, 'product_search'),
(6, '技术支持', 2, 'tech_support'),
(7, '安装指南', 3, 'installation_guide'),
(8, '维修服务', 3, 'repair_service');
```
接下来是控制台菜单的实现,我们可以使用递归函数来遍历菜单树,并输出菜单项。
```python
import mysql.connector
# 连接数据库
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
# 定义递归函数
def print_menu_items(item_id, level):
# 查询当前菜单项
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM Menu WHERE ItemID = %s", (item_id,))
item = mycursor.fetchone()
# 输出菜单项
print(' ' * level + str(item[1]) + '. ' + item[2])
# 查询下级菜单项
mycursor.execute("SELECT * FROM Menu WHERE UpNumber = %s", (item_id,))
sub_items = mycursor.fetchall()
# 递归输出下级菜单项
for sub_item in sub_items:
print_menu_items(sub_item[0], level+1)
# 输出整个菜单树
print_menu_items(1, 0)
```
运行以上代码,输出的结果应该是:
```
1. 惠普管理系统
2. 售前技术支持
5. 产品查询
6. 技术支持
3. 售后服务
7. 安装指南
8. 维修服务
4. 资源获取
```
阅读全文