实验3

实验任务5

Info.hpp

#include<iostream>
using namespace std;
class Info{
    public:
        Info()=default;
    Info(string name0,string email0,string city0,int n0):nickname(name0),contact(email0),city(city0),n(n0){    }
    void print(){cout<<"昵称:"<<nickname<<endl;
    cout<<"联系方式:"<<contact<<endl;
    cout<<"所在城市:"<<city<<endl;
    cout<<"预定人数:"<<n<<endl;
    cout<<endl;}    
    static int num;
    private:
        string nickname,contact,city;
int n;
};
 int Info:: num =0;

cpp

#include"info.hpp"
#include<iostream>
#include<vector>
#include<string>
#include<iomanip>
using namespace std;
int main(){
    string s1,s2,s3;
    const int n=100;
    char a;
    int n1=0,n2,n3;
    vector <Info> audience_info_list;
    cout<<"录入信息:"<<endl<<endl;
    cout<<"昵称      "<<"联系方式(邮箱/手机号)     "<<"城市          "<<"参加人数       "<<endl;
    while(Info::num<=n){
        cin>>s1>>s2>>s3>>n1;
        Info f1(s1,s2,s3,n1);
        audience_info_list.push_back(f1);
        Info::num=Info::num+n1;
        if(Info::num>n){
            n2=n-(Info::num-n1);
            cout<<"对不起,只剩"<<n2<<"个位置"<<endl;
            cout<<"1.输入u,更新(update)预定信息"<<endl;
            cout<<"2.输入q,推出预定"<<endl;
            cout<<"你的选择:";
            cin>>a;
            if(a=='q'){
                Info::num=Info::num-n1;
                break;
            }
            else if(a=='u'){
                Info::num=Info::num-n1;
                continue;
            }
            else
            cout<<"输入错误,请重新输入"<<endl;
        }
    }
    cout<<"截至目前,一共有"<<Info::num<<"位听众预定参加。预定听众信息如下:"<<endl;
    for(n3=0;n3<audience_info_list.size();n3++)
    audience_info_list[n3].print();    
}

 

 

 

 

实验任务6

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

using namespace std;

class TextCoder{
public:
    TextCoder(string text);
    ~TextCoder()=default;
    
    string get_ciphertext();
    string get_deciphertext();
    
private:
    string text;
    void encoder();
    void decoder(); 
};

TextCoder::TextCoder(string text):text{text}{}

void TextCoder::encoder(){
    for(int i=0;i<text.length();i++)
    {
        if((text[i]>='f'&&text[i]<='z')||(text[i]>='F'&&text[i]<='Z'))
        {
            text[i]-=5;
        }
        else if((text[i]>='a'&&text[i]<='e')||(text[i]>='A'&&text[i]<='E'))
        {
            text[i]+=21;
        }
    }
}

void TextCoder::decoder()
{
    for(int i=0;i<text.length();i++)
    {
        if((text[i]>='a'&&text[i]<='u')||(text[i]>='A'&&text[i]<='U'))
        {
            text[i]+=5;
        }
        else if((text[i]>='V'&&text[i]<='Z')||(text[i]>='v'&&text[i]<='z'))
        {
            text[i]-=21;
        }
    }
}

string TextCoder::get_ciphertext(){
    encoder();
    return text;
}

string TextCoder::get_deciphertext(){
    decoder();
    return text;
}

 

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(); 
}

 

posted @ 2022-10-25 21:41  魏泽炜  阅读(6)  评论(0)    收藏  举报