📄 addresslist.cpp
字号:
#define N 5
#include<stdio.h>
#include<string.h>
#include<conio.h>
void myprint();
void mycreat(char numtel[N][10], char nametel[N][10], char tel[N][10]);
//void mycreat() {}
void mydisplay(char numtel[N][10], char nametel[N][10], char tel[N][10]);
//void mydisplay() {}
void mysearch(char num[N][10],char name[N][10],char tel[N][10]);
//void mysearch() {}
void mymodify(char num[N][10],char name[N][10],char tel[N][10]);
//void mymodify() {}
void myadd(char num[N][10],char name[N][10],char tel[N][10]);
//void myadd() {}
void mydelete(char num[N][10],char name[N][10],char tel[N][10]);
//void mydelete() {}
void mysort(char num[N][10],char name[N][10],char tel[N][10]);
//void mysort() {}
void sch_num(char num[N][10],char name[N][10],char tel[N][10]);
void sch_name(char num[N][10],char name[N][10],char tel[N][10]);
void main()
{
char choose,yes_no;
char num[N][10],name[N][10],tel[N][10];
do
{ myprint(); //显示菜单
printf(" ");
choose=getche();
switch(choose)
{
case'1': mycreat(num,name,tel);
break;
case'2':mydisplay(num,name,tel);
break;
case'3':mysearch(num,name,tel);
break;
case'4':mymodify(num,name,tel);
break;
case'5':myadd(num,name,tel);
break;
case'6':mydelete(num,name,tel);
break;
case'7':mysort(num,name,tel);
break;
case'0':break;
default:printf("\n %c为非法选项!\n",choose);
}
if(choose=='0')
break;
printf("\n 要继续选择吗(Y/N)?\n");
do
{ yes_no=getch();
}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}
while(yes_no!='Y'||yes_no!='y');
}
void myprint() //显示菜单函数
{ //clrscr();
printf("\n\n\n\n\n\n\n");
printf(" \n");
printf(" 请输入选项编号(0--7) \n");
printf(" 1---创建通讯录 \n");
printf(" 2---显示通讯录 \n");
printf(" 3---查询通讯录 \n");
printf(" 3---查询通讯录 \n");
printf(" 5---添加通讯记录 \n");
printf(" 6---删除通讯记录 \n");
printf(" 7---排通讯记录 \n");
printf(" 0---退出 \n");
printf(" \n");
}
/*
创建通讯录
*/
void mycreat(char num[N][10], char name[N][10], char tel[N][10])
{ int i;
//clrscr();
for(i=0;i<N;i++)
{
printf("\n");
printf("请输入第%d个记录:\n",i+1);
printf("学号:");
do
{
gets(num[i]);
} while(strcmp(num[i],"")==0); //学号不能为空
printf("姓名:");
gets(name[i]);
printf("电话号码:");
gets(tel[i]);
}
return;
}
void mydisplay(char num[N][10], char name[N][10], char tel[N][10])
{
int i;
//clrscr();
printf(" 学号 姓名 电话号码 \n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
void mysearch(char num[N][10],char name[N][10],char tel[N][10])
{ char c;
mydisplay(num,name,tel);
printf("按学号查询(h),还是按姓名查询(m)?");
c=getche();
if(c=='h'||c=='H')
sch_num(num,name,tel);
else if(c=='m'||c=='M')
sch_name(num,name,tel);
else printf("\n非法字符!\n");
}
/* 按学号查询 */
void sch_num(char num[N][10],char name[N][10],char tel[N][10])
{
int i,flag=0;
char nm[10];
printf("\n请输入要查询记录的学号:");
gets(nm);
for(i=0;i<N;i++)
if(strcmp(nm,num[i])==0)
{ printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
flag=1;
}
if(flag==0)
printf("无此人!\n");
}
void sch_name(char num[N][10],char name[N][10],char tel[N][10])
{ int i,flag=0;
char nam[10];
printf("\n请输入要查询记录的姓名:");
gets(nam);
for(i=0;i<N;i++)
if(strcmp(nam,name[i])==0)
{ printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
flag=1;
}
if(flag==0)
printf("无此人!\n");
}
//修改函数
void mymodify(char num[N][10],char name[N][10],char tel[N][10])
{
int i;
char nam[10];
// clrscr();
printf(" 学号 姓名 电话\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
printf("请输入要修改记录的姓名:");
gets(nam);
for(i=0;i<N;i++)
if(strcmp(nam,name[i])==0)
break;
if(i==N)
printf("无此人!\n");
else
{
printf("请输入正确的学号:");
do
{
gets(num[i]);
}
while(strcmp(num[i],"")==0);
printf("请输入正确的姓名:");
gets(name[i]);
printf("请输入正确的电话号码:");
gets(tel[i]);
printf(" 学号 姓名 电话\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
}
void myadd(char num[N][10],char name[N][10],char tel[N][10])
{
int i=0,n;
char c;
char tempnum[10],tempname[10],temptel[10];
//clrscr();
printf("添加前的记录:\n");
printf(" 学号 姓名 电话号码\n");
while(strcmp(num[i],"")!=0)
{ printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
i++;
}
n=i;
do
{
printf("请输入新记录的学号:\n");
do
{
gets(tempnum);
} while(strcmp(tempnum,"")==0); //学号不能为空
printf("请输入新记录的姓名:\n"); gets(tempname);
printf("请输入新记录的电话号码:\n"); gets(temptel);
for(i=0;i<n;i++)
if(strcmp(tempnum,num[i])==0 || strcmp(temptel,tel[i])==0)
{ printf("学号或电话号码重,要重新输入吗(Y/N)?");
c=getche();
putchar('\n');
break;
}
if(i==n)
{ strcpy(num[i],tempnum);
strcpy(name[i],tempname);
strcpy(tel[i],temptel);
printf("添加后的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<n+1;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
break;
}
} while(c=='y'||c=='Y');
}
void mydelete(char num[N][10],char name[N][10],char tel[N][10])
{ int i,x;
char c,nm[10],nam[10];
// clrscr();
printf("删除前的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
printf("按学号删除(h),还是按姓名删除(m)?");
c=getche();
if(c=='h'||c=='H')
{ printf("\n请输入要删除记录的学号:\n");
gets(nm);
for(x=0;x<N;x++)
if(strcmp(nm,name[x])==0)
break;
if(x<N) //说明提前结束循环,找到人
{
for(i=x;i<N-1;i++)
{ strcpy(num[i],num[i+1]);
strcpy(name[i],name[i+1]);
strcpy(tel[i],tel[i+1]);
}
printf("删除后的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N-1;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
else
printf("无此人\n");
}
else
if(c=='m'||c=='M')
{ printf("\n请输入要删除记录的姓名:\n");
gets(nam);
for(x=0;x<N;x++)
if(strcmp(nam,name[x])==0)
break;
if(x<N)
{ for(i=x;i<N-1;i++)
{ strcpy(num[i],num[i+1]);
strcpy(name[i],name[i+1]);
strcpy(tel[i],tel[i+1]);
}
printf("删除后的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N-1;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
else
printf("无此人\n");
}
else
printf("\n非法字符\n");
}
//排序函数
void mysort(char num[N][10],char name[N][10],char tel[N][10])
{ int j,i,k;
char c1,c2,temp[10];
//clrscr();
printf("排序前的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
printf("按学号排序(h),还是按姓名排序(m)?");
c1=getche();
if(c1=='h'||c1=='H')
{ printf("\n按升序排序(s),还是按降序排序(j)?");
c2=getche();
if(c2=='s'||c2=='S')
{
for(i=0;i<N-1;i++)
{
k=i;
for(j=i;j<N;j++)
if(strcmp(name[k],name[j])<0)
k=j;
strcpy(temp,num[k]);
strcpy(num[k],num[i]);
strcpy(num[i],temp);
strcpy(temp,name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],temp);
strcpy(temp,tel[k]);
strcpy(tel[k],tel[i]);
strcpy(tel[i],temp);
}
printf("排序后的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
else if(c2=='j'||c2=='J')
{
for(i=0;i<N-1;i++)
{
k=i;
for(j=0;j<N;j++)
if(strcmp(name[k],name[j])<0)
k=j;
strcpy(temp,num[k]);
strcpy(num[k],num[i]);
strcpy(num[i],temp);
strcpy(temp,name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],temp);
strcpy(temp,tel[k]);
strcpy(tel[k],tel[i]);
strcpy(tel[i],temp);
}
printf("排序后的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
else printf("\n非法字符\n");
}
else if(c1=='m'||c1=='M') //按姓名排序
{ printf("\n按升序排序(s),还是按降序排序(j)?");
c2=getche();
if(c2=='s'||c2=='S')
{
for(i=0;i<N-1;i++)
{
k=i;
for(j=0;j<N;j++)
if(strcmp(name[k],name[j])<0)
k=j;
strcpy(temp,num[k]);
strcpy(num[k],num[i]);
strcpy(num[i],temp);
strcpy(temp,name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],temp);
strcpy(temp,tel[k]);
strcpy(tel[k],tel[i]);
strcpy(tel[i],temp);
}
printf("排序后的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
else if (c2=='j'||c2=='J')
{
for(i=0;i<N-1;i++)
{
k=i;
for(j=i;j<N;j++)
if(strcmp(name[k],name[j])<0)
k=j;
strcpy(temp,num[k]);
strcpy(num[k],num[i]);
strcpy(num[i],temp);
strcpy(temp,name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],temp);
strcpy(temp,tel[k]);
strcpy(tel[k],tel[i]);
strcpy(tel[i],temp);
}
printf("排序后的记录:\n");
printf(" 学号 姓名 电话号码\n");
for(i=0;i<N;i++)
printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}
else printf("\n非法字符!\n");
}
else printf("\n非法字符!\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -