C语言程序设计课程设计-通讯录管理系统
C语言程序设计课程设计---通讯录管理系统

C语言程序设计实习报告题目:通讯录管理系统院系名称电子与信息工程院专业名称电子信息工程班级电子0902班内序号学生姓名指导教师时间2010年6月21日至2010年 7月2日一、课程设计目的.(1)加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言语法规则。
从实际问题出发,学会自己动手设计,编制结构清晰、风格良好、数据结构适当的C语言程序,从而提高自己根据实际问题设计编写程序的能级,进而能具备解决综合性实际问题的能力。
(2)通过课程设计了解并掌握C语言程序设计的方法,熟悉C程序设计的开发环境及C程序的调试过程。
二、课程设计内容用所学过的C语言知识(文件,结构体,函数,指针)编程一个通讯录管理系统的程序。
三、需求分析对所设计的通讯录管理系统的程序,要求具有以下这些功能:(1)通过键盘输入某位学生的信息。
信息包含,姓名,性别,年龄,班级,QQ,电话,学号,地址。
(2)给定学号,显示某位学生的信息;(3)给定某个班级的班号,显示该班所有学生的通讯录信息;(4)显示全部通讯录信息;(5)给定某位学生的学号,修改该学生的通讯录信息;(6)给定某位学生的学号,删除该学生的通讯录信息;(7)能够对学号进行升序排序;(8)用文件的形式将录入的数据进行存储,并从其中读取数据。
四、概要设计1.系统结构图根据设计要求,进行分析,给出系统结构图,即各功能的模块图,结构图如下2.功能模块说明对各个模块进行功能的描述。
(1)输入模块:实现学生基本信息的基本输入如姓名,性别,年龄,班级,QQ,电话,学号,地址。
(2)插入模块:实现对一个学生信息的插入。
(3)查询模块:根据需要,输出某一个学生的信息。
(4)浏览模块:输入班级号查询该班级中所有学生的信息,或浏览全部学生信息。
(5)修改模块:根据需要,修改指定学生的指定信息。
(6)删除模块:删除某个学生的全部信息。
(7)排序模块:①按学号排序,②按班级排序。
五、详细设计及运行结果六、调试情况,设计技巧及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
c语言课程设计--通讯录管理系统

通讯录管理系统
结构包含一个记录的基本数据如下:
编号(number),姓名(name),电话号码(telephon),住址(address)。
编号为整型(int),从1开始连续编号,姓名为长度为15的字符数组char name[10],电话号码为长度为12的数字字符数组,住址为为长度为20字符数组。
要求完成以下功能:
(1)程序运行时判断是否存在数据文件(addrlist.dat),若没有则从键盘输入有关信息创建到数据文件,否则载入文件数据。
要求有10个以上的记录,电话号码为11的手机号码,数据采用二进制文件存储。
(2)浏览记录(每屏10个)
(3)根据姓名查询
(4)在当前记录的末尾插入一条新记录
(5)根据编号修改记录
(6)按姓名或电话排序
(7)删除一条记录。
(移动后面的记录覆盖实现)
【注意事项】
1)在执行插入、删除时,编号自动修改,记录总数+1、-1;
2)在输入姓名、电话和地址时,要进行越界处理;
3)在使用指针时,要进行指针初始化和指针检测处理。
【准备工作】
编程前首先要画出各模块间的调用关系图,确定所需要的模块并命名(即函数),然后画出主模块的流程图。
主模块流程图:。
c语言课程设计报告---通讯录管理系统

