赞
踩
本篇文章我们将使用顺序表来实现通讯录的增删查改功能。
代码如下:
//Contact.h #pragma once #define NAME_MAX 30 #define GENDER_MAX 10 #define ADDRESS_MAX 100 #define TEL_MAX 12 enum{Exit,Add,Del,Seek,Change,Show};//枚举类型,便于理解数字含义 //通讯录结构体 typedef struct PeopleInfo { char name[NAME_MAX]; int age; char gender[GENDER_MAX]; char address[ADDRESS_MAX]; char tel[TEL_MAX]; }Info; struct SL; typedef struct SL Contact; void ContactInit(Contact* con);//通讯录初始化 void ContactDestroy(Contact* con);//通讯录销毁 void ContactAdd(Contact* con);//添加联系人 void ContactDel(Contact* con);//删除联系人 void ContactSeek(Contact* con);//查找联系人 void ContactChange(Contact* con);//修改联系人 void ContactShow(Contact* con);//展示通讯录
//Contact.c #include "order_table.h" void ContactInit(Contact* con)//通讯录初始化 { init(con); } void ContactDestroy(Contact* con)//通讯录销毁 { SLDestory(con); } void ContactAdd(Contact* con)//通讯录添加 { Info s; printf("请输入姓名:\n"); scanf("%s", s.name); printf("请输入年龄:\n"); scanf("%d", &s.age); printf("请输入性别:\n"); scanf("%s", s.gender); printf("请输入地址:\n"); scanf("%s", s.address); printf("请输入电话号码:\n"); scanf("%s", s.tel); Insert(con, 0, s);//调用顺序表 printf("添加成功!\n"); } int FindInName(Contact* con,char* name)//自定义的按名字查找函数 { for (int i = 0; i < con->size; i++) { if (strcmp(name, con->a[i].name) == 0) { return i; } } return -1; } void ContactDel(Contact* con)//删除联系人 { char name[30]; printf("请输入你要删除的人的姓名:\n"); scanf("%s", name); int pos = FindInName(con,name); if (pos == -1) { printf("未找到该联系人,删除失败\n"); return; } Erase(con, pos);//调用顺序表 printf("删除成功!\n"); } void ContactSeek(Contact* con) { char name[30] = { 0 }; printf("请输入你要查找的人的姓名:\n"); scanf("%s", name); int ret = FindInName(con,name); if (ret == -1) { printf("没找到该联系人!\n"); return; } printf("找到了,该联系人编号为%d\n", ret); } void ContactChange(Contact* con) { char name[30] = { 0 }; printf("请输入你要修改的人的姓名:\n"); scanf("%s", name); int pos = FindInName(con,name); if (pos == -1) { printf("未找到该联系人,修改失败!\n"); return; } printf("请输入姓名:\n"); scanf("%s", con->a[pos].name); printf("请输入年龄:\n"); scanf("%d", &con->a[pos].age); printf("请输入性别:\n"); scanf("%s", con->a[pos].gender); printf("请输入地址:\n"); scanf("%s", con->a[pos].address); printf("请输入电话号码:\n"); scanf("%s", con->a[pos].tel); printf("修改成功!\n"); } void ContactShow(Contact* con) { printf("姓名\t年龄\t性别\t地址\t电话号码\n"); for (int i = 0; i < con->size; i++) { printf("%s\t%d\t%s\t%s\t%s\n", con->a[i].name, con->a[i].age, con->a[i].gender, con->a[i].address, con->a[i].tel); } }
//test.c #include"order_table.h" void menu(void) { printf("*****************通讯录****************\n"); printf("*****1.添加联系人 2.删除联系人*****\n"); printf("*****3.查找联系人 4.修改联系人*****\n"); printf("*****5.展示通讯录 0.退出通讯录*****\n"); printf("***************************************\n"); } int main() { Contact con; ContactInit(&con); int input = 0; do { menu(); printf("请输入你要进行的操作:"); scanf("%d", &input); switch (input) { case Exit: printf("退出通讯录中……\n"); break; case Add: ContactAdd(&con); break; case Del: ContactDel(&con); break; case Seek: ContactSeek(&con); break; case Change: ContactChange(&con); break; case Show: ContactShow(&con); break; default: printf("输入错误,请重新输入!\n"); break; } } while (input); ContactDestroy(&con); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。