实验二

task5.hpp

#ifndef INFO_HPP
#define INFO_HPP
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
class Info
{
public:
    Info(string na, string co, string ci, int m)
    {
        nickname = na;
        contact = co;
        city = ci;
        n = m;
        sum = sum + m;
        a++;
    }
    Info();
    void print();
    static int get_sum() { return sum; }
    static int get_a() { return a; }
private:
    string nickname, contact, city;
    int n;
    static int sum, a;
};
int Info::sum = 0;
int Info::a = 0;
void Info::print()
{
    cout << setw(15) << setiosflags(ios::left) << "称呼:" << nickname << endl;
    cout << setw(15) << setiosflags(ios::left) << "联系方式:" << contact << endl;
    cout << setw(15) << setiosflags(ios::left) << "所在城市:" << city << endl;
    cout << setw(15) << setiosflags(ios::left) << "预订人数:" << n << endl;
}
#endif

task5.cpp

#include "info.hpp"
#include <iostream>
#include <vector>
#include <string>
int main()
{
    using namespace std;
    vector<Info> audience_info_list;
    const int capacity = 100;
    string s1, s2, s3;
    int o;
    cout << "录入信息:" << endl;
    cout << "称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数" << endl;
    while (cin >> s1)
    {
        cin >> s2;
        cin >> s3;
        cin >> o;
        if((Info::get_sum()+o)<= capacity)
            audience_info_list.push_back(Info(s1, s2, s3, o));
        else
        {
            cout << "对不起,只剩" << (capacity - Info::get_sum()) << "个位置。" << endl;
            cout << "1.输入u,更新(update)预订信息" << endl;
            cout << "2.输入q,退出预定" << endl;
            cout << "你的选择:";
            char ch;
            cin >> ch;
            if (ch == 'u')
            {
                cout << "称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数" << endl;
                continue;
            }
            else break;
        }
    }
    cout << "截止目前,一共有" << Info::get_sum() << "位听众参与预定。预定听众信息如下:" << endl;
    for (int i = 0; i < Info::get_a(); i++)
        audience_info_list[i].print();
    return 0;
}

运行截图:

 task6.hpp

#ifndef TEXTCODER_HPP
#define TEXTCODER_HPP
#include <iostream>
#include <string>
using namespace std;
class TextCoder
{
public: 
    TextCoder(string t);
    string encoder();
    string decoder();
private:
    string text;
};
TextCoder::TextCoder(string t)
{
    text = t;
}
string TextCoder::encoder()
{
    string s1 = text;
    int n = s1.length();
    for (int i = 0; i < n; i++)
    {
        if (s1[i] >= 'a' && s1[i] <= 'z')
        {
            if (s1[i] >= 'a' && s1[i] <= 'u')
                s1[i] = s1[i] + 5;
            else if (s1[i] == 'v') s1[i] = 'a';
            else if (s1[i] == 'w') s1[i] = 'b';
            else if (s1[i] == 'x') s1[i] = 'c';
            else if (s1[i] == 'y') s1[i] = 'd';
            else if (s1[i] == 'z') s1[i] = 'e';
        }
        else if (s1[i] >= 'A' && s1[i] <= 'Z')
        {
            if (s1[i] >= 'A' && s1[i] <= 'U')
                s1[i] = s1[i] + 5;
            else if (s1[i] == 'V') s1[i] = 'A';
            else if (s1[i] == 'W') s1[i] = 'B';
            else if (s1[i] == 'X') s1[i] = 'C';
            else if (s1[i] == 'Y') s1[i] = 'D';
            else if (s1[i] == 'Z') s1[i] = 'E';
        }
    }
    return s1;
}
string TextCoder::decoder()
{
    string s = text;
    int n = s.length();
    for (int i = 0; i < n; i++)
    {
        if (s[i] >= 'a' && s[i] <= 'z')
        {
            if (s[i] >= 'f' && s[i] <= 'z')
                s[i] = s[i] - 5;
            else if (s[i] == 'a') s[i] = 'v';
            else if (s[i] == 'b') s[i] = 'w';
            else if (s[i] == 'c') s[i] = 'x';
            else if (s[i] == 'd') s[i] = 'y';
            else if (s[i] == 'e') s[i] = 'z';
        }
        else if (s[i] >= 'A' && s[i] <= 'Z')
        {
            if (s[i] >= 'F' && s[i] <= 'Z')
                s[i] = s[i] - 5;
            else if (s[i] == 'A') s[i] = 'V';
            else if (s[i] == 'B') s[i] = 'W';
            else if (s[i] == 'C') s[i] = 'X';
            else if (s[i] == 'D') s[i] = 'Y';
            else if (s[i] == 'E') s[i] = 'Z';
        }
    }
    return s;
}
#endif

task6.cpp

#include "textcoder.hpp"
#include <iostream>
#include <string>
int main()
{
    using namespace std;
    string text, encoded_text, decoded_text;
    cout << "输入英文文本: ";
    while (getline(cin, text))
    {
        encoded_text = TextCoder(text).encoder(); // 这里使用的是临时无名对象
        cout << "加密后英文文本:\t" << encoded_text << endl;
        decoded_text = TextCoder(encoded_text).decoder(); // 这里使用的是临时无名对象
            cout << "解密后英文文本:\t" << decoded_text << endl;
        cout << "\n输入英文文本: ";
    }
}

运行截图:

 

 

posted @ 2021-10-30 20:35  Rwang0  阅读(44)  评论(3编辑  收藏  举报