课程设计c++手机通讯录
来源:互联网 发布:大学access数据库作业 编辑:程序博客网 时间:2024/04/26 14:57
此程序即使使用链表完成简单功能,实现插入删除查找编辑等功能!
使用知识即为c语言课本指针部分,或者说是数据结构链表基本操作部分!
#include<stdio.h>
#include<iostream>
#include<iomanip>//控制输出格式
#include<fstream>
#include<string>
#include<conio.h>
#include<windows.h>
#include<malloc.h>
#define FILE "businesscard.txt"
using namespace std;
class businesscard
{
public:
string name;
string mobilenumber;
string birthday;
string telephonenumber;
string sex;
string address;
string email;
string relationship;
public:
//函数声明
void insert();
void edit();
struct tongxunlu* deletet();
void query();
void show();
void save();
friend istream & operator>>(istream &input,businesscard &card);
friend ostream & operator<<(ostream &output,businesscard &card);
};
istream & operator>>(istream &input,businesscard &card)
{
input>>card.name>>card.mobilenumber>>card.birthday>>card.telephonenumber>>
card.sex>>card.address>>card.email>>card.relationship;
return input;
}
ostream & operator<<(ostream &output,businesscard &card)
{
output<<card.name<<" "<<card.mobilenumber<<" "<<card.birthday<<" "<<
card.telephonenumber<<" "<<card.sex<<" "<<card.address<<" "<<card.email
<<" "<<card.relationship;
return output;
}
struct tongxunlu
{
businesscard card;
tongxunlu *next;
};
//新建功能
void businesscard::insert()
{
// FILE*fp;
//if((fp=fopen(FILE,"r"))==NULL)
//{
// cout<<"cannot open the file"<<endl;
// exit(0);
//}
// cout<<" 输入姓名生日等信息"<<endl;
// string sign;
//cout<<" 输入需要新建的联系人姓名"<<endl;
//cin>>sign;
//fscanf(fp,"%s",&temp);
//if(temp!=sign)
ifstream fin; //建立文件流对象
fin.open(FILE); //在适当时候打开
cout<<" 输入姓名生日等信息"<<endl;
string sign;
cout<<" 输入需要新建的联系人姓名"<<endl;
cin>>sign;
if(fin) //如果文件不为空
while(!fin.eof()) //当文件未到末尾时
{
fin>>name; //从文件中读入name
if(name==sign) //如果输入的sign在文件中存在,跳出
break;
//fclose(fp);n
}
fin.close(); //关闭文件
if(name!=sign) //如果联系人不存在
{
cout<<"此联系人不存在,按任意键将其保存在通讯录中"<<endl;
cout<<"输入姓名"<<endl;
cin>>name; //姓名
cout<<"输入移动电话 "<<endl;
cin>>mobilenumber; // 移动电话
cout<<"输入生日"<<endl;
cin>>birthday; //生日
cout<<"输入电话号码 "<<endl;
cin>>telephonenumber;//电话号码
cout<<"性别"<<endl;
cin>>sex; //性别
cout<<"地址"<<endl;
cin>>address; //地址
cout<<"电子邮箱"<<endl;
cin>>email; //电子邮箱
cout<<"关系"<<endl;
cin>>relationship; //关系
cout<<"添加联系人成功,任意键返回主页面"<<endl;
ofstream fout(FILE,ios::app); //追加方式写入文件中
fout.setf(ios::left); //设置输出格式状态为左对齐
fout<<setw(11)<<name<<setw(14)<<mobilenumber<<setw(12)<<birthday<<setw(14)<<
telephonenumber<<setw(7)<<sex<<setw(8)<<address<<setw(22)<<email<<setw(4)
<<relationship<<endl;//控制输出格式,不足用空格补位
fout.unsetf(ios::left); // 终止已设置的输出格式状态
fout.close(); //关闭文件
}
else
{
cout<<"此联系人已存在"<<endl;
}
}
//分类保存
//根据分类(朋友,亲人,同事,同学)新建
void businesscard::save()
{
fstream fin;
fin.open(FILE);
cout<<"选择您需要新建的分类关系"<<endl;
cout<<"1 朋友"<<endl;
cout<<"2 亲人"<<endl;
cout<<"3 同事"<<endl;
cout<<"4 同学"<<endl;
int e;
cin>>e;
switch(e)
{
case(1):
{
cout<<"输入姓名"<<endl;
cin>>name; //姓名
cout<<"输入移动电话 "<<endl;
cin>>mobilenumber; // 移动电话
cout<<"输入生日"<<endl;
cin>>birthday; //生日
cout<<"输入电话号码 "<<endl;
cin>>telephonenumber;//电话号码
cout<<"性别"<<endl;
cin>>sex; //性别
cout<<"地址"<<endl;
cin>>address; //地址
cout<<"电子邮箱"<<endl;
cin>>email; //电子邮箱
relationship="朋友"; //关系为朋友
cout<<"添加成功,任意键返回主页面"<<endl;
} break;
case(2):
{
cout<<"输入姓名"<<endl;
cin>>name; //姓名
cout<<"输入移动电话 "<<endl;
cin>>mobilenumber; // 移动电话
cout<<"输入生日"<<endl;
cin>>birthday; //生日
cout<<"输入电话号码 "<<endl;
cin>>telephonenumber;//电话号码
cout<<"性别"<<endl;
cin>>sex; //性别
cout<<"地址"<<endl;
cin>>address; //地址
cout<<"电子邮箱"<<endl;
cin>>email; //电子邮箱
relationship="亲人"; //关系为亲人
cout<<"添加成功,任意键返回主页面"<<endl;
} break;
case(3):
{
cout<<"输入姓名"<<endl;
cin>>name; //姓名
cout<<"输入移动电话 "<<endl;
cin>>mobilenumber; // 移动电话
cout<<"输入生日"<<endl;
cin>>birthday; //生日
cout<<"输入电话号码 "<<endl;
cin>>telephonenumber;//电话号码
cout<<"性别"<<endl;
cin>>sex; //性别
cout<<"地址"<<endl;
cin>>address; //地址
cout<<"电子邮箱"<<endl;
cin>>email; //电子邮箱
relationship="同事"; //关系为同事
cout<<"添加成功,任意键返回主页面"<<endl;
} break;
case(4):
{
cout<<"输入姓名"<<endl;
cin>>name; //姓名
cout<<"输入移动电话 "<<endl;
cin>>mobilenumber; // 移动电话
cout<<"输入生日"<<endl;
cin>>birthday; //生日
cout<<"输入电话号码 "<<endl;
cin>>telephonenumber;//电话号码
cout<<"性别"<<endl;
cin>>sex; //性别
cout<<"地址"<<endl;
cin>>address; //地址
cout<<"电子邮箱"<<endl;
cin>>email; //电子邮箱
relationship="同学"; //关系为同学
cout<<"添加成功,任意键返回主页面"<<endl;
} break;
default:cout<<"此分组不存在"<<endl;break;
}
ofstream fout(FILE,ios::app);
fout.setf(ios::left);
fout<<endl;
fout<<setw(11)<<name<<setw(14)<<mobilenumber<<setw(12)<<birthday<<setw(14)<<
telephonenumber<<setw(7)<<sex<<setw(8)<<address<<setw(22)<<email<<setw(4)
<<relationship<<endl;//控制输出格式,不足用空格补位
fout.unsetf(ios::left);
fout.close();
}
//创建链表
struct tongxunlu*creat()
{
struct tongxunlu *head;
struct tongxunlu *p1,*p2;
head=p1=p2=new tongxunlu;//申请结新点
p1->next=NULL;//将新结点的指针置空
ifstream fin(FILE);//打开文件
if(fin)
while(!fin.eof()) //当文件未到末尾时
{
fin>>p1->card; //为新结点赋值
p1->next=NULL; // 将新结点指针置空
if(p1!=head)
p2->next=p1;//非空表,链接到表尾
p2=p1;
p1=new tongxunlu; //申请下一个新结点
}
p1=head;
while(p1!=NULL)
{
// cout<<p1->card;若添加此句,会显示所有联系人信息
p1=p1->next;
}
return head;
}
//删除功能
struct tongxunlu* businesscard::deletet()
{
cout<<"欢迎进入删除选项"<<endl;
cout<<"选择查找方式"<<endl;
cout<<"1,姓名;2,电话号码;3,移动电话;"<<endl;
int e;
cin>>e;
struct tongxunlu*head=creat();
//ifstream fin;
//fin.open(FILE);
struct tongxunlu*p1,*p2;
p1=p2=head;
if(1==e) //按姓名查找并删除
{
cout<<"输入需要删除的联系人姓名"<<endl;
string sign;
cin>>sign;
if(head==NULL) //链表为空
cout<<"list is null"<<endl;
else //非空
{
p1=head;
while(p1!=NULL)
{
if(p1->card.name==sign)
break;
p2=p1;
p1=p1->next; //跟踪链表的增长,指针后移
}
if(p1==NULL)
cout<<"此联系人不存在"<<endl;
else if(p1->card.name==sign) //找到要删除的结点
{
if(p1==head) //表头结点
{
head=p1->next;
cout<<"成功删除该联系人相关信息"<<endl;
delete p1; //释放被删除结点
}
else
{
p2->next=p1->next; //表中结点
p1->next=NULL;
cout<<"成功删除该联系人相关信息"<<endl;
delete p1;
}
}
}
}
if(2==e) //按电话号码查找并删除
{
cout<<"输入需要删除的联系人电话号码"<<endl;
string sign;
cin>>sign;
if(head==NULL) //链表为空
cout<<"list is null"<<endl;
else //非空
{
p1=head;
while(p1!=NULL)
{
if(p1->card.name==sign)
break;
p2=p1;
p1=p1->next; //跟踪链表的增长,指针后移
}
if(p1==NULL)
cout<<"此联系人不存在"<<endl;
else if(p1->card.name==sign) //找到要删除的结点
{
if(p1==head) //表头结点
{
head=p1->next;
cout<<"成功删除该联系人相关信息"<<endl;
delete p1; //释放被删除结点
}
else
{
p2->next=p1->next; //表中结点
p1->next=NULL;
cout<<"成功删除该联系人相关信息"<<endl;
delete p1;
}
}
}
}
if(3==e) //按移动电话查找并删除
{
cout<<"输入需要删除的联系人移动电话"<<endl;
string sign;
cin>>sign;
if(head==NULL) //链表为空
cout<<"list is null"<<endl;
else //非空
{
p1=head;
while(p1!=NULL)
{
if(p1->card.name==sign)
break;
p2=p1;
p1=p1->next; //跟踪链表的增长,指针后移
}
if(p1==NULL)
cout<<"此联系人不存在"<<endl;
else if(p1->card.name==sign) //找到要删除的结点
{
if(p1==head) //表头结点
{
head=p1->next;
cout<<"成功删除该联系人相关信息"<<endl;
delete p1; //释放被删除结点
}
else
{
p2->next=p1->next; //表中结点
p1->next=NULL;
cout<<"成功删除该联系人相关信息"<<endl;
delete p1;
}
}
}
}
return head;
}
//编辑功能
void businesscard::edit()
{
struct tongxunlu*head=creat();
//ifstream fin;
//fin.open(FILE);
struct tongxunlu*p1,*p2;
string sign;
cout<<"输入您需要编辑的联系人姓名"<<endl;
cin>>sign;
if(head==NULL) //链表为空
cout<<"list is null"<<endl;
else //非空
{
p1=head;
while(p1!=NULL)
{
if(p1->card.name==sign)
break;
p2=p1;
p1=p1->next; //跟踪链表的增长,指针后移
}
if(p1==NULL)
cout<<"此联系人不存在"<<endl;
else if(p1->card.name==sign)//找到要编辑的结点
{
cout<<"原信息如下"<<endl;
cout<<p1->card.name<<p1->card.birthday<<p1->card.mobilenumber<<
p1->card.telephonenumber<<p1->card.sex<<p1->card.address
<<p1->card.email<<p1->card.relationship<<endl;
cout<<"输入需要修改的项目"<<endl;
cout<<"1 姓名name"<<endl;
cout<<"2 生日birthday"<<endl;
cout<<"3 移动电话mobilenumber"<<endl;
cout<<"4 电话号码telephonenumber"<<endl;
cout<<"5 性别sex"<<endl;
cout<<"6 地址address"<<endl;
cout<<"7电子邮箱email"<<endl;
cout<<"8关系relationship"<<endl;
int e;
cin>>e;
string s;
cout<<"输入需要修改的项目"<<endl;
switch(e)
{
case(1):cout<<"输入姓名";cin>>s;p1->card.name=s;break;
case(2):cout<<"输入生日";cin>>s;p1->card.birthday=s;break;
case(3):cout<<"输入电话号码";cin>>s;p1->card.mobilenumber=s;break;
case(4):cout<<"输入移动电话";cin>>s;p1->card.telephonenumber=s;break;
case(5):cout<<"输入性别";cin>>s;p1->card.sex=s;break;
case(6):cout<<"输入地址";cin>>s;p1->card.address=s;break;
case(7):cout<<"输入电子邮箱";cin>>s;p1->card.email=s;break;
case(8):cout<<"输入关系";cin>>s;p1->card.relationship=s;break;
default:cout<<"此项目不存在,请重新输入" ;
}
}
else
{
cout<<"此联系人不存在,您可以选择1键新建此联系人信息"<<endl;
}
}
}
//查找功能
void businesscard::query()
{
struct tongxunlu*head=creat();
//ifstream fin;
//fin.open(FILE);
struct tongxunlu*p1,*p2;
p1=p2=head;
cout<<"欢迎启用查找功能"<<endl;
cout<<"请选择查找方式"<<endl;
cout<<"1,姓名;2,电话号码;3,移动电话;"<<endl;
int e;
cin>>e;
switch(e)
{
case(1):
{
cout<<"输入需要查找的联系人姓名"<<endl;
string sign;
cin>>sign;
//if(fin)
if(head==NULL) //链表为空
cout<<"list is null"<<endl;
else //非空
{
p1=head;
while(p1!=NULL)
{
if(p1->card.name==sign)
break;
p2=p1;
p1=p1->next; //跟踪链表的增长,指针后移
}
if(p1==NULL)
cout<<"此联系人不存在"<<endl;
else if(p1->card.name==sign)//找到要编辑的结点
{
cout<<"原信息如下"<<endl;
cout<<p1->card.name<<" "<<p1->card.birthday<<" "<<p1->card.mobilenumber
<<" "<<p1->card.telephonenumber<<" "<<p1->card.sex<<" "<<
p1->card.address<<" "<<p1->card.email<<" "<<p1->card.relationship
<<" "<<endl;
}
}
}break;
case(2):
{
cout<<"输入需要查找的联系人电话号码"<<endl;
string sign;
cin>>sign;
//if(fin)
if(head==NULL) //链表为空
cout<<"list is null"<<endl;
else //非空
{
p1=head;
while(p1!=NULL)
{
if(p1->card.name==sign)
break;
p2=p1;
p1=p1->next; //跟踪链表的增长,指针后移
}
if(p1==NULL)
cout<<"此联系人不存在"<<endl;
else if(p1->card.name==sign)//找到要编辑的结点
{
cout<<"原信息如下"<<endl;
cout<<p1->card.name<<" "<<p1->card.birthday<<" "<<p1->card.mobilenumber
<<" "<<p1->card.telephonenumber<<" "<<p1->card.sex<<" "<<
p1->card.address<<" "<<p1->card.email<<" "<<p1->card.relationship
<<" "<<endl;
}
}
}break;
case(3):
{
cout<<"输入需要查找的联系人移动电话"<<endl;
string sign;
cin>>sign;
//if(fin)
if(head==NULL) //链表为空
cout<<"list is null"<<endl;
else //非空
{
p1=head;
while(p1!=NULL)
{
if(p1->card.name==sign)
break;
p2=p1;
p1=p1->next; //跟踪链表的增长,指针后移
}
if(p1==NULL)
cout<<"此联系人不存在"<<endl;
else if(p1->card.name==sign)//找到要查找的结点
{
cout<<"原信息如下"<<endl;
cout<<p1->card.name<<" "<<p1->card.birthday<<" "<<p1->card.mobilenumber
<<" "<<p1->card.telephonenumber<<" "<<p1->card.sex<<" "<<
p1->card.address<<" "<<p1->card.email<<" "<<p1->card.relationship
<<" "<<endl;
}
}
}break;
default:
cout<<"输入信息有误,请重新选择 1,姓名;2,电话号码;3,移动电话;"<<endl;
break;
}
}
//显示功能
void businesscard::show()
{
cout<<"欢迎进入显示项目"<<endl; //输出文件中已存在的全部通讯记录
char buffer[300]; //buffer临时存储器
fstream out;
out.open(FILE,ios::in); //以输入方式打开
while(!out.eof()) //未到文件末尾时
{
out.getline(buffer,300,'\n');//getline(char *,int,char)
//表示该行字符达到300个或遇到换行就结束
cout<<buffer<<endl;
}
out.close();
cin.get();//cin.get() 是用来读取回车键的,如果没这一行,输出的结果一闪就消失了
}
int main()
{
businesscard bcard; //定义类的成员变量
system("mode con cols=130 lines=50");//改变宽高
system("color 1e");//改变颜色
//选择要完成的项目
//例如,用 system("color 0A"); 其中color后面的0是背景色代号,A是前景色代号。
//各颜色代码如下:
//0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色
//A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色
for(int i=0;i<10;i++)
{
cout<< ""<<endl;
}
cout << " *****************************************"<<endl;
cout << " ****Welcome to the businesscard system!**"<<endl;
cout << " *****************************************"<<endl;
getch();
system("CLS");
for(;;)
{
cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl;
cout << " *****************************************"<<endl;
cout << " ****Welcome to the businesscard system!**"<<endl;
cout << " *****************************************"<<endl;
{
cout<<" ********根据数字选择您需要完成的项目*****"<<endl;
cout<<" ******1 for inser 插入 *****"<<endl;
cout<<" ******2 for edit 编辑 *****"<<endl;
cout<<" ******3 for deletet 删除 *****"<<endl;
cout<<" ******4 for query 查询 *****"<<endl;
cout<<" ******5 for show 显示所有 *****"<<endl;
cout<<" ******6 for save 分类保存 *****"<<endl;
cout<<" ******0 for out(exit) 退出 *****"<<endl;
cout<<" *****************************************"<<endl;
int e;
cin>>e;
switch(e)
{
case(1):bcard.insert();break;
case(2):bcard.edit(); break;
case(3):bcard.deletet();break;
case(4):bcard.query();break;
case(5):bcard.show();break;
case(6):bcard.save();break;
case(0):return 0;break; //退出系统
}
getch(); //任意键继续
system("CLS"); //完成清屏功能
}
}
getch();
return 0;
}
- 课程设计c++手机通讯录
- 课程设计c++手机通讯录
- C语言课程设计---通讯录
- C语言课程设计--学生通讯录1.0
- c语言 数据结构 课程设计 通讯录制作
- C语言课程设计通讯录链表实现
- 通讯录管理系统C语言课程设计
- 通讯录 课程设计
- 课程设计:通讯录
- 课程设计--通讯录
- 数据结构课程设计——通讯录系统设计(C语言)
- C 语言课程设计 最终答辩版 学生通讯录管理系统
- 数据结构课程设计--通讯录管理(C语言实现)
- 课程设计 通讯录源代码
- C++课程设计 ---通讯录
- 学生通讯录 课程设计
- 学生通讯录 课程设计
- 数据结构课程设计 班级通讯录
- 南阳 636 世界末日
- 2014-1-15开始CSDN博客
- Xcode 4.6.2 运行次数为偶数程序崩溃问题
- ORACLE dbms_sqltune
- 自己要做到的
- 课程设计c++手机通讯录
- delphi自定义鼠标移入移除和点击后控件的图片改变
- poj 2356 Find a multiple
- 处理百万级以上的数据提高查询速度的方法
- VLC Plugin JS 方法
- 【转载】SQLServer中如何判断表或者数据库的存在
- 微信模板消息,逼运营商上梁山
- expect ------提供用户名和密码的SSH自动登录脚本
- C++11新特性:Lambda函数(匿名函数)