火车票管理系统C语言程序设计实训报告.docx
- 文档编号:12097886
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:17
- 大小:291.96KB
火车票管理系统C语言程序设计实训报告.docx
《火车票管理系统C语言程序设计实训报告.docx》由会员分享,可在线阅读,更多相关《火车票管理系统C语言程序设计实训报告.docx(17页珍藏版)》请在冰豆网上搜索。
火车票管理系统C语言程序设计实训报告
C语言私序论孕
实训报告
题
目:
学生成绩管理系统
院
系:
信息科技学院
专
业:
计算机科学与技术
姓
名:
何荣荣
学
号:
04
指导教师:
王小琼
日
期:
2018年6月28日
鼓林电&科就女曇传息科枚曇配
前言
课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。
通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。
C语言由于苴强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了而向对象的程序设计方法和开发工具,但它仍然是人们学习程序设讣的首选语言,用它训练和提髙编程技术,以及开发应用程序等。
我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。
但是,对于程序设计而言,学习C的步伐不应该停留于此。
我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C语言开发出解决复杂问题的大型综合程序。
可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对TUrbOC语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。
本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方而的使用方法,希望通过此次实训,不仅能提髙学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。
本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。
由于时间、经验及水平的原因,不当、不足之处,请大家提岀宝贵意见。
编者
1、问题定义4
2、系统设计4
2.1总体设计4
4、详细程序12
5、归纳总结15
5.1开发经验15
5.2实训中遇到的问题及解决方法15
5.3感想和心得体会15
6、参考资料16
火车票管理系统
本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的并种基本操作。
本程序中涉及字符数组的使用、字符指针的使用、数据库的设计和文件使用等方而的知识。
通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出髙质疑的管理信息系统打下坚实的基础。
1、问题定义
该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录入、査找、删除、显示、售票、退票等。
所有火车票数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。
本火车票管理系统应该具备如下功能:
1)录入班次:
车次信息包括:
班次、发车时间、起点站、终点站、行车时间、额定载量、己售票)
2)显示所有班次
3)査询班次
4)增加班次
5)售票
6)退票
7)修改班次
8)(退票)删除班次
9)退出
2、系统设计
2・1总体设计
采用模块化的程序设计方法,即将较大的任务按照一楚的原则分为一个个较小的任务,然后分别设讣各个小任务。
需要注意的是划分岀来的模块应该相对独立但又相关,且容易理解C可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上
而一层是主模块,下面各层是其上一层模块的逐步细化描述。
火车票信息管理系统
车票管理系统软件的功能模块有:
(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。
(2)接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。
(3)完成每次功能,可保存用户的修改的信息,及时更新文件信息。
下次查询时内容为最新信息。
实时的信息更新对比等。
一个名TICKET的结构体进行定义,包括num[10]hour[3];min[3]from[10];to[10];hoursmax;now;等结构体成员。
然后对调用函数进行定义。
intSyStem-time()系统时间
VOidNeWMeSSageo新纪录录入函数
VOidShOWTableIOVOidShOWTabIe2(inti)线框调用1和2不用每次输
VOidDiSPIay()显示所有函数
VOidaddO增加记录
VOidsave()保存函数
VOidsave()保存函数
VOidIOad()按班次查询函数
VOidSearCh()查询函数
VOidChangeO修改函数
VOidQUitO退出函数
VOidTiCketOrder()售票函数
VOidTiCketdeIete()删除函数
intmenu-selectO菜单函数
intWhether(int)判断时间是否超出函数
VOidfind(charsi[]lChars2[])查询函数
8-册
请选择(1-9>:
站•终点站•行车时间•额定载量•已售票数,输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。
显示所有班次
可以显示所有录入的信息。
查询所有班次功能
请选择
2∙増级点站查询3•追岀
请通择
请输入要查询的班次:
卜疋疋疋疋)C)(X)C)C)C)CXX∙)C)C)C)C)C*)C)C)C)C)C) 班次≡发车时间≡起点站;终点站;行车时间;额定载量;己售票≡ 欢迎傅用火车票查询系统 图3-3选择查询方式的界面 该功能将实现程序运行班次的查询。 选择3并按enter键将实现该功能。 分班 次和终点站两种方式查询。 增加班次功能 图3-4增加班次界面 该功能将増加班次信息,帮助用户更新班次信息。 选择4并按enter键将实现该功能,再按提示输入就行。 按任意键返回主菜单。 售票功能 图3-5T选择售票功能界面 图3-3-2订票的界面 选择5按enter键实现该功能,按任意键关闭程序。 买票程序可提示买票成功否,且自动判断是否可卖。 退票功能 EB4rCl∖Progra≡FilesVlicrosoftViSUaIStUdiO∖iyPr∙jects∖1751200204∖Jebxιe∖1751200204...∣∣SI⅞Γ∣∣ 请选择“-9〉: 6 1.迫票 2.返回 请: ⅛B 聶谕入要退票的班次: 1 **********÷θθθθθθθθθθθθθθθ(MESSAGE车千列言'恳、WX)C)Cx>c)cx*)c)c)o)< 确定 Y 進票成功? 图3-6退票界面 选择6按enter键实现该功能,按任意键关闭程序。 退票程序可提示退票成功否,且自动判断是否可退。 修改班次功能 ClP∙U'"Dg! ιl ■RE(I 欢迎使用火车羽宜询系统Π7S12M204•何茅⅛*--→1≡⅛R⅛Mf: ■— 1-录乂肘: .八 2・皐q⅛翎次 4・⅛⅛W. 5.-g≡ 二⅛1i≡¾ 8・刪陈班次 VWVvVVWVMVMVWVWWWVWVVVXVWVvVWMVWVvVWVWVWVWVXVwVWVVVVWV ⅛i¾⅛ 请播入要修改的班枚: 1 ××××××M×M×M×MκNXM×M×κ×X×××MESgAGE^^j∈ι⅝.MXX××××××××××M×M×M×MXMXM×K×××××××× I- 班次! 发车时何I起点站I终点站"亍车时即熬定载量I已售黑! ∙^≡MMMMI∙≡I 22.0! 21I1: Il22: TO ・—•— 确定楼蘆宀用〉? 霜入发车时∣B] θ∂ 辙∕∖J⅛误T ⅛<Λ⅛时间XX〉 柳帅河北I •J U0 说辅人龙点站,柳曲 玮入终点站,请辑入行车时间, ⅛^Λ^5e⅛≡^: 苕输入己 2 图3-7修改界面 选择7按enter键实现该功能,按任意键关闭程序。 按提示操作修改班次。 删除班次功能 a*C: \Progra.FilesMicroseftViSILalStUdiOViyProjects∖lT51200204∖Delug∖1751200204...B∏≡ ^ 1. 2. 3. 4. 8∙册寸除班次 W址址址坏實*xxw⅜賀■賀■賀■賀■賀****¾<**⅜<∙⅜<∙⅜<∙⅜<∙w∙⅜ 8 I-观徐班次 2•彼回 请通择 ;青输入要®! 除的班次: 1 ÷θθθθe*÷θθθθe*÷θθθθe*÷θθθθθθθ^ESSAGE车■禾呈zf耳息、* ; 班次! 一I 发车时间 -! : - ≡起点站! ・・ •: : 终点站;行车时间颇定载量;已售票 「一r—r—T-T-T-T-TS—r-r-r-r-r-r-r-r•「「「「「「「■「 I 1! I 3: 00 ! 柳^、1、|; ->„■ III 河北;2.0! 31! 2 __I->--I- 确定7 Y 删除成功? 图3-8删除界面 退出功能 [J)*C: ∖Progra«Files∖BicrσsoftViSIIalStUdioViyFrojects∖1751200204∖Debug∖1751200204... *M*m*M*M*M*M*M***欢迎使用火车票查询系统***************** ÷θθθθθθθθθθ∈^θθθθθ÷l751200204何宋宋XxXJ *******************MENU功能采单xxxud-mdocud •录AWIuS⅞⅛τ⅛班次查询班次増加班次 I请选⅛ 确认退岀? V PveSSanykeytoCOntinueSi”丄I-l、‘亠^l-÷-^LL 图3-9退出界面 该功能可退出系统,选择9按enter键实现该功能 4、详细程序 录入班次 2.显示所有班次 3.查询班次 4.增加班次 5.售票 6.退票 7.修改班次 %&删除班次l∖ ”S9.退出,,}; 才專*JlC)ICHC未才扌P***HC京********才才主函数沐京拿: *****扌才*CHC京扌才感****眾/VOIdmam() { While(I) ιιm,records[ι].ħoιιr. IeCOrdS[i].ιmn,records[ι].from,records[i].to,records[ι].hours,IeCOrdS[i].max.records[i].now); else PnIItf("∣%IoSl已发车∣%10s∣%10s%|%8d|%8d|M.records[i].nunL IeCOrdS[i].from,records[i].tojrecords[i].hours,records[i].max,records[i]now); } ShOWTable2(j);..W,); getch();按班次查询∖ιΓ); Pnntfc,2.按终点站査询S”); Pnntf(H3.退出W); PnntfC请选择(l-3)ι∖n'∙); SCanf(H%d,∖ IOad();..W); getch();Um)==OIIStrCmP(S2,records[i].to)==0) IUIlJeCOrd.s[ι].hour,records[i].mill. IeCOrdS[ι].firom.records[i].to,records[i].hours? records[i].iiiax.records[i].now);h+=2; ιf(m==l) break: } ShoWTable2(h);增加班次W); Prmtf(H2.返回W); PnntfC请选择(1-2)W); SCanf(H%d∖ If(I==I) { Prlntf(πl.请输入要增加的班次: \『); SCanf(H%sπ,records[ClaSSemUn].num); fbr(ι=0d If(StrCmP(IeCOrdS[class-nιuιι].mun,records[i].mun)=0) 售票\n”); Pnntf(h2.返回W); PnntfC请选择(l-2)ιW,); SCanf(H%d,∖ Ifa=I) { IOad();Um)=O)ax>records[i]no\v&&Whetller(i)=1) ow++;o,records[i]num); SaVe0;退票S'); Pnntf(H2.返回E); Pnntfc请选揪1∙2)SJ; IOad();Um)=O)OW-;■删除班次5”); Prmtf(,,2.返回E); PniItf(”请选择(l-2)Λn"); SCanf(π%d∙∖⅛ι); If(I==I) { PnntfC请输入要删除的班次W); SCaIIf(H%sπ.num); ι=fiiidιιum(muιι);IUIl)==O)um,records[ι]hour IeCOrds[i]Inin,records[i].firom,records[i]to,records[ι].hours,records[ι]IiIaXJeCOrds[i]now);h+=2;atπ∕WbH))==NULL)Htn? IbH))==NULL) getchO;! ourrecords[i].mm); ιf((atoι(records[i].hour)<24&&atoi(records[i].hour)>==0)&&(atoi(records[i].nιιn)v60&&atoi(IeCOrdS[ι].mm)>=0)) break;else { Pnntf(”输入错误! S”); getch(): Iom); PnlItfC∙i⅛输入终点站: ∖n"); SCanf(H%s,∖records[i].to); Prmtf("i⅛输入行车时间: 'u"); SCanf(H%f∖&records[i].hours); PnIItf("请输入额定载量: \n”); SCaIlf(M%d,∖&代COniS[i].max); for(;;) Printf(HiW输入已售票数卅): SCanfl(H%d,∖&Tecords[i].no\v): ιf(records[ι].no∖vr<=records[ι].max)break; else { Pnntf(”输入错误! E); getch(): OUr)IIIOCal->tm-hoιιr==atoι(records[ι]hour)&&1OCal->tmjπιmVatoι(records[i].mm))StateO-正常中止非O-非正常 } 5、归纳总结 5.1开发经验 通过对本题目的开发,体会到要掌握以下几点内容很重要: 1.大程序的设计风格。 按“自顶向下,逐步细化,模块化”的方法进行程序设汁。 2.编写主函数,并进行测试与调试。 当被调函数又需要调用其他函数时,也要遵循逐步细化的原则。 C语言提供丰富的库函数,编程序时要善于使用库函数,避免不必要的劳动。 3.文件使用方法。 文件使用完毕后应及时关闭。 4.函数的定义应明确内容。 5.主函数良好的调用会使代码更美观。 5.2实训中遇到的问题及解决方法 在这次的实训中,主要遇到的问题是 fread(&class_IIUnLSiZeOf(Int),1,φ2);数据来自给出的输入流. 函数的返回值是读取的内容数量…的意思 打代码过程中,英实重复利用了很多数据,很容易浮躁,幸好有学长的指点,让我们活学活用,自己眾义一个新的函数,然后后面需要就直接调用就好了。 5.3感想和心得体会 通过将近两周的程序设计实习,我首先认识到自己编程水平的有限,还要当初有学好C语言这么课程,其次我也意识到编程是件很严谨的工作,一点点小的错误都会引起不可想象 的连锁反应。 实践岀真知,我觉得这两个星期的学习,自己收获很大,对我自己来说也是一种锻炼,不仅在一立程度上增长了我对编程的认识,我也学会了团队合作,学会了坐冷板凳一行一行敲代码。 当然,我自己身上依然存在着不少的问题。 比如对于一些难懂的代码,还是参考了网上的程序,比如录入数据的时候一开始不知道怎么让各组信息整齐地排列,以及如何完美的输入输岀等。 我们大学生学编程,实践貞•的是很好的方式,我非常感谢学校给我们安排这样一次珍贵的实习机会,让我们第一次面对问题、解决问题,在实战中真正地提高了自己对编程的理解和编程的能力,真心希望学校多给我们提供这样书本之外的考核和锻炼。 指导老师王老师对我们的严格要求是我们更加努力完成作业,提髙自己的打代码水平,并努力真正的成为计算机专业的技术性人才,再次真的非常感谢王老师的鼓励教导! 6、参考资料 [1]谭浩强C程序设计教程北京高等教育出版社1992 [2]耿国华高级程序设计技术(C语言版)四安电子科技大学出版社2009 [3]王骞、陈宇、管马舟程序设计经典300例 [4]AlIdreWKOenlgAiIdreWKOenlg《C陷阱与缺陷》 [5]BnanW.KenlIghaiKDeliIIlSM.RItChIeC程序设计语言第2版•新版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 火车票 管理 系统 语言程序设计 报告