简单个人电话号码查询系统数据结构课程设计
数据结构电话号码查询系统设计报告及代码

数据结构电话号码查询系统设计报告及代码郑州轻工业学院课程设计任务书题目电话号码查询系统专业、班级计科10-01学号41姓名王平主要内容:设计哈希表实现电话号码查找系统基本要求:从键盘输入各记录,分别以电话号码和用户名为关键字设计哈希表;采用不同的哈希函数,比较冲突率;采用适当的方法解决冲突;在哈希函数确定的前提下,尝试不同类型处理冲突的方法,考察平均查找长度的变化;查找并显示给定电话号码的记录;查找并显示给定用户名的记录。
主要参考资料等:数据结构课本(c语言版)完成期限:21012年6月21号指导教师签名:课程负责人签名:12年 6 月 21 日郑州轻工业学院本科数据结构课程设计总结报告设计题目:电话号码查询系统学生姓名:王平系别:计算机科学与通信工程学院专业:计算机科学与技术班级:10-01学号:541007010141指导教师:卢冰、李晔2012年6月21 日2找)方式:这个过程中,我选取了数字分析法,解释如上。
主菜单的设计在设计效果上已经显示,不过多说明。
算法的流程主菜单建立->除留取余和数字分析法存储->开放地址法解决冲突->查找。
算法设计分析这段代码是哈希存储时从第三个数开始求,提高了代码效率。
int i = 3;while(s.num[i]!='\0') //关键字{key+=(s.num[i]-'0'); //关键字求和i++;}key=key%21;线性探测再散列处理冲突if(!strcmp(W.t[key].num,""))//查找,解决冲突W.t[key]=s;else{//第一次没解决彻底,继续解决冲突int j=1;while(strcmp(W.t[(key+j)%21].num,"")) j++;W.t[(key+j)%21]=s;}}查找代码;while(xnum[i]!='\0'){key+=(xnum[i]-'0'); //求和i++;}key=key%21;if(!strcmp(W.t[key].num,xnum))//第一次查找,如果值相等直接赋值printf("%s %s %s\n",W.t[key].name,W.t[key].address,W.t[ke y].num);else2{//第一次没找到,继续查找int j=1;while(strcmp(W.t[(key+j)%21].num,xnum)) j++;if(j==20)printf("查找元素不存在!");elseprintf("%s %s %s\n",W.t[(key+j)%21].name,W.t[(key+j)%21 ].address,W.t[(key+j)%21].num);//输出查找到得元素}主界面:printf("********电话号码查询系统********\n");printf(" 用电话号码查询1 \n");printf(" 用用户名查询 2 \n");printf("********************************\n");printf("请输入您要的选项:\n");int x,y;while(scanf("%d",&x)!=-1){if(x==1){printf("********电话号码查询********\n");printf(" 除留取余法1 \n");printf(" 数字分析法2 \n");3printf("****************************\n");printf("请输入y值:\n");scanf("%d",&y);while(y<3){switch(y){case 1:chuliu();break;//调用除留取余函数case 2:shuzi();break;//调用数字分析函数default:printf("输入指令不存在!\n");}printf("********电话号码查询********\n");printf(" 除留取余法1 \n");printf(" 数字分析法2 \n");printf("****************************\n");printf("请输入您要的选项:\n");scanf("%d",&y);}}else if(x==2){printf("********用户名查询********\n");printf(" 分析法 3 \n");printf("****************************\n");fenxi();//调用分析函数4}elseprintf("查找方式不存在!请重新输入\n");}}运行结果分析56测试实例:wangping kaifeng 123456wangdoudou luoyang 456789zhaijiajai zhengzhou 147258sunxueping zhoukou 258369收获及体会本次试验电话号码查询系统,看起来也不是想我想象中的那么难,他比较具有针对性,要求我们用哈希函数解决这倒比较实用的题目,但是这道题目用到的哈希函数仅仅是哈希中的九牛一毛,虽然写了大程序,但是对哈希表的了解还是一无所知,数据结构这门课程我认为有点难,也许是我c语言基础不够强吧,好多代码都不是很理解,以至于不能够灵活运用,其实通过每次实验我们都可以发现,数据结构的知识好像就是草原的草,密密麻麻的等待我们去拔掉,这是一项浩大的工程等待我们去建设,与此同时,也要求我们要踏实的完成每一次作业,认真的去分析重要的代码,只有端正自己的态度,才能不断地学到新的知识,提高自己。
简单个人电话号码查询系统数据结构课程设计

