实验三
实验任务五
info.hpp
#pragma once
#include<bits/stdc++.h>
using namespace std;
class Info{
public:
Info(string nick0,string contact0,string city0,int num0);
void print()const;
private:
string nickname,contact,city;
int n;
};
Info::Info(string nick0,string contact0,string city0,int num0):nickname{nick0},contact{contact0},city{city0},n{num0}{};
void Info::print() const { cout << left << endl
<< setw(17) << "称呼:" << setw(17) << nickname
<< setw(17) << "\n联系方式:" << setw(17) << contact
<< setw(17) << "\n所在城市:" << setw(17) << city
<< setw(17) << "\n预定人数:" << setw(17) << n << endl;
}
task5.cpp
#include"info.hpp"
#include<bits/stdc++.h>
using namespace std;
int main(){
string nick0,contact0,city0;
const int capacity = 50;
char a;
int num=0,num0,num1;
cout << "录入信息:\n称呼/昵称 联系方式(邮箱/手机号) 所在城市 预定参加人数\n";
vector<Info> audience_info_list;
while(cin>>nick0>>contact0>>city0>>num0){
Info x(nick0,contact0,city0,num0);
audience_info_list.push_back(x);
num+=num0;
if(num<capacity)
cout<<"还有"<<capacity-num<<"个位置\n";
if(num>capacity){
cout<<"参加人数已达上限,请输入q退出预定,或输入u更新预定信息:";
cin>>a;
if(a=='q') break;
else if(a=='u'){
num-=num0;
top:
cout<<"仅剩"<<capacity-num<<"个位置\n";
cout<<"请更新信息:\n\n称呼/昵称 联系方式(邮箱/手机号) 所在城市 预定参加人数\n"<<endl;
cin>>nick0>>contact0>>city0>>num1;
Info x1(nick0,contact0,city0,num1);
audience_info_list.pop_back();
audience_info_list.push_back(x1);
num+=num1;
if(num>capacity){
cout<<"对不起,位置不足,请重新录入信息"<<endl;
num-=num1;
goto top;
}
cout<<"信息更新完毕,系统可继续录入信息。"<<endl;
cout<<"还有"<<capacity-num<<"个位置\n";
cout<<"录入信息:\n\n称呼/昵称 联系方式(邮箱/手机号) 所在城市 预定参加人数\n";
}
}
else if(num==capacity){cout<<"还有0个位置"<<endl;break; }
}
cout<<"截至目前,共有"<<num<<"位听众预定参加。预定听众信息如下:"<<endl;
for(auto &item:audience_info_list){
item.print();
}
}


实验任务六
textcoder.hpp
#pragma once
#include<bits/stdc++.h>
using namespace std;
class TextCoder{
public:
TextCoder(string text1):text{text1}{};
string get_ciphertext();
string get_deciphertext();
private:
void encoder(string &text);
void decoder(string &text);
string text;
};
string TextCoder::get_ciphertext(){
encoder(text);
return text;
}
string TextCoder::get_deciphertext(){
decoder(text);
return text;
}
void TextCoder::encoder(string &text){
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;//每个英文字母用其后的第5个英文字母替换
}
else if((text[i]>'u'&&text[i]<='z')||(text[i]>'U'&&text[i]<='z')){
text[i] = text[i] - 21;
}
}
}
void TextCoder::decoder(string &text){
for(int i=0;i<text.length();i++){
if((text[i]>='a'&&text[i]<'f')||(text[i]>='A'&&text[i]<'F')){
text[i] = text[i] + 21; //每个英文字母用其前的第5个英文字母替换
}
else if((text[i]>='f'&&text[i]<='z')||(text[i]>='F'&&text[i]<='Z')){
text[i] = text[i] - 5;
}
}
}
task6.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();
}

textcoder.hpp中,void成员函数对text作形参使用引用类型 属于改bug能改出来 ,一个注意点

浙公网安备 33010602011771号