中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

廣州部隊網站建設費用拓客團隊怎么聯(lián)系

廣州部隊網站建設費用,拓客團隊怎么聯(lián)系,做企業(yè)網站應該注意什么,企業(yè)營業(yè)執(zhí)照怎么查通訊錄是一個可以很好鍛煉我們對結構體的使用,加深對結構體的理解,在為以后學習數(shù)據(jù)結構打下結實的基礎 這里我們想設計一個有添加聯(lián)系人,刪除聯(lián)系人,查找聯(lián)系人,修改聯(lián)系人,展示聯(lián)系人,排序這幾…

通訊錄是一個可以很好鍛煉我們對結構體的使用,加深對結構體的理解,在為以后學習數(shù)據(jù)結構打下結實的基礎

這里我們想設計一個有添加聯(lián)系人,刪除聯(lián)系人,查找聯(lián)系人,修改聯(lián)系人,展示聯(lián)系人,排序這幾種功能的通訊錄

目錄

  • 整體框架:
  • 菜單:
  • 創(chuàng)建通訊錄:
  • 初始化:
  • 實現(xiàn)功能:
    • 添加聯(lián)系人:
    • 刪除聯(lián)系人:
      • find()的定義:
    • 查找聯(lián)系人:
    • 修改聯(lián)系人:
    • 展示聯(lián)系人:
    • 排序:
    • free空間:
  • 源代碼:

注意:我們按照三個區(qū)域劃分

在這里插入圖片描述

上圖所示進行區(qū)域劃分

  • con.c用來放實現(xiàn)功能的函數(shù)
  • con.h用來放頭文件的聲明
  • test.c用來放整體框架

整體框架:

使用do...while循環(huán)創(chuàng)建整體框架

整體框架在test.c中,這部分我們用來測試代碼

int main()
{int input = 0;InitContact(&Con);do{menu();printf("請輸入你的選項\n");scanf("%d", &input);switch (input){case Add:break;case Del:break;case Search:break;case Modify:break;case Show:break;case Sort:break;case Exit:printf("你已成功退出\n");break;default:printf("輸入錯誤,請重新輸入\n");break;}} while (input);return 0;
}
注意
我在使用case語句時沒有用數(shù)字1,2,3…
而是使用了枚舉常量,因為枚舉常量會更方便程序員查看與操作要與菜單的數(shù)字相匹配,不然就會弄巧成拙
enum option
{Exit,Add,Del,Search,Modify,Show,Sort,
};

菜單:

菜單的設計隨心所欲,但要與枚舉相匹配

void menu()
{printf("**************************\n");printf("***   1.Add    2.Del    **\n");printf("***   3.Search 4.Modify **\n");printf("***   5.Show   6.Sort   **\n");printf("***   0.Exit            **\n");printf("**************************\n");printf("**************************\n");
}

創(chuàng)建通訊錄:

此部分我們在Contact.h中創(chuàng)建,在另外兩個里include就可以

創(chuàng)建通訊錄之前要先創(chuàng)建一個聯(lián)系人的結構體:
假設我們的結構體包含了一個人的姓名,年齡,性別,電話,住址
那么久可以很好的進行創(chuàng)建:

typedef struct PeoInfo
{char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];
}PeoInfo;

其中的常量用define按需求進行定義,避免牽一發(fā)而動全身的情況

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30

因為要動態(tài)通訊錄
故設計通訊錄時不能使用PeoInfo創(chuàng)建數(shù)組的方式進行
可以創(chuàng)建結構體指針,指向動態(tài)內存分配的空間

typedef struct Contact
{PeoInfo* Data;int sz;int capacity;
}Contact;

最后在test.c文件中創(chuàng)建通訊錄 Contact Con;

初始化:

con.c中進行設計,不要忘記在test.c中調用,在con.h中聲明
實現(xiàn)功能皆是如此設計,將不在贅述

	void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;pc->capacity = START;PeoInfo* p = (PeoInfo*)malloc(sizeof(PeoInfo) * START);//start為初始化大小,define定義為3if (p != NULL){pc->Data = p;}else{perror("InitContact->malloc");}
}

實現(xiàn)功能:

添加聯(lián)系人:

void AddContact(Contact* pc)
{assert(pc);if (pc->sz == pc->capacity){PeoInfo* str = (PeoInfo*)realloc(pc->Data, sizeof(PeoInfo) * (pc->capacity + START_ADD));//START_ADD為define定義,為一次擴容數(shù)量if (str != NULL){pc->Data = str;pc->capacity = pc->capacity + START_ADD;printf("增容成功\n");}else{perror("AddContact->realloc");return;}}printf("輸入名字\n");scanf("%s", pc->Data[pc->sz].name);printf("輸入年齡\n");scanf("%d", &pc->Data[pc->sz].age);printf("輸入性別\n");scanf("%s", &pc->Data[pc->sz].sex);printf("輸入電話\n");scanf("%s", &pc->Data[pc->sz].tele);printf("輸入住址\n");scanf("%s", &pc->Data[pc->sz].addr);printf("輸入成功\n");pc->sz++;
}

刪除聯(lián)系人:

void DelContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空,無需刪除\n");return;}char name[NAME_MAX];printf("輸入你要刪除人的姓名\n");scanf("%s", name);int ret = find(pc, name);//我們這里使用了find函數(shù)if (ret == -1){printf("查無此人\n");return;}for (int i = ret; i < pc->sz-1; i++){pc->Data[i] = pc->Data[i + 1];}pc->sz--;
}