一、课题任务人们在日常生活中经常要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询二、设计要求(1)在外存上,用文件保存电话号码信息;(2)在内存中,设计数据结构存储电话号码信息;(3)提供查询功能:根据姓名或编号实现快速查询;(4)提供其他维护功能,例如插人、删除、修改等。
三、程序的结点设计现假设链表结点仅含有一个数据域和一个指针域。
数据域是为了描述通讯者的相关信息,定义通讯者的结点类型:typedef struct{char num[10]; //编号char name[15]; //姓名char phone[11]; //电话号码}dataType;因此,,线性表的链式存储结构定义如下:typedef struct node{ //结点类型定义dataType data; //结点的数据域struct node *next ; //结点指针域}listnode , * linklist ;linklist head ; //定义指向单链表的头指针listnode * p ; //定义一个指向结点的指针变量四、程序的功能设计创建:创建通讯录文件添加:添加通讯录记录输出:显示通讯录记录删除:删除通讯录记录查找:查询通讯录记录修改:修改通讯录记录保存:将信息保存到文件中五、程序的数据设计该系统用下面六个功能模块编写,每个模块执行不同的功能,体现了模块化设计的思想。
下面六个模块都是利用C语言文件,向文件中追加数据、修改数据、查询数据和删除数据。
建立:可以建立通讯录记录,利用C语言文件,向文件中按顺序输入编号、姓名、电话号码,这里实际上是要求建立一个带头结点的单链表。
添加:可以添加通信录记录,向链表中继续增加结点,但只是输入到内存中,如果要输入到文件中还得调用保存函数。
输出:也是用通过循环依次输出文件中的数据,即输出所有通讯录里的记录。
数据结构 手机号码查询系统

报告编号:第5组综合课程设计报告手机号码查询系统指导教师:所在系:电子工程系所学专业:计算机科学与技术年级: 2012级2014 年 6 月目录1、课程设计目的和要求 (1)1.1 设计目的 (1)1.2 设计要求 (1)2、课程设计的主要工作 (1)2.1 需求分析 (1)3、课程基本设计说明 (1)3.1 概要设计和数据结构选择 (1)3.2程序具体设计 (2)3.3 程序流程图 (2)4、程序详细设计 (4)4.1 创建 (4)4.2 对哈希函数的定义 (4)4.3 哈希查找 (5)4.4 主函数 (6)5、程序运行结果界面 (8)6、课程设计总结 (12)7、参考文献 (13)8、附录 (13)摘要本文主要介绍了手机号码查询系统,实现对用户手机号码、用户名以及地址的添加、查询、存储。
程序主要以手机号码和姓名为关键字建立哈希表,并实现查找功能。
其中,以手机号为关键字建立哈希表时采用线性探测法解决冲突、以姓名为关键字建立哈希表时用拉链法解决冲突,成功通过设计哈希表实现对用户的手机号码、姓名、地址显示、查询等功能。
通过课程设计,巩固和加深对结构体、哈希表等理论知识的理解,掌握现实复杂的分析建模和解决方法,掌握包括问题描述、系统分析、设计建模、代码实现、结果分析等的方法;提高利用计算机分析解决综合性实际问题的基本能力;锻炼个人的动手能力,历练自身素质;提高大家的合作能力。
关键字:哈希表线性探测法链地址法1、课程设计目的和要求1.1 设计目的本题目最主要的的是设计散列函数,本程序需要设计两个散列函数才能解决问题,程序需要分别为以号码和用户名为关键字建立哈希表。
所以要分别以用户名、号码为关键字建立两个散列函数。
1.2 设计要求(1)每个记录有下列数据项:手机号码、用户名、地址;(2)从键盘输入各记录,分别以手机号码和用户名为关键字建立哈希表(哈希函数自选);(3)以手机号为关键字建立哈希表时采用线性探测法解决冲突、以姓名为关键字建立哈希表时用拉链法解决冲突;(4)查找并显示给定手机号码的记录;(5)查找并显示给定用户名的记录。
电话号码系统课程设计

电话号码系统课程设计一、课程目标知识目标:1. 学生能理解电话号码的基本组成结构,掌握我国电话号码的编码规则;2. 学生能了解电话号码系统的分类及其功能,如固定电话号码、移动电话号码、紧急电话号码等;3. 学生能掌握电话号码相关的数学知识,如数字组合、排列等。
技能目标:1. 学生能运用所学知识,正确拨打和接听电话,熟练使用电话通信功能;2. 学生能通过分析电话号码,提高逻辑思维能力和问题解决能力;3. 学生能运用电话号码系统进行简单的数据统计和分析。
情感态度价值观目标:1. 学生能认识到电话通信在现代生活中的重要性,增强信息社会的适应能力;2. 学生能尊重他人隐私,正确使用电话号码,培养诚信意识和责任感;3. 学生能关注电话通信技术的发展,激发对科学技术的兴趣和热爱。
课程性质:本课程为信息技术与数学相结合的综合性课程,旨在通过电话号码系统教学,提高学生的实际操作能力、逻辑思维能力和信息素养。
学生特点:六年级学生具备一定的数学基础和信息素养,对新鲜事物充满好奇,善于合作与探究。
教学要求:结合学生特点,注重理论与实践相结合,鼓励学生主动参与、积极思考,提高解决问题的能力。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效评估和调整。
二、教学内容1. 电话号码的基本组成与编码规则- 电话号码的位数及其含义- 区号、座机号、移动电话号的区别与联系- 各地区电话号码的编码特点2. 电话号码系统的分类与功能- 固定电话号码:家庭、单位、公共服务等- 移动电话号码:运营商、手机号、携号转网等- 紧急电话号码:110、120、119等3. 电话号码相关的数学知识- 数字组合与排列- 电话号码的数学性质:唯一性、可重复性等- 电话号码的统计分析方法4. 实践操作与技能培养- 拨打和接听电话的正确方法- 电话通信功能的运用:语音、短信、视频等- 电话号码查询与信息安全教学大纲安排:第一课时:电话号码的基本组成与编码规则第二课时:电话号码系统的分类与功能第三课时:电话号码相关的数学知识第四课时:实践操作与技能培养教材章节关联:《信息技术》六年级下册第四章:通信技术及其应用《数学》六年级下册第八章:概率与统计教学内容进度:第一周:电话号码基本组成与编码规则第二周:电话号码系统分类与功能第三周:电话号码相关数学知识第四周:实践操作与技能培养三、教学方法本课程将采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 通过生动的语言和实际案例,讲解电话号码的基本知识,如编码规则、数学性质等;- 结合教材内容,系统介绍电话号码系统的分类、功能及其在日常生活中的应用;- 在讲授过程中,注重启发式教学,引导学生主动思考问题。
数据结构课程设计个人电话号码查询系统.

2014-2015学年 第二学期 《数据结构》 课程设计报告 题目:个人电话号码查询系统 专业:、 班级:、 姓名:、 指导教师:、 成绩:计算机与信息工程系2014 年 12月 15 日目录1设计内容及要求 (1)1.1课程设计目的 (1)1.2设计内容及要求 (1)2概要设计 (2)2.1设计功能 (2)2.2个人电话号码查询系统功能说明图 (2)2.3个人电话号码查询各模块调用关系 (3)3设计过程或程序代码 (3)3.1管理系统功能模块设计 (3)3.2数据结构及各模块分析 (4)3.2.1 基本数据类型(结构体) (4)3.2.2附助常量,变量 (4)3.2.3函数 (4)4设计结果与分析 (5)4.1整体大纲 (5)4.2启动程序截图,代码 (6)4.2.1代码分析 (6)4.3进入主菜单截图,代码 (8)4.3.1代码分析 (8)4.4新添记录截图,代码 (9)4.4.1 新添模块代码 (10)4.5查找记录截图,代码 (11)4.5.1代码分析 (12)4.6删除记录截图,代码 (13)4.6.1代码分析 (13)4.7保存文件,不保存文件 (16)4.8总结 (16)5参考文献 (17)1设计内容及要求1.1课程设计目的通过设计一个《个人电话号码查询系统》,进一步熟悉C中的概念、基本知识和技能利用所学的基本知识和技能解决简单的面向对象的程序设计问题。
了解系统开发的需求分析、层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C的理解与Visual C++环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。
1.2设计内容及要求编写一个个人电话号码查询系统把所学数据结构知识应用到实际软件开发中。
设计内容:本系统应完成一下几方面的功能:1)输入信息enter();2)显示信息display( );3)查找以姓名作为关键字search( );4)删除信息delete( );5)存盘save ( );6)装入load( ) ;设计要求:1)每条信息至包含:姓名(NAME )电话(TELL)地址(CITY)QQ几项;2)作为一个完整的系统,应具有友好的界面和较强的容错能力。
数据结构 手机号码查询系统

