当前位置:实例文章 » C#开发实例» [文章]伙伴匹配系统---05

伙伴匹配系统---05

发布人:shili8 发布时间:2023-06-05 11:45 阅读次数:62

伙伴匹配系统是一种常见的社交应用,它可以帮助用户找到与自己兴趣爱好相似的人,建立起良好的社交关系。在本文中,我们将介绍一种基于Python语言实现的伙伴匹配系统,其中包括了部分代码示例和代码注释,帮助读者更好地理解系统的实现过程。

1. 数据库设计

在伙伴匹配系统中,我们需要存储用户的个人信息和兴趣爱好等数据,因此需要设计一个数据库来存储这些信息。我们可以使用MySQL数据库来实现,以下是数据库的设计:

sql
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT
    name VARCHAR(50) NOT NULL
    age INT NOT NULL
    gender VARCHAR(10) NOT NULL
    email VARCHAR(50) NOT NULL
    password VARCHAR(50) NOT NULL
);

CREATE TABLE interests (
    id INT PRIMARY KEY AUTO_INCREMENT
    name VARCHAR(50) NOT NULL
);

CREATE TABLE user_interests (
    user_id INT NOT NULL
    interest_id INT NOT NULL
    FOREIGN KEY (user_id) REFERENCES users(id)
    FOREIGN KEY (interest_id) REFERENCES interests(id)
);


在上述代码中,我们创建了三个表:users、interests和user_interests。其中,users表用于存储用户的个人信息,包括id、name、age、gender、email和password等字段;interests表用于存储用户的兴趣爱好,包括id和name两个字段;user_interests表用于存储用户和兴趣爱好之间的关系,包括user_id和interest_id两个字段,同时还设置了外键约束,确保数据的完整性和一致性。

2. 用户注册和登录

在伙伴匹配系统中,用户需要先进行注册,然后才能登录系统。以下是用户注册和登录的代码示例:

import hashlib
import mysql.connector

# 连接MySQL数据库
db = mysql.connector.connect(
    host=localhost
    user=root
    password=123456
    database=buddy_match
)

# 用户注册
def register(name age gender email password):
    cursor = db.cursor()
    # 对密码进行加密处理
    password = hashlib.sha256(password.encode()).hexdigest()
    # 插入用户数据到users表中
    sql = INSERT INTO users (name age gender email password) VALUES (%s %s %s %s %s)
    val = (name age gender email password)
    cursor.execute(sql val)
    db.commit()
    print(注册成功!)

# 用户登录
def login(email password):
    cursor = db.cursor()
    # 对密码进行加密处理
    password = hashlib.sha256(password.encode()).hexdigest()
    # 查询用户数据
    sql = SELECT * FROM users WHERE email = %s AND password = %s
    val = (email password)
    cursor.execute(sql val)
    result = cursor.fetchone()
    if result:
        print(登录成功!)
    else:
        print(登录失败!)

# 测试代码
register(张三 20 男 zhangsan@qq.com 123456)
login(zhangsan@qq.com 123456)


在上述代码中,我们首先使用mysql.connector模块连接到MySQL数据库,然后定义了register和login两个函数,分别用于用户注册和登录。在register函数中,我们对用户输入的密码进行了加密处理,然后将用户数据插入到users表中;在login函数中,我们同样对用户输入的密码进行了加密处理,然后查询users表中是否存在该用户,如果存在则登录成功,否则登录失败。

3. 用户兴趣爱好管理

在伙伴匹配系统中,用户可以添加、删除和查看自己的兴趣爱好。以下是用户兴趣爱好管理的代码示例:

# 添加兴趣爱好
def add_interest(user_id interest_name):
    cursor = db.cursor()
    # 查询interests表中是否已存在该兴趣爱好
    sql = SELECT * FROM interests WHERE name = %s
    val = (interest_name)
    cursor.execute(sql val)
    result = cursor.fetchone()
    if result:
        interest_id = result[0]
    else:
        # 如果不存在,则插入到interests表中
        sql = INSERT INTO interests (name) VALUES (%s)
        val = (interest_name)
        cursor.execute(sql val)
        db.commit()
        interest_id = cursor.lastrowid
    # 插入用户和兴趣爱好之间的关系到user_interests表中
    sql = INSERT INTO user_interests (user_id interest_id) VALUES (%s %s)
    val = (user_id interest_id)
    cursor.execute(sql val)
    db.commit()
    print(添加成功!)

# 删除兴趣爱好
def delete_interest(user_id interest_name):
    cursor = db.cursor()
    # 查询interests表中是否存在该兴趣爱好
    sql = SELECT * FROM interests WHERE name = %s
    val = (interest_name)
    cursor.execute(sql val)
    result = cursor.fetchone()
    if result:
        interest_id = result[0]
        # 删除user_interests表中的关系数据
        sql = DELETE FROM user_interests WHERE user_id = %s AND interest_id = %s
        val = (user_id interest_id)
        cursor.execute(sql val)
        db.commit()
        print(删除成功!)
    else:
        print(该兴趣爱好不存在!)

# 查看兴趣爱好
def view_interests(user_id):
    cursor = db.cursor()
    # 查询user_interests表中的关系数据
    sql = SELECT interests.name FROM interests INNER JOIN user_interests ON interests.id = user_interests.interest_id WHERE user_interests.user_id = %s
    val = (user_id)
    cursor.execute(sql val)
    result = cursor.fetchall()
    if result:
        print(您的兴趣爱好:)
        for row in result:
            print(row[0])
    else:
        print(您还没有添加兴趣爱好!)

# 测试代码
user_id = 1
add_interest(user_id 游泳)
add_interest(user_id 旅游)
view_interests(user_id)
delete_interest(user_id 游泳)
view_interests(user_id)


在上述代码中,我们定义了add_interest、delete_interest和view_interests三个函数,分别用于添加、删除和查看用户的兴趣爱好。在add_interest函数中,我们首先查询interests表中是否已存在该兴趣爱好,如果存在则获取其id,否则将其插入到interests表中,并获取其自动生成的id;然后将用户和兴趣爱好之间的关系插入到user_interests表中。在delete_interest函数中,我们同样查询interests表中是否存在该兴趣爱好,如果存在则删除user_interests表中的关系数据;否则提示该兴趣爱好不存在。在view_interests函数中,我们查询user_interests表中的关系数据,并通过INNER JOIN语句将其与interests表关联起来,最后输出用户的兴趣爱好列表。

4. 用户匹配

在伙伴匹配系统中,用户可以通过自己的兴趣爱好来寻找与自己相似的人,建立起良好的社交关系。以下是用户匹配的代码示例:

# 用户匹配
def match(user_id):
    cursor = db.cursor()
    # 查询用户的兴趣爱好
    sql = SELECT interest_id FROM user_interests WHERE user_id = %s
    val = (user_id)
    cursor.execute(sql val)
    result = cursor.fetchall()
    if result:
        interest_ids = [row[0] for row in result]
        # 查询与用户兴趣爱好相似的其他用户
        sql = SELECT user_id COUNT(*) AS count FROM user_interests WHERE interest_id IN %s AND user_id != %s GROUP BY user_id

其他信息

其他资源

Top