C++列车时刻查询系统课程设计报告-
发布时间:
课程设计报告
课程设计题目:列车时刻查询系统
学生姓名 专 业 班 级: 学 号: 指导教师:
2009年 12月 12日
目 录
一、课程设计题目、时间、地点 ……………………………3 二、系统分析 …………………………………………………3 三、课程设计目的 ……………………………………………4 四、课程设计要求 ……………………………………………4 五、实现思路 ………………………………………………5 六、实验过程…………………………………………………13 七、课程设计总结……………………………………………31 八、心得体会…………………………………………………32
(一)课程设计题目、时间、地点:
列车时刻查询系统
2009-12-7
软件楼504
(二)系统分析:
随着人们生活水平的提高和信息化时代的到来,管理系统的作用已越来越重要,列车时刻查询系统是个小型管理系统,用C++语言实现。所有数据都要利用文件系统保存,使用ofstream文件输入输出流保存文件信息,以备系统下次运行时使用。主要功能包括:
录入列车信息:
该部分功能主要是用于系统管理员输入列车的各种信息,加强系统的可扩展性和延续性,使系统信息保持更新。
浏览列车信息:
浏览全部的列车信息,将所有的列车时刻信息都展示出来方便用户调用,此功能管理员和游客皆可调用。
查询列车信息:
查询列车时刻信息,以及相关资料,查询分两种方式,一种是按列车号查询,另一种是按终点站查询。两种查询想辅助。使
用户更快捷的查询到有关信息。
删除列车信息:
删除列车时刻信息功能主要用于更新列车信息数据,对于不必要的信息和错误的过时的信息进行相关处理,有利于简化系统,对于系统的运行速度的提升有着良好的加速效果。此功能是管理员专用功能,游客用户无权调用。
修改列车信息:
此功能用于修改列车信息,使用权限仅限于管理员。进行列车信息的相关修改对于系统的正常运行有着显著的作用。
保存列车信息:
保存功能通过输入输出流来实现,将列车信息保存在DEBUG目录下,使用文本文档的形式保存相关信息。
关于列车时刻查询系统:
列车时刻查询系统的相关说明,以及使用规则及注意事项。
退出系统:
退出键,退出功能。
(三)课程设计目的:
在《面向对象程序设计》课程理论与实验教学的基础上,根据软件工程的方法与流程,在相对集中的实训教学时间内,通过一个功能较完整的小型应用系统,复习与深入掌握面向对象的程序设计思想与技术方法。同时,作为整个实践教学体系一部分,
系统培养学生采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。本次课程设计的主要目的是复习C++语言中学过的基本知识,综合运用所学的C++语言知识解决一个比较实际的简单问题,初步掌握开发一个小型实用系统的基本方法,侧重对类的定义和使用以及对数组、链表、函数、指针、结构体和文件等相关内容的综合应用,使我们能进一步熟悉掌握C++语言的基本语法,掌握C++语言中类的定义派生,以及各种结构的使用,还有函数设计方法、结构化设计思想和链表的使用方法以及该注意的地方,掌握规范的程序设计思想,掌握规范的程序编码的格式以及学会调试一个较长程序的基本方法。进一步提升自己的编程能力并逐步培养编程思维,进而不断提高我们解决问题的能力,并为以后的语言学习打下良好的基础。
(四)实验要求:
从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:
1)根据实现的功能,划分出合理的对象类,明确对象类间的关系。
2 为每个对象类设计正确的域和方法,为每个方法设计合理的方法体。同时,为对象类及内部的域和方法运用正确的修饰符,如访问控制符等。
3)编程简练,程序功能齐全,能正确运行。
4)说明书、流程图要清楚,规范(必须采用UML格式)
5)课题完成后必须按要求提交课程设计报告,格式规范,内容详实。
(五)实现思路:
合理地选择和实现系统的数据结构,对于此程序的编写非常重要。列车时刻查询系统是一种复杂的对象,无法用简单数据类型来描述,显然要定义不同的类和结构体。由于列车时刻信息很多,还需定义数组或者链表。数组的特点是数据在内存中顺序存放,长度必须事先指定,而列车时刻信息的个数很难估计。如果数组长度定得过大,会造成存储空间的浪费;如果数组长度得过小,又无法满足需求。特别是进行插入、删除等操作时,代价较大而且又容易出错。用链表管理列车时刻信息就显得较为妥当,首先它不用估计信息个数,其次进行插入、删除等操作时代价较小。所以列车时刻信息用结构体定义,用链表作为临时数据处理,用文件来存储数据。要注意数据定义的数据类型,用函数实现相应的功能,然后在主程序中进行调用。程序运行的时候用菜单选择功能,菜单选择功能如下:
录入列车信息-----------按数字键1, 浏览列车信息-----------按数字键2, 查询列车信息-----------按数字键3, 删除列车信息-----------按数字键4, 修改列车信息-----------按数字键5,
保存列车信息-----------按数字键6, 关于列车时刻查询系统---按数字键7, 退出系统---------------按数字键0。
类:将列车信息定义为一个类-train_infor并且将相关的函数进行定义,在类的定义中还要申明好几种数据的类型,局部变量和全局变量。将列车相关的功能也定义为一个类-train_link,将它的相关信息也定义好。
结构体模块:定义链表的关键在于为列车时刻信息定义结构体类型时应该定义一个next成员,该成员可以把列车时刻信息结点进行链接。
主模块:结构体程序设计的基本思想是:自顶向下,逐步细化,把功能进行分解,最终分解为一些较易实现的小模块。模块是由函数实现的,函数之间形成明确的调用关系。
main函数就是程序的主模块,它控制整个程序的运行,具体功能主要在各个子模块中实现。main函数不断循环调用主菜单函数,根据用户输入的命令,调用相关的功能函数,如果用户输入“退出”命令,则结束程序。
初始化模块:该模块负责在用户进入系统时,调用保存在磁盘文件中的列车时刻信息。列车时刻信息保存在DEBUG文件夹目录中,用ofstream文件输入输出流的方式打开。调用ifstream功能从文件读入数据,动态分配内存空间,
存放列车时刻信息,并且在读入数据时组织链表。
菜单模块:系统与用户交互的界面是通过菜单实现的,用户根据菜单的提示输入命令,然后主模块调用相应的功能模块,实现用户所要求的操作。菜单是在train_link类中由menu函数实现的,主要是通过显示一些文字,构建一个简单的字符界面。为了便于操作,又定义一个字符串数组用来显示菜单的轮廓。在menu函数中调用了库函数system(“cls”),它的功能是清屏。
添加模块:列车时刻查询系统的添加的添加功能是由train_link::input(函数来实现的。添加的列车时刻信息插入在链表的尾部。通过使用cin.fail(,cin.get(,cin.clear(,