《通讯录管理系统(c语言)》实训报告(含代码)
C语言通讯录报告范文及源代码

C语言通讯录报告范文及源代码进一步掌握利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图表示算法。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
设计参数(1)系统分析、设计正确。
(2)结果以图表方式显示。
(3)界面简洁、美观。
(4)报告格式规范。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
系主任:指导教师:2022年1摘要通讯录管理系统是典型的管理系统,其开发主要包括数据库的建立。
本文设计一个简要的的通讯录系统该题目要求在熟练掌握C语言的基础知识:数据类型(整型,字符型,指针,数组,结构等);运算类型,程序结构,函数的使用等。
进一步掌握各种函数的应用。
其中结构体,函数的调用,算法的设计尤为重要。
一个良好的通讯录能够方便用户增/删/查/改信息.获取用户。
要的信息.汇编语言也是计算机应用中重要的语言之一.用汇编语言程序代码编写通讯录,理解和掌握复杂的汇编语言应用程序的编程.本程序将主要完成的功能为姓名查询模块:查询,输入姓名可以查询该人其他信息;在屏上提示:选择“1”:输入姓名,按姓名查询,显示查询结果;选择“0”:结束.通过此次设计巩固和加深子程序调用关键字:通讯录管理信息系统目录1.摘要2.目录3.软件需求分析说明书4.系统分析与设计5.软件的实现6.软件的测试7.软件使用说明书8.致谢9.软件源代码软件需求分析说明书一、本课程设计的目的和意义本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为作好实践环节上的准备。
通讯录系统是在手机常见的计算机信息管理系统。
它的主要任务是对信息进行管理,如信息的输入、查询、修改、增加、删除,迅速准确地完成各种信息的输入和查询。
二、本课程设计主要内容本系统有分7个功能:(1)写入数据(2)读取数据(3)追加数据(4)查找数据(5)删除数据。
C语言课程设计实习报告——通讯录管理系统

毕业论文(设计)论文(设计)题目:通讯录管理系统二级学院:计算机学院学科专业:信息管理专业学号:姓名:班级:试点本科三班指导教师:论文提交时间: 2011年3月教务处制2011年3 月13 日毕业论文(设计)内容介绍论文(设计)题目通讯录管理系统选题时间2010年12月完成时间2011年3月论文(设计)字数4685关键词通信录信息管理,管理信息系统,数据库论文(设计)题目的来源、理论和实践意义:课题来源:本课题是来自辅导老师的提议和日常所学内容的总结,使用 MICROSOFT公司的 VISUAL C++6.0开发工具,利用其提供的各种面向对象的开发工具,在短时间内未系统建立应用原形,并不断进行修正和改进。
理论依据:1、VISUAL C++的上机学习及实践。
2、、数据库原理的课程内容。
3、学校所开课程的学习以及领悟,理论及实践相结合。
实践意义:通过实践证实了通讯录管理系统的重要性,突显了通讯录管理系统是我们日常生活中不可缺少的一部分。
论文(设计)的主要内容及创新点:本文论述了通讯录系统的整个开发过程,包括系统分析、系统设计、系统实现等方面。
实现对通讯录信息的增、删、改、查等功能,以多文档界面形式实现。
通过对通讯录管理系统必要性和可行性的介绍阐述他的作用,并应用大量图例进行说明,使表达的内容更加清楚易于理解,整体更加简明。
附:论文(设计)本人签名:2011 年 3 月13 日通讯录管理系统 (4)摘要 (4)Abstract (5)引言 (6)一、设计系统的必要性和可行性 (7)1.1设计系统的必要性 (7)1.2设计系统的可行性 (7)1.1.1经济可行性 (7)1.1.2技术可行性 (7)二、系统总体设计 (8)2.1题目要求 (8)2.2需求分析 (8)2.3总体设计 (8)2.3.1系统总体功能单元: (8)2.3.2系统总体流程图(局部): (9)三、详细设计 (10)3.1通讯录信息输入模块 (10)3.2信息浏览及排序模块 (11)3.3通讯录查询模块 (12)3.4通讯录的更改 (14)3.5通讯录及文件操作 (16)四、系统功能的实现与运行 (18)4.1个人档案数据维护表单 (18)4.2通讯信息数据维护表单 (18)4.3个人信息数据查询表单 (19)4.4 个人通讯录报表 (20)4.5系统登录表单 (20)4.6设计系统主菜单 (21)4.7系统主界面表单 (22)4.8连编 (22)五、结论 (23)七、参考文献 (24)通讯录管理系统摘要通信录信息管理系统是用计算机管理电子通信录的一种计算机应用技术的创新,在计算机还未普及之前通信管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通信录管理都是采用计算机作为工具的实用的计算机通信录管理程序来帮助人们进行更有效的通信录信息管理。
中南大学个人通讯录管理系统实验报告+源码(C语言版)

中南大学Central South University课程设计报告题目:个人通讯录管理系统设计者:专业班级:学号:指导教师:所属院系:信息科学与工程院2009年7 月3日目录一.课程设计的目的和要求。
2 二课程设计内容。
3 三.设计整体规划及方案。
4 四.课程设计任务。
5 五.程序的流程图。
6六.个人体会。
7七、参考文献。
10八、源程序。
11一.课程设计的目的和要求本次“计算机程序设计实践”课程设计,是基于C语言“计算机程序设计基础”课程学习内容的重要实践环节,其主要目的在于,通过综合程序课程设计,加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而培养和提高学生的独立分析问题和解决实际问题的能力。
二、课程设计内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等具体要求如下:1、在Turbo C(Visual C)或Win-TC环境下,用结构化程序设计思想进行C语言程序设计。
2、认真阅读设计题目、任务内容及进度要求,完成好管理系统中各相关功能模块的设计、调试与实现。
三.课程设计整体规划及方案整个程序的设计是通过对每一个功能的设计,然后,再对每一个功能的程序进行模块化,再把每一模块化的程序装入设计好的菜单中,从而形成一个完整的材料管理系统。
1、自顶向下、逐步细化、逐步求精所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。
每个子任务如果仍很复杂,还可以再分解为若干个子任务。
如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。
c语言电话本管理系统程序设计实训报告

