OPP实验四
任务2、
1【成绩存储在 Gradecale对象初始化时,调用基类构造函数产生的对象中】【都是通过基类的接口访问的成绩】【input 通过pushback() 接口存入】
2、【分母是人数,用来算均分 】【会有影响,影响除法的精度】【*1.0会将int转换成double,提高精度】
3、【缺少成绩的修改删除】
任务3、
1、【成绩存储在子类的grades对象中】【通过grades所属的vector类的接口访问】【调用的接口是属于grades自身的】
2、【实现需求的方式有很多种,要找到适合的方式】
任务4、
1、【下面的输入的开始不能是回车,丢掉前面的所有回车字符,知道第一个非回车开始录入】
2、【将上次输入的\n 吃掉,使得下面输入中不会出现这个字符】
任务5、
1 #include<iostream> 2 #include<string> 3 4 template<typename T> 5 class GameResourceManager 6 { 7 private: 8 T resource; 9 public: 10 GameResourceManager(T r):resource(r){} 11 T get(){return resource;} 12 void update(T r){ 13 resource+=r; 14 if(resource<0)resource=0; 15 } 16 17 };
任务6、
1 #include<iostream> 2 #include<string> 3 #include <iomanip> 4 using namespace std; 5 6 class info 7 { 8 private: 9 string nickname; 10 string contact; 11 string city; 12 int n; 13 public: 14 info(string nickname,string contact,string city,int i):nickname(nickname),contact(contact),city(city),n(i){ 15 } 16 void Display() 17 { 18 cout<<"------------------------------liveshow------------------------------"<<endl; 19 20 cout<<"名字: "<<nickname<<endl 21 <<"联系方式: "<<contact<<endl 22 <<"城市: "<<city<<endl 23 <<"人数: "<<n<<endl; 24 25 cout<<"------------------------------liveshow------------------------------"<<endl; 26 } 27 28 int Get_n(){return n;} 29 };
1 #include "expension.hpp" 2 #include <iostream> 3 #include<vector> 4 #include<limits> 5 #include<string> 6 using namespace std; 7 vector<info> Myinfo_Arry; 8 const int capacity=100; 9 10 void input_information(int& sumPeople_num) 11 { 12 string nickname,contact,city; int people_num=0; 13 cout<<"start input:"<<endl; 14 cout<<"昵称"<<setfill(' ')<<setw(20); 15 cout<<"联系方式"<<setw(20)<<setfill(' '); 16 cout<<"所在城市"<<setw(30)<<setfill(' '); 17 cout<<"预定参加人数"; 18 cout<<endl; 19 while(1) 20 { 21 cin>>nickname; 22 //检查是否退出 23 if(nickname=="q") 24 return; 25 26 cin.ignore(numeric_limits<streamsize>::max(),' '); 27 cin>>contact; 28 cin.ignore(numeric_limits<streamsize>::max(),' '); 29 cin>>city; 30 cin.ignore(numeric_limits<streamsize>::max(),' '); 31 cin>>people_num; 32 info t(nickname,contact,city,people_num);//存储信息 33 if(sumPeople_num+t.Get_n()>capacity) 34 { 35 cout<<"only "<<capacity-sumPeople_num<<" places left. input faulted"<<endl; 36 return; 37 } 38 sumPeople_num+=t.Get_n(); 39 Myinfo_Arry.push_back(t); 40 } 41 } 42 43 void DisplayInformation() 44 { 45 for(long long unsigned i=0;i<Myinfo_Arry.size();i++) 46 { 47 Myinfo_Arry[i].Display(); 48 } 49 } 50 int main() 51 { cout<<"Please input q to exit."<<endl; 52 cout<<"Please input u to update."<<endl; 53 int sumPeople_num=0; 54 input_information(sumPeople_num); 55 //cin.ignore(numeric_limits<streamsize>::max(),'\n'); 56 // cin.ignore(numeric_limits<streamsize>::max(),' '); 57 string command; 58 cin>>command; 59 if(command.compare("q")==0) 60 { 61 cout<<"remain number: "<<capacity-sumPeople_num<<endl; 62 DisplayInformation(); 63 return 0; 64 } 65 else if(command.compare("u")==0) 66 { 67 input_information(sumPeople_num); 68 } 69 DisplayInformation(); 70 return 0; 71 }
任务7、
设计了一个基类Account来描述共性,SavingsAccount和 creditAccount继承基类
原有的 record 和 error 成员函数的访问控制权限修改为 protected
deposit、withdraw、settle被放在了需要对应功能的类中
CreditAccount类中重载了Account类中的Show函数来适应本类的需要
【预期】简洁的操作,高效的性能,系统性的安全。
类的结构是很复杂的,这个复杂的结构导致在构建代码的时候,会出现各种各样的问题,也会有很多数据安全性的问题,值得我们思考。