数据结构方式号码查询系统数据结构方式号码查询系统1、系统概述在现代社会中,方式号码被广泛使用,人们需要通过方式号码进行通信和联系。
为了方便用户快速查询和管理方式号码,我们设计了一个方式号码查询系统,可实现以下功能:- 添加方式号码信息- 查询方式号码信息- 修改方式号码信息- 删除方式号码信息2、系统架构2.1 数据结构设计系统中使用以下数据结构来存储方式号码信息:- 链表:用于存储不同用户的方式号码信息,每个节点代表一个用户的信息,包括姓名、方式号码、地质等。
- 哈希表:用于快速查询方式号码,通过方式号码可以直接找到对应的用户信息。
2.2 模块设计系统分为以下几个模块:- 添加模块:用于用户添加新的方式号码信息,并将其存储到链表和哈希表中。
- 查询模块:提供根据方式号码查询用户信息的功能。
- 修改模块:允许用户修改已有的方式号码信息。
- 删除模块:用户可以删除不再需要的方式号码信息。
3、功能实现3.1 添加方式号码信息用户可以通过输入姓名、方式号码、地质等信息将新的方式号码添加到系统中。
3.2 查询方式号码信息用户可以通过输入方式号码进行查询,系统将返回对应的用户信息。
3.3 修改方式号码信息用户可以选择要修改的方式号码,并输入新的信息进行修改。
3.4 删除方式号码信息用户可以选择要删除的方式号码进行删除操作。
4、附件本文档附带的附件为系统的源代码和使用说明书。
5、法律名词及注释5.1 方式号码:指由数字组成的方式号码,用于流动通信。
5.2 链表:是一个线性数据结构,由一系列节点组成,节点之间通过指针连接。
5.3 哈希表:是根据关键码值(Key-value)进行访问的数据结构,通过将关键码值映射到表中的一个位置来访问数据。
数据结构课程设计报告——哈希表实现电话号码查询