郑州轻工业学院实训报告实训名称:程序设计基础实训姓名:院(系):专业班级:学号:指导教师:成绩:时间:2012 年 6 月25 日至2012 年9 月14 日目录1需求说明 (1)1.1电话薄管理系统需求说明 (1)2功能描述 (2)2.1电话薄管理系统功能描述 (2)2.1.1功能介绍 (3)3系统设计及实现 (3)4实训心得 (4)5附录(代码) (5)1需求说明随着科学技术的进步,人与人之间的交流日益广泛。
人与人之间的联系也越来越频繁,方式也越来越多样化。
电话簿已成为现代生活中一个重要的工具。
本程序的设计是为用户提供一个电话薄管理平台,给用户提供一个管理联系人的联系方式的小系统。
本电话薄管理系统利用计算机对通讯录进行统一管理,包括了添加、修改、查询记录等功能。
程序中涉及结构体、数组、文件等方面的知识,从而实现通讯录管理工作的系统化、规范化和自动化,给用户的工作和生活提供便利1.1 电话薄管理系统需求说明电话薄管理系统的主体是针对用户的一系列操作,一般来说,主要功能有添加用户,查看用户信息,查找用户信息以及对用户信息的修改等等1.定义结构体类型(1)定义用户信息的结构体类型(2)定义用户的双向链表的结点2.添加用户信息编写程序接受从键盘输入用户数据,用格式化数据写入函数fprintf直接把用户信息存储到指定文件中3.查看用户信息用格式化读出函数fscanf直接从指定文件中读出用户信息即可4.查找用户信息用格式化读出函数fscanf逐步从指定文件中读出数据,用待查找用户信息与读出的数据逐步作对比,直到找到指定用户位置,然后把该用户信息输出出来5.用户的排序首先先从指定文件中读出数据,然后用对字符数组的排序的方法进行用户的排序6.用户信息的修改先创建用户链表的结点其次从指定文件中读出用户数据,把用户数据写入用户双向链表中再次就是输入待修改用户的信息,用对链表的一般处理方法找到待修改信息的用户的位置,然后用新的用户信息取代之7.删除用户信息首先输入待删除的用户的信息其次查找并确认待删除用户信息的在用户信息双向链表中的位置然后把该用户信息的结点从用户双向链表中删除最后保存删除该用户之后的其他用户的信息,即把链表重新连接成一新的链表8.头文件包含用到的头文件;定义符号常量;定义结构体等数据结构;9.主函数包含库文件;包含基本操作函数的源文件;定义主菜单2功能描述2.1 电话薄管理系统功能描述1.1.1功能介绍(1)输入模块。
通讯录管理系统--C语言程序设计实习报告

C 语言课程设计题目:通讯录管理系统设计者:院系:数理学院专业:信息与计算科学班号:123111学号:***********指导教师:***2012年6月29日1.题目要求通讯录管理系统是具有数据插入、更新、删除、显示和查询功能的电话簿管理程序。
(1)数据包括姓名、工作单位、电话号码和E-MAIL地址等。
(2)可对记录中的姓名和电话号码进行更新。
(3)可增加和删除记录。
(4)可显示所有的保存的记录。
(5)可按姓名或电话号码进行查询。
2.需求分析1.信息记录要存放到文件中,要实现文件的输入、输出功能;2.实现数据的添加、删除、更新和显示,要提供输入、删除、更新和显示功能;3.要实现按人名或电话号码进行查询,因而要提供查找功能;4.应该提供键盘式选择菜单以实现功能选择。
5.采用模块化,由上到下的设计方法,通过数字选择菜单功能,上级菜单可进入下级菜单,下级菜单可返回上级菜单。
3.总体设计根据上面得需求分析,系统有菜单选择、数据输入、数据查找、数据更新、数据的存储等功能。
可以将系统设计分为四大模块,即显示、查找、更新(包括增加和删除)和退出,如图1所示。
其中,主要功能是显示、查询和更新三个模块。
4.详细设计4.1主函数主函数设计比较简洁,只提供输入、功能处理和输出部分得函数调用。
其中各功能模块采用菜单方式选择。
另外,菜单部分也可以写出函数。
具体流程图如图2所示。
【程序】main(){int n,w;do{puts("***************通讯录管理系统***************\n");puts("********************菜单********************\n");puts("1.显示通讯录\n");puts("2.查找\n");puts("3.更新\n");puts("4.退出\n");puts("********************************************\n");printf("选择功能(1-4):");scanf("%d",&n);if(n<1||n>4){w=1;getchar();}else {w=0;}}while(w==1);switch(n) /*选择功能*/{case 1:list();break; /*列出通讯录*/ case 2:find();break; /*查找*/case 3:choose();break; /*更新通讯录*/ case 4:printf("谢谢使用!\n\n"); /*退出*/ }}4.2各功能模块设计★数据结构通讯录的数据信息:姓名、工作单位、电话号码、E-MAIL均采用字符型数组,用结构体的形式,把各信息作为结构的成员。
c通讯录管理系统实验报告

C通讯录管理系统实验报告1. 引言通讯录是我们日常生活中非常常见的一种信息管理工具,用于存储和管理联系人的信息。
本实验旨在设计和实现一个基于C语言的通讯录管理系统。
本文将介绍系统的设计思路、功能实现以及使用过程中的注意事项。
2. 设计思路通讯录管理系统主要包括以下功能: - 添加联系人:输入联系人的姓名、电话号码和电子邮件信息,将其添加到通讯录中。
- 删除联系人:输入联系人的姓名,从通讯录中删除该联系人。
- 查找联系人:输入联系人的姓名,系统将显示该联系人的详细信息。
- 修改联系人:输入联系人的姓名,可以修改该联系人的电话号码和电子邮件信息。
- 显示所有联系人:系统将按照添加的顺序显示通讯录中所有联系人的信息。
在设计过程中,我们采用了如下的步骤思考: 1. 定义联系人结构体:使用结构体来存储联系人的姓名、电话号码和电子邮件信息。
2. 定义通讯录结构体:使用动态数组来存储联系人的信息,以及记录通讯录的当前大小和最大容量。
3. 实现添加联系人功能:动态扩展通讯录数组的容量,将新的联系人信息添加到数组中。
4. 实现删除联系人功能:根据输入的姓名,查找并删除对应的联系人。
5. 实现查找联系人功能:根据输入的姓名,查找并显示对应联系人的详细信息。
6. 实现修改联系人功能:根据输入的姓名,查找并修改对应联系人的电话号码和电子邮件信息。
7. 实现显示所有联系人功能:按照添加的顺序,显示通讯录中所有联系人的信息。
3. 功能实现3.1 定义联系人结构体联系人结构体包含姓名、电话号码和电子邮件信息的变量。
3.2 定义通讯录结构体通讯录结构体包含一个指向联系人结构体的指针和记录当前容量和最大容量的变量。
3.3 实现添加联系人功能在添加联系人之前,首先需要判断通讯录数组是否已满。
如果已满,则需要动态扩展通讯录数组的容量。
然后,将新的联系人信息添加到数组中,更新通讯录的当前大小。
3.4 实现删除联系人功能根据输入的联系人姓名,在通讯录数组中查找对应的联系人。
c语言通讯录管理实验报告及源程序代码

