一、课题功能描述

设计一个通讯录管理程序,并对它进行增加、查询、修改、删除、显示记录等操作。
功能描述如下:
(1)main()的功能:根据选单的选项调用各函数,并完成相应的功能。
(2)创建功能:应用结构体数组创建新的通讯录,包括姓名、住址、电话、分类(包括家人类、朋友类和黑名单)等信息。
(3)追加功能:在通讯录的末尾追加新的信息,并返回选单。
(4)查询功能:查询某人的信息。如果找到了则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
(5)修改功能:修改某人信息。如果未找到要修改的人,则提示没有此人信息并返回选单。
(6)删除功能:删除某人的信息。如果未找到要删除的人,则提示没有此人的信息,并返回选单。
(7)列表功能:显示通讯录中的所有记录。

二、基本原理

(1)定义结构体数据类型用于保存个人记录;
(2)通过结构体数组保存所有通信录信息。
(3)对结构体数组中的数据实现添加、删除、修改和查询等操作。

三、程序代码

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

void add();
void show(); 
void del();
void chaxun();
void xiugai();
void paixu();
struct Lianxiren  
{
	char name[20];
	int sex;
	char tel[20];
	int group;//1-家人  2-朋友  3-同学  4-黑名单
}ren[50];
int current=0;

void main()
{
	int a;
	while(1)
	{	puts("-------welcome-------");
		puts("\t1:添加");
		puts("\t2:修改");
		puts("\t3:显示");
		puts("\t4:查询");
		puts("\t5:删除");
		puts("\t6:排序");
		puts("\t0:退出");
		puts("输入数字,选择操作:");
		char x;
		scanf("%c",&x);
		switch(x)
		{
		case '1':add();
			break;
		case '2':xiugai();
			break;
		case '3':show();
			break;
	    case '4':chaxun();
			break;
		case '5':del();
			break;
		case '6':paixu();
			break;
		case '0':scanf("%c",&x);
			return;
		}
		scanf("%c",&x);
	}
}

void add()
{
	
	while(1)
	{
		fflush(stdin);
		//char c;
		//scanf("%c",&c);
	printf("\nname:");
	gets(ren[current].name);
	printf("tel:");
	gets(ren[current].tel);
	printf("sex(0-男,1-女):");
	scanf("%d",&ren[current].sex);
	printf("group(1-家人  2-朋友  3-同学  4-黑名单):");
	scanf("%d",&ren[current].group);
	current++;
	printf("continue input?(Y/N)");
	char result;
	result=getchar();
	result=getchar();
	if(result!='Y')
	{result=getchar();break;

	}
	}
}

void show()
{
	
	printf("\t%-5s%-15s%-15s%-20s%-8s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
	for(int i=0;i<current;i++)
	{
		printf("\t%-5d%-15s%-15s%-20d%-8d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
	}
}
void del()
{
	
	show ();
	puts("input num:");
	int k;
	scanf("%d",&k);
	for(int i=k-1;i<current;i++)
	{
		ren[i]=ren[i+1];
	}
	current--;
	
}
void chaxun()
{
	int c;
	printf("输入查询类别:1-名字查询,2-列表查询,3-返回");
	scanf("%d",&c);
	switch(c)
	{
		case 1:
	printf("输入查询人名字:");
		char a[20];
	scanf("%s",&a);
		for(int i=0;i<=current;i++)
		{
			if(strcmp(a,ren[i].name)==0)
			{
				printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
				printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
				break;
				
			}
			if(i==current)
				printf("查无此人\n");

			
		} break;
		case 2:printf("输入查询列表:1-家人,2-朋友,3-同学,4-黑名单,5-返回");
			int d;
			scanf("%d",&d);
			switch(d){
		case 1:for(int i=0;i<current;i++)
		{
			if(1==ren[i].group)
			{
				printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
				printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
				
			}
			}break;
		case 2:for(int i=0;i<current;i++)
		{
			if(2==ren[i].group)
			{
				printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
				printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
				
			}
			}break;
		case 3:for(int i=0;i<current;i++)
		{
			if(3==ren[i].group)
			{
				printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
				printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
				
			}
	}break;
		case 4:for(int i=0;i<current;i++)
		{
			if(4==ren[i].group)
			{
				printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
				printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
				
			}
			   }break;
		
		case 5:break;}
		case 3:break;
	}
}


void xiugai()
{
	char s[20];
	int i;
	printf("输入修改人的姓名:");
    scanf("%s",&s);
	for(i=0;i<=current;i++)
	{
	if(strcmp(s,ren[i].name)==0)
	{
		printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
	     printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
		
	
    printf("输要修改的位置:1-name,2-tel,3-sex,4-group");
		int m;
		scanf("%d",&m);
		switch(m)
		{
		case 1:printf("输入修改后的姓名:");scanf("%s",ren[i].name);break;
		case 2:printf("输入修改后的电话:");scanf("%s",ren[i].tel);break;
		case 3:printf("输入修改后的性别(0-男,1-女):");scanf("%d",ren[i].sex);break;
		case 4:printf("输入修改后的分组(1-家人,2-朋友,3-同学,4-黑名单 )");scanf("%d",ren[i].group);break;
		}
	}
		if(i==current)
			printf("查无此人\n");
	}
}
void paixu()
{
	printf("请输入序号:1-升序,2-降序");
	int b;
	scanf("%d",&b);
	switch(b){
		case 1:
			for(int i=0;i<current-1;i++)
				{for(int j=0;j<current-1-i;j++)
					if(strcmp(ren[j].name,ren[j+1].name)<0)
					{
						char b[100];
						Lianxiren t=ren[j];
						ren[j]=ren[j+1];
						ren[j+1]=t;
					}}
					show();
					break;
		case 2:
			int k,l;
			for(int k=0;k<current-1;k++)
				{for(int l=0;l<current-1-k;l++)
					if(strcmp(ren[l].name,ren[l+1].name)>0)
					{
						char c[100];
						Lianxiren u=ren[l];
						ren[l]=ren[l+1];
						ren[l+1]=u;
					}}show();break;

	}}

Logo

快速构建 Web 应用程序

更多推荐