【C语言】实现一个通讯录:通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址
2018-07-25 20:03
351 查看
先写一个只能录固定人数的通讯录,不能增容,不能保存。
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
实现功能:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
直接贴代码:
//Contact.h #ifndef __CONTACT_H__ #define __CONTACT_H__ #define MAX 1000 #define NAME_MAX 20 #define SEX_MAX 10 #define TELE_MAX 12 #define ADDR_MAX 20 enum Option { EXIT, ADD, DEL, SEARCH, MODIFY, SHOW, CLEAR, SORT, SAVE }; typedef struct PeoInfo { char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX]; }PeoInfo; typedef struct Contact { struct PeoInfo data[MAX];//存放人的信息 int sz;//记录有效个数 }Contact,* pContact; void InitContact(pContact pc); void AddContact(pContact pc); void ShowContact(pContact pc); void DelContact(pContact pc); int SearchContact(pContact pc); void sort_contact(pContact pc); void ModdifyContact(pContact pc); void ClearContact(pContact pc); #endif //__CONTACT_H__
//Contact.c #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include "Contact.h" #include <string.h> void ShowContact(pContact pc)//显示联系人信息 { int i = 0; printf("%10s\t%5s\t%5s\t%12s\t%12s\t\n", "name", "age", "sex", "tele", "addr"); for (i = 0; i < pc->sz; i++) { printf("%10s\t%5d\t%5s\t%12s\t%12s\t\n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr); } } void InitContact(pContact pc)//初始化通讯录 { pc->sz = 0; memset(pc->data, 0, sizeof(pc->data));//设置内存内容 } void AddContact(pContact pc)//增加联系人 { if (pc->sz==MAX) { printf("通讯录已满,无法增加新的联系人\n"); return; } printf("请输入名字:>"); scanf("%s", pc->data[pc->sz].name); printf("请输入年龄:>"); scanf("%d", &pc->data[pc->sz].age); printf("请输入性别:>"); scanf("%s", pc->data[pc->sz].sex); printf("请输入电话:>"); scanf("%s", pc->data[pc->sz].tele); printf("请输入地址:>"); scanf("%s", pc->data[pc->sz].addr); pc->sz++; } int Find(pContact pc, char name[])//查找 { int i = 0; for (i = 0; i < pc->sz; i++) { if (strcmp(pc->data[i].name, name) == 0) { return i; } } return -1; } void DelContact(pContact pc)//删除联系人 { char name[NAME_MAX] = { 0 }; int i = 0; int pos = 0; if (pc->sz == 0) { printf("通讯录为空,无法删除\n"); return; } //1.找到要删除的人 printf("请输入要删除人的名字:>"); scanf("%s", name); pos = Find(pc, name); if (i == pc->sz) { printf("要删除的人不存在\n"); } //2.删除 for (pos = i; pos < pc->sz-1; pos++) { pc->data[pos] = pc->data[pos + 1]; } pc->sz--; } int SearchContact(pContact pc)//查找指定的联系人 { int pos = 0; char name[NAME_MAX] = { 0 }; printf("请输入要查找联系人的名字:>"); scanf("%s", name); pos = Find(pc, name); if (pos == -1) { printf("查找的联系人不存在\n"); return -1; } else { printf("%10s\t%5d\t%5s\t%12s\t%12s\t\n", pc->data[pos].name, pc->data[pos].age, pc->data[pos].sex, pc->data[pos].tele, pc->data[pos].addr); return pos; } } void ModdifyContact(pContact pc)//修改联系人的信息 { int ret = SearchContact(pc); if (ret != -1) { printf("请输入要修改联系人的信息:>"); printf("请输入修改的名字:>"); scanf("%s", pc->data[ret].name); printf("请输入修改的年龄:>"); scanf("%d", &pc->data[ret].age); printf("请输入修改的性别:>"); scanf("%s", pc->data[ret].sex); printf("请输入修改的电话:>"); scanf("%s", pc->data[ret].tele); printf("请输入修改的地址:>"); scanf("%s", pc->data[ret].addr); } else { printf("无法修改\n"); } } void sort_contact(pContact pc)//以名字排序所有联系人 { int i = 0; int j = 0; for (i = 0; i < pc->sz; i++)//冒泡法排序 { for (j = 0; j < pc->sz -1 - i; j++) { if (strcmp(pc->data[j].name, pc->data[j+1].name)>0) { PeoInfo tmp = pc->data[j]; pc->data[j] = pc->data[j+1]; pc->data[j+1] = tmp; } } } } void ClearContact(pContact pc)// 清空所有联系人 { pc->sz = 0; printf("已清空通讯录\n"); }
//test.c #define _CRT_SECURE_NO_WARNINGS 1 #include "Contact.h" #include <stdio.h> void menu() { printf("****************************\n"); printf("*** 1.ADD 2.DEL ***\n"); printf("*** 3.SEARCH 4.MODIFY***\n"); printf("*** 5.SHOW 6.CLEAR ***\n"); printf("*** 7.SORT 0.EXIT ***\n"); printf("*** 8.SAVE ***\n"); printf("****************************\n"); } void test() { int input = 0; char name[NAME_MAX] = { 0 }; struct Contact con; InitContact(&con);//初始化通讯录 do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact(&con); break; case DEL: DelContact(&con); break; case SEARCH: SearchContact(&con); break; case MODIFY: ModdifyContact(&con); break; case SHOW: ShowContact(&con); break; case CLEAR: ClearContact(&con); case SORT: sort_contact(&con); default: break; } } while (input); } int main() { test(); system("pause"); return 0; }阅读更多
相关文章推荐
- 实现一个通讯录,可以用来存储1000个人的信息,每个人的信息包括:姓名,年龄,性别,电话,住址
- 实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定
- 2.实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联
- 用c语言实现一个通讯录; 通讯录可以存储1000个人的信息,信息包括姓名、性别、年龄、电话、住址 提供方法: 1.添加联系人信息 2.删除指定联系人信息 3.查找指定联系人信息 4.修改指定联系&
- 编写一个学生信息管理系统:学生信息包括有(学生学号、姓名、性别、手机号码),系统以学生对象数组的方式存储学生信息 (初始数组为10个元素,每当数组存储满时,需要进行扩容,规则可以为翻倍也可以固定增长
- //实现中等难度通讯录。需求: //1、定义联系人类Contact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息
- 学生社团管理系统 任务:通过此系统可以实现如下功能(包含但不限于以下功能,可自行设计): 1、社团信息包括:社团编号、社团名称、成立时间…… 2、学生信息包括:学号、姓名、性别、年级、专业…… 3
- 数据结构课程设计 建立一个学生管理系统,以单链表的形式存储,学生信息包括学号,姓名,年龄,出勤,奖励惩罚,电话号码
- 编写程序:建立一个学生数据链表,每个节点的信息包括如下内容:学号,姓名,性别年龄专业。对链表做如下处理。输入一个学号(专业),如果链表中的节点包含此学号(专业),则删去该结点。
- 用MySQL语法建 一个学生表,包括学生姓名、性别、年龄、班级信息。
- 创建一个学生类(Student),包括学号成绩,编程输入和显示学生的信息。建立一个人类(Person),包含姓名、性别和年龄,并作为学生类的基类
- 实现中等难度通讯录。需求: 1、定义联系人类AddressContact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人
- 如何增加一个通讯录信息,信息包括姓名,地址和电话
- 实现简单通讯录操作。 1、定义联系人类AddressPerson。实例变量:姓名、性别、电话号码、住址、分组名称。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息 2、在main.m中定义可变
- 创建一个学生类(Student),包括学号和成绩,编程输入和显示学生的信息,建立一个人类(Person),包含姓名、性别和年龄,并作为学生类的基类
- 假设一个班级有5个人,每个人都会有一些共有的信息:姓名 学号 年龄 分数。从终端输入每个人的信息,然后按照分数从高到低排序,将信息打印到终端上。
- 集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- 实现中等难度通讯录。需求: 1、定义联系人类AddressContact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人
- Student类,包括学生姓名、性别、年龄、Java成绩。要求创建五个该类对象,输出每个学生信息,计算并输出这五个学生Java成绩的平均值, 以及计算并输出他们Ja