C语言的通讯录代码是什么?

C语言的通讯录代码是什么?,第1张

#include \x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0a#define N 100 void input()//添加新用户函数 \x0d\x0avoid amend()//修改用户信息函数 \x0d\x0avoid delete_client()//删除用户信息函数 \x0d\x0avoid demand_client()/顷隐/用户信息查询函数 \x0d\x0avoid collect_telephone()//用户信息汇总函数 \x0d\x0avoid save_client(struct telephone message)//保存函数 \x0d\x0avoid demand_name()//按用户名查询 \x0d\x0avoid demand_telephone()/雀仿厅/按电话号码查询 \x0d\x0a \x0d\x0astruct telephone \x0d\x0a{ \x0d\x0achar client_name[20]\x0d\x0achar client_address[30]\x0d\x0achar client_telephone[15]\x0d\x0a} //添加新用户函数 \x0d\x0avoid input() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0achar reply='y'\x0d\x0achar save='y'\x0d\x0awhile (reply=='y') \x0d\x0a{ printf("用户姓名:")\x0d\x0ascanf("%s",message.client_name)\x0d\x0a \x0d\x0aprintf("电话号码:")\x0d\x0ascanf("%s",message.client_telephone)save_client(message)\x0d\x0a \x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //保存函数 \x0d\x0avoid save_client(struct telephone message) \x0d\x0a{ \x0d\x0aFILE *fp\x0d\x0afp=fopen("message.dat","a+")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0afwrite(&message,sizeof(struct telephone),1,fp)\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("\n打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0a} //修改用户信息函数 \x0d\x0avoid amend() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0achar amend_name[20]\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0achar save='y'\x0d\x0aint size=sizeof(struct telephone)\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0afound='n'\x0d\x0afp=fopen("message.dat","r+w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n请大搏输入要修改的姓名:")\x0d\x0ascanf("%s",amend_name)\x0d\x0awhile ((fread(&message,size,1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(amend_name,message.client_name))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0abreak\x0d\x0a} \x0d\x0a} \x0d\x0aif (found=='y') \x0d\x0a{ printf("==========================================\n")\x0d\x0aprintf("\n用户姓名:%s\n",message.client_name) \x0d\x0a \x0d\x0aprintf("\n电话号码:%s\n",message.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0aprintf("修改用户信息:\n")\x0d\x0aprintf("\n用户姓名:")\x0d\x0ascanf("%s",message.client_name)printf("\n电话号码:")\x0d\x0ascanf("%s",message.client_telephone)\x0d\x0aprintf("\n要保存吗?(y/n):")\x0d\x0ascanf(" %c",&save)\x0d\x0aif (save=='y') \x0d\x0a{ \x0d\x0afseek(fp,-size,1)\x0d\x0afwrite(&message,sizeof(struct telephone),1,fp)\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此人信息!\n")\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //删除用户信息函数 \x0d\x0avoid delete_client() \x0d\x0a{ \x0d\x0astruct telephone message[N]\x0d\x0astruct telephone temp_str\x0d\x0astruct telephone delete_str\x0d\x0aint i=0,j=0\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0achar confirm='y'\x0d\x0achar delete_name[20]\x0d\x0aFILE *fp\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0afp=fopen("message.dat","r")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0ai=0\x0d\x0afound='n'\x0d\x0aprintf("\n请输入姓名:")\x0d\x0ascanf("%s",delete_name)\x0d\x0awhile ((fread(&temp_str,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(delete_name,temp_str.client_name))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0adelete_str=temp_str\x0d\x0a}//查找要删除的记录 \x0d\x0aelse \x0d\x0a{ \x0d\x0amessage[i]=temp_str\x0d\x0ai++\x0d\x0a}//将其它无关记录保存起来 \x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aif (found=='y') \x0d\x0a{ \x0d\x0aprintf("==========================================\n")\x0d\x0aprintf("用户姓名:%s\n",delete_str.client_name)\x0d\x0a \x0d\x0aprintf("电话号码:%s\n",delete_str.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此人信息,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0abreak\x0d\x0a} \x0d\x0aprintf("确定要删除吗?(y/n):")\x0d\x0ascanf(" %c",&confirm)\x0d\x0aif (confirm=='y') \x0d\x0a{ \x0d\x0afp=fopen("message.dat","w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0afor(j=0j3) \x0d\x0a{ \x0d\x0aprintf("请输入1-6之间的整数\n")\x0d\x0aprintf("按任意键返回菜单??\n") \x0d\x0a getchar()\x0d\x0acontinue\x0d\x0a} \x0d\x0aif (choice==1) \x0d\x0a{ \x0d\x0ademand_name()\x0d\x0a} \x0d\x0aelse if (choice==2) \x0d\x0a{ \x0d\x0ademand_telephone()\x0d\x0a} \x0d\x0a} \x0d\x0a} //按用户名查询 \x0d\x0avoid demand_name() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0achar amend_name[20]\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0afound='n'\x0d\x0afp=fopen("message.dat","r+w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n请输入姓名:")\x0d\x0ascanf("%s",amend_name)\x0d\x0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(amend_name,message.client_name))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0abreak\x0d\x0a} \x0d\x0a} \x0d\x0aif (found=='y') \x0d\x0a{ printf("==========================================\n")\x0d\x0aprintf("用户姓名:%s\n",message.client_name)printf("电话号码:%s\n",message.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此人信息!\n")\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //按电话号码查询 \x0d\x0avoid demand_telephone() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0achar telephone[20]\x0d\x0achar reply='y'\x0d\x0achar found='y'\x0d\x0awhile (reply=='y') \x0d\x0a{ \x0d\x0afound='n'\x0d\x0afp=fopen("message.dat","r+w")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n请输入电话号码:")\x0d\x0ascanf("%s",telephone)\x0d\x0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aif ((strcmp(telephone,message.client_telephone))==0) \x0d\x0a{ \x0d\x0afound='y'\x0d\x0abreak\x0d\x0a} \x0d\x0a} \x0d\x0aif (found=='y') \x0d\x0a{ printf("==========================================\n")\x0d\x0aprintf("用户姓名:%s\n",message.client_name)printf("电话号码:%s\n",message.client_telephone)\x0d\x0aprintf("==========================================\n")\x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("无此电话号码的有关信息!\n")\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("要继续吗?(y/n):")\x0d\x0ascanf(" %c",&reply)\x0d\x0a} \x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0a} //用户信息汇总函数 \x0d\x0avoid collect_telephone() \x0d\x0a{ \x0d\x0astruct telephone message\x0d\x0aFILE *fp\x0d\x0afp=fopen("message.dat","r")\x0d\x0aif (fp!=NULL) \x0d\x0a{ \x0d\x0asystem("cls")\x0d\x0aprintf("\n用户姓名\t\t电话号码\n")\x0d\x0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) \x0d\x0a{ \x0d\x0aprintf("\n%-24s",message.client_name)printf("%-12s\n",message.client_telephone)\x0d\x0a} \x0d\x0a} \x0d\x0aelse \x0d\x0a{ \x0d\x0aprintf("打开文件时出现错误,按任意键返回??\n")\x0d\x0agetchar()\x0d\x0areturn\x0d\x0a} \x0d\x0afclose(fp)\x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetch()\x0d\x0a} void main() \x0d\x0a{ \x0d\x0achar choice[10]=""\x0d\x0aint len=0\x0d\x0awhile (choice[0]!='7') \x0d\x0a{ printf("\t==========电话本号码查询系统=============\n")printf("\t\t 1、添加新联系人\n")\x0d\x0aprintf("\t\t 2、修改联系人信息\n")\x0d\x0aprintf("\t\t 3、删除联系人信息\n")\x0d\x0aprintf("\t\t 4、联系人信息查询\n")\x0d\x0aprintf("\t\t 5、联系人信息汇总\n")\x0d\x0a \x0d\x0aprintf("\t\t 7、退出\n")\x0d\x0aprintf("\t=========================================\n")\x0d\x0aprintf("请选择(1-7):")\x0d\x0ascanf("%s",choice)\x0d\x0alen=strlen(choice)\x0d\x0aif (len>1) \x0d\x0a{ \x0d\x0aprintf("请输入1-6之间的整数\n")\x0d\x0aprintf("按任意键返回主菜单??\n")\x0d\x0agetchar()\x0d\x0agetchar()\x0d\x0acontinue\x0d\x0a} switch (choice[0]) { \x0d\x0acase '1': \x0d\x0ainput()\x0d\x0abreak\x0d\x0acase '2': \x0d\x0aamend()\x0d\x0abreak\x0d\x0acase '3': \x0d\x0adelete_client()\x0d\x0abreak\x0d\

