通信录系统
一、课程设计的题目及简介
题目:通信录
简介:设计一个通信录由以下几项数据信息构成:
数据项 | 类型 |
姓名 | 字符串 |
电话号码 | 字符串 |
地址 | 字符串 |
邮政编码 | 字符串 |
试为通信录数据定义类型和通信录变量,实现功能:输入记录、添加、显示、查询、删除记录等功能。
二、设计说明
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、培养了我耐心、仔细、谨慎的工作态度。这次课程设计的内容最多的是函数的自定义实现。在自定义函数中,对变量选定以及合理的布局都要有细致的规划,这是最考验一个人的耐心与严谨态度的过程,只有这样才能使绘制的函数更准确、更美观。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律