C语言程序设计实训报告课程名称C语言程序设计实训课题名称通讯录管理专业软件工程班级K软件151学号姓名指导教师2016年1 月1 日湖北汽车工业学院科技学院C语言程序设计实训任务书课程名称C语言程序设计实训课题通讯录管理专业班级软件工程学生姓名学号指导老师审批一、设计内容与设计要求1.设计内容:设计课题:通讯录管理一、问题描述:该设计实现对通讯录得管理功能,具体包括从键盘输入通讯录的信息、从指定的文件中读入通讯录的信息、按姓名查询通讯录的信息、按分类查询通讯录的信息、删除指定姓名的通讯录的信息、将通讯录信息保存在指定的文件中等。
二、功能要求:1)能从键盘输入通讯录的信息(增加,输入时需要能检查该姓名的通讯录的记录是否已经存在,如果存在,需要询问是否是覆盖还是增加,需要判断输入的类型是否存在)2)能从指定的文件中读入通讯录的信息3)能按姓名查询通讯录的信息4)能按分类查询通讯录的信息5)能删除指定姓名的通讯录的信息6)能将通讯录信息保存在指定的文件中7)所有数据符合实际应用要求2.设计要求:1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)上机演示。
3.设计报告要求:课程设计报告格式如下:1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。
2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释)。
3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排湖北汽车工业学院科技学院2015年12月20 日目录1 系统需求分析 (6)2 概要设计 (6)3 详细设计 (6)4 系统测试 (14)5 课程设计总结 (15)1 系统需求分析本系统首先设计出了主函数,然后根据去要实现的功能分别设计,添加、显示、删除、查找、修改功能的子函数。
在现实的函数设计过程中首先运用文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。
C语言通讯录管理系统实验报告

《程序设计与算法综合实习I》通讯录题目:班级:学生学号:学生姓名:指导老师:提交时间:成绩:软件学院课程设计报告评分表1、对问题的描述:通讯录1.1、简要描述:设计一个通讯录程序,并简单实现通讯人的添加、删除、修改、查找、统计、存入文件等功能1.2、系统功能分析:添加功能修改功能删除功能查找功能统计功能存入文件功能1.3、开发平台及工具介绍:基于c语言设计该程序,是用codeblocks实现功能。
2、系统设计1.1系统总体结构设计:系统各个功能的总体关系3、功能实现struct Contact//结构体{char Name[20];char Tel[15];char Address[100];char Mail[50];char Birth[10];char Type[15];struct Contact *next;通讯录数据读取修改删除创建联系人查找统计};struct classfy{//统计模块使用结构体char leixing[20];int Numcount;};3.1、主函数开始显示一系列功能选项否输入n,判断n是否是0~6?否根据n的值调用各功能模块函数判断flag是否等于0?是结束具体设计如下:int main(){ //主函数struct Contact *pHead;int n;int flag=1;pHead=(struct Contact*)malloc(sizeof(struct Contact));pHead=create();while(flag==1){menu();printf("请输入要执行的操作:");scanf("%d",&n);switch(n){case 1:insert(pHead);break;case 2:Change(pHead);break;case 3:delete(pHead);break;case 4:Search(pHead);break;case 5:tongji(pHead);break;case 6:shuchu(pHead);break;case 0:flag=0;exit(0);break;default:printf("输入错误,重新输入");scanf("%d",&n);break;}}}3.2、界面设计void menu(){system("cls");printf("\n\n\n\n");printf("\t\tR-----------------通讯录----------------2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR\t \t1.增加联系人\t \t2\n");printf("\t\tR\t \t2.修改联系人\t \t2\n");printf("\t\tR\t \t3.删除联系人\t \t2\n");printf("\t\tR\t \t4.查找联系人\t \t2\n");printf("\t\tR\t \t5.统计联系人\t \t2\n");printf("\t\tR\t \t6.列出全部联系人\t2\n");printf("\t\tR\t \t0.退出\t\t\t2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR--------Designd By Zheng Weipeng-------2\n"); }3.3、创建函数具体设计如下:struct Contact *create(){ //创建链表 struct Contact *pHead=NULL,*p,*p1; FILE *fp; int n=0;if((fp=fopen("TXL.txt","r"))==NULL){printf("文件创建失败,回车键返回."); getch(); } else{p=p1=(struct Contact*)malloc(sizeof(struct Contact)); fscanf(fp,"%s",p ->Name); fscanf(fp,"%s",p ->Tel);fscanf(fp,"%s",p ->Address); fscanf(fp,"%s",p ->Mail);读取文件内容Fp==NULL ?文件内容赋给链表结束开始否feof (fp )?是否fscanf(fp,"%s",p->Birth);fscanf(fp,"%s",p->Type);while(!feof(fp)){n++;if(n==1) pHead=p;elsep1->next=p;p1=p;p=(struct Contact*)malloc(sizeof(struct Contact));fscanf(fp,"%s",p->Name);fscanf(fp,"%s",p->Tel);fscanf(fp,"%s",p->Address);fscanf(fp,"%s",p->Mail);fscanf(fp,"%s",p->Birth);fscanf(fp,"%s",p->Type);}p1->next=NULL;fclose(fp);return pHead;}}3.4、插入函数struct Contact *insert(struct Contact *pHead){ //插入函数FILE *fp;struct Contact *p,*p1;if((fp=fopen("TXL.txt","a+"))==NULL){printf("文件打开失败");}p=p1=(struct Contact*)malloc(sizeof(struct Contact));p=pHead;while((p->next)!=NULL){p=p->next;}printf("请输入姓名: ");scanf("%s",p1->Name);fprintf(fp,"%s\n",p1->Name);printf("请输入电话: ");scanf("%s",p1->Tel);fprintf(fp,"%s\n",p1->Tel);printf("请输入地址: ");scanf("%s",p1->Address);fprintf(fp,"%s\n",p1->Address);printf("请输入邮箱: ");scanf("%s",p1->Mail);fprintf(fp,"%s\n",p1->Mail);printf("请输入生日: ");scanf("%s",p1->Birth);fprintf(fp,"%s\n",p1->Birth);printf("请输入类型(同学、家人、老师、工作): ");scanf("%s",p1->Type);fprintf(fp,"%s\n\n",p1->Type);p->next=p1;p1->next=NULL;fclose(fp);printf("数据保存成功,任意键返回主菜单.\n");getch();return(pHead);}3.5、修改函数(实现对联系人单项修改)struct Contact Change(struct Contact *pHead){ //修改函数FILE *fp;struct Contact *p1;char flag=0,saveflag=0;int i=0;int n;char a[10],b[20];fp=(fopen("TXL.txt","w"));p1=pHead;printf("\n修改联系人姓名:");scanf("%s",a);while(p1!=NULL){if(strcmp(p1->Name,a)==0){printf("\n找到要修改联系人:\n");printf("姓名:%s\n",p1->Name);printf("电话:%s\n",p1->Tel);printf("地址:%s\n",p1->Address);printf("邮箱:%s\n",p1->Mail);printf("生日:%s\n",p1->Birth);printf("类型:%s\n\n",p1->Type);flag=1;break;}else{p1=p1->next;}}if(flag==0){fclose(fp);printf("没有该条通讯录,回车键返回");getch();}if(flag==1&&p1!=NULL){printf("修改类型:1.姓名2.电话3.地址4.邮箱5.生日6.类型\n");printf("输入数字选择修改类型: ");scanf("%d",&n);printf("输入修改内容: ");scanf("%s",b);switch(n){case 1:p1->Name[0]='\0';strcpy(p1->Name,b);break;case 2:p1->Tel[0]='\0';strcpy(p1->Tel,b);break;case 3:p1->Address[0]='\0';strcpy(p1->Address,b);break;case 4:p1->Mail[0]='\0';strcpy(p1->Mail,b);break;case 5:p1->Birth[0]='\0';strcpy(p1->Birth,b);break;case 6:p1->Type[0]='\0';strcpy(p1->Type,b);break;}}p1=pHead;while(p1!=NULL){fprintf(fp,"%s\n",p1->Name);fprintf(fp,"%s\n",p1->Tel);fprintf(fp,"%s\n",p1->Address);fprintf(fp,"%s\n",p1->Mail);fprintf(fp,"%s\n",p1->Birth);fprintf(fp,"%s\n",p1->Type);p1=p1->next;saveflag=1;}if(flag==1&&saveflag==1){printf("修改成功,任意键返回主菜单");getch();}fclose(fp);return (*pHead);}}3.6、删除函数struct Contact delete(struct Contact *pHead){ //删除函数FILE *fp;struct Contact *p,*p1;int saveflag=0,flag=1;char a[10];fp=fopen("TXL.txt","w");p=pHead;p1=p;printf("请输入要删除联系人的姓名:");scanf("%s",a);while(p!=NULL){if(strcmp(p->Name,a)==0){printf("找到该联系人。
C语言实验报告 通讯录

