【C语言基础】C语言实现静态通讯录
2018-01-13 22:39
513 查看
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
头文件:
源文件:
test.c
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
头文件:
#pragma once #include<stdio.h> #define NAME_MAX 200 #define GENDER_MAX 200 #define TEL_MAX 200 #define ADDR_MAX 200 #define NUM_MAX 1000 typedef struct Contact{ char name[NAME_MAX]; char gender[GENDER_MAX]; int age; char tel[TEL_MAX]; char addr[ADDR_MAX]; }Contact; typedef struct AddressBook{ struct Contact data[NUM_MAX]; int sz; }AddressBook; //初始化通讯录 void InitAddressBook(AddressBook* addr); //添加联系人信息 void AddContact(AddressBook* addr); //删除联系人信息 void DeleteContact(AddressBook* addr); //通过人名查找联系人 int FindContact(AddressBook* addr, char* name); //查找指定联系人信息 void SearchContact(AddressBook* addr); //修改指定联系人 void ModifyContact(AddressBook* addr); //显示所有联系人信息 void ShowContact(AddressBook* addr); //清空所有联系人 void ClearContact(AddressBook* addr); //以名字排序所有联系人 void NameSortingContact(AddressBook* addr);
源文件:
#define _CRT_SECURE_NO_WARNINGS 1 #include<string.h> #include"Address_Book.h" void InitAddressBook(AddressBook* addr) { if (addr == NULL) { return; } addr->sz = 0; } void AddContact(AddressBook* addr) { if (addr == NULL) { //非法输入 return; } if (addr->sz == NUM_MAX) { printf("通讯录已满!!!\n"); } printf("请输入联系人姓名:"); scanf("%s\n", addr->data[addr->sz].name); printf("请输入联系人性别:"); scanf("%s\n", addr->data[addr->sz].gender); printf("请输入联系人年龄:"); scanf("%d\n", &addr->data[addr->sz].age); printf("请输入联系人电话:"); scanf("%s\n", addr->data[addr->sz].tel); printf("请输入联系人地址:"); scanf("%s\n", addr->data[addr->sz].addr); printf("添加成功!\n"); addr->sz++; } void ShowContact(AddressBook* addr) { if (addr == NULL) { //非法输入 return; } if (addr->sz == 0) { printf("通讯录为空!!"); return; } printf("%10s %5s %4s %11s %30s\n", "姓名","性别","年龄","电话","地址"); int i = 0; for (; i < addr->sz; i++) { printf("%10s %5s %4d %11s %30s\n",addr->data[i].name, addr->data[i].gender, addr->data[i].age, addr->data[i].tel, addr->data[i].addr); } } int FindContact(AddressBook* addr, char* name) { if (addr == NULL) { return; } int i = 0; for (; i < addr->sz; i++) { if (strcmp(addr->data[i].name, name) == 0){ return i; } } if (i > addr->sz) { return -1; } } void DeleteContact(AddressBook* addr) { if (addr == NULL) { //非法输入 return; } printf("请输入您需要删除的联系人姓名:"); char name[NAME_MAX]; scanf("%s", &name); int ret = FindContact(addr, name); if (ret == -1) { printf("查无此人\n"); return; } //找到了,下标为ret else { for (; ret < addr->sz; ret++) { addr->data[ret] = addr->data[ret + 1]; } //把联系人数量-1 addr->sz--; } } void SearchContact(AddressBook* addr) { if (addr == NULL) { return; } char name[NAME_MAX]; printf("请输入您需要查找的人的姓名:"); scanf("%s", name); int i = FindContact(addr, name); if (i == -1) { printf("查无此人"); return; } else{ printf("%10s %5s %4s %11s %30s\n", "姓名", "性别", "年龄", "电话", "地址"); printf("%10s %5s %4d %11s %30s\n", addr->data[i].name, addr->data[i].gender, addr->data[i].age, addr->data[i].tel, addr->data[i].addr); } } void ModifyContact(AddressBook* addr) { if (addr == NULL) { return; } printf("请输入您所需要修改信息的联系人姓名:"); char name[NAME_MAX]; scanf("%s", name); if (addr->sz == 0) { printf("通讯录为空!!"); return; } int i = FindContact(addr, name); if (i == -1) { printf("查无此人"); return; } else{ printf("请输入修改的姓名:"); scanf("%s", addr->data[i].name); printf("请输入修改的性别:"); scanf("%s",addr->data[i].gender); printf("请输入修改的年龄:"); scanf("%d",&addr->data[i].age); printf("请输入修改的电话:"); scanf("%s", addr->data[i].tel); printf("请输入修改的地址:"); scanf("%s", addr->data[i].addr); printf("修改成功!"); } } void ClearContact(AddressBook* addr) { if (addr == NULL) { //非法输入 return; } addr->sz = 0; printf("清空成功!!"); } void NameSortingContact(AddressBook* addr) { if (addr == NULL) { return; } int i = 0; for (; i < addr->sz; i++) { int j = 0; for (; j < addr->sz - i - 1; j++) { if (strcmp(addr->data[j].name, addr->data[j].name) > 0) { Contact tmp = addr->data[j]; addr->data[j] = addr->data[j + 1]; addr->data[j + 1] = tmp; } } } printf("排序成功\n"); }
test.c
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> #include<stdlib.h> #include"Address_Book.h" void menu() { printf("--------------------------------------\n"); printf(" 1.添加联系人 \n"); printf(" 2.删除联系人 \n"); printf(" 3.查找联系人 \n"); printf(" 4.修改联系人 \n"); printf(" 5.显示联系人 \n"); printf(" 6.清空所有联系人 \n"); printf(" 7.以名字排序所有人 \n"); printf(" 8.退出 \n"); printf("--------------------------------------\n"); } void test() { menu(); AddressBook addr; int i = 0; InitAddressBook(&addr); do{ printf("请选择->:"); scanf("%d\n", &i); switch (i) { case 1: AddContact(&addr); break; case 2: DeleteContact(&addr); break; case 3: SearchContact(&addr); break; case 4: ModifyContact(&addr); break; case 5: ShowContact(&addr); break; case 6: ClearContact(&addr); break; case 7: NameSortingContact(&addr); break; case 8: exit(0); break; default: exit(0); break; } } while (i); } int main() { test(); system("pause"); return 0; }
相关文章推荐
- 【C语言基础】C语言实现动态通讯录的基本操作
- 【C语言基础】C语言通讯录(加了文件读写)
- 数据结构基础(5)--C语言实现循环队列--静态
- C语言实现通讯录(静态版)
- 【C语言基础】C语言静态学生成绩管理系统
- C语言——简易的静态通讯录实现
- 【C语言】C语言实现静态通讯录
- 黑马程序员-----------C语言基础-----------C语言实战(C语言版通讯录)
- C语言实现通讯录(静态数组)
- C语言小项目:动态通讯录和静态通讯录的实现
- 【C语言基础】C语言三子棋的简单实现
- c语言基础--基本的排序算法实现
- ARM基础:为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈
- C语言实现单链表面试题--基础篇
- C语言中嵌入汇编语言实现简单的加法
- 【C语言基础】C语言第五章
- 静态顺序表的C语言实现
- 链式队列的基础操作实现(C语言)
- 静态链表 c语言实现
- NDK的基础教程 二 c语言回调java语言