西邮c语言课程设计之课程通讯录
- 格式:doc
- 大小:52.50 KB
- 文档页数:8
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语言课程设计通讯录一、教学目标本章节的教学目标旨在让学生掌握C语言编程基础,了解和运用C语言进行通讯录管理系统的设计与实现。
具体来说:1.知识目标:使学生理解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,掌握结构体和文件操作等相关知识。
2.技能目标:培养学生具备使用C语言进行程序设计的能力,能够独立完成一个简单的通讯录管理系统,并掌握调试和纠错的方法。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,增强其自主学习和解决问题的能力,使其认识编程在实际生活中的应用和价值。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、结构体和文件操作等。
具体安排如下:1.C语言的基本语法和数据类型:介绍C语言的基本语法规则,包括变量声明、数据类型、运算符等。
2.控制结构:讲解条件语句(if-else)、循环语句(for、while)等控制结构的使用和原理。
3.函数:学习函数的定义、声明、调用和返回值,了解局部变量和全局变量的概念。
4.结构体:掌握结构体的定义和使用,了解数组、指针和结构体之间的关系。
5.文件操作:学习文件的基本操作,包括文件的打开、关闭、读写等。
6.通讯录管理系统的设计与实现:引导学生运用所学知识设计和实现一个简单的通讯录管理系统,包括数据的增删改查等功能。
三、教学方法为了提高教学效果,本章节将采用多种教学方法相结合的方式:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。
2.案例分析法:通过分析具体的通讯录管理系统案例,使学生掌握结构体和文件操作等相关知识。
3.实验法:安排实验课程,让学生动手实践,独立完成一个简单的通讯录管理系统。
4.讨论法:学生进行小组讨论,分享学习心得和解决问题的方法,互相借鉴和提高。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
一、设计任务书1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。
4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;二、本组课题设计一个通讯录管理系统三、程序功能简介该程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。
四、主体内容1、设计分析1.1问题提出本人计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式1.2本系统涉及的知识点本系统涉及到所学过的知识点有:编译预处理,函数,循环结构,循环结构,数组,结构体,指针,文件等1.3功能要求1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编2、能根据需要随时在通讯录中添加联系人3、能根据联系人的名字查找他的详细联系方式4、能根据需要修改某联系人的联系方式5、能删除某特定联系人的所有联系方式2、程序结构流程图这里只附部分模块流程图:(1)系统的界面如图1所示(下图)图1 系统的菜单选项2.2、删除模块流程图:如图(2)图(2)删除模块流程图3.各模块的功能及程序说明3.1各模块的功能:* Main模块:根据选单内容实现调用函数* Delete模块:删除通讯录中某人的信息,其程序如下* list模块:显示通讯录中的所有记录3.2程序说明:(1)Main函数/******主函数开始*******/main(){int i;person p[M];int length; /*保存记录长度*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu())()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=create(p);break;case 1:list(p,length);break; /*显示全部记录*/case 2:search(p,length);break; /*查找记录*/case 3:length=delete(p,length);break; /*删除记录*/case 4:length=add(p,length); break; /*插入记录*/case 5:exit(0); /*如返回值为5则程序结束*/}}}(2) Delete函数/*删除函数,参数为记录数组和记录条数*/int delete(person t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s); /*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/ else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/strcpy(t[j-1].street,t[j].street); /*将后一条记录的街道拷贝到前一条*/strcpy(t[j-1].city,t[j].city); /*将后一条记录的城市拷贝到前一条*/strcpy(t[j-1].provience,t[j].provience); /*将后一条记录的省份拷贝到前一条*/strcpy(t[j-1].num,t[j].num); /*将后一条记录的邮编拷贝到前一条*/}n--; /*记录数减1*/}}return n; /*返回记录数*/}(3)List函数/*显示记录,参数为记录数组和记录条数*/void list(person t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units,t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch();/*压任意键继续*/}printf("************************end*******************\n");}4、试验结果『含输入数据和输出结果』通过很多次的实验,本程序(源程序在程序清单中)终于可以正常运行,任何一项功能都能顺利实现5、设计体会以前不曾做过课程设计,因此在做课程设计时遇到了很大的困难,首先是在编写程序时,用的时间很长,并且经过多次运行都不能成功。
c语言课程设计 通讯录一、课程目标知识目标:1. 理解并掌握C语言结构体和数组的使用,能够运用其创建和操作通讯录。
2. 学习并掌握C语言中的文件操作,实现通讯录数据的保存和读取功能。
3. 掌握C语言中的函数定义和应用,实现通讯录各项功能模块的划分和调用。
技能目标:1. 能够编写C程序,实现通讯录的增加、删除、修改和查询功能。
2. 能够运用所学知识,设计出界面友好、操作简便的通讯录管理系统。
3. 能够对程序进行调试和优化,提高代码的可读性和执行效率。
情感态度价值观目标:1. 培养学生主动探索、积极实践的学习态度,增强其解决实际问题的能力。
2. 培养学生的团队协作精神,学会与他人共同分析问题、解决问题。
3. 通过本课程的学习,使学生认识到编程在生活中的应用价值,激发其对计算机科学的兴趣。
分析课程性质、学生特点和教学要求:本课程为C语言课程设计,旨在巩固和拓展学生所学知识,提高其编程能力。
学生已具备一定的C语言基础,能够独立完成简单的程序编写。
课程要求学生通过动手实践,掌握结构体、数组、文件操作等知识,并能够将其应用于实际项目中。
课程目标明确,分解为具体学习成果,便于教学设计和评估。
在教学过程中,注重培养学生的实际操作能力和团队协作能力,提高其综合素质。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. C语言基础知识回顾:结构体、数组、函数、文件操作等。
- 结构体:定义、声明、初始化、结构体数组。
- 数组:一维数组、二维数组、字符串与字符数组。
- 函数:函数定义、声明、调用、参数传递。
- 文件操作:文件打开、关闭、读写、定位。
2. 通讯录管理系统功能模块设计:- 系统架构设计:功能模块划分、模块间关系。
- 功能实现:增加、删除、修改、查询、排序等。
3. 编程实践与调试:- 编写代码实现通讯录管理系统各项功能。
- 调试程序,优化代码,提高执行效率。
4. 团队协作与项目展示:- 分组进行项目开发,培养学生团队协作能力。
c 课程设计个人通讯录一、教学目标本课程的目标是让学生掌握个人通讯录的基本设计和使用方法,通过学习,学生应能够理解个人通讯录的结构和功能,并能够运用所学的知识设计和使用个人通讯录。
具体的学习目标包括:知识目标:学生应了解个人通讯录的基本概念和结构,理解个人通讯录的功能和使用方法。
技能目标:学生应能够运用所学的知识设计和使用个人通讯录,能够进行基本的通讯录管理操作。
情感态度价值观目标:通过学习和使用个人通讯录,学生应能够提高对个人信息管理的重视,培养良好的个人信息管理习惯。
二、教学内容本课程的教学内容主要包括个人通讯录的基本概念和结构,个人通讯录的功能和使用方法,以及个人通讯录的管理和维护。
具体的教学内容安排如下:1.个人通讯录的基本概念和结构:介绍个人通讯录的定义,解释个人通讯录的基本组成部分,如姓名、电话号码、电子邮件地址等。
2.个人通讯录的功能和使用方法:介绍个人通讯录的功能,如添加、删除、查找联系人信息等,演示个人通讯录的使用方法。
3.个人通讯录的管理和维护:介绍个人通讯录的管理和维护方法,如定期更新联系人信息,整理联系人列表等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法等。
1.讲授法:通过讲解个人通讯录的基本概念和结构,个人通讯录的功能和使用方法,以及个人通讯录的管理和维护,使学生掌握个人通讯录的基本知识和技能。
2.讨论法:通过学生进行小组讨论,鼓励学生分享自己的经验和看法,促进学生之间的交流和合作,提高学生的理解和应用能力。
3.案例分析法:通过分析实际案例,使学生更好地理解和掌握个人通讯录的应用,培养学生的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,将选择和准备适当的教学资源,包括教材、参考书、多媒体资料、实验设备等。
1.教材:选择合适的教材,如《个人通讯录设计与使用》等,为学生提供全面系统的学习资料。
c语言课程设计通讯录一、课程目标知识目标:1. 理解并掌握C语言中的结构体概念,能够运用结构体创建复杂数据类型;2. 学会使用数组存储结构体数据,实现结构体数组的操作;3. 掌握文件操作的基本方法,实现对通讯录数据的读写和存储。
技能目标:1. 能够编写C程序,设计并实现一个基本的通讯录管理系统;2. 能够运用选择、循环等基本控制结构实现对通讯录的有效管理;3. 能够对程序进行调试和优化,提高代码的执行效率。
情感态度价值观目标:1. 培养学生的编程兴趣,激发他们主动探索问题的积极性;2. 培养学生团队协作意识,提高沟通与协作能力;3. 引导学生认识到编程在生活中的实际应用,增强学以致用的意识。
课程性质分析:本课程为C语言课程设计,旨在通过设计一个通讯录管理系统,让学生将所学C语言知识应用于实际项目中,提高编程实践能力。
学生特点分析:学生已具备基本的C语言知识,熟悉语法和基本控制结构,但可能缺乏实际项目经验,对复杂数据类型和文件操作尚需加强。
教学要求:1. 注重理论与实践相结合,引导学生通过实际操作掌握知识;2. 鼓励学生相互讨论、协作,培养解决问题和团队协作能力;3. 强化代码规范,提高代码质量和可读性。
二、教学内容1. 结构体和结构体数组:- 介绍结构体的定义和使用;- 通过通讯录管理系统的需求,设计联系人结构体;- 引导学生运用结构体数组存储和管理联系人信息。
2. 文件操作:- 讲解文件的基本概念和文件操作函数;- 结合通讯录管理系统,实现数据的读写和存储。
3. 通讯录功能实现:- 添加联系人:实现输入、存储联系人信息的功能;- 删除联系人:实现根据条件删除指定联系人的功能;- 查找联系人:实现根据关键字查找联系人的功能;- 显示所有联系人:实现显示通讯录中所有联系人的功能。
4. 程序调试与优化:- 分析程序可能出现的错误和异常;- 引导学生掌握调试方法,优化代码执行效率。
教材章节关联:本教学内容与教材中关于结构体、数组、文件操作等章节密切相关。
c 课程设计之通讯录一、教学目标本节课的教学目标是让学生掌握通讯录的基本知识和技能,能够运用编程语言实现一个简单的通讯录管理系统。
具体来说,知识目标包括了解通讯录的概念、结构和常用编程语言;技能目标包括掌握基本的编程语法、数据结构和算法;情感态度价值观目标包括培养学生的团队合作意识、自主学习和解决问题的能力。
二、教学内容本节课的教学内容主要包括通讯录的概念、结构和常用编程语言,以及如何运用编程语言实现一个简单的通讯录管理系统。
具体来说,首先介绍通讯录的概念和结构,让学生了解通讯录的基本组成和分类;然后讲解常用编程语言的基本语法和特点,让学生能够选择合适的编程语言进行通讯录管理系统的设计和实现;最后通过案例分析和实践操作,让学生动手编写代码,完成一个简单的通讯录管理系统。
三、教学方法为了达到本节课的教学目标,采用多种教学方法相结合的方式进行教学。
首先,运用讲授法向学生讲解通讯录的概念、结构和编程语言的基本语法;其次,通过讨论法引导学生探讨如何实现通讯录管理系统的功能,并运用案例分析法分析实际案例,让学生更好地理解通讯录管理系统的应用;最后,利用实验法让学生动手实践,编写代码并完成一个简单的通讯录管理系统。
四、教学资源为了支持本节课的教学内容和教学方法的实施,准备以下教学资源:教材《编程语言基础》、参考书《通讯录管理系统设计与实现》、多媒体资料(包括编程语言的教学视频和案例分析的图片、文档等)、实验设备(计算机、网络等)。
这些教学资源将有助于丰富学生的学习体验,提高学生的学习效果。
五、教学评估本节课的教学评估采用多元化的方式,以全面、客观、公正地评估学生的学习成果。
评估方式包括平时表现、作业和考试。
平时表现主要评估学生在课堂上的参与程度、提问回答和团队协作等情况;作业则通过学生提交的编程练习和项目任务来评估其掌握编程语言和通讯录管理系统的能力;考试则以书面测试的形式,评估学生对通讯录概念、结构和编程语言知识的掌握程度。
c 课程设计 通讯录一、课程目标知识目标:1. 学生能理解通讯录的基本概念,掌握其组成元素,如姓名、电话号码、地址等。
2. 学生能掌握在特定电子设备或应用中创建、编辑和存储通讯录的步骤。
3. 学生了解通讯录在生活中的重要性,认识到它对个人信息管理的价值。
技能目标:1. 学生能够独立在电子设备上新建通讯录,输入和修改联系人信息。
2. 学生能够利用排序和搜索功能,快速找到通讯录中的联系人。
3. 学生能够理解并使用分类、标签等功能,对通讯录进行有效的整理和优化。
情感态度价值观目标:1. 学生培养良好的信息管理习惯,认识到个人信息保护的重要性。
2. 学生在小组合作中,学会分享和交流,增强团队协作意识。
3. 学生通过学习通讯录的使用,认识到科技在生活中的应用,激发学习兴趣和探索精神。
课程性质:本课程为实践操作课程,结合生活实际,以培养学生的实际操作能力为主。
学生特点:四年级学生已具备一定的信息素养,对电子设备有较高的兴趣,但实际操作能力还需加强。
教学要求:教师应结合学生特点,采用讲解与实操相结合的教学方法,关注学生个体差异,确保每个学生都能掌握通讯录的基本操作。
在教学过程中,注重引导学生培养良好的信息管理习惯,提升学生的团队协作能力。
通过课程评估,确保学生达到预定的学习目标。
二、教学内容1. 通讯录的定义与作用- 介绍通讯录的基本概念- 讲解通讯录在生活中的重要性2. 通讯录的基本组成- 姓名、电话号码、地址等个人信息- 分类、标签、排序等管理功能3. 通讯录的创建与编辑- 在电子设备上新建通讯录- 添加、修改和删除联系人信息4. 通讯录的存储与管理- 保存和备份通讯录- 搜索和筛选联系人5. 通讯录的实用技巧- 设置头像、铃声等个性化选项- 使用共享和导出功能6. 信息安全与隐私保护- 讲解信息安全的基本知识- 强调保护个人隐私的重要性7. 小组合作与分享- 以小组为单位,共同创建一个班级通讯录- 分享创建过程中的经验和心得教学内容根据课本章节进行安排,结合课程目标,确保学生掌握通讯录的相关知识和操作技能。
c语言课程设计通讯录一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程技巧,通过编写程序实现简单的通讯录管理系统。
知识目标包括:了解C语言的基本数据类型、运算符、控制结构、函数等基本概念;掌握结构体和指针的使用方法;理解面向对象编程的基本思想。
技能目标包括:能够使用C语言编写简单的程序;能够使用结构体和指针实现数据的有效管理;能够运用面向对象编程思想解决实际问题。
情感态度价值观目标包括:培养学生的编程兴趣和自信心;培养学生的问题解决能力和创新精神;培养学生团队合作和自主学习的意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、面向对象编程等内容。
具体安排如下:1.C语言基本语法:介绍C语言的基本数据类型、运算符、控制结构等,通过编写简单的程序让学生熟悉C语言的编程环境。
2.数据结构:讲解结构体的使用方法,引导学生掌握如何使用结构体来表示通讯录中的信息。
3.函数:介绍函数的定义和调用方法,让学生学会如何编写和使用函数来实现特定的功能。
4.面向对象编程:讲解面向对象编程的基本思想,引导学生掌握如何使用类和对象来实现通讯录管理系统。
三、教学方法本课程采用讲授法、讨论法、案例分析法、实验法等多种教学方法。
通过讲授法,为学生提供系统的知识框架;通过讨论法,激发学生的思考和讨论,培养学生的问题解决能力;通过案例分析法,让学生了解实际应用中的问题解决方法;通过实验法,培养学生的动手能力和创新精神。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料、实验设备等。
教材选用《C程序设计语言》作为主教材,参考书选用《C Primer Plus》等;多媒体资料包括教学PPT、视频等;实验设备包括计算机、网络等。
教学资源的选择和准备旨在支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度、提问回答、团队协作等情况,通过观察和记录来评价学生的学习态度和积极性。
c 课程设计通讯录一、课程目标知识目标:1. 理解通讯录的基本概念,掌握其组成和功能。
2. 学会使用课本中的知识点,设计并制作一个简单的通讯录。
3. 了解通讯录在不同领域和实际生活中的应用。
技能目标:1. 能够运用所学知识,独立设计并完成一个具有基本功能的通讯录。
2. 提高信息整理和数据处理能力,通过制作通讯录,熟练运用电子表格软件。
3. 培养团队协作能力,通过与同学合作完成项目,提高沟通与协作技巧。
情感态度价值观目标:1. 培养学生对信息技术课程的兴趣,激发他们主动探索新知识的精神。
2. 培养学生严谨、细心的学习态度,使他们认识到精确数据处理的重要性。
3. 增强学生的信息伦理观念,让他们明白保护个人隐私的重要性。
分析课程性质、学生特点和教学要求,本课程针对年级为初中二年级的学生,他们在信息技术方面具备一定的知识基础,但实践操作能力有待提高。
本课程旨在通过制作通讯录这一实用性项目,让学生在实践中掌握知识,提高技能,培养正确的情感态度价值观。
课程目标分解为具体学习成果,以便于后续教学设计和评估。
二、教学内容1. 通讯录基础知识:- 通讯录的定义、作用及其在实际生活中的应用。
- 课本第三章第一节的通讯录基本组成部分。
2. 通讯录设计原理:- 课本第三章第二节的数据录入、整理和存储方法。
- 通讯录设计的基本原则,如分类、排序等。
3. 实践操作:- 使用电子表格软件(如Microsoft Excel或WPS表格)制作通讯录。
- 课本第三章第三节中的实际操作步骤及注意事项。
4. 通讯录拓展应用:- 探讨通讯录在不同领域中的应用,如企业管理、社交网络等。
- 引导学生思考如何优化通讯录功能,提高信息管理效率。
5. 课堂讨论与展示:- 分组讨论,每组设计并制作一个具有特色的通讯录。
- 各组展示作品,分享设计思路和经验。
教学内容安排与进度:第一课时:介绍通讯录基础知识,明确学习目标。
第二课时:学习通讯录设计原理,探讨实际应用。
c语言课程设计通讯录一、教学目标本节课的学习目标为:1.知识目标:使学生掌握C语言编程基础,了解结构体和指针在实际编程中的应用,理解通讯录程序的设计原理。
2.技能目标:培养学生运用C语言进行程序设计的能力,能够独立完成一个简单的通讯录程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的团队协作意识。
二、教学内容本节课的教学内容主要为:1.C语言基础:数据类型、运算符、表达式、语句等。
2.结构体和指针:结构体的定义、使用和指针的基本概念。
3.通讯录程序设计:通讯录的数据结构设计、程序流程设计、功能实现等。
三、教学方法本节课的教学方法采用:1.讲授法:讲解C语言基础知识和通讯录设计原理。
2.案例分析法:分析具体的通讯录案例,引导学生理解程序设计过程。
3.实验法:学生动手编写通讯录程序,巩固所学知识。
四、教学资源本节课的教学资源包括:1.教材:《C语言程序设计》。
2.参考书:《C语言编程实例解析》。
3.多媒体资料:PPT课件、在线编程练习平台。
4.实验设备:计算机、网络环境。
五、教学评估本节课的评估方式包括:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。
2.作业:布置与课程内容相关的编程作业,评估学生的编程能力和对知识的掌握程度。
3.考试:期末进行闭卷考试,评估学生对C语言基础知识和通讯录程序设计的掌握情况。
评估方式要求客观、公正,能够全面反映学生的学习成果。
通过对学生的综合评估,了解学生的学习状况,为后续教学提供参考。
六、教学安排本节课的教学安排如下:1.教学进度:按照教材的章节顺序,逐步讲解C语言基础、结构体和指针、通讯录程序设计等内容。
2.教学时间:共计4课时,每课时45分钟。
3.教学地点:计算机实验室。
教学安排要求合理、紧凑,确保在有限的时间内完成教学任务。
同时,考虑学生的实际情况和需要,如学生的作息时间、兴趣爱好等,尽量提高教学效果。
《C语言课程设计》目录摘要 (3)一、课程设计目的 (4)二、课程设计内容 (4)三、总体设计 (5)四、详细设计 (6)(1)数据结构设计 (6)(2)模块接口设计 (7)(3)流程图 (7)五、调试与测试 (10)(1)调试过程中的主要问题 (10)(2)测试结果的分析与讨论 (10)六. 实习总结 (12)注: 13摘要日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式, 特别是对于做经常出差的人来说更是难, 所以通讯录能够便捷的给我们带来所需要的相关信息。
而随着计算机的普及, 人们的生活摆脱了传统式的记事本、电话簿, 越来越多的靠计算机来帮助人们记住这些事情, 极其简便。
这就需要有一个使用的通讯录管理系统, 用户可以方便的通过自己电脑的通讯录管理系统, 来随时查阅自己所需要的信息, 而不必再大费周折去翻开那繁琐的记事本。
通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统, 它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能, 大大减少了查找过程的时间。
一、课程设计目的1、通过课程设计, 加深对结构化设计思想的理解, 能对系统功能进行分析, 并设计合理的模块化结构。
2、通过课程设计, 学会设计数据结构。
其中包括对结构数组、链表和数据结构等知识的运用。
3、通过课程设计, 提高程序开发功能, 能运用合理的控制流程编写清晰高效的程序。
4、通过课程设计, 训练C程序调试能力, 能将一个中小型各级组织系统联调通过。
通过课程设计, 开发一个中小型系统, 掌握系统研发全过程。
通话课程设计, 培养分析问题、解决实际问题的能力。
二、课程设计内容(1)设计一个实用的通讯录管理系统, 能以简便高效的方式对通讯录进行管理和检索, 具体要示:(2)录入:通讯录信息包括:编号, 姓名, 单位, 电话, 地址, QQ, 邮编。
以结构通讯录信息。
(3)更新: 能插入、删除通讯录信息。
C语言课程设计——通讯录二:功能模块描述1.数据结构由于使用静态数组需要预先估计记录数,所以先预定义一个常熟M,表示记录数,也就是数组的大小,记录联系人的信息至少应有姓名、单位、电话,所以定义每个数组元素的类型为结构体。
由于数组存储是采用顺序存放,在内存空间中占用连续空间,所以若干条记录通讯录的管理实质就是对顺序存储的线性表的管理。
结点结构如下:#define M 50Typedef struct{Char name[20];Char units[30];Char tele[10];}ADDRESS;2.main()主函数程序采用模块化设计,主函数是程序的入口,各模块独立,可分块调试,均由主函数控制调用。
控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数,同时设置一个断点,即当返回值为一定条件时运行exit()函数结束程序,以免造成死循环。
N—S图3.menu_select()主菜单直接利用输出函数printf输出字符串,在屏幕上显示一个菜单,并显示一个提示输入选项,输入0~11之间的数字,将此数字作为菜单函数的返回值返回主函数,主函数根据这个数字调用相应的功能函数。
制作简便,操作简单。
由于程序中很多地方用了字符串输入语句,会造成下一个字符不能正确读入,为了在程序调用执行了各个函数能够清晰地看到菜单,并输入新的选项,首先写了一条输出信息,printf(“press any key enter menu……\n”)表示按任何键继续,一条读字符语句getch()等待输入字符,按任何键即可进入主菜单。
读者可以将这两条语句加上注释不执行来体会它的功能。
按照所见即所得的方式直接设计输出菜单,输出字符串,达到菜单效果,将精力主要放在程序功能的实现上,利用do循环语句,一直执行scanf(“%s,s)语句,让用户输入0~11之间的数,按照字符串的形式输入,然后执c=atoi(s),将字符串转化为数字,返回主函数,如果输入范围不是0~11,则循环等待重新输入。
计算机技术基础设计C程序设计报告题目:通讯录一.选题背景1.为了熟悉C语言的应用。
2.创建一个通讯录文件,方便使用者添加,查找或者修改自己的认识人的资料。
二.设计思想程序分为创建,添加,查找,修改,删除,退出6部分。
定义函数,变量,使用while分级的判断条件。
创建:通过creat函数可以创立一个通讯录,首先程序提示输入通讯录的名字,然后调用fopen( )函数建立一个文件用来存放这个通讯录。
添加:先调用已经定义的append函数,首先声明一个struct person 结构,程序首先用fopen()函数的尾部添加形式打开指定的文件,如果成功的话,就输入资料,通过fprintf ( )函数写到文件中,输入完后,通过fclose()关闭文件,不成功就退出。
查找:定义一个namekey的数组,调用已经定义的search函数,使用的是线形查找,声明一个struct person结构,用fopen()函数的二进制文件只读方式打开,如果成功的话,在while分级的判断条件中调用feof()函数来检测文件已全或访问,如果成功,就在调用strcmp ()函数比较字符串,如果一样,就把文件中存放的一条记录读到修改和删除:定义一个namekey的数组,调用已经定义的modify函数,声明一个struct person结构,用fopen()函数的打开一个已存one这个srtuct person()类型的变量中,并用printf()函数格式化输出,最后调用fclose()函数关闭文件。
在的文件的方式,如果成功的话,在while分级的判断条件中调用feof ()函数来检测文件已全或访问,使用ftell函数所指向的文件位置,用fscanf函数输出该位置的资料。
再调用strcmp()函数比较字符串,相同就用fseek函数将变量所指向的文件的位置指针移到开通以offset为移量的位置,通过fprintf ( )函数写到文件中,输入完后,通过fclose()关闭文件。
c 课程设计 通讯录一、课程目标知识目标:1. 学生能理解通讯录的基本概念,掌握其组成元素,如姓名、电话号码、地址等。
2. 学生能运用所学的数据结构,设计并实现一个简单的通讯录系统。
3. 学生了解通讯录在生活中的实际应用,理解其在信息管理中的重要性。
技能目标:1. 学生能够使用所学编程语言,完成通讯录的增、删、改、查等基本操作。
2. 学生能够运用排序和查找算法,提高通讯录信息检索的效率。
3. 学生具备初步的项目分析、设计和实现能力,能够根据实际需求对通讯录进行功能扩展。
情感态度价值观目标:1. 学生培养对信息技术的兴趣,提高学习信息技术的积极性和主动性。
2. 学生认识到信息技术在实际生活中的广泛应用,增强社会责任感和创新意识。
3. 学生通过合作学习,培养团队协作精神和沟通能力,提高解决问题的能力。
课程性质分析:本课程为信息技术课程,旨在让学生通过实践操作,掌握通讯录的设计与实现方法,提高编程能力和信息素养。
学生特点分析:本课程针对的是初中年级学生,他们已具备一定的计算机操作能力和编程基础,对新鲜事物充满好奇,但注意力容易分散,需要结合实际案例激发学习兴趣。
教学要求:1. 注重理论与实践相结合,让学生在实际操作中掌握知识。
2. 创设有趣的实际案例,引导学生主动探究,提高学习积极性。
3. 强化团队合作,培养学生的沟通能力和协作精神。
二、教学内容1. 通讯录基础知识:- 通讯录的定义与作用- 通讯录的基本组成元素:姓名、电话号码、地址等2. 数据结构:- 线性表的运用- 通讯录数据结构的设计3. 编程语言:- 掌握基本编程语法- 实现通讯录的增、删、改、查功能4. 排序与查找算法:- 介绍排序算法:冒泡排序、选择排序等- 介绍查找算法:顺序查找、二分查找等- 算法在通讯录中的应用5. 项目实践:- 分析项目需求,明确功能模块- 设计通讯录界面和功能- 编程实现通讯录系统6. 功能扩展:- 根据实际需求,为通讯录添加新功能- 学习如何优化程序,提高运行效率7. 教学进度安排:- 通讯录基础知识:1课时- 数据结构与编程语言:2课时- 排序与查找算法:2课时- 项目实践:3课时- 功能扩展与优化:2课时教材章节关联:本教学内容与教材中“数据结构与应用”、“编程基础”、“算法与程序优化”等章节密切相关,涵盖了通讯录设计与实现的各个方面,旨在让学生系统掌握通讯录的开发过程。
C语言课程设计---学生通讯录管理系统。
一、系统背景学生通讯录管理系统是一个收集、管理完善学生信息的设计方案,用于关注学生个人详细信息,包括学生姓名,性别,年龄,家庭住址等,旨在为学校、家长提供全面、及时的信息管理服务,使用简单、实用性强,并可以根据实际需求,调整系统功能内容及操作流程的学生通讯录管理系统。
二、系统功能1、信息录入:管理员可以对学生信息进行录入,包括学生的学号、姓名、性别、年龄、家庭住址、父母电话号码等。
3、信息查询:管理员可以根据学生学号、姓名等搜索学生信息,可以快速找到所需的学生节点信息。
4、信息统计:系统可以依据信息的个性化特点,自动生成学生通讯录,便于管理人员查阅。
5、用户管理:管理员可以管理系统用户的用户名、密码、权限等,并可以根据需求增加、修改、删除用户账号信息。
三、系统流程1、系统开发:从需求分析、详细设计、界面设计到程序编码完成,包括系统功能模块开发,业务流程分析,数据库设计,数据交互,压力测试,过程控制,系统安全,系统维护与更新等,以确保系统可靠性。
2、部署与安装:系统部署完毕后,需要完成服务器端基本信息采集,如确定服务器IP地址,运行环境,程序配置,操作系统配置,备份配置,文件安全配置,权限设置等安装步骤,以确保系统安全性。
3、运行维护:根据系统实际应用情况,工程师应对系统及数据库进行定期检查,完善系统运行日志,以及故障分析,体系数据库定期备份,完善系统的安全及性能,以确保系统正常运行。
四、系统实施1、硬件及软件:学生通讯录管理系统的实施需要运行在较新的计算机硬件系统上,需要使用Windows操作系统,是采用C语言作为开发语言,开发工具可以采用Visual Studio C++、Embarcadero C++ 11或以上,数据库系统采用Oracle 9i或者MySQL。
2、系统测试:针对系统实际功能,专业测试工程师应当进行系统测试, 并对测试结果进行分析,能够及时发现和修正系统中可能存在的严重错误和不确定性缺陷, 从而获得系统良好的可靠性。
c 课程设计作业通讯录一、教学目标本课程的教学目标是使学生掌握通讯录的基本知识,包括通讯录的格式、编排方法和使用技巧。
知识目标要求学生能够理解通讯录的概念,熟悉通讯录的各个部分及其作用,掌握编排通讯录的基本方法。
技能目标要求学生能够独立编排一个完整的通讯录,熟练使用通讯录软件进行编辑和管理。
情感态度价值观目标要求学生培养对通讯录的重视程度,认识到通讯录在日常生活和工作中的重要性,养成良好的通讯录使用习惯。
二、教学内容本课程的教学内容主要包括通讯录的基本概念、编排方法和使用技巧。
具体包括以下内容:1.通讯录的基本概念:介绍通讯录的定义、作用和分类,使学生理解通讯录的重要性。
2.编排方法:教授通讯录的编排原则、格式和步骤,引导学生掌握编排通讯录的技能。
3.使用技巧:介绍通讯录的使用方法、注意事项和快捷操作,帮助学生提高通讯录的使用效率。
三、教学方法为了达到本课程的教学目标,将采用以下教学方法:1.讲授法:通过讲解通讯录的基本概念、编排方法和使用技巧,使学生掌握相关知识。
2.案例分析法:分析实际案例,让学生了解通讯录在日常生活和工作中的应用,提高学生的学习兴趣。
3.实验法:安排实际操作环节,让学生亲自动手编排通讯录,巩固所学知识,提高实际操作能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用内容丰富、结构清晰的通讯录教材,为学生提供系统性的学习资料。
2.参考书:提供相关参考书籍,拓展学生的知识视野。
3.多媒体资料:制作课件、演示文稿等多媒体资料,以图文并茂的形式展示教学内容,提高学生的学习兴趣。
4.实验设备:准备足够的计算机设备,让学生进行实际操作练习。
五、教学评估本课程的评估方式将采用多元化的形式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:观察学生在课堂上的参与度、提问回答、小组讨论等,记录学生的表现,作为评估的一部分。
2.作业:布置定期的作业,要求学生独立完成,通过作业的质量和进度评估学生的学习情况。
内容:设计一个通讯信息管理系统,使之具有以下功能:(1)每一条记录包括姓名、单位、联系电话,家庭住址等信息。
(2)输入功能:可以一次完成若干条记录的输入。
(3)显示功能:完成全部记录的显示。
(4)查找功能:能够按姓名或单位查找记录,并显示。
(5)排序功能:按姓名进行排序。
(6)插入功能:插入一条记录。
(7)将记录存在文件中,并能进行复制。
#include "stdio.h"#include "stdlib.h"#include "string.h"/*字符串函数*/#include "ctype.h"#define M 50typedef struct /*定义数据结构*/{ char name[20];char units[30];char tele[10];}ADD_BOOK;/******以下是函数原型*******/int enter(ADD_BOOK t[]); /*输入记录*/void list(ADD_BOOK t[],int n); /*显示记录*/void search(ADD_BOOK t[],int n); /*按姓名查找显示记录*/ int delete(ADD_BOOK t[],int n); /*删除记录*/int add(ADD_BOOK t[],int n); /*插入记录*/void save(ADD_BOOK t[],int n); /*记录保存为文件*/int load(ADD_BOOK t[]); /*从文件中读记录*/void display(ADD_BOOK t[]); /*按序号查找显示记录*/void sort(ADD_BOOK t[],int n); /*按姓名排序*/void qseek(ADD_BOOK t[],int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADD_BOOK temp); /*显示单条记录*/int find(ADD_BOOK t[],int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*//******主函数开始*******/main(){ int i;ADD_BOOK adr[M]; /*定义结构体数组*/int length; /*保存记录长度*/system("CLS");for(;;){ switch(menu_select()){case 0:length=enter(adr);break;case 1:list(adr,length);break;case 2:search(adr,length);break;case 3:length=delete(adr,length);break;case 4:length=add(adr,length); break;case 5:save(adr,length);break;case 6:length=load(adr); break;case 7:display(adr);break;case 8:sort(adr,length);break; /*按姓名排序*/case 9:qseek(adr,length);break; /*快速查找记录*/case 10:copy();break;case 11:exit(0); /*如返回值为11则程序结束*/}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){ char s[80];int c;printf("按下任意键开始......\n");getch();system("CLS");printf("********************MENU*********************\n\n");printf(" 0. 输入新的项目\n");printf(" \t1. 列出内存中的数据\n");printf(" 2. 按姓名搜索记录\n");printf(" \t3. 删除一条记录\n");printf(" 4. 添加一条记录 \n");printf(" \t5. 保存到文件\n");printf(" 6. 读取文件\n");printf(" \t7. 按记录编号单条显示\n");printf(" 8. 按姓名排序 \n");printf(" \t9. 快速搜索已经排序的记录\n");printf(" 10. 复制文件到新的文件\n");printf(" \t11. 退出\n");printf("***********************************************\n");do{ printf("\n 请选择(0~11):");scanf("%s",s);c=atoi(s);//atio()的作用是把字符转换成整数;}while(c<0||c>11);return c;}/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enter(ADD_BOOK t[]){ int i,n;char *s;system("cls");printf("\n请问您想输入几条信息? \n");scanf("%d",&n);printf("请输入新的条目 \n");printf("姓名单位电话号码\n");printf("------------------------------------------------\n");for(i=0;i<n;i++){ scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);printf("----------------------------------------------\n");}return n;}/*显示记录,参数为记录数组和记录条数*/void list(ADD_BOOK t[],int n){ int i;system("CLS");printf("\n\n*******************ADD_BOOK******************\n");printf("name unit telephone\n"); printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);if((i+1)%10==0){ printf("任意键继续\n");getch();}printf("************************end*******************\n");}/*查找记录*/void search(ADD_BOOK t[],int n){ char s[20];int i;system("CLS");printf("输入要查找的姓名\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("没有这个记录\n");elseprint(t[i]);}/*显示指定的一条记录*/void print(ADD_BOOK temp){ system("CLS");printf("\n\n********************************************\n"); printf("姓名单位电话\n"); printf("------------------------------------------------\n"); printf("%-20s%-30s%-10s\n",,temp.units,temp.tele);printf("**********************end***********************\n"); }/*查找函数,参数为记录数组和记录条数以及姓名 */int find(ADD_BOOK t[],int n,char *s){ int i;for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0)return i;}return i;}/*删除函数,参数为记录数组和记录条数*/int delete(ADD_BOOK t[],int n){ char s[20];int ch=0;int i,j;printf("请输入要删除条目的姓名\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("没找到要删除的记录\n");else{ print(t[i]); /*调用自定义的输出函数显示该条记录信息*/printf("确定要删除么?(1/0)\n");scanf("%d",&ch);if(ch==1){for(j=i+1;j<n;j++) //所有记录向前移一位;{ strcpy(t[j-1].name,t[j].name);strcpy(t[j-1].units,t[j].units);strcpy(t[j-1].tele,t[j].tele);}n--;}}return n;}/*插入记录函数,参数为结构体数组和记录数*/int add(ADD_BOOK t[],int n){ ADD_BOOK temp;int i,j;char s[20];printf("请输入记录\n");printf("************************************************\n");printf("name unit telephone\n"); printf("--------------------------------------------------\n");scanf("%s%s%s",,temp.units,temp.tele);printf("------------------------------------------------\n");printf("请输入在哪里插入? \n");scanf("%s",s);i=find(t,n,s); /*调用find,确定插入位置*/for(j=n-1;j>=i;j--){ strcpy(t[j+1].name,t[j].name);strcpy(t[j+1].units,t[j].units);strcpy(t[j+1].tele,t[j].tele);}strcpy(t[i].name,);strcpy(t[i].units,temp.units);strcpy(t[i].tele,temp.tele);n++;return n;}/*保存函数,参数为结构体数组和记录数*/void save(ADD_BOOK t[],int n){ int i;FILE *fp;if((fp=fopen("record.txt","wb"))==NULL){printf("error:can not open file\n");exit(1);}printf("\n保存文件\n");fprintf(fp,"%d",n);fprintf(fp,"\r\n");for(i=0;i<n;i++){ fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);fprintf(fp,"\r\n");}fclose(fp);printf("****save success***\n");fflush(stdin);//清空内存}/*读入函数,参数为结构体数组*/int load(ADD_BOOK t[]){ int i,n;FILE *fp;if((fp=fopen("record.txt","rb"))==NULL){printf("error:can not open file\n");exit(1);}fscanf(fp,"%d",&n);for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele);fclose(fp);printf("删除成功!!!\n");return n;}/*按序号显示记录函数*/void display(ADD_BOOK t[]){ int id,n;FILE *fp;if((fp=fopen("record.txt","rb"))==NULL){printf("can not open file\n");exit(1);}printf("输入记录编号...\n");scanf("%d",&id);fscanf(fp,"%d",&n); /*从文件读入记录数*/if(id>=0&&id<n){ fseek(fp,(id-1)*sizeof(ADD_BOOK),1); //fseek()是移动文件指针到记录位置print(t[id]);printf("\r\n");}elseprintf("没有第 %d 条记录!!!\n ",id);fclose(fp);}/*排序函数,参数为结构体数组和记录数*/void sort(ADD_BOOK t[],int n){int i,j,flag;ADD_BOOK temp; /*临时变量做交换数据用*/for(i=0;i<n;i++){ flag=0; /*设标志判断是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/{flag=1;strcpy(,t[j].name);strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/ }printf("排序成功!!!\n");}/*快速查找,参数为结构体数组和记录数*/void qseek(ADD_BOOK t[],int n){ char s[20];int l,r,m;printf("\n认在查找之前,记录是否已排序!\n");printf("输入需要查找的姓名\n");scanf("%s",s);l=0;r=n-1; //折半查找法while(l<=r){ m=(l+r)/2;if(strcmp(t[m].name,s)==0){print(t[m]);return ;}if(strcmp(t[m].name,s)<0) l=m+1;else r=m-1;}if(l>r) printf("not found\n"); //}/*复制文件*/void copy(){ char outfile[20]; /*目标文件名*/int i,n;ADD_BOOK temp[M]; /*临时变量*/FILE *sfp,*tfp;system("CLS");if((sfp=fopen("record.txt","rb"))==NULL){ printf("error:can not open file\n");exit(1);}printf("输入将要输出的文件名称,例如 c:\\f1\\te.txt:\n"); scanf("%s",outfile);if((tfp=fopen(outfile,"wb"))==NULL) /*打开目标文件*/{printf("不能打开文件\n"); /*显示信息*/exit(1);}fscanf(sfp,"%d",&n); /*读出文件记录数*/fprintf(tfp,"%d",n);/*写入目标文件数*/fprintf(tfp,"\r\n"); /*写入换行符*/for(i=0;i<n;i++){ fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units, temp[i].tele);fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,temp[i].units,temp[i].tele); /*写入记录*/fprintf(tfp,"\r\n"); /*写入换行符*/}fclose(sfp); /*关闭源文件*/fclose(tfp); /*关闭目标文件*/printf("复制成功!!!\n"); /*显示复制成功*/}。
#include stdio.h#include stdlib.h#include io.h#include conio.h#include string.h#define MAX 300#define N 3#define PAGE 3日期结构体类型typedef struct{ int year;int month;int day;}DA TE;通讯录结构体类型typedef struct{ int num;char phonenumber[20]; 电话char name[12]; 姓名char adress[10]; 住址DA TE birthday; 生日char email[20];}NAME;int read_file27(NAME man[]){ FILEfp;int i=0;if((fp=fopen(CDocuments and SettingsXY桌面新建文件夹tongxunlu.txt,rt))==NULL) {printf(nn文件不存在!请创建!);return 0;}while(feof(fp)!=1){fread(&man[i],sizeof(NAME),1,fp);if(man[i].num==0)break;else i++;}fclose(fp);return i;}void save_file27(NAME man[],int sum){ FILEfp;int i;if((fp=fopen(CDocuments and SettingsXY桌面新建文件夹tongxunlu.txt,wt))==NULL) { printf(读文件错误!n);return;}for(i=0;isum;i++)if(fwrite(&man[i],sizeof(NAME),1,fp)!=1)fclose(fp);}输入模块int input27(NAME man[]){ int i=0;system(cls);printf(nn 录入联系人的信息(最多%d个)n,MAX);printf(--------n);do{ printf(n 第%d个人,i+1);printf(n 编号);scanf(%d,&man[i].num);if(man[i].num==0) break;printf(n 姓名);scanf(%s,man[i].name);printf(n 电话);scanf(%s,man[i].phonenumber);printf(n email);scanf(%s,man[i].email);printf(n 住址);scanf(%s,man[i].adress);printf(n 生日);scanf(%d-%d-%d,&man[i].birthday.year,&man[i].birthday.month,&man[i].birthday.day);i++;}while(iMAX);printf(n --%d个人信息输入完毕!--n,i);printf(n 按任意键返回主菜单!);getch();return i;}输出模块void output27(NAME man[],int sum){ int i=0,j=0,page=1;system(cls);do{ if(man[i].num!=0){if(j%PAGE!=0){printf(%4d %8s %8s %8s %10d-%2d-%2d %10sn,man[i].num,man[i].phonenumber,man[i].name,man[i].adress,man[i].birthday.year,man[i].birthday.month,man[i].birthday.day,man[i].email);printf(-----------------------------------------------------------------------------n);}else{printf(按任意键继续!);getch();system(cls);printf(nn--信息表--第%d页nn,++page);printf(-------------------------------------------------------------------------------n);printf(%4d %8s %8s %8s %10d-%2d-2%d %10sn,man[i].num,man[i].phonenumber,man[i] .name,man[i].adress,man[i].birthday.year,man[i].birthday.month,man[i].birthday.day,man[i].email);printf(------------------------------------------------------------------------------n);}j++;}i++;}while(man[i].num!=0);printf(按任意键返回主菜单!);getch();}void modify27(NAME man[],int sum) 修改模块{int i=0,choice,flag;char modify_name[12];do{system(cls);printf(n 输入要修改人的姓名:);scanf(%s,&modify_name);for(i=0;isum;i++)if(strcmp(man[i].name,modify_name)==0){printf(n --输入信息--nn);printf( 编号电话姓名住址生日emailn);printf(----------------------------------------------------------------------------n);printf(%4d %8s %8s %8s %10d-%2d-%2d %10sn,man[i].num,man[i].phonenumber,man[i].name, man[i].adress,man[i].birthday.year,man[i].birthday.month,man[i].birthday.day,man[i].email);printf(-----------------------------------------------------------------------------n);printf(n 您要修改哪一项?n);printf(n 1.编号n);printf(n 2.电话n);printf(n 3.姓名n);printf(n 4.住址n);printf(n 5.生日n);printf(n 6.email n);printf(n 请选择(1—6)n);scanf(%d,&choice);switch(choice){ case 1 printf(n 输入修改后的编号);scanf(%d,&man[i].num);break;case 2 printf(n 输入修改后的电话);scanf(%s,man[i].phonenumber);break;case 3 printf(n 输入修改后的姓名);scanf(%s,man[i].name);break;case 4 printf(n 输入修改后的地址);scanf(%s,man[i].adress);break;case 5 printf(n 输入修改后的生日);scanf(%d %d %d,&man[i].birthday.year,&man[i].birthday.month,&man[i].birthday.day);break;case 6 printf(n 输入修改后的email );scanf(%s,man[i].email);break;}printf(n --信息--nn);printf( 编号电话姓名住址生日emailn);printf(----------------------------------------------------------------------------n);printf(%4d %8s %8s %8s %10d-%2d-%2d %10sn,man[i].num,man[i].phonenumber,man[i].name, man[i].adress,man[i].birthday.year,man[i].birthday.month,man[i].birthday.day,man[i].email);break;}if(i==sum){printf(该姓名不存在n);}printf(nn 继续修改吗?(YN));choice=getch();if(choice=='Y'choice=='y'){flag=1;printf(n 继续n);}else flag=0;}while(flag==1);printf(n 按任意键返回主菜单!);}void del27(NAME man[],int sum) 删除信息模块{int i=0,j;char del_name[12];system(cls);printf(n 请输入要删除人的姓名:);scanf(%s,del_name);for(i=0;isum;i++)if(strcmp(man[i].name,del_name)==0){printf(n --信息--nn);printf(编号电话姓名住址生日emailn);printf(----------------------------------------------------------------------------------------------n);printf(%4d %8s %8s %8s %10d-%2d-%2d %10sn,man[i].num,man[i].phonenumber,man[i].name, man[i].adress,man[i].birthday.year,man[i].birthday.month,man[i].birthday.day,man[i].email);printf(----------------------------------------------------------------------------------------------n);for(j=i;jsum;j++)man[j]=man[j+1];if(i==sum)printf( 该姓名不存在!);}}void inquire27(NAME man[],int sum) 信息查询模块{int i=0,choice,flag;char inquire_name[12];do{system(cls);printf(n 输入要查询人的姓名:);scanf(%s,inquire_name);for(i=0;isum;i++)if(strcmp(man[i].name,inquire_name)==0){printf(n --信息--nn);printf(编号电话姓名住址生日emailn);printf(------------------------n);printf(%4d %8s %8s %8s %10d-%2d-%2d %10sn,man[i].num,man[i].phonenumber,man[i].name, man[i].adress,man[i].birthday.year,man[i].birthday.month,man[i].birthday.day,man[i].email);}if(isum){printf(该姓名不存在n);}printf(nn 继续查询吗?(YN));choice=getch();if(choice=='Y'choice=='y'){flag=1;printf(n 继续n);}else flag=0;}while(flag==1);printf(n 按任意键返回主菜单!);}void sort27(NAME man[],int sum) 排序模块{NAME t;int i,j,k;system(cls);printf(n--------------------姓名排序n);printf(-------------------------------n);printf(n排名姓名编号n);for(i=0;isum;i++){k=i;for(j=i+1;jsum;j++)if(strcmp(man[k].name,man[j].name)0) k=j;if(k!=i){t=man[i];man[i]=man[k];man[k]=t;}}save_file27(man,sum);output27(man,sum);getch();}int append27(NAME man[],int sum) 信息添加模块{int choice,flag;do{ sum+=1;printf(请输入要添加的信息:n);printf(n 编号);scanf(%d,&man[sum-1].num);printf(n 姓名);scanf(%s,man[sum-1].name);printf(n 电话);scanf(%s,man[sum-1].phonenumber);printf(n email);scanf(%s,man[sum-1].email);printf(n 住址);scanf(%s,man[sum-1].adress);printf(n 生日);scanf(%d-%d-%d,&man[sum-1].birthday.year,&man[sum-1].birthday.month,&man[sum-1].birthd ay.day);fflush(stdin);printf(nn 继续添加吗?(YN));choice=getch();if(choice=='Y'choice=='y'){flag=1;printf(n 继续n);}else flag=0;}while(flag==1);printf(添加成功!!);printf(n 按任意键返回主菜单!);save_file27(man,sum);return sum;}void main(){NAME man[MAX]={0};int choice,sum;sum=read_file27(man);if(sum==0){printf(并录入基本信息);getch();sum=input27(man);}do{system(cls);printf(nnn 通讯录nn);printf(n 1.打印信息nn);printf(n 2.删除信息nn);printf(n 3.查询信息nn);printf(n 4.添加信息nn);printf(n 5.修改信息nn);printf(n 6.排序);printf(n 0.退出系统);printf(n 请选择(0-6)); scanf(%d,&choice);switch(choice){case 1output27(man,sum); break;case 2del27(man,sum); break;case 3inquire27(man,sum); break;case 4sum=append27(man,sum); break;case 5modify27(man,sum); break;case 6sort27(man,sum); break;case 0 break; }}while(choice!=0);save_file27(man,sum);}。