【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】

一、设计要求

基于一门高级语言,搭建一个简易平台,所使用的数据库可以是MySQL或其他合适的数据库。例如类似以下内容的社交平台,可基于自己理解做适当变动,也可以自行设计其他应用场景,逻辑自治即可。


用户端:

  • 用户端用户可以注册,初始化用户id和密码
  • 用户可以登录,并修改个人基本信息,如姓名、性别、出生日期、年龄
  • 用户可以搜索、添加、删除好友,并将好友分组管理
  • 用户可以发表、修改朋友圈(朋友圈有字数限制),记录朋友圈最后更新时间
  • 用户可以查看好友的朋友圈(包含最后更新时间、其他人的评论),并进行评论用户可以删除自己的朋友圈,在删除时该朋友圈相关评论将被自动同时删除


管理员端:

  • 管理员拥有管理员id和密码
  • 管理员可以登录,并修改个人基本信息
  • 管理员可以注销某用户,并删除系统中所有与用户有关的信息管理员不可浏览用户的个人基本信息,但可以浏览所有朋友圈,进行审核和删除


基于理论课所学习的数据库设计相关知识,为你的系统设计合适的表结构、完整性约束、视图等。包含简单的事务管理、触发器等功能,具体内容自行设计为实现的功能建立合理的插入、删除、修改、查询代码逻辑,并为可能出现的代码报错提供错误处理机制至少实现一种交互方式,可以只实现命令行交互分别创建一位用户和管理员,并在数据库中初始化部分数据,便于验收。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


二、代码实现

2.1 创建数据库

将下面信息更改为数据库信息,并且保证数据表都已经提前创建好。

import pymysql
import sys

connection = pymysql.connect(host='127.0.0.1',
                             user='root',
                             password='root',
                             db='SocialNetwork',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)


执行如下命令,提前把数据库创建好:

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈

CREATE DATABASE SocialNetwork;

USE SocialNetwork;

-- 用户表
CREATE TABLE Users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    # 略....
    name VARCHAR(50),
    gender ENUM('M', 'F', 'Other'),
    birth_date DATE,
    age INT
);

-- 好友关系表
CREATE TABLE Friends (
    user_id INT,
    # 略....
    PRIMARY KEY (user_id, friend_id)
);

-- 朋友圈表
CREATE TABLE Moments (
    moment_id INT AUTO_INCREMENT PRIMARY KEY,
    # 略....>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈

    FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

-- 评论表
CREATE TABLE Comments (
    comment_id INT AUTO_INCREMENT PRIMARY KEY,
    # 略....
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
);


2.2 用户登录

该函数实现用户登录功能,输入用户名和密码后,通过SQL查询匹配数据库中的用户信息。若匹配成功,则根据用户名判断是否为管理员,进入相应的菜单;否则,显示登录失败信息并返回主菜单。

def login():
    username = input("请输入用户名: ")
    password = input("请输入密码: ")
    try:
        with connection.cursor() as cursor:
            sql = "SELECT * FROM Users WHERE username = %s AND password = %s"
            # 略 ....
    except Exception as e:
        print(e)

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


这段代码实现了一个简单的社交平台应用,包括用户和管理员的登录、注册、资料更新、好友管理、动态发布与查看、管理员对用户和动态的管理等功能。以下是对各个模块的实现思路分析:


2.3. 注册功能

def register():
    username = input("请选择用户名: ")
    password = input("请选择密码: ")
    try:
        with connection.cursor() as cursor:
            # 略 ....
    except Exception as e:
        print("注册失败,错误: ", e)
        main_menu()


该函数实现用户注册功能,输入用户名和密码后,通过SQL插入操作将新用户信息保存到数据库。注册成功后返回主菜单,否则显示错误信息。


2.4. 用户菜单

def user_menu(user_id):
    print("\n======用户菜单======")
    print("1. 更新资料")
    print("2. 管理好友")
    # 略 ....>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


该函数实现用户菜单,提供更新资料、管理好友、发布动态、查看并评论动态、注销等选项。根据用户输入选择相应的操作。


2.5. 更新资料功能

def update_profile(user_id):
    print("\n******更新资料******")
    name = input("请输入全名: ")
    # 略 ....


该函数实现更新用户资料的功能,通过SQL更新操作修改数据库中的用户信息。更新成功后返回用户菜单,否则显示错误信息。


2.6. 管理好友功能

def manage_friends(user_id):
    print("\n======管理好友======")
    print("1. 添加好友")
    print("2. 删除好友")
    # 略 ....


该函数实现管理好友的功能,提供添加好友、删除好友、查看好友列表、返回等选项。根据用户输入选择相应的操作。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


2.7. 添加好友功能

def add_friend(user_id):
    friend_name = input("请输入要添加的好友用户名: ")
    group_name = input("请输入该好友的分组名称: ")
    try:
        with connection.cursor() as cursor:
            # 略 ....


该函数实现添加好友的功能,通过SQL查询确定好友用户ID后,再通过SQL插入操作将好友关系保存到数据库。操作完成后返回管理好友菜单。


2.8. 删除好友功能

def remove_friend(user_id):
    friend_name = input("请输入要删除的好友用户名: ")
    try:
        with connection.cursor() as cursor:
            sql = "SELECT user_id FROM Users WHERE username = %s"
            cursor.execute(sql, (friend_name,))
            # 略 ....


该函数实现删除好友的功能,通过SQL查询确定好友用户ID后,再通过SQL删除操作移除好友关系。操作完成后返回管理好友菜单。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


2.9. 查看好友列表功能

def list_friends(user_id):
    try:
        with connection.cursor() as cursor:
            sql = "SELECT username FROM Users WHERE user_id IN (SELECT friend_id FROM Friends WHERE user_id = %s)"
            cursor.execute(sql, (user_id,))
            results = cursor.fetchall()
            # 略 ....


该函数实现查看好友列表的功能,通过SQL查询获取用户的所有好友并显示。操作完成后返回管理好友菜单。


2.10. 发布动态功能

def post_moment(user_id):
    content = input("请输入动态内容(最多300字符): ")
    if len(content) > 300:
        # 略 ....


该函数实现发布动态的功能,输入动态内容后,通过SQL插入操作将动态保存到数据库。发布成功后返回用户菜单,否则显示错误信息。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


后面代码太多了,我就不一 一分析了直接看功能展示吧👇


三、功能展示

3.1 用户端

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


3.1.1 用户登录


3.1.2 用户注册


3.1.3 更新用户资料

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


3.1.4 管理好友

3.1.4.1 添加好友

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


3.1.4.2 删除好友


3.1.4.3 好友列表

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


3.1.5 发布朋友圈


3.1.6 查看并评论

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


3.2 管理员


3.2.1 查看所有用户

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


3.2.2 删除用户


3.2.3 查看所有动态

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈


3.2.4 删除动态


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “社交” 获取。👈👈👈

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
132 68
|
15天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
100 15
|
27天前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
107 3
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
153 2
|
2月前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
|
2月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
44 4
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
289 2
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
65 3