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

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


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


目录

  • python社交交友平台系统设计与实现(源码+数据库)【独一无二】
  • 一、设计要求
  • 二、代码实现
    • 2.1 创建数据库
    • 2.2 用户登录
      • 2.3. 注册功能
      • 2.4. 用户菜单
    • 2.5. 更新资料功能
    • 2.6. 管理好友功能
    • 2.7. 添加好友功能
    • 2.8. 删除好友功能
    • 2.9. 查看好友列表功能
    • 2.10. 发布动态功能
    • 后面代码太多了,我就不一 一分析了直接看功能展示吧👇
  • 三、功能展示
    • 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或其他合适的数据库。例如类似以下内容的社交平台,可基于自己理解做适当变动,也可以自行设计其他应用场景,逻辑自治即可。

用户端:

  • 用户端用户可以注册,初始化用户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 删除动态

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/633662.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx企业级负载均衡:技术详解系列(9)—— Nginx核心配置详解(全局配置)

你好,我是赵兴晨,97年文科程序员。‍‍‍‍‍ 在 Nginx企业级负载均衡:技术详解系列(8)—— Nginx核心配置详解(默认配置文件)文章中,咱们讨论了Nginx核心配置文件的基础知识&#…

鸿蒙 DevEcoStudio:通知栏通知实现

【使用notificationManager实现通知栏功能】 【普通通知、长文本通知、多行通知、图片通知】 import notificationManager from ohos.notificationManager import image from ohos.multimedia.image Entry Component struct Index {State message: string Hello World// 将图…

Spring 事务源码分析

前言: 我们知道 Spring 声明式事务是通过 AOP 来实现的,日常项目开发中我们只需要使用 Transactional 注解就可以实现声明式事务,那你知道通过 Transactional 注解怎样实现事务的吗?本篇我们将从源码来分析 Spring 声明式事务的执…

鸿蒙HarmonyOS开发中的易混点归纳-持续补充中

相关文章目录 鸿蒙HarmonyOS开发术语全解:小白也能看懂! 文章目录 相关文章目录前言一、build()函数和Builder装饰器?二、自定义组件和系统组件(内置组件)三、组件和页面四、自定义弹窗和其他弹窗总结 前言 一、build…

骨传导耳机哪个牌子好?五大热门精选推荐,真心力荐!

作为一名运动达人,在日常运动中经常会使用一些运动耳机,由于运动场景的特殊性,所以骨传导耳机凭借特殊的佩戴方式和独特的传声原理,所以骨传导耳机就成运动中的得力助手。然而,近期许多消费者在购买时往往被网络上的流…

冯喜运:5.24现货黄金趋势解读,黄金原油行情分析及操作建议

【黄金消息面分析】:美国劳工部公布的最新数据显示,截至5月18日的一周内,首次申请失业救济人数下降至21.5万人,创下自去年9月以来的最大降幅。数据公布后,现货黄金短线下挫6美元,报2362.71美元/盎司。这表明…

STM32入门笔记(02):USART串口通信注意事项笔记(SPL库函数版)

这是通过串口通信发送过来的数据,里面包括了故障码,电压,电流,频率等信息,请你用STM32f103系列单片机的串口1读取该数据并解析出电压和电流是多少? 要用STM32F103系列单片机的串口1读取并解析发电机上的逆…

一顿五元钱的午餐

在郑州喧嚣的城市一隅,藏着一段鲜为人知的真实的故事。 故事的主角是一位年过半百的父亲,一位平凡而又伟大的劳动者。岁月在他脸上刻下了深深的痕迹,但他眼神中闪烁着不屈与坚韧。 他今年52岁,为了给远在家乡的孩子们一个更好的…

MySQL 将json转为行,JSON_TABLE函数详解

MySQL 将json转为行,JSON_TABLE函数详解 JSON_TABLE 是 MySQL 8.0 引入的一个强大函数,它用于将 JSON 数据转换为关系表的格式。通过 JSON_TABLE 函数,可以将 JSON 文档解析为关系表的列和行,使得在 SQL 查询中处理 JSON 数据更加…

RocketMQ之DefaultPushConsumer

DefaultMQPushConsumer消息链路 DefaultMQpushConsumer#start方法调用DefaultMQpushConsumerImpl#start方法,接着内部调用MQClientInstance#start方法,接着调用RebalanceService#start方法。 RebalanceService#start方法开启一个线程,执行本类中的runnable#run方法。run方法…

P6【知识点】【数据结构】【树tree】C++版

树是由一个集合以及在该集合上定义的一种关系构成的,集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构,在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点。 二叉…

数据库|基于T-SQL创建数据库

哈喽,你好啊,我是雷工! SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL。 本节学习基于T-SQL创建数据库。以下为学习笔记。 01 打开新建查询 首先连接上数据库,点击【新建查询】打开新建查询窗口, …

如何在go项目中实现发送邮箱验证码、邮箱+验证码登录

前期准备 GoLand :2024.1.1 下载官网:https://www.jetbrains.com/zh-cn/go/download/other.html Postman: 下载官网:https://www.postman.com/downloads/ 效果图(使用Postman) Google: QQ: And …

java 8--Lambda表达式,Stream流

目录 Lambda表达式 Lambda表达式的由来 Lambda表达式简介 Lambda表达式的结构 Stream流 什么是Stream流? 什么是流呢? Stream流操作 中间操作 终端操作 Lambda表达式 Lambda表达式的由来 Java是面向对象语言,除了部分简单数据类型…

SpringBoot——整合MyBatis

目录 MyBatis 项目总结 1、创建SQL表 2、新建一个SpringBoot项目 3、pom.xml添加依赖 4、application.properties配置文件 5、User实体类 6、UserMapper接口 7、UserMapper.xml映射文件 8、UserController控制器 9、SpringBootMyBatisApplication启动类 10、使用Po…

关于如何创建一个可配置的 SpringBoot Web 项目的全局异常处理

前情概要 这个问题其实困扰了我一周时间,一周都在 Google 上旅游,我要如何动态的设置 RestControllerAdvice 里面的 basePackages 以及 baseClasses 的值呢?经过一周的时间寻求无果之后打算决定放弃的我终于找到了一些关键的线索。 当然在此…

反射的基本知识

基本概念 反射是java在运行过程中的自我观察能力,通过class constructor field method 四个方法来获取一个类的各个组成部分。 反射是在运行状态中对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象都能调用它的任意一个方法…

《MySQL是怎样运行的》快速查询秘籍——B+树索引

一.引出索引 前面一章我们说出了数据页的结构,但是如果我们要查找某一条记录的话,怎么办呢? 我们前面知道页与页之间是一个双向链表实现的,我们要找的话,是不是要按照这个链表一个一个找下去,然后找到&am…

数据链路层简单介绍

mac地址(物理地址) mac地址和ip地址,目的都是为了区分网络上的不同设备的,在最开始的时候,mac地址和ip地址是两伙人,独立各自提出的,ip地址是4个字节(早都不够用了)&…

【个人商业画布】你有思考过把自己当成一家公司来经营吗?

商业模式画布(Business Model Canvas),是亚历山大奥斯特瓦德在《商业模式新生代》中提出的一种用于描述商业模式、可视化商业模式、评估商业模式以及改变商业模式的通用语言。它由9个模块构成,帮助创业者理清为“细分客户提供独有价值”,从而…