您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 房地产 > C语言课程设计报告--火车售票查询系统(完)
湖北工业大学工程技术学院课程设计报告书课程名称:C语言课程设计班级:物联网一班小组成员:范立恒、陈根、聂俊豪、麦灿文、黄文康组长:范立恒指导教师:楚惟善二○一三年六月C语言课程设计实验报告-2-1课程题目及要求及要求题目一:火车售票系统任务:结合C语言中相关知识,设计出火车售票系统。1录入北京西站车次信息;2旅客按车次买票;3统计某日火车票销售金额。程序要求:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某日销售金额”、“退出”4项。代码应适当缩进,并给出必要的注释,以增强程序的可读性为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定;根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和2程序分设计说明经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。1.添加车次函数主要实现程序最初运行时车次的录入;C语言课程设计实验报告-3-2.旅客买票函数实现的功能是按照旅客所需车次几所购买车票的数目;3.查询车票总额按照题目的具体要求实现的是总额的查询;4.显示函数实现的是显示目前所有的有效车次信息。除上面介绍的功能之外,程序还具有显示当地时间,以及退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个车次都包含车次、日期,始发、终点以及所受票数和所需费用,在程序当中,将车次类型定义为结构体类型,添加的车次信息直接写入E盘的train.txt文件中,其它函数每次对车次记录的访问,其数据来源都是train.txt文件,这样做不但可以保证学生数据的一致性,而且可以对车次数据进行永久保存,保证每次运行程序都可以采用原来的数据。3程序流程图1.程序总体结构图当1输入值n=1?真假添加学生信息函数add()n=2?真假显示学生信息函数show()n=3?真假删除函数del()真假n=4?更新函数change()n=5?真假排序函数sort()查询函数query()退出n=6?真假图1程序总体结构图2.具体功能框图C语言课程设计实验报告-4-(1)添加学生数据函数add以追加方式打开E盘student.txt文件成功?真假输出文件打开失败真假以追加方式打开E盘student.txt文件成功?返回输入添加学生数量n循环变量i=1当i=n时输入学号、姓名和三门成绩学生信息写入文件关闭文件i++图2添加学生数据函数(2)读取学生数据函数reads以读方式打开E盘student.txt文件成功?真假输出文件打开失败返回循环变量i=0当文件未结束时i++关闭文件读取学生信息到数组元素stu[i]中返回学生人数i图3读取学生数据(3)删除学生记录函数delC语言课程设计实验报告-5-循环变量i=0;输入待删除学生学号number当in时i++n=reads(stu)stu[i]与number相等?真假break真假i=n?输出没有找到该学生信息!j=i+1当jn时stu[j-1]=stu[j]j++调用更新文件函数save(stu,n-1)输出提示“删除成功”图4删除学生记录(4)按总分排序函数sortC语言课程设计实验报告-6-当jn-1-i时j++循环变量i=0第j个学生总分第j+1个学生总分真假交换两个学生信息j++i++当in-1时i=0当in时输出学生信息和排名情况i++n=reads(stu)调用更新文件函数save(stu,n)j=0图5按总分排序4.程序清单本程序主要由九个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1.录入车次信息函数录入车次信息,首先由程序创建一个新文件,并将录入的车次信息写入该文件(e:\\train.txt)当中。具体的程序段如下:if((fp=fopen(e:\\train.txt,a))==NULL)//如果文件已经存在,可以追加车次信息{if((fp=fopen(e:\\train.txt,w))==NULL)//文件不存在时,创建新文件,输入车次信息{C语言课程设计实验报告-7-printf(文件打开失败!\n);return;}}printf(请输入要车次的数量,按回车键确认:);scanf(%d,&n);for(i=1;i=n;i++){printf(\n请输入第%d个车的车次,日期,始发,终点,用空格分开,并按回车键确认:\n,i);scanf(%d%d%s%s,&tra.num,&tra.date,tra.from,tra.ter);printf(\n请输入第%d个卖出的数量,车次所需的费用,用空格分开,并按回车键确认:\n,i);scanf(%d%f,&tra.maipiao,&tra.tickeprice);fprintf(fp,%d%d%s%s%d%f\n,tra.num,tra.date,tra.from,tra.ter,tra.maipiao,tra.tickeprice);}fclose(fp);}2.旅客买票函数对于买票,这部分程序然调用了reads函数,首先应输入旅客所买车次,然用if函数进行比较,如果成立就进行一下售票以及金额运算,最后调用save函数进行更新。具体程序如下:n=reads(tra);printf(\n请输入待查询的车次号,按回车键确认:\n);scanf(%d,&num);for(i=0;in;i++)if(num==tra[i].num)break;if(i=n){printf(没有找到该车次信息!\n);return;}elseprintf(\n请输入所买票数,按回车键确认:\n);C语言课程设计实验报告-8-scanf(%d,&j);tra[i].maipiao=tra[i].maipiao+j;printf(\n购买成功\n);printf(\n%12d%11d%11s%11s%11d%11.2f\n,tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice);save(tra,n);3.查询销售总额对于也使用比较日期的方法实现的,这部分程序仍然调用了reads函数,整个排序过程在文件中实现,然后用for循环进行运算,把查询这一天的总额算出。具体程序如下:if((fp=fopen(e:\\train.txt,r))==NULL){printf(读取错误,不能打开该文件!!\n);return;}elsefor(i=0;iN;i++)fscanf(fp,%d%d%s%s%d%f\n,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice);printf(请输入你要查询的日期:\n);scanf(%d,&temp.date);for(i=0;iN;i++)if(temp.date==tra[i].date){sum=sum+tra[i].maipiao*tra[i].tickeprice;j=1;}C语言课程设计实验报告-9-if(j==0)printf(无此日期销售信息,请重新输入);elseprintf(今天的总销售额为:%f\n,sum);fclose(fp);5.所遇到的问题问题一:屏幕停滞问题由于知识的有限,对于很多功能知识了解大概,通过网上的查询,得知getchar()有停滞界面的功能。问题二:…………(你们自己补充问题)6.课程设计总结范立恒:本次C语言课程设计从暑假就开始收集资料,学习相关知识,一些上课未涉及的内容也做了些了解和掌握,直至开学的第一周陆续完成。在实验的设计的过程中出现了许多上课、作业中没有遇到过的问题,这就是理论与实践的区别,知道知识却不能很好的运用,说明自己没有真正的掌握C语言,学习的只是皮毛,使我认识到了实践、动手编译的重要性。以下本次C语言课程设计的几点小结:(1)通过上网学习和参阅参考资料陆续解决了系统时间的定义及调用、菜单形式界面的形成、屏幕停滞问题等问题。(2)在编译的过程中大大提高了编程的逻辑性,在语言清晰、简洁方面有了较好的提高。在程序查错的过程中也学会了设置断点,分块检查,逐渐提高了判断错误的速度和准确性。(3)通过在上课时间与老师的交流了解到了函数模块化的重要性。把程序的总目标分成一个个模块,提高清晰度和可读性。(4)本次试验是个自主学习的机会,通过本次试验也增强了自己的信息获取能力和自学能力。聂俊豪:通过这次学习,使我更加深刻的了解了c语言的用处,也使我更加喜欢这一学科,但也有一些不足之处:在统计金额方面不会使用定义时间的函数,不能把时间函数有效的使用,从而是程序有了一些瑕疵。这也只能希望在以后的学习中我能够慢慢的把这些问题解决掉。陈根:紧张的近一周数据结构课程设计很快过去了,通过这周的学习使我巩固了以前的C语言课程设计实验报告-10-知识并在此基础上对数据结构的特点和算法有了更深的了解,C语言是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已经成为其他理工专业的热门选修课。在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性,同时这两周的学习也提高了我适应实际,实践编程的能力.黄文康:首先这一周的学习,使我在巩固了原有的理论知识上,培养了我灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我体会到自身知识和能力在实际中的应用和发挥。其次,激发了我创新意识,开发创造的能力和培养沟通能力。另外,让我进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我数据结构的学习和提高很有益处,并且使我明白了程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型——线性表、栈、队列、串、数组、树和二叉树以及图等,然后确定处理过程——算法,可得最后结论。最后,在这次课程设计过程中,我们深刻的认识到了自己在学习方面的不足之处,我们知道我们还有太多的基本的思想没有真正的理解,当然我们不会灰心,我们会在以后的日子里努力弥补我们的不足。麦灿文:一个礼拜的课程设计让我们受益匪浅。要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,不断经历失败,然后又不断的尝试才能获得成功。两个多礼拜中,我们有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。一个礼拜的时间我们经历了很多,也收获了很多。与其说它是体力
本文标题:C语言课程设计报告--火车售票查询系统(完)
链接地址:https://www.777doc.com/doc-2061593 .html