建材秒知道
登录
建材号 > 设计 > 正文

C语言程序设计:通讯录程序设计

纯真的鸡翅
淡定的大象
2022-12-28 12:41:02

C语言程序设计:通讯录程序设计

最佳答案
暴躁的服饰
开朗的面包
2026-05-14 15:53:00

#include "stdlib.h"

#include "string.h"

#include "conio.h"

#include "stdio.h"

#include "dos.h"

FILE *fp

int i//i是全局变量 可代替length

struct address

{ char postnum[10]

char a[40]//家庭地址

}

struct birthday

{ int year

int month

int day

}

struct ffriend

{ int num//序号

char name[20]

char sex

char telephone[13]

struct birthday birthday

struct address address

}

friends[50]

void Load()

{

int j

long k

fp=fopen("friend.txt","a+")//打开文件friend.txt

if(fp!=NULL)

{

for(i=1i<50i++)

{

j=fgetc(fp)

if(j==EOF) //判断是否到了文件尾

return

k=i-1

fseek(fp,k*sizeof(struct ffriend),SEEK_SET)

fread(&friends[i],sizeof(struct ffriend),1,fp)//从文件中读取一条记录

}

}

else

{

fp=fopen("friend.txt","w")

i=1

}

}

void Show(int j)

{

// friends[j].num=i

printf("\n\n\t编号-Nnumber: %3d",friends[j].num)

printf("\n\t姓名-Name:%-20s",friends[j].name)

printf("\n\t性别-Sex:%c",friends[j].sex)

printf("\n\t联系电话-Telephone:%-13s",friends[j].telephone)

printf("\n\t出生日期-Birthday:%4d-%2d-%3d",friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day)

printf("\n\t邮编-Postnum:%-10s",friends[j].address.postnum)

printf("\n\t通信地址-address:%-40s",friends[j].address.a)

}

void Append(int j)

{

fflush(stdin)//区内清除文件缓冲区,文件以写方式打开时将缓冲容写入文件

//stdin是一个标准FILE*(文件型指针)指向通常是用键盘的输入的输入流

friends[j].num=j

printf("\n\t\t\t序号-Number:%d",j)

printf("\n\t\t\t姓名-Name:")

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

fflush(stdin)//为什么没有fflush(stdin)的效果会自动跳过呢?

printf("\t\t\t性别-Sex(m/w):")//为什么输入汉字男女也会自动跳过联系电话呢

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

printf("\t\t\t联系电话-telephone:")

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

printf("\t出生日期-birthday")

printf("\n\t\t\t年份-year:")

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

printf("\t\t\t月份-month:")

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

printf("\t\t\t日-day:")

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

printf("\t\t\t邮编-Postnumber:")

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

printf("\t\t\t通信地址-Address:")

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

getchar()

}

void Delete()

{

int k

printf("\n\tDelete 序号-Number:")

scanf("%d",&k)

if(k<=i)

{

for(int j=kj<i+1j++)

{

strcpy(friends[j].name,friends[j+1].name)

friends[j].sex=friends[j+1].sex

strcpy(friends[j].telephone,friends[j+1].telephone)

friends[j].birthday.year=friends[j+1].birthday.year

friends[j].birthday.month=friends[j+1].birthday.month

friends[j].birthday.day=friends[j+1].birthday.day

strcpy(friends[j].address.postnum,friends[j+1].address.postnum)

strcpy(friends[j].address.a,friends[j+1].address.a)

}

i--

}

else

{

printf("输入的序号太大!")

}

}

void Modify(int j)

{

Append(j)

}

void Save()

{

int j

fp=fopen("friend.txt","w")

for(j=1j<=ij++)

{

fwrite(&friends[j],sizeof(struct ffriend),1,fp)

}

fclose(fp)

}

void main()