数据结构课程设计报告一、需求分析1问题描述:根据需要设计出合理的函数,并由此建立相应的表。
要求:1)每个电话用户信息包括(姓名,电话,住址)信息。
2)可以使用姓名与地址查找相应的用户信息。
3)使用表实现。
使用开放定址法解决冲突。
2 基本要求:1)记录每个用户的姓名、地址和电话。
2)从键盘输入,以姓名和地址为关键字分别建立表。
3)用开放地址法解决冲突。
4)分别按姓名和地址查找并显示电话号码。
二、概要设计三、详细设计定义结构表{定义表内的所有成员}[];( x[])关键字转换为数值{求字符数组x每个字符对应的值的绝对值之和,并返回最后结果}( )创建表{创建表,并初始化它}( d) 按姓名插入{以姓名为关键字,调用关键字转换函数将对应的电话号码存储到相应的存储空间。
若该位置已经被存储,则向后移一位(当移到最后一位,就移到头部继续)。
若还有冲突重复上一步。
当所有空间都查过一遍,发现没有空位,则输出“没有存储空间”。
}( d)按地址插入{以地址为关键字,调用关键字转换函数将对应的电话号码存储到相应的存储空间。
若该位置已经被存储,则向后移一位(当移到最后一位,就移到头部继续)。
若还有冲突重复上一步。
当所有空间都查过一遍,发现没有空位,则输出“没有存储空间”。
}( )表插入{输入用户姓名、地址和电话,分别调用按姓名插入和按地址插入函数进行插入。
重复上面的步骤,直到你不想继续或空间已满。
}( )按姓名查找{输入你想要查询的姓名,对它进行转换,再查找。
若该位置不空或求得的关键字所对应的数值与该位置的数值不相等,则向后移一位(当移到最后一位,就移到头部继续)。
若还有冲突重复上一步。
当所有空间都查过一遍,发现没有找到,则输出“不存在”。
若该位置空,则输出“不存在”。
若查找到,则输出电话号码。
}( )按地址查找{输入你想要查询的地址,对它进行转换,再查找。
若该位置不空或求得的关键字所对应的数值与该位置的数值不相等,则向后移一位(当移到最后一位,就移到头部继续)。
电话号码小型查询系统设计

皖西学院课程设计报告系别:机电系专业:电子信息学生姓名:学号:课程设计题目:电话号码小型查询系统设计起迄日期:课程设计地点:指导教师:完成日期: 09年 6月 23日课程设计任务书1、摘要 (4)2、设计思想及方案制定 (4)3、设计的基本思路 (5)4、程序流程图 (6)5、源程序代码清单 (7)5、设计体会 (11)6、参考文献 (12)7、鸣谢 (12)电话号码查询管理系统是用于辅助个人完成其通讯信息有序管理的计算机软件系统,系统实施的目的旨在帮助用户完成其私人通讯信息管理的数字化,以提供较手工方式下更高的效率和更低的出错率。
电话号码查询系统是为了方便用户查找所需的电话号码,本设计详细的介绍了软件设计原理和设计流程图及程序清单。
使用者只须输入用户的姓名就可查询到所需电话号码。
设计方案的制定(划分设计阶段、时间安排、拟采用方法):第一阶段:围绕程序设计进行相关的技术讨论,查找相关文档资料第二阶段:画好流程图,方案设计第三阶段:编写源代码、完成程序设计第四阶段:连接,调试(测试),完成最终程序,保存源代码及已编译的可执行程序第五阶段:、完成课程设计报告书,相关内容存盘设计基本思路该课题的目标是用汇编语言编写一个程序,实现通过姓名查询其电话号码的功能,按照设计任务的要求,一般的设计思路要分几个模块。
1.设某单位内部电话号码为4位,姓名均用汉语拼音表示,查询时,应键入用户姓名(小写字母),如果位合法用户,显示:姓名——电话号码否则显示姓名——X X X X2.由于汉字具有同音不同字的特点,汉语拼音相同的姓名也许不是同一人,具有不同的电话号码是必然的,本设计仅作这样的要求:把姓名拼音相同的电话号码全部找出并显示。
3.本例只假设有九个用户,电话号码和姓名的对照见下表,在这九个用户中,姓名长度分别为5个字符,6个字符和11个字符3类,对于其他长度的姓名串,一律按非法键入处理。
姓名汉语拼音电话号码李莉li li 2345于特yu te 2765马乐ma le 2456皮敏pi min 2289李梅li mei 2761于青果yu qing guo 2221丘宝梅qiu bao mei 2554俞庆国yu qing guo 2876田利秋tian li qiu 29014.编程的关键问题,首先是组织“姓名-电话号码表”,把长度相同的姓名组织在一张表中,本例应有3张“姓名-电话号码表”,表头分别用N5,N6,N11表示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课题任务人们在日常生活中经常要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询二、设计要求(1)在外存上,用文件保存电话号码信息;(2)在内存中,设计数据结构存储电话号码信息;(3)提供查询功能:根据姓名或编号实现快速查询;(4)提供其他维护功能,例如插人、删除、修改等。
三、程序的结点设计现假设链表结点仅含有一个数据域和一个指针域。
数据域是为了描述通讯者的相关信息,定义通讯者的结点类型:typedef struct{char num[10]; //编号char name[15]; //姓名char phone[11]; //电话号码}dataType;因此,,线性表的链式存储结构定义如下:typedef struct node{ //结点类型定义dataType data; //结点的数据域struct node *next ; //结点指针域}listnode , * linklist ;linklist head ; //定义指向单链表的头指针listnode * p ; //定义一个指向结点的指针变量四、程序的功能设计创建:创建通讯录文件添加:添加通讯录记录输出:显示通讯录记录删除:删除通讯录记录查找:查询通讯录记录修改:修改通讯录记录保存:将信息保存到文件中五、程序的数据设计该系统用下面六个功能模块编写,每个模块执行不同的功能,体现了模块化设计的思想。
下面六个模块都是利用C语言文件,向文件中追加数据、修改数据、查询数据和删除数据。
建立:可以建立通讯录记录,利用C语言文件,向文件中按顺序输入编号、姓名、电话号码,这里实际上是要求建立一个带头结点的单链表。
添加:可以添加通信录记录,向链表中继续增加结点,但只是输入到内存中,如果要输入到文件中还得调用保存函数。
输出:也是用通过循环依次输出文件中的数据,即输出所有通讯录里的记录。
删除:输入你要删除的人的姓名或编号后,系统会自动删除他的记录,在删除通过switch语句满足提示你确认删除的功能,只有等你确认删除后才会删除。
查询:为了满足用户的实际需求,设计了两种查询方式,可以用姓名、编号两种方式查找通讯录记录。
这里用到strcmp()函数,通过比较字符串是否相同来判别是否找到相关信息,找到后,就把文件中的数据赋给对应的变量,再把变量所带的值输出到屏幕上。
修改:当你选择修改功能后,系统会在修改函数中调用查询函数来找到需要修改的记录,然后返回该记录的结点。
再通过printf语句来显示他的记录,再通过修改查询函数返回的结点来修改所需要修改的记录。
保存:用到fclose()函数,每次操作成功后会自动保存到指定的文件中。
六、程序的函数设计主函数和菜单选择函数部分:int main(){for( ; ; ){switch( menu_select() ){case 1:printf("\t\t\t建立\n\n");head = createlist();break;case 2:printf("\t\t\t添加\n\n");printf("编号姓名电话号码\n");p = ( linklist ) malloc ( sizeof ( listnode ) );scanf ( "%s%s%s" , p->data.num , p-> , p->data.phone ) ; insertnode(head,p);break;case 3:printf("\t\t\t查询\n\n");p = listfind( head );if(p!=NULL){printf("编号姓名电话号码 \n");printf("%s %s %s\n", p->data.num , p->, p->data.phone ); }elseprintf("没有查询到!\n");break;case 4:modify(head);printf("修改成功!\n");printf("请保存!\n");break;case 5:printf("\t\t\t删除\n\n");delnode(head);break;case 6:printf("\t\t\t输出\n\n");printlist(head);break;case 7:save(head);printf("保存成功!\n");system("pause");break;case 0:printf("\t\t\t亲爱的用户,白白了!我会想你的哦 >3<!!!\n\n"); return 0 ;}}return 0 ;}int menu_select(){int n;printf("\t\t\t**********************\n");printf("\t\t\t *********\n");printf ( "\t\t\t个人电话号码查询系统\n");printf ("\t\t\t<== 1 建立 ==>\n");printf ("\t\t\t<== 2 添加 ==>\n");printf ("\t\t\t<== 3 查询 ==>\n");printf ("\t\t\t<== 4 修改 ==>\n");printf ("\t\t\t<== 5 删除 ==>\n");printf ("\t\t\t<== 6 输出 ==>\n");printf ("\t\t\t<== 7 保存 ==>\n");printf ("\t\t\t<== 0 退出 ==>\n");printf ("\t\t\t<== 请选择 ==>\n");printf("\t\t\t *********\n");printf("\t\t\t**********************\n:");for(; ;){scanf ( "%d" , &n );if( n < 0 || n > 7 )printf ("输入错误,请重选:");else break;}return n;}上面主要是主函数和菜单选择函数程序部分,这部分是通过一个无限循环来执行上述所有的功能模块,(用for和switch语句解决),如果用户要退出的话,只需选择“0”就可以成功退出并且自动将数据保存到指定的文件中。
输入变量为n,它作为menu_selet函数的返回值提供给switch语句。
使用for循环实现重复选择,并在主函数中实现。
实际使用时,只有选择0—7才会有用,对于不符合要求的输入,提示输入错并要求重新输入。
创建模块:1..打开存储的文件,若成功打开,则读取已有信息。
2.若打开存储的文件失败,则自己建立一个文件,并且开始输入相应的信息。
建表表完成判断是继续还是离开。
3.打开存储的文件,若成功打开则,则读取已有信息。
4.若打开存储的文件失败,则自己建立一个文件,并且开始输入相应的信息。
建表表完成判断是继续还是离开。
linklist createlist(){linklist createlist(){ //建立if( ( fp = fopen(dir_name,"r") ) != NULL) { // 打开文件linklist head = ( linklist ) malloc ( sizeof ( listnode ) ) ; //动态建立空间listnode * p ,* rear;rear = head ;char a[30] , b[30] , c[30];fscanf( fp ,"%s%s%s\n",a,b,c); //读取"编号姓名电话号码" 这几个汉字while(!feof(fp)){ // 检测文件是否结束不是则继续循环,是则退出p = ( linklist ) malloc ( sizeof ( listnode ) );fscanf ( fp ,"%s%s%s\n",p->data .num ,p->data .name ,p->data .phone ); //读入信息进文档rear->next =p;rear=p;}rear->next =NULL;fclose(fp);printf("成功读取文件记录!\n");return head;}else{printf("不存在记录文件,请自己输入:\n") ;linklist head=( linklist ) malloc ( sizeof ( listnode ) );//申请新结//点listnode *p,*rear ;int flag=0; // 定义一个变量来判断是否循环rear=head;//尾指针初始指向头结点while(flag==0) {p =( linklist ) malloc ( sizeof ( listnode ) );printf("编号姓名电话号码\n");scanf ( "%s%s%s" , p->data.num , p-> , p->data.phone ) ;rear->next = p; // 新结点连结到尾结点之后rear = p; //尾指针指向新结点printf("按1结束建表,按0继续建表。
\n");printf("结束建表吗?(1/0):");scanf ( "%d" , &flag ); //读入一个标志数据}rear->next =NULL; //终端结点指针域置空return head; //返回链表头指}}在这个函数里,首先看文件是否存在,如果存在,就把信息从外存调到内存中来,如果不存在,就会提示不存在记录文件,请自己输入。