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;
}
相关推荐
QT 小鲜肉9 分钟前
【Git、GitHub、Gitee】按功能分类汇总Git常用命令详解(超详细)
c语言·网络·c++·git·qt·gitee·github
派大星爱吃猫12 分钟前
C++中的inline函数(内联函数)
c++·inline·内联函数
清风wxy22 分钟前
Duilib_CEF桌面软件实战之Duilib编译与第一个界面程序
c++·笔记·ui·mfc
郝学胜-神的一滴23 分钟前
Linux下,获取子进程退出值和异常终止信号
linux·服务器·开发语言·c++·程序人生
AI科技星37 分钟前
张祥前统一场论动量公式P=m(C-V)误解解答
开发语言·数据结构·人工智能·经验分享·python·线性代数·算法
海琴烟Sunshine41 分钟前
leetcode 345. 反转字符串中的元音字母 python
python·算法·leetcode
notfindjob1 小时前
MFC动态加载图片
c++·mfc
CodeByV1 小时前
【C++】继承
开发语言·c++
geobuilding1 小时前
将大规模shp白模贴图转3dtiles倾斜摄影,并可单体化拾取建筑
算法·3d·智慧城市·数据可视化·贴图
jghhh011 小时前
基于高斯伪谱法的弹道优化方法及轨迹仿真计算
算法