我們在輸入查找姓名后要進行查找,因此我們設計了一個find函數(shù),方便別的函數(shù)的使用

find()的定義:

int find(Contact* pc, char name[])
{for (int i = 0; i < pc->sz; i++){if (strcmp(name, pc->Data[i].name) == 0){return i;}}return -1;
}

查找聯(lián)系人:

void SearchContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空\n");return;}char name[NAME_MAX];printf("輸入你要查找人的姓名\n");scanf("%s", name);int ret = find(pc, name);if (ret == -1){printf("查無此人\n");return;}printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");printf(" % -20s % -5d % -5s % -20s % -20s\n",pc->Data[ret].name, pc->Data[ret].age, pc->Data[ret].sex, pc->Data[ret].tele, pc->Data[ret].addr);
}

修改聯(lián)系人:

void ModifyContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空\n");return;}char name[NAME_MAX];printf("輸入你要修改人的姓名\n");scanf("%s", name);int ret = find(pc, name);if (ret == -1){printf("查無此人\n");return;}printf("輸入名字\n");scanf("%s", pc->Data[ret].name);printf("輸入年齡\n");scanf("%d", &pc->Data[ret].age);printf("輸入性別\n");scanf("%s", &pc->Data[ret].sex);printf("輸入電話\n");scanf("%s", &pc->Data[ret].tele);printf("輸入住址\n");scanf("%s", &pc->Data[ret].addr);printf("輸入成功\n");
}

展示聯(lián)系人:

void ShowContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空,無需打印\n");return;}printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");for (int i = 0; i < pc->sz; i++){printf(" % -20s % -5d % -5s % -20s % -20s\n",pc->Data[i].name, pc->Data[i].age, pc->Data[i].sex, pc->Data[i].tele, pc->Data[i].addr);}
}

排序:

排序可以按照名字排,或是年齡,亦或是性別等等
這里我們只進行名字的排序,使用方法大同小異(快排)

int cmp_name(void* e1,void* e2)
{return strcmp(((PeoInfo*)e1)->name, ((PeoInfo*)e2)->name);
}
void SortContact(Contact* pc)
{qsort(pc->Data, pc->sz, sizeof(PeoInfo), cmp_name);
}

free空間:

最后一步就是釋放空間有始有終

void DestoryContact(Contact* pc)
{free(pc);
}

源代碼:

con.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"int find(Contact* pc, char name[])
{for (int i = 0; i < pc->sz; i++){if (strcmp(name, pc->Data[i].name) == 0){return i;}}return -1;
}//void InitContact(Contact* pc)
//{
//	assert(pc);
//	pc->sz = 0;
//	memset(pc->Data, 0, sizeof(pc->Data));
//}
void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;pc->capacity = START;PeoInfo* p = (PeoInfo*)malloc(sizeof(PeoInfo) * START);if (p != NULL){pc->Data = p;}else{perror("InitContact->malloc");}
}void DestoryContact(Contact* pc)
{free(pc);
}void AddContact(Contact* pc)
{assert(pc);if (pc->sz == pc->capacity){PeoInfo* str = (PeoInfo*)realloc(pc->Data, sizeof(PeoInfo) * (pc->capacity + START_ADD));if (str != NULL){pc->Data = str;pc->capacity = pc->capacity + 2;printf("增容成功\n");}else{perror("AddContact->realloc");return;}}printf("輸入名字\n");scanf("%s", pc->Data[pc->sz].name);printf("輸入年齡\n");scanf("%d", &pc->Data[pc->sz].age);printf("輸入性別\n");scanf("%s", &pc->Data[pc->sz].sex);printf("輸入電話\n");scanf("%s", &pc->Data[pc->sz].tele);printf("輸入住址\n");scanf("%s", &pc->Data[pc->sz].addr);printf("輸入成功\n");pc->sz++;
}void ShowContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空,無需打印\n");return;}printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");for (int i = 0; i < pc->sz; i++){printf(" % -20s % -5d % -5s % -20s % -20s\n",pc->Data[i].name, pc->Data[i].age, pc->Data[i].sex, pc->Data[i].tele, pc->Data[i].addr);}
}void DelContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空,無需刪除\n");return;}char name[NAME_MAX];printf("輸入你要刪除人的姓名\n");scanf("%s", name);int ret = find(pc, name);if (ret == -1){printf("查無此人\n");return;}for (int i = ret; i < pc->sz-1; i++){pc->Data[i] = pc->Data[i + 1];}pc->sz--;
}void SearchContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空\n");return;}char name[NAME_MAX];printf("輸入你要查找人的姓名\n");scanf("%s", name);int ret = find(pc, name);if (ret == -1){printf("查無此人\n");return;}printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");printf(" % -20s % -5d % -5s % -20s % -20s\n",pc->Data[ret].name, pc->Data[ret].age, pc->Data[ret].sex, pc->Data[ret].tele, pc->Data[ret].addr);
}void ModifyContact(Contact* pc)
{if (pc->sz == 0){printf("通訊錄為空\n");return;}char name[NAME_MAX];printf("輸入你要修改人的姓名\n");scanf("%s", name);int ret = find(pc, name);if (ret == -1){printf("查無此人\n");return;}printf("輸入名字\n");scanf("%s", pc->Data[ret].name);printf("輸入年齡\n");scanf("%d", &pc->Data[ret].age);printf("輸入性別\n");scanf("%s", &pc->Data[ret].sex);printf("輸入電話\n");scanf("%s", &pc->Data[ret].tele);printf("輸入住址\n");scanf("%s", &pc->Data[ret].addr);printf("輸入成功\n");
}int cmp_name(void* e1,void* e2)
{return strcmp(((PeoInfo*)e1)->name, ((PeoInfo*)e2)->name);
}
void SortContact(Contact* pc)
{qsort(pc->Data, pc->sz, sizeof(PeoInfo), cmp_name);
}

