C++系统设计题目

社交网络系统的功能,包括用户注册、发布消息、关注其他用户、浏览消息流、点赞和评论等:

cpp 复制代码
#include <iostream>
#include <vector>
#include <unordered_map>
#include <unordered_set>
#include <string>

using namespace std;

// 用户类
class User {
private:
    string username;
    unordered_set<string> following;
    vector<string> messages;

public:
    User(string _username) : username(_username) {}

    string getUsername() const {
        return username;
    }

    void follow(User& user) {
        following.insert(user.getUsername());
    }

    void unfollow(User& user) {
        following.erase(user.getUsername());
    }

    void postMessage(const string& message) {
        messages.push_back(message);
    }

    const vector<string>& getMessages() const {
        return messages;
    }

    const unordered_set<string>& getFollowing() const {
        return following;
    }
};

// 社交网络系统类
class SocialNetwork {
private:
    unordered_map<string, User> users;

public:
    // 用户注册
    void registerUser(const string& username) {
        users[username] = User(username);
    }

    // 获取用户
    User* getUser(const string& username) {
        if (users.find(username) != users.end()) {
            return &users[username];
        }
        return nullptr;
    }

    // 用户关注
    void followUser(const string& follower, const string& followee) {
        User* followerUser = getUser(follower);
        User* followeeUser = getUser(followee);
        if (followerUser && followeeUser) {
            followerUser->follow(*followeeUser);
        }
    }

    // 用户取消关注
    void unfollowUser(const string& follower, const string& followee) {
        User* followerUser = getUser(follower);
        User* followeeUser = getUser(followee);
        if (followerUser && followeeUser) {
            followerUser->unfollow(*followeeUser);
        }
    }

    // 发布消息
    void postMessage(const string& username, const string& message) {
        User* user = getUser(username);
        if (user) {
            user->postMessage(message);
        }
    }

    // 获取用户消息流
    vector<string> getTimeline(const string& username) {
        vector<string> timeline;
        User* user = getUser(username);
        if (user) {
            timeline = user->getMessages();
            for (const auto& followee : user->getFollowing()) {
                User* followeeUser = getUser(followee);
                if (followeeUser) {
                    const vector<string>& messages = followeeUser->getMessages();
                    timeline.insert(timeline.end(), messages.begin(), messages.end());
                }
            }
            sort(timeline.begin(), timeline.end()); // 假设按照发布时间排序
        }
        return timeline;
    }
};

int main() {
    SocialNetwork network;

    // 注册用户
    network.registerUser("Alice");
    network.registerUser("Bob");
    network.registerUser("Charlie");

    // 用户关注
    network.followUser("Alice", "Bob");
    network.followUser("Alice", "Charlie");

    // 用户发布消息
    network.postMessage("Alice", "Hello, this is Alice's message!");
    network.postMessage("Bob", "This is Bob's message!");

    // 获取用户消息流
    vector<string> aliceTimeline = network.getTimeline("Alice");
    cout << "Alice's Timeline:" << endl;
    for (const auto& message : aliceTimeline) {
        cout << message << endl;
    }

    return 0;
}

在线电影订票系统的基本功能,包括搜索电影、选择座位、支付订单、管理订单和取消订单等:

cpp 复制代码
#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>

using namespace std;

// 电影类
class Movie {
public:
    string title;
    int availableSeats;

    Movie(string _title, int _availableSeats) : title(_title), availableSeats(_availableSeats) {}
};

// 订单类
class Order {
public:
    string movieTitle;
    int numTickets;

    Order(string _movieTitle, int _numTickets) : movieTitle(_movieTitle), numTickets(_numTickets) {}
};

// 电影订票系统类
class MovieTicketSystem {
private:
    unordered_map<string, Movie> movieDatabase;
    vector<Order> orders;

public:
    // 添加电影到数据库
    void addMovie(string title, int availableSeats) {
        Movie movie(title, availableSeats);
        movieDatabase[title] = movie;
    }

    // 搜索电影
    bool searchMovie(string title) {
        if (movieDatabase.find(title) != movieDatabase.end()) {
            cout << "Movie Found: " << title << endl;
            return true;
        } else {
            cout << "Movie Not Found: " << title << endl;
            return false;
        }
    }

    // 选择座位并下订单
    void bookTickets(string movieTitle, int numTickets) {
        if (movieDatabase.find(movieTitle) != movieDatabase.end()) {
            Movie& movie = movieDatabase[movieTitle];
            if (movie.availableSeats >= numTickets) {
                movie.availableSeats -= numTickets;
                Order order(movieTitle, numTickets);
                orders.push_back(order);
                cout << numTickets << " tickets booked for movie: " << movieTitle << endl;
            } else {
                cout << "Not enough seats available for movie: " << movieTitle << endl;
            }
        } else {
            cout << "Movie Not Found: " << movieTitle << endl;
        }
    }

    // 支付订单
    void payOrder() {
        // 实现支付逻辑,这里简化为输出订单信息
        cout << "Payment Successful" << endl;
        for (const auto& order : orders) {
            cout << "Movie: " << order.movieTitle << ", Tickets: " << order.numTickets << endl;
        }
        orders.clear();
    }

    // 取消订单
    void cancelOrder(string movieTitle, int numTickets) {
        for (auto it = orders.begin(); it != orders.end(); ++it) {
            if (it->movieTitle == movieTitle && it->numTickets == numTickets) {
                Movie& movie = movieDatabase[movieTitle];
                movie.availableSeats += numTickets;
                orders.erase(it);
                cout << "Order canceled successfully for movie: " << movieTitle << endl;
                return;
            }
        }
        cout << "Order not found for movie: " << movieTitle << ", Tickets: " << numTickets << endl;
    }
};

int main() {
    MovieTicketSystem system;

    // 添加电影
    system.addMovie("Inception", 100);
    system.addMovie("The Dark Knight", 150);

    // 搜索电影
    system.searchMovie("Inception");

    // 选择座位并下订单
    system.bookTickets("Inception", 3);
    system.bookTickets("Inception", 5);

    // 支付订单
    system.payOrder();

    // 取消订单
    system.cancelOrder("Inception", 3);

    return 0;
}
相关推荐
京东零售技术40 分钟前
扛起技术大梁的零售校招生们 | 1024技术人特别篇
算法
爱coding的橙子1 小时前
每日算法刷题Day78:10.23:leetcode 一般树7道题,用时1h30min
算法·leetcode·深度优先
Swift社区1 小时前
LeetCode 403 - 青蛙过河
算法·leetcode·职场和发展
地平线开发者1 小时前
三种 Badcase 精度验证方案详解与 hbm_infer 部署实录
算法·自动驾驶
oioihoii1 小时前
深入理解 C++ 现代类型推导:从 auto 到 decltype 与完美转发
java·开发语言·c++
报错小能手1 小时前
项目——基于C/S架构的预约系统平台 (1)
开发语言·c++·笔记·学习·架构
papership1 小时前
【入门级-算法-5、数值处理算法:高精度的减法】
算法·1024程序员节
lingran__2 小时前
算法沉淀第十天(牛客2025秋季算法编程训练联赛2-基础组 和 奇怪的电梯)
c++·算法
DuHz2 小时前
基于MIMO FMCW雷达的二维角度分析多径抑制技术——论文阅读
论文阅读·物联网·算法·信息与通信·毫米波雷达
Dragon_D.2 小时前
排序算法大全——插入排序
算法·排序算法·c·学习方法