带密码通讯录C语言1.docx

上传人:b****1 文档编号:2524742 上传时间:2023-05-03 格式:DOCX 页数:37 大小:372.41KB
下载 相关 举报
带密码通讯录C语言1.docx_第1页
第1页 / 共37页
带密码通讯录C语言1.docx_第2页
第2页 / 共37页
带密码通讯录C语言1.docx_第3页
第3页 / 共37页
带密码通讯录C语言1.docx_第4页
第4页 / 共37页
带密码通讯录C语言1.docx_第5页
第5页 / 共37页
带密码通讯录C语言1.docx_第6页
第6页 / 共37页
带密码通讯录C语言1.docx_第7页
第7页 / 共37页
带密码通讯录C语言1.docx_第8页
第8页 / 共37页
带密码通讯录C语言1.docx_第9页
第9页 / 共37页
带密码通讯录C语言1.docx_第10页
第10页 / 共37页
带密码通讯录C语言1.docx_第11页
第11页 / 共37页
带密码通讯录C语言1.docx_第12页
第12页 / 共37页
带密码通讯录C语言1.docx_第13页
第13页 / 共37页
带密码通讯录C语言1.docx_第14页
第14页 / 共37页
带密码通讯录C语言1.docx_第15页
第15页 / 共37页
带密码通讯录C语言1.docx_第16页
第16页 / 共37页
带密码通讯录C语言1.docx_第17页
第17页 / 共37页
带密码通讯录C语言1.docx_第18页
第18页 / 共37页
带密码通讯录C语言1.docx_第19页
第19页 / 共37页
带密码通讯录C语言1.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

带密码通讯录C语言1.docx

《带密码通讯录C语言1.docx》由会员分享,可在线阅读,更多相关《带密码通讯录C语言1.docx(37页珍藏版)》请在冰点文库上搜索。

带密码通讯录C语言1.docx

带密码通讯录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&&i

if(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&&i

if(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&&i

if(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&&i

if(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&&i

if(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&&i

if(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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2