通讯录--静态版本

    xiaoxiao2024-12-23  11

    用c语言实现静态版本的通讯录

    本代码包含3个部分,自定义了一个头文件contact.h,测试文件test.c以及contact.c实现各个功能

    contact.h

    #ifndef _CONTACT_H #define _CONTACT_H #include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> //姓名 性别 年龄 住址 电话 #define MAX_NEME 10 #define MAX_SEX 3 #define MAX_AGE 20 #define MAX_ADDR 20 #define MAX_TEL_ 10 #define MAX 100 typedef struct people { char name [10]; char sex [3]; int age ; char addr[20]; int tel [10]; }people; typedef struct contact { people con[MAX]; int count ; }con,*pcon; void init_people(pcon p);//初始化 void add(pcon p);//增加 void del(pcon p);//删除 void search(pcon p);//查找 void mod(pcon p);//修改 void show(pcon p);//显示 void empty(pcon p);//清空 void sort(pcon p);//排序 #endif test.c

    #include"contact.h" enum PEO //枚举 增加代码的可读性,默认为0,1,2,3... { EXIT, ADD, DEL, SEARCH, MOD, SHOW, EMPTY, SORT, }; 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("*****0.退出 **********\n"); printf("**********************\n"); } void test() { con my_con; int input=1; init_people(&my_con); while(input) { menu(); printf("请输入选项"); scanf("%d",&input); switch(input) { case ADD: { add(&my_con); break; } case DEL: { del(&my_con); break; } case SEARCH: { search(&my_con); break; } case MOD: { mod(&my_con); break; } case SHOW: { show(&my_con); break; } case EMPTY: { empty(&my_con); break; } case SORT: { sort(&my_con); break; } case EXIT: { exit(0); break; } } } } int main() { test(); system("pause"); return 0; } contact.c

    #include"contact.h" void init_people(pcon p)//结构体数组的初始化 { memset(p->con,0,MAX*sizeof(people)); p->count=0; } void add(pcon p)//增加 { if(p->count<100) { printf("请输入姓名 :"); scanf("%s",p->con[p->count].name); printf("请输入性别:"); scanf("%s",(p->con[p->count].sex)); printf("请输入年龄:"); scanf("%d",&(p->con[p->count].age)); printf("请输入地址:"); scanf("%s",(p->con[p->count].addr)); printf("请输入电话:"); scanf("%s",(p->con[p->count].tel)); p->count ++; } else { printf("通讯录已满\n"); } } int find(pcon p,char *name) { int i=0; for(i=0;i<p->count;i++) { if(strcmp(p->con[i].name,name)==0) return i; } return -1; } void del(pcon p)//删除 { int i=0; char name[8] ={0}; int ret=0; printf("请输入删除人的姓名"); scanf("%s",name); ret=find(p,name); if(ret!=-1) { for(i=ret;i<p->count-1;i++) { p->con[i]=p->con[i+1]; } p->count--; printf("删除成功"); } else printf("没有此联系人"); } void search(pcon p)//查找指定联系人 { char name[8]={0}; int i=0; int ret=0; printf("请输入要查找的联系人的姓名:"); scanf("%s",name); ret=find(p,name); if(ret!=-1) { printf("%s",p->con[ret].name); printf("%s",p->con[ret].sex); printf("%d",p->con[ret].age); printf("%s",p->con[ret].addr); printf("%s",p->con[ret].tel); } else { printf("此联系人不存在\n"); } } void mod(pcon p)//修改 { char name[8]={0}; int i=0; int ret=0; printf("请输入要修改的联系人的姓名:"); scanf("%s",name); ret=find(p,name); if(ret!=-1) { printf("请输入要修改的联系人的姓名:"); scanf("%s",p->con[ret].name); printf("请输入要修改的联系人的性别:"); scanf("%s",p->con[ret].sex); printf("请输入要修改的联系人的年龄:"); scanf("%d",p->con[ret].age); printf("请输入要修改的联系人的地址:"); scanf("%s",p->con[ret].addr); printf("请输入要修改的联系人的电话:"); scanf("%s",p->con[ret].tel); } else { printf("此通讯录中没有此联系人\n"); } } void show(pcon p)//显示所有联系人的信息 { int i=0; printf("输出所有联系人的信息\n"); printf("%5s\t%5s\t%5s\t%5s\t%5s\n","name","sex","age","addr","tel");//\t是制表符 printf("%d",p->count ); for(i=0;i<p->count;i++) { printf("%5s\t%5s\t%5d\t%5s\t%5s\n",p->con[i].name,p->con[i].sex, p->con[i].age,p->con[i].addr,p->con[i].tel); } } void empty(pcon p)//清空 { p->count=0; printf("通讯录已清空\n"); } void sort(pcon p)//冒泡排序 { int i=0; int j=0; int flag=0; for(i=0;i<(p->count)-1;i++) { flag=1; for(j=0;j<(p->count)-i-1;j++) { if(strcmp(p->con[j].name,p->con[j+1].name)>0) { people tmp=p->con[j]; p->con[j]=p->con[j+1]; p->con[j+1]=tmp; flag=0; } } if(flag==1) break; } }

    转载请注明原文地址: https://ju.6miu.com/read-1294921.html
    最新回复(0)