C语言通讯X录程序设计.docx
- 文档编号:29725087
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:62
- 大小:360.24KB
C语言通讯X录程序设计.docx
《C语言通讯X录程序设计.docx》由会员分享,可在线阅读,更多相关《C语言通讯X录程序设计.docx(62页珍藏版)》请在冰豆网上搜索。
C语言通讯X录程序设计
《程序设计综合实习[软]》
实习报告
学号
159074210
姓名
吴师庆
班级
软152
指导教师
潘祥
安徽工业大学
2016年9月
课程设计题目:
个人通讯录管理系统
一、需求分析
个人通讯录管理系统的制作,为了实现数据的输入、输出、修改、删除、查询、存、取功能。
程序的基本功能为:
1.建立联系人信息,包括姓名、电话、地址、QQ;
2.添加新的联系人信息(通讯录信息输入功能);
3.可按姓名、电话、地址、QQ排序输出显示通讯录的所有信息(显示通讯录信息功能);
4.按姓名、电话、地址、QQ查询某个联系人的信息(通讯录记录查询功能);
5.输入联系人姓名以修改某个联系人的信息(修改通讯录信息功能);
6.按姓名删除某个联系人的信息(删除通讯录信息功能);
7.将数据以文件的形式存储在磁盘上(保存通讯录信息功能)。
二、总体设计
各模块流程框图
1.main()
2.voidinput(PEOPLEpHead,intx)
3.voidsearch(PEOPLEpHead)
4.intshow(PEOPLEpHead)
开始
选显示排序依据
调用
address_
sort()
函数
调用
phone_
sort()
函数
调用
name_
sort()
函数
调用
QQ_
sort()
函数
其他键
4
3
2
1
按姓名顺序显示
按电话顺序显示
按地址顺序显示
按QQ顺序显示
输入错误
输出所有联系人信息
结束
5.voidmodify(PEOPLEpHead)
6.voiddelete_name(PEOPLEpHead,intx)
7.voidsave(PEOPLEpHead)
8.voidquit()
三、详细设计
1.新建联系人功能主控函数voidinput(PEOPLEpHead,intx)
实现添加新的联系人的功能。
voidinput(PEOPLEpHead,intx)
{
inti=0;
PEOPLEp=pHead;
while(p!
=NULL&&i { p=p->pNext; ++i; } PEOPLEpNew=(PEOPLE)malloc(sizeof(people)); if(pNew==NULL) { printf("动态分配内存失败! "); exit(-1); } printf("\n*************************************************************************\n\n"); printf("\t\t请创建并添加联系人信息\n\n"); printf("\t\t请输入联系人姓名: "); gets(pNew->name); printf("\t\t请输入联系人电话: "); gets(pNew->phone); printf("\t\t请输入联系人地址: "); gets(pNew->address); printf("\t\t请输入联系人QQ: "); gets(pNew->QQ); printf("\n\t\t成功添加了联系人信息! ! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); PEOPLEq=p->pNext; p->pNext=pNew; pNew->pNext=q; } 2.查询功能主控函数voidsearch(PEOPLEpHead) 实现可按姓名、电话、地址、QQ查询某联系人的功能,会分别调用相应的查询函数。 voidsearch(PEOPLEpHead) { intnum; printf("\n*************************************************************************\n\n"); printf("\t\t\t1.按姓名查找\n"); printf("\t\t\t2.按电话查找\n"); printf("\t\t\t3.按地址查找\n"); printf("\t\t\t4.按QQ查找\n"); printf("\n\t\t选择你需要操作的功能号码(1-4): "); num=getchar(); getchar(); switch(num) { case'1': name_search(pHead); break; case'2': phone_search(pHead); break; case'3': address_search(pHead); break; case'4': QQ_search(pHead); break; default: printf("\t\t\t输入错误! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); break; } } 3.显示功能主控函数intshow(PEOPLEpHead) 先调用排序函数,再按相应顺序将全部联系人的信息显示到屏幕。 intshow(PEOPLEpHead) { intnum; printf("\n*************************************************************************\n\n"); printf("\t\t\t1.按姓名顺序显示\n"); printf("\t\t\t2.按电话顺序显示\n"); printf("\t\t\t3.按地址顺序显示\n"); printf("\t\t\t4.按QQ顺序显示\n"); printf("\n\t\t选择你需要操作的功能号码(1-4): "); num=getchar(); getchar(); switch(num) { case'1': name_sort(pHead); break; case'2': phone_sort(pHead); break; case'3': address_sort(pHead); break; case'4': QQ_sort(pHead); break; default: printf("\t\t\t输入错误! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); return0; } intlen=number(pHead); PEOPLEp=pHead->pNext; inti; printf("\n*************************************************************************\n"); printf("====================→用户信息记录表←==============================="); printf("\n*************************************************************************\n\n"); if(p! =NULL) { for(i=0;i { printf("\t\t联系人姓名: %s\n",p->name); printf("\t\t联系人电话号码: %s\n",p->phone); printf("\t\t联系人地址: %s\n",p->address); printf("\t\t联系人QQ: %s\n",p->QQ); printf("\n"); if(i! =0&&(i+1)%5==0) { printf("\n\t\t\t输入任意键显示下一页\n"); printf("\n*************************************************************************\n"); getchar(); } } printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } else { printf("\t\t对不起! ! 没有任何人的记录! ! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } return0; } 4.修改功能主控函数voidmodify(PEOPLEpHead) 输入要修改联系人的姓名,可显示该联系人信息,并输入该联系人新的信息。 voidmodify(PEOPLEpHead) { inti; intmark=0; intlen=number(pHead); charname[25]; PEOPLEp=pHead->pNext; printf("\n*************************************************************************\n"); printf("====================→用户信息修改功能←============================="); printf("\n*************************************************************************\n\n"); printf("\t\t输入要修改联系人的姓名: "); gets(name); if(p! =NULL) { for(i=1;i<=len;++i,p=p->pNext) { if(strcmp(name,p->name)==0) { printf("*************************以下是您要修改的用户信息******************\n\n"); printf("联系人姓名: %s\n",p->name); printf("联系人电话号码: %s\n",p->phone); printf("联系人地址: %s\n",p->address); printf("联系人QQ: %s\n",p->QQ); printf("\n*************************************************************************\n\n"); ++mark; } break; } if(mark>0) { printf("\t\t请输入修改联系人信息\n\n"); printf("\t\t请输入联系人姓名: "); scanf("%s",p->name); printf("\t\t请输入联系人电话: "); scanf("%s",p->phone); printf("\t\t请输入联系人地址: "); scanf("%s",p->address); printf("\t\t请输入联系人QQ: "); scanf("%s",p->QQ); getchar(); printf("\n\t\t成功修改了联系人信息! ! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } else { printf("\n\t\t对不起! ! 没有该用户的记录! ! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } } else { printf("\n\t\t对不起! ! 没有任何人的记录! ! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } } 5.删除功能主控函数voiddelete_name(PEOPLEpHead,intx) 输入要删除联系人的姓名,可显示该联系人信息,并提示是否确认删除,确认后会删除该联系人信息。 voiddelete_name(PEOPLEpHead,intx) { inti,pos; intmark=0; intlen=number(pHead); charname[25]; PEOPLEp=pHead->pNext; printf("\n*************************************************************************\n"); printf("====================→用户信息删除功能←============================="); printf("\n*************************************************************************\n\n"); printf("\t\t输入要删除联系人的姓名: "); gets(name); if(p! =NULL) { for(i=1;i<=len;++i,p=p->pNext) { if(strcmp(name,p->name)==0) { printf("*************************以下是您要删除的用户信息************************\n\n"); printf("num: %d\n",mark+1); printf("联系人姓名: %s\n",p->name); printf("联系人电话号码: %s\n",p->phone); printf("联系人地址: %s\n",p->address); printf("联系人QQ: %s\n",p->QQ); printf("\n*************************************************************************\n"); pos=i; ++mark; } } if(mark>0) { printf("\n\t\t是否确定删除? (y/n)"); if(getchar()=='y') { getchar(); Delete(pHead,pos);//删除节点 printf("\n\t\t删除成功! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } else { printf("\n\t\t已取消\n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } } else { printf("\n\t\t对不起! ! 没有该用户的记录! ! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } } else { printf("\n\t\t对不起! ! 没有任何人的记录! ! \n\n"); printf("请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } } 6.保存功能主控函数voidsave(PEOPLEpHead) 将所有联系人的信息保存为文本文件,用户可随时打开txt文件查看所有联系人信息。 voidsave(PEOPLEpHead)//保存函数 { FILE*fp; PEOPLEp=pHead->pNext; fp=fopen("address_list.txt","w"); fprintf(fp,"*************************************************************************\n\n"); fprintf(fp,"==============→用户信息记录表←================\n"); while(p! =NULL) { fprintf(fp,"\n====================================================\n\n"); fprintf(fp,"联系人姓名: %s\n",p->name); fprintf(fp,"联系人电话号码: %s\n",p->phone); fprintf(fp,"联系人地址: %s\n",p->address); fprintf(fp,"联系人QQ: %s\n",p->QQ); p=p->pNext; } fprintf(fp,"\n\n*************************************************************************\n"); fclose(fp); printf("\n\t恭喜你! ! 成功储存,你能在address_list.txt找到相应纪录\n"); printf("\n请按Enter键继续"); printf("\n*************************************************************************\n"); getchar(); } 7.退出功能主控函数voidquit() 退出通讯录系统。 voidquit() { printf("\n\t\t感谢使用个人通讯录管理系统,再见! \n\n"); exit(0); } 四、调试与测试 1.显示函数intshow(PEOPLEpHead);原本设计为void型函数,但当用户没有输入任何联系人信息时,程序在显示“没有任何人信息后”,还会继续执行该函数,导致该信心重复输出。 后改为int型,用return0;控制函数结束运行。 2.删除函数voiddelete_name(PEOPLEpHead,intx);原本没有x参数。 但在main函数中,定义了i来记录联系人个数,调用voidinput(PEOPLEpHead,intx)函数时,联系人数i会加一,但删除时并没有对i进行操作,导致i只加不减,在运行删除功能后再
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 通讯 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)