{

int j

char grade

char searchname[10]

Load()

i--

do

{

printf("\t\t\t\t简易通讯录\n\n")

printf("功能选择(Function choose)\n")

printf("\1A.读取(Read)\n")

printf("\2B.增添(Append)\n")

printf("\6C.插入(Insert)\n")

printf("\5D.删除(Delete)\n")

printf("\5E.查询(Search)\n")

printf("\6F.修改(Modify)\n")

printf("\2G.保存(Save)\n")

printf("\1H.退出(Quit)\n")

printf("请选择(Choice)\n注:输入A~H的大写字母\n")

scanf("%c",&grade)

switch(grade)

//加个大写和小写 都可以啊

{

case 'A': j=1//显示功能

while(getchar()!=0x1b&&j<=i) //增添按Esc键退出

{

Show(j++)

printf("\n请按回车键继续!")

}

if(j-1<1)

{

printf("\n\t空文档,无任何记录-Empty Note\n")

printf("\n请按回车键继续!")

getchar()

}

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

break

case 'B': //增加功能

while(i<=50) //增加按ESC键退出的功能

{

i++

Append(i)

printf("\t是否继续增加?y/n")

//修改 加上else if 其他就跳出或强制打印出出错

char a=getchar()

if(a=='n'||a=='N')

break

}

if(i==51)

printf("\n\t文档已满,无法增加记录-note full")

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

getchar()

break

case 'C':

int k

printf("\n\t输入要插入的位置:")

scanf("%d",&k)

j=i+1

friends[j].num=j

for(jj>kj--) //插入功能

{

strcpy(friends[j].name,friends[j-1].name)//数据后移

friends[j].sex=friends[j-1].sex

strcpy(friends[j].telephone,friends[j-1].telephone)

friends[j].birthday.year=friends[j-1].birthday.year

friends[j].birthday.month=friends[j-1].birthday.month

friends[j].birthday.day=friends[j-1].birthday.day

strcpy(friends[j].address.postnum,friends[j-1].address.postnum)

strcpy(friends[j].address.a,friends[j-1].address.a)

}

Append(k)

i++

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

break

case 'D': //删除功能 //增添随意删除多条记录的功能

Delete()

if(i<1)

printf("\n没有记录-No records\n")

printf("\n请按回车键继续!")

getchar()

getchar()

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

break

case 'E': //查询功能

printf("\n\t请输入要查询记录的相关姓名:")//增添查询按列号的

scanf("%s",searchname)

for(j=1j<=ij++)

{

if(strcmp(searchname,friends[j].name)==0) //比较字符串

{

Show(j)

break

}

}

if(i<1)

{

printf("\n 没有您所查询的记录-No records")

printf("\n 请按回车键继续!")

getchar()

}

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

getchar()

break

case 'F': //修改功能 / /增添按序列号查询

printf("\n\t请输入要修改记录的相关姓名:")

gets(searchname)

scanf("%s",searchname)

for(j=1j<=ij++)

{

if(strcmp(searchname,friends[j].name)==0) //比较字符串

{

Modify(j)

// getchar()//加个输出确定修改吗

}

}

if(i<1) //修改功能

{ printf("\n 没有您所要修改的记录-No records")

printf("\n 请按回车键继续!")

getchar()

getchar()

}

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

break

case 'G':

Save()//存盘功能

getchar()

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

break

case 'H': //退出功能

char x

printf("是否保存?yes/no\n")

scanf("%s",&x)

//getchar()

// getchar()

if(x=='y')

{

Save()

exit(0)

}

else

exit(0)

default:

printf("\n\t输入有误,请输入正确的序列号!")

printf("\n请按回车键继续!")

getchar()

printf("\n\t\t\t\t\t\t\t此次操作结束")

printf("\n\t------------------------------------------------------------\t\t\n")

}

}while(1)

}

最新回答
欢呼的外套
淡淡的金针菇
2026-05-14 15:53:00

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

struct record

{

char name[20] //姓名

char phone[12] //电话

char adress[50] //地址

char postcode[8] //邮政编码

char e_mail[20] //电子邮件。

}student[100]//假设最大数为100.

//定义全局变量num,表示已经输入的人数 。

int num//这里使用数组解决通讯录的问题,实际上使用链表更好。

int menu_select()

{

char s[80]

int a

system("cls")

printf("\t\t***********欢迎进入通讯管理界面********\n\n")

printf("\t\t\t0. 输入记录\n")

printf("\t\t\t1. 显示记录\n")

printf("\t\t\t2. 按姓名查找\n")

printf("\t\t\t3. 按电话号码查找\n")

printf("\t\t\t4. 插入记录 \n")

printf("\t\t\t5. 按姓名排序\n")

printf("\t\t\t6. 删除记录\n")

printf("\t\t\t7. Quit\n")

printf("\t\t***********************************************\n\n")

do{

printf("Enter you choice(0~7):")

scanf("%s",s)

a=atoi(s)

}

while (a<0 || a>7)

return a

}

int adduser()

{

printf("\t\t\t**************** 请输入用户信息 ****************\n")

printf("\t\t\t输入姓名:\n")

scanf("%s",student[num].name)

printf("\t\t\t输入电话号码:\n")

scanf("%s",student[num].phone)

printf("\t\t\t输入地址:\n")

scanf("%s",student[num].adress)

printf("\t\t\t输入邮编:\n")

scanf("%s",student[num].postcode)

printf("\t\t\t输入e-mail:\n")

scanf("%s",student[num].e_mail)

num++

printf("\t\t\t是否继续添加?(Y/N):\n")

if(getch()=='y' || getch()=='Y')

adduser()

return(0)

}

