c语言通讯录程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言通讯录程序相关的知识,希望对你有一定的参考价值。

设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。实现功能:
(1)系统以菜单方式工作
(2)信息录入功能
(3)信息浏览功能
(4)信息查询功能
(5)信息修改功能
(6)系统退出功能

以前写了一个简单的:
#include <stdio.h>
#include <stdlib.h> /*与malloc.h差不多*/
#include <string.h>
#include <iostream>
using namespace std;
#define maxlen 15
struct persons
int num; /*定义结构体数组用于缓存数据*/
char name[20];
char e_addr[20];
char tel_no[15];
char sim_no;
char arch;
persons[maxlen];

typedef struct lnode
/*通讯录结构中结点的定义*/
int num;
char name[20];
char e_addr[20];
char tel_no[15];
char sim_no;
char arch;
struct lnode *next;
listnode,*linklist;

linklist head=NULL,r=NULL; /*定义头指针和尾指针*/
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
int i;
char name1[10],ch;
char tel_no1[15];
char arch1;
char sim_no1;
char e_addr1[20];
char s1[20];
FILE *fp; /*定义文件指针*/

void creat() /*将文件的信息读入结构体数组在转存入链表中*/
int j;
long k;
fp=fopen("数据文件.txt","r t"); /*打开文件*/
if(fp!=NULL)
for(i=0;i<=maxlen;i++ )
j=fgetc(fp);
if(j==EOF)
return;
k=i;
fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/
fread(&persons[i],sizeof(struct persons),1,fp);

s=(linklist)malloc(sizeof(listnode)); /*装存入链表中*/
s->num=persons[i].num;
strcpy(s->name,persons[i].name);
strcpy(s->e_addr,persons[i].e_addr);
strcpy(s->tel_no,persons[i].tel_no);
s->sim_no=persons[i].sim_no;
s->arch=persons[i].arch;
if(head==NULL) /*用尾插法将其插入链表中*/
head=s;r=head;head->next=NULL;
else
r->next=s;
r=s;r->next=NULL;

fclose(fp);

else
fp=fopen("数据文件.txt","w"); /*不能打开另开辟一个文件*/
i=1;



void Show()
printf("成功调用该函数\n");
void Delete()
printf("成功调用该函数\n");

void Input() /*向.通讯录中输入一个人的信息*/
s=(linklist)malloc(sizeof(listnode));
printf("\n\n\t请输入该用户的信息:");
printf("姓名:");
scanf("%s",&s->name);
printf("电话号码:");
scanf("%s",&s->tel_no);
printf("单键拨号:");
scanf("%s",&s->sim_no);
printf("E-mail地址:");
scanf("%s",&s->e_addr);
printf("类别:");
scanf("%s",&s->arch);

if(head==NULL)printf("\n\n");
else
p8=head;
while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0)
p8=p8->next;
if(p8!=NULL)
printf("您添加的用户已存在!");
free(s);
if(head==NULL)

s->next = 0;
head=s;
r = s;

else

s->next = 0;
r->next = s;
r = s;



void Alter()
printf("success!\n");
int main()

system("color a");
creat();
do

printf("\n\n\t\t请选择操作:");
printf("\n\t\t1.显示通讯录");
printf("\n\t\t2.删除通讯录");
printf("\n\t\t3.添加通讯录");
printf("\n\t\t4.编辑通讯录");
printf("\n\n\n");
printf("\t请选择:");
cin>>ch;
switch(ch)
case '1': Show(); /*用单条件多选择语句实现调用与循环*/
break;
case '2': Delete();
break;
case '3': Input();
break;
case '4': Alter();
break;
fclose(fp);
exit(0);
break;
default:
printf("\n\t The num should 1-6!!! \n");
break;


while(1);
参考技术A #include"iostream.h"
#include"windows.h "
#include"fstream.h"
#include"string.h"
#include"iomanip.h"
class directories

public:

char name[50];
long int tell;
long int phont;
;
int count()

