C語言實(shí)現(xiàn)手機(jī)電話簿管理系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)手機(jī)電話簿管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一、任務(wù)概述(文章僅供參考)
用c設(shè)計(jì)出模擬手機(jī)通訊錄管理系統(tǒng),實(shí)現(xiàn)對手機(jī)中的通訊錄進(jìn)行管理
二、設(shè)計(jì)功能
查看功能:選擇此功能時,列出下列三類選擇。A辦公類,B個人類,C商務(wù)類,當(dāng)選中某類時,顯示出此類中的所有數(shù)據(jù)。
增加功能:能錄入新數(shù)據(jù),一個結(jié)點(diǎn)包括:姓名、電話號碼、分類(可選項(xiàng)有:A 辦公類,B 個人類,C 商務(wù)類)、電子郵件。
撥號功能:能顯示出通訊錄中所有人的姓名,當(dāng)選中某個姓名時,屏幕上模擬打字機(jī)的效果依次顯示出此人的電話號碼中的各個數(shù)字,并伴隨相應(yīng)的撥號聲音。
修改功能:選中某個人的姓名時,可對此人的相應(yīng)數(shù)據(jù)進(jìn)行修改。
刪除功能:選中某個人的姓名時,可對此人的相應(yīng)數(shù)據(jù)進(jìn)行刪除,并自動調(diào)整后續(xù)條目的編號。
三、功能展示



