带密码通讯录C语言1.docx
《带密码通讯录C语言1.docx》由会员分享,可在线阅读,更多相关《带密码通讯录C语言1.docx(37页珍藏版)》请在冰点文库上搜索。
带密码通讯录C语言1
C语言上机实践报告
设计项目:
带密码的通讯录
指导老师:
班级号:
学号:
姓名:
设计时间:
带密码的通讯录系统
内容:
先验证或者修改密码,然后通过计算机对数据文件的存储和读取,实现名片的输入,输出,查找,修改,删除,分类存储等功能。
最大可以管理300张名片。
验证密码:
验证密码正确之后才能进入主菜单,对隐私内容的保护
修改密码:
验证密码之后才能修改密码。
修改成功后可显示修改后的密码以便记住。
添加:
可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱
后,会提示是否继续添加。
显示:
可以以表格形式输出所有通讯录里的记录
删除:
输入欲删除的那个人的名字后,会自动删除他(她)的记录内容
查询:
可以选择用姓名、电话、地址三种方式查询
修改:
输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改
保存:
,输入文件名(带后缀名)后,即可将通讯录信息保存到文件
一.密码系统
作为一个通讯录,自然有个人隐私,那么就需要保护。
这个密码系统有验证密码和修改密码的功能。
修改密码的同时也需要先验证密码。
框图如下:
本部分代码如下:
{
loop2:
printf("\n1.验证密码\n");
printf("\n2.修改密码\n");
charc[6];
charm[6];
charc0[1]={'0'};
m[0]='0';
m[1]='3';
m[2]='1';
m[3]='5';
m[4]='4';
m[5]='8';
scanf("%c",&c0[0]);
if(c0[0]=='1')
{
inti;
loop:
printf("pleaseenterthecode:
");
for(i=0;i<6;i++)
{
c[i]=getch();
if(c[i]>='0'||c[i]<='9'||c[i]>='a'||c[i]<='z'||c[i]>='A'||c[i]<='Z')
putchar('*');
}
if(c[0]==m[0]&&c[1]==m[1]&&c[2]==m[2]&&c[3]==m[3]&&c[4]==m[4]&&c[5]==m[5])
printf("\nwelcometotheprograme!
\n");
else
{
printf("\nthecodeiswrong!
");
gotoloop;
}
printf("\n密码正确\n");
}
elseif(c0[0]=='2')
{
inti;
loop1:
printf("pleaseenterthecode:
");
for(i=0;i<6;i++)
{
c[i]=getch();
if(c[i]>='0'||c[i]<='9'||c[i]>='a'||c[i]<='z'||c[i]>='A'||c[i]<='Z')
putchar('*');
}
if(c[0]==m[0]&&c[1]==m[1]&&c[2]==m[2]&&c[3]==m[3]&&c[4]==m[4]&&c[5]==m[5])
printf("\nwelcometotheprograme!
\n");
else
{
printf("\nthecodeiswrong!
");
gotoloop1;
}
printf("\n密码正确\n");
printf("pleaseenterthenewcode:
");
for(i=0;i<6;i++)
{
c[i]=getch();
if(c[i]>='0'||c[i]<='9'||c[i]>='a'||c[i]<='z'||c[i]>='A'||c[i]<='Z')
putchar('*');
}
m[0]=c[0];
m[1]=c[1];
m[2]=c[2];
m[3]=c[3];
m[4]=c[4];
m[5]=c[5];
printf("\n密码修改成功\n");
for(i=0;i<6;i++)
printf("%c\t",m[i]);
}
else
{
if(c0[0]!
='1'&&c0[0]!
='2')
gotoloop2;
else
;
}
}
二.主菜单
完成最主要的功能。
1.功能模块设计:
(1)添加记录
(2)显示通讯录
(3)删除通讯录(4)查询通讯录
先选择查询方式,以姓名查询为例
(5)修改通讯录
2.程序设计中的数据设计:
软件中使用的结构体和结构体数组,如:
typedefstruct
{
charscore[20];/*性别代码*/
charname[10];/*姓名*/
charnum[15];/*号码*/
charemail[20];/*邮箱*/
charage[8];/*年龄*/
charadds[20];/*住址*/
}Person;Personpe[80];
对用户的信息进行保存,他们都以二进制的形式读写。
其中:
Charscore[20];
charname[10];
charnum[15];
charemail[20];
charage[8];
charadds[20]
分别对性别代码、姓名、电话号码、邮编、年龄、住址进行储存
在子函数中还使用了结构体数组:
structPersonpe[300];
还使用了exit()、fclose()等库函数。
还运用了头文件:
#include"string.h"
#include
#include
其中还使用了大量的子函数,例如:
intInput(Personper[],intn)
voidDisplay(Personper[],intn)
intDelete_a_record(Personper[],intn)
voidQuery_a_record(Personper[],intn)
voidChange(Personper[],intn)
voidWritetoText(Personper[],intn)
部分子函数的详细代码:
intDelete_a_record(Personper[],intn)
{
chars[20];
inti=0,j;
printf("\t请输入想删除记录中的名字:
");
scanf("%s",s);
while(strcmp(per[i].name,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return(n);
}
for(j=i;j{
strcpy(per[j].num,per[j+1].num);
strcpy(per[j].name,per[j+1].name);
strcpy(per[j].age,per[j+1].age);
strcpy(per[j].adds,per[j+1].adds);
strcpy(per[j].email,per[j+1].email);
per[j].score=per[j+1].score;
}
printf("\t\t\t已经成功删除!
\n");
return(n-1);
}
通过对这些资源的合理利用使系统初步实现了通讯录管理系统的基本功能。
3.程序设计清单以及注释:
#include
#include
#include
#include
typedefstruct
{
charscore[20];/*性别代码*/
charname[10];/*姓名*/
charnum[15];/*号码*/
charemail[20];/*邮箱*/
charage[8];/*年龄*/
charadds[20];/*住址*/
}Person;
Personpe[300];
intmenu_select()
{
charc;
do{
system("cls");
printf("\t***********************欢迎使用通讯录********************\t\n");
printf("\t***********机自20070212李宝龙***********\t\n");
printf("\t\t***************************菜单*(代码:
男1女2)************************\t\n");
printf("\t\t**********************1.添加记录***********************\t\n");
printf("\t\t**********************2.显示记录*********************\t\n");
printf("\t\t**********************3.删除记录*********************\t\n");
printf("\t\t**********************4.查询记录*********************\t\n");
printf("\t\t**********************5.修改记录*********************\t\n");
printf("\t\t**********************6.保存记录*********************\t\n");
printf("\t\t**********************0.退出程序*********************\t\n");
printf("\n\t****************************通讯录**********************\t\n");
printf("\t\t请输入您选择的操作(0-6):
");
c=getchar();
}while(c<'0'||c>'6');
return(c-'0');
}
intInput(Personper[],intn)//添加记录函数
{
inti=0;
charsign,x[10];
while(sign!
='n'&&sign!
='N')
{
printf("\t性别:
");
scanf("\t%s",&per[n+i].score);
printf("\t姓名:
");
scanf("\t%s",per[n+i].name);
printf("\t年龄:
");
scanf("\t%s",per[n+i].age);
printf("\t电话号码:
");
scanf("\t%s",per[n+i].num);
printf("\t通讯住址:
");
scanf("\t%s",per[n+i].adds);
printf("\t电子邮箱:
");
scanf("\t%s",per[n+i].email);
gets(x);
printf("\n\t是否继续添加?
(Y/N)");
scanf("\t%c",&sign);
i++;
}
return(n+i);
}
voidDisplay(Personper[],intn)//显示记录函数
{
inti;
printf("----------------------------------------------------------------------\n");/*格式*/
printf("性别姓名年龄电话号码通讯地址电子邮箱\n");
printf("----------------------------------------------------------------------\n");
for(i=1;i{
printf("%-5s%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email);
if(i>1&&i%10==0)
{
printf("\t-----------------------------------\n");
printf("\t");
system("pause");
printf("\t-----------------------------------\n");
}
}
printf("----------------------------------------------------------------------\n");
system("pause");
}
intDelete_a_record(Personper[],intn)//删除记录函数
{
chars[20];
inti=0,j;
printf("\t请输入想删除记录中的名字:
");
scanf("%s",s);
while(strcmp(per[i].name,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return(n);
}
for(j=i;j{
strcpy(per[j].num,per[j+1].num);
strcpy(per[j].name,per[j+1].name);
strcpy(per[j].age,per[j+1].age);
strcpy(per[j].adds,per[j+1].adds);
strcpy(per[j].email,per[j+1].email);
strcpy(per[j].score,per[j+1].score);
}
printf("\t\t\t已经成功删除!
\n");
return(n-1);
}
voidQuery_a_record(Personper[],intn)//查找记录函数
{
intm;
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)
{
chars[20];
inti=0;
printf("\t请输入想查询的姓名:
");
scanf("\t%s",s);
while(strcmp(per[i].name,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return;
}
printf("\t此人性别:
%s\n",per[i].score);
printf("\t此人年龄:
%s\n",per[i].age);
printf("\t电话号码:
%s\n",per[i].num);
printf("\t通讯地址:
%s\n",per[i].adds);
printf("\t电子邮箱:
%s\n",per[i].email);
};
if(m==2)
{
chars[20];
inti=0;
printf("\t请输入想查询的电话:
");
scanf("\t%s",s);
while(strcmp(per[i].num,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return;
}
printf("\t此人性别:
%s\n",per[i].score);
printf("\t此人姓名:
%s\n",per[i].name);
printf("\t此人年龄:
%s\n",per[i].age);
printf("\t通讯地址:
%s\n",per[i].adds);
printf("\t电子邮箱:
%s\n",per[i].email);
};
if(m==3)
{
chars[20];
inti=0;
printf("\t请输入想查询的地址:
");
scanf("\t%s",s);
while(strcmp(per[i].adds,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return;
}
printf("\t此人性别:
%s\n",per[i].score);
printf("\t此人姓名:
%s\n",per[i].name);
printf("\t此人年龄:
%s\n",per[i].age);
printf("\t电话号码:
%s\n",per[i].num);
printf("\t电子邮箱:
%s\n",per[i].email);
};
}
voidChange(Personper[],intn)//修改记录函数
{
chars[20];
inti=0;
printf("\t请输入想修改的记录中的名字:
");
scanf("%s",s);
while(strcmp(per[i].name,s)!
=0&&iif(i==n)
{
printf("\t通讯录中没有此人!
\n");
return;
}
printf("\t性别:
");
scanf("\t%s",&per[i].score);
printf("\t姓名:
");
scanf("\t%s",per[i].name);
printf("\t年龄:
");
scanf("\t%s",per[i].age);
printf("\t电话号码:
");
scanf("\t%s",per[i].num);
printf("\t通讯住址:
");
scanf("\t%s",per[i].adds);
printf("\t电子邮箱:
");
scanf("\t%s",per[i].email);
printf("\t修改成功!
");
}
voidWritetoText(Personper[],intn)//存储记录函数
{
inti=0;
FILE*fp;/*定义文件指针*/
charfilename[20];/*定义文件名*/
printf("\t保存到文件\n");/*输入文件名*/
printf("\t请输入所保存的文件名:
");
scanf("\t%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\t无法打开文件\n");
system("pause");
return;
}
fprintf(fp,"******************************************通讯录******************************************\n");
fprintf(fp,"性别姓名年龄电话号码通讯地址电子邮箱\n");
fprintf(fp,"------------------------------------------------------------------------------------------\n");
while(i{
fprintf(fp,"%-3s\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);
i++;
}
fprintf(fp,"------------------------------------------------------------------------------------------\n");
fprintf(fp,"***************************************共有%d条记录****************************************\n",n);
fclose(fp);/*关闭文件*/
printf("保存成功!
\n");
}
voidmain()/*主函数*/
{
{
loop2:
printf("\n1.验证密码\n");
printf("\n2.修改密码\n");
charc[6];
charm[6];
charc0[1]={'0'};
m[0]='0';
m[1]='3';
m[2]='1';
m[3]='5';
m