实验2 数组、指针与c++标准库

info.hpp

#ifndef INFO_HPP
#define INFO_HPP
#include<iostream>
#include<string>
#include<vector>
using namespace std;
class info
{
public:
        info(string m,string x,string p,int q):nickname(m),contact(x),city(p),n(q){}
        ~info(){}
        void print()
        {
            cout<<"称呼:      "<<nickname<<endl;
            cout<<"联系方式:  "<<contact<<endl;
            cout<<"所在城市:  "<<city<<endl;
            cout<<"预约人数:  "<<n<<endl; 
        }
private:    
        string nickname,contact,city;
        int n;
};
#endif

task5.cpp

#include"info.hpp"
#include<iostream>
#include<string>
#include<vector>
#include<iomanip>
int main()
{
    using namespace std;
    vector<info>audience_info_list;
    const int capacity=100;
    int count=0,n;                                   //count用于计数和capacity比较 
    string nickname,city,contact,choose;
    cout<<"录入信息: "<<endl<<endl;
    cout<<"称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数"<<endl;
    while(cin>>nickname>>contact>>city>>n&&count<=capacity)
    {
            
            if(count+n<=capacity)                    //之前的加现在的小于等于capacity 
            {
                    count+=n; 
                    info x(nickname,contact,city,n);
                    audience_info_list.push_back(x);        //录入信息 
            
            }
            else
            {
                cout<<"对不起,只剩"<<100-count<<"个位置." <<endl;
                cout<<"1.输入u,更新(update)预定信息"<<endl; 
                cout<<"2.输入q,退出预定"<<endl; 
                cout<<"你的选择:";
                cin>>choose;
                if(choose=="u")
                {
                    cout<<"称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数"<<endl;    //更新预定信息 
                }
                else if(choose=="q")
                {
                    cout<<endl; 
                    break;
                } 
            } 
    }
    cout<<"截至目前,一共有"<<count<<"位预定参加,预定听众信息如下:"<<endl;
    for(auto it=audience_info_list.begin();it!=audience_info_list.end();it++)
        (*it).print();
     
    


}

运行测试结果截图:

 

 textcoder.hpp

#ifndef TEXTCODER_HPP
#define TEXTCODER_HPP
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
class TextCoder
{
public:
        TextCoder(string m):text(m){}
        ~TextCoder(){}
        //加密 
        string encoder()
        {
                for(int i=0;i<text.length();i++)
                {
                        if(text[i]>='A'&&text[i]<='Z')
                            text[i]='A'+(text[i]-'A'+5)%26;
                        else if(text[i]>='a'&&text[i]<='z')text[i]='a'+(text[i]-'a'+5)%26;    
                
                }
            return text;
        
        }
         //解密 
        string decoder()
        {
                for(int i=0;i<text.length();i++)
                {
                        if(text[i]>='A'&&text[i]<='Z')
                                text[i]='A'+(text[i]-'A'+21)%26;
                        else if(text[i]>='a'&&text[i]<='z')  text[i]='a'+(text[i]-'a'+21)%26;
                }
            return text;
        }
private:
        string text;                        


};
#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 15:40  歧念  阅读(44)  评论(3)    收藏  举报