手机通信录管理系统设计C语言课程设计Word格式.docx
- 文档编号:22966844
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:45
- 大小:192.18KB
手机通信录管理系统设计C语言课程设计Word格式.docx
《手机通信录管理系统设计C语言课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《手机通信录管理系统设计C语言课程设计Word格式.docx(45页珍藏版)》请在冰豆网上搜索。
主菜单函数提供用户对系统功能的选择,包括浏览联系人、增加联系人、修改联系人、
删除联系人。
该函数的流程图如图二所示。
程序如下,这样编写的目的在于系统执行完每
部分模块后能够方便返回到系统界面。
开始
显示一系列功能选项
输入
n,判断
n
是
否是
1-4?
Y
根据
的值调用
各功能模块函数
结束
图二
主菜单流程图
void
menu()/******************菜单函数*****************/
int
n=0,w1;
do
puts("
\t\t***********************MENU***********************\n\n"
);
\t\t\t\t1.Browse
all"
\t\t\t\t2.Add
members"
\t\t\t\t3.Modify
information"
\t\t\t\t4.Delete
\n\n\t\t***************************************************\n"
printf("
Choose
your
number(1-4):
[
]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
4)
w1=1;
1
getchar();
else
w1=0;
}while(w1==1);
switch(n)
case
1:
browse();
break;
/*浏览联系人模块*/
2:
add();
/*增加联系人模块*/
3:
modify();
/*修改联系人模块*/
4:
del();
/*删除联系人模块*/
3.数据结构设计
各联系人信息包括有姓名、电话号码、联系人类型、电子邮件。
可以使用结构体数组,
则姓名、电话、类型和电子邮件作为结构体成员。
struct
member/*联系人结构体*/
char
name[20];
/*联系人姓名*/
tel[11];
/*联系人电话*/
type;
/*联系人类型:
1
为办公类;
2
为个人类;
3
为商务类
*/
email[30];
/*联系人电子邮件*/
}mem[N];
/*N
为全局变量,表示能够储存的联系人数量*/
注意:
mem[N]中的
N
为联系人数目,程序中采用宏定义的方式,可以随时在源程序宏
定义中修改,本程序宏定义#define
15.
4.浏览联系人模块
[需求分析]
该模块的功能是使用户可以浏览或者分类浏览各联系人信息。
如图三所示,当用户输
入
1、2、3、4
时,分别显示办公类联系人、个人类联系人、商务类联系人和所有联系人。
图三
浏览联系人模块流程图
2
browse()/*********浏览联系人函数**********/
m,n=0,w1;
m=load();
\n\n\t\t******************BROWSR********************"
\t\t\t\t1.show
clerical
/*查询办公类联系人*/
\t\t\t\t2.show
personal
/*查询个人类联系人*/
\t\t\t\t3.show
commercial
/*查询商务类联系人*/
\t\t\t\t4.show
all
/*查询所有联系人*/
\t\t\t\t5.return
to
menu"
/*返回菜单*/
number(1-5):
5)
if(n==1)
printf_cle(m);
/*显示办公类联系人*/
\ninformation
has
been
showed,Press
any
key
return
menu\n"
system("
pause"
/*暂停系统工作*/
else
if(n==2)
printf_per(m);
/*显示个人类联系人*/
if(n==3)
printf_com(m);
/*显示商务类联系人*/
3
if(n==4)
printf_all(m);
5.增加联系人模块
该模块的功能是使用户实现增加新联系人的功能,从键盘输入新联系人信息并加
入到原文件中。
该模块流程图如图四所示。
add()
m,w1,n,t,w2,i,j;
/*m
为现有联系人数量*/
/*加载联系人信息,并将联系人数量输入
m*/
if(m==N)
运行
m=load()函数,
加载现有联系人信息
判断
m
是否小
于
N?
N
输入联系人姓名、
电话、类型、电子
邮箱
是否保存?
输出:
储存空
间已满,无法
输入
save(int)函数,
将信息保存至文件中
返回至主菜单
图四
增加联系人模块流程图
4
there
is
no
terabytes
save\n"
Press
menu
..."
\tplease
input
contract'
s
name:
"
/*输入联系人姓名*/
%s"
mem[m].name);
/*将联系人姓名保存至结构体*/
telephone
number:
mem[m].tel);
do
/*选择联系人类型语句*/
\n\n\n\n\nplease
choose
type:
\n\n\n"
1,clerical\t"
2,personal\t"
mercial\t"
please
if((n!
=1)&
&
(n!
=2)&
=3))
switch(n)
/*将联系人类型信息存入结构体中*/
mem[m].type=1;
mem[m].type=2;
mem[m].type=3;
address:
mem[m].email);
Are
you
sure
save?
1.yes
2.no[
t);
if(t<
1||t>
2)
w2=1;
5
w2=0;
}while(w2==1);
if(t==1)
for(i=0;
i<
m;
i++)
if(strcmp(mem[i].name,mem[m].name)==0)
name
existed!
cannot
save,
meun!
for(j=0;
j<
20;
j++)
mem[m].name[j]='
\0'
;
11;
mem[m].tel[j]='
mem[m].type=0;
30;
mem[m].email[j]='
if(strcmp(mem[i].tel,mem[m].tel)==0)
number
save,Press
to
menu!
save(m);
/*保存联系人信息至文本文档*/
information
saved!
\n"
follows
the
informations:
printf_all(m+1);
6
if(t==2)/*如果用户不保存,则将刚刚存入结构体中的数据删除*/
mem[m].name[i]='
mem[m].tel[i]='
mem[m].email[i]='
not
6.
修改联系人模块
该模块的功能的功能是显示所有联系人信息。
显示完后,用户输入要修改联系人
的序号,系统根据用户输入的序号显示用户选择的联系人,并提示用户需要修改哪部
分信息,是姓名、电话、类型还是电子邮箱。
根据用户的选择修改相应的信息。
modify()
m,n,t,w1,w2;
\t"
/*显示所有信息,以便用户确认所要修改的信息*/
that
want
modify,or
press
'
0'
exit:
0||n>
m)
7
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"
which
0||t>
加载现有联系人信息,
并显示所有用户信息
n
是否在
0~15
中
的值调用相
应功能模块
是否等于
t
8
图五
修改联系人模块流程图
modify_name(n,m);
/*修改姓名函数,n
为要修
改的联系人编号;
为总联系人数*/
if(t==2)
modify_tel(n,m);
/*修改电话函数,n
为要修改
的联系人编号;
if(t==3)
modify_type(n,m);
/*修改类型函数,n
if(t==4)
modify_email(n,m);
/*修改
函数,n
if(t==0)
7.
删除联系人模块
该模块首先显示现有所有联系人,显示完成后,用户输入要删除的联系人序号。
删除
方式是将数据从结构体中删除,然后将后面的记录向前移。
删除之后将记录保存至文件中。
9
del()
m,n,w1,w2,t,i;
delete:
do/*用
while
语句控制用户的输入,使用户只能输入
或者
2*/
delete
this
information:
\nAre
delete?
1,yes2,no"
加载现有联系人
信息;
并显示所有联系人信息
输入要删除的联系人序号
0﹤n≤m
否成立
显示用户要删除的
联系人的所有信息
用户是否确认
10
删除数据,并运行
move
函数,
将删除位置后面的数据前移
save
函数,将
信息保存至文件中
图六
deleted!
back
mem[n-1].name[i]='
mem[n-1].tel[i]='
mem[n-1].type=0;
mem[n-1].email[i]='
move(n,m);
11
8.
公共函数
一下为各模块中可能用到的一些公共函数。
(1)
加载联系人信息函数:
load()
[说明]
该函数用于将文件中的数据加载至结构体中,并且可以返回现有联系人的数目。
FILE
*fp;
i,j;
if((fp=fopen("
E:
\\vcprogrammes\\members.txt"
"
rb"
))==NULL)/*以只读方式打开一
个二进制文件*/
\ncannot
find
(!
feof(fp))&
(i<
N);
fread(&
mem[i],sizeof(struct
member),1,fp);
/*将文件中的数据加载至结构体中*/
fclose(fp);
/*关闭文件*/
((strcmp(mem[j].name,"
\0"
))!
=0)&
(j<
j++);
/*通过检测联系人姓名否为空
来判断联系人数量*/
return(j);
/*返回现有联系人数量*/
(2)
保存所有联系人函数:
save(int
该函数形参
表示现有结构体中最后一个元素的下标。
该函数主体如下
m)/*m
表示现有结构体中最后一个元素的下标*/
if(m==0)/*当
m=0,即只有一个元素时,进入
save_1
函数,对文
件进行只写操作*/
save_1();
/*当
m>
0
时,首先进入
函数,新建一个文件,同
时把
mem[0]的数据保存;
然后进入
save_2
函数,将
mem[1]到
mem[m]的数据追加至文件
中*/
save_2(m);
12
该包含两个子函数:
save_1()和
save_2(int
m),当结构体中只有一个元素,即
m=0
时,只执行第一个函数,新建一个文件并将数据存入文件中;
如果结构体中多于一个元素,
即
时,首先执行第一个函数新建一个文件,然后执行第二个函数,将结构体中下标大
的数据存入文件中。
save_1()
\\vc
programmes\\members.txt"
wb"
))==NULL)
fwrite(&
mem[0],sizeof(struct
i;
ab"
for(i=1;
=m;
(3)
显示所有联系人函数:
printf_all(int
[说明
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 通信 管理 系统 设计 语言 课程设计