通訊錄的c語言程式編輯
C語言/今天,鍋巴(小白本白)寫一個非常簡單的通訊錄
首先說下他的功能
1.這個通訊錄可以儲存1000個人的資訊。
2.這個通訊錄主要包含的內容為比較常見的個人資訊,包括姓名,年齡,性別,電話,QQ等。
3.然後包含的功能為新增,刪除,查詢,修改,排序當然還有展示。
4.下面是一些缺點,通訊錄無法儲存,必須手動錄入。
5.然後,為了方便管理這個程式碼分為三個版塊組成,需要建立一個標頭檔案和兩個原始檔(一個也行)。
6.不多bb,上程式碼
contact.h
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#define MAX_NAME 10
#define MAX_TELE 12
#define MAX_ADDR 10
#define MAX_QQ 12
#define MAX_SEX 5
#define MAX 1000
//成員資訊
typedef struct PeoInfo
{
char name[MAX_NAME];
char tele[MAX_TELE];
char addr[MAX_ADDR];
char qq[MAX_QQ];
char sex[MAX_SEX];
short age;
} PeoInfo;
//通訊錄
typedef struct Contact
{
PeoInfo data[MAX];
int sz;
} Contact;
//新增聯絡人
void add_contact(Contact* pc);
//刪除聯絡人
void del_contact(Contact* pc);
//查詢聯絡人
void search_contact(Contact* pc);
//修改聯絡人
void modify_contact(Contact* pc);
//展示聯絡人列表
void show_contact(const Contact* pc);
//給聯絡人排序
void sort_contact(Contact* pc);
contact.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//新增聯絡人
void add_contact(Contact* pc)
{
if (pc->sz == MAX)
{
printf("通訊錄已滿\n");
}
else
{
printf("請輸入姓名:>");
scanf("%s", pc->data[pc->sz].name);
printf("請輸入電話:>");
scanf("%s", pc->data[pc->sz].tele);
printf("請輸入性別:>");
scanf("%s", pc->data[pc->sz].sex);
printf("請輸入地址:>");
scanf("%s", pc->data[pc->sz].addr);
printf("請輸入QQ:>");
scanf("%s", pc->data[pc->sz].qq);
printf("請輸入年齡:>");
scanf("%d", &(pc->data[pc->sz].age));
pc->sz++;
printf("新增成功\n");
}
}
//展示通訊錄
void show_contact(Contact* pc)
{
int i = 0;
printf("%5s %12s %10s %5d %12s %5s",
"姓名", "電話", "地址", "年齡", "QQ", "性別");
for (i = 0; i < pc->sz; i++)
{
printf("%5s %12s %10s %5d %12s %5s\n",
pc->data[i].name,
pc->data[i].tele,
pc->data[i].addr,
pc->data[i].age,
pc->data[i].qq,
pc->data[i].sex);
}
}
//我要用陝北話來說
static int find_peo_by_name(Contact* pc, char name)
{
int i = 0;
for (i = 0; i < pc->sz; i++)
{
if (strcmp(name, pc->data[i].name) == 0)
{
return i;//森上lan
}
}
return -999999999999;//森不上
}
//刪除聯絡人
void del_contact(Contact* pc)
{
if (pc->sz == 0)
{
printf("啥都沒有你刪個der\n");
}
else
{
char name[MAX_NAME] = { 0 };
printf("請輸入被刪除人的姓名:>");
scanf("%s", name);
int pos = find_peo_by_name(pc,name);
if (pos == -666)
{
printf("沒人我怎麼找\n");
}
else
{
int j = 0;
for (j = pos; j < pc->sz - 1; j++)
{
pc->data[j] = pc->data[j++];
}
pc->sz--;
printf("刪除成功\n");
}
}
}
//查詢聯絡人
void search_contact(Contact* pc)
{
char name[MAX_NAME] = { 0 };
printf("請輸入聯絡人姓名\n");
//如果用額們陝北話應該說你要森誰了
scanf("%s",name);
int pos = find_peo_by_name(pc, name);
if (pos == -1)
{
printf("查無此人\n");
}
else
{
printf("%5s %12s %10s %5d %12s %5s",
"姓名", "電話", "地址", "年齡", "QQ", "性別");
printf("%5s %12s %10s %5d %12s %5s\n",
pc->data[pos].name,
pc->data[pos].tele,
pc->data[pos].addr,
pc->data[pos].age,
pc->data[pos].qq,
pc->data[pos].sex);
}
}
//修改聯絡人
void modify_contact(Contact* pc)
{
char name[MAX_NAME] = { 0 };
printf("請輸入需要修改的聯絡人姓名\n");
scanf("%s", name);
int pos = find_peo_by_name(pc, name);
if (pos == -1)
{
printf("查無此人\n");
}
else
{
printf("請輸入姓名:>");
scanf("%s", pc->data[pos].name);
printf("請輸入電話:>");
scanf("%s", pc->data[pos].tele);
printf("請輸入性別:>");
scanf("%s", pc->data[pos].sex);
printf("請輸入地址:>");
scanf("%s", pc->data[pos].addr);
printf("請輸入QQ:>");
scanf("%s", pc->data[pos].qq);
printf("請輸入年齡:>");
scanf("%d", &(pc->data[pos].age));
}
}
//給聯絡人排序
void sort_contact(Contact* pc)
{
int i = 0;
int j = 0;
for (i = 0; i < pc->sz - 1; i++)
{
for (j = 0; j < pc->sz - 1 - i; j++)
//如果寫成j < pc->sz意味著工作量增加一倍
{
if (strcmp(pc->data[j].name, pc->data[j + 1].name) > 0)
{
PeoInfo tmp = pc->data[j];
pc->data[j] = pc->data[j + 1];
pc->data[j + 1] = tmp;
}
}
}
}
test.c
#include "contact.h"
void menu()
{
printf("**************************\n");
printf("****1.add 2.del ****\n");
printf("****3.search 4.modify ***\n");
printf("****5.sort 6.show ****\n");
printf("**** 0.exit *******\n");
printf("**************************\n");
}
enum Option
{
EXIT,
ADD,
DEL,
SEARCH,
MODIFY,
SORT,
SHOW
};
int main()
{
Contact con = { 0 };
int input = 0;
do
{
menu();
printf("請選擇:>");
scanf("%d", &input);
switch (input)
{
case ADD:
add_contact(&con);
break;
case SHOW:
show_contact(&con);
break;
case DEL:
del_contact(&con);
break;
case SORT:
sort_contact(&con);
break;
case SEARCH:
search_contact(&con);
break;
case MODIFY:
modify_contact(&con);
break;
case EXIT:("退出通訊錄\n");
break;
default:
printf("不要亂搞哦\n");
break;
}
} while (input);
return 0;
}
相關文章
- 教你C語言實現通訊錄的詳細程式碼C語言
- 【C語言進階】通訊錄的儲存和載入C語言
- C語言實現TCP通訊C語言TCP
- PureBasic 現代 BASIC 程式語言編輯器
- 聊聊C語言/C++—程式和程式語言C語言C++
- c語言if語句是如何變成彙編程式碼的?C語言
- 邏輯式程式語言極簡實現(使用C#) - 1. 邏輯式程式語言介紹C#
- 用python語言寫程式有什麼好用的編輯器?Python
- PureBasic for Mac(BASIC語言編輯器)MacC語言
- 09. C語言內嵌彙編程式碼C語言
- 組合語言-019(彙編程式與c\c++相互呼叫)組合語言C++
- C語言 - 條件編譯C語言編譯
- C語言爬蟲程式編寫的爬取APP通用模板C語言爬蟲APP
- 使用C語言編寫貪食蛇程式原始碼C語言原始碼
- C語言:一種高效、易學的程式語言C語言
- Linux下C語言編譯的問題LinuxC語言編譯
- 那些主流程式語言的知識,C語言(Ⅰ)C語言
- c語言多檔案編譯C語言編譯
- C語言 編寫線段樹C語言
- 刷題記錄(C語言)01C語言
- C語言學習記錄_2019.02.06C語言
- C語言程式碼區錯誤以及編譯過程C語言編譯
- C語言實現通訊錄管理系統(結構體、列舉、聯合體應用)C語言結構體
- 【程式設計大賽刷題記錄】C語言 06程式設計C語言
- 【程式設計大賽刷題記錄】C語言 02程式設計C語言
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- C#通訊錄設計C#
- c語言程式環境C語言
- 程式語言的“別樣”編年史
- C語言通過.h標頭檔案引入自己寫的源程式C語言
- Go語言實現TCP通訊GoTCP
- c語言-記錄閱讀《c缺陷與陷阱》C語言
- C語言簡單程式碼程式C語言
- (嵌入式)Windows與Ubantu下的C語言程式的編譯執行WindowsC語言編譯
- 小C語言--詞法分析程式(編譯原理實驗一)C語言詞法分析編譯原理
- 用 C 語言編寫多程式 Web 伺服器【粗暴版】Web伺服器
- C語言知識彙總 | 00-C語言知識彙總目錄C語言
- 使用 Sublime Text 3 編譯 C 語言編譯