四、思維導(dǎo)圖
五、程序源碼
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define N 15 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //最大容量為15
typedef struct ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//定義一個結(jié)構(gòu)
{
? char name[10];
? char haoma[15];
? ? ?char leibie[10];
? ? ?char dizhi[20];
}ren;
//菜單
void menu() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //目錄
{
? system("cls"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//清屏
? ? printf("\n\n\n ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ?┏━━━━━━━━━━┓ ? ? ? ? ? ? ? ? ?┃");?
? ? printf("\n ┃ ? ? ? ? ? ? ?┃ 歡迎使用手機(jī)通訊錄 ┃ ? ? ? ? ? ? ? ? ?┃ \n");
? ? printf(" ┃ ? ? ? ? ? ? ?┗━━━━━━━━━━┛ ? ? ? ? ? ? ? ? ?┃");
? ? printf(" ┃ ? ? ? ? ? ? ?┏━━━━━━━━━━┓ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? 1.添加聯(lián)系人 ? ┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? 2.查詢聯(lián)系人 ? ┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? 3.修改聯(lián)系人 ? ┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? 4.刪除聯(lián)系人 ? ┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? 5.撥號 ? ? ? ? ┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? 0.退出 ? ? ? ? ┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ? ?┃ ? ? ? ? ? ? ? ? ?┃\n"); ?
? ? printf(" ┃ ? ? ? ? ? ? ?┗━━━━━━━━━━┛ ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┃ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?┃\n");
? ? printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ? ? ? ? ");
? ? printf("\n");
? ?printf("請選擇相應(yīng)的功能:");
}?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//號碼添加
void input()
{
? ? ?FILE *fp; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定義文件指針
? ? ?ren ry,s; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 定義兩個ren結(jié)構(gòu)體的量
? ? ?if((fp=fopen("ren.dat","ab+"))==NULL)
? {printf("can't open file!\n");exit(0);}
? ? ?printf("\n錄入格式\n姓名:\n號碼:\n類別:\n郵箱:\n當(dāng)輸入姓名為#結(jié)束錄入\n");
? ? ?while(1)
? { ?printf("請輸入姓名:");
? ? ?scanf("%s",ry.name);
? ? ? if(strcmp(ry.name,"#")==0) break; ? ? ? ? ? ? ? //如果輸入#則退出添加
? ? ? ? ? ?printf("請輸入電話號碼:");
? ? ? ? ?scanf("%s",ry.haoma);
? ? ? ? ?printf("請輸入類別(A辦公類B個人類C商務(wù)類):");
? ? ? ? ?scanf("%s",ry.leibie);
? ? ? ? ?printf("請輸入郵箱地址:");
? ? ? ? ?scanf("%s",ry.dizhi);
? ? ? ? ?fseek(fp,0,0); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//指針定位到文件開始位置
? ? ? ?fread(&s,sizeof(ren),1,fp);
? ? ? ?while(!feof(fp))
? ? { ? ? ? if(strcmp(s.haoma,ry.haoma)==0)
? ? ? {printf("號碼已經(jīng)存在,不能記錄.\n");break;}//遇到有相同的號碼
? ? ? ? ? ? fread(&s,sizeof(ren),1,fp);
? }
? ? ? ?if(feof(fp)) ? ? ? ? ? ? ? ? ? ? //讀到自后也沒有相同的號碼
? ? ? ? ? fwrite(&ry,sizeof(ren),1,fp); //將信息寫入文件
? }
? ? ?fclose(fp); ? ? ? ? ? ? ? ? ? ? ? ? //關(guān)閉文件
? ? ?getchar(); ? ? ? ? ? ? ? ? ? ? ? ? ?//接受一個輸入
}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
void search() ? ? ? ? ? ? ? ? ? ? ? ? ? ? //查詢
{
ren ry;
FILE *fp;
char leibie[10];
system("cls");
printf("\n輸入要查人員的類別: ");scanf("%s",leibie);//要查詢的類別
? ? if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
? ? ? ? fread(&ry,sizeof(ren),1,fp);
? ?if(!feof(fp))
? ?{ ? printf(" ? ?人員的信息如下:\n");
? ? ? ?printf("說明:(A辦公類B個人類C商務(wù)類)");
? ? printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱");
while(!feof(fp))
{
? ? ? if(strcmp(ry.leibie,leibie)==0) ? ? ? ? ? ? ? ?//若為該類別則輸出
? ?{?
? ? ? printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
? ?}
? ?fread(&ry,sizeof(ren),1,fp);
}
? ?}
? ?else printf("查找失敗!!!");
? ?fclose(fp);
? ?getch();
}
? ? ? //修改:輸入人員的姓名,查找該人員,若找到則修改該人員的信息,并顯示修改前后的結(jié)果;
void modi()
{ ? ren ry;
FILE *fp;
char name[10];
system("cls");
if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
? ?if(!feof(fp))
? ?{printf(" ? 修改前全部人員的信息如下:\n");
? printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱");?
? fread(&ry,sizeof(ren),1,fp); ??
while(!feof(fp))
? ?{?
? ? ? ? ? ??
? ? ? ?printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
? ? ? ? fread(&ry,sizeof(ren),1,fp);
? ? ?}
? ?}
printf("\n輸入要修改人員的姓名: ");scanf("%s",name);
? ? if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
? ?while(!feof(fp))
? ?{ ?fread(&ry,sizeof(ren),1,fp);
? ? ? if(strcmp(ry.name,name)==0) ? ? ? ? ? ?
? ?{ ?printf(" ? 修改前人員的信息如下:\n");
? ? ? printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱");
? ? ? ? ?printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
? ? ? ? ?printf("\n請輸入該人的號碼:");scanf("%s",ry.haoma);
? ? ? ? ?printf("\n類別:");scanf("%s",ry.leibie); ? ? ? ? ? ? ? //新信息輸入
? ? ? ? ?printf("\n郵箱:");scanf("%s",ry.dizhi);
? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //修改完畢退出
? ?}
? ?}
? ?if(!feof(fp))
? ?{ ?
? ? ? printf(" ?\n 修改后的人的信息如下:\n");
? ?printf("\n%10s %15s %10s %20s \n","姓名","號碼","類別","郵箱");
? ? ? printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
? ? ? fseek(fp,-sizeof(ren),1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//指針向前一位定位
? ? ? fwrite(&ry,sizeof(ren),1,fp);
? ?}
? ?else
printf("\n此人不存在,修改失敗!!");
? ?fclose(fp);
? ?getch();
}
? ? ?//刪除:輸入人員姓名,若該人員存在,則刪除,并顯示刪除后余下的人員的信息
void dele()
{ ? ren ?ry[N];
? ? FILE *fp;
? ? char name[10];
? ? int i,len,k=-1;
? ? system("cls");
? ? printf("\n輸入要刪除的人員姓名: ");scanf("%s",name);
? ? i=0;
? ? if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
? ? while(!feof(fp))
{ ? ? fread(&ry[i],sizeof(ren),1,fp);
? ? ? ? ? if(feof(fp)) break;
? ? ? ? ? if(strcmp(ry[i].name,name)==0) k=i;
? ? ? ? ? i++;
}
? ? fclose(fp);
? ? ? ? ? ? ? ? ? ? ? ? ? //以下是刪除后重新寫文件
? ?len=i;
? ?if(k>=0)
? ?{ ? ?if((fp=fopen("ren.dat","wb+"))==NULL) {printf("can't open file!\n");exit(0);}
? ? ? ? for(i=0;i<len;i++)
? { ? if(i==k) continue;
? ? ? ? ? ? fwrite(&ry[i],sizeof(ren),1,fp);
? }
? ? ? ? fclose(fp);printf("刪除成功!!!\n");
? ?}
? ?
? ?else printf("刪除失敗!!!\n");
? ?getch();
}
void bohao() //撥號
{ ? ?ren ry;
? ? ?FILE *fp;
? ? ?char name[10];
? system("cls");
? printf("\n輸入要撥人員的姓名: ");scanf("%s",name);
? ? ?if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
? ? ?while(!feof(fp))
? { ? ? fread(&ry,sizeof(ren),1,fp);
? ? ? ? ? ?if(strcmp(ry.name,name)==0)
? ? ?{ ?printf("\n\a\a\a\a\a\a %15s\a\a\a\a\a\n",ry.haoma); ? //輸出號碼和聲音
? ? ? ? ? ? break;
? ? ?}
? }
? if(feof(fp)) printf("撥號失敗!!!");
? ? ?fclose(fp);
? ? ?getch();
}
//菜單選擇
void choice()
{?
char ch;
while(1)
{
? menu();// 顯示菜單
? ch=getch();//選擇菜單
if(ch=='0') break;
? switch(ch)//判斷功能項(xiàng)
? {
? case '1': input();break;
? case '2':search();break;
? case '3':modi();break;
? case '4':dele();break;
? case '5':bohao();break;
? }
}
printf("\n歡迎使用!!!\n");
}
//主函數(shù)
main()
{
choice();//調(diào)用菜單選擇
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
美化你的代碼 vb(VBS)代碼格式化的實(shí)現(xiàn)代碼
雖然VB.NET出現(xiàn)很久了,但還有好多人仍然在使用VB6。我在實(shí)現(xiàn)一些小功能的時候也喜歡用VB6,畢竟誰都不想每天的美好心情被VS那烏龜般的啟動速度影響2012-05-05
C語言實(shí)現(xiàn)超市信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)超市信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
解決pip?install?dlib報(bào)錯C++11?is?required?to?use?dlib
這篇文章主要介紹了在使用pip?install?dlib安裝dlib的時候報(bào)錯C++11?is?required?to?use?dlib的解決方法,需要的的小伙伴可以參考一下,希望對你有所幫助2022-02-02

