通信录系统

一、课程设计的题目及简介

 

 题目:通信录

简介:设计一个通信录由以下几项数据信息构成:

 

数据项

类型

姓名

字符串

电话号码

字符串

地址

字符串

邮政编码

字符串

 

试为通信录数据定义类型和通信录变量,实现功能:输入记录、添加、显示、查询、删除记录等功能。

二、设计说明

1、底层逻辑

   (1)定义结构体数据类型保存联系人信息;

   (2)通过结构体数组来保存、修改通信录信息;

   (3)对结构体数组的数据实现输入、添加、显示、查询、删除功能

2、主要函数说明

       main():调用库函数和自定义函数完成功能

       menu(): 打印菜单界面

     Import():输入联系人的通讯信息

        Add(): 添加联系人的通讯信息

       Show(): 显示所有联系人的通讯信息

       Query():根据联系人的名字查询该人的所有通讯信息

       Delete():根据所要删除的联系人编号来删除该人的全部信息

三、程序流图   

 四、源代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int ret = 0;

struct Maillist
{
	char Name[20];
	char Address[20];
	char PostalCode[20];
	char TelephoneNumber[20];
}People[100];

//菜单
void menu()
{
	printf("************************************\n");
	printf("**********  1.输入  ****************\n");
	printf("**********  2.添加  ****************\n");
	printf("**********  3.显示  ****************\n");
	printf("**********  4.查询  ****************\n");
	printf("**********  5.删除  ****************\n");
	printf("**********  6.退出  ****************\n");
	printf("************************************\n");
}
//输入
void Import()
{
	printf("请输入联系人通讯信息\n");
	fflush(stdin);
	
	printf("姓名:");
	gets(People[ret].Name);
	scanf("%s", &People[ret].Name);

	printf("电话号码:");
	gets(People[ret].TelephoneNumber);
	scanf("%s", &People[ret].TelephoneNumber);

	printf("地址:");
	gets(People[ret].Address);
	scanf("%s", &People[ret].Address);

	printf("邮政编码:");
	gets(People[ret].PostalCode);
	scanf("%s", &People[ret].PostalCode);

	ret++;
}
//添加
void Add()
{
	fflush(stdin);

	printf("姓名:");
	gets(People[ret].Name);
	scanf("%s", &People[ret].Name);

	printf("电话号码:");
	gets(People[ret].TelephoneNumber);
	scanf("%s", &People[ret].TelephoneNumber);

	printf("地址:");
	gets(People[ret].Address);
	scanf("%s", &People[ret].Address);

	printf("邮政编码:");
	gets(People[ret].PostalCode);
	scanf("%s", &People[ret].PostalCode);

	ret++;
	/*printf("%d\n", ret);*/
}
//显示
void Show()
{
	int i = 0;
	for (i = 0; i < ret; i++)
	{
		printf("%d.姓名:%s\n", i+1, People[i].Name);
		printf("%d.电话号码:%s\n", i+1, People[i].TelephoneNumber);
		printf("%d.地址:%s\n", i+1, People[i].Address);
		printf("%d.邮政编码:%s\n", i+1, People[i].PostalCode);
		printf("\n");
	}
}
//查询
void Query()
{
	char name[20];
	int count = 0;
	int i = 0;
	
	printf("请输入查询人的名字:>");
	scanf("%s", &name);
	for (i = 0; i < ret; i++)
	{
		if (strcmp(name, People[i].Name) == 0)
		{
			printf("%d.姓名:%s\n", i + 1, People[i].Name);
			printf("%d.电话号码:%s\n", i + 1, People[i].TelephoneNumber);
			printf("%d.地址:%s\n", i + 1, People[i].Address);
			printf("%d.邮政编码:%s\n", i + 1, People[i].PostalCode);
			printf("\n");
			break;//默认一个人只有一个电话号码
		}
		count++;
		
	}
	if(count == ret)
	{
		printf("查无此人\n");

	}
	
}
//删除
void Delete()
{
	Show();
	int num = 0;
	printf("请问您找到了要删除的联系人的编号了吗? 如果找到了输入1将退出此询问;如果没有输入0我们可以为您查找:>");
	scanf("%d", &num);
	
	if(num != 1)
	{
		if (num==0)
		{
			Query();
		}
		else
		{
			int p = 0;
			do {
				printf("输入错误,重新输入1或0:>");
				scanf("%d", &p);
			} while ((p != 0) & (p != 1));
			Query();

		}
	}
		int k = 0;
		int j = 0;
		printf("请输入要删除的联系人的编号:>");
		scanf("%d", &k);
		for (j = k - 1; j < ret; j++)
		{
			People[j] = People[j + 1];
		}
		ret--;
		printf("删除成功\n");
		Show();
	}


void main()
{
	int input = 0;
	do
	{
		menu();//打印菜单 
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			Import();
			break;
		case 2:
			Add();
			break;
		case 3:
			Show();
			break;
		case 4:
			Query();
			break;
		case 5:
			Delete();
			break;
		case 6:
			printf("退出\n");
			break;
		default:
			printf("选择错误,重新选择\n");
			break;
		}
	} while (input);
	
}

五、课程设计总结(200以上)

1、通过课程设计,使我加深了对所学理论知识的理解与巩固,并能将课本上的知识应用到实践中,进一步加深了对知识的认识。同时,也有助于对其他知识的理解。现在,我不但对图解画图有了更深入的理解,而且熟练了应用图解法对所要设计的框架进行分析。

1、培养了我耐心、仔细、谨慎的工作态度。这次课程设计的内容最多的是函数的自定义实现。在自定义函数中,对变量选定以及合理的布局都要有细致的规划,这是最考验一个人的耐心与严谨态度的过程,只有这样才能使绘制的函数更准确、更美观。

posted @   morphism  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示