#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <iomanip>
#include <cstring>
#include <stdlib.h>//sys函数
using namespace std;
//设置结点的数据域
struct data
{
int num;//编号
char name[10];//姓名
char sex[4];//性别
char zip_code[10];//邮编
int age;//年龄
long phone;//电话
long qq;//qq
char wechat[10];//微信
char born[10];//生日
};
//设置一个结点
struct Node
{
data user;//数据
Node *prior,*next;//前驱 后继
};
//设置结点类 封装属性跟方法
class LinkList
{
public:
void insert();//插入
void del();//删除
void show();//遍历
void input();//录入
void find();//查询
private:
Node *p,*head;
};
//input函数
void LinkList::input()
{
Node *p,*s,*head;
head=new Node;
p=head;
int flag;
flag=0;
while(flag==0)
{
s=new Node;
cout<<"编号 姓名 性别 邮编 年龄 电话 QQ 微信 生日"<<endl;
cin>>s->user.num>>s->user.name>>s->user.sex>>s->user.zip_code>>s->user.age>>s->user.phone>>s->user.qq>>s->user.wechat>>s->user.born;
p->next=s;
s->prior=p;
p=s;
cout<<"结束建立表吗?(1/0):";
cin>>flag;
}
head->prior=s;
p->next=head;
}
//insert函数
void LinkList::insert()
{
Node *prior;
Node *next;
Node *s;
char sel;
cout<<"请输入想要添加的结点信息:"<<endl;
for(;;)
{cout<<"编号 姓名 性别 邮编 年龄 电话 QQ 微信 生日"<<endl;
s=new Node;
cin>>s->user.num>>s->user.name>>s->user.sex>>s->user.zip_code>>s->user.age>>s->user.phone>>s->user.qq>>s->user.wechat>>s->user.born;
s->prior=p;
s->next=p->next;
p->next->prior=s;
p->next=s;
}
//find函数
void LinkList::find()
{
Node *p;
int num;
char name[10];
int cho;
cout<<"+------------------------------------------+"<<endl;
cout<<"| 1->按照编号进行查询 |"<<endl;
cout<<"| 2->按照姓名进行查询 |"<<endl;
cout<<"+------------------------------------------+"<<endl;
cout<<"请选择:";
p=head->next;//避开头结点
cin>>cho;
if(cho==1)
{
cout<<"请输入你要查找的编号:"<<endl;
cin>>num;
while(p&&p->user.num<num)
p->next;
if (p==NULL||p->user.num>num)
p=NULL;
}
else
if(cho==2)
{
cout<<"请输入你要查找的姓名:";
cin>>name;
while (p&&strcmp(p->user.name,name)!=0)
p=p->next;
}
//return p;
}
//del函数
void LinkList::del()
{
char sel;
Node *p;
//p=find();
if(p==NULL)
{
cout<<"没有查找到要删除的联系人!"<<endl;
return;
}
cout<<"真的要删除该联系人吗?(y/n):";
cin>>sel;
if(sel=='Y'|| sel=='y')
{
p->prior->next=p->next;
p->next->prior=p->prior;
delete p;
cout<<"已删除该联系人";
}
else
return;
}
//show函数
void LinkList::show()
{
for(;p->next=NULL;)
{
cout<<"编号 姓名 性别 邮编 年龄 电话 QQ 微信 生日"<<endl;
cout<<p->user.num<<p->user.name<<p->user.sex<<p->user.zip_code<<p->user.age<<p->user.phone<<p->user.qq<<p->user.wechat<<p->user.born;
p->next=p->next->next;
}
}
//login登陆界面
int login()
{
int a=2;
int b;
char *user; //账号
user=new char[10];
char *password; //密码
password=new char[10];
system("cls");
cout<<setw(20)<<"+-----------------------------------------------------------------------------+"<<endl;
cout<<setw(20)<<"| 个人通讯录管理系统 |"<<endl;
cout<<setw(20)<<"| |"<<endl;
cout<<setw(20)<<"| |"<<endl;
cout<<setw(20)<<"| 管理员账号:12345 密码:12345 |"<<endl;
cout<<setw(20)<<"| |"<<endl;
cout<<setw(20)<<"+-----------------------------------------------------------------------------|"<<endl;
pr1:cout<<" 请输入管理员账号:";
cin>>user;
cout<<" 请输入管理员密码:";
cin>>password;
if(strcmp(user,"12345")==0&&strcmp(password,"12345")==0)
{
cout<<endl<<" 登陆成功!请稍等。。"<<endl;
Sleep(500);
system("cls");
}
else
{
if (a==0)
{
cout<<endl<<"输入错误!按任意键退出"<<endl;
exit(0);
}
else
cout<<" 登陆失败!请重新输入管理员帐号/密码,您还有"<<a<<"次机会"<<endl;
a--;
goto pr1;
}
}
//memu
int menu()
{
login();
int choice;
cout<<setw(20)<<"+---------------------------------------------------------+"<<endl;
cout<<setw(20)<<"| |"<<endl;
cout<<setw(20)<<"| 1->添加信息 |"<<endl;
cout<<setw(20)<<"| 2->删除信息 |"<<endl;
cout<<setw(20)<<"| 3->显示信息 |"<<endl;
cout<<setw(20)<<"| 4->查询信息 |"<<endl;
cout<<setw(20)<<"| 5->录入信息 |"<<endl;
cout<<setw(20)<<"| 0->退出系统 |"<<endl;
cout<<setw(20)<<"| |"<<endl;
cout<<setw(20)<<"+---------------------------------------------------------+"<<endl;
cout<<"请输入你想要的服务号码(0——5)";
for(;;)
{
cin>>choice;
if(choice<0||choice>5)
cout<<"输入错误,重选0-5:";
else
break;
}
return choice;
}
//主函数
int mian()
{
LinkList DoubleLink;
switch(menu())
{
case 1:
system("cls");
DoubleLink.insert();
break;
case 2:
system("cls");
cout<<"请输入你想删除的编号:";
DoubleLink.del();
break;
case 3:
system("cls");
DoubleLink.show();
break;
case 4:
system("cls");
DoubleLink.input();
break;
case 5:
system("cls");
DoubleLink.find();
break;
default:
cout<<"你已经退出通讯录管理系统!!";
Sleep(1000);
system("cls");
}
}
有很多逻辑错误