收藏 分销(赏)

C语言程序设计报告个人通讯录.doc

上传人:精*** 文档编号:3107060 上传时间:2024-06-18 格式:DOC 页数:24 大小:113.40KB
下载 相关 举报
C语言程序设计报告个人通讯录.doc_第1页
第1页 / 共24页
C语言程序设计报告个人通讯录.doc_第2页
第2页 / 共24页
C语言程序设计报告个人通讯录.doc_第3页
第3页 / 共24页
C语言程序设计报告个人通讯录.doc_第4页
第4页 / 共24页
C语言程序设计报告个人通讯录.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、南京航空航天大学金城学院C语言程序设计课程设计报告个人通讯录系统学号: 姓名:学号: 姓名:日期:目 录 一、需求分析:3二、程序的主要功能:.3三、程序运行平台:.3四、系统总框架图:.6五、程序类的说明: .6六、模块分析:.8七、比较有特色的函数:.9八、存在的不足与编程体会10九、程序源代码:.10一、需求分析各类存储和通信电子产品都带有通讯录的功能,可以对联系人进行简单的信息管理和存储。二、程序的主要功能 用户信息界面美观、简洁,采用菜单式显示功能选择; 能够从磁盘文件输入和输出数据; 能够对联系人信息进行增、删和改的操作; 能够根据联系人的姓名的拼音顺序从高到低排序;三、程序运行平

2、台VC6.0运行程序“perosnalcontact.exe”,进入登录界面如下 * * * * * * 通讯录文件不存在! * * 通讯录文件已建立! * * * * * * 按任意键进入主菜单 请输入您的数字选择:一、按下任意键进入主菜单 您 好! 欢 迎 使 用 通 讯 录! 1: 添 加 个 人 信 息 2: 查 询 个 人 信 息 3: 删 除 个 人 信 息 4: 修 改 个 人 信 息 5: 信 息 排 序 6: 输 出 全 部 信 息 7: 写 入 文 件 8: 读 取 文 件 9: 删除所有 0: 退 出 请输入您的数字选择:选择1进入添加信息模块: 请输入您要添加的联系人的

3、信息:请输入姓名:选择2进入查询个人信息模块: 欢 迎 使 用 查 询 菜 单 1-按姓名查询 2-按QQ查询 3-返回主菜单 请输入您的选择选择3进入删除个人信息模块 删 除 菜 单 1-删除单个 2-返回主菜单 请输入您的数字选择:选择4.进入修改个人信息模块 1-按姓名修改 请输入您的数字选择:选择5.进入联系人排序模块 排 序 菜 单 1-按姓名排序 2-返回主菜单 请输入您的数字选择:选择6.进入输出信息模块 * 以下为通讯录所有信息* _ 名字: 13213 性别: 2144444444444 手机号码: 44444444444 电子邮件:44444444444 QQ号码:4444

4、44444 _ * 请按任意数字键返回主菜单选择7.进入写入文件模块 通讯录文件已保存 请按任意数字键返回主菜单 选择8.进入读取信息模块 * * * * * * 文件导入成功! * * * * * * 按1显示所有信息,按2回主菜单! 请输入您的数字选择: 选择9.删除所有信息四、 系统总框架图主函数写文件用户操作读文件添加信息删除信息查询信息修改信息五、程序类的说明struct person char name15; char sex2; char celephone22; char email40; long int QQ;per500;/定义一个per数据,有500个元素。六、模块分析

5、1. 添加模块系统将提示用户输入新添加的联系人信息,添加在数据中。2. 查询模块根据用户输入的姓名或者QQ号,然后运用strcmp函数对数组中的元素进行对比,然后输入匹配的信息。3. 删除模块首先由用户输入姓名,运用strcmp函数查找,显示匹配的信息,由用户输入1或2进行判断是否删除。删除之后将num的值-1。定义int型的findmark,和mark用来判断是否有同名信息,由用户判断时候继续删除同名的联系人。4. 个人信息修改模块首先由用户输入姓名,查询到匹配的信息,显示出来,由用户判断是否删除,运行xiugaixinxi(a)函数。5. 排序模块用strcmp函数判断数据中第一个元素和它