void list()

{

int i

system("cls")

if(num!=0)

{

printf("\t\t\t*************** 以下为通讯录所有信息************\n")

for (i=0i<numi++)

{

printf("\t\t\t姓名:%s\n",student[i].name)

printf("\t\t\t电话:%s\n",student[i].phone)

printf("\t\t\t地址:%s\n",student[i].adress)

printf("\t\t\t邮编:%s\n",student[i].postcode)

printf("\t\t\te-mail:%s\n",student[i].e_mail)

if(i+1<num)

{

system("pause")

}

}

printf("\t\t\t************************************************\n")

}

else

printf("\t\t\t通讯录中无任何纪录\n")

printf("\t\t\t按任意键返回主菜单:\n")

getch() //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。

return

}

int searchbyname()

{

int mark=0

int i

printf("\t\t\t***************** 按姓名查找 *******************\n")

char name[20]

printf("\t\t\t请输入姓名:\n")

scanf("%s",name)

for(i=0i<numi++)

{

if (strcmp(student[i].name,name)==0)

{

printf("\t\t\t************* 以下是您查找的用户信息 ***********\n")

printf("\t\t\t姓名: %s",student[i].name)

printf("\t\t\t电话: %s",student[i].phone)

printf("\t\t\t地址: %s",student[i].adress)

printf("\t\t\te-mail:%s",student[i].e_mail)

printf("\t\t\t************************************************\n")

mark++

if((i+1)<num)

{

printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n")

if(getch()=='y' || getch()=='Y')

{

优秀的店员
快乐的往事
2026-05-14 15:53:00
1、不要忘了把两个单片机的地也连上,因为这是单端信号,必须连地。同时信号线不要超过1 米(如果你使用3V的电压,还要短些)。 2、首先,你要设定一个主机,可以主动发送信号,比如发送‘?’,然后从机接到信号后返回'>',便可实现握手,随后可以实现通信。这种握手模式是很多单片机在串行编程中使用了,可以拿来参考。 最后,不要忘了使能SCON中的 REN位,主机和从机的波特率和格式一定要一致。实验时候先从较低的波特率试验,比如2400-9600。

平淡的母鸡
务实的电源
2026-05-14 15:53:00

1、创建学生社团管理系统的欢迎界面,该欢迎界面以图片的方式呈现,系统启动时再屏幕中居中显示。

2、再创建用户登录窗口,用户通过文本框输入用户名和密码,单击“登录”按钮后,在窗体中显示登录是否成功;单击“重置”按钮后,清空文本框信息。

3、创建“社团成员信息管理”窗体,用户可以对成员信息进行浏览、添加、删除与修改等多种操作;本任务重将实现添加成员信息的部分功能,从窗体各个控件中获取新成员的各项数据并显示在窗体右侧。

4、完成的“社团成员信息管理”窗体中实现社团成员照片的选择,并将选择的图片显示在窗体中,为用户提供预览功能。

5、设计并创建“学生社团管理系统”的主界面,主界面中具有背景图片、菜单、工具栏、状态栏等元素。

6、对于“成员编号”等有固定长度或长度限制以及有使用规定字符集合的信息,在输入错误时作提示。窗体左侧“成员列表”上方的文本框中输入姓名并按回车,实现按键查询。

认真的外套
不安的水杯
2026-05-14 15:53:00
你好

1.什么是通信工程设计:定义很模糊,基本理解就是关于通信技术的学习及应用。本专业学习通信技术、通信系统和通信网等方面的知识,能在通信领域中从事研究、设计、制造、运营及在国民经济各部门和国防工业中从事开发、应用通信技术与设备。毕业后可从事无线通信、电视、大规模集成电路、智、能仪器及应用电子技术领域的研究,设计和通信工程的研究、设计、技术引进和技术开发工作。近年来的毕业生集中在通信系统、高科技开发公司、科研院所、设计单位、金融系统、民航、铁路及政府和大专院校等。

2.主要从事的工作是:职称为通信工程师,通信工程师主要设计通信系统,像发射机,接收机,信道误码,编码方式之类的东西。

其主干课程,主要学科:电子技术、通信工程、计算机科学与技术。主要课程有:电路分析、低频电子线路、脉冲与数字电路、高频电子线路、电磁场理论、信号与系统、微机原理及应用、单片机技术、微波技术与天线、通讯原理、程控交换技术、移动通讯、计算机网络通讯、光纤通讯等。毕业生应掌握电子技术、通讯技术和计算机技术的基本理论与设计方法及程控交换技术、光纤通讯、移动通讯和计算机网络通讯的基本原理及应用方法,具有各类通讯系统的设计、研究及开发的工作能力。

基础只是与基本能力要求:学习通信技术、通信系统和通信网等方面的知识,能在通信领域中从事研究、设计、制造、运营及在国民经济各部门和国防工业中从事开发、应用通信技术与设备。

再给你补充整理一些关于通信设计的信息:

通信技术是以现代的声、光、电技术为硬件基础,辅以相应软件来达到信息交流目的。上个世纪末,多媒体的广泛推广、互联网的应用极大地推动了通信工程专业的发展,展望这个世纪初期,宽带技术、光通信也已经崭露头角。通信工程专业所研究的内容涵盖了当今最流行、发展最迅猛的领域。单单这些是否已经使你跃跃欲试了呢?在美国发展速度最快的公司中,像Cisco(思科)、3Com等都是以通信技术作为其发展的主体,Cisco的总裁更是成为全球财富增长最快的人。这一切是否让你心动呢?在我国,不光是老牌的IT厂商联想提供了大量的网络服务,有“巨大中华”之称的通信产业四大企业(巨龙、大唐、中兴、华为)业绩也非常惊人,其良好的发展前景、宽松的发展环境、现代化的企业管理已成为毕业生们择业的首选。

通信工程专业跨电子、计算机专业,所修课程兼有两者的特点,需要较好的数学、物理基础以及较强的动手应用能力。一些课程,如数据结构、操作系统、数据库等属于计算机类,另一些,如信号处理、高频电路、电路原理等属于电子类,还有本专业基础的通信原理等课程,所学范围比较宽。需要学生有较强的逻辑思维能力,特别适合那些理解力强、善于分析的同学。专业划分比较细的时候,本专业可“软”可“硬”,分别倾向于计算机与电子两个方向。

当然,本专业确实是绝对的热门,基本上都是录取分数最高的专业之一。在众多高校中,清华大学、北京邮电大学、上海交通大学、西安交通大学、西安电子科技大学的通信工程专业相当热,如果考生对自己的实力充分自信,那么选择本专业不仅不会让你失望,在毕业的时候还会觉得分外地骄傲。

由于该行业的发展速度太快,对人才的需求量又相当大,使你非常容易进入国际知名的跨国公司或者在国内享有盛誉的IT企业,并且待遇相当优厚,堪称“最容易找到好工作”的专业。由于通信产业在全球的高速及持续发展,该专业在国外也是最热门的专业之一,因此,出国深造难度相对大一些,不过进入大型跨国公司后出国进修的机会相当多。除各名牌高校外,中科院电子所同样不失为一个完成研究生学位的好去处。选择通信工程专业,已经可以同“光明的前途”画上近似的等号了。这是真正的“朝阳产业”、“知识经济”,可以热情的挥洒汗水、攻克难关、迎接成功。在这样的专业里,你会对那些时髦词汇有更加切身的体会。希望那些对自己实力充满信心的考生勇敢选择,同信息时代一起拥抱辉煌!

忧伤的夕阳
内向的溪流
2026-05-14 15:53:00
电子通讯录

。作为计

算机应用的一部分,使用计算机对各项信息进行管理,具有着手工管

理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密

性好、寿命长、成本低等。这些优点能够极大地提高工作的效率,也是企业的科

学化、正规化管理与世界接轨的重要条件。

2.2 网络通讯录管理系统的需求分析

网络通讯录管理系统是面向所有网民的的通讯录及附属服务,包括通讯录管理,记事本管理等业务

处理工作,是利用计算机进行集中管理而开发的系统。该系统是基于JAVA连接

SQLSERVER数据库进行开发的网络通讯录管理系统,力求与实际相结合具有查询、

管理等功能,旨在达到使通讯录的管理和运营趋于计算机化,使之更加方便、快捷

以提高工作效率。

主要包括三大管理模块:

1.登录系统

对系统的安全性进行管理。

○ 注册用户登陆 可查询信息和记录,可以进行收藏。

○ 后台管理登陆 可查询、管理用户。

2.基本资料管理

主要介绍通讯录、记事本、收藏夹等基本资料。

○通讯录 增加、管理通讯录中的基本资料。

○记事本 增加、管理记事本中的基本资料。

○收藏夹 增加、管理收藏夹中的基本资料。

包容的糖豆
开心的指甲油
2026-05-14 15:53:00
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct

{

char score

char name[10]

char num[15]

char adds[20]

}Person

Person pe[80]

int menu_select()

{

char c

do{

system("cls")

printf("\t\t **************** \n")

printf("\t\t 欢迎使用本通讯录 \n")

printf("\t\t┌───────┐\n")

printf("\t\t│ 1. 插入 │\n")

printf("\t\t│ 2. 显示 │\n")

printf("\t\t│ 3. 删除 │\n")

printf("\t\t│ 4. 查询 │\n")

printf("\t\t│ 0. 退出 │\n")

printf("\t\t└───────┘\n")

printf("\t\t请您选择(0-4):")

c=getchar()

}while(c<'0'||c>'4')

return(c-'0')

}

int Input(Person per[],int n)

{

int i=0

char sign,x[10]

while(sign!='n'&&sign!='N')

{

printf("\t姓名:")

scanf("\t%s",per[n+i].name)

printf("\t电话号码:")

scanf("\t%s",per[n+i].num)

printf("\t单位地址:")

scanf("\t%s",per[n+i].adds)

gets(x)

printf("\n\t是否继续添加?(Y/N)")

scanf("\t%c",&sign)

i++

}

return(n+i)

}

void Display(Person per[],int n)

{

int i

printf("--------------------------------\n")

printf("姓名电话号码 单位地址 \n")

printf("--------------------------------\n")

for(i=1i<n+1i++)

{

printf("%-8s%-13s%-15s\n",per[i-1].name,per[i-1].num,per[i-1].adds)

if(i>1&&i%10==0)

{

printf("\t-----------------------------------\n")

printf("\t")

system("pause")

printf("\t-----------------------------------\n")

}

}

printf("----------------------------------------------------------------------\n")

system("pause")

}

int Delete_a_record(Person per[],int n)

{

char s[20]

int i=0,j

printf("\t请输入想删除记录中的名字:")

scanf("%s",s)

while(strcmp(per[i].name,s)!=0&&i<n) i++

if(i==n)

{

printf("\t通讯录中没有此人!\n")

return(n)

}

for(j=ij<n-1j++)

{

strcpy(per[j].name,per[j+1].name)

strcpy(per[j].num,per[j+1].num)

strcpy(per[j].adds,per[j+1].adds)

per[j].score=per[j+1].score

}

printf("\t\t\t已经成功删除!\n")

return(n-1)

}

void Query_a_record(Person per[],int n)

{

int m

printf("\t\n请选择查询方式:\n")

printf("\t┌──────┐\n")

printf("\t│1------姓名 │\n")

printf("\t│2------电话 │\n")

printf("\t│3------单位 │\n")

printf("\t│4------返回 │\n")

printf("\t└──────┘\n")

printf("请选择:")

scanf("%d",&m)

while(m!=1&&m!=2&&m!=3&&m!=4)

{

printf("输入错误,请重新选择:")

scanf("%d",&m)

}

if(m==1)

{

char s[20]

int i=0

printf("\t请输入想查询的姓名:")

scanf("\t%s",s)

while(strcmp(per[i].name,s)!=0&&i<n) i++

if(i==n)

{

printf("\t通讯录中没有此人!\n")

return

}

printf("\t电话号码: %s\n",per[i].num)

printf("\t单位地址: %s\n",per[i].adds)

}

if(m==2)

{

char s[20]

int i=0

printf("\t请输入想查询的电话:")

scanf("\t%s",s)

while(strcmp(per[i].num,s)!=0&&i<n) i++

if(i==n)

{

printf("\t通讯录中没有此人!\n")

return

}

printf("\t此人姓名: %s\n",per[i].name)

printf("\t单位地址: %s\n",per[i].adds)

}

if(m==3)

{

char s[20]

int i=0

printf("\t请输入想查询的地址:")

scanf("\t%s",s)

while(strcmp(per[i].adds,s)!=0&&i<n) i++

if(i==n)

{

printf("\t通讯录中没有此人!\n")

return

}

printf("\t此人姓名: %s\n",per[i].name)

printf("\t电话号码: %s\n",per[i].num)

}

}

void main()

{

int n=0

for()

{

switch(menu_select())

{

case 1:

printf("\n\t添加记录到通讯录\n")

n=Input(pe,n)

break

case 2:

printf("\n\t\t\t通讯录记录表\n")

Display(pe,n)

break

case 3:

printf("\n\t从通讯录中删除记录\n")

n=Delete_a_record(pe,n)

printf("\t")

system("pause")

break

case 4:

printf("\n\t在通讯录中查找记录\n")

Query_a_record(pe,n)

printf("\t")

system("pause")

break

case 0:

printf("\n\t\t谢谢使用,再见!\n")

printf("\n\t\t")

system("pause")

exit(0)

}

}

}