C语言课程设计通讯录系统加密进入并且可存档.docx
《C语言课程设计通讯录系统加密进入并且可存档.docx》由会员分享,可在线阅读,更多相关《C语言课程设计通讯录系统加密进入并且可存档.docx(16页珍藏版)》请在冰点文库上搜索。
C语言课程设计通讯录系统加密进入并且可存档
C语言课程设计_通讯录系统
设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。
(有文件存储功能)
(1)数据包括:
人名、工作单位、电话号码和E-mail地址。
(2)可对记录中的姓名和电话号码进行修改。
(3)可增加或删除记录。
(4)可显示所有保存的记录。
(5)可按人名或电话号码进行查询。
源代码(vc++6.0):
其中用到了c++的输出,如果只用c的风格,修改一点点就好
#include
#include
#include
#include
#include
#defineN80
/****************************************定义通讯录************************************/
typedefstruct
{
charnum[N];
charname[20];
chartel[15];
charadd[20];
chare_mail[15];
}STUDENT;
STUDENTstu[N];
intmenu();
intxz();
voidshuru(STUDENTstu[],intlength);
voidxianshi(STUDENTstu[],intlength);
intfind(STUDENTstu[],intn);
intshanchu(STUDENTstu[],intn);
voidchazhao(STUDENTstu[],intn);
voidxiugai(STUDENTstu[],intn);
inttuichu();
voidsave(STUDENTstu[],intn);
intlines();
/***************************主函数****************************************/
voidmain()
{
charmima[9]="renjiali";//设置的密码
inti=1,length,m=0;
charstr[9]={NULL};
loop:
printf("第%d次输入8位密码(超过三次将退出):
\t",i);
scanf("%s",str);
i++;
if(strcmp(mima,str))
{
cout<<"\n警告!
!
密码错误!
!
\n"<if(i>3)
{
cout<<"自动退出"<tuichu();
}
elsecout<<"\n请按任意键再次输入密码"<getch();system("cls");
gotoloop;
}
cout<<"\n密码正确!
成功进入\n"<FILE*fp;
length=lines();
getchar();
loop1:
if((fp=fopen("c:
\\filename.txt","r"))==NULL)
{printf("\n不能打开该文件!
");
exit
(1);
}
for(i=0;i{
fscanf(fp,"%s%s%s%s%s",stu[i].num,stu[i].name,stu[i].tel,stu[i].add,stu[i].e_mail);
}
fclose(fp);
switch(menu())
{
case0:
system("cls");
shuru(stu,length);
length++;
if(xz())gotoloop1;
break;
case1:
system("cls");
xianshi(stu,length);
if(xz())gotoloop1;
break;
case2:
system("cls");
length=shanchu(stu,length);
if(xz())gotoloop1;
break;
case3:
system("cls");
chazhao(stu,length);
if(xz())gotoloop1;
break;
case4:
system("cls");
xiugai(stu,length);
if(xz())gotoloop1;
break;
case5:
system("cls");
m=tuichu();
break;
default:
break;
}
}
/***********************************主菜单**********************************/
intmenu()
{
intm;
printf("★**************************************************************★\n");
printf("§*******************★欢迎使用通讯录管理系统★*****************§\n");
printf("§§§§\n");
printf("§§☆0.添加通讯录§§\n");
printf("§§☆1.显示通讯信息§§\n");
printf("§§☆2.删除通讯信息§§\n");
printf("§§☆3.查询通讯信息§§\n");
printf("§§☆4.修改通讯信息§§\n");
printf("§§☆5.退出通讯录§§\n");
printf("§§§§\n");
printf("★**************************************************************★\n");
printf("*******************************88888******************************\n");
printf("\t\t\t◆请输入选项0-5\n");
printf("******************************^@_@^********************************\n");
scanf("%d",&m);
while(m<0||m>5)
{
printf("输入错误,请重新输入\n");
scanf("%d",&m);
}returnm;
}
/******************************添加通讯录*******************************/
voidshuru(STUDENTstu[],intn)
{
inti=n;
printf("输入信息>>>\n");
printf("请输入编号》");
scanf("%s",stu[i].num);
printf("\n请输入姓名》");
scanf("%s",stu[i].name);
printf("\n请输入电话》");
scanf("%s",stu[i].tel);
printf("\n请输入工作单位》");
scanf("%s",stu[i].add);
printf("\n请输入e_mail》");
scanf("%s",stu[i].e_mail);
save(stu,n+1);
}
/******************************显示通讯录********************************/
voidxianshi(STUDENTstu[],intlength)
{inti;
printf("编号\t姓名\t电话\t单位\t邮箱\n");
for(i=0;i{
printf("%-10s%-10s%-10s%-10s%-10s\n",stu[i].num,stu[i].name,stu[i].tel,stu[i].add,stu[i].e_mail);
}
printf("通讯录中一共有%d个记录\n",length);
}
/******************************查找函数********************************/
intfind(STUDENTstu[],intn)
{
inti,c;
chars[20];
cout<<"根据姓名查找按1根据电话号码查找安0"<cin>>c;
if(c==1)
{
printf("请输入你要找的姓名\n");
scanf("%s",s);
for(i=0;iif(strcmp(s,stu[i].name)==0)
returni;
}
elseif(c==0)
{
printf("请输入你要找的电话\n");
scanf("%s",s);
for(i=0;iif(strcmp(s,stu[i].tel)==0)
returni;
}
}
/*******************************删除通讯录********************************/
intshanchu(STUDENTstu[],intn)
{
inti,j,ch;
i=find(stu,n);
if(i>n-1)
{
printf("没有找到要删除的记录,是否重新输入1/0\n");
scanf("%d",&ch);
if(ch==1)
n=shanchu(stu,n);
}
else
{
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\ne-mail:
%s\n",stu[i].num,stu[i].name,stu[i].tel,stu[i].add,stu[i].e_mail);
printf("是否确定要删除:
%d是%2d否\n",1,0);
}
scanf("%d",&ch);
if(ch==1)
{
for(j=i+1;j{
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j-1].tel,stu[j].tel);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j-1].e_mail,stu[j].e_mail);
}
n--;
printf("删除成功\n");
}
save(stu,n);
returnn;
}
/*******************************查找通讯录********************************/
voidchazhao(STUDENTstu[],intn)
{
inti,ch;
i=find(stu,n);
if(i>n-1)
{
printf("没有找到要查找的记录,是否重新输入1/0\n");
scanf("%d",&ch);
if(ch==1)
chazhao(stu,n);
}
else
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\ne-mail:
%s\n",stu[i].num,stu[i].name,stu[i].tel,stu[i].add,stu[i].e_mail);
}
/*******************************修改通讯录********************************/
voidxiugai(STUDENTstu[],intn)
{
inti,ch;
i=find(stu,n);
if(i>n-1)
{
printf("没有找到要修改的记录,是否重新输入1/0\n");
scanf("%d",&ch);
if(ch==1)xiugai(stu,n);
}
else
{
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\ne-mail:
%s\n",stu[i].num,stu[i].name,stu[i].tel,stu[i].add,stu[i].e_mail);
printf("是否确定要修改:
%d是%2d否\n",1,0);
}
scanf("%d",&ch);
if(ch==1)
{
printf("\n是否修改姓名:
(Y/N)\n");
if(getch()=='Y')
{
printf("\n修改姓名为:
\t");
scanf("%s",stu[i].name);
}
printf("\n是否修改电话:
(Y/N)\n");
if(getch()=='Y')
{
printf("\n修改电话为:
\t");
scanf("%s",stu[i].tel);
}
printf("修改成功\n");
}
save(stu,n);
}
/*******************************退出通讯录********************************/
inttuichu()
{
printf("\n******************************谢谢使用***********************************\n");
exit
(1);
}
/*******************************选择********************************/
intxz()
{
charch;
printf("\n###################################################################\n");
printf("\n按f键返回菜单按其他键结束\n\n");
printf("###################################################################\n");
getchar();
ch=getchar();
if(ch=='f')
{
system("cls");
return1;
}
else
exit(0);
}
//******************************保存*******************************
voidsave(STUDENTstu[],intn)
{
inti;
FILE*fp;
if((fp=fopen("c:
\\filename.txt","w+"))==NULL)
{printf("\n不能打开该文件!
");
exit
(1);
}
for(i=0;ifprintf(fp,"%20s%20s%20s%20s%20s\n",stu[i].num,stu[i].name,stu[i].tel,stu[i].add,stu[i].e_mail);
fclose(fp);
}
//******************************查找记录数*******************************
intlines()
{
FILE*fp;
intline=0;
intfilesize=0;
charch=0;
if((fp=fopen("c:
\\filename.txt","r"))==NULL)
fp=fopen("c:
\\filename.txt","w");
fseek(fp,0,SEEK_END);//讲指针移到文件末尾
filesize=ftell(fp);//获得文件的总的大小
fseek(fp,0,SEEK_SET);//讲文件指针移到文件开头
//printf("wenjianyigongyou%dda",filesize);
while(filesize)
{
ch=fgetc(fp);
if(ch==0x0a)//0x0a表示换行,当每次换行时line++
{
line=line+1;
}
filesize--;//filesize为零时整个文件已经读完,判断结束
}
//printf("通讯录中一共有%d个记录\n",line);
fclose(fp);
returnline;
}