手机通信录管理系统设计C语言课程设计Word格式.docx

上传人:b****7 文档编号:22966844 上传时间:2023-02-06 格式:DOCX 页数:45 大小:192.18KB
下载 相关 举报
手机通信录管理系统设计C语言课程设计Word格式.docx_第1页
第1页 / 共45页
手机通信录管理系统设计C语言课程设计Word格式.docx_第2页
第2页 / 共45页
手机通信录管理系统设计C语言课程设计Word格式.docx_第3页
第3页 / 共45页
手机通信录管理系统设计C语言课程设计Word格式.docx_第4页
第4页 / 共45页
手机通信录管理系统设计C语言课程设计Word格式.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

手机通信录管理系统设计C语言课程设计Word格式.docx

《手机通信录管理系统设计C语言课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《手机通信录管理系统设计C语言课程设计Word格式.docx(45页珍藏版)》请在冰豆网上搜索。

手机通信录管理系统设计C语言课程设计Word格式.docx

主菜单函数提供用户对系统功能的选择,包括浏览联系人、增加联系人、修改联系人、

删除联系人。

该函数的流程图如图二所示。

程序如下,这样编写的目的在于系统执行完每

部分模块后能够方便返回到系统界面。

开始

显示一系列功能选项

输入 

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;

/*联系人类型:

为办公类;

为个人类;

为商务类

*/

email[30];

/*联系人电子邮件*/

}mem[N];

/*N 

为全局变量,表示能够储存的联系人数量*/

注意:

mem[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()函数,

加载现有联系人信息

判断 

是否小

于 

N?

N

输入联系人姓名、

电话、类型、电子

邮箱

是否保存?

输出:

储存空

间已满,无法

输入

save(int)函数,

将信息保存至文件中

返回至主菜单

图四 

增加联系人模块流程图

4

there 

is 

no 

terabytes 

save\n"

Press 

menu 

..."

\tplease 

input 

contract'

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;

email 

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);

/*修改 

Email 

函数,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>

时,首先进入 

函数,新建一个文件,同

时把 

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 

[说明

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

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1