C语言集中上机报告通信录院系:班级:姓名:合作者:指导教师:2015年6月1日目录一概述 (3)课程设计的目的 (3)二总体方案 (4)三程序的调试与运行结果说明 (4)四课程设计总结 (6)五后记 (7)六附录 (7)参考文献 (11)一概述课程设计的目的实现个人通讯录管理, 录入包括姓名、地址、邮政编码、电话号码的信息。
其中:1.对n名学生包括姓名、地址、邮政编码、电话号码等信息进行输入;2、显示所有记录的信息, 若无记录, 则给出提示信息;3.可以按姓名进行查询;4.可以按姓名进行删除;6.退出程序1.课程设计的要求教师要求:1、为通信录数据定义类型和定义通信录变量, 实现功能: 存取、显示、删除记录、查询记录等功能。
2.要求:界面友好, 易于操作。
(本题目限最多一个人完成)需要的基本知识和技能:1.利用C语言进行程序设计的能力;2.理解和运用结构化程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用流程图或N-S图表示算法;6.掌握书写程序设计开发文档的能力。
2.课程设计的主要设计思想整个程序的设计是通过对每一个功能的设计, 然后, 再对每一个功能的程序进行模块化, 从而形成一个完整的管理系统。
自顶向下、逐步细化、逐步求精。
在对于给定问题进行透彻的了解和详细的分析的基础上, 把问题分解成若干个按顺序执行的逻辑部分(称为“模块”)。
每个子任务如果仍很复杂, 还可以再分解为若干个子任务。
对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法, 将它们分解成为基本结构为止, 就如同写文章先拟出题目和中心内容, 再确定分为几大部分, 每一大部分又分哪几节, 每一节分为几段, 每一段包括哪几个意思, 这就是“自顶向下, 逐步细化”的方法。
二总体方案整体设计思路: 程序主要运用到了文本文件的打开和读取, 文件中存取信息的格式为结构体数组, 一个主函数下面分为个子函数。
C语言程序设计实训报告之通讯录管理

青岛大学软件技术学院C语言程序设计实训报告姓名任XX专业软件技术班级软件技术班指导教师白伟青2011 年 7月14日目录1问题定义与描述 ................................................................................................................................ - 1 -1. 1问题定义 ............................................................................................................................................ - 1 -1. 2问题描述 ................................................................................................................................................ - 1 - 2总体设计 .................................................................................................................................................. - 1 -2.1主要功能模块 ......................................................................................................................................... - 1 -2.2数据类型定义 ......................................................................................................................................... - 2 -2.3函数定义 .............................................................................................................................................. - 2 - 3详细设计 .................................................................................................................................................. - 2 -3.1每个模块的功能 ..................................................................................................................................... - 2 -3.2流程图 ..................................................................................................................................................... - 3 - 4程序测试 .................................................................................................................................................. - 7 -4.1测试主菜单界面 ..................................................................................................................................... - 7 -4.2测试添加界面 ......................................................................................................................................... - 7 -4.3测试显示界面 ......................................................................................................................................... - 7 -4.4测试删除界面 ......................................................................................................................................... - 8 -4.5测试查询界面 ......................................................................................................................................... - 8 -4.6测试修改界面 ......................................................................................................................................... - 9 -4.7测试保存界面 ......................................................................................................................................... - 9 - 5心得体会 ................................................................................................................................................ - 10 - 6参考文献 ................................................................................................................................................ - 11 - 7附录 ............................................................................................................................................................ - 11 -1问题定义与描述1.1问题定义通讯录管理系统1. 2问题描述✧该程序应该能够提供添加、删除和修改通讯录信息的功能;✧基本信息包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;✧能够提供安不同方式查询的功能;如按姓名、年龄或电话等查询;✧能将通讯录保存在文件中;✧能够输出通讯录信息;✧并且界面友好,易于操作。
c通讯录管理系统实验报告

c通讯录管理系统实验报告C通讯录管理系统实验报告一、引言现代社会的快速发展,人们的生活节奏越来越快,人际交往也变得越来越频繁。
在这样的背景下,通讯录管理系统成为了人们生活中必不可少的工具。
本次实验旨在设计和实现一个简单而实用的C通讯录管理系统,以便更好地满足人们的通讯录管理需求。
二、系统功能设计1. 用户管理功能通讯录管理系统需要提供用户注册和登录功能,以保证用户的信息安全和数据隐私。
2. 联系人管理功能用户可以添加、修改、删除和查询联系人信息。
系统应该提供用户友好的界面,方便用户进行操作。
3. 分组管理功能为了更好地管理联系人,系统需要提供分组管理功能。
用户可以创建、修改和删除分组,将联系人进行分类管理。
4. 通讯录导入导出功能用户可以将通讯录数据导出为文件,以备份或者在其他设备上使用。
同时,用户也可以从文件中导入通讯录数据,方便快速恢复或者在不同设备间同步数据。
三、系统实现本次实验采用C语言编写通讯录管理系统。
系统使用了链表数据结构来存储联系人信息,以实现高效的增删改查操作。
1. 用户管理功能的实现系统使用文件存储用户信息,包括用户名和密码。
用户注册时,系统将用户名和密码写入文件中。
用户登录时,系统读取文件中的信息进行验证。
2. 联系人管理功能的实现系统使用链表来存储联系人信息。
每个节点包含姓名、电话号码、邮箱等信息。
用户可以通过添加、修改、删除和查询功能来对联系人进行管理。
3. 分组管理功能的实现系统使用链表来存储分组信息。
每个节点包含分组名称和包含的联系人列表。
用户可以通过创建、修改和删除分组来实现对联系人的分类管理。
4. 通讯录导入导出功能的实现系统提供了将通讯录数据导出为文件的功能。
用户可以选择导出的文件格式,如文本文件或者Excel文件。
同时,系统也支持从文件中导入通讯录数据,以便快速恢复或者在不同设备间同步数据。
四、系统测试与评估在系统开发完成后,我们进行了一系列的测试和评估,以验证系统的功能和性能。
学生通讯录管理系统(C语言课程设计实验报告)

