手机通信录管理系统设计C语言技术交底大全报告Word文档下载推荐.docx
- 文档编号:16931002
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:35
- 大小:217.83KB
手机通信录管理系统设计C语言技术交底大全报告Word文档下载推荐.docx
《手机通信录管理系统设计C语言技术交底大全报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《手机通信录管理系统设计C语言技术交底大全报告Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
2.主菜单
主菜单函数提供用户对系统功能的选择,包括浏览联系人、增加联系人、修改联系人、删除联系人。
该函数的流程图如图二所示。
程序如下,这样编写的目的在于系统执行完每部分模块后能够便返回到系统界面。
图二主菜单流程图
[程序]
voidmenu()/******************菜单函数*****************/
intn=0,w1;
do
{
puts("
\t\t***********************MENU***********************\n\n"
);
\t\t\t\t1.Browseall"
\t\t\t\t2.Addmembers"
\t\t\t\t3.Modifyinformation"
\t\t\t\t4.Deleteinformation"
\n\n\t\t***************************************************\n"
printf("
Chooseyournumber(1-4):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
4)
{
w1=1;
getchar();
}
else
w1=0;
}while(w1==1);
switch(n)
case1:
browse();
break;
/*浏览联系人模块*/
case2:
add();
/*增加联系人模块*/
case3:
modify();
/*修改联系人模块*/
case4:
del();
/*删除联系人模块*/
}
}
3.数据结构设计
各联系人信息包括有姓名、、联系人类型、电子。
可以使用结构体数组,则姓名、、类型和电子作为结构体成员。
structmember/*联系人结构体*/
charname[20];
/*联系人姓名*/
chartel[11];
/*联系人*/
inttype;
/*联系人类型:
1为办公类;
2为个人类;
3为商务类*/
charemail[30];
/*联系人电子*/
}mem[N];
/*N为全局变量,表示能够储存的联系人数量*/
注意:
mem[N]中的N为联系人数目,程序中采用宏定义的式,可以随时在源程序宏定义中修改,本程序宏定义#defineN15.
4.浏览联系人模块
[需求分析]
该模块的功能是使用户可以浏览或者分类浏览各联系人信息。
如图三所示,当用户输入1、2、3、4时,分别显示办公类联系人、个人类联系人、商务类联系人和所有联系人。
图三浏览联系人模块流程图
voidbrowse()/*********浏览联系人函数**********/
intm,n=0,w1;
m=load();
do
\n\n\t\t******************BROWSR********************"
\t\t\t\t1.showclericalmembers"
/*查询办公类联系人*/
\t\t\t\t2.showpersonalmembers"
/*查询个人类联系人*/
\t\t\t\t3.showcommercialmembers"
/*查询商务类联系人*/
\t\t\t\t4.showallmembers"
/*查询所有联系人*/
\t\t\t\t5.returntomenu"
/*返回菜单*/
Chooseyournumber(1-5):
5)
if(n==1)
printf_cle(m);
/*显示办公类联系人*/
\ninformationhasbeenshowed,Pressanykeytoreturntomenu\n"
system("
pause"
/*暂停系统工作*/
getchar();
menu();
elseif(n==2)
printf_per(m);
/*显示个人类联系人*/
elseif(n==3)
printf_(m);
/*显示商务类联系人*/
elseif(n==4)
printf_all(m);
else
5.增加联系人模块
该模块的功能是使用户实现增加新联系人的功能,从键盘输入新联系人信息并加入到原文件中。
该模块流程图如图四所示。
voidadd()
intm,w1,n,t,w2,i,j;
/*m为现有联系人数量*/
/*加载联系人信息,并将联系人数量输入m*/
if(m==N)
输出:
储存空间已满,无法输入
N
Y
图四增加联系人模块流程图
thereisnoterabytestosave\n"
Pressanykeytoreturntomenu..."
\tpleaseinputcontract'
sname:
"
/*输入联系人姓名*/
%s"
mem[m].name);
/*将联系人姓名保存至结构体*/
stelephonenumber:
mem[m].tel);
do/*选择联系人类型语句*/
puts("
\n\n\n\n\npleasechoosecontract'
stype:
\n\n\n"
1,clerical\t"
2,personal\t"
mercial\t"
pleasechoosecontract'
scanf("
if((n!
=1)&
&
(n!
=2)&
=3))
{
w1=1;
getchar();
}
else
w1=0;
}while(w1==1);
switch(n)/*将联系人类型信息存入结构体中*/
case1:
mem[m].type=1;
case2:
mem[m].type=2;
case3:
mem[m].type=3;
semailaddress:
mem[m].email);
Areyousuretosave?
1.yes2.no[]\b\b"
t);
if(t<
1||t>
2)
w2=1;
w2=0;
}while(w2==1);
if(t==1)
for(i=0;
i<
m;
i++)
if(strcmp(mem[i].name,mem[m].name)==0)
puts("
namehasexisted!
cannotsave,Pressanykeytomeun!
for(j=0;
j<
20;
j++)
mem[m].name[j]='
\0'
;
11;
j++)
mem[m].tel[j]='
mem[m].type=0;
for(i=0;
30;
mem[m].email[j]='
system("
menu();
if(strcmp(mem[i].tel,mem[m].tel)==0)
telephonenumberhasexisted!
cannotsave,Pressanykeytomenu!
save(m);
/*保存联系人信息至文本文档*/
informationsaved!
\n"
therefollowsalltheinformations:
printf_all(m+1);
Pressanykeytoreturntomenu"
if(t==2)/*如果用户不保存,则将刚刚存入结构体中的数据删除*/
i++)
mem[m].name[i]='
mem[m].tel[i]='
mem[m].type=0;
mem[m].email[i]='
informationnotsaved!
6.修改联系人模块
该模块的功能的功能是显示所有联系人信息。
显示完后,用户输入要修改联系人的序号,系统根据用户输入的序号显示用户选择的联系人,并提示用户需要修改哪部分信息,是姓名、、类型还是电子。
根据用户的选择修改相应的信息。
voidmodify()
intm,n,t,w1,w2;
puts("
\t"
printf_all(m);
/*显示所有信息,以便用户确认所要修改的信息*/
pleaseinputthenumberthatyouwanttomodify,orpress'
0'
toexit:
0||n>
m)
if(n==0)
printf_one(n);
\t\t\t\t1,name"
\t\t\t\t2.telephone"
\t\t\t\t3.type"
\t\t\t\t4.email"
\t\t\t\t0.Exit"
choosewhichinformationdoyouwanttomodify,orpress'
0||t>
开始
运行m=load()函数,加载现有联系人信息,并显示所有用户信息
输入n
判断n是否在0~15中
根据n的值调用相应功能模块
输入t
判断t是否在0~4中
返回至主菜单
结束
n是否等于0
调用相应功能模块
图五修改联系人模块流程图
modify_name(n,m);
/*修改姓名函数,n为要修改的联系人编号;
m为总联系人数*/
if(t==2)
modify_tel(n,m);
/*修改函数,n为要修改的联系人编号;
if(t==3)
modify_type(n,m);
/*修改类型函数,n为要修改的联系人编号;
if(t==4)
modify_email(n,m);
/*修改Email函数,n为要修改的联系人编号;
if(t==0)
7.删除联系人模块
该模块首先显示现有所有联系人,显示完成后,用户输入要删除的联系人序号。
删除式是将数据从结构体中删除,然后将后面的记录向前移。
删除之后将记录保存至文件中。
voiddel()
intm,n,w1,w2,t,i;
pleaseinputthenumberthatyouwanttodelete:
do/*用dowhile语句控制用户的输入,使用户只能输入1或者2*/
youwanttodeletethisinformation:
printf_one(n);
\nAreyousuretodelete?
1,yes2,no"
运行m=load();
加载现有联系人信息;
并显示所有联系人信息
图六删除联系人模块
informationnotdeleted!
Pressanykeytobacktomenu\n"
mem[n-1].name[i]='
mem[n-1].tel[i]='
mem[n-1].type=0;
mem[n-1].email[i]='
move(n,m);
informationdeleted!
8.公共函数
一下为各模块中可能用到的一些公共函数。
(1)加载联系人信息函数:
intload()
[说明]
该函数用于将文件中的数据加载至结构体中,并且可以返回现有联系人的数目。
FILE*fp;
inti,j;
if((fp=fopen("
E:
\\vcprogrammes\\members.txt"
"
rb"
))==NULL)/*以只读式打开一个二进制文件*/
\ncannotfindinformation"
for(i=0;
(!
feof(fp))&
(i<
N);
fread(&
mem[i],sizeof(structmember),1,fp);
/*将文件中的数据加载至结构体中*/
fclose(fp);
/*关闭文件*/
for(j=0;
((strcmp(mem[j].name,"
\0"
))!
=0)&
(j<
j++);
/*通过检测联系人姓名否为空来判断联系人数量*/
return(j);
/*返回现有联系人数量*/
(2)保存所有联系人函数:
voidsave(intm)
[说明]
该函数形参m表示现有结构体中最后一个元素的下标。
该函数主体如下
voidsave(intm)/*m表示现有结构体中最后一个元素的下标*/
if(m==0)/*当m=0,即只有一个元素时,进入save_1函数,对文件进行只写操作*/
save_1();
/*当m>
0时,首先进入save_1函数,新建一个文件,同时把mem[0]的数据保存;
然后进入save_2函数,将mem[1]到mem[m]的数据追加至文件中*/
save_2(m);
该包含两个子函数:
voidsave_1()和voidsave_2(intm),当结构体中只有一个元素,即m=0时,只执行第一个函数,新建一个文件并将数据存入文件中;
如果结构体中多于一个元素,即m>
0时,首先执行第一个函数新建一个文件,然后执行第二个函数,将结构体中下标大于0的数据存入文件中。
voidsave_1()
wb"
))==NULL)
fwrite(&
mem[0],sizeof(structmember),1,fp);
voidsave_2(intm)
inti;
ab"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 通信 管理 系统 设计 语言 技术 交底 大全 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)