1、通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。关键字:C语言 通讯录 函数 指导老师签名:一、设计目的1、进一步巩固已学的C程序设计的理论知识,补充一些未学习的或者自己比较薄弱的知识;2、加强学生将理论知识与实际操作相结合的能力;3、进一步提高学生课程设计的能力、分析问题和解决问题的能力;4、加强学生的独立思考的能力,开发学生的自主创新;通过这个课程设计,使学生的各个方面得到全面的提升二、设计要求与功能描述1.设计要求杨春 187*0276 商务类 *(5)删除功能
2、选中某个人的姓名时可对此人的相应数据进行删除并自动调整后续条目2.功能描述(1)、新增信息在提示界面选择“新增联系人”;新建通讯录,判断是否已满15个联系人。判断是否输入相同信息,若输入相同信息,则系统停止,提示输入重复,返回主菜单进行其他选择操作。(2)、查看功能 在提示中界面选择“查看联系人”;输入需要查看的类别;从第一个节点开始,判断链表中的节点是否属于选择的类别;如果节点属于所选类别,则显示该节点中所有信息;如果不属于所选类别,则将所指节点下移,直至将链表中所有属于该类别的信息全部输出为止;若找不到联系人,则提示无联系人;回到提示界面。(3)、删除信息 在提示界面中选择“删除联系人”;
3、输入要删除的姓名;如果通讯录文件空,则输出你选的用户不存在;如果通讯录文件不为空,则从第一个节点开始比较,若有某一节点中的姓名与输入姓名相同时,就调用free()函数释放该节点;若节点中所有姓名都与输入姓名不相同,则输出姓名为* *的联系人不存在;保存刚才的操作,并回到提示界面。(4)、修改信息在提示界面中选择“修改联系人”;输入所要修改信息中的姓名,再依次输入信息, 姓名、电话号码、类别、电子邮箱;(5)、拨号功能 在提示界面中选择“拨号联系人”,进入拨号功能区;调用输出函数显示所有联系人信息;输入姓名 ,则输出与姓名相对应的电话号码,同时每输出一个号码就有相应声音,输出后提示拨号成功,并回
4、到提示界面;此函数中有一个音乐函数的调用,此函数的作用是是号码逐个显示(在输出号码后输出一个音频) 通讯录管理系统功能模块图 每一个功能都编写一个函数,多个功能函数都要用到的子模块单独编写函数,供各个实现功能的函数调用。在主函数中设置欢迎界面和菜单处理函数,通过菜单处理函数调用各子函数处理模块,从而实现整个通讯录管理系统的功能。因为各个函数之间是并列关系,所以可以通过switch函数实现各个功能函数的调用。 三、系统分析与设计1、功能模块的设计分析(1)主函数main()执行流程如图3-1所示main()函数流程图,先以可读写的方式打开文本类型的数据文件,若该文件不存在,则新建此数据文件。当打
5、开文件操作成功后,从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。在判断键值时,有效输入为06之间的任意数值,其他输入都被视为错误按键。若输入为0,系统会自动进行存盘。下图为main()函数流程图 若选择1,则调用input()函数,执行增加记录操作;若选择2,则调用search( )函数,执行将记录以表格形式打印输出至屏幕的操作;若选择3,则调用modi()函数,执行修改操作;若选择4,则调用dele()函数,执行删除记录操作;若选择5,则调用:bohao()()函数,执行拨号操作;若输入为05之外的值,不执行操作。(2)添加功能流程图 (3)
6、.删除功能流程图(4).查询功能流程图 (5).修改功能流程图2、数据结构设计分析程序定义了结构体ren,用于存放联系人的基本信息。typedef struct /定义一个结构 char name10; char haoma15; char leibie10; char dizhi20;ren;Name10;保存联系人姓名char haoma15;保存联系人电话号码char leibie10;保存联系人所属类别dizhi 20;保存联系人地址3、函数功能描述(1)menu()函数原型:void menu( )menu ()函数用于显示主菜单,提供选择项,从此处进入各子功能。(2)input()
7、void input( )input()函数用于在ry 数组中增加电话簿记录,并返回数组中的当前记录。(3)bohao()void bohao( )bohao()函数用于删除ry 数组中的某项记录,并返回到数组中的当前记录。(4)search( )void search( ) search()函数用于在数组ry 中按姓名或电话号码查找满足条件的记录,并显示出来。5)Del()void dele()Del()函数用于先在数组ry 中找到满足条件的就,然后删除该记录。6)Modi()void modi()Modi()函数用于在数组ry 中修改记录。7)主函数main()Main()时整个电话簿管理
8、系统的控制部分。主要实现对整个程序的运行控制,以及相关功能模块的调用。四、系统调试与运行1、主界面上显示通讯录管理系统的功能,共六项,编号0-5,在界面上显示相应的功能序号即可进入所需要的功能。2、号码添加功能 选择1,可进入添加号码界面,依次输入姓名、电话、类别、邮箱地址等3、若输入的号码在通讯录中已存在,则提示“号码已存在,不能记录”。4、若输入通讯录中的联系人个数已经超过15条,则提示“内存已满,不能记录,青训则其他功能”。5、若输入的联系人姓名在通讯录中已存在,则提示“姓名已存在,不能记录”。6、查询界面:输入要查人员的类别,即显示所有此类中的联系人以便查找。7、若输入的类别通讯录中没
9、有,则显示“查找失败”。8、修改功能界面:输入要修改的姓名,依次修改该联系人的各项信息9、若输入的姓名在通讯录中不存在,则显示“此人不存在,修改失败!”。10、删除功能界面:输入要删除的联系人姓名,若不存在,则提示“删除失败!11、若联系人存在则提示:“修改成功!”12、拨号功能界面:输入要拨打的联系人姓名,当选中某个人的姓名时,屏幕中模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音13、若不存在,则提示:“此人不存在,拨号失败” 14、选择0号功能键退出系统“press any key to continue”。五、总结1、对自己完成程序进行自我评价:我的程序较好的
10、完成了任务中规定的设计内容,完全遵循了任务要求,熟练的插入并运用所学函数解决了数据编程问题,并尽可能使步骤简单化,更加易懂。但在编程中也偶尔出现了几处错误,存在粗心之处以及不懂之处,但及时改正使程序运行非常流畅。2、对课题提出更完善的方案:在手机通信录管理系统程序中,插入引进联系人电子信箱,qq,以及地址等功能,方便使用人了解联系人的信息。3、通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用
11、的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。4、课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的
12、。六、附录:程序源代码:#include stdlib.hconio.hstring.h#define N 15 /最大容量为15/菜单void menu() /目录 system(cls); /清屏 printf( # 欢迎使用手机通讯录#nn=n 1.号码添加 n 2.号码查询 n 3.号码修改 n 4.号码删除 n 5.号码拨号 n 0. 退出 n 个人通讯录n 请选择相应的功能: /号码添加void input() int n; FILE *fp; /定义文件指针 ren ry,s; / 定义两个ren结构体的量 if(fp=fopen(ren.dat,ab+)=NULL) print
13、f(cant open file!exit(0);n录入格式 姓名 号码 类别 邮箱。当输入姓名为#结束录入n while(1) printf(请输入姓名: scanf(%s,ry.name); if(strcmp(ry.name,#)=0) break; /如果输入#则退出添加请输入电话号码:,ry.haoma);请输入类别(A办公类B个人类C商务类):,ry.leibie);请输入邮箱地址:,ry.dizhi); fseek(fp,0,0); /指针定位到文件开始位置 fread(&s,sizeof(ren),1,fp); n=0; while(!feof(fp) n+; if(strcm
14、p(s.haoma,ry.haoma)=0) 号码已经存在,不能记录.nbreak;/遇到有相同的号码 if(strcmp(s.name,ry.name)=0) printf(姓名已经存在,不能记录.n/遇到有相同的姓名 / printf(%d,n); if(nN) break;/内存已满,不能记录. if(feof(fp) /读到自后也没有相同的号码 fwrite(&ry,sizeof(ren),1,fp); /将信息写入文件 fclose(fp); /关闭文件 getchar(); /接受一个输入void search() /查询int help=0; /帮助指令,如果查找所找的类别中没有
15、数据,显示ren ry;FILE *fp;system(printf(n 输入要查人员的类别: scanf(,leibie);/要查询的类别查找失败rb)=NULL) printf( if(! 人员的信息如下:说明:(A办公类B个人类C商务类)n%10s %15s %10s %20s n姓名号码类别邮箱while(! if(strcmp(ry.leibie,leibie)=0) /若为该类别则输出 help+;%10s %15s %10s %20s n,ry.name,ry.haoma,ry.leibie,ry.dizhi);if(help=0) 查找失败 / else printf( get
16、ch(); /修改:输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果; ren ry;char name10;if(fp=fopen(rb+ 修改前全部人员的信息如下:n 输入要修改人员的姓名:,name); fread(& if(strcmp(ry.name,name)=0) 修改前人员的信息如下:n请输入该人的号码:n类别: /新信息输入n邮箱: break; /修改完毕退出 n 修改后的人的信息如下: fseek(fp,sizeof(ren),1); /指针向前一位定位 elsenn 此人不存在,修改失败! /删除:输入人员姓名,若该人员存在,则删除,并显示删除
17、后余下的人员的信息 ren ryN; int i,len,k=-1;n 输入要删除的人员姓名: i=0; fread(&ryi,sizeof(ren),1,fp); if(feof(fp) break; if(strcmp(ryi.name,name)=0) k=i; i+; /以下是删除后重新写文件 len=i; if(k=0) if(fp=fopen(wb+ for(i=0;ilen;i+) if(i=k) continue;nn 删除成功n else printf( nn 删除失败nvoid bohao() /拨号n 输入要拨人员的姓名: if(strcmp(ry.name,name)=0)naaaaaa %15saaaaan /输出号码和声音 if(feof(fp) printf(nn 拨号失败/菜单选择void choice()char ch;while(1) menu();/ 显示菜单 ch=getch();/选择菜单if(ch=0) break; switch(ch)/判断功能项 case 1: input();2se
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1