C语言课程设计姓名:刘显学号:09041131班级:090411专业:计算机科学与技术学院:信息工程学院设计题目:学生通讯录管理系统指导教师:宋文琳提交时间:2010年9月4日课程题目:学生通讯录管理系统要求:学生通讯录信息包括:学号、姓名、班机、联系电话、E-mail、宿舍等主要功能:1、通讯录信息录入功能2、通讯录信息删除功能3、通讯录信息浏览功能4、通讯录信息查询功能5、按学号排序功能一、总体设计首先,整个系统必须有一个主函数,为了尽量提高程序的易修改性,且不至于相互干扰,将每一个功能分成不同的模块,用不同的函数来实现,例如在我写的这个程序中,一共用了11个函数,分别是:主菜单函数menu()、关于函数gaunyu ()、帮助函数help()、输出单个学生信息函数shuchu()、输入函数shuru()、输出所有学生信息函数findall()、按姓名查找函数findname()、按学号查找函数findnum ()、删除函数shanchu()、排序函数paixu ()、主函数main(),这样在整个程序的设计过程中也就一目了然,写起来也相对轻松了不少。
这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。
二、具体设计关于这个程序的具体设计,也不是一两句话就能说完的,所以我也不想再在这里赘述了,因为程序里都可以看的到,几乎每个函数都倾注了我的大量汗水,我在这上面花了不少的时间,不过从中也收获了很多,因为不停地修改不停的调试,总之还是直接看源程序吧,因为也没必要在这里重复地说废话。
三、源代码以下是整个程序的源代码,其中我的主菜单函数是很美观的,但由于这里字体和板式的限制,不能很好的显现,可以看我下面程序运行的截图就知道了。
C#实验报告通讯录管理系统资料