con.h

#pragma once
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30#define START 3
#define START_ADD 2typedef struct PeoInfo
{char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];
}PeoInfo;typedef struct Contact
{PeoInfo* Data;int sz;int capacity;
}Contact;//init
void InitContact(Contact* pc);//add
void AddContact(Contact* pc);//show
void ShowContact(Contact* pc);//del
void DelContact(Contact* pc);//search
void SearchContact(Contact* pc);//modify
void ModifyContact(Contact* pc);//sort
void SortContact(Contact* pc);//destory
void DestoryContact(Contact* pc);

test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"enum option
{Exit,Add,Del,Search,Modify,Show,Sort,
};void menu()
{printf("**************************\n");printf("***   1.Add    2.Del    **\n");printf("***   3.Search 4.Modify **\n");printf("***   5.Show   6.Sort   **\n");printf("***   0.Exit            **\n");printf("**************************\n");printf("**************************\n");
}
int main()
{int input = 0;Contact Con;InitContact(&Con);do{menu();printf("請輸入你的選項\n");scanf("%d", &input);switch (input){case Add:AddContact(&Con);break;case Del:DelContact(&Con);break;case Search:SearchContact(&Con);break;case Modify:ModifyContact(&Con);break;case Show:ShowContact(&Con);break;case Sort:SortContact(&Con);break;case Exit:DestoryContact(&Con);printf("你已成功退出\n");break;default:printf("輸入錯誤,請重新輸入\n");break;}} while (input);return 0;
}

歡迎糾錯與討論

http://www.risenshineclean.com/news/48131.html

相關文章:

  • 做網站需要用什么開發(fā)軟件福州百度分公司
  • 北京網站編程培訓石家莊關鍵詞優(yōu)化平臺
  • 刪除的網站做404東莞網站seo優(yōu)化托管
  • 免費發(fā)布信息網站大全666代刷網站推廣快速
  • 智能建站軟件東莞網站seo公司哪家大
  • 物流公司網站建設方案長沙seo網站管理
  • 手機網站用什么語言開發(fā)互動營銷成功案例
  • 建網站怎么做報分系統(tǒng)長春seo排名收費
  • 哪些網站做的最有特色如何優(yōu)化網站快速排名
  • wordpress 阿里云優(yōu)化教程網
  • 上傳網站備案信息真實性核驗單如何用html制作網頁
  • 長沙 外貿網站建設搜索引擎優(yōu)化培訓
  • 河北保定網站建設國家域名注冊服務網
  • 佛山企業(yè)網站建設特色百度收錄提交入口地址
  • 西安網站制作流程今天新聞摘抄十條
  • 大連全套網站建設上海最近三天的新聞
  • wordpress企業(yè)內網主題seo短視頻網頁入口引流網站
  • 網站建設平臺對比百度官網首頁登錄入口
  • 做網站需要api嗎附近電腦培訓班位置
  • 網站建設與維護的題目seo公司怎樣找客戶
  • 南沙網站建設wwiw搜索引擎外部鏈接優(yōu)化
  • 營銷型網站建設的優(yōu)缺點seo免費診斷
  • 做游戲評論注冊國外網站一份完整的品牌策劃方案
  • 二級網站建設費用南寧網站推廣公司
  • 云南網站設計公司淘寶關鍵詞搜索工具
  • 鄭州制作網站軟件杭州seo關鍵詞優(yōu)化公司
  • 北京企業(yè)建站服務中企關鍵詞首頁排名代發(fā)
  • 北京住房城鄉(xiāng)建設網站全網推廣的方式
  • 做外貿網站公司哪家關鍵詞搜索引擎工具
  • 在東營怎么建網站百度seo公司報價