实验二
task5.hpp
#ifndef INFO_HPP #define INFO_HPP #include <iostream> #include <string> #include <iomanip> using namespace std; class Info { public: Info(string na, string co, string ci, int m) { nickname = na; contact = co; city = ci; n = m; sum = sum + m; a++; } Info(); void print(); static int get_sum() { return sum; } static int get_a() { return a; } private: string nickname, contact, city; int n; static int sum, a; }; int Info::sum = 0; int Info::a = 0; void Info::print() { cout << setw(15) << setiosflags(ios::left) << "称呼:" << nickname << endl; cout << setw(15) << setiosflags(ios::left) << "联系方式:" << contact << endl; cout << setw(15) << setiosflags(ios::left) << "所在城市:" << city << endl; cout << setw(15) << setiosflags(ios::left) << "预订人数:" << n << endl; } #endif
task5.cpp
#include "info.hpp" #include <iostream> #include <vector> #include <string> int main() { using namespace std; vector<Info> audience_info_list; const int capacity = 100; string s1, s2, s3; int o; cout << "录入信息:" << endl; cout << "称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数" << endl; while (cin >> s1) { cin >> s2; cin >> s3; cin >> o; if((Info::get_sum()+o)<= capacity) audience_info_list.push_back(Info(s1, s2, s3, o)); else { cout << "对不起,只剩" << (capacity - Info::get_sum()) << "个位置。" << endl; cout << "1.输入u,更新(update)预订信息" << endl; cout << "2.输入q,退出预定" << endl; cout << "你的选择:"; char ch; cin >> ch; if (ch == 'u') { cout << "称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数" << endl; continue; } else break; } } cout << "截止目前,一共有" << Info::get_sum() << "位听众参与预定。预定听众信息如下:" << endl; for (int i = 0; i < Info::get_a(); i++) audience_info_list[i].print(); return 0; }
运行截图:
task6.hpp
#ifndef TEXTCODER_HPP #define TEXTCODER_HPP #include <iostream> #include <string> using namespace std; class TextCoder { public: TextCoder(string t); string encoder(); string decoder(); private: string text; }; TextCoder::TextCoder(string t) { text = t; } string TextCoder::encoder() { string s1 = text; int n = s1.length(); for (int i = 0; i < n; i++) { if (s1[i] >= 'a' && s1[i] <= 'z') { if (s1[i] >= 'a' && s1[i] <= 'u') s1[i] = s1[i] + 5; else if (s1[i] == 'v') s1[i] = 'a'; else if (s1[i] == 'w') s1[i] = 'b'; else if (s1[i] == 'x') s1[i] = 'c'; else if (s1[i] == 'y') s1[i] = 'd'; else if (s1[i] == 'z') s1[i] = 'e'; } else if (s1[i] >= 'A' && s1[i] <= 'Z') { if (s1[i] >= 'A' && s1[i] <= 'U') s1[i] = s1[i] + 5; else if (s1[i] == 'V') s1[i] = 'A'; else if (s1[i] == 'W') s1[i] = 'B'; else if (s1[i] == 'X') s1[i] = 'C'; else if (s1[i] == 'Y') s1[i] = 'D'; else if (s1[i] == 'Z') s1[i] = 'E'; } } return s1; } string TextCoder::decoder() { string s = text; int n = s.length(); for (int i = 0; i < n; i++) { if (s[i] >= 'a' && s[i] <= 'z') { if (s[i] >= 'f' && s[i] <= 'z') s[i] = s[i] - 5; else if (s[i] == 'a') s[i] = 'v'; else if (s[i] == 'b') s[i] = 'w'; else if (s[i] == 'c') s[i] = 'x'; else if (s[i] == 'd') s[i] = 'y'; else if (s[i] == 'e') s[i] = 'z'; } else if (s[i] >= 'A' && s[i] <= 'Z') { if (s[i] >= 'F' && s[i] <= 'Z') s[i] = s[i] - 5; else if (s[i] == 'A') s[i] = 'V'; else if (s[i] == 'B') s[i] = 'W'; else if (s[i] == 'C') s[i] = 'X'; else if (s[i] == 'D') s[i] = 'Y'; else if (s[i] == 'E') s[i] = 'Z'; } } return s; } #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输入英文文本: "; } }
运行截图: