欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年06月28日 17:12:54   作者:查心妍  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)簡易通訊錄的具體代碼,供大家參考,具體內(nèi)容如下

這兩天用C語言編寫了一個(gè)簡易版通訊錄(學(xué)生信息管理) ,大致功能有添加信息,查看信息(自動按姓名排序,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("請輸入要刪除的人的名字:\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("要刪除的人不存在!\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;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 簡要對比C語言中的setgid()函數(shù)和setregid()函數(shù)

    簡要對比C語言中的setgid()函數(shù)和setregid()函數(shù)

    這篇文章主要介紹了C語言中的setgid()函數(shù)和setregid()函數(shù)的簡要對比,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • C語言泛型編程實(shí)例教程

    C語言泛型編程實(shí)例教程

    這篇文章主要介紹了C語言泛型編程,針對泛型的用法做了深入淺出的實(shí)例介紹,是C程序設(shè)計(jì)中非常實(shí)用的技巧,需要的朋友可以參考下
    2014-09-09
  • Qt實(shí)現(xiàn)指針式時(shí)鐘 Qt實(shí)現(xiàn)動態(tài)時(shí)鐘

    Qt實(shí)現(xiàn)指針式時(shí)鐘 Qt實(shí)現(xiàn)動態(tài)時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)指針式時(shí)鐘,Qt實(shí)現(xiàn)動態(tài)時(shí)鐘,兩者相互切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++ 位運(yùn)算的具體實(shí)現(xiàn)

    C++ 位運(yùn)算的具體實(shí)現(xiàn)

    位運(yùn)算直接對內(nèi)存數(shù)據(jù)進(jìn)行操作,不需要轉(zhuǎn)換成十進(jìn)制,因此處理速度非常快,本文主要介紹了C++ 位運(yùn)算的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • 圖的鄰接表存儲表示示例講解

    圖的鄰接表存儲表示示例講解

    這篇文章主要介紹了圖的鄰接表存儲表示,大家參考使用
    2013-11-11
  • C/C++利用篩選法算素?cái)?shù)的方法示例

    C/C++利用篩選法算素?cái)?shù)的方法示例

    這篇文章主要給大家介紹了關(guān)于利用C/C++篩選法算素?cái)?shù)的相關(guān)資料,文中給大家列舉了普通枚舉法和篩選法兩種方法實(shí)現(xiàn)的方法示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • c++ 成員函數(shù)與非成員函數(shù)的抉擇

    c++ 成員函數(shù)與非成員函數(shù)的抉擇

    盡量用類的非成員函數(shù)以及友元函數(shù)替換類的成員函數(shù) 例如一個(gè)類來模擬人People
    2013-01-01
  • 帶你搞懂C++ LeeCode 二叉樹的中序遍歷

    帶你搞懂C++ LeeCode 二叉樹的中序遍歷

    中序遍歷(LDR)是二叉樹遍歷的一種,也叫做中根遍歷、中序周游。在二叉樹中,中序遍歷首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹
    2021-07-07
  • VSCode添加頭文件(C/C++)的實(shí)現(xiàn)示例

    VSCode添加頭文件(C/C++)的實(shí)現(xiàn)示例

    這篇文章主要介紹了VSCode添加頭文件(C/C++)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • C語言switch語句詳解

    C語言switch語句詳解

    這篇文章主要為大家介紹了C語言switch語句,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評論