通信錄小程序(C/C++)C語言練習小程序

實現一個通信錄;
通信錄能夠用來存儲1000我的的信息,每一個人的信息包括:
姓名、性別、年齡、電話、住址ide


實現功能:
1. 添加聯繫人信息
2. 刪除指定聯繫人信息
3. 查找指定聯繫人信息
4. 修改指定聯繫人信息
5. 顯示全部聯繫人信息
6. 清空全部聯繫人
7. 以名字排序全部聯繫人函數


程序說明:blog

分模塊實現
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 ——函數實現get

//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——主函數string

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"Phonelist.h"
#define MAX 1000

PHONE 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

相關文章
相關標籤/搜索