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

合集下载

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语言课程设计实习报告——通讯录管理系统

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语言版)

中南大学个人通讯录管理系统实验报告+源码(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语言电话本管理系统程序设计实训报告

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语言程序设计实习报告

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通讯录管理系统实验报告

C通讯录管理系统实验报告1. 引言通讯录是我们日常生活中非常常见的一种信息管理工具,用于存储和管理联系人的信息。

本实验旨在设计和实现一个基于C语言的通讯录管理系统。

本文将介绍系统的设计思路、功能实现以及使用过程中的注意事项。

2. 设计思路通讯录管理系统主要包括以下功能: - 添加联系人:输入联系人的姓名、电话号码和电子邮件信息,将其添加到通讯录中。

- 删除联系人:输入联系人的姓名,从通讯录中删除该联系人。

- 查找联系人:输入联系人的姓名,系统将显示该联系人的详细信息。

- 修改联系人:输入联系人的姓名,可以修改该联系人的电话号码和电子邮件信息。

- 显示所有联系人:系统将按照添加的顺序显示通讯录中所有联系人的信息。

在设计过程中,我们采用了如下的步骤思考: 1. 定义联系人结构体:使用结构体来存储联系人的姓名、电话号码和电子邮件信息。

2. 定义通讯录结构体:使用动态数组来存储联系人的信息,以及记录通讯录的当前大小和最大容量。

3. 实现添加联系人功能:动态扩展通讯录数组的容量,将新的联系人信息添加到数组中。

4. 实现删除联系人功能:根据输入的姓名,查找并删除对应的联系人。

5. 实现查找联系人功能:根据输入的姓名,查找并显示对应联系人的详细信息。

6. 实现修改联系人功能:根据输入的姓名,查找并修改对应联系人的电话号码和电子邮件信息。

7. 实现显示所有联系人功能:按照添加的顺序,显示通讯录中所有联系人的信息。

3. 功能实现3.1 定义联系人结构体联系人结构体包含姓名、电话号码和电子邮件信息的变量。

3.2 定义通讯录结构体通讯录结构体包含一个指向联系人结构体的指针和记录当前容量和最大容量的变量。

3.3 实现添加联系人功能在添加联系人之前,首先需要判断通讯录数组是否已满。

如果已满,则需要动态扩展通讯录数组的容量。

然后,将新的联系人信息添加到数组中,更新通讯录的当前大小。

3.4 实现删除联系人功能根据输入的联系人姓名,在通讯录数组中查找对应的联系人。

c语言通讯录管理实验报告及源程序代码

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语言通讯录管理系统实验报告

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("找到该联系人。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);}(注:文档可能无法思考全面,请浏览后下载,供参考。

相关文档
最新文档