一、简介
题目:设计一个同学通讯录系统
功能:主菜单、增加、删除、修改、查询、排序、显示等
二、分析题目
根据题目要求设计一个包含主菜单、增加、删除、修改、查询、排序、显示等功能的通讯录系统,所以我们可以考虑用函数实现每一个功能,并且构造一个结构体来实现通讯录系统信息存储。
因此,程序的基本结构就是:
三、头文件
#include<bits/stdc++.h> //万能头文件
#include <Windows.h> //定义了Windows的所有资料型态、函数调用、资料结构和常数识别字,它们是Windows文件中的一个重要部分
#include <cstring> //c++对标准c字符串处理函数的c++增强
每次编写C++程序的第一步就是先添加头文件,一般情况下万能头文件<bits/stdc++.h>就可以结束大部分问题,但是还是要基于程序特殊功能添加必要的头文件,诸如<Windows.h>等等
四、结构体、六大功能与主函数
1、定义结构体
struct addresslist //结构体定义
{
char num[15]; //学号
char name[15]; //姓名
char tel[15]; //手机号码
char qq[15]; //QQ号
char wx[15]; //微信号
char sex; //性别M/F
int age; //年纪
char mailbox[30];//电子邮箱地址
};
根据信息的类型定义相对应的数据类型即可
注意为信息留下足够的空间
2、增加信息
void add(addresslist student[],int &number) //该函数用于同学信息的增加
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int num1;
cout<<"请输入要增加的同学信息个数:";
cin>>num1;
for(int i=number;i<number+num1;i++)//该循环可用于一次性输入多位同学信息
{
cout<<"请输入第"<<i+1<<"位同学的学号:";
cin>>student[i].num;
cout<<"请输入第"<<i+1<<"位同学的姓名:";
cin>>student[i].name;
cout<<"请输入第"<<i+1<<"位同学的手机号码:";
cin>>student[i].tel;
cout<<"请输入第"<<i+1<<"位同学的QQ号:";
cin>>student[i].qq;
cout<<"请输入第"<<i+1<<"位同学的微信号:";
cin>>student[i].wx;
cout<<"请输入第"<<i+1<<"位同学的性别(M/F):";
cin>>student[i].sex;
while(1)//此函数用于判定用户输入的是否是有效性别信息
{
if(student[i].sex=='M'||student[i].sex=='m'||student[i].sex=='F'||student[i].sex=='f')
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"请正确输入第"<<i+1<<"位同学的性别(M/F):";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>student[i].sex;
}
}
cout<<"请输入第"<<i+1<<"位同学的年纪:";
cin>>student[i].age;
cout<<"请输入第"<<i+1<<"位同学的电子邮箱:";
cin>>student[i].mailbox;
while(1)//此函数用于判定用户输入的是否是有效邮箱地址
{
int j=0,x=1;
for(j=0;j<strlen(student[i].mailbox);j++)
{
if(student[i].mailbox[j]=='@')
{
x=0;
break;
}
}
if(x==1)
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入格式错误,请重新输入电子邮箱:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>student[i].mailbox;
continue;
}
break;
}
cout<<endl;
}
number+=num1;
cout<<"信息输入已完成,输入“1”显示同学信息\n其他数字键不显示同学信息\n";
void lis(addresslist student[],int &number);
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
该函数主要是使用cin输入信息,其他的判断语句用于对输入信息格式的正确与否进行检查。
第一个循环用于多个信息的录入,即选择该功能之后可以连续录入多条信息,避免每一次都需要从主菜单选择增加信息功能再录入的重复操作。
3、删除信息
void del(addresslist student[],int &number) //该函数用于同学信息的删除
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否删除同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法删除!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
void lis(addresslist student[],int &number);
lis(student, number);
cout<<"请输入要删除的同学信息的序号(选择0退出删除同学信息界面):" ;
int num3;
cin>>num3;
while(1)
{
if(num3<=number && num3>0)
{
for(int i=num3;i<number;i++)//该循环用于删除同学信息
{
student[i-1]=student[i];
}
number-=1;
break;
}
else if(num3==0)//该判断用于误操作选择删除功能后退出删除界面以免删除同学信息
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num3;
}
}
cout<<"信息删除已完成,是输入“1”显示同学信息\n其他数字键不显示同学信息\n";
void lis(addresslist student[],int &number);
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
}
在删除信息之前,要先显示通讯录中是否有信息可以删除;确定有则显示出目前的所有信息,接下来就是选择要删除的信息进行删除,实现的方法就是用后面的信息对前面的信息进行覆盖并将通讯录总人数-1
4、修改信息
void edi(addresslist student[],int &number) //该函数用于同学信息的修改
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否修改同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法修改!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
void lis(addresslist student[],int &number);
lis(student, number);
cout<<"请输入要修改的同学信息的序号:" ;
int num5;
cin>>num5;
while(1)//该循环用于修改同学各项信息
{
if(num5<=number && num5>0)
{
int j;
j=num5-1;
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】手机号码 【4】QQ号 ="<<endl;
cout<<" = 【5】微信号 【6】性别 ="<<endl;
cout<<" = 【7】年纪 【8】电子邮箱地址 ="<<endl;
cout<<" = 【9】退出修改 ="<<endl;// <<"【10】"
cout<<" ============================================================"<<endl;
cout<<"请选择要修改的信息:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int x;
cin>>x;
while(x!=9)
{
while(x>9)
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】手机号码 【4】QQ号 ="<<endl;
cout<<" = 【5】微信号 【6】性别 ="<<endl;
cout<<" = 【7】年纪 【8】电子邮箱地址 ="<<endl;
cout<<" = 【9】退出修改 ="<<endl;// <<"【10】"
cout<<" ============================================================"<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>x;
if(x>0&&x<=9)
break;
}
if(x==9)
break;
else
{
switch(x)//该选择用于修改同学各项信息
{
case 1:cout<<"请输入该同学的学号:";
cin>>student[j].num;
break;
case 2:cout<<"请输入该同学的姓名:";
cin>>student[j].name;
break;
case 3:cout<<"请输入该同学的手机号码:";
cin>>student[j].tel;
break;
case 4:cout<<"请输入该同学的QQ号:";
cin>>student[j].qq;
break;
case 5:cout<<"请输入该同学的微信号:";
cin>>student[j].wx;
break;
case 6:cout<<"请输入该同学的性别(M/F):";
cin>>student[j].sex;
while(1)
{
if(student[j].sex=='M'||student[j].sex=='m'||student[j].sex=='F'||student[j].sex=='f')
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"请正确输入该同学的性别(M/F):";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>student[j].sex;
}
}
break;
case 7:cout<<"请输入该同学的年纪:";
cin>>student[j].age;
break;
case 8:cout<<"请输入该同学的电子邮箱:";
cin>>student[j].mailbox;
while(1)//此函数用于判定用户输入的是否是有效邮箱地址
{
int s=0,x=1;
for(s=0;j<strlen(student[j].mailbox);s++)
{
if(student[j].mailbox[s]=='@')
{
x=0;
break;
}
}
if(x==1)
{
cout<<"输入格式错误,请重新输入电子邮箱:";
cin>>student[j].mailbox;
continue;
}
break;
}
break;
}
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】手机号码 【4】QQ号 ="<<endl;
cout<<" = 【5】微信号 【6】性别 ="<<endl;
cout<<" = 【7】年纪 【8】电子邮箱地址 ="<<endl;
cout<<" = 【9】退出修改 ="<<endl;// <<"【10】"
cout<<" ============================================================"<<endl;
cout<<"请再次选择要修改的信息:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>x;
}
}
break;
}
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num5;
}
}
cout<<"\n信息修改已完成,输入“1”显示同学信息\n其他数字键不显示同学信息\n";
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
}
同理,修改信息也需要原本已经有录入信息才能进行。实现方法就是将新输入的信息赋予到对应的信息并注意信息的格式是否正确
5、查询信息
void fin(addresslist student[],int &number) //该函数用于同学信息的查找
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否查找同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法查询!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】退出查询 ="<<endl;
cout<<" ============================================================"<<endl;
cout<<"请选择查询方式:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int num4,z;
addresslist stud;
cin>>num4;
while(1)//该循环用于查找同学信息
{
if(num4==1||num4==2)
{
if(num4==1)//该判断用于学号查找
{
int i;
cout<<"请输入学号:";
cin>>stud.num;
for(i=0;i<number;i++)
{
z=strcmp(student[i].num,stud.num);
if(z==0)
{
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<"序号"<<setw(15)<<"学号"<<setw(15)<<"姓名"<<setw(15)<<"手机号码"<<setw(15)<<"QQ号"<<setw(15)<<"微信号"<<setw(7)<<"性别"<<setw(7)<<"年纪"<<setw(30)<<"电子邮箱"<<endl;
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<i+1<<setw(15)<<student[i].num<<setw(15)<<student[i].name<<setw(15)<<student[i].tel<<setw(15)<<student[i].qq<<setw(15)<<student[i].wx<<setw(7)<<student[i].sex<<setw(7)<<student[i].age<<setw(30)<<student[i].mailbox<<endl;
break;
}
}
if(i==number)
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"在通讯录中查找不到!";
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
break;
}
else//该判断用于姓名查找
{
int i;
cout<<"请输入姓名:";
cin>>stud.name;
for(i=0;i<number;i++)
{
z=strcmp(student[i].name,stud.name);
if(z==0)
{
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<"序号"<<setw(15)<<"学号"<<setw(15)<<"姓名"<<setw(15)<<"手机号码"<<setw(15)<<"QQ号"<<setw(15)<<"微信号"<<setw(7)<<"性别"<<setw(7)<<"年纪"<<setw(30)<<"电子邮箱"<<endl;
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<i+1<<setw(15)<<student[i].num<<setw(15)<<student[i].name<<setw(15)<<student[i].tel<<setw(15)<<student[i].qq<<setw(15)<<student[i].wx<<setw(7)<<student[i].sex<<setw(7)<<student[i].age<<setw(30)<<student[i].mailbox<<endl;
break;
}
}
if(i==number)
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"在通讯录中查找不到!";
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
break;
}
}
else if(num4==3)
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num4;
}
}
}
}
查找即是在已有信息中进行搜索,实现方法就是用判断A==B?进行查找,本例只写出用姓名和学号进行查找,除此之外其他信息也是同样可以进行对比查找的
6、信息排序
void sor(addresslist student[],int &number) //该函数用于同学信息的排序
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否进行同学信息排序
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法排序!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
void lis(addresslist student[],int &number);
lis(student, number);
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】年龄 【4】退出排序 ="<<endl;
cout<<" ============================================================"<<endl;
cout<<"请选择排序方式:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int num2;
addresslist stud;
int z;
cin>>num2;
while(num2!=4)//该循环用于各种排序
{
while(num2>4)
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】年龄 【4】退出排序 ="<<endl;
cout<<" ============================================================"<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"请正确选择排序方式:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num2;
if(num2>0&&num2<5)
break;
}
if(num2==4)
break;
if(num2==1||num2==2||num2==3)
{
for(int i=0;i<number;i++)
{
for(int j=0;j<number-1-i;j++)
{
if(num2==1)
z=strcmp(student[j].num,student[j+1].num);
else if(num2==2)
z=strcmp(student[j].name,student[j+1].name);
else
{
if(student[j].age>student[j+1].age)
z=1;
else
z=-1;
}
if(z>=0)
{
stud=student[j];
student[j]=student[j+1];
student[j+1]=stud;
}
}
}
break;
}
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num2;
}
}
cout<<"信息排序已完成,输入“1”显示同学信息\n其他数字键不显示同学信息\n";
void lis(addresslist student[],int &number);
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
}
信息排序的原理是基于数字大小或ASCII码进行比较大小,我们只需要将要对比的信息进行>、<判断,然后用冒泡法等排序即可
7、显示所有信息
void lis(addresslist student[],int &number) //该函数用于同学信息的显示
{
if(number==0)//判断通讯录是否为空,能否显示同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法显示!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<"序号"<<setw(15)<<"学号"<<setw(15)<<"姓名"<<setw(15)<<"手机号码"<<setw(15)<<"QQ号"<<setw(15)<<"微信号"<<setw(7)<<"性别"<<setw(7)<<"年纪"<<setw(30)<<"电子邮箱"<<endl;
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
for(int i=0;i<number;i++)
{
cout<<setw(5)<<i+1<<setw(15)<<student[i].num<<setw(15)<<student[i].name<<setw(15)<<student[i].tel<<setw(15)<<student[i].qq<<setw(15)<<student[i].wx<<setw(7)<<student[i].sex<<setw(7)<<student[i].age<<setw(30)<<student[i].mailbox<<endl;
}
}
}
显示信息是所有函数中最简单的了,只需要cout信息就可以,但要注意信息显示的间距等美观问题
8、主函数
int main()
{
addresslist student[100];
int number=0,n;
for(int c=0;c<24;c++)
{
Sleep(100);
SetConsoleColor(FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout<<"* ";
}
cout<<'\n';
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
Sleep(200);
cout<<" xx班 :学生通讯录管理系统\n";
Sleep(200);
cout<<" 设计者 xxx\n";
for(int c=0;c<24;c++)
{
Sleep(100);
SetConsoleColor(FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout<<"* ";
}
cout<<'\n';
system("pause"); //该行与下一行用于刷新界面
system("cls");
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ===================================================\n";
cout<<" = 欢迎使用通讯录管理系统 =\n";
cout<<" = Welcome To the Address Book Management System =\n";
cout<<" ===================================================\n";
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】增加同学信息 【2】删除同学信息 ="<<endl;
cout<<" = 【3】修改同学信息 【4】查询同学信息 ="<<endl;
cout<<" = 【5】同学信息排序 【6】显示所有同学信息 ="<<endl;
cout<<" = 【7】退出 ="<<endl;
cout<<" ============================================================"<<endl;
cout<<" 请选择要执行的操作:";
cin>>n;
while(1)
{
while(n==0||n>7)
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】增加同学信息 【2】删除同学信息 ="<<endl;
cout<<" = 【3】修改同学信息 【4】查询同学信息 ="<<endl;
cout<<" = 【5】同学信息排序 【6】显示所有同学信息 ="<<endl;
cout<<" = 【7】退出 ="<<endl; // <<"【9】"
cout<<" ============================================================"<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<" 输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>n;
if(n>0 && n<=7)
break;
}
if(n==7)
break;
else if(n==1||n==2||n==3||n==4||n==5||n==6)
{
switch(n)
{
case 1:add(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 2:del(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 3:edi(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 4:fin(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 5:sor(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 6:lis(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
}
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】增加同学信息 【2】删除同学信息 ="<<endl;
cout<<" = 【3】修改同学信息 【4】查询同学信息 ="<<endl;
cout<<" = 【5】同学信息排序 【6】显示所有同学信息 ="<<endl;
cout<<" = 【7】退出 ="<<endl; // <<"【9】"
cout<<" ============================================================"<<endl;
cout<<" 请再次选择要执行的操作:";
cin>>n;
}
}
system("pause");
system("cls");
SetConsoleColor(FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<" 欢迎使用,再见!\n";
cout<<" ============== =========\n";
cout<<" ====||==== || | ||\n";
cout<<" ||==||==|| || | ||\n";
cout<<" ==||==||==||== / \\ \n";
cout<<" || =|| ||_/ \\__||\n";
cout<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
return 0;
}
主函数是实现结构体初始化,通讯录系统进入退出设计以及功能函数调用
五、其他
在通讯录系统设计的过程,对于C++基础知识的掌握程度越来越高,并且在这个过程中也能不断的学习吸收新知识,增加对编程的兴趣。虽然这个系统很简陋,也可能存在错误,但最终还是能够实现题目的要求并有一些小看点,这也算是对C++这门课程换上一个句号,但在编程学习路上只是一个小节点,还会继续努力的,fighting!
看点:为只有黑白两色的显示增加色彩
实现的代码函数:
BOOL SetConsoleColor(WORD wAttributes) //该函数用于修改字体颜色
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
if (hConsole == INVALID_HANDLE_VALUE)
return FALSE;
return SetConsoleTextAttribute(hConsole, wAttributes);
}
附完整代码
/*
亮点:
1、输出内容颜色多样
2、输出有停顿,视觉效果好
3、利用while(1)永真函数以及if(……)判断语句对输入的信息进行判断
*/
#include<bits/stdc++.h> //万能头文件
#include <Windows.h> //定义了Windows的所有资料型态、函数调用、资料结构和常数识别字,它们是Windows文件中的一个重要部分
#include <cstring> //c++对标准c字符串处理函数的c++增强
using namespace std;
BOOL SetConsoleColor(WORD wAttributes) //该函数用于修改字体颜色
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
if (hConsole == INVALID_HANDLE_VALUE)
return FALSE;
return SetConsoleTextAttribute(hConsole, wAttributes);
}
struct addresslist //结构体定义
{
char num[15]; //学号
char name[15]; //姓名
char tel[15]; //手机号码
char qq[15]; //QQ号
char wx[15]; //微信号
char sex; //性别M/F
int age; //年纪
char mailbox[30];//电子邮箱地址
};
void add(addresslist student[],int &number) //该函数用于同学信息的增加
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int num1;
cout<<"请输入要增加的同学信息个数:";
cin>>num1;
for(int i=number;i<number+num1;i++)//该循环可用于一次性输入多位同学信息
{
cout<<"请输入第"<<i+1<<"位同学的学号:";
cin>>student[i].num;
cout<<"请输入第"<<i+1<<"位同学的姓名:";
cin>>student[i].name;
cout<<"请输入第"<<i+1<<"位同学的手机号码:";
cin>>student[i].tel;
cout<<"请输入第"<<i+1<<"位同学的QQ号:";
cin>>student[i].qq;
cout<<"请输入第"<<i+1<<"位同学的微信号:";
cin>>student[i].wx;
cout<<"请输入第"<<i+1<<"位同学的性别(M/F):";
cin>>student[i].sex;
while(1)//此函数用于判定用户输入的是否是有效性别信息
{
if(student[i].sex=='M'||student[i].sex=='m'||student[i].sex=='F'||student[i].sex=='f')
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"请正确输入第"<<i+1<<"位同学的性别(M/F):";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>student[i].sex;
}
}
cout<<"请输入第"<<i+1<<"位同学的年纪:";
cin>>student[i].age;
cout<<"请输入第"<<i+1<<"位同学的电子邮箱:";
cin>>student[i].mailbox;
while(1)//此函数用于判定用户输入的是否是有效邮箱地址
{
int j=0,x=1;
for(j=0;j<strlen(student[i].mailbox);j++)
{
if(student[i].mailbox[j]=='@')
{
x=0;
break;
}
}
if(x==1)
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入格式错误,请重新输入电子邮箱:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>student[i].mailbox;
continue;
}
break;
}
cout<<endl;
}
number+=num1;
cout<<"信息输入已完成,输入“1”显示同学信息\n其他数字键不显示同学信息\n";
void lis(addresslist student[],int &number);
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
void del(addresslist student[],int &number) //该函数用于同学信息的删除
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否删除同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法删除!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
void lis(addresslist student[],int &number);
lis(student, number);
cout<<"请输入要删除的同学信息的序号(选择0退出删除同学信息界面):" ;
int num3;
cin>>num3;
while(1)
{
if(num3<=number && num3>0)
{
for(int i=num3;i<number;i++)//该循环用于删除同学信息
{
student[i-1]=student[i];
}
number-=1;
break;
}
else if(num3==0)//该判断用于误操作选择删除功能后退出删除界面以免删除同学信息
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num3;
}
}
cout<<"信息删除已完成,是输入“1”显示同学信息\n其他数字键不显示同学信息\n";
void lis(addresslist student[],int &number);
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
}
void edi(addresslist student[],int &number) //该函数用于同学信息的修改
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否修改同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法修改!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
void lis(addresslist student[],int &number);
lis(student, number);
cout<<"请输入要修改的同学信息的序号:" ;
int num5;
cin>>num5;
while(1)//该循环用于修改同学各项信息
{
if(num5<=number && num5>0)
{
int j;
j=num5-1;
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】手机号码 【4】QQ号 ="<<endl;
cout<<" = 【5】微信号 【6】性别 ="<<endl;
cout<<" = 【7】年纪 【8】电子邮箱地址 ="<<endl;
cout<<" = 【9】退出修改 ="<<endl;// <<"【10】"
cout<<" ============================================================"<<endl;
cout<<"请选择要修改的信息:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int x;
cin>>x;
while(x!=9)
{
while(x>9)
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】手机号码 【4】QQ号 ="<<endl;
cout<<" = 【5】微信号 【6】性别 ="<<endl;
cout<<" = 【7】年纪 【8】电子邮箱地址 ="<<endl;
cout<<" = 【9】退出修改 ="<<endl;// <<"【10】"
cout<<" ============================================================"<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>x;
if(x>0&&x<=9)
break;
}
if(x==9)
break;
else
{
switch(x)//该选择用于修改同学各项信息
{
case 1:cout<<"请输入该同学的学号:";
cin>>student[j].num;
break;
case 2:cout<<"请输入该同学的姓名:";
cin>>student[j].name;
break;
case 3:cout<<"请输入该同学的手机号码:";
cin>>student[j].tel;
break;
case 4:cout<<"请输入该同学的QQ号:";
cin>>student[j].qq;
break;
case 5:cout<<"请输入该同学的微信号:";
cin>>student[j].wx;
break;
case 6:cout<<"请输入该同学的性别(M/F):";
cin>>student[j].sex;
while(1)
{
if(student[j].sex=='M'||student[j].sex=='m'||student[j].sex=='F'||student[j].sex=='f')
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"请正确输入该同学的性别(M/F):";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>student[j].sex;
}
}
break;
case 7:cout<<"请输入该同学的年纪:";
cin>>student[j].age;
break;
case 8:cout<<"请输入该同学的电子邮箱:";
cin>>student[j].mailbox;
while(1)//此函数用于判定用户输入的是否是有效邮箱地址
{
int s=0,x=1;
for(s=0;j<strlen(student[j].mailbox);s++)
{
if(student[j].mailbox[s]=='@')
{
x=0;
break;
}
}
if(x==1)
{
cout<<"输入格式错误,请重新输入电子邮箱:";
cin>>student[j].mailbox;
continue;
}
break;
}
break;
}
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】手机号码 【4】QQ号 ="<<endl;
cout<<" = 【5】微信号 【6】性别 ="<<endl;
cout<<" = 【7】年纪 【8】电子邮箱地址 ="<<endl;
cout<<" = 【9】退出修改 ="<<endl;// <<"【10】"
cout<<" ============================================================"<<endl;
cout<<"请再次选择要修改的信息:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>x;
}
}
break;
}
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num5;
}
}
cout<<"\n信息修改已完成,输入“1”显示同学信息\n其他数字键不显示同学信息\n";
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
}
void fin(addresslist student[],int &number) //该函数用于同学信息的查找
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否查找同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法查询!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】退出查询 ="<<endl;
cout<<" ============================================================"<<endl;
cout<<"请选择查询方式:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int num4,z;
addresslist stud;
cin>>num4;
while(1)//该循环用于查找同学信息
{
if(num4==1||num4==2)
{
if(num4==1)//该判断用于学号查找
{
int i;
cout<<"请输入学号:";
cin>>stud.num;
for(i=0;i<number;i++)
{
z=strcmp(student[i].num,stud.num);
if(z==0)
{
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<"序号"<<setw(15)<<"学号"<<setw(15)<<"姓名"<<setw(15)<<"手机号码"<<setw(15)<<"QQ号"<<setw(15)<<"微信号"<<setw(7)<<"性别"<<setw(7)<<"年纪"<<setw(30)<<"电子邮箱"<<endl;
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<i+1<<setw(15)<<student[i].num<<setw(15)<<student[i].name<<setw(15)<<student[i].tel<<setw(15)<<student[i].qq<<setw(15)<<student[i].wx<<setw(7)<<student[i].sex<<setw(7)<<student[i].age<<setw(30)<<student[i].mailbox<<endl;
break;
}
}
if(i==number)
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"在通讯录中查找不到!";
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
break;
}
else//该判断用于姓名查找
{
int i;
cout<<"请输入姓名:";
cin>>stud.name;
for(i=0;i<number;i++)
{
z=strcmp(student[i].name,stud.name);
if(z==0)
{
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<"序号"<<setw(15)<<"学号"<<setw(15)<<"姓名"<<setw(15)<<"手机号码"<<setw(15)<<"QQ号"<<setw(15)<<"微信号"<<setw(7)<<"性别"<<setw(7)<<"年纪"<<setw(30)<<"电子邮箱"<<endl;
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<i+1<<setw(15)<<student[i].num<<setw(15)<<student[i].name<<setw(15)<<student[i].tel<<setw(15)<<student[i].qq<<setw(15)<<student[i].wx<<setw(7)<<student[i].sex<<setw(7)<<student[i].age<<setw(30)<<student[i].mailbox<<endl;
break;
}
}
if(i==number)
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"在通讯录中查找不到!";
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
break;
}
}
else if(num4==3)
break;
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num4;
}
}
}
}
void sor(addresslist student[],int &number) //该函数用于同学信息的排序
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if(number==0)//判断通讯录是否为空,能否进行同学信息排序
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法排序!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
void lis(addresslist student[],int &number);
lis(student, number);
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】年龄 【4】退出排序 ="<<endl;
cout<<" ============================================================"<<endl;
cout<<"请选择排序方式:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
int num2;
addresslist stud;
int z;
cin>>num2;
while(num2!=4)//该循环用于各种排序
{
while(num2>4)
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】学号 【2】姓名 ="<<endl;
cout<<" = 【3】年龄 【4】退出排序 ="<<endl;
cout<<" ============================================================"<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"请正确选择排序方式:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num2;
if(num2>0&&num2<5)
break;
}
if(num2==4)
break;
if(num2==1||num2==2||num2==3)
{
for(int i=0;i<number;i++)
{
for(int j=0;j<number-1-i;j++)
{
if(num2==1)
z=strcmp(student[j].num,student[j+1].num);
else if(num2==2)
z=strcmp(student[j].name,student[j+1].name);
else
{
if(student[j].age>student[j+1].age)
z=1;
else
z=-1;
}
if(z>=0)
{
stud=student[j];
student[j]=student[j+1];
student[j+1]=stud;
}
}
}
break;
}
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>num2;
}
}
cout<<"信息排序已完成,输入“1”显示同学信息\n其他数字键不显示同学信息\n";
void lis(addresslist student[],int &number);
char yon;
cin>>yon;
if(yon=='1')
lis(student, number);
}
}
void lis(addresslist student[],int &number) //该函数用于同学信息的显示
{
if(number==0)//判断通讯录是否为空,能否显示同学信息
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"通讯录为空无法显示!" ;
cout<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
cout<<setw(5)<<"序号"<<setw(15)<<"学号"<<setw(15)<<"姓名"<<setw(15)<<"手机号码"<<setw(15)<<"QQ号"<<setw(15)<<"微信号"<<setw(7)<<"性别"<<setw(7)<<"年纪"<<setw(30)<<"电子邮箱"<<endl;
for(int c=0;c<66;c++)
{
Sleep(20);
cout<<"* ";
}
cout<<'\n';
for(int i=0;i<number;i++)
{
cout<<setw(5)<<i+1<<setw(15)<<student[i].num<<setw(15)<<student[i].name<<setw(15)<<student[i].tel<<setw(15)<<student[i].qq<<setw(15)<<student[i].wx<<setw(7)<<student[i].sex<<setw(7)<<student[i].age<<setw(30)<<student[i].mailbox<<endl;
}
}
}
int main()
{
addresslist student[100];
int number=0,n;
for(int c=0;c<24;c++)
{
Sleep(100);
SetConsoleColor(FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout<<"* ";
}
cout<<'\n';
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
Sleep(200);
cout<<" xx班 :学生通讯录管理系统\n";
Sleep(200);
cout<<" 设计者 xxx\n";
for(int c=0;c<24;c++)
{
Sleep(100);
SetConsoleColor(FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout<<"* ";
}
cout<<'\n';
system("pause"); //该行与下一行用于刷新界面
system("cls");
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ===================================================\n";
cout<<" = 欢迎使用通讯录管理系统 =\n";
cout<<" = Welcome To the Address Book Management System =\n";
cout<<" ===================================================\n";
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】增加同学信息 【2】删除同学信息 ="<<endl;
cout<<" = 【3】修改同学信息 【4】查询同学信息 ="<<endl;
cout<<" = 【5】同学信息排序 【6】显示所有同学信息 ="<<endl;
cout<<" = 【7】退出 ="<<endl;
cout<<" ============================================================"<<endl;
cout<<" 请选择要执行的操作:";
cin>>n;
while(1)
{
while(n==0||n>7)
{
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】增加同学信息 【2】删除同学信息 ="<<endl;
cout<<" = 【3】修改同学信息 【4】查询同学信息 ="<<endl;
cout<<" = 【5】同学信息排序 【6】显示所有同学信息 ="<<endl;
cout<<" = 【7】退出 ="<<endl; // <<"【9】"
cout<<" ============================================================"<<endl;
SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<" 输入错误,请重新选择:";
SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cin>>n;
if(n>0 && n<=7)
break;
}
if(n==7)
break;
else if(n==1||n==2||n==3||n==4||n==5||n==6)
{
switch(n)
{
case 1:add(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 2:del(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 3:edi(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 4:fin(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 5:sor(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
case 6:lis(student, number);//参数为同学录结构数组及通讯录中已有人数。
system("pause");
system("cls");
break;
}
SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<" ============================================================"<<endl;
cout<<" = 【1】增加同学信息 【2】删除同学信息 ="<<endl;
cout<<" = 【3】修改同学信息 【4】查询同学信息 ="<<endl;
cout<<" = 【5】同学信息排序 【6】显示所有同学信息 ="<<endl;
cout<<" = 【7】退出 ="<<endl; // <<"【9】"
cout<<" ============================================================"<<endl;
cout<<" 请再次选择要执行的操作:";
cin>>n;
}
}
system("pause");
system("cls");
SetConsoleColor(FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<" 欢迎使用,再见!\n";
cout<<" ============== =========\n";
cout<<" ====||==== || | ||\n";
cout<<" ||==||==|| || | ||\n";
cout<<" ==||==||==||== / \\ \n";
cout<<" || =|| ||_/ \\__||\n";
cout<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
return 0;
}