版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书题目:火车票订票系统一、课程设计时间200910第2学期第1周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:1录入北京西站车次信息;2旅客按车次买票;3统计某日火车票销售金额。三、课程设计要求程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某日销售金额”、“退出”4项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:学生签名:五、说明书成绩
2、六、教师评语 ITOC o 1-5 h z HYPERLINK l bookmark22 一、需求分析1 HYPERLINK l bookmark24 二、程序流程图2 HYPERLINK l bookmark28 三、核心技术的实现说明及相应程序段5 HYPERLINK l bookmark52 四、课设总结9 HYPERLINK l bookmark54 五、参考文献9 HYPERLINK l bookmark56 六、源程序9一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现
3、严格按照题冃的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。1.添加车次函数主要实现程序最初运行时车次的录入;2.旅客买票函数实现的功能是按照旅客所需车次几所购买车票的数冃;3.查询车票总额按照题冃的具体要求实现的是总额的查询;4.显示函数实现的是显示目前所有的有效车次信息。除上面介绍的功能之外,程序还具有显示当地时间,以及退岀功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个车次都包含车次、日期,始发、终点以及所受票数和所需费用,在程序当中,将车次类型定义为结构体类型,
4、添加的 车次信息直接写入E盘的traiiLtxt文件中,其它函数每次对车次记录的访问,其数据来源都是train.txt文件,这样做不但可以保证学生数据的一致性,而且可以对车次数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图程序总体结构图当1資、输入值n=1?添加学生信息函数add()4、呼?显示学生信息函数show()删除函数del()一一S腹一破s47一一一一裱更新函数cliange()排序函数sort()查询函数qi】ery()退出图1程序总休结构图具体功能框图添加学生数据函数add追加方式打开E盘smdent.txt文件成功?_一一-一一-一一真一一假J式打开E盘s
5、tiident.txt文件成叨,真-输入添加学生数量1】输出文件打开失败循环变量i=l当iv=n时输入学号、姓名和三门成绩返回学生信息写入文件i+关闭文件图2添加学生数据函数读取学生数据函数reads_以读方式打开E盘student.txt文件成功?真假循环变量i=0输出文件打开失败当文件未结束时读取学生信息到数组元素sti】i中i+返回关闭文件返回学生人数i图3读取学生数据删除学生记录函数deln=reads(stii)循环变量i=0;输入待删除学生学号number当ivn时breaki+一一一假戸+1当jvn时输出没有找到stuj-l-stuj该学生信息!j+调用更新文件函数save(st
6、u,n-1)输出提示“删除成功”图4删除学生记录按总分排序函数sortn=reads(stu)循环变量i=0当ivn时戸0当jn-l-i时交换两个学生信息j+j+i+调用更新文件函数save(stu,n)i=0当in时输出学生信息和排名情况i+图5按总分排序三、核心技术的实现说明及相应程序段本程序主要由九个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当屮,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1.录入车次信息函数录入车次信息,首先由程序创建一个新文件,并将录入的车次信息写入该文件(e:train.tx
7、t)当中。具体的程序段如下:if(fp=fopen(He:train.txt,7,an)=NULL)如果文件已经存在,可以追加车次信息if(fp=fopen(He:train.txt,nwH)=NULL)/文件不存在时,创建新文件,输入车次信息printf文件打开失败!iT);return;printfT请输入要车次的数量,按回车键确认:-);scanf(H%dH,&n);for(i=l;i=n;i+)printf(nn请输入第(1个车的车次,日期,始发,终点,用空格分开,并按回车键确认:nM;scanf(n%d%d%s%s,&tra.n11叫&tra.date,tra.from,tra.te
8、r);printf(n请输入第d个卖出的数量,车次所需的费用,用空格分开,并按回车键确认:W,i);scanf(H%d%f*,&tra.maipiao,&tra.tickeprice);fprintf(fp,H%d%d%s%s%d%fnn,tr*num,tra.date,tra.from,tra.ter,tra.maipiao,tra.tickeprice);fclose(fp);2.旅客买票函数对于买票,这部分程序然调用了reads函数,首先应输入旅客所买车次,然用if函数进行比较,如果成立就进行一下售票以及金额运算,最后调用save函数进行更新。具体程序如下:n=reads(tra);pr
9、intf(nn请输入待査询的车次号,按回车键确认:nn);scanf(u%dn,&num);for(i=0;i=n)printf(”没有找到该车次信息!nu);return;elseprintf(nn请输入所买票数,按回车键确认:nn);scanf(n%dH,&j);trai.maipiao=traiemaipiao+j;printf(nn购买成功nJ;printf(nn%12d%lld%lls%11s%lid%lL2fnn,trainum4raiedate,traifrom,traiter,trai.maipiaotrai.tickeprice);save(tra,n);查询销售总额对于也使
10、用比较日期的方法实现的,这部分程序仍然调用了“ads函数,整个排序过程在文件中实现,然后用for循环进行运算,把查询这一天的总额算岀。具体程序如下:if(fp=fdpeii(ne:train.txtn,nrn)=NULL)printf(n读取错误,不能打开该文件!n“);return;elsefor(i=0;iN;i+)fscanf(fp/%d%d%s%s%d%fnn,&U*ai.num,&trai.date,trai.ftom,trai.ter,&Uai.maipiao,&1rai.tickeprice);printf(n请输入你要查询的日期:n”);scanfH%dM,&temp.date
11、);foi、(i=0;iN;i+)if(temp.date=trai.date)sum=sum+trai.maipiao*trai.tickeprice;j=1;printfC1*无此日期销售信息,请重新输入”);elseprintf(n今天的总销售额为:%fn”,sum);fclose(fp);、课设总结通过这次学习,使我更加深刻的了解了C语言的用处,也使我更加喜欢这一学科,但也有一些不足之处:在统计金额方面不会使用定义吋间的函数,不能把吋间函数有效的使用,从而是程序有了一些瑕疵。这也只能希望在以后的学习中我能够慢慢的把这些问题解决掉。五、参考文献1谭浩强.C程序设计.北京:清华大学出版社,
12、20052刘成等.C语言程序设计实验指导与习题集.北京:中国铁道岀版社,2006六、源程序includeinclude#includetime.h#includenconio.hM#defineN20stiiicttiamintnum;mtdate;charfiom20;charter20;mtmaipiao;floattickepiice;voidmenu();mtreads(stiiicttramtraN);voidsave(stmcttraintraN4iitn);voidadd();voidsellQ;voidshowQ;voidlocaltimesO;voidall();voidma
13、in()intn;while(l)menuQ;pnntf(ii请输入您要选择的操作序号,按回车键确认:”);scanf(”d”,&n);switch(n)case1:localtmies();break;case2:add();bieak;case3:show();bieak;case4:sell();bieak;case5:all();bieak;case6:exit(O);default:printf(H输入错误,请输入列表中存在的序号!5”);voidmenu()pnntf(n*北京西站火车订票系统*fi1显示当前时间”);2车次信息录入”);3显示”);4旅客买票“);pnntf(ni
14、i5统计某日销售金额”);6退出”);mtieads(stincttraintraN)/读取车次中的内容FILE*fp;mt1=0;if(fp=fbpen(e:tiam.txt7r)=NULL)pnntf(”文件打开失败!n”);retuin0;elsefor(i=0;Ifeof(fp);i+)fscanf(fp/,%d%d%s%s%d&tiai.mim5&trai.date,trai.from,trai.ter,&trai.maipiaotrai.tickeprice);fclose(fp);fetiun1;voidsave(stmcttraintraN,intn)/车次信息改变后更新文件F
15、ILE%;mt1=0;if(fp=fbpen(ne:tiam.txt,7,wn)=NULL)文件打开失败!Xii1);retuin;elsefor(i=0;in;i+)fpnntf(fp,%d%d%s%s%d%firtrai.nmn,trai.date,tiai.from,trai.ter,tiai.maipiao,trai.tickeprice);fclose(fp);voidadd()/*录入车次信息*/FILE他mtn,i;stiucttraintra;if(fp=fopen(,e:tiam.txtu;,a,)=NULL)如果文件己经存在,可以追加车次信息if(fp=fopen(e:tr
16、ain.txt,w)=NULL)/文件不存在时,创建新文件,输入车次信息prmtf(n文件打开失败!n”);letuin;prmtfC*请输入要车次的数量,按回车键确认:“);scanff%d”、&n);fbi(i=l;i=n;i-H-)请输入第1个车的车次,日期,始发,终点,用空格分开,并按回车键确认:scanf(%d%d%s%s,&tra.num、&tra.date,tra.fioni,tra.ter);pnntfC-ii请输入第01个卖出的数量,车次所需的费用,用空格分开,并按回车键确认:scanf(%d%f&t】a.maipiao,&tia.tickepnce);fpnntf(fp/,
17、%d%d%s%s%d%fii,tra.num.tra.clatejra.fLom,tra.tei;tfa.maipiaoJfa.tickepnce);fclose(fp);voidshowQ车次信息显示函数stmcttraintraN;mtiji;n=reads(tra);h*的车次信息如下pnntf(H序号车次日期票价始发终点卖出print*d)fbi(i=0;in;i+)printf(,n%3d%12d%11d%11s%11s%11d%l1.2fiin,i+1,trai.num,trai.date,trai.fiom,trai.ter,trai.niaipiao,tiai.tickepri
18、ce);getcliQ;voidselio/按顾客要求对车次信息卖票stmcttraintraN;mtnumaiJ;mti;n=reads(tra);请输入待查询的车次号,按回车键确认:iin);scanfCd&nuni);fbi(i=0;i=n)pnntf(,毁有找到该车次信息!nn);return;elseprmtf(nii请输入所买票数,按回车键确认:iin);scanf(”d”,&j);trai.maipiao=tra1.maipiao-fj;prmtf(nii购买成功山”);pnntfCn%12d%lld%lls%lls%lld%ll2fa,tiaiiiiimnaidateMai.fiomnaitei;g1maipiao,trai.tickepnce);save(tra,n);voidall()统计销售金额stiucttraintraN,temp;floatsum=0;FILE*fp;mti,j=0;if(fp=fopen(ne:tram.txt,r)=NULL)pnntf(”读取错误,不能打开该文件!n”);retuin;elsefor(i=0;iN;i+)fscanf(fp,*%d%d%s%s%d%fn”,&trai.num,&trai.date,trai.fiom,trai.ter,&trai.maipiao,&tiai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2026)执业药师中医含解析及答案
- 心理感恩心态深耕 发现生活点滴美好课件
- 黑龙江哈尔滨市德强学校2026-2027学年九年级上学期9月综合素养测评化学试题(含答案)
- 餐厨垃圾收运环节鼠蝇蟑治理课件
- 2026年智能电商平台运营工程师资格考试试题及答案
- 2026年小儿外科三基三严培训考核计划
- 2026年药品经营突发事件应急处置培训试卷(含答案)
- 2026年无人机操控员高级理论模拟试题库及答案
- 2026年食源性疾病监测上报考试试卷试题及答案
- 2026年中药汤剂质量管控三基培训考核计划
- 2026高考数学复习微专题:75.立体几何与解析几何综合问题的三种常见类型
- 建筑工程技术课程
- 量力而行议论文
- 化工园区的应急管理体系构建与风险防控能力提升毕业答辩
- 《心灯录》完整版
- 2026届新高考英语热点冲刺复习:定语从句
- 船舶修造基地项目吨浮船坞改建工程可行性研究报告
- 康复护理关节活动度训练被动活动课件
- 《盗窃案件的侦查》课件
- 小学生英语规范书写课件
- 八年级物理第一次月考卷(考试版A4)(北京地区人教版2024第1~3章)
评论
0/150
提交评论