6、的后一个元素是否相同,不相同则把数据两个元素进行交换。6. 写文件模块 程序结束时将所有联系人的信息写入到“per.bin”文件中。7. 显示所有信息 用for循环将从0到num的所有信息全部打印在屏幕上。8. 读文件模块 程序开始时从“per.bin”读取所有联系人信息。9. 删除所有信息模块 由用户输入航班号和订票数目,系统判断能满足用户需求则输出“订票成功”信息。先尝试读取文件信息,若读取失败,则输出信息已删除,否则将0赋给num,显示信息已删除。七、比较有特色的函数void newrecord()/*添加纪录*/ int a; system(cls); system(color 2a)

7、; loop: printf(nnnntt 请输入您要添加的联系人的信息: n); printf(n请输入姓名:n);name: scanf(%s,&pernum.name); if(strlen(pernum.name)15) printf(n对不起!您的输入有误!请重新输入); goto name; 八、存在的不足与对策、编程体会 添加个人信息的方式过于麻烦,可以使用链表来代替数据,方便临时添加信息。九、参考文献百度文库十、程序源代码/制作一个个人通讯录,用来保存联系人的电话,性别,姓名,QQ号,Eamil地址。/组成部分:1.显示界面2.信息写入磁盘,从磁盘中读取信息3.对联系人信息进行

8、删改4.根据联系人的姓名进行排序#include #include #include #include struct person char name15; char sex2; char celephone22; char email40; long int QQ;per500;/定义一个per数据,有500个元素。int num=0;/*外部变量num为文件中的纪录数*/FILE *fp;void mainmenu();/*主菜单*/void newrecord();/新添纪录*/void xiugaimenu();/*修改菜单*/void xiugaibyname();/*按姓名修改*/

9、void searchmenu();/*查询菜单*/ void searchbyname();/*按姓名查询*/void searchbyQQ();/*按QQ号查询*/void deletemenu();/*删除菜单*/void deleteall();/*删除所有信 息*/ void deleteone();/*删除单个*/void showall();/*输 出 全 部 信 息*/ void readfromfile();/*读取文件*/ void writetofile();/*写入文件*/ /void deletebyname();/*按姓名删除*/void listbyname();

10、/*按姓名排序*/void listmenu();/*排序菜单*/void deleteall();/*删除所有信息*/void main()/*主函数*/ system(cls);/清空屏幕readfromfile(); /读取文件while (1) mainmenu(); /主菜单 void mainmenu()/*主菜单函数*/ int a; system(cls); system(color 2a);/更改背景板为绿色printf(nt 您 好! 欢 迎 使 用 通 讯 录!n);printf( 1: 添 加 个 人 信 息n);printf( 2: 查 询 个 人 信 息n);pri

11、ntf( 3: 删 除 个 人 信 息n);printf( 4: 修 改 个 人 信 息n);printf( 5: 信 息 排 序n);printf( 6: 输 出 全 部 信 息n);printf( 7: 写 入 文 件n);printf( 8: 读 取 文 件n);printf( 9: 删除所有n);printf( 0: 退 出 n);printf(n 请输入您的数字选择: n);loop1: scanf(%d,&a); switch (a) case 1:newrecord();break; case 2:searchmenu();break; case 3:deletemenu();b

12、reak; case 4:xiugaimenu();break;case 5:listmenu();break;case 6:showall();break;case 7:writetofile();break; case 8:readfromfile();break;case 9:deleteall();break;case 0:exit(0); default:printf(n对不起!您的输入有误!请重新输入: n);goto loop1; void newrecord()/*添加纪录*/ int a; system(cls); system(color 2a); loop: printf

