用c语言实现一个通讯录; 通讯录可以存储1000个人的信息,信息包括姓名、性别、年龄、电话、住址 提供方法: 1.添加联系人信息 2.删除指定联系人信息 3.查找指定联系人信息 4.修改指定联系&
2017-05-15 03:25
1081 查看
实现一个简化版的通讯录,可以通过使用结构体和数组就可以实现,具体代码如下:
头文件
头文件
addres_list.h #ifndef __ADDRES_LIST_H__ #define __ADDRES_LIST_H__ #define LIST_MAX 1000 #define NAME_MAX 10 #define ADDRES_MAX 20 #define TELE_MAX 11 #define SEX 3 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct PERS //每个联系人信息的结构 { char name[NAME_MAX]; char sex[SEX]; int age; char tele[TELE_MAX]; char addres[ADDRES_MAX]; }PERS; typedef struct LIST //通讯录结构 { int sz; PERS data[LIST_MAX]; }LIST,*p; //p就是LIST*的重命名 void init_addres_list(p plist); void assres_list_add(p plist); void assres_list_show(p plist); void assres_list_delete(p plist); void assres_list_search(p plist); void assres_list_revise(p plist); void assres_list_sort(p plist); void assres_list_empty(p plist); #endif主函数
test.c #include"addres_list.h" enum List { EXIT, ADD, DELETE, SEARCH, REVISE, SHOW, SORT, EMPTY, }; void menu() { printf("********** 请选择 **********\n"); printf("***** 1.添加 2删除 *****\n"); printf("***** 3.查找 4.修改 *****\n"); printf("***** 5.显示 6.排序 *****\n"); printf("***** 7.清空 0.退出 *****\n"); printf("******************************\n"); } int main() { LIST my_addres_list; init_addres_list(&my_addres_list); int input = 0; do { menu(); scanf("%d", &input); switch (input) { case EXIT: break; case ADD: assres_list_add(&my_addres_list); break; case DELETE: assres_list_delete(&my_addres_list); break; case SEARCH: assres_list_search(&my_addres_list); break; case REVISE: assres_list_revise(&my_addres_list); break; case SHOW: assres_list_show(&my_addres_list); break; case SORT: assres_list_sort(&my_addres_list); break; case EMPTY: assres_list_empty(&my_addres_list); break; } } while (input); return 0; }各封装函数
fun.c #include"addres_list.h" //初始化通讯录 void init_addres_list(LIST *plist) { plist->sz = 0; //memset(plist->data,0, LIST_MAX*sizeof(PERS)); memset(plist->data, 0, sizeof(plist->data)); //在传参过程中,如果参数是数组名,那么传过来的是指针,首元素地址, //这里是函数传过来的参数是结构体地址,而plist->data指向的是结构体的数组, //是真正的数组名,就可以通过sizeof求数组大小 }//添加信息到通讯录 void assres_list_add(p plist) { if (plist->sz == LIST_MAX) { printf("通讯录已满\n"); return; } printf("请输入名字:\n"); scanf("%s", (plist->data[plist->sz].name)); printf("请输入性别:\n"); scanf("%s", (plist->data[plist->sz].sex)); printf("请输入年龄:\n"); scanf("%s", &(plist->data[plist->sz].age)); printf("请输入电话:\n"); scanf("%s", (plist->data[plist->sz].tele)); printf("请输入地址:\n"); scanf("%s", (plist->data[plist->sz].addres)); printf("添加成功!\n"); plist->sz++; } //显示通讯录 void assres_list_show(p plist) //显示当前通讯录信息 { int i = 0; printf("%10s%5s%4s%11s%20s\n", "名字","性别", "年龄", "电话", "地址"); for (i = 0; i < plist->sz; i++) { printf("%10s%5s%4d%11s%20s\n", plist->data[i].name, plist->data[i].sex, plist->data[i].age, plist->data[i].tele, plist->data[i].addres ); } } //查找信息 int find_list(p plist, char name) //查找 { int i = 0; for (i = 0; i < plist->sz; i++) { if (strcmp(name, plist->data[i].name) == 0) { return i; } } if (i > plist->sz) return -1; } //删除信息 void assres_list_delete(p plist) { char name[NAME_MAX] = { 0 }; int i = 0; printf("请输入你要删除的人名\n"); scanf("%s", name); //查找 int pos = find_list(plist, name); if (pos == -1) { printf("没找到该联系人!\n"); return; } else { for (i = pos; i < plist->sz - 1; i++) { plist->data[i] = plist->data[i + 1]; } plist->sz--; } } //查找信息 void assres_list_search(p plist) { char name[NAME_MAX] = { 0 }; int i = 0; printf("请输入你要查找的人名:\n"); scanf("%s", name); int pos = find_list(plist, name); if (pos == -1) { printf("没找到!"); return; } else { printf("%10s%5s%4s%11s%20s\n", "名字", "性别", "年龄", "电话", "地址"); printf("%10s%5s%4d%11s%20s\n", plist->data[pos].name, plist->data[pos].sex, plist->data[pos].age, plist->data[pos].tele, plist->data[pos].addres); } } //修改联系人信息 void assres_list_revise(p plist) { char name[NAME_MAX] = { 0 }; int pos = 0; if (plist->sz == 0) { printf("通讯录为空,修改失败!"); return; } printf("请输入你所要修改信息的人名:\n"); scanf("%s", name); pos = find_list(plist, name); if (pos == -1) { printf("你输入的人名不存在!\n"); } else { printf("请输入名字:\n"); scanf("%s", (plist->data[pos].name)); printf("请输入性别:\n"); scanf("%s", (plist->data[pos].sex)); printf("请输入年龄:\n"); scanf("%s", &(plist->data[pos].age)); printf("请输入电话:\n"); scanf("%s", (plist->data[pos].tele)); printf("请输入地址:\n"); scanf("%s", (plist->data[pos].addres)); printf("修改成功!\n"); } } //根据名字排序 void assres_list_sort(p plist) { int i = 0; for (i = 0; i < plist->sz - 1; i++) { int j = 0; for (j = 0; j < plist->sz - 1 - i; j++) { if (strcmp(plist->data[j].name, plist->data[j + 1].name) > 0) { PERS tmp = plist->data[j]; plist->data[j] = plist->data[j + 1]; plist->data[j + 1] = tmp; } } } printf("排序成功!\n"); } //清空通讯录 void assres_list_empty(p plist) { plist->sz = 0; printf("清空成功!\n"); }
相关文章推荐
- 2.实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联
- 实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定
- 实现一个通讯录,可以用来存储1000个人的信息,每个人的信息包括:姓名,年龄,性别,电话,住址
- //实现中等难度通讯录。需求: //1、定义联系人类Contact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息
- 实现中等难度通讯录。需求: 1、定义联系人类AddressContact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人
- 用C语言模拟实现一个通讯录,要求实现其添加、删除、修改、查找、显示和排序联系人信息的功能
- 实现中等难度通讯录。需求: 1、定义联系人类AddressContact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人
- 实现简单通讯录操作。 1、定义联系人类AddressPerson。实例变量:姓名、性别、电话号码、住址、分组名称。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息 2、在main.m中定义可变
- c语言实现通讯录,包括增加名字,删除信息,查找,修改,排序
- 【通讯录系统】:实现一个通讯录(可添加、删除、修改、查找、显示、清空、排序)
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- 【通讯录系统】:实现一个通讯录(可添加、删除、修改、查找、显示、清空、排序)
- c语言使用链表编写一个可以实现班级学生管理系统,增加,删除,修改学生信息
- 编写一个学生信息管理系统:学生信息包括有(学生学号、姓名、性别、手机号码),系统以学生对象数组的方式存储学生信息 (初始数组为10个元素,每当数组存储满时,需要进行扩容,规则可以为翻倍也可以固定增长
- c语言版通讯录 实现联系人信息的添加,删除,修改,排序,保存,查询
- 用c语言实现 一个通讯录(实现 增加、删除、查找、修改、显示、清空功能)
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- C语言单链表的建立,查找,添加,删除,修改功能实现
- 一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在 链表中删除学生年龄等于age的学生信息。
- (4)一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在些链表中删除学生年龄等于age的学生信息。