通讯录小程序(C/C++)C语言练习小程序

来源:互联网 发布:ios软件助手 编辑:程序博客网 时间:2024/06/10 00:59

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


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


程序说明:

分模块实现
Phonelist.h 头文件——存放函数声明
fun.c ——函数实现
test.c——主函数

        !Phonelist.h!

//Phonelist.h#pragma once#ifndef __ARROPT_H__#define __ARROPT_H__typedef struct PHONE{ char Name[10]; int Age; char Sex[3];  //男/女 char Tele[13]; char Address[20]; //struct PHONE *next;}PHONE,*Phone;void ADD(PHONE *p);//添加int DEL(Phone p, char*);//删除void SEEK(Phone p, char *);//查找void REVISE(Phone p, char *);//修改void SHOW(Phone p);//显示void FREE_ALL(Phone p);//清空void SORT(Phone p, const size_t );//用快排排序必须将结构体第一个成员设为 Name,才可以实现void menu();#endif  //__ARROPT_H__

fun.c ——函数实现

//fun.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include"Phonelist.h"#define MAX 1000  //通讯录最大存储人数//*****************添加**************void ADD(Phone p){ printf("请输入要录入联系人的姓名\n"); scanf_s("%s", p->Name, 10);//用scanf_s 函数实现字符串的输入 printf("请输入要录入联系人的性别(男/女)\n"); scanf_s("%s", p->Sex,3); printf("请输入要录入联系人的年龄\n"); scanf_s("%d", &p->Age); printf("请输入要录入联系人的电话\n"); scanf_s("%s",p->Tele, 13); printf("请输入要录入联系人的住址\n"); scanf_s("%s", p->Address, 20);}//****************删除**************************int DEL(Phone p,char *name){ int i = 0; int tmp = 0; Phone j = p; while (i++ < MAX) {  if (strcmp(j->Name, name) == 0)  {   j->Age = 0;   tmp = 1;   break;  }  j++; } if (tmp == 1) {  printf("%s信息删除成功!\n", name);  return 1; } else {  printf("%s信息删除失败,无此人!\n", name);  return 0; }}//*********查找*************void show_one(Phone j){ printf("Name: %s  ", j->Name); printf("  Age: %d  ", j->Age); printf("  Tele: %s  ", j->Tele); printf("  Sex: %s  ", j->Sex); printf("  Address: %s  \n", j->Address);}void SEEK(Phone p, char *name){ int i = 0; int tmp = 0; Phone j = p; while (i++ < MAX) {  if (strcmp(j->Name, name) == 0)  {   tmp = 1;   break;  }  j++; } if (tmp == 1) {  printf("%s信息存在!\n", name);  show_one(j); } else  printf("%s信息查找失败,无此人!\n", name);}//***********修改**********void REVISE(Phone p, char *name){ int i = 0; int tmp = 0; Phone j = p; while (i++ < MAX) {  if (strcmp(j->Name, name) == 0)  {   ADD(j);   tmp = 1;   break;  }  j++; } if (tmp == 1)  printf("%s信息修改成功!\n", name); else  printf("%s信息修改失败,无此人!\n", name);}//************显示所有联系人********void SHOW(Phone p){ Phone j = p; int i = 0; int count = 0; while (i++ < MAX) {  if (j->Age != 0)  {   show_one(j);   count++;  }  j++; } if(0==count) printf("通讯录里还没有人,请选择1,添加您的好友\n");}//************清空****************void FREE_ALL(Phone p){ Phone j = p; int i = 0; while (i < MAX&&j->Age != 0) {  j->Age = 0;  j++; } printf("通讯录已清空!\n");}//*************以名字排序所有联系人********void SORT(Phone p,const size_t num){ qsort(p, num, sizeof(*p), strcmp);//用快排排序必须将结构体第一个成员设为 Name,才可以实现}//***************菜单******************void menu(){ printf("***********************************************\n"); printf("*                  MENU                       *\n"); 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"); printf("***********************************************\n"); printf("请输入选择序号:->");}

test.c——主函数

#include<stdio.h>#include<stdlib.h>#include<string.h>#include"Phonelist.h"#define MAX 1000PHONE PEO[MAX] = {0};int main(){ int choose = 1; int i = 0; int ret = 0; while (choose) {  menu();  scanf_s("%d", &choose);  char name[10];  if (choose >= 0 && choose < 8)  {   switch (choose)   {    i = 0;   case 1:    if (PEO[i].Age == 0 && i < MAX)//设:若Age信息为"0"则对应信息为空     ADD(&PEO[i++]);    break;   case 2:    printf("请输入要删除学生的名字\n");    scanf_s("%s", name, 10);    ret = DEL(PEO, name);    if (ret == 1)     i--;    break;   case 3:    printf("请输入要查找学生的名字\n");    scanf_s("%s", name, 10);    SEEK(PEO, name);    break;   case 4:    printf("请输入要修改学生的名字\n");    scanf_s("%s", name, 10);    REVISE(PEO, name);    break;   case 5:    SHOW(PEO);    break;   case 6:    FREE_ALL(PEO);    break;   case 7:    SORT(PEO, i - 1);    printf("排序结果: \n");    SHOW(PEO);    break;   default:    break;   }  } } system("pause"); return 0;}

wKiom1ZZz1HiQ9IKAAA6208brTU289.png

wKiom1ZZz1HSoxTdAAAzy28bd9c963.png

wKioL1ZZz7TD8KRoAAApWYm3ZPI510.png

wKiom1ZZz1LRSg8OAAAqKkvyl1s226.png

wKioL1ZZz7SyVxegAAAVmiIAXQo740.png

wKiom1ZZz1ORfTdHAAAwPgfxn5E138.png

wKioL1ZZz7XgxWsxAAAUWNtgeT0598.png


0 0