int n=0, i,k,j,m=0,z=0,c;
long int Tell;
int s=1,b,choc,add;
char nam[20];
directories str[100],temp;
cout<<"创建通讯录输入1,修改通讯录输入2"<<endl;
cin>>choc;
if(choc==1)

cout<<" 通讯录"<<endl;
cout<<"请输入通讯录人数"<<endl;
cin>>n;
s=n;

cout<<"请输入同学的名字,家庭电话,公司电话"<<endl;
cout<<"************************************"<<endl;
for (i=1;i<=n;i++)

cout<<"请输入第"<<i<<"同学的资料"<<endl;
cin>>str[i].name>>str[i].tell>>str[i].phont;

cout<<" 名字 家庭电话 公司电话"<<endl;
for (i=1;i<=n;i++)
cout<<" "<<str[i].name<<" "<<str[i].tell<<" "<<str[i].phont<<endl;

if(choc==2)


cout<<"请输入修改通讯录的名字!"<<endl;
cin>>nam;
ifstream in_file(nam);
if(!in_file)

return 0;


in_file.ignore(1000,'\n');
in_file.ignore(7);
in_file>>m;
in_file.ignore(1000,'\n');
in_file.ignore(1000,'\n');
for(i=1;i<=m;i++)
in_file>>str[i].name>>str[i].tell>>str[i].phont;
n++;


while(1)

cout<<"增加联系人信息1,修改联系人2,排序3,删除联系人4,按条件查找5,输出结果6,退出7"<<endl;
cin>>s;
switch(s)

case 1:
cout<<"请输入增加通讯录人数"<<endl;
cin>>m;

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

cout<<"请输入第"<<i<<"同学的资料"<<endl;
cin>>str[i].name>>str[i].tell>>str[i].phont;
cout<<setw(15)<<"名字"<<setw(15)<<"家庭电话"<<setw(15)<<"公司电话"<<endl;

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

cout<<setw(15)<<str[i].name<<setw(15)<<str[i].tell<<setw(15)<<str[i].phont<<endl;
break;
case 2:
cout<<"输入要修改同学的名字"<<endl;
cin>>nam;
for(i=1;i<=n;i++)

k=strcmp(nam,str[i].name);
if(k==0)

cin>>str[i].name>>str[i].tell>>str[i].phont;
break;

break;
case 3:
//对对象排序
for(i=1;i<n;i++)//是n-1不是n

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

if(str[i].name>str[j].name)

temp=str[i];
str[i]=str[j];
str[j]=temp;




cout<<"按首字母输出:"<<endl;
cout<<setw(15)<<"名字"<<setw(15)<<"家庭电话"<<setw(15)<<"公司电话"<<endl;
for(i=1;i<=n;i++)
cout<<setw(15)<<str[i].name<<setw(15)<<str[i].tell<<setw(15)<<str[i].phont<<endl;
break;
case 4:
cout<<"输入要删除同学的名字"<<endl;
cin>>nam;
for(i=1;i<=n;i++)
k=strcmp(nam,str[i].name);
if(k==0)
str[i]=str[i+1];
n--;

break;
case 5:
cout<<"按姓名查找请按1,按电话号码查找按2"<<endl;
cin>>b;
switch (b)

case 1 :
c=1;
while (c==1)

cout<<"输入您要查找的姓名"<<endl;
cin>>nam;
for(i=1;i<=n;i++)

k=strcmp(nam,str[i].name);
if(k==0)

cout<<" 名字 家庭电话 公司电话"<<endl;
cout<<" "<<str[i].name<<" "<<str[i].tell<<" "<<str[i].phont<<endl;

cout<<"想继续查找请输入1,俺0推出";
cin>>c;



break;
case 2:
c=1;
while (c==1)

cout<<"输入您要查找的电话"<<endl;
cin>>Tell;
for(i=1;i<=n;i++)

if(Tell==str[i].tell||Tell==str[i].phont)

