电子通讯录Word格式.docx
- 文档编号:18964468
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:36
- 大小:446.73KB
电子通讯录Word格式.docx
《电子通讯录Word格式.docx》由会员分享,可在线阅读,更多相关《电子通讯录Word格式.docx(36页珍藏版)》请在冰豆网上搜索。
将文件中的全部信息按照姓名的首字母升序排列,并将其结果保存在文件中且全部显示出来。
12、显示功能:
将文件中的全部信息显示出来。
13、统计功能:
统计已有的全部信息的数量并显示。
三.概要设计
1.功能模块图;
对系统进行分析,给出系统结构图。
整个系统除了主函数外,另外还有18个函数,实现十项功能:
密码功能、输入功能、输出功能、删除功能、修改功能、查找功能、显示功能、排序功能、读取功能、保存功能、统计功能。
本程序利用单链表存储结构完成对通讯录的动态管理。
其基本功能模块如下图所示:
2.各个模块详细的功能描述。
1)主函数main()
首先调用密码函数,以确认用户是否有权限进入该系统;
然后通过主菜单的选项进入各个功能;
退出系统时有退出界面。
2)开始界面enter_menu()
根据提示语句输入用户名和密码。
3)验证密码check_password()
根据使用者输入的用户名和密码与系统默认的用户名和密码比较,看是否有使用的权限。
4)退出界面goodbye()
5)主菜单main_menu()
会产生一个返回值给主函数,进而调用其他功能。
6)继续程序的有关功能go_on()
当时用完了一个功能的时候,此函数将询问用户是否继续该系统的有关功能。
7)创建新信息create()
主要是对input(),save(),go_on()函数的调用。
8)输入信息有关功能input()
有提示语句。
9)保存信息入文件save()
将信息全部保存在“telephonelist”文件中。
10)显示全部信息show()
调用read(),output()等函数。
11)统计全部信息的数量quantity()
调用read()函数。
12)读取文件内容read()
读取文件的全部内容并且存放在链表中,返回链表的头指针。
13)输出output()
根据用户的要求输出相关的信息。
14)查找信息found()
根据用户的要求查找相关的信息的全部内容。
15)查找菜单found_menu()
给出选项让用户选择查找信息的方式并且传递给found()。
16)修改菜单change_menu()
给出选项让用户选择修改的内容并传递给change()。
17)修改信息change()
根据用户的要求修改信息的相关内容。
18)删除信息delete()
根据用户查找到的信息并删除。
19)排序sort()
按信息的姓名的首字母升序排列并保存在文件中,且输出。
4.详细设计
1.功能函数的调用关系图
2.
各功能函数的数据流程图
删除函数:
delete()
排序函数:
sort()
修改函数:
change()
查找:
found()
统计:
quantity()
创建:
create()
密码:
check_menu()
3.重点设计及编码
/*验证用户名和密码*/
intcheck_password(char*user,char*password)
{
if(strcmp(user,"
sunny"
)==0)
if(strcmp(password,"
)==0)
{
printf("
\t\t~~~Welcometouseelectronicaddressbooksystem!
~~~\n\n"
);
return1;
}
else
\t\t~~~Wrongpassword!
return0;
else
{
printf("
\t\t~~~Wronguser'
sname!
return0;
}
}
五.测试数据及运行结果
1.正常测试数据和运行结果
进入系统界面:
成功进入主菜单:
创建新信息:
删除信息:
更改信息:
查找信息:
显示信息:
进入统计信息数量的功能区:
退出系统:
2.异常测试数据及运行结果
密码错误:
主菜单选择出错:
查找出错:
六.调试情况,设计技巧及体会
1.改进方案
对自己设计进行评价,指出合理和不足之处,提出改进的方案。
通过两周的编程,我完成了通讯录管理这个小系统。
程序总体设计结构较合理,功能基本完善,界面友好清晰。
优点:
熟练的应用结构体,函数,指针,链表,文件。
使程序可以更流畅的运行,实现对数据的输入、输出、创建、查找、修改、删除、查询、统计等基本功能。
也加深了自己对编程的认识,理解。
缺点:
在某些方面存在着不足,比如,密码和用户名都没有修改的功能,以及功能的实现没有自己预期的理想效果。
存在的这些问题,尚显我能力的不足,需要认真深入学习C语言的许多东西。
改进的方法:
增加结构体的成员,使每条信息都更具体详细。
用户名,密码可以增加修改功能。
实现排序功能是用更简单的方法。
对重复出现的信息做出一定的操作。
2.体会
在为期两周的程序设计实习中,我受益颇多。
更进一步的感受到了C语言程序设计的有趣。
初步掌握了,从实际问题出发编写C语言程序的能力,将书本知识应用于实践,为以后的计算机学习打下了坚实的基础。
但在本次程序设计中,我学会的更多的是坚持的精神和的持重的心态,哪怕报错的信息多到显示不完,也要静下心,认认真真一点一点地寻找错误的原因。
另外,我也学会了程序如何设计的基本思路,以及一些从未用过但是却功能特殊的函数。
同时真正意识到编写一个程序的不容易,以及多得考虑不完的问题,更是突显出团队合作的重要性。
真正要编写一个电子通讯系统,就如同手机的通讯录这样一个看起来简单的应用软件,我要学的好有很多,希望今后的学习、实践我能做得更好!
七.参考文献
王曙燕.2005.《C语言程序设计》.北京:
科学出版社
八.附录:
源代码:
#include<
stdio.h>
stdlib.h>
string.h>
#definetypestructtelephone_list
#definesizesizeof(structtelephone_list)
/*定义结构体*/
type
charname[25];
charcell[14];
charhometel[13];
charemail[30];
charaddress[40];
type*next;
};
/*函数声明*/
intenter_menu(void);
intcheck_password(char*,char*);
voidgoodbye(void);
charmain_menu(void);
intgo_on(char);
type*create(void);
type*input(void);
voidsave(type*,char);
voidshow(void);
intquantity(void);
type*read(void);
type*output(type*);
type*found(void);
charfound_menu(void);
charchange_menu(void);
voidchange(void);
voiddelete(void);
voidsort(void);
/*按信息的姓名首字母升序排列*/
voidsort(void)
type*head,*p1,*p2;
chart[40];
intflag;
head=read();
if(head->
next==NULL)
\t\tEmptyfile!
\n\n"
for(p1=head->
next;
p1;
p1=p1->
next)
{
for(p2=p1->
p2;
p2=p2->
if(strcmp(p1->
name,p2->
name)>
0)
{
strcpy(t,p1->
name);
strcpy(p1->
strcpy(p2->
name,t);
cell);
cell,p2->
cell,t);
hometel);
hometel,p2->
hometel,t);
email);
email,p2->
email,t);
address);
address,p2->
address,t);
}
save(head,'
2'
printf("
\t***********************************************************************\n\n"
\t\tSortresult:
output(p1);
\t\tPleasepressanykeytocontinue.\n\n"
getchar();
/*删除指定信息*/
voiddelete(void)
type*head,*p,*q;
charname[25],cell[14],hometel[13],choose;
FILE*fp;
intflag1=0,flag2;
choose=found_menu();
switch(choose)
case'
1'
:
printf("
\t\tPLeaseinputtheinformation'
snametodelete:
"
scanf("
%s"
name);
\n"
for(p=head->
next,q=head;
p;
)
if(strcmp(name,p->
name)==0)
{
output(p);
getchar();
printf("
\t\tMakesureyouwanttodelete?
(Y/N):
scanf("
%c"
&
choose);
if(choose=='
Y'
||choose=='
y'
{
q->
next=p->
flag1=1;
p=q->
save(head,'
}
else
p=p->
q=q->
}
else
{
p=p->
q=q->
break;
scellphonenumbertodelete:
cell);
if(strcmp(cell,p->
cell)==0)
}
3'
shomephonenumbertodelete:
hometel);
if(strcmp(hometel,p->
hometel)==0)
default:
Wrongchoose!
\t\tPleasepressanykeytocontinue.\n\n"
flag2=go_on('
4'
if(flag2)
delete();
if(flag1)
\t\tDeletedsuccessful!
\t\tCan'
tfoundthisinformation!
/*修改指定信息的相关内容*/
voidchange(void)
charchoose,name[25],cell[14],hometel[13],email[30],address[40];
intflag1=0,flag2=1,flag3;
q=found();
while(flag2)
choose=change_menu();
switch(choose)
case'
\t\tPleaseinputthenameofchange:
scanf("
for(p=head->
p=p->
if(strcmp(q->
name,p->
name)==0)
getchar();
printf("
\t\tMakesureyouwanttochange?
scanf("
if(choose=='
{
strcpy(p->
name,name);
strcpy(q->
flag1=1;
save(head,'
}
break;
\t\tPleaseinputthecellphonenumberofchange:
cell,cell);
\t\tPleaseinputthehomephonenumberofchange:
hometel,hometel);
\t\tPleaseinputtheemailtochange:
email);
email,email);
5'
\t\tPleaseinputtheaddressofchance:
address);
address,address);
default:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 通讯录