13、(nnnntt 请输入您要添加的联系人的信息: n); printf(n请输入姓名:n);name: scanf(%s,&pernum.name); if(strlen(pernum.name)15) printf(n对不起!您的输入有误!请重新输入); goto name; printf(n请输入性别:n);sex: scanf(%s,&pernum.sex); if(strlen(pernum.sex)=0) printf(n对不起!您的输入有误!请重新输入n); goto sex; printf(n请输入手机号码:n); celephone: scanf(%s,&pernum.celep

14、hone); if(strlen(pernum.celephone)!=11) printf(n对不起!您的输入有误!请重新输入n); goto celephone; printf(n输入电子邮箱:); email:scanf(%s,&pernum.email); if(strlen(pernum.email)30|strlen(pernum.email)1600000000|pernum.QQ10000000) printf(n对不起!您的输入有误!请重新输入n); goto QQ; num+; printf(n是否继续添加?n); printf(n请按1和2(1代表继续;2代表不继续)n)

15、; printf(n请输入您的选择 n ); scanf(%d,&a); if(a=1) goto loop; else return; void searchmenu()/*查询菜单*/ int a; system(cls);system(color 2a); printf(ntt 欢 迎 使 用 查 询 菜 单); printf(ntt 1-按姓名查询);printf(ntt 2-按QQ查询); printf(ntt 3-返回主菜单); printf(ntt); printf(n请输入您的选择 n);scanf(%d,&a); switch (a) case 1:searchbyname(

16、);break; case 2:searchbyQQ();break;case 3:mainmenu();break; void searchbyQQ()/*按QQ查询*/ int mark=0; int i,j; long int QQ; printf(ntt 按QQ号码查找 n); printf(n请输入QQ号码:); scanf(%ld,&QQ); for(i=0;inum;i+) if(peri.QQ=QQ) printf(ntt 以下是您查找的联系人的信息 ); printf(ntt_); printf(ntt名字: %s,peri.name); printf(ntt性别: %s,p

17、eri.sex); printf(ntt手机号码: %s,peri.celephone);printf(ntt电子邮件:%s,peri.email);printf(nttQQ号码:%ld,peri.QQ);printf(ntt_); printf(ntt请按任意数字键返回主菜单); mark+; scanf(%d,&j); return; if (mark=0) printf(ntt对不起!没有该联系人的信息!); printf(ntt请按任意数字键返回主菜单); scanf(%d,&j); return; void searchbyname()/*按姓名查询*/ int mark=0; in

18、t i,j,findmark=0; int a=0;char name15; printf(n 按姓名查找 ); printf(n请输入姓名:); scanf(%s,name); for(i=a;inum;i+) if (strcmp(peri.name,name)=0) findmark+;printf(ntt 以下是您查找的联系人的信息 ); printf(ntt_); printf(ntt名字: %s,peri.name); printf(ntt性别: %s,peri.sex); printf(ntt手机号码: %s,peri.celephone);printf(ntt电子邮件:%s,p

19、eri.email);printf(nttQQ号码:%ld,peri.QQ);printf(ntt_); if (i+1)num) printf(n是否继续查找相同名字的联系人的信息?(1代表继续;2代表不继续)n); scanf(%d,&j);if (j=1) a=i; mark+;continue; else break; else printf(n请按任意数字键返回主菜单); scanf(%d,&j); return; if(mark!=0) printf(n对不起! 没有相同名字的该联系人的信息!!); printf(n请按任意数字键返回主菜单); scanf(%d,&j); retu

20、rn; else if(findmark=0) printf(n对不起!没有该联系人的信息!); printf(n请按任意数字键返回主菜单); scanf(%d,&j); return; void deletebycelephone()/*按手机号码删除*/ int i,j,h,m; int deletemark=0; char celephone11; printf(ntt请输入要删除的联系人的手机号码:); scanf(%s,celephone); for(i=0;inum;i+) if(strcmp(peri.celephone,celephone)=0) deletemark+;pri

21、ntf(ntt以下是您要删除的联系人的纪录:);printf(ntt_); printf(ntt名字: %s,peri.name); printf(ntt性别: %s,peri.sex); printf(ntt手机号码: %s,peri.celephone);printf(ntt电子邮件:%s,peri.email);printf(nttQQ号码:%ld,peri.QQ);printf(ntt_); printf(ntt是否删除?(1代表删除;2代表不删除)n); printf(n 请输入您的数字选择: n);scanf(%d,&h); if(h=1) for (j=i;jnum-1;j+)

