日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

【C语言】通讯录管理系统

發(fā)布時間:2023/12/20 windows 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言】通讯录管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C語言通訊錄管理系統(tǒng)

  • 前言
  • 一、系統(tǒng)框架搭建
    • 1.成員信息創(chuàng)建
    • 2.菜單實現(xiàn)
    • 3.系統(tǒng)功能聲明
  • 二、系統(tǒng)功能實現(xiàn)
    • 1.初始化通訊錄
    • 2.添加信息
    • 3.打印信息
    • 4.根據(jù)姓名查找位置
    • 5.刪除信息
    • 6.查找信息
    • 7.修改信息
    • 8.排序信息
  • 三、源文件展示
    • 1.test.c
    • 2.contact.c
    • 3.contact.h


前言

通過使用C語言來創(chuàng)建一個通訊錄的管理系統(tǒng),管理人員可對成員信息進行管理。成員信息包括姓名、年齡、電話、性別以及住址,執(zhí)行操作有增刪改查這四項基本操作以及成員信息全覽和信息排序。

一、系統(tǒng)框架搭建

1.成員信息創(chuàng)建

由于成員信息較多,可以選擇通過結(jié)構(gòu)體來創(chuàng)建一個通訊錄結(jié)構(gòu)體和一個成員信息結(jié)構(gòu)體。
通訊錄結(jié)構(gòu)體內(nèi)部會嵌套一個成員信息結(jié)構(gòu)體和一個表示成員數(shù)量的變量。

struct Infor {char name[nlen];int age;char tele[tlen];char sex[slen];char addres[alen]; };struct Contact {struct Infor data[MAX];int size; };

2.菜單實現(xiàn)

首先對于通訊錄來說,建立一個菜單是非常重要的,這就好比在一個餐廳里,只有提供了一份菜單,顧客就可以根據(jù)自己的意愿的點菜,在操作界面顯示一個完整簡明的菜單,才能更好地管理通訊錄系統(tǒng)。

