手机通信录管理系统课程设计报告.docx
- 文档编号:9255033
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:30
- 大小:231.17KB
手机通信录管理系统课程设计报告.docx
《手机通信录管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《手机通信录管理系统课程设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
手机通信录管理系统课程设计报告
1、程序基本功能要求
(小四字体)
(1)查看功能:
选择此功能时,列出下列三类选择:
A:
办公类B:
个人类C:
商务类
(2)当选中某类时,显示出此类所有数据中的姓名和电话号码
(3)添加数据功能:
能录入新数据,每个结点包括:
姓名,电话号码,分类(办公类,个人类,商务类),电子邮件.当录入重复的姓名和电话号码时,则提示录入数据重复并取消录入;当通讯录中信息超过定义的范围时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号
(4)修改功能:
选中某个人的姓名时,可对此人相应的数据进行修改
(5)删除功能:
选中某个人的姓名时,可对此人相应的数据进行删除,并自动调整后续条目的编号
2、总体设计(功能模块说明,如函数功能、参数说明,函数调用关系描述等,并注明各模块的具体成员分工)
(小四字体)
#include
#include
#include
#include
#defineY"123456"//密码是123456
#defineN15//最大容量为15
voidyonghuming();//声明部分
voidmima();
voidmain();
voidmenu();
//定义一个结构
typedefstruct
{
charname[10];
chartel[15];
chartype[10];
charemail[20];
}ComMtd;
//菜单
voidmenu()//主菜单
{
system("cls");//清屏
printf("欢迎使用手机通讯录\n");
printf("\n");
printf("=======================\n");
printf("1.号码添加\n");
printf("2.号码查询\n");
printf("3.号码修改\n");
printf("4.号码删除\n");
printf("0.退出\n");
printf("=======================\n");
printf("\n");
printf("好好学习,天天向上队\n");
printf("请选择相应的功能:
");
}
//号码添加
voidinput()
{
FILE*fp;//定义指向FILE类型文件的指针变量
ComMtdry,s;//定义两个ComMtd结构体的变量
if((fp=fopen("ComMtd.dat","ab+"))==NULL)//ab+代表为读写打开一个二进制的文件出错
{
printf("can'topenfile!
\n");
exit(0);
}
printf("\n录入格式姓名号码类别邮箱。
当输入姓名为#结束录入\n");
while
(1)
{
printf("请输入姓名:
");
scanf("%s",ry.name);
if(strcmp(ry.name,"#")==0)break;//如果输入#则退出添加
printf("请输入电话号码:
");
scanf("%s",ry.tel);
printf("请输入类别(A办公类B个人类C商务类):
");
scanf("%s",ry.type);
printf("请输入邮箱地址:
");
scanf("%s",ry.email);
fseek(fp,0,0);//指针定位到文件开始位置
fread(&s,sizeof(ComMtd),1,fp);
while(!
feof(fp))
{
if(strcmp(s.tel,ry.tel)==0)
{
printf("号码已经存在,不能记录.\n");break;}//遇到有相同的号码
fread(&s,sizeof(ComMtd),1,fp);
}
if(feof(fp))//读到自后也没有相同的号码
fwrite(&ry,sizeof(ComMtd),1,fp);//将信息写入文件
}
fclose(fp);//关闭文件
getchar();//接受一个输入
}
voidsearch()//查询
{
ComMtdry;
FILE*fp;
chartype[10];
system("cls");
printf("\n输入要查人员的类别:
");
scanf("%s",type);//要查询的类别
if((fp=fopen("ComMtd.dat","rb"))==NULL)
{
printf("can'topenfile!
\n");
exit(0);
}
fread(&ry,sizeof(ComMtd),1,fp);
if(!
feof(fp))
{
printf("人员的信息如下:
\n");
printf("说明:
(A办公类B个人类C商务类)");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
while(!
feof(fp))
{
if(strcmp(ry.type,type)==0)//若为该类别则输出
{
printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email);
}
fread(&ry,sizeof(ComMtd),1,fp);
}
}
else
printf("查找失败!
!
!
");
fclose(fp);
getch();
}
//修改:
输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;
voidmodify()
{
ComMtdry;
FILE*fp;
charname[10];
system("cls");
if((fp=fopen("ComMtd.dat","rb+"))==NULL)
{
printf("can'topenfile!
\n");
exit(0);
}
if(!
feof(fp))
{
printf("修改前全部人员的信息如下:
\n");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
fread(&ry,sizeof(ComMtd),1,fp);
while(!
feof(fp))
{
printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email);
fread(&ry,sizeof(ComMtd),1,fp);
}
}
printf("\n输入要修改人员的姓名:
");
scanf("%s",name);
if((fp=fopen("ComMtd.dat","rb+"))==NULL)
{
printf("can'topenfile!
\n");
exit(0);
}
while(!
feof(fp))
{
fread(&ry,sizeof(ComMtd),1,fp);
if(strcmp(ry.name,name)==0)
{
printf("修改前人员的信息如下:
\n");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email);
printf("\n请输入该人的号码:
");scanf("%s",ry.tel);
printf("\n类别:
");scanf("%s",ry.type);//新信息输入
printf("\n邮箱:
");scanf("%s",ry.email);
break;//修改完毕退出
}
}
if(!
feof(fp))
{
printf("\n修改后的人的信息如下:
\n");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email);
fseek(fp,sizeof(ComMtd),1);//指针向前一位定位
fwrite(&ry,sizeof(ComMtd),1,fp);
}
else
printf("\n此人不存在,修改失败!
!
");
fclose(fp);
getch();
}
//删除:
输入人员姓名,若该人员存在,则删除,并显示删除后余下的人员的信息
voiddel()
{ComMtdry[N];
FILE*fp;
charname[10];
inti,len,k=-1;
system("cls");
printf("\n输入要删除的人员姓名:
");
scanf("%s",name);
i=0;
if((fp=fopen("ComMtd.dat","rb+"))==NULL)
{
printf("can'topenfile!
\n");
exit(0);
}
while(!
feof(fp))
{
fread(&ry[i],sizeof(ComMtd),1,fp);
if(feof(fp))break;
if(strcmp(ry[i].name,name)==0)k=i;
i++;
}
fclose(fp);
//以下是删除后重新写文件
len=i;
if(k>=0)
{
if((fp=fopen("ComMtd.dat","wb+"))==NULL)
{
printf("can'topenfile!
\n");
exit(0);
}
for(i=0;i { if(i==k)continue; fwrite(&ry[i],sizeof(ComMtd),1,fp); } fclose(fp);printf("删除成功! ! ! \n"); } elseprintf("删除失败! ! ! \n"); getch(); } voidchoice() { charch; while (1) { menu();//显示菜单 ch=getch();//选择菜单 if(ch=='0') exit(0); switch(ch)//判断功能项 { case'1': input();break; case'2': search();break; case'3': modify();break; case'4': del();break; } } printf("\n欢迎使用! ! ! \n"); } //主函数 voidmain() { yonghuming(); } voidyonghuming() { inti,flag; charperson[20]; printf("\t\t**********登录**********\n"); printf("\t\t请输入用户名: "); for(i=0;i<=3;i++) { charname[20]="hch"; gets(person); flag=strcmp(person,name); if(flag==0) mima(); else { printf("\t\t用户名错误! \n\n\n\t\t请重新输入: "); } } } voidmima() { charp[20],i=0; printf("\t\t请输入密码: "); while(p[i]=getch()) { if(p[i]==13)break; if(p[i]! ='\b') { printf("*"); i++; } else { printf("\b\b"); i--; } } p[i]='\0'; if(strcmp(p,Y)==0) { printf("验证通过\n\n\n"); choice(); } else { printf("\n\t\t密码错误\n"); mima(); } } 3、详细设计(各模块程序设计组成框图、流程图) (小四字体) 总流程图 1.添加: 添加通讯录记录 2.删除: 删除通讯录记录 3.查找: 查找通讯录记录 4.修改: 修改通讯录记录 4、程序运行结果(截图) 1主界面 2号码添加 3查找 4修改 5删除 6退出 5、源程序代码(代码中注明每段代码的完成人) //陈若阳 #include #include #include #include #defineY"123456" #defineN15 voidyonghuming(); voidmima(); voidmain(); voidmenu(); //最大容量为15 typedefstruct//定义一个结构 { charname[10]; chartel[15]; chartype[10]; charemail[20]; }ComMtd; //菜单 voidmenu()//目录 { system("cls");//清屏 printf("欢迎使用手机通讯录\n"); printf("\n"); printf("=======================\n"); printf("1.号码添加\n"); printf("2.号码查询\n"); printf("3.号码修改\n"); printf("4.号码删除\n"); printf("0.退出\n"); printf("=======================\n"); printf("\n"); printf("好好学习,天天向上队\n"); printf("请选择相应的功能: "); } //胡月 //号码添加 voidinput() { FILE*fp;//定义文件指针 ComMtdry,s;//定义两个ren结构体的量 if((fp=fopen("ComMtd.dat","ab+"))==NULL) {printf("can'topenfile! \n");exit(0);} printf("\n录入格式姓名号码类别邮箱。 当输入姓名为#结束录入\n"); while (1) {printf("请输入姓名: "); scanf("%s",ry.name); if(strcmp(ry.name,"#")==0)break;//如果输入#则退出添加 printf("请输入电话号码: "); scanf("%s",ry.tel); printf("请输入类别(A办公类B个人类C商务类): "); scanf("%s",ry.type); printf("请输入邮箱地址: "); scanf("%s",ry.email); fseek(fp,0,0);//指针定位到文件开始位置 fread(&s,sizeof(ComMtd),1,fp); while(! feof(fp)) {if(strcmp(s.tel,ry.tel)==0) {printf("号码已经存在,不能记录.\n");break;}//遇到有相同的号码 fread(&s,sizeof(ComMtd),1,fp); } if(feof(fp))//读到自后也没有相同的号码 fwrite(&ry,sizeof(ComMtd),1,fp);//将信息写入文件 } fclose(fp);//关闭文件 getchar();//接受一个输入 } voidsearch()//查询 { ComMtdry; FILE*fp; chartype[10]; system("cls"); printf("\n输入要查人员的类别: ");scanf("%s",type);//要查询的类别 if((fp=fopen("ComMtd.dat","rb"))==NULL){printf("can'topenfile! \n");exit(0);} fread(&ry,sizeof(ComMtd),1,fp); if(! feof(fp)) {printf("人员的信息如下: \n"); printf("说明: (A办公类B个人类C商务类)"); printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱"); while(! feof(fp)) { if(strcmp(ry.type,type)==0)//若为该类别则输出 { printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email); } fread(&ry,sizeof(ComMtd),1,fp); } } elseprintf("查找失败! ! ! "); fclose(fp); getch(); } //何晓妮 //修改: 输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果; voidmodify() {ComMtdry; FILE*fp; charname[10]; system("cls"); if((fp=fopen("ComMtd.dat","rb+"))==NULL) { printf("can'topenfile! \n"); exit(0); } if(! feof(fp)) { printf("修改前全部人员的信息如下: \n"); printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱"); fread(&ry,sizeof(ComMtd),1,fp); while(! feof(fp)) { printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email); fread(&ry,sizeof(ComMtd),1,fp); } } printf("\n输入要修改人员的姓名: "); scanf("%s",name); if((fp=fopen("ComMtd.dat","rb+"))==NULL) { printf("can'topenfile! \n"); exit(0); } while(! feof(fp)) { fread(&ry,sizeof(ComMtd),1,fp); if(strcmp(ry.name,name)==0) { printf("修改前人员的信息如下: \n"); printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱"); printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email); printf("\n请输入该人的号码: ");scanf("%s",ry.tel); printf("\n类别: ");scanf("%s",ry.type);//新信息输入 printf("\n邮箱: ");scanf("%s",ry.email); break;//修改完毕退出 } } if(! feof(fp)) { printf("\n修改后的人的信息如下: \n"); printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱"); printf("%10s%15s%10s%20s\n",ry.name,ry.tel,ry.type,ry.email); fseek(fp,sizeof(ComMtd),1);//指针向前一位定位 fwrite(&ry,sizeof(ComMtd),1,fp); } else printf("\n此人不存在,修改失败! ! "); fclose(fp); getch(); } //删除: 输入人员姓名,若该人员存在,则删除,并显示删除后余下的人员的信息 voiddel() {ComMtdry[N]; FILE*fp; charname[10]; inti,len,k=-1; system("cls"); printf("\n输入要删除的人员姓名: "); scanf("%s",name); i=0; if((fp=fopen("ComMtd.dat","rb+"))==NULL) { printf("can'topenfile! \n"); exit(0); } while(! feof(fp)) { fread(&ry[i],sizeof(ComMtd),1,fp); if(feof(fp))break; if(strcmp(ry[i].name,name)==0)k=i; i++; } fclose(fp); //以下是删除后重新写文件 len=i; if(k>=0) { if((fp=fopen("ComMtd.dat","wb+"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i { if(i==k)continue; fw
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 通信 管理 系统 课程设计 报告