实验2

#ifndef INFO_HPP
#define INFO_HPP
#include<iostream> 
#include<string>
#include<vector>
using namespace std;
class info{
    public:
        info(string a,string b,string c,int m):nickname(a),contact(b),city(c),n(m){
        }
        void print();
    private:
        string nickname,contact,city;
        int n;
};
void info::print() {
    cout<<"称呼:        "<<nickname<<endl;
    cout<<"联系方式:    "<<contact<<endl;
    cout<<"所在城市:    "<<city<<endl;
    cout<<"预定人数:    "<<n<<endl;
}
#endif
#include "info.hpp"
#include<iostream>
#include<vector>
#include<string>
int main()
{
   using namespace std;
   cout<<"录入信息"<<endl<<endl;
   cout<<"称呼/昵称,联系方式(邮箱或手机号),所在城市,预定参加人数"<<endl; 
   vector<info> audience_info_list;
   const int capacity=100;
   int i=0, k=0,h;
   string s1,s2,s3; int d;
   while ((cin>>s1)&&(cin>>s2)&&(cin>>s3)&&(cin>>d))
   {
       audience_info_list.push_back(info(s1,s2,s3,d));
       k=k+d;
       if(k>=100)
       {
             h=100-(k-d); 
             cout<<"对不起,只剩"<<h<<"个座位."<<endl;
             break;
       }
       i++;
   }
   if(k<100)
   {
         int j;
         cout<<"截至目前,一共有"<<k<<"位听众预定参加。预定观众信息如下"<<endl;
      for(j=0;j<i;j++)
      {
          audience_info_list.at(j).print();
      }      
   }
   else
   {
         cout<<"1.输入u,更新(update)预定信息"<<endl;
      cout<<"2.输入q,退出预定"<<endl;
      string z;
      cout<<"你的选择:"; cin>>z;
      cout<<endl<<"截至目前,一共有"<<(k-d)<<"位听众预定参加。预定观众信息如下"<<endl;
      for(int j=0;j<i;j++)
      {
          audience_info_list[j].print();
      }       
   } 
   
}
   

 

#ifndef TEXTCODER_HPP
#define TEXTCODER_HPP
#include<iostream>
#include<string>
using namespace std;
class TextCoder{
    public:
        TextCoder(string a):text(a){
        }
        string encoder();
        string decoder();
    private:
        string text;
}; 
string TextCoder::encoder() 
{
    for(int i=0;i<text.length();i++)
    {
        if((text[i]>='a'&&text[i]<='u')||(text[i]>='A'&&text[i]<='U'))
        text[i]=text[i]+5;
        else if((text[i]>='v'&&text[i]<='z')||(text[i]>='V'&&text[i]<='Z'))
        text[i]=text[i]-21; 
    }
    return text; 
}
string TextCoder::decoder() 
{
    for(int i=0;i<text.length();i++)
    {
        if((text[i]>='f'&&text[i]<='z')||(text[i]>='F'&&text[i]<='Z'))
        text[i]=text[i]-5;
        else if((text[i]>='a'&&text[i]<='e')||(text[i]>='A'&&text[i]<='E')) 
        text[i]=text[i]+21;
    }
    return text; 
}
#endif
#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输入英文文本: ";
    }
}

 

此次实验,我学习到了许多string类的一些成员函数的用法,例如getline等,也对vector有了新的的认识,对push_back用法影响深刻。 

posted @ 2021-10-26 18:15  姜振晖  阅读(26)  评论(0)    收藏  举报