个人通讯录管理c语言课程设计 2.docx
- 文档编号:25796591
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:23
- 大小:88.51KB
个人通讯录管理c语言课程设计 2.docx
《个人通讯录管理c语言课程设计 2.docx》由会员分享,可在线阅读,更多相关《个人通讯录管理c语言课程设计 2.docx(23页珍藏版)》请在冰豆网上搜索。
个人通讯录管理c语言课程设计2
安徽工业大学
《C语言课程设计》实习综合报告
课题名称:
个人通讯录管理系统
实习成员:
王刚
学号:
109074372
专业班级:
网络工程103班
指导教师:
郑啸老师
一.问题描述……………………………………………..2
二.各功能流程图与设计思路…………………………..3
2.1显示模块……………………………………….……3
2.2查找模块……………………………………………4..
2.3添加模块…………………………………………..…6
2.4删除模块………………………………………..……8
2.5修改模块…………………………………………..…9
三、文件的读取与保存…………………………………….11
四、程序源代码……………………………………….……12
五、调试与运行结果…………………………………….…18
六、计算机学院课程设计评定意见……………………….24
一.问题描述
设计通讯录包含以下功能:
(1)通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
(2)输入功能:
可以一次完成若干条信息的输入。
(3)显示功能:
完成全部通讯录信息的显示。
(4)查找功能:
可以按姓名等多种方式查找通讯信息。
(5)增加、删除、修改功能:
完成通讯录信息的多种更新。
二.各功能流程图与设计思路
Menu菜单:
运用switch()进行操作:
case'1':
显示功能,list()函数
说明:
利用for循环,逐个输出已保存的内容
代码如下:
//*****************显示通讯录中的内容*************
voidlist()
{printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");
for(i=0;i {if(rec[i].name[0]) {printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); } }printf("\t\t\t----------------END--------------\n"); } case'2': 查找功能,search()函数 说明: 先用switch让操作者选择是按姓名查找还是按编号查找,然后再按操作者的输入,逐个判断是否有操作者要查的联系人信息,若有则输出此人信息,若没有则输出“通讯录中没有您要查找的联系人” 代码如下: //*****************查找联系人的信息******************** voidsearch() {charxm[10]; charch; intd; printf("→1.按姓名查找\n"); printf("→2.按编号查找\n"); printf("请选择...\n"); ch=getchar(); getchar(); switch(ch) {case'1': printf("输入查找的姓名\n"); gets(xm); for(i=0;i {if(strcmp(xm,rec[i].name)==0) {printf("\t\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆☆\n\n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); break;} } if(i==m) printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n"); break; case'2': printf("输入查找的编号\n"); scanf("%d",&d); for(i=0;i {if(d==rec[i].num) {printf("\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆\n\n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); break; } } if(i==m) printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n"); break; default: printf("输入错误! ! "); } getchar(); } case'3': 增加功能,app()函数 说明: 按照屏幕的提示,依次输入要添加联系人的各项信息,并保存到结构体当中,输入完成后,提示是否继续添加,若是,则进入循环,若否,则结束。 代码如下: //*******************添加联系人******************* voidapp() {charan; puts("当前通讯录中的内容\n"); list(); do {rec[m].num=m+1; printf("请按照提示输入新添加记录的各项信息\n"); printf("姓名: "); gets(rec[m].name); printf("\n电话: "); gets(rec[m].tel); printf("\n手机: "); gets(rec[m].celtel); printf("\n工作单位: "); gets(rec[m].dw); printf("\nEMAIL: "); gets(rec[m].email); printf("\nQQ: "); gets(rec[m].qq); puts("\n这是新添加联系人的信息! \n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[m].num,rec[m].name, rec[m].tel,rec[m].celtel,rec[m].dw,rec[m].email,rec[m].qq); m++; puts("\t\t\t☆☆☆☆☆新纪录输入完成! ☆☆☆☆☆\n"); puts("☆继续添加吗? (y/n)"); an=getchar(); getchar(); }while(an=='y'); } case'4': 删除功能,dele()函数; 说明: 输入要删除的编号,判断是否存在,若不存在就要重新输入,若存在,则利用循环进行删除操作,从要删除的编号开始,逐个由后一项往前一项覆盖。 代码如下: //*****************删除联系人的记录******************** voiddele() {inta; intn=0; list(); do {n++; if(n>1) {printf("没有此记录,请重新输入...\n");} printf("删除几号记录? \n"); scanf("%d",&a); }while(a>m&&a>0||a<0); if(a! =m+1) {for(i=a;i {rec[i-1]=rec[i]; rec[i-1].num=i; } m--; list(); printf("\t\t\t☆☆☆☆☆完成删除! ☆☆☆☆☆\n"); } getchar(); } case'5': 修改功能,correct()函数; 说明: 输入修改的编号,判断是否存在,若存在则输出此人初始信息,再按提示输入修改后的新信息,若不存在,则结束操作。 代码如下: //*******************修改联系人的信息***************** voidcorrect() {charxm[10]; boolk=1; list(); printf("输入要修改联系人的姓名: "); gets(xm); for(i=0;i {if(strcmp(xm,rec[i].name)==0) {k=0; printf("\n这是您要修改联系人的初始信息\n\n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); printf("请输入修改后的电话号码: "); gets(rec[i].tel); printf("\n请输入修改后的手机: "); gets(rec[i].celtel); printf("\n请输入修改后的工作单位: "); gets(rec[i].dw); printf("\n请输入修改后的EMAIL: "); gets(rec[i].email); printf("\n请输入修改后的QQ: "); gets(rec[i].qq); list(); printf("\t\t\t☆☆☆☆☆修改完成! ☆☆☆☆☆\n"); break;} } if(k) printf("输入有误,通讯录中没有此联系人信息\n"); } 三.文件的读取与保存 读取: //***************从文件读记录到通讯录中***************** voidload() {FILE*fp; if((fp=fopen("tongxunlu.txt","rb"))==NULL) {printf("Can'topenfile\n"); exit(0);} for(i=0;i {if(fread(&rec[i],sizeof(structrecord),1,fp)! =1) {if(feof(fp))break; printf("Filereaderror! \n");} rec[i].num=i+1; m++; } list(); printf("\t\t\t☆☆☆☆☆读取成功! ☆☆☆☆☆\n"); fclose(fp); } 保存: //******************保存通讯录内容到文件中************* voidsave() {FILE*fp; if((fp=fopen("tongxunlu.txt","wb"))==NULL) {printf("Can'topenfile"); exit(0);} list(); for(i=0;i if(fwrite(&rec[i],sizeof(structrecord),1,fp)! =1) printf("Filewreteerror! \n"); fclose(fp); printf("\t\t\t☆☆☆☆☆保存成功! ☆☆☆☆☆\n"); } 四.程序源代码 #include #include #include #defineSIZE100 inti,m=0;//m为当前通讯录中的记录数 charmenu();//选单 voidlist();//显示 voidsearch();//查找 voidapp();//增加 voiddele();//删除 voidcorrect();//修改 voidsave();//保存 voidload();//读入 structrecord//结构体包含的联系人信息 {intnum;//在通讯录中的编号 charname[10];//联系人姓名 chartel[12];//联系人电话号码 charceltel[12];//联系人手机号码 chardw[20];//联系人工作单位 charemail[20];//联系人邮箱 charqq[12];//联系人QQ }rec[SIZE]; voidmain() {charchoice; charan; while (1) {choice=menu(); switch(choice) {case'1': printf("显示通讯录中的内容\n"); list();break; case'2': printf("查找联系人\n"); search();break; case'3': printf("增加联系人记录\n"); app();break; case'4': printf("删除记录\n"); dele();break; case'5': printf("修改联系人信息\n"); correct();break; case'6': printf("保存通讯录到TXT文件\n"); save();break; case'7': printf("从TXT文件中读取记录\n"); load();break; case'8': printf("即将退出通讯录管理系统...\n"); printf("是否保存刚才进行的操作y/n? \n"); an=getchar(); if(an=='y') {save();} printf("(按任意键退出)"); break; default: printf("输入错误! ! "); } if(choice=='8')break; printf("\n按任意键返回....\n");getchar(); } } //*********************菜单********************** charmenu() {charc; printf("------------☆欢迎使用☆------------\n\n"); printf("*************简易通讯录*************\n"); printf("☆1.显示通讯录\n"); printf("☆2.查找联系人\n"); printf("☆3.增加联系人\n"); printf("☆4.删除联系人\n"); printf("☆5.修改通讯录\n"); printf("☆6.保存到文件\n"); printf("☆7.从文件读取\n"); printf("☆8.退出此系统\n"); printf("************************************\n"); printf("\n请选择………\n\n"); c=getchar(); getchar(); returnc; } //*****************显示通讯录中的内容************* voidlist() {printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); for(i=0;i {if(rec[i].name[0]) {printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); } }printf("\t\t\t----------------END--------------\n"); } //*******************添加联系人******************* voidapp() {charan; puts("当前通讯录中的内容\n"); list(); do {rec[m].num=m+1; printf("请按照提示输入新添加记录的各项信息\n"); printf("姓名: "); gets(rec[m].name); printf("\n电话: "); gets(rec[m].tel); printf("\n手机: "); gets(rec[m].celtel); printf("\n工作单位: "); gets(rec[m].dw); printf("\nEMAIL: "); gets(rec[m].email); printf("\nQQ: "); gets(rec[m].qq); puts("\n这是新添加联系人的信息! \n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[m].num,rec[m].name, rec[m].tel,rec[m].celtel,rec[m].dw,rec[m].email,rec[m].qq); m++; puts("\t\t\t☆☆☆☆☆新纪录输入完成! ☆☆☆☆☆\n"); puts("☆继续添加吗? (y/n)"); an=getchar(); getchar(); }while(an=='y'); } //*****************查找联系人的信息******************** voidsearch() {charxm[10]; charch; intd; printf("→1.按姓名查找\n"); printf("→2.按编号查找\n"); printf("请选择...\n"); ch=getchar(); getchar(); switch(ch) {case'1': printf("输入查找的姓名\n"); gets(xm); for(i=0;i {if(strcmp(xm,rec[i].name)==0) {printf("\t\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆☆\n\n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); break;} } if(i==m) printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n"); break; case'2': printf("输入查找的编号\n"); scanf("%d",&d); for(i=0;i {if(d==rec[i].num) {printf("\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆\n\n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); break; } } if(i==m) printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n"); break; default: printf("输入错误! ! "); } getchar(); } //*****************删除联系人的记录******************** voiddele() {inta; intn=0; list(); do {n++; if(n>1) {printf("没有此记录,请重新输入...\n");} printf("删除几号记录? \n"); scanf("%d",&a); }while(a>m&&a>0||a<0); if(a! =m+1) {for(i=a;i {rec[i-1]=rec[i]; rec[i-1].num=i; } m--; list(); printf("\t\t\t☆☆☆☆☆完成删除! ☆☆☆☆☆\n"); } getchar(); } //*******************修改联系人的信息***************** voidcorrect() {charxm[10]; boolk=1; list(); printf("输入要修改联系人的姓名: "); gets(xm); for(i=0;i {if(strcmp(xm,rec[i].name)==0) {k=0; printf("\n这是您要修改联系人的初始信息\n\n"); printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); printf("请输入修改后的电话号码: "); gets(rec[i].tel); printf("\n请输入修改后的手机: "); gets(rec[i].celtel); printf("\n请输入修改后的工作单位: "); gets(rec[i].dw); printf("\n请输入修改后的EMAIL: "); gets(rec[i].email); printf("\n请输入修改后的QQ: "); gets(rec[i].qq); list(); printf("\t\t\t☆☆☆☆☆修改完成! ☆☆☆☆☆\n"); break;} } if(k) printf("输入有误,通讯录中没有此联系人信息\n"); } //******************保存通讯录内容到文件中************* voidsave() {FILE*fp; if((fp=fopen("tongxunlu.txt","wb"))==NULL) {printf("Can'topenfile"); exit(0);} list(); for(i=0;i if(fwrite(&rec[i],sizeof(structrecord),1,fp)! =1) printf("Filewreteerror! \n"); fclo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人通讯录管理c语言课程设计 个人 通讯录 管理 语言 课程设计