简单的静态通讯录的实现。

来源:互联网 发布:泰安网络推广 编辑:程序博客网 时间:2024/06/06 00:47

实现一个通讯录:

通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址

提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人

 为了结构清晰我使用了三个文件来进行封装,Contact.h封装结构体以及函数的声明,test.c封装主函数,Contact.c用来封装函数的算法。

contact.h

#ifndef __CONTACT_H__ #define __CONTACT_H__ #include <stdio.h>#include <stdlib.h>//#include <iostream>#include<string.h>#define MAX 1000 #define NAME_MAX 20 #define SEX_MAX 5 #define ADDR_MAX 30 #define TELE_MAX 12 typedef struct PeoInfo{char name[NAME_MAX];int age;char sex[SEX_MAX];char addr[ADDR_MAX];char tele[TELE_MAX];}PeoInfo;typedef struct Contact{PeoInfo data[MAX];int sz;}Contact, *pContact;void InitContact(pContact pcon);void AddContact(pContact pcon);void ShowContact(const pContact pcon);void DelContact(pContact pcon);void SearchContact(pContact pcon);void ModifyContact(pContact pcon);void SortContach(pContact pcon);void ClearContact(pContact pcon);#endif
contact.c

#define _CRT_SECURE_NO_WARNINGS 1#include"Contact.h"//初始化void InitContact(pContact pcon){pcon->sz = 0;memset(pcon->data, 0, sizeof(pcon->data));}//添加联系人void AddContact(pContact pcon){if ((pcon->sz) >= MAX){printf("通讯录已满!");return;}else{printf("请输入姓名:");scanf("%s", pcon->data[pcon->sz].name);printf("请输入年龄:");scanf("%d", &pcon->data[pcon->sz].age);printf("请输入性别:");scanf("%s", pcon->data[pcon->sz].sex);printf("请输入地址:");scanf("%s", pcon->data[pcon->sz].addr);printf("请输入电话:");scanf("%s", pcon->data[pcon->sz].tele);pcon->sz++;printf("添加成功!");}}static int search(pContact pcon,char name[])//内部定义的查找函数{int i = 0; for (i = 0; i < pcon->sz; i++){if (strcmp(pcon->data[i].name, name)==0){return i;}}return -1;}//查找联系人void SearchContact(pContact pcon){int i = 0;char name[NAME_MAX] = { 0 };printf("请输入你要查找的名字:");scanf("%s", name);int ret = search(pcon, name);if (ret == -1){printf("没有您要查找的名字!\n");return;}else{printf( "\t姓名\t年龄\t性别\t地址\t电话");printf("\n");printf("\t%s\t%d\t%s\t%s\t%s\t\n",pcon->data[ret].name,pcon->data[ret].age,pcon->data[ret].sex,pcon->data[ret].addr,pcon->data[ret].tele);}}//删除联系人void DelContact(pContact pcon){int i = 0;char name[NAME_MAX] = {0};printf("请输入你要删除的名字:");scanf("%s", name);int ret = search(pcon, name);if (ret == -1){printf("没有您要删除的姓名\n");return;}else{for (i = ret; i < pcon->sz; i++){pcon->data[i] = pcon->data[i + 1];}printf("删除成功!");pcon->sz--;}}//修改联系人信息void ModifyContact(pContact pcon){   char name[NAME_MAX] = {0};printf("请输入你要修改的名字:");scanf("%s", name);int ret = search(pcon, name);if (ret == -1){printf("没有您要修改的名字\n");return;}else{printf("请输入姓名:");scanf("%s", pcon->data[ret].name);printf("请输入年龄:");scanf("%d", &pcon->data[ret].age);printf("请输入性别:");scanf("%s", pcon->data[ret].sex);printf("请输入地址:");scanf("%s", pcon->data[ret].addr);printf("请输入电话:");scanf("%s", pcon->data[ret].tele);printf("修改成功!");}}//显示联系人void ShowContact(const pContact pcon){int i = 0;printf( "\t姓名\t年龄\t性别\t地址\t电话");printf("\n");for (i = 0; i < pcon->sz; i++){printf("\t%s\t%d\t%s\t%s\t%s\t\n",pcon->data[i].name,pcon->data[i].age,pcon->data[i].sex,pcon->data[i].addr,pcon->data[i].tele);}}//清空联系人void ClearContact(pContact pcon){pcon->sz = 0;memset(pcon->data, 0, sizeof(pcon->data));printf("清空成功\n");}//按姓名排序void SortContach(pContact pcon){int i = 0;int j = 0;for (i = 0; i < pcon->sz; i++){for (j = 0; j < pcon->sz-i-1; j++){if (strcmp(pcon->data[j].name, pcon->data[j + 1].name)>0){PeoInfo tmp = pcon->data[j];pcon->data[j] = pcon->data[j + 1];pcon->data[j + 1] = tmp;}}}}
test.c

#define _CRT_SECURE_NO_WARNINGS 1#include"contact.h"void menu(){printf("\t********** 通讯录管理 **********\n");printf("\t*** 1.添加联系人 2.查找联系人***\n");printf("\t*** 3.删除联系人 4.修改联系人***\n");printf("\t*** 5.清空联系人 6.显示联系人***\n");printf("\t*** 7.按姓名排序 0.退出系统  ***\n");printf("\t**********  请选择:  ***********\n");}int main(){Contact con;InitContact(&con);int input = 0;do{menu();printf("请选择:");scanf("%d", &input);switch (input){case 1:AddContact(&con);break;case 2:SearchContact(&con);break;case 3:DelContact(&con);break;case 4:ModifyContact(&con);break;case 5:ClearContact(&con);break;case 6:ShowContact(&con);break;case 7:SortContach(&con);break;case 0:exit(EXIT_FAILURE);default:break;}} while (input != 0);system("pause");return 0;}
总结:在这个程序的实现过程中,程序出现了许多问题,特别是传参过程中和函数的实现过程中,参数稍有差错,程序就会出现问题,导致运行不成功。





原创粉丝点击