一、实习题目通讯录管理系统二、需求分析问题描述:本程序属于非数值计算型算法设计,学生需要设计出图书馆模拟系统所需要的基本功能,并设计简单的界面(无需图形化)。
实现功能:1、通过提示菜单选择可以进行的操作2、将图书的信息存入文件中,并命名为BookInfo.txt3、将图书借阅情况信息存入文件中,并命名为SendInfo.txt4、在本系统中可以进行管理系统包含的基本操作,其中包括:a)查看所有图书的信息;b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息;c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置;d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在;e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt文件中。
5、图书基本信息包括图书编号、书名、作者、出版社和价钱这些简单信息。
6、图书信息文件中每一行存放一本图书的信息。
7、借阅信息文件中每一行存放一本书的借阅情况。
知识点:本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。
说明:(1)当程序执行的时候所读取的图书信息文件必须存在,否则可能会出现错误。
(2)图书信息文件中存放图书信息的时候是按照行来存放的,即一行一本书。
(3)借阅信息文件中存放学生借阅情况是按照行来存放的,即一行存放一个学号和一个图书编号。
(4)程序执行的基本过程为:a)在所有操作之前,也就是加载操作菜单之前,先从文件中读取所有图书的信息,并存入一个数组中,此时数组可以定义为包含100个元素;b)然后根据菜单所进行的所有操作都是对当前数组进行操作,此时也就是对数组的查找、定位、添加、修改、删除操作;c)当退出系统的时候再将当前数组中的所有元素按照一本图书一行的方式写回图书信息文件中,此时注意选择覆盖方式,这样就可以将原来的所有数据覆盖,只保留最新的数据;当按行读取图书信息文件的时候,有可能最后一行只有一个回车,这时候实际上所读取的数据为空字符串,需要对此作判断,如果是空字符串,则说明已经没有人员,就必须将当前读入的空字符串写入数组中。
C语言课程设计通讯录系统

联系人的数据结构定义
联系人信息:包括姓名、性别、年 龄、电话、地址等
联系人分组:根据联系人关系进行 分组,如家庭、朋友、同事等
添加标题
添加标题
添加标题
添加标题
联系人关系:联系人之间的亲属、 朋友、同事等关系
联系人操作:添加、删除、修改、 查询等操作
通讯录系统的数据结构定义
联系人列表:存储所有联系 人信息的数据结构
修改联系人信息功能
功能描述:用户可 以修改联系人的姓 名、电话、地址等 信息
操作步骤:选择要 修改的联系人,点 击“修改”按钮, 输入新的信息,点 击“保存”按钮
功能限制:不能修 改联系人的ID,因 为ID是唯一的标识 符
错误处理:如果输 入的信息不符合要 求(如电话号码格 式错误),系统会 提示错误信息,并 让用户重新输入
03 通讯录系统的数据结构
联系人信息的存储方式
链表节点包含联系人信息和 指向下一个节点的指针
每个联系人信息包括姓名、 电话、地址等字段
采用链表结构存储联系人信 息
链表的头节点指向第一个联 系人信息节点
链表的尾节点指向空,表示 联系人信息的结束
链表的插入和删除操作方便 快捷,适用于频繁更新的联
系人信息
查找联系人功能
输入联系人姓名或 电话号码,系统自 动查找并显示相关 信息
支持模糊查询,如 输入部分姓名或电 话号码,系统自动 匹配相关联系人
查找结果按照姓名 或电话号码排序, 方便用户查看
查找结果可显示联 系人的详细信息, 如姓名、电话号码 、地址等
显示所有联系人功能
功能描述:显示所有联系人的信息,包括姓名、电话、地址等 操作方式:点击“显示所有联系人”按钮,系统将显示所有联系人的信息 应用场景:用户需要查找某个联系人时,可以通过这个功能快速找到 技术实现:通过数据库查询,将联系人信息从数据库中读取出来,并显示在界面上
c语言课程设计通讯录管理系统

c语言课程设计 通讯录管理系统一、课程目标知识目标:1. 理解C语言中结构体的概念和使用方法,掌握利用结构体创建复杂数据结构的能力;2. 学会使用数组存储结构体数据,实现对通讯录信息的有效管理;3. 掌握基本的文件操作,能够实现通讯录数据的存储和读取。
技能目标:1. 能够运用结构体和数组设计并实现一个简单的通讯录管理系统;2. 掌握在C语言中进行简单的输入输出操作,实现用户界面的友好交互;3. 学会使用调试工具进行程序调试,提高解决问题的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发其主动探索和创新的欲望;2. 培养学生的团队协作意识,学会在项目开发中与他人合作;3. 引导学生关注信息技术在生活中的应用,认识到编程对解决实际问题的重要性。
课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基础知识的基础上,运用所学知识设计并实现一个通讯录管理系统。
学生特点:学生具备一定的C语言基础,对编程有一定的兴趣,但可能缺乏实际项目经验。
教学要求:通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高其编程能力和解决实际问题的能力。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效指导和评估。
二、教学内容1. 结构体和结构体数组的概念及应用- 课本章节:第五章 结构体与共用体- 内容:结构体的定义、结构体成员的访问、结构体数组的创建与使用。
2. 文件操作基础- 课本章节:第六章 文件- 内容:文件的打开与关闭、文件的读写操作、文件的定位。
3. 通讯录管理系统设计- 内容:系统需求分析、功能模块划分、系统设计、实现与测试。
4. 用户界面设计- 内容:菜单设计、命令行用户输入输出、简单的人机交互流程。
5. 项目实践与团队协作- 内容:项目分组、任务分配、代码共享与协作、项目评审。
教学进度安排:第一周:复习结构体和结构体数组相关知识,讲解通讯录管理系统需求。
第二周:学习文件操作基础,设计通讯录数据存储与读取功能。
C语言课程设计-通讯录管理系统.

