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、显示联系人
五、案例下载
以上是关于c语言通讯录程序的主要内容,如果未能解决你的问题,请参考以下文章