实验四 现代C++标准库与类模板

发布时间 2023-11-29 21:52:08作者: PerfectAllKill

task5

textcoder.hpp

#include<iostream>
#include<string>

using std::string;

class TextCoder {
    private:
        string text;
        void encoder();
        void decoder();
    public:
        TextCoder(string &str);
        TextCoder(const TextCoder &t);
        string get_ciphertext();
        string get_deciphertext();
};
TextCoder::TextCoder(string &str):text{str} {
}
TextCoder::TextCoder(const TextCoder &t):text{t.text} {
}
void TextCoder::encoder() {
    for (auto &i : text) {
        i=i+7;
    }
}
void TextCoder::decoder() {
    for (auto &i : text) {
        i=i-7;
    }

}
string TextCoder::get_ciphertext() {
    encoder();
    return text;
}
string TextCoder::get_deciphertext() {
    decoder();
    return text;
}
View Code

task5.cpp

#include "textcoder.hpp"
#include <iostream>
#include <string>

void test() {
    using namespace std;

    string text, encoded_text, decoded_text;

    cout << "输入英文文本: ";
    while (getline(cin, text)) {
        encoded_text = TextCoder(text).get_ciphertext();  // 这里使用的是临时无名对象
        cout << "加密后英文文本:\t" << encoded_text << endl;

        decoded_text = TextCoder(encoded_text).get_deciphertext(); // 这里使用的是临时无名对象
        cout << "解密后英文文本:\t" << decoded_text << endl;
        cout << "\n输入英文文本: ";
    }
}

int main() {  
    test(); 
}
View Code

实验结果

task6

info.hpp

#include<iostream>
#include<string>
#include<vector>
using namespace std;

class info{
private:
    string nickname;
    string contact;
    string city;
    int n;
public:
    info(string n1,string c,string city1,int n2){
        nickname=n1;
        contact=c;
        city=city1;
        n=n2;
        
    }
    void print(){
    cout<<"昵称:\t\t"<<nickname<<endl;
    cout<<"联系方式:\t"<<contact<<endl;
    cout<<"所在城市:\t"<<city<<endl;
    cout<<"预定人数:\t"<<n<<endl;
    }
};
 
View Code

task6.cpp

#include <iostream>
#include <string>
#include <vector>
#include"info.hpp"

using namespace std;

int main(){
    const int capacity=100;
    vector<info> audience_info_list;
    string nickname, contact, city;     
    int n;
    vector<info> &i = audience_info_list;
    int sum=0;
    cout << "录入信息:\n\n";
       cout << "昵称\t\t";
    cout << "联系方式(邮箱/手机号)\t\t";
       cout << "所在城市\t";
      cout << "预定人数" << endl;
    while(cin>>nickname >> contact >> city >> n){
        
        if(sum+n<=capacity){
            info a(nickname,contact,city,n);
            i.push_back(a);
            sum +=n;
        }
        else{cout << "对不起,只剩" << capacity - sum << "个位置。\n";
           cout << "1.输入u,更新(updata)预定信息" << endl;
            cout << "2.输入q,退出预定" << endl;
             cout << "你的选择:";
 
             char c;
             cin >> c;
            if (c == 'q') break;
            else if (c == 'u') continue;
               else break;
       }
       if (sum == capacity) break;
   }
       cout << endl;

    cout << "截至目前,一共有" << sum << "位听众预定参加。";
    if (sum != 0) {
        cout << "预定听众信息如下:" << endl;
        for (int k= 0; k< i.size(); k++) {
         i[k].print();
            cout << endl;
        }
}
}
View Code

实验结果