急求c语言 个人通讯录 程序设计

 我来答
碧海风云

2017-06-26 · 碧海风的秘密小据点!
碧海风云
采纳数:909 获赞数:10281

向TA提问 私信TA
展开全部

给题主一个简单的通讯录程序吧

#include <stdio.h>
#include <string.h>

#define ARRAY_LEN 30

/*联系人结构体*/
/*注:本程序忽略重名现象。若重名则查找时以最后输入的联系人为准。*/
typedef struct{
char name[10];
int age;
char sex[10];
char mp[13];
char tel[13];
} friend_list;

/*打印所有联系人信息*/
void printAll (friend_list friList[], int *friNum) {
int i;

if (*friNum) {
printf ("姓名\t\t年龄\t\t性别\t\t手机\t\t家庭\n");
for (i=0; i<*friNum; i++)
printf ("%s\t\t%d\t\t%s\t\t%s\t\t%s\n",friList[i].name,friList[i].age,friList[i].sex,friList[i].mp,friList[i].tel);
printf ("\n");
}
else {
printf ("无任何联系人信息!\n");
printf ("\n");
}

}

/*打印联系人信息*/
void printFri (friend_list friList[], int index) {

if (index==-1) {
printf ("查无此人!\n");
printf ("\n");
}
else {
printf ("姓名\t\t年龄\t\t性别\t\t手机\t\t家庭\n");
printf ("%s\t\t%d\t\t%s\t\t%s\t\t%s\n",friList[index].name,friList[index].age,friList[index].sex,friList[index].mp,friList[index].tel);
printf ("\n");
}
}

/*按姓名定位联系人所在数组位置*/
int findIndex (friend_list friList[], int *friNum, char *tarName) {
int i,index;
index =-1;

for (i=0; i<*friNum; i++)
if (strcmp(tarName, friList[i].name) == 0) /*两字符串相等strcmp函数返回0*/
index = i; /*定位联系人在结构体数组中的下标*/

return index;
}

/*录入联系人信息*/
void addFri (friend_list friList[], int *friNum) {
int i = *friNum;

printf ("请输入联系人信息:\n");
printf ("姓名:");
scanf ("%s",&friList[i].name); 
printf ("年龄:");
scanf ("%d",&friList[i].age);
printf ("性别:");
scanf ("%s",&friList[i].sex);
printf ("手机:");
scanf ("%s",&friList[i].mp);
printf ("家庭:");
scanf ("%s",&friList[i].tel);

*friNum +=1; /*联系人数加1*/

printf ("\n");
}

/*按姓名查找联系人信息*/
void findFri (friend_list friList[], int *friNum) {
int i,index;
char tarName[10];

printf ("请输入欲查找的联系人姓名:");
scanf ("%s",&tarName);
printf ("\n");

index = findIndex (friList, friNum, tarName);
printFri (friList, index); /*打印联系人信息*/
}

/*删除联系人信息*/
void delFri (friend_list friList[], int *friNum) {
int i,index;
char tarName[10];

printf ("请输入欲删除的联系人姓名:");
scanf ("%s",&tarName);
printf ("\n");

index = findIndex (friList, friNum, tarName);

if (index == -1) {
printf ("查无此人!\n");
printf ("\n");
}
else {
for (i=index; i<*friNum; i++)
friList[i] = friList[i+1]; 
*friNum-=1;
printf ("联系人%s已删除!\n",tarName);
printf ("\n");
}
}

/*修改联系人信息*/
void altFri (friend_list friList[], int *friNum) {
int index;
char tarName[10];

printf ("请输入欲修改的联系人姓名:");
scanf ("%s",&tarName);
printf ("\n");

index = findIndex (friList, friNum, tarName);

if (index == -1) {
printf ("查无此人!\n");
printf ("\n");
}
else {
printf ("请重新输入联系人信息:\n");
printf ("姓名:%s\n",friList[index].name);
printf ("年龄:");
scanf ("%d",&friList[index].age);
printf ("性别:");
scanf ("%s",&friList[index].sex);
printf ("手机:");
scanf ("%s",&friList[index].mp);
printf ("家庭:");
scanf ("%s",&friList[index].tel);

printf ("联系人%s信息已修改!\n",tarName);
printf ("\n");
}
}

/*打印菜单*/
void printMenu (void) {
printf ("======================================================\n\n");
printf ("序号\t功能详情\n");
     printf ("1\t新增联系人\n");
     printf ("2\t按姓名查找联系人\n");
     printf ("3\t按姓名删除联系人\n");
     printf ("4\t按姓名修改联系人\n");
     printf ("5\t列出所有联系人信息\n");
     printf ("6\t退出\n");
     printf ("\n");
printf ("======================================================\n\n");
}

/*输入命令*/
int instructions (void) {
int key;

printf ("请输入功能序号以开启操作:");
scanf ("%d",&key);
printf ("\n");
printf ("======================================================\n\n");

return key;
}

int main(void) {
int key;

int friNum = 0; /*联系人数量*/
friend_list friList[ARRAY_LEN]; /*联系人结构体数组*/

do {
printMenu ();

key = instructions ();

     switch (key){
         case 1: addFri (friList, &friNum); break;
         case 2: findFri (friList, &friNum); break;
         case 3: delFri (friList, &friNum); break;
         case 4: altFri (friList, &friNum); break;
         case 5: printAll (friList, &friNum); break;
         case 6: printf("程序结束!\n\n"); break;
         default: printf("输入错误,请重新输入!\n\n");break;
     }
     if (key!=6) {
     printf("按回车键继续\n");getchar ();getchar ();
    }
} while(key!=6);
return 0;
}

运行结果

主界面

新增联系人

查找联系人

删除联系人

修改联系人

列出所有联系人

追问
为什么这个程序本身运行不了呢
追答
哪儿有问题嘞?截个图看看呗
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式