通訊錄的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
- C語言的本質(32)——C語言與彙編之C語言內聯彙編C語言
- julia語言編輯器
- PureBasic 現代 BASIC 程式語言編輯器
- 聊聊C語言/C++—程式和程式語言C語言C++
- 邏輯式程式語言極簡實現(使用C#) - 1. 邏輯式程式語言介紹C#
- c語言if語句是如何變成彙編程式碼的?C語言
- 詳解流編輯器 sed 和 程式語言 awk
- 使用C語言編寫貪食蛇程式原始碼C語言原始碼
- 用C語言編寫windows服務程式C語言Windows
- 將你的 C 語言程式碼編譯成 .NET編譯
- PureBasic for Mac(BASIC語言編輯器)MacC語言
- C語言編譯工具C語言編譯
- C語言程式C語言
- 用python語言寫程式有什麼好用的編輯器?Python
- 詳述C++語言的VxD與外界通訊的所有介面 (轉)C++
- 09. C語言內嵌彙編程式碼C語言
- C#通訊錄設計C#
- 數字訊號處理c語言程式集C語言
- C語言 - 條件編譯C語言編譯
- Go語言實現TCP通訊GoTCP
- 跨語言通訊方案比較
- C語言實現通訊錄管理系統(結構體、列舉、聯合體應用)C語言結構體
- 線上語言編輯器(js,css,html等多種語言支援)JSCSSHTML
- C語言爬蟲程式編寫的爬取APP通用模板C語言爬蟲APP
- 57段讓編譯器崩潰的C語言程式碼編譯C語言
- C語言:一種高效、易學的程式語言C語言
- c++—通訊錄管理系統C++
- 奇怪的C語言——C51程式設計C語言注意事項C語言程式設計
- 通過 GDB 學習 C 語言
- C語言kill()函式:傳送訊號給指定的程式C語言函式
- 文字編輯器原始檔(java語言) (轉)Java
- java開發C語言編譯器:為C語言提供API呼叫JavaC語言編譯API
- 刷題記錄(C語言)01C語言
- C語言 編寫線段樹C語言
- c語言多檔案編譯C語言編譯