C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計(jì)要求
1.單位、個(gè)人信息查詢
2.打開(kāi)、寫入保存這些信息的文件
完整代碼
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Userinfo // 定義結(jié)構(gòu)體類型;封裝個(gè)人的信息
{
? ? char name[20]; // 用戶姓名
? ? char sex[2]; // 性別
? ? char cname[20]; // 單位
? ? char mobileNumber[11]; // 手機(jī)
} Userinfo;
typedef struct Companyinfo // 定義結(jié)構(gòu)體類型;封裝個(gè)人的信息
{
? ? char companyname[20]; // 姓名
? ? char companyaddress[200]; // 單位地址
? ? char telphone[8]; // 電話
} Companyinfo;
? ? int count = 0; //系統(tǒng)中的現(xiàn)有人數(shù)
? ? int countu = 0; //系統(tǒng)中的現(xiàn)有人數(shù)
void insertuserinfo(Userinfo *userinfo, int *countu)
/*添加聯(lián)系人信息*/
{
?? ?printf("請(qǐng)輸入要添加人的姓名:> ");
?? ?scanf("%s", (userinfo + (*countu))->name);
//flag:
?? ?printf("請(qǐng)輸入要添加人的性別(男/女):> ");
?? ?scanf("%s", (userinfo + (*countu))->sex);
?? ?printf("請(qǐng)輸入要添加人的工作單位:> ");
?? ?scanf("%s", &(userinfo + (*countu))->cname);
?? ?printf("請(qǐng)輸入要添加的電話:> ");
?? ?scanf("%s", (userinfo + (*countu))->mobileNumber);
?? ?printf("添加成功!\n");
?? ?(*countu)++;/*已有人數(shù)加1*/
}
void insertcompanyinfo(Companyinfo *companyinfo, int *count)
/*添加單位信息*/
{
?? ?printf("請(qǐng)輸入要添加單位的名稱:> ");
?? ?scanf("%s", (companyinfo + (*count))->companyname);
?? ?printf("請(qǐng)輸入要添加單位的地址:> ");
?? ?scanf("%s", &(companyinfo + (*count))->companyaddress);
?? ?printf("請(qǐng)輸入要添加單位的電話:> ");
?? ?scanf("%s", (companyinfo + (*count))->telphone);
?? ?printf("添加成功!\n");
?? ?(*count)++;/*已有人數(shù)加1*/
}
void DeleteUserinfo(Userinfo *userinfo, int *countu)
/*刪除指定聯(lián)系人信息*/
{
?? ?char _name[20];
?? ?if ((*countu) <= 0)
?? ?{
?? ??? ?printf("此系統(tǒng)中還沒(méi)有人員信息!\n");
?? ??? ?return;
?? ?}
?? ?printf("請(qǐng)輸入您要?jiǎng)h除人員的姓名:> ");
?? ?scanf("%s", _name);
?? ?for (int i = 0; i < (*countu); i++)
?? ?{
?? ??? ?if (strcmp((userinfo + i)->name, _name) == 0)
?? ??? ?{
?? ??? ??? ?for (int j = i; j < (*countu) - 1; j++)
?? ??? ??? ?{
?? ??? ??? ??? ?strcpy((userinfo + j)->name, (userinfo + j + 1)->name);
?? ??? ??? ??? ?strcpy((userinfo + j)->sex, (userinfo + j + 1)->sex);
?? ??? ??? ??? ?strcpy((userinfo + j)->cname ,(userinfo + j + 1)->cname);
?? ??? ??? ??? ?strcpy((userinfo + j)->mobileNumber, (userinfo + j + 1)->mobileNumber);
?? ??? ??? ?}
?? ??? ??? ?(*countu)--;
?? ??? ??? ?printf("刪除成功!\n");
?? ??? ??? ?return;
?? ??? ?}/*if*/
?? ?}/*for*/
?? ?printf("當(dāng)前系統(tǒng)中沒(méi)有此人!\n");
}
void DeleteCompanyinfo(Companyinfo *companyinfo, int *count)
/*刪除指定單位信息*/
{
?? ?char _name[20];
?? ?if ((*count) <= 0)
?? ?{
?? ??? ?printf("此系統(tǒng)中還沒(méi)有單位信息!\n");
?? ??? ?return;
?? ?}
?? ?printf("請(qǐng)輸入您要?jiǎng)h除單位名稱:> ");
?? ?scanf("%s", _name);
?? ?for (int i = 0; i < (*count); i++)
?? ?{
?? ??? ?if (strcmp((companyinfo + i)->companyname, _name) == 0)
?? ??? ?{
?? ??? ??? ?for (int j = i; j < (*count) - 1; j++)
?? ??? ??? ?{
?? ??? ??? ??? ?strcpy((companyinfo + j)->companyname, (companyinfo + j + 1)->companyname);
?? ??? ??? ??? ?strcpy((companyinfo + j)->companyaddress, (companyinfo + j + 1)->companyaddress);
?? ??? ??? ??? ?strcpy((companyinfo + j)->telphone, (companyinfo + j + 1)->telphone);
?? ??? ??? ?}
?? ??? ??? ?(*count)--;
?? ??? ??? ?printf("刪除成功!\n");
?? ??? ??? ?return;
?? ??? ?}/*if*/
?? ?}/*for*/
?? ?printf("當(dāng)前系統(tǒng)中沒(méi)有此單位!\n");
}
void Search(const Companyinfo *companyinfo, const int count)
/*查找指定單位信息*/
{
?? ?char _name[20];
?? ?printf("請(qǐng)輸入您要查找的單位名稱:> ");
?? ?scanf("%s", _name);
?? ?for (int i = 0; i < count; i++)
?? ?{
?? ??? ?if (strcmp((companyinfo + i)->companyname, _name) == 0)
?? ??? ?{
?? ??? ??? ?printf("*********=======您查單位信息為=======*********\n");
?? ??? ??? ?printf(" ? ?********* ? 單位名稱:> %s\n", (companyinfo + i)->companyname);
?? ??? ??? ?printf(" ? ?********* ? 單位地址:> %s\n", (companyinfo + i)->companyaddress);
?? ??? ??? ?printf(" ? ?********* ? 單位電話:> %s\n", (companyinfo + i)->telphone);
?? ??? ??? ?return;
?? ??? ?}
?? ?}/*for*/
?? ?printf("沒(méi)有找到您要查找的單位!\n");
}
void SearchUser(const Userinfo *userinfo, const int countu)
/*查找指定聯(lián)系人信息*/
{
?? ?char _name[20];
?? ?printf("請(qǐng)輸入您要查找人的信息:> ");
?? ?scanf("%s", _name);
?? ?for (int i = 0; i < countu; i++)
?? ?{
?? ??? ?if (strcmp((userinfo + i)->name, _name) == 0)
?? ??? ?{
?? ??? ??? ?printf("*********=======您查個(gè)人信息為=======*********\n");
?? ??? ??? ?printf(" ? ?********* ? 姓名:> %s\n", (userinfo + i)->name);
?? ??? ??? ?printf(" ? ?********* ? 性別:> %s\n", (userinfo + i)->sex);
?? ??? ??? ?printf(" ? ?********* ? 單位:> %d\n", (userinfo + i)->cname);
?? ??? ??? ?printf(" ? ?********* ? 電話:> %d\n", (userinfo + i)->mobileNumber);
?? ??? ??? ?return;
?? ??? ?}
?? ?}/*for*/
?? ?printf("沒(méi)有找到您要查找的人員!\n");
}
void Alter(Companyinfo *companyinfo, const int count)
/*修改指定單位信息*/
{
?? ?char _name[20];
?? ?printf("請(qǐng)輸入您要修改的單位的名稱:> ");
?? ?scanf("%s", _name);
?? ?for (int i = 0; i < count; i++)
?? ?{
?? ??? ?if (strcmp((companyinfo + i)->companyname, _name) == 0)
?? ??? ?{
?? ??? ??? ?printf("請(qǐng)輸入修改后的單位名稱:> ");
?? ??? ??? ?scanf("%s", (companyinfo + i)->companyname);
?? ??? ??? ?printf("請(qǐng)輸入修改后的單位地址:> ");
?? ??? ??? ?scanf("%s", (companyinfo + i)->companyaddress);
?? ??? ??? ?printf("請(qǐng)輸入修改后的單位電話:> ");
?? ??? ??? ?scanf("%s", (companyinfo + i)->telphone);
?? ??? ??? ?printf("修改成功!\n");
?? ??? ??? ?return;
?? ??? ?}
?? ?}/*for*/
?? ?printf("沒(méi)有找到您要查找的單位!\n");
}
void Show(const Companyinfo *companyinfo, const int count)
/*顯示所有單位信息*/
{
?? ?if (count == 0)
?? ?{
?? ??? ?printf("沒(méi)有找到您要查找的單位!\n");
?? ?}
?? ?else
?? ?{
?? ??? ?for (int i = 0; i < count; i++)
?? ??? ?{
?? ??? ??? ?printf("%5s ? ?|%13s ?|%s\n", (companyinfo + i)->companyname, (companyinfo + i)->telphone, (companyinfo + i)->companyaddress);
?? ??? ?}
?? ?}
}
void OpenFile()
{
? ?FILE *fp = NULL;
? ?char buff[255];
? ?fp = fopen("/Teldict.txt", "r");
? ?printf("打開(kāi)文件名:Teldict.text \n");
? ?printf("內(nèi)容如下:\n");
? ?fgets(buff, 255, (FILE*)fp);
? ?printf("1: %s\n", buff );
? ?fclose(fp);
}
void WriteFile()
{
? char s[100];
? ?FILE *fp = NULL;
? ?fp = fopen("/Teldict.txt", "w+");
? ? ? ? ? ? printf("請(qǐng)輸入寫入文件的內(nèi)容: ");
? ? ? ? ? ? scanf("%s",&s);
? ?fprintf(fp,s);
? ?fputs(s, fp);
?// ?fputs("This is testing for fputs...\n", fp);
? ?fclose(fp);
}
int StcCmp(const void*num1, const void *num2)
/*快排的比較函數(shù)*/
{
?? ?return (strcmp(((Companyinfo *)num1)->companyname, ((Companyinfo *)num2)->companyname) > 0) ? 1 : -1;
}
int switchuserinfo(Userinfo *userinfo)
{
? ? int b;
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("1)新建個(gè)人信息\n");
? ? ? ? ? ? printf("2)修改個(gè)人信息\n");
? ? ? ? ? ? printf("3)刪除個(gè)人信息\n");
? ? ? ? ? ? printf("4)返回上一菜單\n");
? ? ? ? ? ? printf("請(qǐng)選擇上面序號(hào)進(jìn)行相應(yīng)的操作: ");
? ? ? ? ? ? scanf("%d",&b);
? ? ? ? ? ? switch(b)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? insertuserinfo(userinfo,&countu);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? void Alter(Companyinfo *companyinfo, const int count);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? void Alter(Companyinfo *companyinfo, const int count);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 4:break;
? ? ? ? ? ? }
? ?return 0;
}
int switchcompanyinfo(Companyinfo *companyinfo)
{
? ? ? int b;
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("1)新建單位信息\n");
? ? ? ? ? ? printf("2)修改單位信息\n");
? ? ? ? ? ? printf("3)刪除單位信息\n");
? ? ? ? ? ? printf("4)查詢單位信息\n");
? ? ? ? ? ? printf("5)顯示單位信息\n");
? ? ? ? ? ? printf("6)返回上一菜單\n");
? ? ? ? ? ? printf("請(qǐng)選擇上面序號(hào)進(jìn)行相應(yīng)的操作: ");
? ? ? ? ? ? scanf("%d",&b);
? ? ? ? ? ? switch(b)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? insertcompanyinfo(companyinfo,&count);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? Alter(companyinfo,count);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? DeleteCompanyinfo(companyinfo,&count);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? Search(companyinfo,count);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? Show(companyinfo,count);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? case 6:break;
? ? ? ? ? ? }
?return 0;
};
int main()
{
Userinfo userinfo[10];
Companyinfo companyinfo[10];
int inputkey;
printf("歡迎使用電話薄查詢系統(tǒng)!\n\n");
qq:
? ?printf("請(qǐng)輸入登錄賬號(hào):");
? ?scanf("%d",&inputkey);
? int input = 1;
if (inputkey==1001)
?{
?? ?while (input)
?? ?{
?? ? ?printf("\n");
? ? ?printf("請(qǐng)選擇對(duì)應(yīng)序號(hào):(1) 單位信息管理; (2)個(gè)人信息管理 ?(3)重新登錄 ?(4)退出 :");
? ? ?scanf("%d",&input);
?? ??? ?switch (input)
?? ??? ?{
?? ? ? ? ?case 1: ? ? ?//單位信息管理
?? ??? ??? ? switchcompanyinfo(companyinfo);
?? ??? ??? ? break;
?? ? ? ? ?case 2: ? ? ?//個(gè)人信息管理
?? ??? ??? ? switchuserinfo(userinfo);
?? ??? ??? ? break;
?? ? ? ? ?case 3: ? ? ?//
?? ??? ??? ? goto qq;
?? ??? ??? ? break;
?? ??? ? ?case 4:
?? ??? ??? ?printf("感謝您試用本服務(wù)系統(tǒng),歡迎您的下次使用!\n");
?? ??? ??? ?system("pause");
?? ??? ? ? ?return 0;
? ? ?? ?};//while
? ? ?}
?}
? else
? ? {
? ?? ?while (input)
?? ?{
?? ? ? ?printf("請(qǐng)選擇操作序號(hào) :\n\n");
?? ? ? ?printf("1)單位查詢\n");
?? ? ? ?printf("2)個(gè)人信息查詢\n");
?? ? ? ?printf("3)打開(kāi)文件\n");
?? ? ? ?printf("4)寫入文件\n");
?? ? ? ?printf("5)重新登錄\n");
?? ? ? ?printf("6)退出\n");
? ? ?scanf("%d",&input);
?? ??? ?switch (input)
?? ??? ?{
?? ? ? ? ?case 1: ? ? ?//單位查詢
?? ??? ??? ? Search(companyinfo, count);
?? ??? ??? ? break;
?? ? ? ? ?case 2: ? ? ?//個(gè)人信息查詢
?? ??? ??? ? SearchUser(userinfo, countu);
?? ??? ??? ? break;
?? ? ? ? ?case 3: ? ? ?//打開(kāi)文件
?? ??? ??? ? OpenFile();
?? ??? ??? ? break;
?? ? ? ? ?case 4: ? ? ?//寫入文件
?? ??? ??? ? WriteFile();
?? ??? ??? ? break;
? ? ? ? ? case 5 :
? ? ? ? ? ? goto qq; break;
?? ??? ? ?case 6:
?? ??? ??? ?printf("感謝您試用本服務(wù)系統(tǒng),歡迎您的下次使用!\n");
?? ??? ??? ?system("pause");
?? ??? ? ? ?return 0;
? ? ?? ?};//while
?? ?}
? ? }
? printf("\n");
?? ?system("pause");
? return 0;
}運(yùn)行結(jié)果

