手机通信录管理系统课程设计报告Word格式文档下载.docx
《手机通信录管理系统课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《手机通信录管理系统课程设计报告Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
![手机通信录管理系统课程设计报告Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/2/2745a1d2-d1e6-4415-8352-5b7bc4254a69/2745a1d2-d1e6-4415-8352-5b7bc4254a691.gif)
voidyonghuming();
//声明部分
voidmima();
voidmain();
voidmenu();
//定义一个结构
typedefstruct
{
charname[10];
chartel[15];
chartype[10];
charemail[20];
}ComMtd;
//菜单
voidmenu()//主菜单
system("
cls"
);
//清屏
printf("
欢迎使用手机通讯录\n"
\n"
=======================\n"
1.号码添加\n"
2.号码查询\n"
3.号码修改\n"
4.号码删除\n"
0.退出\n"
好好学习,天天向上队\n"
请选择相应的功能:
"
}
//号码添加
voidinput()
{
FILE*fp;
//定义指向FILE类型文件的指针变量
ComMtdry,s;
//定义两个ComMtd结构体的变量
if((fp=fopen("
ComMtd.dat"
"
ab+"
))==NULL)//ab+代表为读写打开一个二进制的文件出错
{
printf("
can'
topenfile!
exit(0);
}
\n录入格式姓名号码类别邮箱。
当输入姓名为#结束录入\n"
while
(1)
{
请输入姓名:
scanf("
%s"
ry.name);
if(strcmp(ry.name,"
#"
)==0)break;
//如果输入#则退出添加
请输入电话号码:
ry.tel);
请输入类别(A办公类B个人类C商务类):
scanf("
ry.type);
请输入邮箱地址:
ry.email);
fseek(fp,0,0);
//指针定位到文件开始位置
fread(&
s,sizeof(ComMtd),1,fp);
while(!
feof(fp))
if(strcmp(s.tel,ry.tel)==0)
{
号码已经存在,不能记录.\n"
break;
}//遇到有相同的号码
}
if(feof(fp))//读到自后也没有相同的号码
fwrite(&
ry,sizeof(ComMtd),1,fp);
//将信息写入文件
fclose(fp);
//关闭文件
getchar();
//接受一个输入
voidsearch()//查询
ComMtdry;
FILE*fp;
chartype[10];
system("
\n输入要查人员的类别:
"
scanf("
type);
//要查询的类别
if((fp=fopen("
rb"
))==NULL)
fread(&
if(!
人员的信息如下:
说明:
(A办公类B个人类C商务类)"
\n%10s%15s%10s%20s\n"
姓名"
号码"
类别"
邮箱"
while(!
if(strcmp(ry.type,type)==0)//若为该类别则输出
{
printf("
%10s%15s%10s%20s\n"
ry.name,ry.tel,ry.type,ry.email);
fread(&
}
else
查找失败!
!
fclose(fp);
getch();
//修改:
输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;
voidmodify()
ComMtdry;
rb+"
exit(0);
if(!
修改前全部人员的信息如下:
printf("
\n输入要修改人员的姓名:
name);
if(strcmp(ry.name,name)==0)
修改前人员的信息如下:
\n请输入该人的号码:
\n类别:
//新信息输入
\n邮箱:
break;
//修改完毕退出
\n修改后的人的信息如下:
fseek(fp,sizeof(ComMtd),1);
//指针向前一位定位
else
\n此人不存在,修改失败!
getch();
//删除:
输入人员姓名,若该人员存在,则删除,并显示删除后余下的人员的信息
voiddel()
{ComMtdry[N];
inti,len,k=-1;
\n输入要删除的人员姓名:
i=0;
ry[i],sizeof(ComMtd),1,fp);
if(feof(fp))break;
if(strcmp(ry[i].name,name)==0)k=i;
i++;
//以下是删除后重新写文件
len=i;
if(k>
=0)
if((fp=fopen("
wb+"
exit(0);
for(i=0;
i<
len;
i++)
if(i==k)continue;
删除成功!
elseprintf("
删除失败!
voidchoice()
charch;
while
(1)
menu();
//显示菜单
ch=getch();
//选择菜单
if(ch=='
0'
)
exit(0);
switch(ch)//判断功能项
case'
1'
:
input();
2'
search();
3'
modify();
4'
del();
}
\n欢迎使用!
//主函数
voidmain()
yonghuming();
voidyonghuming()
inti,flag;
charperson[20];
\t\t**********登录**********\n"
\t\t请输入用户名:
=3;
i++)
charname[20]="
hch"
;
gets(person);
flag=strcmp(person,name);
if(flag==0)
mima();
else
\t\t用户名错误!
\n\n\n\t\t请重新输入:
voidmima()
charp[20],i=0;
\t\t请输入密码:
while(p[i]=getch())
if(p[i]==13)break;
if(p[i]!
='
\b'
)
*"
\b\b"
i--;
p[i]='
\0'
if(strcmp(p,Y)==0)
验证通过\n\n\n"
choice();
\n\t\t密码错误\n"
3、详细设计(各模块程序设计组成框图、流程图)
总流程图
1.添加:
添加通讯录记录
2.删除:
删除通讯录记录
3.查找:
查找通讯录记录
4.修改:
修改通讯录记录
4、程序运行结果(截图)
1主界面
2号码添加
3查找
4修改
5删除
6退出
5、源程序代码(代码中注明每段代码的完成人)
//陈若阳
#defineN15
//最大容量为15
typedefstruct//定义一个结构
chartel[15];
voidmenu()//目录
//胡月
//定义文件指针
//定义两个ren结构体的量
))==NULL)
{printf("
{printf("
{if(strcmp(s.tel,ry.tel)==0)
//要查询的类别
))==NULL){printf("
while(!
//何晓妮
{ComMtdry;
fw