关于这道题的基本思路,我可以告诉你:

通讯坦败录一般由如下几个信息组成:姓名、性别、通讯地址、电话号码、邮编等组成。

如果想编写一个20个人的通讯录程序,那么就可以定义一个大小为 20 的结构数组。C 语言详细代码如下:

#include <stdio.h>

#define ADDRESS_LEN 100 /* 通讯地址长度宏定义,可以根据需要进行修毕信毕改 */

#define PHONENUM_LEN 20 /* 电话号码长度宏定义,可以自行修改 */

#define NUMBER 20 /* 20 个人的通讯录,可以自行修改 */

struct address /* 定义一个通讯录的结构数组 */

{

char name[20] /* 姓名 */

char sex[5] /* 性别 */

char address[ADDRESS_LEN] /* 通讯地址 */

char telepone_num[PHONENUM_LEN] /* 电话号码 */

char zip[10 ] /* 邮政编码 */

}

void main( )

{

int i = 0

struct address my_address[NUMBER] ;

for( i = 0 i <NUMBER i ++ )

{

gets(my_address[i].name)

gets(my_address[i].sex)

gets(my_address[i].address)

gets(my_address[i].telephone_num)

gets(my_address[i].zip)

}

for( i = 0 i <NUMBER i ++ )

printf("%s\t%s\t%s\t%s\t%s\n", my_address[i].name,my_address[i].sex,my_address[i].address,my_address[i].telephone_num,my_address[i].zip)

}