void menu() {printf("************************************\n");printf("******* 通訊錄管理系統(tǒng) *******\n");printf("************************************\n");printf("******* 1.add *******\n");//添加信息printf("******* 2.delete *******\n");//刪除信息printf("******* 3.update *******\n");//更改信息printf("******* 4.read *******\n");//查找信息printf("******* 5.show *******\n");//打印信息printf("******* 6.sort *******\n");//排序信息printf("******* 0.exit *******\n");//退出printf("************************************\n"); }

3.系統(tǒng)功能聲明

//初始化通訊錄 void InitContact(struct Contact* stu);//添加信息 void AddContact(struct Contact* stu);//打印信息 void ShowContact(const struct Contact* stu);//根據(jù)姓名查找位置 int FindByName(const struct Contact* stu, char name[nlen]);//刪除信息 void DeleteContact(struct Contact* stu);//查找信息 void ReadContact(const struct Contact* stu);//修改信息 void UpdateContact(struct Contact* stu);//排序信息 void SortContact(struct Contact* stu);

二、系統(tǒng)功能實現(xiàn)

1.初始化通訊錄

為什么要對通訊錄進行初始化呢,因為在創(chuàng)建了通訊錄之后,里邊的所有信息的以隨機值的形式存在,不知道的還以為這個通訊錄里已經(jīng)存放了成員信息。

void InitContact(struct Contact* stu) {memset(stu->data, 0, sizeof(stu->data));stu->size = 0; }

2.添加信息

void AddContact(struct Contact* stu) {if (stu->size == MAX){printf("通訊錄已滿,無法添加信息!\n");}else{printf("請?zhí)砑有彰?#xff1a;");scanf("%s", (stu->data)[stu->size].name);printf("請?zhí)砑幽挲g:");scanf("%d", &((stu->data)[stu->size].age));printf("請?zhí)砑与娫?#xff1a;");scanf("%s", (stu->data)[stu->size].tele);printf("請?zhí)砑有詣e:");scanf("%s", (stu->data)[stu->size].sex);printf("請?zhí)砑拥刂?#xff1a;");scanf("%s", (stu->data)[stu->size].addres);stu->size++;printf("添加成功\n");} }

3.打印信息

void ShowContact(const struct Contact* stu) {if (stu->size == 0){printf("通訊錄為空\n");}else{printf("%-10s\t%-5s\t%-10s\t%-5s\t%-10s\n", "姓名", "年齡", "電話", "性別", "地址");for (int i = 0; i < stu->size; i++){printf("%-10s\t%-5d\t%-10s\t%-5s\t%-10s\n",stu->data[i].name,stu->data[i].age,stu->data[i].tele,stu->data[i].sex,stu->data[i].addres);}} }

4.根據(jù)姓名查找位置

這個函數(shù)的存在就是為了通訊錄管理人員通過成員姓名來查找該成員信息所處的位置。

static int FindByName(const struct Contact* stu,char name[nlen] ) {int i = 0;for (i = 0; i < stu->size; i++){if (0 == strcmp(stu->data[i].name, name)){return i;}}return -1; }

5.刪除信息

void DeleteContact(struct Contact* stu) {if (stu->size == 0){printf("通訊錄為空,無法刪除\n");}char name[nlen];printf("請輸入要刪除信息人的名字:");scanf("%s", name); int ret = FindByName(stu, name);if (ret == -1){printf("您要刪除的信息不存在!\n");}else{for (int j = ret; j < stu->size - 1; j++){stu->data[j] = stu->data[j + 1];}stu->size--;printf("刪除成功\n");} }

6.查找信息

void ReadContact(const struct Contact* stu) {printf("請輸入要查找信息人的名字:");char name[nlen];scanf("%s", name);int ret = FindByName(stu, name);if (ret == -1){printf("您要查找的信息不存在\n");}else{printf("%-10s\t%-5s\t%-10s\t%-5s\t%-10s\n", "姓名", "年齡", "電話", "性別", "地址");printf("%-10s\t%-5d\t%-10s\t%-5s\t%-10s\n",stu->data[ret].name,stu->data[ret].age,stu->data[ret].tele,stu->data[ret].sex,stu->data[ret].addres);} }

7.修改信息

void UpdateContact(struct Contact* stu) {printf("請輸入要該信息人的名字:");char name[nlen];scanf("%s", name);int ret = FindByName(stu, name);if (ret == -1){printf("您要修改的信息不存在\n");}else{printf("請?zhí)砑有彰?#xff1a;");scanf("%s", (stu->data)[ret].name);printf("請?zhí)砑幽挲g:");scanf("%d", &((stu->data)[ret].age));printf("請?zhí)砑与娫?#xff1a;");scanf("%s", (stu->data)[ret].tele);printf("請?zhí)砑有詣e:");scanf("%s", (stu->data)[ret].sex);printf("請?zhí)砑拥刂?#xff1a;");scanf("%s", (stu->data)[ret].addres);printf("修改成功\n");} }

8.排序信息

在排序這一模塊,我們選擇使用qsort函數(shù)來進行排序,對這個函數(shù)不清楚的朋友可以看一下我之前寫的一篇關(guān)于qsort函數(shù)的博客。

int cmp_s(const void* elem1, const void* elem2) {return strcmp((char*)elem1, (char*)elem2); }void SortContact(struct Contact* stu) {qsort(stu, stu->size, sizeof(stu->data[0]), cmp_s);printf("%-10s\t%-5s\t%-10s\t%-5s\t%-10s\n", "姓名", "年齡", "電話", "性別", "地址");for (int i = 0; i < stu->size; i++){printf("%-10s\t%-5d\t%-10s\t%-5s\t%-10s\n",stu->data[i].name,stu->data[i].age,stu->data[i].tele,stu->data[i].sex,stu->data[i].addres);} }

三、源文件展示

1.test.c

#include "contact.h"void menu() {printf("************************************\n");printf("******* 通訊錄管理系統(tǒng) *******\n");printf("************************************\n");printf("******* 1.ADD *******\n");printf("******* 2.DELETE *******\n");printf("******* 3.UPDATE *******\n");printf("******* 4.READ *******\n");printf("******* 5.SHOW *******\n");printf("******* 6.SORT *******\n");printf("******* 0.EXIT *******\n");printf("************************************\n"); }enum option {EXIT,ADD,DELETE,UPDATE,READ,SHOW,SORT };int main() {int input = 0;struct Contact stu;InitContact(&stu);do{menu();printf("請選擇操作:");scanf("%d", &input);switch (input){case ADD:AddContact(&stu);break;case DELETE:DeleteContact(&stu);break;case UPDATE:UpdateContact(&stu);break;case READ:ReadContact(&stu);break;case SHOW:ShowContact(&stu);break;case SORT:SortContact(&stu);break;case EXIT:printf("退出通訊錄\n");break;default:printf("輸入錯誤,請從新操作:\n");break;}} while (input);return 0; }

2.contact.c

#include "contact.h"void InitContact(struct Contact* stu) {memset(stu->data, 0, sizeof(stu->data));stu->size = 0; }void AddContact(struct Contact* stu) {if (stu->size == MAX){printf("通訊錄已滿,無法添加信息!\n");}else{printf("請?zhí)砑有彰?#xff1a;");scanf("%s", (stu->data)[stu->size].name);printf("請?zhí)砑幽挲g:");scanf("%d", &((stu->data)[stu->size].age));printf("請?zhí)砑与娫?#xff1a;");scanf("%s", (stu->data)[stu->size].tele);printf("請?zhí)砑有詣e:");scanf("%s", (stu->data)[stu->size].sex);printf("請?zhí)砑拥刂?#xff1a;");scanf("%s", (stu->data)[stu->size].addres);stu->size++;printf("添加成功\n");} }void ShowContact(const struct Contact* stu) {if (stu->size == 0){printf("通訊錄為空\n");}else{printf("%-10s\t%-5s\t%-10s\t%-5s\t%-10s\n", "姓名", "年齡", "電話", "性別", "地址");for (int i = 0; i < stu->size; i++){printf("%-10s\t%-5d\t%-10s\t%-5s\t%-10s\n",stu->data[i].name,stu->data[i].age,stu->data[i].tele,stu->data[i].sex,stu->data[i].addres);}} }static int FindByName(const struct Contact* stu,char name[nlen] ) {int i = 0;for (i = 0; i < stu->size; i++){if (0 == strcmp(stu->data[i].name, name)){return i;}}return -1; }void DeleteContact(struct Contact* stu) {if (stu->size == 0){printf("通訊錄為空,無法刪除\n");}char name[nlen];printf("請輸入要刪除信息人的名字:");scanf("%s", name); int ret = FindByName(stu, name);if (ret == -1){printf("您要刪除的信息不存在!\n");}else{for (int j = ret; j < stu->size - 1; j++){stu->data[j] = stu->data[j + 1];}stu->size--;printf("刪除成功\n");} }void ReadContact(const struct Contact* stu) {printf("請輸入要查找信息人的名字:");char name[nlen];scanf("%s", name);int ret = FindByName(stu, name);if (ret == -1){printf("您要查找的信息不存在\n");}else{printf("%-10s\t%-5s\t%-10s\t%-5s\t%-10s\n", "姓名", "年齡", "電話", "性別", "地址");printf("%-10s\t%-5d\t%-10s\t%-5s\t%-10s\n",stu->data[ret].name,stu->data[ret].age,stu->data[ret].tele,stu->data[ret].sex,stu->data[ret].addres);} }void UpdateContact(struct Contact* stu) {printf("請輸入要該信息人的名字:");char name[nlen];scanf("%s", name);int ret = FindByName(stu, name);if (ret == -1){printf("您要修改的信息不存在\n");}else{printf("請?zhí)砑有彰?#xff1a;");scanf("%s", (stu->data)[ret].name);printf("請?zhí)砑幽挲g:");scanf("%d", &((stu->data)[ret].age));printf("請?zhí)砑与娫?#xff1a;");scanf("%s", (stu->data)[ret].tele);printf("請?zhí)砑有詣e:");scanf("%s", (stu->data)[ret].sex);printf("請?zhí)砑拥刂?#xff1a;");scanf("%s", (stu->data)[ret].addres);printf("修改成功\n");} }int cmp_s(const void* elem1, const void* elem2) {return strcmp((char*)elem1, (char*)elem2); }void SortContact(struct Contact* stu) {qsort(stu, stu->size, sizeof(stu->data[0]), cmp_s);printf("%-10s\t%-5s\t%-10s\t%-5s\t%-10s\n", "姓名", "年齡", "電話", "性別", "地址");for (int i = 0; i < stu->size; i++){printf("%-10s\t%-5d\t%-10s\t%-5s\t%-10s\n",stu->data[i].name,stu->data[i].age,stu->data[i].tele,stu->data[i].sex,stu->data[i].addres);} }

3.contact.h

#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX 1000 #define nlen 20 #define tlen 11 #define slen 10 #define alen 10struct Infor {char name[nlen];int age;char tele[tlen];char sex[slen];char addres[alen]; };struct Contact {struct Infor data[MAX];int size; };void InitContact(struct Contact* stu);void AddContact(struct Contact* stu);void ShowContact(const struct Contact* stu);void DeleteContact(struct Contact* stu);void ReadContact(const struct Contact* stu);int FindByName(const struct Contact* stu, char name[nlen]);void UpdateContact(struct Contact* stu);void SortContact(struct Contact* stu);

注:此文章是一篇初級版的通訊錄管理系統(tǒng),后續(xù)還要對其進行優(yōu)化處理。

總結(jié)

以上是生活随笔為你收集整理的【C语言】通讯录管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。