国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

用C語言實現(xiàn)簡易通訊錄

2020-05-23 13:32:30
字體:
供稿:網(wǎng)友

C語言實現(xiàn)一個通訊錄,通訊錄可以用來存儲1000個人的信息,每個人的信息包括:

姓名、性別、年齡、電話、住址

**提供方法:

1. 添加聯(lián)系人信息
2. 刪除指定聯(lián)系人信息
3. 查找指定聯(lián)系人信息
4. 修改指定聯(lián)系人信息
5. 顯示所有聯(lián)系人信息
6. 清空所有聯(lián)系人
7. 以名字排序所有聯(lián)系人**

思路分析:

首先我們可以分三個模塊來解決這個問題,第一個模塊我們需要一個頭文件,這個頭文件里可以包含一些相應信息,當實現(xiàn)文件和測試文件包含自己定義的頭文件時便可以獲得一些相關的信息。所以頭文件里應該包括一個結(jié)構(gòu)體,這個結(jié)構(gòu)體里應包含姓名,性別,年齡,電話,住址。同時還可以定義一個結(jié)構(gòu)體,這個結(jié)構(gòu)體里包含通訊錄,同時通訊錄里人員的計數(shù)變量,將通訊錄的地址傳到別的地方便可以實現(xiàn)對它遍歷或者其他操作。
第二個模塊便是我們的測試函數(shù),測試函數(shù)便可以實現(xiàn)我們的菜單打印,同時由我們接收不同的值便可以實現(xiàn)不同的操作,就是相應的方法的實現(xiàn),這里很明顯可以通過一個switch語句來進行控制。
第三個模塊便是我們的方法實現(xiàn)的函數(shù),將模塊2里定義的類型為通訊錄的地址傳到各個方法里,這樣便可以實現(xiàn)對通訊錄的操作。
1.linkman.h(頭文件)

 

#ifndef __LINKMAN_H__#define __LINKMAN_H__#include<stdio.h>#include<windows.h>#include<string.h>#pragma warning (disable:4996)typedef struct LINKMAN//建立結(jié)構(gòu)體,存放聯(lián)系人信息{  char name[20];  char sex[10];  int age;  int tel[12];  char addr[50];}LINKMAN;typedef struct Statis //把通訊錄和人員統(tǒng)計放在結(jié)構(gòu)體內(nèi){  LINKMAN num[1000];  int count;}Statis;void inint_linkman(Statis *p);//初始化數(shù)組void Add_linkman(Statis *p);// 添加聯(lián)系人信息void Dele_linkman(Statis *p);//刪除指定聯(lián)系人信息void Find_linkman(Statis *p);//查找指定聯(lián)系人信息void Revise_linkman(Statis *p);//修改指定聯(lián)系人信息void Display_linkman(Statis *p);//顯示所有聯(lián)系人信息void Empty_linkman(Statis *p);//清空所有聯(lián)系人 void sort_linkman(Statis *p);//以名字排序所有聯(lián)系人#endif

2.test.c(測試)

#include "linkman.h"Statis sta;void menu()//菜單{  printf("***********************************/n");  printf("********1.添加聯(lián)系人信息***********/n");  printf("********2.刪除指定聯(lián)系人信息*******/n");  printf("********3.查找指定聯(lián)系人信息*******/n");  printf("********4.修改指定聯(lián)系人信息*******/n");  printf("********5.顯示所有聯(lián)系人信息*******/n");  printf("********6.清空所有聯(lián)系人***********/n");  printf("********7.以名字排序所有聯(lián)系人*****/n");  printf("**************按0退出程序**********/n");  printf("***********************************/n");}void test(){  int i = 0;  do  {    menu();    printf("請輸入你要進行的選項:");    scanf("%d", &i);    switch (i)    {    case 1:      Add_linkman(&sta);      break;    case 2:      Dele_linkman(&sta);      break;    case 3:      Find_linkman(&sta);      break;    case 4:      Revise_linkman(&sta);      break;    case 5:      Display_linkman(&sta);      break;    case 6:      Empty_linkman(&sta);      break;    case 7:      sort_linkman(&sta);      break;    case 0:      exit(1);      break;    default:      printf("輸入錯誤/n");      break;    }  } while (i);}int main(){  inint_linkman(&sta);  test();  system("pause");  return 0;}

3.game.c(實現(xiàn))

