本篇我们讨论⼀个⼩程序:实现电话薄简单功能。(⼀条语句最好⼀个作⽤)问题描述 :
a) : 实现电话添加记录功能;(电话重复的视为同⼀⼈,不予增添);即电话号码唯⼀。b) : 删除记录功能;(实现提醒功能:确认是否要真的删除)c) : 查询记录功能;(按⼿机号码查询);待优化功能:
1) :每次启动程序都为空。故可以先从⽂件读取若⼲项⾄vector中;readfile功能。
2) :没有提供修改记录的功能;⽐如某⼈的电话号码或者住址改了。(先按照号码查询,然后按要求修改之即可。);3) :每次需将改动的记录写回⽂件。writetofile();
4) : 每次add、search、delete都必须遍历容器vector。是否有⽅法改进? 头⽂件:
1 //⼀条语句最多⼀个作⽤ 2 #include 类: 1 class Item 2 { 3 public: 4 Item() 5 :name_(\"\"), num_(0), address_(\"\") 6 {} 7 Item(string name, int num, string address) 8 :name_(name), num_(num), address_(address) 9 {}10 11 void get(string name, int num, string address)12 { 13 name_ = name ;14 num_ = num ; 15 address_ = address ;16 }17 18 string getName()const19 { 20 return name_ ;21 }22 23 int getNum()const24 { 25 return num_;26 }27 28 string getAddress()const29 { 30 return address_ ;31 }32 33 void showitem()34 { 35 cout<< \"姓名: \" << name_ << endl;36 cout<< \"电话号码: \"< 43 string address_ ;44 }; 3个全局 函数声明 及其 实现功能: 1 void addItem( vector main函数: 功能:提供⼀个简单界⾯。不同数字实现不同功能。 1 int main(int argc, const char *argv[]) 2 { 3 vector 5 int cnt = 0 ;//标记输⼊错误总次数 6 while(1) 7 { 8 system(\"clear\"); 9 cout<< \"1、添加 2、查询 3、删除 0、退出\" << endl ;10 cin >> tmp ;11 switch(tmp)12 { 13 case 1: 14 addItem(vec); 15 break ;16 case 2: 17 searchItem(vec);18 break ;19 case 3: 20 delItem(vec);21 break ;22 case 0: 23 exit(0); 24 default: 25 if(cnt < 5)//输⼊错误五次,则退出程序26 { 27 cout << \"the number of your input is illegal, please input once more:\"<< endl; 28 cnt++ ; 29 cin >> tmp ;30 }else 31 exit(0);32 break; 33 }34 } 35 return 0;36 } additem: 1 void addItem( vector 3 char flag = 'y'; 4 string name, address ; 5 int num ; 6 Item person ; 7 while(flag == 'y') 8 { 9 // system(\"clear\"); 10 cout << \"please input name:\" << endl ;11 cin >> name ; 12 cout << \"please input telephone number:\" << endl ;13 cin >> num ;14 15 cout <<\"please input address:\" << endl ;16 cin >> address ;17 18 int tmp = 0 ;//标记查找成功没有 19 for(vector 23 if(num == it->getNum())//已经存在该item了。24 { 25 cout << \"the num is already exist!\" << endl ;26 tmp = 1 ;27 break ; 28 }29 } 30 if(tmp == 1)//如果已经存在,则不添加。31 goto done; 32 person.get(name, num, address);33 vec.push_back(person);34 35 person.showitem(); 36 cout << \"add success!\" << endl ;37 38 done: 39 cout << \"continue to add item or not?(y/n)\";40 41 cin >> flag ; // 只需要输⼊即可,while⾃⼰会判断条件。42 }43 } searchitem: 1 void searchItem( vector 3 char flag = 'y'; 4 int num ; 5 while(flag == 'y') 6 { 7 cout << \"please input search number:\" << endl ; 8 cin >> num ; 9 10 vector 13 if(num == it->getNum()) 14 { 15 cout << \"search success!\" << endl ;16 it->showitem();17 break ;18 } 19 it++ ;20 } 21 if(it == vec.end()) 22 cout << \"search failure!\" << endl ;23 cout << \"continue to search?(y/n)\";24 cin >> flag ;25 }26 } deleteitem: 1 void delItem( vector 3 int num ; 4 char flag ='y'; 5 while(flag == 'y') 6 { 7 cout << \"input the number that you want to delete:\" << endl ; 8 cin >> num ; 9 10 vector 13 if(num == it->getNum()) 14 { 15 it->showitem();16 string tmp ; 17 cout << \"Do you really want to delete this item?(yes/no)\" << endl ;18 19 cin >> tmp ; 20 if(tmp == \"yes\")//是否确定要删除该item21 { 22 it = vec.erase(it); 23 cout << \"delete success!\" << endl ;24 } 25 break ;26 } 27 it ++ ;28 } 29 if(it == vec.end())30 { 31 cout << \"The number is not exist!\" << endl ; 32 } 33 cout<< \"continue to delete?(y/n)\" << endl ; 34 35 cin >> flag ;36 }37 } 因篇幅问题不能全部显示,请点此查看更多更全内容