《C语言程序设计》课程设计报告(1).docx_第1页
《C语言程序设计》课程设计报告(1).docx_第2页
《C语言程序设计》课程设计报告(1).docx_第3页
《C语言程序设计》课程设计报告(1).docx_第4页
《C语言程序设计》课程设计报告(1).docx_第5页
已阅读5页,还剩182页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告题目: 旅游景点查询系统 课程名称: C语言课程设计 专业班级: 信息安全1302 学 号: 姓 名: 指导教师: 报告日期: 2014.10.10 计算机科学与技术学院华中科技大学计算机学院C语言程序设计课程设计任务书题目 景点查询系统一、主要内容建立国内景点信息系统,提供创建、编辑和综合查询等基本业务管理和服务。二、任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交课程设计报告。三、参考文献1曹计昌,卢萍,李开. C语言程序设计,北京:科学出版社,20132李开,卢萍,曹计昌. C语言实验与课程设计,北京:科学出版社,2011目 录目 录I1 引言11.1 课题背景和意义11.2 国内外研究现状11.3 课程设计的主要研究工作12 系统需求分析与总体设计22.1 系统需求分析22.2 系统总体设计23 系统详细设计53.1 有关数据结构的定义53.2 主要算法设计7主函数7主函数负责主界面的构造以及对程序的各个功能函数的调用。7文件13文件菜单下的保存 功能的函数:13数据维护16数据查询24清屏31帮助324系统实现与测试324.1 系统测试32初始界面32文件346.3.信息查询485总结575.1 全文总结575.2 工作展望585.3 体会59参考文献62附录 程序清单62System.h62main.c68II华中科技大学计算机学院C语言程序设计课程设计1 引言1.1 课题背景和意义在当今网络化、信息化、数字化的社会中, 大多数人们都会使用网络电脑查询自己想要的信息,上网查找资料已经成为人们获取信息的主要方式,而随着人们生活水平的提高,外出旅游已经成为人们休闲娱乐的一种主要方式。然而,全国上下的旅游的景点景区五花八门,咨询一些相关景点的信息更为复杂,人们经常因为查询旅游景点过程繁琐而打消了外出游玩的念头,为了能够方便人们查询外出游玩的相关信息,我们制作了这个旅游景点查询系统,景点查询系统。这个系统是面向游客的,所以我得从游客的角度思考,我的系统应该具备哪些信息,当然,我也上网搜了一些资料,比如:湖北旅游查询系统。这个系统能够是个很好的例子,所以在任务数的基础上,我对城市景区和景点的信息都做了些调整和修改,是信息更全面更有用。并且确定了信息查询功能,包括精确查询和模糊查询。该系统可以在短时间内筛选繁杂的旅游景点相关数据,在第一时间帮助用户查找到自己想要查询的信息。制作这个课题,就是将计算机编程技术与人们的实际生活相连接,体现了现代化技术的先进和优越,从很大方面反映了计算机技术对人们生活的重要作用和意义。1.2 国内外研究现状如今随着人们生活水平的提高,一些为了方便人们生活的先进科技日益发达,国内国外对于这些方面的研究也如日中天,为了能够设计出令用户满意的系统,人们不断地改进界面,优化算法,这些方面的发展十分迅速,现在,类似的查询系统五花八门,各式各样,如果想做到脱颖而出,必须制作出人性化的界面,并设计出高效率的算法,使得系统能用最短的时间在大量的数据中筛选出用户想要的信息,而这方面的研究仍然是当下的热门话题,由于本人水平方面的限制,我只能做出这个简陋的查询系统,通过这个系统,我希望加深对C程序设计的认识,为以后的研究奠定基础。2 系统需求分析与总体设计2.1 系统需求分析 根据旅游景点的相关基本信息以及大多数用户的基本需求,我们给该系统配备了以下功能:1 帮助游客根据城市编号查询城市的特色,邮编。根据景区编号查询景区电话,以及景区的景点和景区开放时间,根据景点编号查询景点风景,景点电话以及该景点人均消费水平。2 帮助游客根据城市,景区和景点的相关信息查询该城市,景区和景点的详细信息。3 帮助管理员修改,插入和删除城市,景区和景点的信息。4 帮助管理员备份恢复数据和保存数据,防止用户丢失重要数据。5 帮助游客统计出了所有城市,景点,景区的总信息。该系统的这几个功能基本满足了用户的需求。2.2 系统总体设计整个程序分为以下五个大块:景点信息查询系统文件数据维护数据查询清屏帮助每一块的功能:文件数据保存数据备份数据恢复数据加载退出系统界面初始化景点信息修改景点信息插入景点信息删除景区信息删除景区信息插入景区信息修改数据维护城市信息维护景区信息维护景点信息维护城市信息删除城市信息插入城市信息修改城市精确查询城市组合查询景区精确查询景区组合查询景点精确查询景点组合查询景点信息查询数据查询景区信息查询城市信息查询帮助帮助关于所有信息清理屏幕3 系统详细设计3.1 有关数据结构的定义系统所操作的数据分三类,使用三级的十字交叉链表,链表使用单向链表,其数据结构图是如下: head 景区11 景区12 景区1m 城市1 城市2 城市n景点111 景点11p 在程序中对数据结构的定义如下:struct scespo /*景点*/ char sp_sr_numNUM; /*景区编号*/ char sp_c_numNUM; /*城市编号*/ char scespoNUM; /*景点名称*/ char sp_numNUM; /*景点编号*/ char sp_locationNUM; /*景点地址*/ char sp_timeNUM; /*花费时间*/ struct scespo *next; /*指向下一个景点节点*/;struct scearea /*景区*/ char sr_c_numNUM; /*城市编号*/ char sceareaNUM; /*景区名称*/ char sr_numNUM; /*景区编号*/ char sr_levelNUM; /*景区级别*/ char sr_locationNUM; /*景区地址*/ char sr_ticketNUM; /*景区分类*/ char sr_timeNUM; /*开放时间*/ char sr_connumNUM; /*查询电话*/ struct scearea *next; /*指向下一个景区节点*/ struct scespo *sp_head; /*景点链表的头指针*/;struct city /*城市*/ char cityNUM; /*城市名称*/ char c_numNUM; /*城市编号*/ char c_inspnumNUM,c_consnumNUM; /*城市邮编、城市特色*/ struct city *next; /*指向下一个城市节点*/ struct scearea *sr_head; /*景区链表的头指针*/;其中城市、景区的每一个节点都有两个指针,城市的节点的一个指针(structcity *p-sr_head)指向在该城市的景区链表,另一个指针(struct city*p-next)指向该节点的下一结点;景区的节点的一个指针(struct scearea *psr-sp_head)指向该景区的景点信息链表,另一个指针(struct* psr-next)指向该节点的下一结点;景点的节点的一个指针(struct* psp-next)指向该节点的下一结点;另外在内存中是以链表的形式储存的。其数据结构图是如下:head 景区1 城市1 城市2 城市n 景区n NULLNULLhead景区2 head 景点1 景点2 景点nNULL 3.2 主要算法设计主函数主函数负责主界面的构造以及对程序的各个功能函数的调用。其原型声明如下:void main(void);该函数在文件 main.c 中。其主要调用了以下函数:LoadData(); /*数据加载*/InitInterface(); /*界面初始化*/RunSys(&gp_head); /*系统功能模块的选择及运行*/CloseSys(gp_head); /*退出系统*/主函数中加载功能的函数函数原型:BOOL LoadData();函数功能:从三个文件中加载城市、景区、景点信息形成链表。该程序流程图如下:Y开始BOOL Re=FALSEgc_sys_state |= 1;gc_sys_state |= 2;Re = createlist(&gp_head)gc_sys_state |= Re; gc_sys_state &= (4 + 8 + 16 - Re);gc_sys_state c_num,p -city,p-c_inspnum,p-c_consnum);/读取文件中的城市信息,存在刚申请的单元中/ p-sr_head=NULL;/景区头指针置空/先进后出/ p-next=hp; hp=p;! feof(pFile)NYprintf(城市信息数据文件打开失败!n); return re;printf(城市信息数据文件打开成功!n);pFile=fopen(gp_c_info_filename,r+)=NULL定义变量:struct city *hp=NULL,*p;/头指针/struct scearea *psr;/景区信息链指针/struct scespo *psp;/景点信息链指针/FILE *pFile; int find int re=0;开始N1YNp=p-next;2psr=(struct scearea *)malloc(sizeof(struct scearea);/创建结点,存放从数据文件中读出的景区基本信息fscanf(pFile,%s tt %s tt %s tt %s tt %s tt %s tt %s tt %sn,psr-sr_c_num,psr-sr_num,psr-scearea,psr-sr_level,psr-sr_location,psr-sr_ticket,psr-sr_time,psr-sr_connum);psr-sp_head=NULL; p=hp; /先进后出/p!=NULL&strcmp(psr-sr_c_num , p-c_num)!=0YN! feof(pFile)printf(景区基本信息数据文件打成功!n);re+=8;Yprintf(城市信息数据加载成功!n);(*head)=hp; /指向链头/ re+=4;(pFile=fopen(gp_sr_info_filename,r+)=NULL1printf(景区基本信息数据文件打开败!n);return re;N54Ypsp=(struct scespo *)malloc(sizeof(struct scespo); /创建结点,存放从数据文件中读出的景点信息fscanf(pFile,%s tt %s tt %s tt %s tt %s tt %s n,psp -sp_c_num,psp -sp_sr_num,psp -sp_num,psp -scespo,psp -sp_location,psp -sp_time); /*查找景区信息支链上对应的景点结点*/ p=hp; find=0;3!feof(pFile)Nprintf(景点信息文件打开成功!n);re+=16;fclose(pFile);/关闭文件/printf(景点信息文件打开失败!n);return re;Y(pFile=fopen(gp_sp_info_filename,r+)=NULLNYNfree(psr);/释放所创建结点的内存空间/psr-next=p-sr_head;p-sr_head=psr;2p!=NULL456fclose(pFile)return reYfree(psp);psp-next=psr-sp_head;psr-sp_head=psp;以后进先出方式插入景点信息支链中psr=p-sr_head;YYNYp!=NULL&find=0psr=psr-next;p=p-next;3Npsr!=NULL&find=0strcmp(psr-sr_num,psp-sp_sr_num)=0find=1; break;Nfind=1N6 文件文件菜单下的保存 功能的函数:函数原型:BOOL save(void);函数功能:调用createlist函数,将城市、景区、景点三级链表分别存在三个文件中,分别是c.txt、sr.txt、sp.txt。 该程序的流程图如下:开始定义所需变量:struct city *p/指向城市信息链的指针/struct scearea *psr/指向景区信息链的指针/struct scespo *psp/指向景点信息链的指gp_sp_info_filename针/FILE *pfout=NULL/文件指针/BOOL bret = TRUE/返回布尔值/gp_c_info_filename,gp_sr_info_filename,gp_sp_info_filename是存放链表的三个文件打开gp_c_info_filenameP指向链头NP!=NULLY关闭文件读一条城市信息存到gp_c_info_filename中p=p-next22打开gp_sr_info_filename关闭文件p=p-nextpsr=psr-nextpsr=p-sr_headp=gp_headNp!=NULLYpsr!=NULL打开gp_sp_info_filenameY读一条景区信息存到gp_sr_info_filename中6p=gp_headNp!=NULLYpsr=p-sr_headNpsr!=NULLset_text_success()关闭文件打开gp_sp_info_filename3p=p-nextpsr=psr-nextY返回bretpsp=psr-pr_headN4533N654Ypsp!=NULLp=p-nextpsp=psp-nextpsr=psr-next读一条景点信息存到gp_sp_info_filename中文件菜单下的备份功能的函数:函数原型:BOOL BackupData(void)函数功能:备份数据,将三类基础数据备份到一个数据文件backup.txt中文件菜单下的恢复功能的函数:函数原型:BOOL RestoreData(void)函数功能:恢复数据,备份数据后,文件被修改,可以通过回复函数,是三个文件的内容恢复到和备份文件里的数据相同。文件菜单下的退出功能的函数:函数原型:BOOL ExitSys(void)函数功能:退出系统。数据维护城市信息维护数据维护菜单下的城市信息维护功能的函数函数原型:BOOL Maintainc_Info(void)函数功能:维护城市信息,包括删除、插入以及修改。调用了以下函数:BOOL delc(struct city *hp,char *c_num);/*删除城市信息结点*/BOOL ins_city (struct city *hp,struct city *p);/*插入城市信息结点*/BOOL modifc(struct city *hp,char* c_num, struct city *p);/*修改城市信息结点*/景区信息维护数据维护菜单下的景区信息维护功能的函数函数原型:BOOL Maintainsr_Info(void)函数功能:维护景区信息,包括删除、插入以及修改。调用了以下函数:BOOL ins_scespo(struct city *hp,struct scespo *psp);/*插入景点信息结点*/BOOL delsp(struct city *hp,char *sr_num,char *sp_num);/*删除景点信息结点*/BOOL modifsp(struct city *hp,char *sr_num,char * sp_num,struct scespo *psp);/*修改景点信息结点*/景点信息维护数据维护菜单下的景点信息维护功能的函数函数原型:BOOL Maintainsp_Info(void)函数功能:维护景点信息,包括删除、插入以及修改。调用了以下函数:BOOL delsr(struct city *hp,char *sr_num); /*删除景区信息结点*/BOOL ins_scearea(struct city *hp,struct scearea *psr);/*插入景区信息结点*/BOOL modifsr(struct city *hp,char *sr_num, struct scearea *psr);/*修改景区信息结点*/. 现就城市链表给出Maintainc_Info的流程图:(见p)Y输出操作成功输出操作失败输入:需要删除的城市编号并把其存放在c_num调用delc函数返回值为TRUEN显示:1、 删除城市信息2、 插入城市信息3、 修改城市信息用户选择1定义:字符数组c_num用来存放要删除的城市编号YN1开始结束输入操作成功输出操作失败调用ins_city函数返回值为TRUEYN1用户选择2Ystruct city *pc1=(struct city *)malloc(sizeof(struct city)申请一个动态空间节点用来存放要插入的城市信息输入: 城市编号pc1-c_num,城市名称pc1- city,城市邮编pc1-c_inspnum,城市特色pc1-c_consnum,2结束用户选择3输入操作成功输出操作失败调用modifc函数返回值为TRUEYN2struct city *pc2=(struct city *)malloc(sizeof(struct city)申请一个动态空间节点用来存放要新修改的城市信息字符数组c_num来存放要修改的城市编号输入:城市编号pc2-c_num,城市名称pc2-city,城市邮编pc2- c_inspnum,城市特色c_consnum,原城市编号结束开始strcmp(p-c_num,c_num)=0编号相同,为要删除的城市Find=1,找到Yp=p-next指针往下移一位Find=1申请:指向城市节点指针p,用来遍历链表整型变量find,用来标识是否找到,置初值为0p=hp;使遍历指针指向链表开头p!=NULL,未到链表尾部YN返回该城市指针pc结束Y申请:struct city *p; 指向要删除节点指针struct city *p_prior=NULL; 指向要删除节点的前一节点struct scearea *psr; 指向要删除节点指针struct scearea *psr_prior; 指向要删除节点的前一节点struct scespo *psp; 指向要删除节点指针struct scespo *psp_prior; 指向要删除节点的前一节点BOOL del=FALSE; 判断是否删除成功所用变量p=*hp使p指向链表头p!=NULL&Strcmp(pc-c_num,c_num)!=0;未到链表尾且未找到Yp_prior=pc; p=p-next把指针向后移一位Np!=NULL,找到Ydel=TRUE3开始Ypsp_prior=psp; psp=psp-next; free(psp_prior);释放景点节点空间psr=psr-next; free(psr_prior);释放景点节点空间psp=psr-sp_head ; psr_prior=psr;psp!=NULLN3YNpsr=p-sr_head; free(pc);释放要删除的城市节点空间p_prior-next=p-next;使要删除节点的前一节点与其后一节点相连*hp=p-next; 使头指针指向要删除的节点的下一结点p_prior=NULL;判断是否为第一个城市节点点psr!=NULLN44del=TRUE输出操作成功输出操作失败结束数据查询城市信息查询数据查询菜单下的城市信息查询功能的函数函数原型:BOOL Queryc_Info(void)函数功能:查询城市信息,包括精确查找(城市编号)和精确查找(所有信息) 调用了以下函数:struct city *seekc(struct city *hp,char *c_num); /*查找城市信息结点*/struct city *seek_c(struct city *ph, int cond_num, .);景区信息查询数据查询菜单下的景区信息查询功能的函数函数原型:BOOL Querysr_Info(void)函数功能:查询景区信息,包括精确查找(城市编号)和精确查找(所有信息) 调用了以下函数:struct scearea *seeksr(struct city *hp,char *sr_num); /*查找景区信息结点*/struct scearea *seek_sr(struct city *hp,int cond_num,.);/*模糊查询城市信息结点*/ 景点信息查询 数据查询菜单下的景区信息查询功能的函数函数原型:BOOL Querysr_Info(void)函数功能:查询景区信息,包括精确查找(城市编号)和精确查找(所有信息) 调用了以下函数:struct scespo *seeksp(struct city *hp,char *sr_num,char *sp_num);/*查找景点信息结点*/struct scespo *seek_sp(struct city *hp,int cond_num,.);/*模糊查询景点信息结点*/现就城市链表给出Querysr_Info的流程图:YY定义所需变量:struct city *p;struct scearea *psr;struct scearea *psr_net=NULL;struct scearea *psr_temp;sp_c_num; sp_sr_num;/*城市编号、景区编号*/ihot;/*用户选择操作*/i=0;/*循环控制变量*/ result;/*函数操作结果*/ihot!=0绘制窗口;用户选择:1、精确查询;2、多条件组合查询;0、返回N结束ihot=1用户选择:1、开始输入;0、取消;1用户选择:1、开始输入;0、取消;2开始Yihot!=01N输入:城市编号sp_c_num;景区编号sp_sr_num;调用函数seekc(gp_head,p_num);返回p输出确切查找出的景区信息到屏幕返回值!=voidYN输出“操作无效”,结束ihot!=0;NY输入:组合条件个数cond_num;查询条件;2调用函数seek_c (gp_head,p_num);返回p _ret输出确切查找出的景区信息到屏幕返回值!=voidYN输出“操作无效”,结束结束结束结束结束开始NN返回psrY调用函数strcmp(psr-sr_num,major),返回值为result;result!=0Npsr=psr-next;Yp!=NULL;psr!=NULL;Ypsr=p-sr_head;输出“操作无效”,结束结束输出“操作无效”,结束Psr=p -sr_head;0Cond_numnext;6P =p -next;NInext=psr_ret;Psr_ret=psr_temp;返回psra_ret;89N结束清屏其原型声明如下:void ClearScreen (void);该函数在文件 main.c 中。其主要调用了以下函数:void ClearScreen(void);函数功能:清屏负责清除界面文字帮助帮助菜单下的帮助 功能的函数:函数原型:BOOL BackupData(void)函数功能:使用说明 帮助菜单下的关于 功能的函数:函数原型:BOOL AboutDorm (void)函数功能:制作人、指导老师、完成时间帮助菜单下的帮助 功能的函数:函数原型:BOOL information(void)函数功能:调用void travers(struct city *head)函数,打出表中所有的的城市景区和景点信息,其中实参为链表的头指针gp_head.4系统实现与测试4.1 系统测试测试一个系统的优良是程序设计中必不可少的环节,测试一个系统的好坏要尽量做到测试数据全面,测试方面全面,在测试系统是否有漏洞的同时也要检测该系统是否方便用户使用。测试本系统,我们采取的方法是测试该系统的每一个功能,测试每一个功能函数是否起到作用,同时我们输入了大量数据,测试了这个系统筛选信息的能力和效率,下面附上截图:初始界面:A加载成功B加载失败C. 下拉菜单文件:A. 城市信息维护 城市信息删除输入:027删除成功: 删除失败: 城市信息插入输入:040 西藏 440000 风景优美的地方输入:enter插入成功输入: 027 武汉 440000 风景优美的地方输入:enter插入失败(城市编号已经存在) 城市信息修改输入:027 厦门 470000 海边城市 027输入:enter修改成功输入:050 厦门 470000 海边城市 050输入:enter修改失败(城市编号不存在)B景区信息维护 景区信息删除输入:01输入:enter删除成功输入:15输入:enter删除失败(景区编号不存在) 景区信息插入输入:027 10 户部巷 4A 武昌区司门口 人文美食 四季 87654321输入:enter插入成功输入:090 11 户部巷 4A 武昌区司门口 人文美食 四季 987654321输入:enter插入失败(城市编号不存在)输入:027 2 某某 5A 武昌区 自然景观 四季 87654321输入:enter插入失败(景区编号已经存在) 景区信息修改输入:027 01 户部巷 4A武昌区司门口 美食人文 全天 8765432101输入:enter修改成功输入:040 01 户部巷 4A武昌区司门口 美食人文 全天 8765432101 输入:enter 修改失败(城市彪悍或景区编号不存在) C景点信息维护点击数据维护下拉菜单的景区信息维护选项跳出窗口: 景点信息删除输入:06 061输入:enter删除成功当景区编号或景点标号不存在时删除失败 景点信息插入输入:027 03 东湖 武昌区珞瑜路 80元/人输入:enter插入成功当城市编号、景区编号或景点编号不存在时插入失败。当景点编号已经存在是插入失败。 景点信息修改输入:027 02 021 黄鹤楼 武昌区大东门 70元/人输入:ener修改成功当城市编号、景区编号和景点编号不存在或不匹配时修改失败。6.3.信息查询:A.城市信息查询点击数据查询下拉菜单下的城市信息查询跳出窗口:.城市精确查询输入:0571 输入:enter.城市组合查询输入:1 01=武汉 输入:enterB.景区信息查询.景区精确查询输入:09输入:enter.景区组合查询输入:2 1池 23A输入:enterC.景点信息查询.景点精确查询输入:05 051输入:enter.景点组合查询 输入:1 1岛输入:enter1.帮助 点击帮助下拉菜单的帮助选项跳出窗口:2.所有信息 点击帮助下拉菜单的所有信息选项跳出窗口:5总结5.1 全文总结主要工作如下:(1)根据用户需要设计了这个旅游景点查询系统。设计了这个系统的各个功能函数,并且制作了这个人机交互界面。(2)录入了众多城市,景区,景点数据,完善了这个系统。(3)测试了系统的各个功能,改良了一些漏洞。(4)将旅游景点查询系统的功能和算法写成了实验报告,方便阅读和交流心得体会。5.2 工作展望在今后的研究中,围绕着如下几个方面开展工作(1)界面的美观和人性化,美观和人性的界面会方便用户的操作,界面的制作是一个可待研究的课题。(2)算法的高效性,高效的算法可以减少计算机的运算量,节约大量的时间。设计出高效的算法是一门重要的学问,需要良好的逻辑思维能力,希望在以后的工作中,能开发出更加简便的算法来实现数据的查询和筛选。 5.3 体会接到这个课设题目的时候其实我心里是没底的,因为对这样一个系统,没有整体的认识,也不知道应该从哪里下手。后来在和同学讨论之后又来大概的了解和明确的目的,于是在暑假刚开始我就开始着手写课设。 充分了解供需关系景点查询系统,是面向游客的,所以我得从游客的角度思考,我的系统应该具备哪些信息,当然,我也上网搜了一些资料,比如:湖北旅游查询系统。这个系统能够是个很好的例子,所以在任务数的基础上,我对城市景区和景点的信息都做了些调整和修改,是信息更全面更有用。并且确定了信息查询功能,包括精确查询和模糊查询。在这,针对管理员,此系统应该有基本的文件保存,备份,恢复,以及信息的删除,插入和修改功能。 链表的创建最开始我就定义了三个动态链表,分别是城市,景区和景点,但是明显这样做是不够的,必须把这三个链表连起来,于是我通过两个指针,一个下一级另一个则指向下一个链表的头。于是链表就创建出来了。 功能函数的编写测试前面做的都是些准备工作,到功能函数时就遇到了麻烦。3.1创建链表例: while(! feof(pFile) p=(struct city *)malloc(sizeof(struct city); fscanf(pFile,%s tt %s tt %s tt %s n,p-c_num,p -city,p-c_inspnum,p-c_consnum); p-sr_head=NULL; p-next=hp; hp=p; fclose(pFile);a.刚开始我是用fread函数从文件中读取信息,但是在这种情况下,判断是否为空功能的函数(feof)在读取最后一个信息后不会立刻跳出while循环,而是又走了一次,这样导致我读取的信息都是乱码,或者干脆停止工作.b.在修改了这个问题后,我发现我的系统只能读取第一级的全部信息,但是读第二级也就是景区信息的时候会无法读入。在经过断点调试后最终发现是因为p-sr_head没有置空,导致指针失效。3.2保存保存的函数比较简单,但是和创建链表一起用时却会停止工作,我起先以为是创建链表哪里出问题了,但是在debug无果后 ,原来是save和createlist两个函数创建链表的方式不同,我一个写的是先进后出,一个是先进先出,导致出错,在改正后,就可以正常运行了。3.3数据维护a.写删除函数时,忽略了被删除链表下的其他链表,导致,这些链表依然存在文件中却已经没有用处,反而会干扰程序的正常运行例:if(p_prior = NULL) /如果是链头 *hp = p_current -next; else p_prior -next = p_current -next; b.做这些处理时,因为忽略了头指针和其他指针的区别,也出了错 ,还好立马发现并且改了过来。3.4界面这个是最让我头疼的,刚开始看资料时根本看不懂,太多的变量名让我头昏眼花,后来是问的同学,外加通过不断使实验,了解这些变量的作用,做出了现在的界面。 收获通过这次的课程设计,我对链表和链表的操作都有了更深的理解和运用,初步了解了人机交换界面,最重要的是,通过不断地debug,掌握了找出bug的经验,比如断点调试等多种方法。参考文献1曹计昌,卢萍,李开. C语言程序设计,北京:科

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论