C++实现通讯信息管理系统
通讯信息管理系统
可以实现通讯信息的增加,浏览,删除,修改,查询,保存和读取功能。该系统还限制了通讯信息的条数(limit变量来限制)
文件放置结构:
具体实现代码如下:
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<cstring>
using namespace std;
void caidan();//菜单函数,实现菜单的显示
static int n=0; //记录输入的数据的个数
#define limit 10 //通讯信息条数只能是最多为limit条。
class Information
{
public:
struct xinxi
{
int id; //编号顺序
char name[20];
char num[11];
char type;
char mail[20];
}xx;
void zengInformation(); //增加信息; int cc(char na[]); //看输入的名字是不是重复;
};
void Information::zengInformation()
{
cin>>xx.name>>xx.num>>xx.type>>xx.mail;
}
int Information::cc(char na[])
{
if(strcmp(na,xx.name)==0)
return 1;
else return 0;
}
Information B[10];
class PP:public Information //对信息进行排序,并且写进文件,打开文件;
{
public:
void searchInformation1(char nu[]);//根据电话号码查找联系人;
void searchInformation2(char na[]);//根据姓名查找联系人;
void xiuInformation(char na[]);//修改功能;
void baocun(); //实现保存功能;
void inputfile(); //增加的信息写入文件
void outfile(); //打开文件,显示信息
void display(); //浏览功能,显示信息;
void shanInformation(); //删除功能;
};
void PP::searchInformation1(char nu[])
{
int i;
if(n==0)
{
cout<<"查无此人"<<endl;
}else
{
for(i=0;i<n;i++)
{
if(strcmp(nu,B[i].xx.num)==0)
{ cout<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
break;
}
else if(strcmp(nu,B[i].xx.num)!=0 && i==n-1)
{
cout<<"查无此人"<<endl;
break;
} } } }
void PP::searchInformation2(char na[])
{
int i;
if(n==0)
{
cout<<"查无此人"<<endl;
}else
{
for(i=0;i<n;i++)
{
if(strcmp(na,B[i].xx.name)==0)
{ cout<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
break;
}
else if(strcmp(na,B[i].xx.name)!=0 && i==n-1)
{
cout<<"查无此人"<<endl;
break;
} } } }
void PP::xiuInformation(char na[])
{
if(n==0)
{
cout<<"查无此人"<<endl;
}
else
{
for(int i=0;i<n;i++)
{
if(strcmp(na,B[i].xx.name)==0)
{
int a;
cout<<"输入你要修改哪一项(1.姓名 2.电话号码 3.类型 4.电子邮件)"<<endl;
cin>>a;
switch(a)
{
case 1:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.name;break;
case 2:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.num;break;
case 3:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.type;break;
case 4:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.mail;break;
}
break;
}
if((i==n-1 && strcmp(na,B[i].xx.name)!=0))
cout<<"查无此人"<<endl;
}
fstream f1("Information.dat");
ofstream f2("tmp.dat"); for(int i2=0;i2<n;i2++)
{
f2<<B[i2].xx.id<<" "<<B[i2].xx.name<<" "<<B[i2].xx.num<<" "<<B[i2].xx.type<<" "<<B[i2].xx.mail<<endl;
}
f1.close();
f2.close();
remove("Information.dat");
rename("tmp.dat","Information.dat");
} } void PP::baocun()
{ ofstream f2("save_Information.dat");
f2.close();
remove("save_Information.dat");
ofstream f3("save_Information.dat"); for(int i=0;i<n;i++)
{
f3<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
}
f3.close();
}
void PP::inputfile()
{
ofstream outfile("Information.dat"); if(!outfile){
cout << "Unable to open otfile";
exit(1); // terminate with error } cout<<"输入联系人信息:姓名、电话号码、类型(A.同事 B.朋友 C.家庭)、电子邮件"<<endl;
for(int i=n;;i++)
{
if(i==limit)
{
cout<<"存储空间已满,可选择删除数据再进行输入"<<endl;
break;
}
B[i].zengInformation();
for(int j=0;j<n;j++)
{
if(B[i].cc(B[j].xx.name))
{
cout<<"数据录入重复"<<endl;
i=i-1;
break;
}
} n++; B[i].xx.id=n;
outfile<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
char q;
cout<<"选择是否继续输入(y/n)"<<endl;
cin>>q;
if(q=='n')
break;
if(q=='y')
continue; }
outfile.close();
}
void PP::outfile()
{
fstream Myfile("Information.dat");
if(!Myfile) //判断是否成功打开文件
{
cerr<<"open error!"<<endl;
abort();
}
string temp;
while(getline(Myfile,temp))
{
cout<<temp<<endl;
}
Myfile.close(); }
void PP::display()
{
cout<<"联系人信息如下:"<<endl;
for(int i=0;i<n;i++)
{
cout<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
}
}
void PP::shanInformation()
{
char na[20];
cout<<"输入你要删除的人的名字"<<endl;
cin>>na;
int j;
for(int i=0;i<n;i++)
{
if(strcmp(na,B[i].xx.name)==0)
{
j=i;
break;
}
} for(int i1=j;i1<n-1;i1++)
{
B[i1]=B[i1+1];
B[i1].xx.id=i1;
}
n--;
fstream Myfile("Information.dat");
ofstream f2("tmp2.dat"); for(int i3=0;i3<n;i3++)
{
f2<<B[i3].xx.id<<" "<<B[i3].xx.name<<" "<<B[i3].xx.num<<" "<<B[i3].xx.type<<" "<<B[i3].xx.mail<<endl;
}
Myfile.close();
f2.close();
remove("Information.dat");
rename("tmp2.dat","Information.dat");
}
void caidan(PP p)
{
cout<<"****菜单****"<<endl;
cout<<"1.增加功能"<<endl;
cout<<"2.浏览功能"<<endl;
cout<<"3.查询功能"<<endl;
cout<<"4.修改功能"<<endl;
cout<<"5.删除功能"<<endl;
cout<<"6.保存功能"<<endl;
cout<<"7.读取功能"<<endl;
int q;
cout<<"输入你要选择的功能:"<<endl;
cin>>q;
switch(q)
{
case 1:
p.inputfile();
break;
case 2:p.display();break;
case 3:{cout<<"输入你要按号码(h)查找还是按姓名(m)查找:"<<endl;
char z;
cin>>z;
if(z=='h')
{
char h[11];
cout<<"输入你要查找的号码:"<<endl;
cin>>h;
p.searchInformation1(h);
}
if(z=='m')
{
char m[20];
cout<<"输入你要查找的姓名:"<<endl;
cin>>m;
p.searchInformation2(m);
}
break;}
case 4:{
char m[20];
cout<<"输入你要修改的联系人的姓名:"<<endl;
cin>>m;
p.xiuInformation(m);break;
}
case 5:p.shanInformation();break;
case 6:p.baocun();break;
case 7:p.outfile();break;
}
}
int main()
{
PP P;
char Q;
cout<<"********欢迎使用本系统********"<<endl;
fstream f1("Information.dat");
f1.clear();
f1.close();
for(int i=0;;i++)
{
caidan(P);
cout<<"请问是否(y/n)要继续使用菜单选择功能?"<<endl;
cin>>Q;
if(Q=='y')
continue;
if(Q=='n')
break;
} return 0;
}
C++实现通讯信息管理系统的更多相关文章
- Anynote 基于ExtJS多用户个人信息管理系统
Anynote——个人信息管理系统 —–主要用于学习交流—– 源码下载:https://git.oschina.net/xiyt/Anynote.git 一.系统说明 Anynote是一个基于extj ...
- 基于数据库MySQL的简易学生信息管理系统
通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...
- C++ 简单的学生信息管理系统
// // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...
- PHP基础示例:商品信息管理系统v1.1[转]
实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图 ...
- .NET破解之轻量万能自定义信息管理系统
一般敢说万能的莫非真有两把刷子.今天来破解试试,看效果好用不. 下载:http://down.chinaz.com/soft/36780.htm 补丁: http://www.t00y.com/fil ...
- Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)
1. PHP 连接 Redis 访问 redis 官方网站的 client 栏目:http://www.redis.io/clients#php,可以获取 redis 的 php 扩展. 其中 php ...
- 学生信息管理系统v1.0
昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...
- Java 实现学生信息管理系统
编写一个简单的学生管理信息系统. 在oracle中设计一张学生表,以学号作为关键字. 其他学生信息有:姓名.手机号. 在进入系统时,显示如下菜单: ************************** ...
- 学生信息管理系统应用ios源码iPad版
学生信息管理系统应用iPad版,该应用源码比较完整的,而且也很详细,这也是一款学校用的学生和老师管理系统,里面涉及到了很多ipad常用的控件,操作和数据存储. <ignore_js_op> ...
随机推荐
- SpringBoot优化内嵌的Tomcat ---设置MaxConnections
使用kill -9杀掉springboot应用后,立马java -jar重启,会报错,需要等待一段时间才能启动成功,报错的原因是:/tmp/tomcat-docbase.474979491043437 ...
- spring 4.0下集成webservice
该教程使用的项目可参见: Intellij Idea下搭建基于Spring+SpringMvc+MyBatis的WebApi接口架构 具体源码请参见GitHub: https://github.com ...
- 页面livereload width grunt
step-1. 安装node 环境 step-2. npm install grunt-cli \ grunt http://www.gruntjs.net/docs/getting-sta ...
- pythonl学习笔记——爬虫的基本常识
1 robots协议 Robots协议(也称为爬虫协议.机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可 ...
- iOS8开发之iOS8的UIAlertController
在iOS8之前用UIActionSheet和UIAlertView来提供button选择和提示性信息,比方UIActionSheet能够这样写: UIActionSheet *actionSheet ...
- jquery 事件注冊 与反复事件处理
<!doctype html> <html lang="us"> <head> <meta charset="utf-8&quo ...
- ISCC2014-reverse
这是我做reverse的题解.在咱逆向之路上的mark一下,,水平有限,大牛见笑. 题目及题解链接:http://pan.baidu.com/s/1gd3k2RL 宗女齐姜 果然是仅仅有50分的难度, ...
- ASP.NET Helper
- shell教程一:字符串操作
一:Linux shell字符串截取与拼接 假设有变量 var=http://www.linuxidc.com/123.htm 1 # 号截取,删除左边字符,保留右边字符. echo ${var#* ...
- AngularJS 使用 UI Router 实现表单向导
Today we will be using AngularJS and the great UI Router and the Angular ngAnimate module to create ...