溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言如何實(shí)現(xiàn)通訊錄功能

發(fā)布時(shí)間:2020-06-28 17:07:04 來源:億速云 閱讀:146 作者:清晨 欄目:開發(fā)技術(shù)

小編給大家分享一下C語言如何實(shí)現(xiàn)通訊錄功能,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!

這兩天用C語言編寫了一個(gè)簡易版通訊錄(學(xué)生信息管理) ,大致功能有添加信息,查看信息(自動(dòng)按姓名排序,printf輸出帶顏色字體),查找信息(按姓名查找),刪除信息(輸入姓名刪除相關(guān)信息),修改信息(輸入修改人的名字,可選擇修改其任意信息)和退出 。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 100
typedef struct student STU;
int person = 0;
 
struct student
{
  char name[10];
  int num;
  int age;
};
 
void welcome()
{
  system("clear");
  printf("\n\n\n\n\t\t\t========================================");
  printf("\n\n\t\t\t\t\tWelcome!\n");
  sleep(3);
}
 
void menu()
{
  system("clear");
  printf("\n\n\t************************************************************************");
  printf("\n\t\t\t\t\t請選擇:");
  printf("\n\t\t\t\t\t1.添加信息");
  printf("\n\t\t\t\t\t2.查看信息");
  printf("\n\t\t\t\t\t3.查找信息");
  printf("\n\t\t\t\t\t4.刪除信息");
  printf("\n\t\t\t\t\t5.修改信息");
  printf("\n\t\t\t\t\t6.退出");
  printf("\n\t************************************************************************");
 
}
 
/*添加信息*/
void AddInfo(STU *s[])
{
  system("clear");
  printf("姓名 學(xué)號 年齡\n");
  printf("------------------------\n");
  printf("請輸入信息:(bye結(jié)束添加)\n");
  while(1)
  {
    s[person] = (STU*)malloc(sizeof(STU));
    if(NULL == s[person])
    {
      printf("malloc failure!\n");
    }
    scanf("%s", s[person]->name);
    if(!strcmp(s[person]->name, "bye"))
    {
      break;
    }
    scanf("%d%d", &s[person]->num, &s[person]->age);
    getchar();
    person++;
  }
}
 
/*查看信息(按姓名排序)*/
void ShowAll(STU *s[])
{
  system("clear");
  int i, j;
  STU *q[1] = {0};
  q[0] = (STU *)malloc(sizeof(STU));
 
 
  printf("information:\n");
 
  for(i = 0; i < person; i++)
  {
    for(j = 0; j < person - 1 - i; j++)
    {
      if(strcmp(s[j]->name, s[j + 1]->name) > 0)
      {
        q[0] = s[j];
        s[j] = s[j + 1];
        s[j + 1] = q[0];
      }
    }
  }
 
  for(i = 0; i < person; i++)
  {
    printf("\e[1;35mname:%s, num:%d, age:%d\e[0m\n", s[i]->name, s[i]->num, s[i]->age);
  }
  sleep(3);
  getchar();
}
 
/*查找信息*/
 
void Search_name(char *name, STU *s[])
{
  int i, n = 0;
  for(i = 0; i < person; i++)
  {
    if(strcmp(name, s[i]->name) == 0)
    {
      n++;
      printf("name:%s, num:%d, age:%d\n", s[i]->name, s[i]->num, s[i]->age);
    }
  }
  
  if(n == 0)
  {
    printf("不存在!\n");
  }
}
 
void SearchInfo(STU *s[])
{
  system("clear");
  char *name = (char *)malloc(sizeof(char));
 
  printf("請輸入要查找的人的名字:\n");
  scanf("%s", name);
 
  Search_name(name, s);
}
 
/*刪除信息*/
 
void DeleteInfo(STU *s[])
{
  system("clear");
  int i, n = 0, j;
  char del_name[10];
 
  printf("請輸入要?jiǎng)h除的人的名字:\n");
  scanf("%s", del_name);
  getchar();
  getchar();
 
  for(i = 0; i < person; i++)
  {
    if(strcmp(del_name, s[i]->name) == 0)
    {
      n++;
      free(s[i]);
      for(j = i; j < person - 1; j++)
      {
        strcpy(s[j]->name, s[j + 1]->name);
        s[j]->num = s[j + 1]->num;
        s[j]->age = s[j + 1]->age;
      }
      person--;
    }
  }
 
  if(n == 0)
  {
    printf("要?jiǎng)h除的人不存在!\n");
  }
  else
  {
    printf("刪除成功!\n");
  }
}
 
/*修改信息*/
void Change_name(char *name, STU *s[])
{
  int i, n = 0, choice;
  char *new_name = (char *)malloc(sizeof(char));
  int new_num, new_age;
 
  for(i = 0; i < person; i++)
  {
    if(strcmp(name, s[i]->name) == 0)
    {
      n++;
      printf("該學(xué)生的信息如下:");
      printf("name:%s, num:%d, age:%d\n", s[i]->name, s[i]->num, s[i]->age);
      printf("----------------------------\n");
      printf("請選擇要修改的內(nèi)容(1.name 2.num 3.age):\n");
      scanf("%d", &choice);
      switch(choice)
      {
        case 1:
          printf("請輸入新的名字:\n");
          scanf("%s", new_name);
          strcpy(s[i]->name, new_name);
          break;
        case 2:
          printf("請輸入新的學(xué)號:\n");
          scanf("%d", &new_num);
          s[i]->num = new_num;
          break;
        case 3:
          printf("請輸入新的年齡:\n");
          scanf("%d", &new_age);
          s[i]->age = new_age;
          break;
      }
    }
  }
  
  if(n == 0)
  {
    printf("不存在!\n");
  }
}
 
void ChangeInfo(STU *s[])
{
  system("clear");
  char *name = (char *)malloc(sizeof(char));
 
  printf("請輸入要修改的人的名字:\n");
  scanf("%s", name);
 
  Change_name(name, s);
 
}
 
int main()
{
  struct student *s[SIZE] = {0};
  int choice;
 
  welcome();
 
  while(1)
  {
    menu();
    printf("\nPlease input choice:");
    scanf("%d", &choice);
 
    switch(choice)
    {
      case 1:
        AddInfo(s);
        break;
      case 2:
        ShowAll(s);
        break;
      case 3:
        SearchInfo(s);
        break;
      case 4:
        DeleteInfo(s);
        break;
      case 5:
        ChangeInfo(s);
        break;
      case 6:
        exit(0);
        break;
    }
  }
 
  return 0;
}

看完了這篇文章,相信你對C語言如何實(shí)現(xiàn)通訊錄功能有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI