赞
踩
test.c - 测试通讯录
contact.c - 函数和类型的声明
contact.c - 函数的实现
设计保存人的信息的结构体
- typedef struct PeoInfo{
- char name[MAX_NAME];
- int age;
- char sex[MAX_SEX];
- char tele[MAX_TELE];
- char addr[MAX_ADDR];
- }PeoInfo;
- void menu() {
- printf("************************************\n");
- printf("***** 1.add 2.del *****\n");
- printf("***** 3.search 4.modify *****\n");
- printf("***** 5.show 6.sort *****\n");
- printf("***** 0.exit *****\n");
- printf("************************************\n");
- }
- void InitContact(Contact* pc){
- assert(pc);
- memset(pc->data, 0, sizeof(pc->data));
- pc->sz = 0;
- }
- void ADDContact(Contact* pc){
- assert(pc);
- if (pc->sz == MAX) {
- printf("通讯录已满,无法添加\n");
- return ;
- }
- printf("请输入名字>>>");
- scanf("%s", pc->data[pc->sz].name);//name本身就是数组,数组名就是地址
- printf("请输入年龄>>>");
- scanf("%d", &(pc->data[pc->sz].age));
- printf("请输入性别>>>");
- scanf("%s", pc->data[pc->sz].sex);
- printf("请输入电话>>>");
- scanf("%s", pc->data[pc->sz].tele);
- printf("请输入地址>>>");
- scanf("%s", pc->data[pc->sz].addr);
-
- pc->sz++;
- printf("成功添加联系人\n");
- }
- void ShowContact(const Contact* pc){
- assert(pc);
- printf("%-7s\t%-4s\t%-5s\t%-11s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
- for (int i = 0; i < pc->sz; i++) {
- printf("%-7s\t%-4d\t%-5s\t%-11s\t%-30s\n",
- pc->data[i].name,
- pc->data[i].age,
- pc->data[i].sex,
- pc->data[i].tele,
- pc->data[i].addr
- );
- }
- }
- void DelContact(Contact* pc){
- assert(pc);
- if (pc->sz == 0) {
- printf("通讯录为空,无法删除\n");
- return;
- }
- char name[MAX_NAME] = { 0 };
- printf("请输入要删除的名字>>>");
- scanf("%s", &name);
-
- //找到要删除的人,删除
- int del= FindByName(pc, name);
- if (del == -1) {
- printf("不存在指定联系人\n");
- return;
- }
- for (int i = del; i < pc->sz-1; i++) {
- pc->data[i] = pc->data[i + 1];
- }
- pc->sz--;
- printf("成功删除联系人\n");
- }
- void SearchContact(const Contact* pc){
- assert(pc);
- char name[MAX_NAME] = { 0 };
- printf("请输入要查找人的名字>>>");
- scanf("%s", name);
- int pos = FindByName(pc, name);
- if (pos == -1)
- printf("要查找的人不存在\n");
- else {
- printf("%-7s\t%-4s\t%-5s\t%-11s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
- printf("%-7s\t%-4d\t%-5s\t%-11s\t%-30s\n",pc->data[pos].name,pc->data[pos].age,pc->data[pos].sex,pc->data[pos].tele,pc->data[pos].addr);
- }
- }
- void ModifyContact(Contact* pc){
- assert(pc);
- char name[MAX_NAME] = { 0 };
- printf("请输入要修改人的名字>>>");
- scanf("%s", name);
- int pos = FindByName(pc, name);
- if (pos == -1)
- printf("要查找的人不存在\n");
- else {
- printf("请输入名字>>>");
- scanf("%s", pc->data[pos].name);//name本身就是数组,数组名就是地址
- printf("请输入年龄>>>");
- scanf("%d", &(pc->data[pos].age));
- printf("请输入性别>>>");
- scanf("%s", pc->data[pos].sex);
- printf("请输入电话>>>");
- scanf("%s", pc->data[pos].tele);
- printf("请输入地址>>>");
- scanf("%s", pc->data[pos].addr);
- printf("修改成功\n");
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。