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

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

 更新時間:2020年07月23日 11:28:03   作者:Quinn0918  
這篇文章主要為大家詳細(xì)介紹了用C語言實現(xiàn)簡易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

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)系人**

思路分析:

首先我們可以分三個模塊來解決這個問題,第一個模塊我們需要一個頭文件,這個頭文件里可以包含一些相應(yīng)信息,當(dāng)實現(xiàn)文件和測試文件包含自己定義的頭文件時便可以獲得一些相關(guān)的信息。所以頭文件里應(yīng)該包括一個結(jié)構(gòu)體,這個結(jié)構(gòu)體里應(yīng)包含姓名,性別,年齡,電話,住址。同時還可以定義一個結(jié)構(gòu)體,這個結(jié)構(gòu)體里包含通訊錄,同時通訊錄里人員的計數(shù)變量,將通訊錄的地址傳到別的地方便可以實現(xiàn)對它遍歷或者其他操作。
第二個模塊便是我們的測試函數(shù),測試函數(shù)便可以實現(xiàn)我們的菜單打印,同時由我們接收不同的值便可以實現(xiàn)不同的操作,就是相應(yīng)的方法的實現(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é)果部分示范:

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

相關(guān)文章

  • C++實現(xiàn)教師管理系統(tǒng)

    C++實現(xiàn)教師管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)教師管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解C++二叉搜索樹的原理及實現(xiàn)

    詳解C++二叉搜索樹的原理及實現(xiàn)

    二叉搜索樹又稱二叉排序樹,二叉搜索樹是一種二叉樹,其中每個節(jié)點的值大于其左子樹中的任何節(jié)點,并且小于其右子樹中的任何節(jié)點,本文小編就給大家講講C++二叉搜索樹的操作及實現(xiàn),感興趣的同學(xué)跟著小編一起來看看吧
    2023-08-08
  • C 語言中實現(xiàn)環(huán)形緩沖區(qū)

    C 語言中實現(xiàn)環(huán)形緩沖區(qū)

    本文主要是介紹 C語言實現(xiàn)環(huán)形緩沖區(qū),并附有詳細(xì)實現(xiàn)代碼,具有一定的參考價值,希望能幫助有需要的小伙伴
    2016-07-07
  • c語言實現(xiàn)學(xué)生管理系統(tǒng)詳解

    c語言實現(xiàn)學(xué)生管理系統(tǒng)詳解

    這篇文章主要為大家介紹了c語言實現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-12-12
  • 探究一下C語言生成隨機數(shù)的奧秘

    探究一下C語言生成隨機數(shù)的奧秘

    C語言中生成隨機數(shù)是一項非常重要的功能,因為許多現(xiàn)代應(yīng)用程序需要使用隨機數(shù)。本文就來帶大家一起探究一下C語言生成隨機數(shù)的奧秘吧
    2023-03-03
  • C語言實現(xiàn)簡單掃雷源碼

    C語言實現(xiàn)簡單掃雷源碼

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單掃雷源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • VS Code遠(yuǎn)程連接Linux服務(wù)器調(diào)試C程序的操作方法

    VS Code遠(yuǎn)程連接Linux服務(wù)器調(diào)試C程序的操作方法

    這篇文章主要介紹了VS Code遠(yuǎn)程連接Linux服務(wù)器調(diào)試C程序的操作方法,打開遠(yuǎn)程 Linux 服務(wù)器上的文件夾本文以 /root/ 為例,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • 淺析C++中類模板的用法

    淺析C++中類模板的用法

    C++類模板是一種用于創(chuàng)建通用類的工具,它允許我們定義一個通用類,支持多種類型。本文就來簡單講講它的具體使用吧,感興趣的可以了解一下
    2023-04-04
  • C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化

    C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化

    這篇文章主要介紹了C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化方法的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • C語言超詳細(xì)講解雙向帶頭循環(huán)鏈表

    C語言超詳細(xì)講解雙向帶頭循環(huán)鏈表

    帶頭雙向循環(huán)鏈表:結(jié)構(gòu)最復(fù)雜,一般用在單獨存儲數(shù)據(jù)。實際中使用的鏈表數(shù)據(jù)結(jié)構(gòu),都是帶頭雙向循環(huán)鏈表。另外這個結(jié)構(gòu)雖然結(jié)構(gòu)復(fù)雜,但是使用代碼實現(xiàn)以后會發(fā)現(xiàn)結(jié)構(gòu)會帶來很多優(yōu)勢,實現(xiàn)反而簡單
    2023-02-02

最新評論