mysql通讯录管理系统_通讯录管理系统(数据存储在数据库中,可实现数据的增删改查)...
时间: 2024-02-05 11:12:02 浏览: 173
好的,通讯录管理系统需要以下功能:
1. 添加联系人
2. 删除联系人
3. 修改联系人信息
4. 查询联系人信息
首先,我们需要设计数据库表,表结构如下:
```
CREATE TABLE `contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`phone` varchar(20) NOT NULL,
`email` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
```
接下来,我们可以使用 Python 和 MySQLdb 模块来实现通讯录管理系统。
首先,我们需要连接到数据库:
```python
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test")
# 创建游标
cursor = db.cursor()
```
接下来,我们可以实现添加联系人的功能:
```python
def add_contact(name, phone, email=None):
try:
# 执行 SQL 语句
cursor.execute("INSERT INTO contacts (name, phone, email) VALUES (%s, %s, %s)", (name, phone, email))
# 提交到数据库执行
db.commit()
print("添加联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("添加联系人失败")
```
然后,我们可以实现删除联系人的功能:
```python
def delete_contact(id):
try:
# 执行 SQL 语句
cursor.execute("DELETE FROM contacts WHERE id = %s", (id,))
# 提交到数据库执行
db.commit()
print("删除联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("删除联系人失败")
```
接下来,我们可以实现修改联系人信息的功能:
```python
def update_contact(id, name=None, phone=None, email=None):
# 构建 SET 子句
set_clause = ""
if name is not None:
set_clause += "name = %s, "
if phone is not None:
set_clause += "phone = %s, "
if email is not None:
set_clause += "email = %s, "
set_clause = set_clause[:-2] # 去掉最后的逗号和空格
try:
# 执行 SQL 语句
cursor.execute(f"UPDATE contacts SET {set_clause} WHERE id = %s", (name, phone, email, id))
# 提交到数据库执行
db.commit()
print("修改联系人信息成功")
except:
# 发生错误时回滚
db.rollback()
print("修改联系人信息失败")
```
最后,我们可以实现查询联系人信息的功能:
```python
def query_contact(name=None, phone=None, email=None):
# 构建 WHERE 子句
where_clause = ""
if name is not None:
where_clause += f"name = '{name}' AND "
if phone is not None:
where_clause += f"phone = '{phone}' AND "
if email is not None:
where_clause += f"email = '{email}' AND "
where_clause = where_clause[:-5] # 去掉最后的 AND
try:
# 执行 SQL 语句
if where_clause:
cursor.execute(f"SELECT * FROM contacts WHERE {where_clause}")
else:
cursor.execute("SELECT * FROM contacts")
results = cursor.fetchall()
for row in results:
print(f"id={row[0]}, name={row[1]}, phone={row[2]}, email={row[3]}")
except:
print("查询联系人信息失败")
```
完整代码如下:
```python
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test")
# 创建游标
cursor = db.cursor()
# 添加联系人
def add_contact(name, phone, email=None):
try:
# 执行 SQL 语句
cursor.execute("INSERT INTO contacts (name, phone, email) VALUES (%s, %s, %s)", (name, phone, email))
# 提交到数据库执行
db.commit()
print("添加联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("添加联系人失败")
# 删除联系人
def delete_contact(id):
try:
# 执行 SQL 语句
cursor.execute("DELETE FROM contacts WHERE id = %s", (id,))
# 提交到数据库执行
db.commit()
print("删除联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("删除联系人失败")
# 修改联系人信息
def update_contact(id, name=None, phone=None, email=None):
# 构建 SET 子句
set_clause = ""
if name is not None:
set_clause += "name = %s, "
if phone is not None:
set_clause += "phone = %s, "
if email is not None:
set_clause += "email = %s, "
set_clause = set_clause[:-2] # 去掉最后的逗号和空格
try:
# 执行 SQL 语句
cursor.execute(f"UPDATE contacts SET {set_clause} WHERE id = %s", (name, phone, email, id))
# 提交到数据库执行
db.commit()
print("修改联系人信息成功")
except:
# 发生错误时回滚
db.rollback()
print("修改联系人信息失败")
# 查询联系人信息
def query_contact(name=None, phone=None, email=None):
# 构建 WHERE 子句
where_clause = ""
if name is not None:
where_clause += f"name = '{name}' AND "
if phone is not None:
where_clause += f"phone = '{phone}' AND "
if email is not None:
where_clause += f"email = '{email}' AND "
where_clause = where_clause[:-5] # 去掉最后的 AND
try:
# 执行 SQL 语句
if where_clause:
cursor.execute(f"SELECT * FROM contacts WHERE {where_clause}")
else:
cursor.execute("SELECT * FROM contacts")
results = cursor.fetchall()
for row in results:
print(f"id={row[0]}, name={row[1]}, phone={row[2]}, email={row[3]}")
except:
print("查询联系人信息失败")
```
注意事项:
1. 在实际使用时,不要直接把密码写在代码里,可以使用配置文件或环境变量等方式进行管理。
2. 在实际使用时,应该进行数据校验和安全过滤,防止 SQL 注入等安全问题。
阅读全文