C++学习之电话薄功能(类的简单应用)
2014-09-21 21:15
435 查看
本篇我们讨论一个小程序:实现电话薄简单功能。(一条语句最好一个作用)
问题描述 :
a) : 实现电话添加记录功能;(电话重复的视为同一人,不予增添);即电话号码唯一。
b) : 删除记录功能;(实现提醒功能:确认是否要真的删除)
c) : 查询记录功能;(按手机号码查询);
待优化功能:
1) :每次启动程序都为空。故可以先从文件读取若干项至vector中;readfile功能。
2) :没有提供修改记录的功能;比如某人的电话号码或者住址改了。(先按照号码查询,然后按要求修改之即可。);
3) :每次需将改动的记录写回文件。writetofile();
4) : 每次add、search、delete都必须遍历容器vector。是否有方法改进?
头文件:
类:
3个全局 函数声明 及其 实现功能:
main函数:
功能:提供一个简单界面。不同数字实现不同功能。
additem:
searchitem:
deleteitem:
问题描述 :
a) : 实现电话添加记录功能;(电话重复的视为同一人,不予增添);即电话号码唯一。
b) : 删除记录功能;(实现提醒功能:确认是否要真的删除)
c) : 查询记录功能;(按手机号码查询);
待优化功能:
1) :每次启动程序都为空。故可以先从文件读取若干项至vector中;readfile功能。
2) :没有提供修改记录的功能;比如某人的电话号码或者住址改了。(先按照号码查询,然后按要求修改之即可。);
3) :每次需将改动的记录写回文件。writetofile();
4) : 每次add、search、delete都必须遍历容器vector。是否有方法改进?
头文件:
//一条语句最多一个作用 #include <iostream> #include <string> #include <vector> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fstream> #include <sstream> #include <stdexcept> using namespace std;
类:
class Item { public: Item() :name_(""), num_(0), address_("") {} Item(string name, int num, string address) :name_(name), num_(num), address_(address) {} void get(string name, int num, string address) { name_ = name ; num_ = num ; address_ = address ; } string getName()const { return name_ ; } int getNum()const { return num_; } string getAddress()const { return address_ ; } void showitem() { cout<< "姓名: " << name_ << endl; cout<< "电话号码: "<<num_ << endl ; cout <<"住址: "<< address_ << endl ; } private: string name_ ; int num_ ; string address_ ; };
3个全局 函数声明 及其 实现功能:
void addItem( vector<Item> &vec);//实现连续添加(如果已存在,则略过)。 void searchItem( vector<Item> &vec);//实现按号码查询。 void delItem( vector<Item> &vec);//实现删除。
main函数:
功能:提供一个简单界面。不同数字实现不同功能。
int main(int argc, const char *argv[]) { vector<Item> vec ; int tmp ; int cnt = 0 ;//标记输入错误总次数 while(1) { system("clear"); cout<< "1、添加 2、查询 3、删除 0、退出" << endl ; cin >> tmp ; switch(tmp) { case 1: addItem(vec); break ; case 2: searchItem(vec); break ; case 3: delItem(vec); break ; case 0: exit(0); default: if(cnt < 5)//输入错误五次,则退出程序 { cout << "the number of your input is illegal, please input once more:"<< endl; cnt++ ; cin >> tmp ; }else exit(0); break; } } return 0; }
additem:
void addItem( vector<Item> &vec) { char flag = 'y'; string name, address ; int num ; Item person ; while(flag == 'y') { // system("clear"); cout << "please input name:" << endl ; cin >> name ; cout << "please input telephone number:" << endl ; cin >> num ; cout <<"please input address:" << endl ; cin >> address ; int tmp = 0 ;//标记查找成功没有 for(vector<Item>::iterator it = vec.begin(); it != vec.end(); ++it) { if(num == it->getNum())//已经存在该item了。 { cout << "the num is already exist!" << endl ; tmp = 1 ; break ; } } if(tmp == 1)//如果已经存在,则不添加。 goto done; person.get(name, num, address); vec.push_back(person); person.showitem(); cout << "add success!" << endl ; done: cout << "continue to add item or not?(y/n)"; cin >> flag ; // 只需要输入即可,while自己会判断条件。 } }
searchitem:
void searchItem( vector<Item> &vec) { char flag = 'y'; int num ; while(flag == 'y') { cout << "please input search number:" << endl ; cin >> num ; vector<Item>::iterator it = vec.begin(); while(it != vec.end()) { if(num == it->getNum()) { cout << "search success!" << endl ; it->showitem(); break ; } it++ ; } if(it == vec.end()) cout << "search failure!" << endl ; cout << "continue to search?(y/n)"; cin >> flag ; } }
deleteitem:
void delItem( vector<Item> &vec) { int num ; char flag ='y'; while(flag == 'y') { cout << "input the number that you want to delete:" << endl ; cin >> num ; vector<Item>::iterator it = vec.begin(); while(it != vec.end()) { if(num == it->getNum()) { it->showitem(); string tmp ; cout << "Do you really want to delete this item?(yes/no)" << endl ; cin >> tmp ; if(tmp == "yes")//是否确定要删除该item { it = vec.erase(it); cout << "delete success!" << endl ; } break ; } it ++ ; } if(it == vec.end()) { cout << "The number is not exist!" << endl ; } cout<< "continue to delete?(y/n)" << endl ; cin >> flag ; } }
相关文章推荐
- acl_cpp 简单实用、功能强大的C++网络应用与服务器框架库发布
- 菜鸟学习c++—实现系统权限管理功能(类的public和private应用)
- c++pirmer 学习笔记之指针简单应用。
- C++学习笔记--线程简单应用
- Bootstrap 栅格系统 学习总结 Bootstrap框架是如今最流行的前端框架之一,Bootstrap功能强大,简单易学,很符合实际应用场景。 只是Bootstrap的内容较多,新手
- .Net语言 APP开发平台——Smobiler学习日志:在手机应用开发中如何快速调用电话拨打功能
- 从零开始学习c++之程序计算的简单应用
- 数据库简单学习与应用
- datagrid的几点简单应用,功能包括radio的单选,checkbox的多选,鼠标移动到行上颜色变深,链接传递多参数等功能。这里radio和checkbox都使用的是HTML控件。
- C++成员函数指针的应用(学习收录)
- 开源C++应用服务器:CWSS功能介绍
- 学习使用J2EE Web应用的事件功能-Java基础-Java-编程开发
- 简单学习了解值类型和应用类型
- 学习使用J2EE Web应用的事件功能
- JavaScript 学习笔记3 CSS的ID、CLASS简单应用
- Nhibernate学习教程一 简单的应用
- C#学习:定时器的简单应用
- Symbian OS应用开发学习笔记之通讯录(电话薄Contacts)
- 简单的用 Java Socket 编写的 HTTP 服务器应用,帮助学习HTTP协议