码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-09-21 23:49:11      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   for   文件   div   

本篇我们讨论一个小程序:实现电话薄简单功能。(一条语句最好一个作用)

问题描述 :

a) : 实现电话添加记录功能;(电话重复的视为同一人,不予增添);即电话号码唯一。

b) : 删除记录功能;(实现提醒功能:确认是否要真的删除)

c) : 查询记录功能;(按手机号码查询);

待优化功能:

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

2) :没有提供修改记录的功能;比如某人的电话号码或者住址改了。(先按照号码查询,然后按要求修改之即可。);

3) :每次需将改动的记录写回文件。writetofile();

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

 

头文件:

 1 //一条语句最多一个作用
 2 #include <iostream>
 3 #include <string>
 4 #include <vector>
 5 #include <stdio.h>
 6 #include <stdlib.h>
 7 #include <string.h>
 8 #include <fstream>
 9 #include <sstream>
10 #include <stdexcept>
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()const
19         {
20             return name_ ;
21         }
22 
23         int getNum()const
24         {
25             return num_;
26         }
27 
28         string getAddress()const
29         {
30             return address_ ;
31         }
32         
33         void showitem()
34         {
35             cout<< "姓名: " << name_ << endl;
36             cout<< "电话号码: "<<num_ << endl ;
37             cout <<"住址: "<< address_ << endl ;
38         }
39             
40     private:
41         string name_ ;
42         int num_ ;
43         string address_ ;
44 };

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

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


main函数:

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

 1 int main(int argc, const char *argv[])
 2 {
 3     vector<Item> 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<Item> &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<Item>::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<Item> &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<Item>::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<Item> &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<Item>::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")//是否确定要删除该item
21                 {   
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 }


 

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

标签:style   blog   color   io   os   ar   for   文件   div   

原文地址:http://www.cnblogs.com/xfxu/p/3984983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!