C语言通讯录实训论文.docx
- 文档编号:7152704
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:28
- 大小:393.81KB
C语言通讯录实训论文.docx
《C语言通讯录实训论文.docx》由会员分享,可在线阅读,更多相关《C语言通讯录实训论文.docx(28页珍藏版)》请在冰豆网上搜索。
C语言通讯录实训论文
摘要
深对《C语言》课程所学知识的理解,进一步巩固C语言编程方法。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。
设计一个简易的手机通讯录管理系统。
该题目要求在熟练掌握C语言的基本知识:
数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
其中结构体,函数的调用,算法的设计是尤为重要的。
在本实验中应用VisualC++软件来实现试验的最终的结果。
本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。
在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。
本论文主要从系统分析、系统设计、系统实施与使用等几个方面进行介绍。
关键词:
C语言数据类型运算类型程序结构
绪论
纸质的通讯录已经不能满足我们的要求,更新麻烦,查询困难等缺点是纸质通讯录所不能克服的。
在此情况下,迫切需要一个电子版的通讯录来满足我们的要求。
电话簿管理系统是利用单链表实现电话簿管理,进而掌握C语言中的结构体、链表,指针、函数(系统函数,自定义函数)等C语言知识。
本文通过利用模块化程序设计思想,使用单链表和结构体等编写出的可以实现添加、查找、删除、保存等功能的通讯录管理系统。
通过完成这个设计让我们熟悉并掌握在C语言中使用结构体、单链表、指针、函数、和模块化设计思想。
通讯录管理系统的建立是可以有效节省同学、朋友、客户间日常交流的投资(指时间、精力),其设计理念很简单,变传统的纸张与笔录方式为计算机自动化进行通讯录信息管理系统,既省时间又提高效率。
通讯录系统设计,它的内容对于计算机来说是至关重要的,通讯录系统为计算机的使用者提供充足的信息和快捷的查询手段。
本实训是非数值计算型算法设计,设计出了通讯录管理系统的基本功能,并设计了简单的界面。
首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。
然后利用模块来分别实现程序的各个功能。
各个模块用函数来实现。
在通过主函数来判断输入数字,从而调动函数,实现所需功能。
最后将输入的文件保存在文件里,以便重复使用。
根据功能需要建立添加,显示,删除,查询,修改,保存,退出七个模块。
在模块中通过调用各个函数来实现功能。
1、记录通讯录内的人员的姓名、地址、邮编、电话号码。
2、显示所有人员的信息。
3、通过输输入姓名查找人员信息。
4、通过输入姓名查找找到要删除的人员信息,然后可以进行删除。
5、通过输入姓名查找到要修改的人员信息,然后可以进行修改。
6、增加人员信息。
7、保存人员信息。
8、退出该系统。
1概要设计
1.1设计题目及要求:
1、建立通讯录信息,信息包含姓名、籍贯、电话号码、电子邮箱等;
2、能够提供添加、删除和修改通讯录信息的功能;
3、能够提供安不同方式查询的功能;如按姓名或籍贯、电话等查询;
4、将通讯录保存在文件中;
5、能够按表格方式输出通讯录信息;
1.2总体设计
首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。
然后利用模块来分别实现程序的各个功能。
各个模块用函数来实现。
在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。
最后将输入的文件保存在文件里,以便重复使用。
用户可以对本系统进行自己的查询或修改操作,如根据用户的需求自动的进行增加操作、删除操作、显示操作、查找操作、修改操作等。
本系统采用的是自顶而下、层次化的模块结构。
对于高层模块,采用以事物为中心的设计策略。
把一个大的模块逐步分解成较小的相对简单的模块。
底层模块,采用以变换为中心的设计策略。
为了达到高内聚,低偶合的效果,我们可以把每一个模块设计成具有单一功能模块,使模块间的联系完全是通过主模块的控制和调用来现实。
1.3总体模块设计
根据功能需要建立显示,添加,查询,删除,修改,保存,退出七个模块。
在模块中通过调用各个函数来实现功能。
添加:
可以添加通讯录记录,依次输入姓名、电话号码、籍贯、电子邮箱后,会提示是否继续添加。
显示:
可以以表格形式输出所有通讯录里的记录。
删除:
输入欲删除的那个人的名字后,会自动删除他(她)的记录内容。
查询:
可以选择用姓名、电话、籍贯三种方式查询。
修改:
输入欲修改的那个人的名字后,再依次输入姓名、电话号码、籍贯、电子邮箱即可完成修改。
保存:
输入文件名(带后缀名)后,即可将通讯录信息保存到文件。
退出:
当你不需要执行任务的时候,可以退出该系统。
2软件介绍
VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。
所以实际中,更多的是以VisualC++6.0为平台。
VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。
就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。
C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低C++/C。
一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。
本系统采用C语言作为开发工具,C语言的主要特点如下:
1、语言简洁、紧凑,使用方面。
2、运算符和数据类型丰富,具有现代语言的各种数据结构。
3、具有结构化的语句。
4、语法限制不太严格,程序设计自由度大。
5、生成的目标代码质量高,程序执行效果高。
6、用C语言编写的程序可移植性的比较好,基本上不做任何修改就能运用于各种型号的操作系统中。
7、C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
2.1运行环境
Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。
它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。
它以拥有“语法亮”IntelliSense(自动编译功能)以及高级除错功能而著称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。
这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。
系统使用Visual C++ 作为程序开发工具。
Visual C++是基于对象的快速应用程序开发工具,是当今最强大、最灵活的应用程序开发工具之一,具有良好的可视化应用程序开发环境和强大的可扩展数据库功能。
利用Visual C++提供的可视化组件库进行编程,可以快速、高效地开发出基于Windows环境的各类应用程序。
Visual C++语言的特点是面向对象设计的程序语言,Visual C++的基础编程语言是具有面向对象特性的语言,具有代码稳定、可读性好、编译速度快等优点,并将面向对象的概念移植到了C语言中,使这种基础语言有了新的发展空间。
与其它编程软件相比,特别是在数据库和网络应用方面,Visual C++具有简便易用、灵活高效的特点。
3方案提出及功能要求
假设有个通讯录,要求该系统对通讯录的姓名,籍贯,电话号码,电子邮箱,进行输入,显示,查找,删除,添加,修改,保存等操作的管理。
本系统涉及到所学的知识点有:
编译预处理、循环结构、选择结构、顺序结构、数组、函数等。
1、记录通讯录内的人员的姓名、地址、邮编、电话号码。
2、添加人员信息。
2、显示所有人员的信息。
3、通过输入姓名查找人员信息。
4、通过输入姓名查找到要删除的人员信息,然后可以进行删除。
5、通过输入姓名查找到要修改的人员信息,然后可以进行修改。
7、保存人员信息。
8、退出通讯录系统。
制作一个通讯录,要求可以记录通讯人的详细联系方式,包括:
姓名,籍贯,电话号码,电子邮箱。
根据需要时能在通讯录中添加联系人也能根据联系人姓名,籍贯,电话号码中任一信息查找联系人能根据需要修改某联系人的信息能删除某联系人的所有详细信息。
4通讯录工作流程图
设计时应该先设计出主题框架,采用自顶而下、由粗到细的设计方法,主题框架设计完成之后,我们可以再其基础上进行扩充和进一步的改进,从而满足基本的设计要求,这样的设计可以避免模块的相互冲突。
1、添加:
可以添加通讯录记录,利用C语言文件,向文件中按顺序输入姓名、住址、手机号码等,该模块的功能是,假如用户需要新加入新的信息,通过键盘输入将新信息逐条加在原来输入文件上但不能覆盖原有信息。
图1增加通讯录流程图
输入信息
2、显示:
也是用通过循环依次输出文件中的数据,即输出所有通讯录里的记录。
系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。
然后执行switch语句,如果返回值是“Y”,则继续执行函数显示,否则返回主菜单。
图2显示通讯录流程图
3、删除:
当通讯录执行者输入要删除学生的姓名,系统会搜索数据库并将搜索结果输出,然后征求确认,每次删除成功后系统会询问是否继续删除,然后执行相应操作。
假如输入你要删除的人的姓名后,系统会自动删除他(她)的记录,则在删除通过switch语句满足提示你确认删除的功能,否则只有等你确认删除后才会删除。
图3删除通讯录流程图
4、查询:
先选择查询方式,以姓名查询方式为例查询模块式使用最多的功能之一,查找功能的好坏一定程度上决定了系统的好坏,好的查找模块和算法可以简化人们查找的时间并且增加查找的准确率,所以查询模块必须设计得简洁并且有较快的响应速度。
图5
图4查询通讯录流程图
5、修改:
执行system函数修改用户。
当通讯录执行者输入要修改学生的姓名,系统会搜索数据库并将搜索结果输出,然后征求确认,每次修改成功后系统会询问是否继续修改,然后执行相应操作。
然后输入你要修改的那个人的姓名后,系统会查找该通讯录文件(此时用发ftell()函数来跟踪文件指针的指向地址,找到个人的记录后,会显示他(她)的记录,然后通过fseek()函数来找到修改处的地址,然后用户再依次输入他(她)的相关信息来替代以前的记录。
图5修改通讯录流程图
4.1系统调试
系统测试的目的是为了发现错误而执行程序的过程,成功的测试时发现了至今尚未发现的错误的测试。
测试的目的就是希望能以最少的人力和事件发现潜在的各种错误和缺陷,我们应该根据开发个阶段的需求、设计等文档或程序的内部结构精心设计测试实例,并利用这些实例来运行程序,以便发现错误的过程。
系统测试的原则应该遵循以下基本规则。
1、应该尽早并且不断地进行测试。
测试不是在系统开发完之后才进行的,由于原始问题的复杂性、开发阶段的多样性以及参加人员的细条等因素,在开发过程中的各个阶段都有可能出现错误,因此,测试应该贯穿在开发的各个阶段,我们应该尽早纠正作物,消除隐患。
2、测试工作应该避免由原开发软件的人来进行,一方面,开发人员往往不愿否认自己的工作,总认为自己开发的软件过程序没有错误,另一方面,开发人员往往很难发现自己的错误,具有局限性,所以我们应该找其他人来帮忙检查程序。
这样会变得更客观,更有效。
3、设计测试方案时,不仅要确定输入数据,而且要根据系统功能来确定预期的输出效果和结果。
将实际输出结果和预期结果相比较就能发现测试的对象是否正确,是否有一些隐患。
4、在设计测试用例时,不仅要设计有效合理的输入条件,还要包含不合理、失效的输入条件。
测试的时候,人们往往习惯按照合理的、正常的情况下进行测试,从而忽略了对异常、不合理、意想不到的情况进行测试,而这些情况可能都是隐患,可能会造成系统的崩溃。
5、在测试程序时,不仅要检验程序是否做了该做的事情,还要检验程序是否做了不该做的事情。
多余的工作会带来副作用,影响程序的效率,有事会带来潜在的危害或者错误。
6、严格按照测试计划来进行,避免测试的随意性。
测试计划应该包括测试内容、进度安排、测试环境、测试工具和测试资料等。
严格按照测试计划可以保证进度,使各方面都得以协调进行。
7、妥善保存测试计划、测试用例,作为软件文档的组成部分,为了以后维护的方便做了铺垫。
8、测试用例都是精心设计出来的,可以为重新测试或者追加测试提供方便。
当纠正错误、系统功能扩充后,都需要重新进行测试,而这些工作重复性很高,可以利用以前的测试用例,或者在其基础上进行修改,然后在进行测试,这样科技简化系统的维护时间并且提高了维护的效率。
在系统调试过程中,我们可以利用一组简单的数据对程序进行调试,来观察各函数是否有出错现象。
然后用复杂数据对程序进行调试。
然后我们要对系统的各项能力进行测试,看看有没有漏洞或者死循环现象。
数据测试时,如果程序程序错误,要首先找到出错的函数,对函数中各个变量进行观察,有时变量很多,循环多重不要急,对各个数据的观察,对程序的调试有很大的帮助。
你也可以先对几个变量熟悉后,在多重循环里,确定正确的数据,将其跳过调试,对有疑问的数据循环进行仔细观察。
虽然这是比较省力气的活,但对复杂的数据错误并不是很有效,所以仔细观察每个数据的变化对调试的成功与否有决定性作用。
测试时,根本的错误并不一定在运行错误的函数内,或许在前面的函数内已经奠定了这些错误数据的基础,需要反过头来,对所有的的函数进行一项项的调试,从程序运行的第一个函数开始调试。
按照程序运行的步骤下去。
一个个的确定函数的正确性,每确定一个函数,在以后的调试中可以减少对该函数的调试次数,或者直接跳到下一个函数。
所谓的各个击破便是如此。
对头文件中的各个函数的返回值和它所要传入的参变量及其功能更是需要注意。
调试时,需要对错误缩小范围,从整个程序到指定函数,再到指定区域,再到指定行,对程序缩小范围或对编译没通过的程序缩小错误范围时可以用"/* */"来进行调试确定正常范围缩小错误范围。
4.2主界面:
主体函数要求设计比较简洁,只提供设输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
主体函数决定着系统的外观和效果,简洁的外观有助于人们更快的理解各项功能的作用,提高使用效率。
图6主界面通讯录
4.3增加记录:
这一函数实现了对字符串赋值的功能【1】。
系统提示通讯录使用者输入相应信息,输入2显示通讯录界面。
图7增加通讯录界面
4.4显示记录:
这一函数实现了对字符串赋值的功能【2】。
系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。
然后执行switch语句,如果返回值是“y”,则继续执行函数显示,否则返回主菜单。
图8显示通讯录界面
4.5删除记录:
在主菜单界面输入数字【3】,执行deletecard()函数删除用户。
当通讯录执行者输入要删除学生的姓名,系统会搜索数据库并将搜索结果输出,然后征求确认,每次删除成功后系统会询问是否继续删除,然后执行相应操作。
图9删除记录通讯界面
4.6查询记录:
在主菜单输入数字【4】,这一函数提示通讯管理人员可以有姓名、电话、籍贯、学校、qq五种输入方式,调用scanf函数获取输入信息,然后执行if语句,则会显示查询用户信息,此外,在此操作过程中选择1、2、3、4分别可以按照姓名、电话、籍贯、学校、qq进行快速查询。
图10查询通讯录主界面
4.7修改记录:
在主菜单界面输入数字【5】,执行system函数修改用户。
当通讯录执行者输入要修改学生的姓名,系统会搜索数据库并将搜索结果输出,然后征求确认,每次修改成功后系统会询问是否继续修改,然后执行相应操作。
图11修改通讯录主界面
4.8保存记录:
在主菜单输入【6】,用到fclose()函数,每次操作成功后会自动保存到指定的文件中。
图12保存通讯录主界面
4.9退出记录:
在主菜单界面输入数字【0】,则退出通讯录界面。
图13退出通讯录主界面
5设计方案论证
5.1设计思路
设计时应该先设计出主题框架,采用自顶而下、由粗到细的设计方法,主题框架设计完成之后,我们可以再其基础上进行扩充和进一步的改进,从而满足基本的设计要求,这样的设计可以避免模块的相互冲突。
首先我们先来建立一个函数,用来增加、显示、删除、查询通讯录等信息,完成通讯录的功能。
主函数可以调用七个子函数,分别完成增加记录、显示记录、删除记录、查询记录、
退出系统等功能。
在主函数中可以以1、2、3、4、5、6、0数字键分别可以执行某个功能模块。
图14系统功能图
5.2程序设计
根据图14定义数据类型建立函数:
typedefstruct
{
charscore;/*编号*/
charname[10];/*姓名*/
charnum[15];/*号码*/
charemail[20];/*邮箱*/
charnum[8];/*qq*/
charadds[20];/*地址*/
}person
5.2.1主函数及其流程图
定义主函数main()和一系列的功能函数,只有通过这些函数才实现程序的功能。
每次使用都会调用主函数。
主函数主要是利用switch语句对数据进行处理,它们分别定义选择1、选择2、选择3、选择4、选择5、选择6、选择0来对应增加记录,显示记录、删除记录、查询记录、修改记录、保存记录、退出记录来实现整个系统操作的效果,以下是所主函数的流程图:
图15主函数流程图
6设计过程所遇到问题及解决方法
设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。
随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言设计是十分必要的。
回顾起此次设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在一个多月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,学习中难免会遇到过各种各样的问题,如:
当我在进行删除、查询、修改、保存等功能时,以查询为例,输入名字按回车后,虽然会显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。
因此,向别人请教后,在一些地方加入了system("pause");这个语言,用来对某项操作完成后进行暂停。
现在这个程序的界面个人感觉很清爽。
但在最初,每次进行一项操作,运行窗口里的内容会一直保留着,感觉很杂乱,之后,我去网上寻求解决办法,知道可以使用system("cls");这一语句可以解决这个问题,最后,修改成功同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表等,通过这次设计之后,我们把前面所学过的知识又重新温故了一遍。
在实训过程中,虽然编程是一件很枯燥很无聊的事情,但是出于完成实训,得到毕业的压力,还必须强迫自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。
而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。
所以认真仔细就是非常重要的了。
开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。
但经过几个星期的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。
无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践效果,也是自己进步的证明。
结束语
通过本次实训设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机。
因此,在收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,而且掌握了在执行过程中怎么样去克服心理上的不良情绪。
所以在以后的生活和学习的过程中,我一定会把设计的精神带到生活中,不畏艰难,勇往直前。
致谢
本次设计对我们知识运用能力的一次全面的考核,也是对我们进行了编程基础的考验,培养我们综合运用所学知识独立地分析问题和解决问题的能力,也是为了以后的工作打下良好的基础。
能够顺利完成,首先我要感谢我的母校,是她为我们提供了学习知识的土壤,使我们在这里茁壮成长;其次我要感谢电子工程系的老师们,他们不仅教会我们专业方面的知识,而且教会我们做人做事的道理;尤其要感谢在本次设计中给与我大力支持和帮助的的指导老师,每遇到问题,老师总是耐心的解答,使我能够充满热情的投入到毕业设计中去;还要感谢我的同学们,他们热心的帮助,使我感到了来自兄弟姐妹的情谊;最后还要感谢相关资料的编著者和给予我们支持的社会各界人士,感谢您们为我们提供一个良好的环境,使本次设计能够顺利的完成。
参考文献
[1]郭翠英等.C语言课程设计案例精编[M].北京:
中国水利水电出版社,2004.03:
173-178[5]刘林香.C语言程序设计上机指导篇[J].华章杂地社,2010.03:
21
[6]XX.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 通讯录 论文