cout<<setw(15)<<"名字"<<setw(15)<<"家庭电话"<<setw(15)<<"公司电话"<<endl;
cout<<setw(15)<<str[i].name<<setw(15)<<str[i].tell<<setw(15)<<str[i].phont<<endl;
cout<<"想继续查找请输入1,俺0推出"<<endl;
cin>>c;



break ;

case 6:
cout<<setw(15)<<"名字"<<setw(15)<<"家庭电话"<<setw(15)<<"公司电话"<<endl;
for(i=1;i<=n;i++)
cout<<setw(15)<<str[i].name<<setw(15)<<str[i].tell<<setw(15)<<str[i].phont<<endl;
break;
case 7:
int chos;
cout<<"保存通讯录?1/2"<<endl;
cin>>chos;
if(chos==1)

cout<<"输入通讯录的名字(.txt)!"<<endl;
cin>>nam;
ofstream out_file(nam);
if(!out_file)

return 0;

out_file<<setw(50)<<"通讯录"<<endl;
out_file<<"总人数"<<ends<<n<<endl;
out_file<<"名字"<<setw(15)<<"家庭电话"<<setw(15)<<"公司电话"<<endl;

for(i=1;i<=n;i++)
out_file<<str[i].name<<setw(15)<<str[i].tell<<setw(15)<<str[i].phont<<endl;

return 0;


return 0;

int change(int *p)

int p1;
while(1)

cout<<"输入新密码"<<endl;
cin>>*p;
cout<<" 请再次输入密码"<<endl;
cin>>p1;
if(*p==p1)

cout<<"密码修改成功"<<endl;
ofstream out_file("c:\\key.txt");
out_file<<*p<<endl;
out_file.close();
return 0;
break;

else
cout<<"输入错误"<<endl;


int main()

ifstream in_file("c:\\key.txt");
if(!in_file)

return 1;

int key;
in_file>>key;
int key1=000000;
int n=0;
int m;
while (1)

cout<<"请输入密码"<<endl;
cin>>key1;
if(key==key1)

cout<<"密码输入正确"<<endl;
break;

else

cout<<"密码输入错误"<<endl;
n++;

if(n==3)

cout<<"你输入的次数已超过三次,自动退出!"<<endl;
Sleep(3000);
exit(0);


Sleep(1000);
count();
cout<<"修改密码请输入1,推出输入2"<<endl;
cin>>m;
if(m==1)
change(& key);
in_file.close();

我以前写过的一个,你可以参考参考追问

你这个程序是在什么上运行的?
wt-c不能运行,说 #include"iostream.h" 找不到

追答

vc6.0啊,你用的是什么?

C语言课程设计 通讯录系统实现 C语言大作业

题目:通讯录系统

本系统包含完整的源程序和小论文,文末有下载链接

一、需求分析:

各类储存和通信电子产品都带有通讯录功能,可以对联系人进行简单的信息管理和储存,经分析主要有如下功能:添加联系人,查询联系人、删除联系人、显示联系人、退出系统

二、系统功能图

三、源程序

列出部分主要功能代码实现

1、主函数

int main()
{
	int n;
	if((fp=fopen("txl.txt","a"))==NULL)
	{
		printf("File open error!\\n");
		exit(1);
	}
	fclose(fp);	
	if((fp=fopen("txl.txt","r"))==NULL)
	{
		printf("File open error!\\n");
		exit(1);
	}
	p1=(struct Sign*)malloc(sizeof(struct Sign)); 
	p1->next=NULL;
	head=p1;
	while(!feof(fp))
	{
		if(fread(p1,sizeof(struct Sign),1,fp)!=1)
			break;
		p2=(struct Sign*)malloc(sizeof(struct Sign));
		p2->next=NULL;
		p1->next=p2;
		p1=p2;
	}
	fclose(fp);	
	while(1)
	{
		directory();
		printf("    输入你想要应用的功能(0-4):");
		printf("    ");
		scanf("%d",&n);
		if(n==0)
		{
			system("cls");
		goodbye();	
		    exit(0);
		}    
		else if(n==1)
	    {
		system("color 0E");
		system("cls");
		add();
		}
		else if(n==2)
		{
			system("color 0C");
			system("cls");
			Selelctname();
		}
		else if(n==3)
		{
			system("color 0A"); 
			Delete();
		}
		else if(n==4)
		{
			system("color 0B");
			system("cls");
			Allshow();
			system("pause");
		}
		else
		    error(); 
		system("cls");	
		getchar();
	}
}