#include "linkman.h"void inint_linkman(Statis *p){  int count = sizeof(p->num);  p->count = 0;  memset(p->num, 0,count);}int Find(Statis *p, char *pname)//對于一個聯(lián)系人是否存在封裝一個函數(shù),在后面的修改、刪除、查找可以用到{  int i = 0;  for (i = 0; i < (p->count); i++)  {    if (strcmp(p->num[i].name, pname) == 0)      return i;  }  return -1;}void menu1()//修改聯(lián)系人時所用到的菜單{  printf("*********************/n");  printf("****1.姓名*2.性別****/n");  printf("****3.年齡*4.電話****/n");  printf("****5.地址*6.返回****/n");  printf("*********************/n");}void Add_linkman(Statis *p)//添加聯(lián)系人{  printf("請輸入你要添加的聯(lián)系人姓名:/n");  scanf("%s", p->num[p->count].name);  printf("請輸入你要添加的聯(lián)系人性別:/n");  scanf("%s", p->num[p->count].sex);  printf("請輸入你要添加的聯(lián)系人年齡:/n");  scanf("%d", &(p->num[p->count].age));  printf("請輸入你要添加的聯(lián)系人電話:/n");  scanf("%s", p->num[p->count].tel);  printf("請輸入你要添加的聯(lián)系人地址:/n");  scanf("%s", p->num[p->count].addr);  if ((p->count) > 1000)  {    printf("聯(lián)系人上限/n");  }  else  {    printf("添加成功/n");    p->count++;  }}void Dele_linkman(Statis *p)//刪除聯(lián)系人{  char name[20] = { 0 };  int result = 0;  int n = 0;  int i = 0;  printf("請輸入要刪除人的姓名:/n");  scanf("%s", name);  result = Find(p, name);  if (result != -1)  {    printf("你是否要刪除該聯(lián)系人?/n");    printf("刪除請按1,不刪除請按0/n");    scanf("%d", &n);    if (n == 1)    {      for (i = 0; i < (p->count)-1; i++)      {        p->num[i] = p->num[i + 1];      }      p->count --;      printf("刪除成功/n");    }    else    {      printf("刪除失敗/n");    }  }  else  {    printf("你要刪除的聯(lián)系人不存在/n");  }}void Find_linkman(Statis *p)//查找聯(lián)系人{  char name[20] = { 0 };  int result = 0;  printf("請輸入要查找聯(lián)系人的姓名:/n");  scanf("%s", name);  result = Find(p, name);  if (result != -1)  {    printf("姓名:%s/n", p->num[result].name);    printf("性別:%s/n", p->num[result].sex);    printf("年齡:%d/n", p->num[result].age);    printf("電話:%s/n", p->num[result].tel);    printf("地址:%s/n", p->num[result].addr);  }  else  {    printf("你要查找的聯(lián)系人不存在/n");  }}void Revise_linkman(Statis *p)//修改聯(lián)系人{  char name[20] = {0};  int result = 0;  printf("請輸入你要修改聯(lián)系人的姓名:/n");  scanf("%s", name);  result = Find(p, name);  if (result != -1)  {    printf("姓名:%s/n", p->num[result].name);    printf("性別:%s/n", p->num[result].sex);    printf("年齡:%d/n", p->num[result].age);    printf("電話:%s/n", p->num[result].tel);    printf("地址:%s/n", p->num[result].addr);    int i = 0;    do    {      menu1();      printf("輸入你要修改的選項:/n");      scanf("%d", &i);      switch (i)      {      case 1:        printf("請把姓名修改成:");        scanf("%s", p->num[result].name);        break;      case 2:        printf("請把性別修改成:");        scanf("%s", p->num[result].sex);        break;      case 3:        printf("請把年齡修改成:");        scanf("%d", &(p->num[result].age));        break;      case 4:        printf("請把電話修改成:");        scanf("%s", p->num[result].tel);        break;      case 5:        printf("請把地址修改成:");        scanf("%s", p->num[result].addr);        break;      case 0:        break;      default:        printf("輸入錯誤");        break;      }    } while (i);  }  else  {    printf("你要修改的聯(lián)系人不存在/n");  }}void Display_linkman(Statis *p)//打印所有聯(lián)系人信息{  int i = 0;  printf("輸出所有人的信息:/n");  printf("%10s%7s%6s%8s%10s/n","名字","性別","年齡","電話","住址");  for (i = 0; i <(p->count); i++)  {    printf("%11s", p->num[i].name);    printf("%5s", p->num[i].sex);    printf("%5d", p->num[i].age);    printf("%10s", p->num[i].tel);    printf("%12s", p->num[i].addr);    printf("/n");  }}void Empty_linkman(Statis *p)//清空聯(lián)系人{  p->count = 0;}void sort_linkman(Statis *p)//以名字排序所有聯(lián)系人(冒泡){  int i = 0;  int j = 0;  for (i = 0; i < p->count - 1; i++)  for (j = 0; j < p->count - 1 - i; j++)  {    if (strcmp(p->num[j].name, p->num[j + 1].name)>0)    {      LINKMAN tmp;      tmp = p->num[j];      p->num[j] = p->num[j + 1];      p->num[j + 1] = tmp;    }  }}

程序運行結(jié)果部分示范:

C語言,通訊錄

到此為止,我們的簡易通訊錄就實現(xiàn)啦!!!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 清徐县| 钦州市| 富顺县| 辉南县| 沙田区| 南木林县| 搜索| 新蔡县| 永靖县| 金溪县| 额敏县| 佛学| 襄城县| 曲阜市| 阿克| 娄底市| 阳山县| 三门峡市| 阿拉善盟| 台南市| 宜良县| 鄱阳县| 湘乡市| 定边县| 成安县| 邓州市| 绥宁县| 嘉善县| 安岳县| 玉屏| 鹰潭市| 南阳市| 青河县| 海口市| 西昌市| 陆川县| 灯塔市| 陆丰市| 滦南县| 龙胜| 松桃|