C#实验报告通讯录管理系统学院:计算机科学学院班级:12级网络工程1班姓名:张挺学号:41209040120日期:2014年11月11日一、试验目的:熟悉数据库应用程序的开发步骤;学会运用数据库组件结构中的数据集组件、数据源组件和数据控制组件;学会使用数据源ODBC连接;练习使用相应组件及SQL语句完成对数据库的查询。
二、实验内容:1.编写一个通讯录应用程序,该通讯录应用程序应具有信息的查看、编辑功能。
2.该通讯录应用程序应具有对信息的添加和删除功能。
3.该通讯录应用程序应具有如下对信息的查找功能:1)可以用名字和电话号码进行查询;2)支持模糊查询。
三、功能截图:(一)登陆界面:用户输入账号和密码,若是输入不完整则出现提示:(二)菜单界面:真确输入账号和密码后,登陆到菜单界面(3)查询功能界面:a.模糊查询:b.查询图示:c.修改:d.删除:(四)查看所有:(五)添加联系人:四、主要代码:(1)主界面:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Data.SqlClient;namespace 通讯录{public partial class menu : Form{string sql = "";SqlConnection conn = new SqlConnection("server=localhost;database=phone;user=sa;password=994717664");//连接数据库public menu(){InitializeComponent();}private void button2_Click(object sender, EventArgs e){this.Hide();view f2 = new view();f2.Show();}private void menu_Load(object sender, EventArgs e){string name;string number;try{conn.Open();//打开数据库sql = "select Name,Number from contact";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);//创建实例SqlDataReader rd2 = cmd.ExecuteReader();//读数据while (rd2.Read()){name = Convert.ToString(rd2["Name"]);number = Convert.ToString(rd2["Number"]);comboBox1.Items.Add(name);comboBox2.Items.Add(number);}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd1.Dispose();//销毁对象,回收垃圾}/ /*/}private void button3_Click(object sender, EventArgs e){this.Hide();Form1 f3 = new Form1();f3.Show();}private void button4_Click(object sender, EventArgs e){//string sql="";if (comboBox1.Text.Length != 0){sql = "select * from contact where Name= '" + comboBox1.Text.Trim() + "'";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);try{conn.Open();SqlDataReader rd = cmd.ExecuteReader();while (rd.Read()){textBox1.Text = Convert.ToString(rd["Name"]);comboBox3.Text = Convert.ToString(rd["Number"]);textBox3.Text = Convert.ToString(rd["Adresss"]);textBox4.Text = Convert.ToString(rd["Remarks"]);textBox5.Text = Convert.ToString(rd["Sex"]);}if(textBox1.Text.Length==0)MessageBox.Show("查无此人!", "提示");comboBox1.Text="";comboBox2.Text = "";rd.Close();conn.Close();cmd.Dispose();//销毁对象,回收垃圾}catch{conn.Close();}}else if (comboBox2.Text.Length != 0){sql = "select * from contact where Number= '" + comboBox2.Text.Trim() + "'";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);//创建实例try{conn.Open();SqlDataReader rd1 = cmd.ExecuteReader(); while (rd1.Read()){textBox1.Text = Convert.ToString(rd1["Name"]);comboBox3.Text = Convert.ToString(rd1["Number"]);textBox3.Text = Convert.ToString(rd1["Adresss"]);textBox4.Text = Convert.ToString(rd1["Remarks"]);textBox5.Text = Convert.ToString(rd1["Sex"]);}if (textBox1.Text.Length == 0)MessageBox.Show("查无此人!", "提示");comboBox1.Text = "";comboBox2.Text = "";rd1.Close();conn.Close();cmd.Dispose();//销毁对象,回收垃圾}catch{conn.Close();MessageBox.Show("查无此人!", "提示");}}else{MessageBox.Show("请输入!", "提示");}}private void button1_Click(object sender, EventArgs e){this.Hide();add f4=new add();f4.Show();}private void pictureBox4_Click(object sender, EventArgs e){sql = "delete from contact where Name= '" + textBox1.Text.Trim() + "'";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);/try{conn.Open();int n = cmd.ExecuteNonQuery();if (n > 0) MessageBox.Show("成功删除联系人!");}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd.Dispose();//销毁对象,回收垃圾}comboBox1.Items.Clear();//置空查询框comboBox1.Items.Add("");comboBox2.Items.Clear();comboBox2.Items.Add("");comboBox3.Items.Clear();comboBox3.Text = "";textBox1.Text = "";textBox3.Text = "";textBox4.Text = "";textBox5.Text = "";menu_Load(null,null); //刷新窗体}private void pictureBox5_Click(object sender, EventArgs e){sql = "update contact set Name='" + textBox1.Text + "',Number='" + comboBox3.Text + "',Adresss='" + textBox3.Text + "',Remarks='" + textBox4.Text + "',Sex='" + textBox5.Text + "' where Name='" + textBox1.Text + "'";SqlCommand cmd = new SqlCommand();try{cmd.Connection = conn;mandText = sql;conn.Open();int n = cmd.ExecuteNonQuery();if (n > 0) MessageBox.Show("成功修改联系人信息!");}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd.Dispose();//销毁对象,回收垃圾}}}}(2)添加联系人:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 通讯录{public partial class add : Form{string strsql = "";SqlConnection conn = new SqlConnection("server=localhost;database=phone;user=sa;password=994717664");//连接数据库public add(){InitializeComponent();}private void button2_Click(object sender, EventArgs e){textBox1.Clear();textBox2.Clear();textBox3.Clear();textBox4.Clear();textBox5.Clear();textBox1.Focus();}private void button3_Click(object sender, EventArgs e){this.Hide();menu f1 = new menu();f1.Show();}private void button1_Click(object sender, EventArgs e){strsql ="insert into contact values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textB ox5.Text+"')";SqlCommand cmd1 = new SqlCommand();try{cmd1.Connection = conn;mandText = strsql;conn.Open();int n = cmd1.ExecuteNonQuery();if (n > 0) MessageBox.Show("成功添加联系人");}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd1.Dispose();//销毁对象,回收垃圾}this.Hide();menu f3 = new menu();f3.Show();}}}(3)查看代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.Odbc;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 通讯录{public partial class view : Form{public view(){InitializeComponent();}private void view_Load(object sender, EventArgs e){OdbcConnection odbcCon = new OdbcConnection("DSN=phone;uid=sa;pwd=994717664");try{OdbcDataAdapter odbcDat = new OdbcDataAdapter("SELECT * FROM contact", odbcCon);DataTable dt = new DataTable("phone");odbcDat.Fill(dt);this.dataGridView1.DataSource = dt.DefaultView;}catch (Exception ey){MessageBox.Show(ey.Message);}}private void timer1_Tick(object sender, EventArgs e){label1.Text = string.Format("现在时间:{0}",DateTime.Now.ToLongTimeString());}private void pictureBox2_Click(object sender, EventArgs e){this.Hide();menu f1 = new menu();f1.Show();}private void pictureBox3_Click(object sender, EventArgs e){this.Hide();Form1 f2 = new Form1();f2.Show();}private void pictureBox1_Click(object sender, EventArgs e){this.Hide();add f3 = new add();f3.Show();}}}五、实验思考:(1)这个简单的通讯录力求简单,容易操作,让人一看就会。
c语言课程设计报告通讯录管理系统

一:需求分析二:总体设计三:详细设计四:调试与测试五;测试结果六:本次课程设计的心得体会七:附录本程序设计亮点介绍(及)改进方面1.在修改函数中,可以实现单条记录修改(运用switch)2.查询函数中,能返回该函数继续查询(运用了递归)3.使用变量少,仅通过变量i的递加和表示成员数的变量n就实现了数据结构体之间的联系4.界面美观,使用方便5.允许编号输入为字符6.在显示函数上能够分屏显示(换页)缺点在输入数据时,未输完一个成员的所有信息不能退出输入一:需求分析A.需要实现的功能有:输入功能、输出功能、显示功能、查找功能、以及增加、删除、修改功能。
输入功能要求一次完成若干信息的输入;显示功能要能完成所有信息的显示,并且自动分页;查找可以通过多种方式进行。
按需求的功能,应该设计出输入函数、输出函数、显示函数、查找函数、修改函数。
另需要一个标准界面。
B.数据存储问题这个系统数据庞大复杂,需要需要适当应用数组,循环,结构体,文件操作等基本语句及稍有难度的语句。
因此要求我们熟练掌握结构化程序设计的基本思路和方法,在所掌握的基本知识和技能的基础上,进一步提高自学能力和查找资料的能力,解决一定程度的复杂的结构化程序设计问题,加深对所学知识的理解与掌握,利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。
二:总体设计主要结构图示本程序由主函数和多个子函数组成,可执行多种数据管理的功能。
具体通过c语言中结构体数组来实现。
主函数主体为定义的结构体,和一个switch函数,以提供多种程序操作功能。
主要需运用到结构体数组、文件、函数等内容知识。
子函数有六个,分别负责添加、显示、删除、查询、修改、保存的功能。
通过变量i使结构体数组之间达成数据链表的功能,利用该方法主要考虑到成员中对于结构体指针尚未熟练掌握,而这种方法更加便捷易懂。
子函数功能介绍1.添加:输入成员信息,依次输入编号、姓名、QQ、电话号码、单位、电子邮箱、身份。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高级程序设计》课程实训报告题目:通讯录管理系统完成人:专业班级:学号:指导教师:2012年 1 月 5 日1 题目与要求1.1 问题提出本人计划编写一个通讯录管理系统。
通讯录一般包括通讯者的姓名、电话及类别等信息,用来管理学生基本信息及成绩信息。
要求实现通讯者的插入、查询、删除等操作。
1.2 本系统涉及的知识点结构、数组、循环、函数、分支、文件操作等。
1.3 功能要求1、建立学生信息,每个通讯者的信息包括:姓名、电话号码、QQ、类别(小学,初中,高中,大学);2、新增通讯录信息;3、根据姓名,电话号码,QQ等查找该通讯者的信息并输出;4、输入通讯者的姓名,进行查找并修改信息,若不存在该通讯者,则提示说明;5、根据姓名删除指定信息;6、显示全部的通讯者信息;7、能够将输入信息导出文件,同时能把文件导入到内存中;8、退出整个系统操作。
2 功能设计2.1 算法设计1、利用switch语句设计如图1所示的主菜单:图1 学生信息管理系统主菜单2、菜单选项示例:选择1后,调用新增函数,进入函数后利用printf(),scnaf()语句实现一个如图2所示的输入。
图2 排序子菜单选择2后,调用查找函数,进入函数后利用switch语句实现一个如图3所示的菜单,该菜单中每个选项调用一个函数,完成通讯录信息的查找。
图3 查找子菜单3、根据所选菜单编写相应代码:1)主函数main():根据选单的选项调用各函数,并完成相应的功能。
2)菜单函数menu():显示提示选单。
3) 新增函数add():在通讯录结构体总追加入新的通讯录信息,并返回选单。
4)查找函数find():查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
5)修改函数alter():修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
6)删除函数Delete():删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
7)显示函数list():显示通讯录中的所有记录。
8)导入函数input():能从指定的文件中读入通讯录的信息.9)导出函数output的:能将通讯录的信息写入指定的文件中10)退出函数 quit():退出选单。
11)名字查找函数Find():作为查找,输入修改,删除时调用的名字查找函数,判断是否存在要查找的记录,若存在则返回‘0’,不存在则返回其他值。
12)电话号码查找函数Find_num(),QQ查找函数Find_qq(),类别查找函数Find_type()与名字查找函数功能一致。
图4通讯录管理系统模块图2.2 12)删除模块3 程序代码设计(1).菜单模块1)函数原形:void menu()2)功能:使用printf()语句输出主菜单提示。
4)说明:每次执行完其他函数都调用菜单函数,使其返回主菜单,重新选择功能。
(2).新增模块1)函数原形:void add()2)功能:使用printf()、scnaf()、getchar()、while()、if()语句输出选项提示,并逐一输入通讯录全部信息(姓名、电话号码、QQ、类别)到结构体中。
利用while()进行重复输入,getchar()进行退出。
同时利用名字查找函数Find()对输入信息进行是否重复的判断。
3)变量及类型:struct student stud:定义一个结构体变量,从第一次以后输入的数据放入其中,进行数据判断后才放入结构体数组中。
4)说明:执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。
3). 查找模块1)函数原形:void find()2)功能:利用while()重复查找功能,getchar()进行退出循环。
switch(),getchar()进行按姓名、电话号码、QQ等查找方式的选择。
按照相应的选择方式调用名字查找函数Find(),电话号码查找函数Find_num(),QQ查找函数Find_qq(),类别查找函数Find_type()。
3)变量及类型:char s[20]:选择查找方式后将姓名、电话、QQ等放入其中再调用查找函数。
char ch:对查找方式进行选择。
char ch1:对退出查找进行选择。
(4).修改模块1)函数原形:void alter()2)功能:用if-else作处理。
调用名字查找函数Find(),如果无该查找记录则提示且退出修改函数。
反之利用switch()修改的选择1.覆盖修改(重新输入全部信息),2.部分修改,当选择2时提供姓名、电话号码、QQ、类别四个修改选项,且利用while()进行多项修改。
3)变量及类型:char,s[20]:选择查找方式后将姓名、电话、QQ等放入其中再调用查找函数。
char,ch:选择2 部分修改时,当选择提供姓名、电话号码、QQ、类别四个修改选项char ch1:控制退出switch()。
char ch2:控制退出while()。
(5).删除模块1)函数原形:void Delete()2)功能:调用名字查找函数Find()判断数据的重复性,while()进行多次操作。
3)变量及类型:char s[20]:对数据姓名、电话、QQ等放入其中再调用查找函数。
char ch:控制退出while()char ch1:控制退出while()(6).显示模块1)函数原形:void list()2)功能:for,printf显示去全部的通讯录信息。
3)变量及类型:(7).导出模块1)函数原形:void output()2)功能:将内存中的数据导出到文件中。
3)变量及类型:FILE *fp:进行文件指针操作。
(8).导入模块1)函数原形void input()2)功能:将文件中的数据导出到中内存。
3)变量及类型:FILE *fp:进行文件指针操作。
(8).查找返回模块1)函数原形int Find(char s[]),int Find_num(char s[]),int Find_qq(char s[]),int Find_type(char s[])。
2)功能:用于名字,电话号码,QQ,类别查找。
3)变量及类型:int i:用于for循环。
int c:对名字判断后返回值。
4总结1.通过本次实训巩固对高级语言程序设计这门课程的教学内容,提高对C语言的基本应用能力2.同时通过本实训课程,训练程序设计的思维能力,提高了分析问题和解决问题的能力,为后续专业课程的学习打下良好的基础。
3. 掌握了C 语言程序设计方法,熟悉使用VC6.0软件开发C语言程序的过程。
熟悉C 语言基本数据类型的定义和使用、用户自定义类型的定义和使用。
4. 熟悉顺序结构、分支结构和循环结构的设计思想以及代码实现,体会了模块化程序设计的思想。
要求各个功能用函数实现5. 问题分析与算法设计的能力进一步提高。
参考文献[1] 张磊,C语言程序设计(第2版),高等教育出版社,2009[2],张磊,C语言程序设计实验与实训指导及题解(第2版),高等教育出版社,2009附录:程序清单#include<stdio.h>#include<string.h>#define M 100static int N=0,I=0;struct student{char name[20];char num[20];char qq[20];char type[10];}stu[M];void menu();void add();void find();void alter();void Delete();void list();void input();void output();int quit();int Find(char []);int Find_num(char []);int Find_qq(char []);int Find_type(char []);void main(){int op;menu();while(1){printf("\t\n\t\t 请选择功能(1-8):");scanf("%d",&op);getchar();switch(op){case 1:printf("\n\t1.***********新增记录****************\n");add();break;case 2:printf("\n\t2.**********查找通讯录***************\n");find();break;case 3:printf("\n\t3.**********修改通讯录***************\n");alter();break;case 4:printf("\n\t4.**********删除通讯录***************\n");Delete();break;case 5:printf("\n\t5.**********显示通讯录***************\n");list();break;case 6:printf("\n\t6.*******从内存导出文件中************\n");output();break;case 7:printf("\n\t7.*******从文件导入内存中************\n");input();break;break;case 8:printf("\n\t8.*************退出******************\n");op=quit();break;default:printf("\t***Not have the function!***\n");break;}if(op==8){printf("\n\t感谢您的使用,已退出程序!\n\t");break;}elsecontinue;}}void menu(){printf("\n");printf("\t============通讯录管理菜单===========\n");printf("\t*\t1.增加新的记录 *\n");printf("\t*\t2.查找通讯录 *\n");printf("\t*\t3.修改通讯录 *\n");printf("\t*\t4.删除通讯录 *\n");printf("\t*\t5.显示全部通讯录 *\n");printf("\t*\t6.把通讯录导出到文件 *\n");printf("\t*\t7.从文件导入通讯录 *\n");printf("\t*\t8.退出 *\n");printf("\t=====================================\n");}//1实现新增void add(){struct student stud;while(1){printf("\n\t***当前共存在%d条记录,请输入下一条***",N);if(N==0){printf("\n\t请输入姓名:");scanf("%s",stu[N].name);printf("\t请输入电话号码:");scanf("%s",stu[N].num);printf("\t请输入QQ号:");scanf("%s",stu[N].qq);printf("\t请输入类别(小学、初中、高中、大学):");scanf("%s",stu[N].type);N++;printf("\n\t是否输入下一条(Y)?按任意键返回主菜单:");if(getchar()=='Y'||getchar()=='y')continue;break;}printf("\n\t请输入姓名:");scanf("%s",&);printf("\t请输入电话号码:");scanf("%s",&stud.num);printf("\t请输入QQ号:");scanf("%s",&stud.qq);printf("\t请输入类别(小学、初中、高中、大学):");scanf("%s",&stud.type);if(!Find()){printf("\n\n\t发现通讯录中存在该记录,确认新增吗(Y)?其它任意键将覆盖:");if(getchar()=='Y'||getchar()=='y'){stu[N]=stud;N++;}elsestu[I]=stud;printf("\n\t$$$$$$操作成功!$$$$$$\n");}else{stu[N]=stud;N++;}printf("\n\t是否输入下一条(Y)?按任意键返回主菜单:");if(getchar()=='Y'||getchar()=='y')continue;break;}menu();}//2 实现查找void find(){char s[20],ch,ch1;while(1){printf("\n\t=========选择查找方式=========");printf("\n\t*\t1.按姓名查找 *");printf("\n\t*\t2.按电话号码查找 *");printf("\n\t*\t3.按QQ查找 *");printf("\n\t*\t4.按类别查找 *");printf("\n\t=============================\n");printf("\n\t请输入查找方式(1-4):");ch=getchar();getchar();switch(ch){case '1':printf("\n\t请输入姓名:");gets(s);if(Find(s))printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!$$$\n");break;case '2':printf("\n\t请输入电话号码:");gets(s);if(Find_num(s))printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!$$$\n");break;case '3':printf("\n\t请输入QQ号码:");gets(s);if(Find_qq(s))printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!$$$\n");break;case '4':printf("\n\t请输入类别:");gets(s);if(Find_type(s))printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!$$$\n");break;default:printf("\t***Have not the function!***");printf("\t\n");break;}printf("\n\n\t继续查找吗(Y)?,按任意键返回主菜单:");ch1=getchar();getchar();if(ch1=='Y'||ch1=='y')continue;break;}menu();}//3 实现修改void alter(){char ch,ch1,ch2,s[20];printf("\n\t请输入要修改的姓名:");gets(s);if(Find(s))printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!$$$\n");else{printf("\n\n\t===============请选择修改方式==============");printf("\n\t*\t1.覆盖修改(重新输入全部信息) *");printf("\n\t*\t2.部分修改 *");printf("\n\t===========================================\n");printf("\n\t请选择修改的方式(1-2):");ch=getchar();getchar();switch(ch){case '1':printf("\n\t请输入姓名:");scanf("%s",stu[I].name);printf("\t请输入电话号码:");scanf("%s",stu[I].num);printf("\t请输入QQ:");scanf("%s",stu[I].qq);printf("\t请输入类别(小学、初中、高中、大学):");scanf("%s",stu[I].type);printf("\n\t修改成功! 修改后记录为:\n");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);break;case '2':while(1){printf("\n\t**请选择要修改的项目:***");printf("\n\t1.姓名");printf("\n\t2.电话号码:");printf("\n\t3.QQ:");printf("\n\t4.类别:");printf("\n\t************************\n");printf("\n\t请输入要修改的项目(1-4):");ch1=getchar();getchar();switch(ch1){case '1':printf("\n\t请输入修改后的姓名:");scanf("%s",s);break;case '2':printf("\n\t请输入修改后的电话号码:");scanf("%s",stu[I].num);break;case '3':printf("\n\t请输入修改后的QQ:");scanf("%s",stu[I].qq);break;case '4':printf("\n\t请输入修改后的类别(小学、初中、高中、大学):");scanf("%s",stu[I].type);break;}getchar();printf("\n\t$$$修改成功!$$$\n\n修改后记录为:");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);printf("\n\n\t继续修改(Y)?按任意键返回主菜单:");ch2=getchar();getchar();if(ch2=='Y'||ch2=='y')continue;break;}break;default:printf("\t***Not have the function!***\n");break;}}menu();}//4 实现删除void Delete(){char s[20],ch,ch1;while(1){while(1){printf("\n\t请输入要删除的姓名:");scanf("%s",s);getchar();if(Find(s)){printf("\n\t不存在该条记录,请确认是否输入有误或不存在该记录!\n");break;}else{printf("\n\n\t确认删除该条记录吗(Y)?按任意键保留原纪录并返回主菜单:");ch=getchar();getchar();if(ch=='Y'||ch=='y'){for(I;I<N-1;I++)stu[I]=stu[I+1];printf("\n\t$$$删除成功!$$$\n");N-=1;break;}printf("\n\t$$$已保留原纪录!$$$\n");break;}}printf("\n\t继续删除通讯录吗(Y)?,按任意键返回主菜单:");ch1=getchar();getchar();if(ch1=='Y'||ch1=='y')continue;break;}menu();}//5 实现全部显示void list(){int c=0;for(int i=0;i<N;i++){if(c==0){printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");}printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);c++;}printf("\n\n\t----------------------------当前记录共有%d条!\n",i);menu();}//6实现导出void output(){FILE *fp;int i;while(1){if((fp=fopen("tongxunlu.txt","w"))==NULL){printf("\n\t$$$can not open the file!$$$\n");break;}else{for(i=0;i<N;i++){fwrite(&stu[i],sizeof(struct student),1,fp);}fclose(fp);printf("\n\t\t$$$导出成功!$$$\n");break;}}menu();}//7实现导入void input(){FILE *fp;int i;struct student stud1;while(1){if((fp=fopen("tongxunlu.txt","r"))==NULL){printf("\n\t$$$can not open the file!$$$\n");break;}else{printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");for(i=0;i<N;i++){fread(&stud1,sizeof(struct student),1,fp);printf("\n\t%-8s%-16s%-16s%-8s",,stud1.num,stud1.qq,stud1.type);}fclose(fp);printf("\n\n\t\t$$$导入成功!$$$\n");break;}}menu();}//8实现程序退出int quit(){char ch;printf("\n\t确定退出吗(Y)?按任意键返回主菜单:");ch=getchar();if(ch=='Y'||ch=='y')return(8);elsereturn(1);}//用于名字查找int Find(char s[]){int i,c,c1=0;for(i=0;i<N;i++){while(1){if((strcmp(stu[i].name,s))==0){I=i,c=0;if(c1==0){printf("\n\t查找成功:");printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");}printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);c1++;break;}elsebreak;}}if(c==0)return(c);elsereturn(1);}int Find_num(char s[]){int i,c,c1=0;for(i=0;i<N;i++){while(1){if((strcmp(stu[i].num,s))==0){I=i,c=0;if(c1==0){printf("\n\t查找成功:");printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");}printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);c1++;break;}break;}}if(c==0)return(c);elsereturn(1);}int Find_qq(char s[]){int i,c,c1=0;for(i=0;i<N;i++){while(1){if((strcmp(stu[i].qq,s))==0){I=i,c=0;if(c1==0){printf("\n\t查找成功:");printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");}printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);c1++;break;}break;}}if(c==0)return(c);elsereturn(1);}int Find_type(char s[]){int i,c,c1=0;for(i=0;i<N;i++){while(1){if((strcmp(stu[i].type,s))==0){I=i,c=0;if(c1==0){printf("\n\t查找成功:");printf("\n\t姓名\t电话号码\tQQ\t\t类别");printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");}printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);c1++;break;}break;}}if(c==0)return(c);elsereturn(1);}(注:文档可能无法思考全面,请浏览后下载,供参考。