你可以将该程手芹序输入到电脑中,上机编译、链接、并运行试一试。

这是我以前写的课程设计,

电子通讯录功能如下:

Function choose

1.Read

2.Append

3.Delete

4.Search

5.Save and exit

6.Quit

说明:上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个朋友的电话号

码,通讯地址和出生日期,而且它还提供了检索和删除功能。在后面还将提供按生

日先后排序的功能,这些都有助于该通讯录的管理。

电子通讯录是采用线性表作为程序的基本结构的。

设计思想:

1。用顺序表设计电子通讯录的结链隐猛构

为了表示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定

义所需要的各项信息。

一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电话这几项,而

在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮编和家庭地

址二项,我们把这些联系较为紧密的内容又用单独的结构表示,这样就产生了电子

通讯录的基本结构:

struct addr /*通讯地址结构定义*/

{ char post_num[10]/*邮编*/

char addr[40]/*家庭地址*/

}

struct birth /*出生年月结构定义*/

{ int year/*年份*/

int month/*月份*/

int day/*日期*/

}

struct friend /*电子通讯录结构定义*/

{ int number/*序号*/

char name[20] /*姓名*/

char sex/*性别*/

struct birth birth/*出生年月*/

struct addr addr/*通信地址*/

char telephone[13]/*联系电话*/

}

定义的主结构friend包含了前述的五项携稿内容 name,sex,和telephone分别代表

了姓名,性别和联系电话。为了让结构中的各项组分更加清晰,定义了二个

小结构birth 和addr分别代表出生年月和通讯地址,因此实际上friend包含了

8项内容。

有了结构定义后,我们可以很轻松地构造出电子通讯录的主体:

stryct friend friends[50]

采用一维数组 friends[50],正是用到了顺序表这种最简单的数据结构来表示

问题。

2.增添电子通讯录中的内容

对于电子通讯录这样一张顺序表来说,内容的录入是必不可少的 *** 作。由

于采用的是顺序存储结构。这项工作很简单,只需要在把输入的信息按顺序放

在空的friends数组元素中即可。函数Data_Input完成了信息的录入工作:

void Data_input(int j)

{

friends[j].number=j

printf("\n\n\n\tNo %d record",j)

printf("\n\n\tName:")/*读入姓名*/棚桥

scanf("%s",friends[j].name)

printf("\n\tSex(m/f):")/*读入姓别*/

scanf("%c",&friends[j].sex)

printf("\n\tbirthday:")/*读入出生年月*/

printf("\n\t\tyear:")

scanf("%d",&friends[j].birth.year)

printf("\n\t\tmonth")

scanf("%d",&friends[j].birth.month)

printf("\n\t\tday")

scanf("%d",&friends[j].birth.day)

printf("\n\tPost number:")/*读入邮编*/

scanf("%s",friends[j].addr.post_num)

printf("\n\tAddress:")/*读入家庭地址*/

scanf("%s",friends[j].addr.addr)

printf("\n\ttelephone:")/*读入联系电话*/

scanf("%s",friends[j].telephone)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8279445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存