《C语言课程设计》课程设计报告题目通讯录管理系统学号姓名年级专业指导教师完成日期年月日安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University通讯录管理系统一、问题描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
二、基本要求1)每条记录包括:学号、姓名、专业、家庭住址、联系电话;2)能够实现添加、删除、修改功能;3)能够实现按学号、姓名、专业等内容进行查找三、系统分析和设计【需求分析】根据题目要求,通讯录数据以文本文件存储,故应提供文件的输入、输出等操作;还应提供显示、查找、删除等操作;另外还应提供键盘式选择菜单实现功能选择。
【总体设计】通过对整个系统的分析,根据上述要求,可以将这个系统的设计分为三个模块(见图1):文件导入、通讯录编辑和退出。
图1 系统功能模块四、主要流程图(1)主菜单函数此函数功能为提供键盘式选择菜单以调用不同函数。
其流程如图2所示。
图2 主菜单函数流程图(2) 新建菜单函数该函数的功能是用户需要新建联系人记录,从键盘输入并逐条写到原来的通讯录文件中,注意采用新建而不是覆盖的方式。
其流程如图3所示。
图3 新建函数流程图(3) 浏览菜单函数此函数功能为提供浏览所有联系人记录。
其流程如图4所示。
图4 浏览模块流程图(4)查找菜单函数此模块的功能是用户可根据姓名或电话号码查询联系人信息。
△查询菜单函数功能为提供键盘式选择菜单选择查找方法。
其流程如图5所示。
图5 查找函数流程图△按姓名查找函数其流程如图6 所示。
图6 按姓名查找函数流程图△按电话查找函数其流程如图7所示。
c课程设计通讯录管理系统

c 课程设计 通讯录管理系统一、课程目标知识目标:1. 让学生掌握通讯录管理系统的基础知识,包括系统结构、功能模块和数据存储方式。
2. 了解并运用编程语言(如Python)实现通讯录的增、删、改、查功能。
3. 学会运用算法和数据处理技巧优化通讯录管理系统的性能。
技能目标:1. 培养学生运用所学知识独立设计和编写通讯录管理系统的能力。
2. 提高学生的问题解决能力,能够针对实际需求调整和优化系统功能。
3. 培养学生的团队协作能力,学会在项目中进行有效沟通和分工。
情感态度价值观目标:1. 培养学生对信息技术课程的兴趣,激发学习热情。
2. 增强学生的自信心,让他们在完成项目的过程中感受到成就感。
3. 培养学生的责任心,使他们认识到技术对社会发展的积极作用,并关注信息安全问题。
课程性质:本课程为信息技术课程,旨在让学生通过实践操作,掌握通讯录管理系统的设计与实现方法。
学生特点:六年级学生已具备一定的计算机操作基础和编程能力,对新鲜事物充满好奇,喜欢挑战。
教学要求:结合学生特点,注重实践操作,鼓励学生独立思考和团队协作,提高解决问题的能力。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效指导和评估。
二、教学内容1. 系统分析与设计:- 理解通讯录管理系统的需求分析,明确系统功能。
- 学习UML类图、用例图等工具进行系统设计。
2. 数据存储结构:- 掌握使用数组、链表等数据结构存储通讯录信息。
- 分析不同存储结构的优缺点,选择合适的数据结构。
3. 编程语言实现:- 运用Python等编程语言编写系统功能代码。
- 掌握面向对象编程思想,实现类和对象的设计。
4. 功能模块实现:- 实现通讯录的增、删、改、查功能。
- 学习使用异常处理、文件操作等技术解决实际问题。
5. 系统优化:- 分析算法性能,优化查询速度。
- 掌握排序、查找等算法在通讯录管理系统中的应用。
6. 项目实战与团队协作:- 按照教学大纲,分阶段完成通讯录管理系统的开发。
C语言课程设计 通讯录管理系统

