实验任务三:
Employee.hpp:
#pragma once #include<iostream> #include<string> #include<iomanip> using std::string; using std::cout; using std::endl; using std::setfill; using std::setw; using std::left; using std::right; using std::to_string; struct Date { int year; int month; int day; }; class Employee { public: Employee(); Employee(string name0, double salary0, int y, int m, int d = 1); void set_info(string name0, double salary0, int y, int m, int d = 1); string get_name() const; double get_salary() const; void display_info() const; void update_salary(double s); void update_hire_date(int y, int m, int d); void raise_salary(double by_percent); public: static void display_count(); private: string id; string name; double salary; Date hire_date; public: static const string doc; private: static int count; }; const string Employee::doc{ "a simpe Employee class" }; int Employee::count = 0; Employee::Employee() :id{ to_string(count + 1) } { ++count; } Employee::Employee(string name0, double salary0, int y, int m, int d) : id{ to_string(count + 1) }, name{ name0 }, salary{ salary0 }, hire_date{y,m,d} {++count; } void Employee::set_info(string name0, double salary0, int y, int m, int d) { name = name0; salary = salary0; hire_date.year = y; hire_date.month = m; hire_date.day = d; } string Employee::get_name()const { return name; } double Employee::get_salary() const { return salary; } void Employee::display_info()const { cout << left << setw(15) << "id:" << id << endl; cout << setw(15) << "name:" << name << endl; cout << setw(15) << "salary:" << salary << endl; cout << setw(15) << "hire_date:" << hire_date.year << "-"; cout << right << setfill('0') << setw(2) << hire_date.month << "-" << setw(2) << hire_date.day; cout << setfill(' '); } void Employee::update_salary(double s) { salary = s; } void Employee::update_hire_date(int y, int m, int d) { hire_date.year = y; hire_date.month = m; hire_date.day = d; } void Employee::raise_salary(double by_percent) { double raise = salary * by_percent / 100; salary += raise; } void Employee::display_count() { cout << "there are" << count << "employees\n"; }
task3.cpp:
#include "Employee.hpp" #include <iostream> void test() { using std::cout; using std::endl; cout << Employee::doc << endl << endl; Employee employee1; employee1.set_info("Sam", 30000, 2015, 1, 6); employee1.update_hire_date(2017, 6, 30); employee1.update_salary(35000); employee1.display_info(); cout << endl << endl; Employee employee2{ "Tony", 20000, 2020, 3, 16 }; employee2.raise_salary(15); // Ìá³É15% employee2.display_info(); cout << endl << endl; Employee::display_count(); } int main() { test(); }
测试结果:
实验任务四:
Complex.hpp:
#pragma once #include<iostream> #include<cmath> using namespace std; class Complex { public: Complex(float r=0, float i = 0):real{r},imag{i}{} Complex(const Complex& c); ~Complex()=default; float get_real() const { return real; } float get_imag() const { return imag; } void show() const; Complex add(const Complex& c); friend Complex add(const Complex& c1, const Complex& c2); friend bool is_equal(const Complex& c3, const Complex& c4); friend float abs(Complex& c); private: float real, imag; }; Complex::Complex(const Complex& c) : real{ c.real }, imag{ c.imag }{} void Complex::show() const { if (imag > 0) cout << real << "+" << imag << "i"; else if (imag < 0) cout << real << imag << "i"; else cout << real; } Complex Complex::add(const Complex& c) { real += c.real, imag += c.imag; return Complex(real + c.real, imag + c.imag); } Complex add(const Complex& p1, const Complex& p2) { return Complex(p1.real + p2.real, p1.imag + p2.imag); } bool is_equal(const Complex& p3, const Complex& p4) { if (p3.real == p4.real && p3.imag == p4.imag) return true; else return false; } float abs(Complex& c) { return sqrt(c.real * c.real + c.imag * c.imag) ; }
task4.cpp:
#include "Complex.hpp" #include <iostream> void test() { using namespace std; Complex c1(3, -4); const Complex c2(4.5); Complex c3(c1); cout << "c1 = "; c1.show(); cout << endl; cout << "c2 = "; c2.show(); cout << endl; cout << "c2.imag = " << c2.get_imag() << endl; cout << "c3 = "; c3.show(); cout << endl; cout << "abs(c1) = "; cout << abs(c1) << endl; cout << boolalpha; cout << "c1 == c3 : " << is_equal(c1, c3) << endl; cout << "c1 == c2 : " << is_equal(c1, c2) << endl; Complex c4; c4 = add(c1, c2); cout << "c4 = c1 + c2 = "; c4.show(); cout << endl; c1.add(c2); cout << "c1 += c2, " << "c1 = "; c1.show(); cout << endl; } int main() { test(); }
测试结果:
Attention:将~Complex()改成~Complex()=default才运行成功.
实验任务五:
User.hpp:
#pragma once #include<iostream> #include<string> using namespace std; class User { private: string name, passwd, email,new_email,old_passwd,new_passwd; int n; static int count; public: User(string nam) { name = nam, passwd = "111111", email = " ";++count; } User(string nam, string pass , string em ) { name = nam, passwd = pass, email = em; ++count; } ~User() = default; void set_email() ; void change_passwd(); void print_info(); static void print_n(); }; int User::count = 0; void User::set_email() { cout << "Enter email address: " ; cin >> email; cout << "email is set successfully... " << endl; } void User::change_passwd() { cout << "Enter old passwd: " ; int i; cin >> old_passwd; for (i = 1;i <=3;++i) { if (old_passwd != passwd) { if (i < 3) { cout << "password input error. Please re-enter again: "; cin >> old_passwd; } else cout << "password input error. Please try after a whike." << endl; } else { cout << "Enter new passwd: "; cin >> new_passwd; passwd = new_passwd; cout << "new passwd is set successfully..." << endl; break; } } } void User::print_info() { cout << "name: " << name << endl; int len = size(passwd); cout << "passwd: "; while (len--)cout << '*'; cout << endl; cout << "email: " << email << endl; } void User::print_n() { cout << "there are " << count << " users." << endl; }
task5.cpp:
#include "User.hpp" #include <iostream> void test() { using std::cout; using std::endl; cout << "testing 1......\n"; User user1("Jonny", "92197", "[email protected]"); user1.print_info(); cout << endl << "testing 2......\n\n"; User user2("Leonard"); user2.change_passwd(); user2.set_email(); user2.print_info(); cout << endl; User::print_n(); } int main() { test(); }
测试结果1:
测试结果2:
标签:const,string,对象,void,int,Complex,实验,Employee From: https://www.cnblogs.com/z-zy/p/16800695.html