22、/*纪录移动,从per数组中删除之*/ perj=perj+1; num-; printf(ntt删除成功); printf(n是否继续删除?(1代表继续;2代表不继续)n); printf(n 请输入您的数字选择: n);scanf(%d,&h); if(h=1) deletebycelephone(); if(deletemark=0) printf(ntt对不起!没有该联系人的纪录!); printf(ntt是否继续删除?(1代表继续;2代表不继续)n); printf(n 请输入您的数字选择: n);scanf(%d,&m); if(m=1) deletebycelephone();

23、void deletemenu()/*删除菜单*/ int i,j; system(cls);system(color 3b); if(num=0) printf(ntt对不起!文件中无任何纪录!);printf(ntt请先添加个人信息!);printf(ntt请按任意数字键返回主菜单); scanf(%d,&j); return; else printf(ntt 删 除 菜 单 ); printf(ntt 1-删除单个 ); printf(ntt 2-返回主菜单 ); printf(ntt ); printf(ntt请输入您的数字选择: ); loop4: scanf(%d,&i); swi

24、tch (i) case 1:deleteone();break; case 2:mainmenu();break; default:printf(n对不起!您的输入有误!请重新输入: n);goto loop4; void deleteone()/*删除单个*/ int i; printf(ntt1-按手机号码删除 2-按姓名删除); printf(ntt请输入您的选择:); loop5:scanf(%d,&i); switch (i) case 1:deletebycelephone();break; case 2:deletebyname();break; default:printf(

25、n对不起!您的输入有误!请重新输入: n);goto loop5; void deletebyname()/姓名删除*/ int a=0; int findmark=0; int i,j,k; int deletemark=0; char name15; printf(ntt请输入您要删除的联系人的姓名:); scanf(%s,name); for (i=a;inum;i+) if (strcmp(peri.name,name)=0) printf(ntt以下是您要删除的联系人的纪录:); findmark+; printf(ntt_); printf(ntt名字: %s,peri.name)

26、; printf(ntt性别: %s,peri.sex); printf(ntt手机号码: %s,peri.celephone);printf(ntt电子邮件:%s,peri.email);printf(nttQQ号码:%ld,peri.QQ);printf(ntt_); printf(ntt是否删除?(1代表删除;2代表不删除)n);printf(ntt请输入您的数字选择: ); scanf(%d,&k); if(k=1) for (j=i;jnum-1;j+) /*纪录移动,从per数组中删除之*/ perj=perj+1; num-; deletemark+; printf(ntt删除成

27、功); if(i+1)num) printf(ntt是否继续删除相同姓名的联系人的信息?(1代表删除;2代表不删除)); printf(ntt请输入您的数字选择: ); scanf(%d,&k); if(k=1) a=i; findmark+;continue; printf(ntt是否继续删除?(1代表继续;2代表不继续)); printf(ntt请输入您的数字选择: ); scanf(%d,&k); if(k=1) deleteone(); elsebreak; else continue; if(deletemark=0)&(findmark=0) printf(ntt对不起!没有该联系

28、人的纪录!); printf(ntt是否继续删除?(1代表继续;2代表不继续)); printf(n 请输入您的数字选择: n);scanf(%d,&k);if(k=1) deleteone(); else if(findmark!=0) printf(ntt对不起!没有重名信息!); printf(ntt是否继续删除?(1代表继续;2代表不继续)); printf( n 请输入您的数字选择: n);scanf(%d,&k); if(k=1) deleteone(); void xiugaimenu()/*修改菜单*/int i,j; system(cls);system(color 3f);

29、if(num=0) printf(ntt对不起!文件中无任何纪录!); printf(ntt请按任意数字键返回主菜单); scanf(%d,&j); return; else printf(ntt 1-按姓名修改 n); printf( n 请输入您的数字选择: n);loop6:scanf(%d,&i); switch (i) case 1:xiugaibyname();break; default:printf(n对不起!您的输入有误!请重新输入: n);goto loop6; void xiugaixiangmu(int a)/*修改项目*/int i;system(cls); system(color c0);printf(ntt 请输入您要修改的项目 );printf(nttn);printf(ntt1-手机号码n);printf(ntt2-姓名n);printf(ntt3-QQ号码n

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服