【c语言】通讯录

实现一个通讯录;

通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名,性别,年龄,电话,住址

提供方法:1.添加联系人信息

                  2.删除指定联系人信息

                  3.查找指定联系人信息

                  4.修改指定联系人信息

                  5.显示所有联系人信息

                  6.清空所有联系人信息

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 1000
#define NAME_LENGTH 20
#define SEX_LENGTH 5
#define TELE_LENGTH 20
#define ADDR_LENGTH 30
struct PeopleInfo
{
	char name[NAME_LENGTH];
	char sex[SEX_LENGTH];
	int age;
	char tele[TELE_LENGTH];
	char addr[ADDR_LENGTH];
};
struct Contacts
{
	struct PeopleInfo person[MAX];
	int user_count;
};

typedef struct Contacts *pContacts;
int add_mess(pContacts pcon);
int dele_mess(pContacts pcon);
int clear_mess(pContacts pcon);
int find_mess(pContacts pcon);
int modify_mess(pContacts pcon);
void show_mess(pContacts pcon);


int find_entry(pContacts pcon)//找到该人信息所存储的数组下标
{
	int i = 0 ;
	char name[NAME_LENGTH];
	printf("Please input name:");
	scanf("%s",name);
	for(i = 0;i < pcon->user_count;i++)
	{
		if(strcmp(pcon->person[i].name ,name) == 0)
		{
			return i;
		}
	}
	return -1;
}

//添加
int add_mess(pContacts pcon)
{
	if(pcon->user_count == MAX)
	{
		printf("Telephone book is full!\n");
		return -1;
	}
	printf("Please input name:");
	scanf("%s",pcon->person[pcon->user_count].name);
	printf("Please input sex:");
	scanf("%s",pcon->person[pcon->user_count].sex);
	printf("Please input age:");
	scanf("%d",&(pcon->person[pcon->user_count].age));
	printf("Please input tele:");
	scanf("%s",pcon->person[pcon->user_count].tele);
	printf("Please input addr:");
	scanf("%s",pcon->person[pcon->user_count].addr);
	pcon->user_count++;
	return 1;
}

//删除
int dele_mess(pContacts pcon)
{
	int i = 0;
	int ret = find_entry(pcon);
	if(ret != -1)
	{
		for(i = ret;i < pcon->user_count-1;i++)//注意此处要照顾到i+1,当i=user_count-1-1时,i+1=user_count,否则就越界了
		{
			pcon->person[i] = pcon->person[i+1];
		}
		pcon->user_count--;
		return 1;
	}
	else
	{
		printf("not exist!\n");
		return -1;
	}
}

//查找
int clear_mess(pContacts pcon)
{
	pcon->user_count = 0;
	return 1;
}
int find_mess(pContacts pcon)
{
	int ret = find_entry(pcon);
	if(ret != -1)
	{
		printf("name:%s\n",pcon->person[ret].name);
		printf("sex:%s\n",pcon->person[ret].sex);
		printf("age:%d\n",pcon->person[ret].age);
		printf("tele:%s\n",pcon->person[ret].tele);
		printf("addr:%s\n",pcon->person[ret].addr);
		return 1;
	}
	else
	{
		printf("not exist!\n");
		return -1;
	}
}

//修改
int modify_mess(pContacts pcon)
{
	int ret = find_entry(pcon);
	if(ret != -1)
	{
		printf("Please input name:");
		scanf("%s",pcon->person[ret].name);
		printf("Please input sex:");
		scanf("%s",pcon->person[ret].sex);
		printf("Please input age:");
		scanf("%s",pcon->person[ret].age);
		printf("Please input tele:");
		scanf("%s",pcon->person[ret].tele);
		printf("Please input addr:");
		scanf("%s",pcon->person[ret].addr);
		return 1;
	}
	else
	{
		printf("not exist!\n");
		return -1;
	}		
}
 //显示所有
void show_mess(pContacts pcon)
{
	int i = 0;
	printf("\tname\tsex\t\tage\t\ttele\t\t\taddr\n");
	for(i = 0;i < pcon->user_count;i++)
	{
		printf("%10s\t",pcon->person[i].name);
		printf("%5s\t", pcon->person[i].sex);
		printf("%10d\t",pcon->person[i].age);
		printf("%15s\t",pcon->person[i].tele);
		printf("%20s\t",pcon->person[i].addr);
	}
	printf("\n");
}



int main()
{	
	int num=0;
	struct Contacts person;
	person.user_count = 0;
  printf("    1  add person's message           \n");
  printf("    2  delete person's message        \n");
  printf("    3  find person's message          \n");
  printf("    4  modify person's message        \n");
  printf("    5  show all of person's message   \n");
  printf("    6  clear all of person's message  \n");
  printf("    0  quit                           \n");
  while(1)
  {
  printf("please input a number which is you want to operate: ");
  scanf("%d",&num);
  switch(num)
  {
  case 1:    add_mess( &person);
       break;
     case 2:   dele_mess( &person);
      break;
  case 3:   find_mess( &person);
      break;
  case 4:   modify_mess( &person);
      break;
  case 5:   show_mess(&person);
      break;
  case 6:   clear_mess( &person);
     break;
  case 0:   printf("Dear! Thanks for using\n");
     break;
   
  default:  printf("input error");
        break;
  }
  }	
	return 0;
}


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言课程设计任务书(4) 一、题目:通讯录管理 二、目的与要求 1. 目的: (1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题 2. 要求 基本要求: 1.         要求利用C语言面向过程的编程思想来完成系统的设计; 2.       突出C语言的函数特征,以多个函数实现每一个子功能; 3.         画出功能模块图; 4.         具有清晰的程序流程图和数据结构的详细定义; 5.       熟练掌握C语言对文件的各种操作。 创新要求: 在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同 三、信息描述 有关该系统基本信息的描述,如:姓名、电话、城市和邮编等。 四、功能描述 1.       名单基本信息(姓名,城市,电话,邮编等)的录入,并存放在文件当中。 2.       基本信息的查询与修改。 3.       记录的添加和删除。 4.       对同一类型记录的查找:如查找同一城市的记录或同一省份的记录。 五、解决方案 1.       分析程序的功能要求,划分程序功能模块。 2.       画出系统流程图。 3.       代码的编写。定义数据结构和各个功能子函数。 4.       程序的功能调试。 5.       完成系统总结报告以及使用说明书 六、进度安排 此次课程设计时间为一周或两周,分四个阶段完成: 1.       分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。 2.       编码调试阶段:根据设计分析方案编写C代码,然后调试该代码,实现课题要求的功能。 3.       总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。 4.       考核阶段。 七、撰写课程设计报告或课程设计总结 课程设计报告要求: 总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。 八、参考资料  《C语言程序设计教程》   网上相关资料(....略)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值