本代碼設(shè)置的登錄賬號(hào)是1,當(dāng)然你也可以進(jìn)行修改。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言通訊錄管理系統(tǒng)完整版
- C語(yǔ)言通訊錄管理系統(tǒng)課程設(shè)計(jì)
- 用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的通訊錄
- C語(yǔ)言基于哈希表實(shí)現(xiàn)通訊錄
- C語(yǔ)言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)
- C語(yǔ)言使用結(jié)構(gòu)體實(shí)現(xiàn)簡(jiǎn)單通訊錄
- 使用C語(yǔ)言打造通訊錄管理系統(tǒng)和教學(xué)安排系統(tǒng)的代碼示例
- C語(yǔ)言實(shí)現(xiàn)通訊錄功能
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
Linux下g++編譯與使用靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的方法
下面小編就為大家?guī)?lái)一篇Linux下g++編譯與使用靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
C++11中std::function與std::bind的用法實(shí)例
大家都知道C++11中增加了許多的新特性,下面這篇文章主要給大家介紹了關(guān)于C++11中std::function與std::bind的用法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
C語(yǔ)言 循環(huán)詳解及簡(jiǎn)單代碼示例
本文主要介紹C語(yǔ)言的循環(huán)知識(shí),這里整理了循環(huán)的基礎(chǔ)資料并附簡(jiǎn)單的代碼示例詳細(xì)講解,有需要的小伙伴可以參考下2016-08-08
Qt串口通信開(kāi)發(fā)之QSerialPort模塊Qt串口通信接收數(shù)據(jù)不完整的解決方法
這篇文章主要介紹了Qt串口通信開(kāi)發(fā)之QSerialPort模塊Qt串口通信接收數(shù)據(jù)不完整的解決方法,需要的朋友可以參考下2020-03-03
基于matlab對(duì)比度和結(jié)構(gòu)提取的多模態(tài)解剖圖像融合實(shí)現(xiàn)
這篇文章主要介紹了多模態(tài)醫(yī)學(xué)圖像配準(zhǔn)與融合的概念、方法及意義,最后簡(jiǎn)單介紹了小波變換分析方法。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-11-11
C++設(shè)計(jì)模式之組合模式(Composite)
這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之組合模式Composite,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04

