课程设计报告-车票管理系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥学院

计算机科学与技术系

课程设计报告

2010~2011学年第二学期

课程C++课程设计

课程设计名称车票管理系统

学生姓名常新亚

学号1004011025

专业班级10级计本一班

指导教师华姗姗、高玲玲

2011年6月30

车票管理系统设计报告

一.需求分析

1.首先本演示程序要实现录入班次信息的功能,并且要用文件来保存这些信息,还可以不

定时的增加班次数据信息。

2.本程序还需要实现一次性输出当前班次信息,供使用者浏览。并且要从实际考虑,若

当前系统时间已经超过了某班次的发车时间,则要显示“班次已发出”的提示信息。

3.此程序既为车票管理系统,就要实现查询路线、售票、退票等功能。而且当使用者使

用查询路线功能时,要分为两种情况查询:按班次号查询和按终点站查询。若要使用售票功能,则只有在查询出定票人数小于额定载量且当前系统时间小于发车时间时才能售票,并且要自动更新已售票人数。退票时要求输入退票的班次,当班次尚未出发时才能退票,同时也要求自动更新售票人数。

4.本车票管理系统程序已用户和计算机对话的方式执行,采用画面菜单。用户可根据提

示实现各项功能。操作后的信息用户可以选择是否保存。信息保存在bus.txt文件。

二.设计目的

将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

(1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。

(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序和修改程序。

(8)进一步提升学生对编程语言的了解及提高学生对编程的兴趣。

三.算法设计

1.设计思想:

⑴.程序结构(UML图)如下:

⑵.数据结构:

本程序使用C++中的类、类的组合、链表。其中定义的Busticket_Control类存放着车票的信息(私有类型)及对车票信息进行操作的成员函数(公有类型)。Bus_Link类中定义了一个Busticket_Control类的对象指针头用做链表的头。Bus_Link类中还存放着许多成员函数,这些成员函数用来对Busticket_Control类中的成员函数进行调用操作及判断操作。这些类完成了对车票信息及处理的封装。而链表则方便了对很多车票信息的存储及操作。

⑶.主要算法思想:

本程序有:

①录入班次信息(信息用文件保存),可不定时地增加班次数据

②浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。

③查询路线:可按班次号查询 ,可按终点站查询

④售票和退票功能

A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。

B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。

等功能。

首先为了实现录入功能必须要有一个对类私有变量进行访问的成员函数,于是定义了Busticket_Control::input(void)这个录入函数,同理需要定义输出车票信息函数、售票函数、退票函数和判断时间函数。为了将已经操作的信息录入文件和从文件中读出车票信息,需要定义录入文件的函数和读取文件函数,同时还定义了返回终点站及班次的函数为下面搜索功能的实现提供方便。以上函数都是直接对一个班次的车票信息进行操作的,为了将很多的车票信息链接起来方便查找及不定时增加班次数据,定义类另一个链表类Bus_Link这个类中定义一个私有的头指针和其他对Busticket_Control中数据进行间接操作的函数(调用Busticket_Control相应的函数),如:录入函数、浏览函数、查找函数、查找判断函数、售票函数、退票函数、保存数据函数、清除函数、初始化函数及菜单函数。

然后,在主函数中首先定义一个Bus_Link类的类对象,接着调用初始化函数(begin())读入文件内容并形成链表。下面就可以通过菜单函数及用户输入来实现其他功能。为了实现不定时录入功能需要首先调用Bus_Link类的input函数这个函数首先找到链表尾部在调用Busticket_Control中的input函数来实现录入并存入链表中;同理实现其他功能。浏览班次函数会调用时间判断的函数来判断班次是否发出并打印。查询函数就是在链表中查找想要的内容;售票及退票函数会调用查找函数和时间判断函数来判断是否允许售票和退票。

最后设计一个循环来实现返回主菜单功能及退出时确定保存数据到文件中。

2.设计表示:

⑴.Busticket_Control类中的函数及其介绍:

a.函数名:Busticket_Control类的构造函数。

函数体:

Busticket_Control::Busticket_Control(void)

{

ticketed=0;

}

函数功能:函数用来实现对新创建的Busticket_Control类类对象中已定票人数进行清零操作。跟一般的构造函数没有什么区别。

b.函数名:Busticket_Control类的析构函数。

函数体:Busticket_Control::~Busticket_Control() {}

函数功能:用来完成对象被删除前的一些清理工作。

c.函数名:ptime(void)

函数体:

bool Busticket_Control::ptime(void) //判断时间函数

{

struct tm *local; //读入系统当前时间

time_t t;

t=time(NULL);

local=localtime(&t);

if((local->tm_hour>hour_start)||(local->tm_hour==hour_start&&lo

cal->tm_min>minute_start)) //与系统当前时间较

return 1;

else

return 0;

}

函数功能:每次调用这个函数时,此函数会首先读入系统当前时间,并把车票信息中的发车时间与系统时间比较,如果发车时间大于等于当前系

统时间则返回0;当发车时间小于系统当前时间时候返回1;实现发

车时间与系统时间的比较。把这个功能单独用个函数封装方便与下

面多处调用时代码的重复,增强程序简洁性。

d.函数名:input(void)//录入函数

函数体:

void Busticket_Control::input(void) //录入函数

{

cout<<"*****请按提示输入*****"<

相关文档
最新文档