puts("\t\t*******************3.修
改*******************");
puts("\t\t*******************4.删
除*******************");
puts("\t\t*******************5.浏
览*******************");
printf_n(n);
沈阳大学
课程设计说明书
printf("\t 共有 %d 记录.\n",n); printf("\nPress any key to back..."); getchar(); menu(); }
No 8
void search() { int w0,k,i,n,w1,w2; struct people s; n=load();
do {printf("请选择查找类别: 1).姓名 2).电话号码 [ ]\b\b"); scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;} }while(w2==1); if(w1==1) {do
case 3: modify(); break;
case 4: deleter(); break;
case 5: browse(); break;
case 6: search(); break;
case 7: exit(0);
}
}
void search();
void enter() { int i,n;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通讯录信息管理系统设计计算机学院计算机科学与技术专业1.课程设计的目的学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。
通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。
此外通过课程设计提高逻辑思考能力和解决实际问题的能力。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。
通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。
本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。
程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。
软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。
通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。
2.设计方案论证2.1设计思路建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息,完成通讯录的功能。
主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、退出系统等功能。
在主函数中可以以1、2、3、4、5、6数字键分别可以执行某个功能模块。
2.2程序设计2.2.1根据图1定义数据类型建立函数typedef struct{char Num; //编号char Name[10]; //姓名char Tel[15]; //电话号码char Email[20]; //邮箱char age[8]; //年龄char adds[20]; //住址}Person;2.2.2主函数及其流程图定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序的功能。
每次使用都会调用主函数。
主函数主要是利用switch语句对数据进行处理,流程图如下:2.2.3增加函数及其流程图2.2.3.1.添加通讯录记录流程图:2.2.3.2.显示通讯录记录流程图:2.2.3.3.删除通讯录记录流程图: 2.2.3.4.查询通讯录记录流程图:2.2.3.5.修改通讯录记录流程图:2.3源程序#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{char Num; //编号char Name[10]; //姓名char Tel[15]; //电话号码char Email[20]; //邮箱char age[8]; //年龄char adds[20]; //住址char relation[40]; //关系}Person;Person pe[80];int menu_select(){char c;do{system("cls");printf("\t\t *****通讯录***** \n");printf("\t\t┌───────┐\n");printf("\t\t│ 1. 添加记录│\n");printf("\t\t│ 2. 显示记录│\n");printf("\t\t│ 3. 删除记录│\n");printf("\t\t│ 4. 查询记录│\n");printf("\t\t│ 5. 修改记录│\n");printf("\t\t│ 6. 保存记录│\n");printf("\t\t│ 0. 退出程序│\n");printf("\t\t└───────┘\n");printf("\t\t请您选择(0-6):");c=getchar();}while(c<'0'||c>'6');return(c-'0');}int Input(Person per[],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){printf("\t编号:");scanf("\t%d",&per[n+i].score);printf("\t姓名:");scanf("\t%s",per[n+i].name);printf("\t年龄:");scanf("\t%s",per[n+i].age);printf("\t电话号码:");scanf("\t%s",per[n+i].num);printf("\t通讯住址:");scanf("\t%s",per[n+i].adds);printf("\t电子邮箱:");scanf("\t%s",per[n+i].email);printf(“\t关系:”);scanf(“\t%s”,per[n+i].relation);gets(x);printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&sign);i++;}return(n+i);}void Display(Person per[],int n){int i;printf("----------------------------------------------------------------------\n");/*格式*/printf("编号姓名年龄关系电话号码通讯地址电子邮箱\n");printf("----------------------------------------------------------------------\n");for(i=1;i<n+1;i++){printf("%-5d%-8s%-6s%-40s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age, per[i-1].relation,per[i-1].num,per[i-1].adds,per[i-1].email);if(i>1&&i%10==0){printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_a_record(Person per[],int n)char s[20];int i=0,j;printf("\t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return(n);}for(j=i;j<n-1;j++){strcpy(per[j].num,per[j+1].num);strcpy(per[j].name,per[j+1].name);strcpy(per[j].age,per[j+1].age);strcpy(per[j].relation,per[j+1].relation);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].email,per[j+1].email);per[j].score=per[j+1].score;}printf("\t\t\t已经成功删除!\n");return(n-1);}void Query_a_record(Person per[],int n){int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------电话│\n");printf("\t│3------地址│\n");printf("\t│4------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){char s[20];int i=0;printf("\t请输入想查询的姓名:");scanf("\t%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人编号: %d\n",per[i].score);printf("\t此人年龄: %s\n",per[i].age);printf("\t与我的关系: %s\n",per[i].relation);printf("\t电话号码: %s\n",per[i].num);printf("\t通讯地址: %s\n",per[i].adds);printf("\t电子邮箱: %s\n",per[i].email);} ;if(m==2){char s[20];int i=0;printf("\t请输入想查询的电话:");scanf("\t%s",s);while(strcmp(per[i].num,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人编号: %d\n",per[i].score);printf("\t此人姓名: %s\n",per[i].name);printf("\t此人年龄: %s\n",per[i].age);printf("\t与我的关系: %s\n",per[i].relation);printf("\t通讯地址: %s\n",per[i].adds);printf("\t电子邮箱: %s\n",per[i].email);} ;if(m==3){char s[20];int i=0;printf("\t请输入想查询的地址:");scanf("\t%s",s);while(strcmp(per[i].adds,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人编号: %d\n",per[i].score);printf("\t此人姓名: %s\n",per[i].name);printf("\t此人年龄: %s\n",per[i].age);printf("\t与我的关系: %s\n",per[i].relation);printf("\t电话号码: %s\n",per[i].num);printf("\t电子邮箱: %s\n",per[i].email);} ;}void Change(Person per[],int n){char s[20];int i=0;printf("\t请输入想修改的记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t编号:");scanf("\t%d",&per[i].score);printf("\t姓名:");scanf("\t%s",per[i].name);printf("\t年龄:");scanf("\t%s",per[i].age);scanf("\t%s",per[i].relation);printf("\t关系:");printf("\t电话号码:");scanf("\t%s",per[i].num);printf("\t通讯住址:");scanf("\t%s",per[i].adds);printf("\t电子邮箱:");scanf("\t%s",per[i].email);printf("\t修改成功!");}void WritetoText(Person per[],int n){int i=0;FILE *fp; //定义文件指针char filename[20]; //定义文件名printf("\t保存到文件\n"); //输入文件名printf("\t请输入所保存的文件名:");scanf("\t%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"******************************************通讯录******************************************\n");fprintf(fp,"编号姓名年龄关系电话号码通讯地址电子邮箱\n");fprintf(fp,"------------------------------------------------------------------------------------------\n");while(i<n){fprintf(fp,"%-3d\t%-6s\t%-3s\t%-40s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i ].age,per[i].relation,per[i].num,per[i].adds,per[i].email);i++;}fprintf(fp,"------------------------------------------------------------------------------------------\n");fprintf(fp,"***************************************共有%d条记录****************************************\n",n);fclose(fp); //关闭文件printf("保存成功!\n");}void main() //主函数int n=0;for(;;){switch(menu_select()){case 1:printf("\n\t添加记录到通讯录\n"); //添加记录n=Input(pe,n);break;case 2:printf("\n\t\t\t 通讯录记录表\n"); //显示记录Display(pe,n);break;case 3:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(pe,n); //删除记录printf("\t");system("pause");break;case 4:printf("\n\t在通讯录中查找记录\n");Query_a_record(pe,n); //查找记录printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(pe,n); //修改数据printf("\t");system("pause");break;case 6:printf("\n\t保存功能\n");WritetoText(pe,n); //保存数据printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n"); //结束程序printf("\n\t\t");system("pause");exit(0);}}}3.设计结果与分析将源程序编译、链接后生成可执行文件,运行该文件会看到如图8所示界面。