您的当前位置:首页正文

C++学习之电话薄功能(类的简单应用)

来源:爱站旅游
导读C++学习之电话薄功能(类的简单应用)
C++学习之电话薄功能(类的简单应⽤)

本篇我们讨论⼀个⼩程序:实现电话薄简单功能。(⼀条语句最好⼀个作⽤)问题描述 :

a) : 实现电话添加记录功能;(电话重复的视为同⼀⼈,不予增添);即电话号码唯⼀。b) : 删除记录功能;(实现提醒功能:确认是否要真的删除)c) : 查询记录功能;(按⼿机号码查询);待优化功能:

1) :每次启动程序都为空。故可以先从⽂件读取若⼲项⾄vector中;readfile功能。

2) :没有提供修改记录的功能;⽐如某⼈的电话号码或者住址改了。(先按照号码查询,然后按要求修改之即可。);3) :每次需将改动的记录写回⽂件。writetofile();

4) : 每次add、search、delete都必须遍历容器vector。是否有⽅法改进? 头⽂件:

1 //⼀条语句最多⼀个作⽤ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 using namespace std;

类:

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<< \"电话号码: \"<41 string name_ ;42 int num_ ;

43 string address_ ;44 };

3个全局 函数声明 及其 实现功能:

1 void addItem( vector &vec);//实现连续添加(如果已存在,则略过)。2 void searchItem( vector &vec);//实现按号码查询。3 void delItem( vector &vec);//实现删除。

main函数:

功能:提供⼀个简单界⾯。不同数字实现不同功能。

1 int main(int argc, const char *argv[]) 2 {

3 vector vec ; 4 int tmp ;

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 &vec) 2 {

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::iterator it = vec.begin();20 it != vec.end();21 ++it)22 {

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 &vec) 2 {

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::iterator it = vec.begin();11 while(it != vec.end())12 {

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 &vec) 2 {

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::iterator it = vec.begin();11 while(it != vec.end())12 {

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 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top