2、系统目录

void directory() 
{
	system("color 0D"); 

	printf("\\n\\n"); 
	printf("    -----欢迎进入通讯录管理系统------\\n");
	printf("    *********************************\\n"); 
	printf("    *         1.添加联系人          *\\n");
	printf("    *         2.查询联系人          *\\n");
	printf("    *         3.删除联系人          *\\n");
	printf("    *         4.显示联系人          *\\n");
	printf("    *         0.退出通讯录服务;     *\\n");
	printf("    *********************************\\n"); 
	printf("\\n\\n");
}

3、添加联系人

void add()
{	
	char ch; 
	if((fp==fopen("txl.txt","a+"))!=1)
	{
		printf("文件打开失败");
		exit(1);
	}
	while(1)
	{	
	    system("cls");
		printf("请输入个人信息__\\n");
		p2=(struct Sign*)malloc(sizeof(struct Sign));
		p2->next=NULL; 
		printf("姓名:");scanf("%s",pe.name);
		printf("地址:");scanf("%s",pe.addr);
		printf("电话号码:");scanf("%s",pe.tel);
		printf("QQ号或微信号:");scanf("%s",pe.com);	
		strcpy(p1->name,pe.name);
		strcpy(p1->addr,pe.addr);
		strcpy(p1->tel,pe.tel );
		strcpy(p1->com,pe.com);	
		p1->next=p2;
		p1=p2;        
		if(fwrite(&pe,sizeof(struct Sign),1,fp)!=1)
			printf("写入错误");
		printf("输入 E或e 返回主目录\\n ");
		getchar();
		ch=getchar();
		if(ch=='e'||ch=='E')
			break;
	}
	fclose(fp);
}

4、查询联系人

void Selelctname()
{
	system("cls"); 	
	p1=head;
	char FindName[8];
	int i=0; 
	printf("\\n请输入要查询的姓名:");
	scanf("%s",&FindName);
	while(p1->next!=NULL)
	{
		if(strcmp(p1->name,FindName)==0) 
		    {
			    printf("%10.8s %10.6s %12.10s %15.4s\\n","姓名","地址","电话号码","QQ号或微信");
			    printf("%10.8s %10.6s %12.10s %15.14s\\n",p1->name,p1->addr,p1->tel,p1->com);
		        i++;
			}
		p1=p1->next;
		
	} 
	printf("共  %d  条\\n",i);
	system("pause");
} 

5、错误提示

void error()
{
	system("color 0C");
	system("cls");
	printf("\\n\\n");
    printf("    -----欢迎进入通讯录管理系统------\\n");
	printf("    *********************************\\n"); 
	printf("    *                               *\\n");
	printf("    *                               *\\n");
	printf("    *     输入错误!请仔细检查!    *\\n");
	printf("    *                               *\\n");
	printf("    *                               *\\n");
	printf("    *********************************\\n"); 
	printf("\\n\\n");
	system("pause");
}	

四、系统测试

1、系统主界面

2、添加联系人

3、查询联系人

4、显示联系人

五、案例下载

https://download.csdn.net/download/frank2102/19964971

以上是关于c语言通讯录程序的主要内容,如果未能解决你的问题,请参考以下文章

用c语言程序设计一个学生通讯录系统

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

求用C语言建立通讯录管理系统

c语言编写一个通讯录系统 用简单一点的c😊

C语言编写—通讯录(小项目)

c语言通讯录管理系统的排序怎么做?