具体功能
退出通讯录、增加联系人、删除联系人、修改联系人信息、查找联系人、
显示全部联系人信息、按照性名排序
代码
宏定义
#define MAX 1000
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_ADDRESS 20
#define MAX_TEL 20
联系人结构体
typedef struct stu{
char name[MAX_NAME];
char sex[MAX_SEX];
int age;
char tel[MAX_TEL];
char address[MAX_ADDRESS];
}stu;
typedef struct Contact{
stu data[MAX];
int size;
}Contact;
枚举功能选项
enum Chooess{
EXIT,
INSERT,
DELE,
MODIFY,
SEARCH,
SHOWSTU,
SORT
};
功能函数声明
void wel();
void showmenu();
void insert(Contact *p);
void dele(Contact *p);
void modify(Contact *p);
void search(Contact *p);
void showstu(Contact *p);
void sort(Contact *p);
int find_Contact(Contact *p,char name[]);
主函数
int main(){
wel();
int input;
Contact con={0};
do{
showmenu();
printf("\t\t\t\t请输入功能指令!>");
scanf("%d",&input);
switch(input){
case INSERT:
insert(&con);
break;
case DELE:
dele(&con);
break;
case MODIFY:
modify(&con);
break;
case SEARCH:
search(&con);
break;
case SHOWSTU:
showstu(&con);
break;
case SORT:
sort(&con);
break;
case EXIT:
printf("\n\t\t\t\t退出通讯本系统!\n");
break;
default:
printf("\n\t\t\t\t您输入的指令有误!\n");
break;
}
}while(input!=0);
return 0;
}
欢迎函数
void wel(){
printf("\t\t\t*****************************************************************\n");
printf("\t\t\t**********************Welcom to address book !!!*****************\n");
printf("\t\t\t*****************************************************************\n\n");
}
功能指令提示
void showmenu(){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t******************功能简介,如下:******************\n");
printf("\t\t\t\t****************************************************\n");
printf("\t\t\t\t******************0、退出通讯录 ********************\n");
printf("\t\t\t\t******************1、增加联系人*********************\n");
printf("\t\t\t\t******************2、删除联系人*********************\n");
printf("\t\t\t\t******************3、修改联系人信息*****************\n");
printf("\t\t\t\t******************4、查找联系人*********************\n");
printf("\t\t\t\t******************5、显示全部联系人信息*************\n");
printf("\t\t\t\t******************6、按照性名排序*******************\n");
printf("\t\t\t\t****************************************************\n");
}
增加函数
void insert(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用添加联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
if(p->size==MAX){
printf("\n\t\t\t\t超出存储容量限制,不能在添加联系人!\n");
}else{
printf("\n\t\t\t\t请您进行信息录入:>\n");
printf("\t\t\t\t联系人姓名:");
scanf("%s",p->data[p->size].name) ;
printf("\t\t\t\t联系人性别:");
scanf("%s",p->data[p->size].sex) ;
printf("\t\t\t\t联系人年龄:");
scanf("%d",&p->data[p->size].age) ;
printf("\t\t\t\t联系人电话:");
scanf("%s",p->data[p->size].tel) ;
printf("\t\t\t\t联系人住址:");
scanf("%s",p->data[p->size].address) ;
printf("\t\t\t\t添加成功!\n");
p->size++;
}
}
查找要查找的联系人函数
int find_Contact(Contact *p,char name[]){
for(int i=0;i<p->size;i++){
if(strcmp(p->data[i].name,name)==0){
return i;
}
}
return -1;
}
删除函数
void dele(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用删除联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
printf("\t\t\t\t请输入要删除的联系人姓名:>");
char name[MAX_NAME];
scanf("%s",name);
int pos=find_Contact(p,name);
if(pos==-1){
printf("\n\t\t\t\t您要删除的联系人不在通讯本中!!!\n");
}else{
for(int i=pos;i<p->size-1;i++){
p->data[i]=p->data[i+1];
}
printf("\n\t\t\t\t删除成功!\n");
p->size--;
}
}
修改函数
void modify(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用修改联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
printf("\n\t\t\t\t请输入要修改的联系人姓名:>");
char name[MAX_NAME];
scanf("%s",name);
int pos=find_Contact(p,name);
if(pos==-1){
printf("\n\t\t\t\t您要修改的联系人不在通讯本中!!!\n");
}else{
printf("\t\t\t\t请您进行新信息录入:>\n");
printf("\t\t\t\t联系人新的姓名:");
scanf("%s",p->data[pos].name) ;
printf("\t\t\t\t联系人新的性别:");
scanf("%s",p->data[pos].sex) ;
printf("\t\t\t\t联系人新的年龄:");
scanf("%d",&p->data[pos].age) ;
printf("\t\t\t\t联系人新的电话:");
scanf("%s",p->data[pos].tel) ;
printf("\t\t\t\t联系人新的住址:");
scanf("%s",p->data[pos].address) ;
printf("\t\t\t\t修改成功!\n");
}
}
查找函数
void search(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用查找联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
printf("\n\t\t\t\t请输入要查找的联系人姓名:>");
char name[MAX_NAME];
scanf("%s",name);
int pos=find_Contact(p,name);
if(pos==-1){
printf("\n\t\t\t\t您要查找的联系人不在通讯本中!!!\n");
}else{
printf("\n\t\t\t\t查找成功!查找到的联系人信息如下:\n");
printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
pos+1,
p->data[pos].name,
p->data[pos].sex,
p->data[pos].age,
p->data[pos].tel,
p->data[pos].address
) ;
}
}
显示联系人函数
void showstu(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*************使用显示全部联系人信息功能*************\n");
printf("\t\t\t\t****************************************************\n");
if(p->size==0){
printf("\n\t\t\t\t未添加联系人信息!\n");
}else{
printf("\n\t\t\t\t全部联系人信息如下:\n");
printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
for(int i=0;i<p->size;i++){
printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
i+1,
p->data[i].name,
p->data[i].sex,
p->data[i].age,
p->data[i].tel,
p->data[i].address
) ;
}
}
}
排序函数
void sort(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*************使用排序全部联系人信息功能*************\n");
printf("\t\t\t\t****************************************************\n");
if(p->size==0){
printf("\n\t\t\t\t未添加联系人信息!\n");
} else{
for(int i=0;i<p->size;i++){
for(int j=0;j<p->size-1-i;j++){
if(strcmp(p->data[j].name,p->data[j+1].name)>0){
stu temp=p->data[j];
p->data[j]=p->data[j+1];
p->data[j+1]=temp;
}
}
}
printf("\n\t\t\t\t排序成功!\n\t\t\t\t排序后全部联系人信息如下:\n");
printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
for(int i=0;i<p->size;i++){
printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
i+1,
p->data[i].name,
p->data[i].sex,
p->data[i].age,
p->data[i].tel,
p->data[i].address
) ;
}
}
}
总代码:
#include<stdio.h>
#include<string.h>
#define MAX 1000
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_ADDRESS 20
#define MAX_TEL 20
typedef struct stu{
char name[MAX_NAME];
char sex[MAX_SEX];
int age;
char tel[MAX_TEL];
char address[MAX_ADDRESS];
}stu;
typedef struct Contact{
stu data[MAX];
int size;
}Contact;
enum Chooess{
EXIT,
INSERT,
DELE,
MODIFY,
SEARCH,
SHOWSTU,
SORT
};
void wel();
void showmenu();
void insert(Contact *p);
void dele(Contact *p);
void modify(Contact *p);
void search(Contact *p);
void showstu(Contact *p);
void sort(Contact *p);
int find_Contact(Contact *p,char name[]);
int main(){
wel();
int input;
Contact con={0};
do{
showmenu();
printf("\t\t\t\t请输入功能指令!>");
scanf("%d",&input);
switch(input){
case INSERT:
insert(&con);
break;
case DELE:
dele(&con);
break;
case MODIFY:
modify(&con);
break;
case SEARCH:
search(&con);
break;
case SHOWSTU:
showstu(&con);
break;
case SORT:
sort(&con);
break;
case EXIT:
printf("\n\t\t\t\t退出通讯本系统!\n");
break;
default:
printf("\n\t\t\t\t您输入的指令有误!\n");
break;
}
}while(input!=0);
return 0;
}
void wel(){
printf("\t\t\t*****************************************************************\n");
printf("\t\t\t**********************Welcom to address book !!!*****************\n");
printf("\t\t\t*****************************************************************\n\n");
}
void showmenu(){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t******************功能简介,如下:******************\n");
printf("\t\t\t\t****************************************************\n");
printf("\t\t\t\t******************0、退出通讯录 ********************\n");
printf("\t\t\t\t******************1、增加联系人*********************\n");
printf("\t\t\t\t******************2、删除联系人*********************\n");
printf("\t\t\t\t******************3、修改联系人信息*****************\n");
printf("\t\t\t\t******************4、查找联系人*********************\n");
printf("\t\t\t\t******************5、显示全部联系人信息*************\n");
printf("\t\t\t\t******************6、按照性名排序*******************\n");
printf("\t\t\t\t****************************************************\n");
}
void insert(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用添加联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
if(p->size==MAX){
printf("\n\t\t\t\t超出存储容量限制,不能在添加联系人!\n");
}else{
printf("\n\t\t\t\t请您进行信息录入:>\n");
printf("\t\t\t\t联系人姓名:");
scanf("%s",p->data[p->size].name) ;
printf("\t\t\t\t联系人性别:");
scanf("%s",p->data[p->size].sex) ;
printf("\t\t\t\t联系人年龄:");
scanf("%d",&p->data[p->size].age) ;
printf("\t\t\t\t联系人电话:");
scanf("%s",p->data[p->size].tel) ;
printf("\t\t\t\t联系人住址:");
scanf("%s",p->data[p->size].address) ;
printf("\t\t\t\t添加成功!\n");
p->size++;
}
}
int find_Contact(Contact *p,char name[]){
for(int i=0;i<p->size;i++){
if(strcmp(p->data[i].name,name)==0){
return i;
}
}
return -1;
}
void dele(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用删除联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
printf("\t\t\t\t请输入要删除的联系人姓名:>");
char name[MAX_NAME];
scanf("%s",name);
int pos=find_Contact(p,name);
if(pos==-1){
printf("\n\t\t\t\t您要删除的联系人不在通讯本中!!!\n");
}else{
for(int i=pos;i<p->size-1;i++){
p->data[i]=p->data[i+1];
}
printf("\n\t\t\t\t删除成功!\n");
p->size--;
}
}
void modify(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用修改联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
printf("\n\t\t\t\t请输入要修改的联系人姓名:>");
char name[MAX_NAME];
scanf("%s",name);
int pos=find_Contact(p,name);
if(pos==-1){
printf("\n\t\t\t\t您要修改的联系人不在通讯本中!!!\n");
}else{
printf("\t\t\t\t请您进行新信息录入:>\n");
printf("\t\t\t\t联系人新的姓名:");
scanf("%s",p->data[pos].name) ;
printf("\t\t\t\t联系人新的性别:");
scanf("%s",p->data[pos].sex) ;
printf("\t\t\t\t联系人新的年龄:");
scanf("%d",&p->data[pos].age) ;
printf("\t\t\t\t联系人新的电话:");
scanf("%s",p->data[pos].tel) ;
printf("\t\t\t\t联系人新的住址:");
scanf("%s",p->data[pos].address) ;
printf("\t\t\t\t修改成功!\n");
}
}
void search(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*****************使用查找联系人功能*****************\n");
printf("\t\t\t\t****************************************************\n");
printf("\n\t\t\t\t请输入要查找的联系人姓名:>");
char name[MAX_NAME];
scanf("%s",name);
int pos=find_Contact(p,name);
if(pos==-1){
printf("\n\t\t\t\t您要查找的联系人不在通讯本中!!!\n");
}else{
printf("\n\t\t\t\t查找成功!查找到的联系人信息如下:\n");
printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
pos+1,
p->data[pos].name,
p->data[pos].sex,
p->data[pos].age,
p->data[pos].tel,
p->data[pos].address
) ;
}
}
void showstu(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*************使用显示全部联系人信息功能*************\n");
printf("\t\t\t\t****************************************************\n");
if(p->size==0){
printf("\n\t\t\t\t未添加联系人信息!\n");
}else{
printf("\n\t\t\t\t全部联系人信息如下:\n");
printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
for(int i=0;i<p->size;i++){
printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
i+1,
p->data[i].name,
p->data[i].sex,
p->data[i].age,
p->data[i].tel,
p->data[i].address
) ;
}
}
}
void sort(Contact *p){
printf("\n\t\t\t\t****************************************************\n");
printf("\t\t\t\t*************使用排序全部联系人信息功能*************\n");
printf("\t\t\t\t****************************************************\n");
if(p->size==0){
printf("\n\t\t\t\t未添加联系人信息!\n");
} else{
for(int i=0;i<p->size;i++){
for(int j=0;j<p->size-1-i;j++){
if(strcmp(p->data[j].name,p->data[j+1].name)>0){
stu temp=p->data[j];
p->data[j]=p->data[j+1];
p->data[j+1]=temp;
}
}
}
printf("\n\t\t\t\t排序成功!\n\t\t\t\t排序后全部联系人信息如下:\n");
printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
for(int i=0;i<p->size;i++){
printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
i+1,
p->data[i].name,
p->data[i].sex,
p->data[i].age,
p->data[i].tel,
p->data[i].address
) ;
}
}
}
参考:https://blog.csdn.net/m0_50595617/article/details/112900602