SEMII——C++作业:旅馆预订系统 要求和实现
第一部分:需求概述
旅行社帮助其顾客预订旅馆,维护与其关联的旅馆和度假村的数据以及有关其预订情况的数据。
旅馆预订系统是为了方便预订和取消预订的记录而开发的,应当可以获得有关旅馆和度假村的更新信息。
第二部分:整体设计
旅馆的详细信息应存储在一个名为 Hotel.dat 的文件中,该文件应包含下列详细信息:
Ø 代码(从 1 开始按顺序编码);
Ø 名字(最多 30 个字符);
Ø 城市的名字(最多 30 个字符);
Ø 标准间的总数;
Ø 标准间的价格表;
Ø 可预订标准间的数目;
Ø 豪华间的总数;
Ø 豪华间的价格表;
Ø 可预订豪华间的数目;
度假村的详细信息应存储在一个名为 Resort.dat 的文件中,该文件应包含下列详细信息:
Ø 代码(从 1 开始按顺序编码);
Ø 名字(最多 30 个字符);
Ø 城市的名字(最多 30 个字符);
Ø 小别墅的总数;
Ø 小别墅的价格表;
Ø 可预订的小别墅数目;
预订的详细信息应保存在一个名为 Booking.dat 的文件中,该文件应包含下列详细信息:
Ø 预订编号(从 1 开始按顺序编码);
Ø 顾客的名字(最多 30 个字符);
Ø 联系电话;
Ø 电子邮件 ID (最多 30 个字符);
Ø 旅馆的类型(“H”代表旅馆,“R”代表度假村);
Ø 旅馆/度假村的代码;
Ø 房间类型(“R”代表标准间,“D”代表豪华间,“C”代表小别墅 – 如果旅馆类型是“R”则默认设为“C”);
第三部分:实现说明
旅馆预订系统则应以如图 1 所示的菜单开始
图 1:主菜单
根据用户的选择,将执行下列操作:
Ø Add new Hotel details(添加新旅馆的详细信息)
通过访问 Hotel.dat 文件中最后一个旅馆的代码并将其加 1 来生成新旅馆代码,接受旅馆的详细信息,并确保旅馆名、城市名不为空,接受标准间和豪华间的总数及两类房间的价格表,每种类型的房间可用性不应接受,而应设置为总房间数,将记录保存到 Hotel.dat 文件中。
添加新旅馆的屏幕如下图(图 2 )所示:
图 2:添加新旅馆的详细信息
Ø Add new Resort details(添加新度假村的详细信息)
通过访问 Resort.dat 文件中最后一个度假村的代码并将其加 1 来生成新度假村代码,接受度假村的详细信息,并确保度假村名和城市名不为空,接受小别墅的总数和价格表,小别墅的可用性不应接受,而应设置为小别墅总数,将记录保存到 Resort.dat 文件中。
添加新度假村的屏幕如下图(图 3 )所示:
图 3:添加新度假村的详细信息
Ø Record Booking details(记录预订的详细信息)
询问用户预订的是旅馆还是度假村,如果预订的是旅馆,则接受有效的旅馆代码和所要求的房间类型,并检查其可用性,类似的,如果预订的是度假村,则接受有效的度假村代码并检查小别墅的可用性,如果房间或小别墅可用,则接受预订的详细信息,通过访问 Booking.dat 文件中最后一个预订编号并加 1 来生成新的预订编号,确保顾客名不为空,而且联系电话大于 0,将记录保存到 Booking.dat 文件中,更新 Hotel.dat 或 Resort.dat 文件,以反映当前房间或小别墅的可用性。
添加新预订如图 4 所示。
图 4:添加新预订的详细信息
Ø Record Cancellation details(记录取消预订的详细信息)
接受有效的预订编号,从 Booking.dat 文件中删除指定的预订记录,检查要取消预订的旅馆类型,并相应地更新 Hotel.dat 或 Resort.dat 文件中房间/小别墅可用性详细信息。
取消预订的屏幕如下所示。
图 5:记录取消预订的详细信息
Ø View details of Hotels and Resorts in a city(查看某一城市中旅馆及度假村的详细信息)
接受城市的名字,显示指定城市的相关旅馆和度假村。
特定城市中旅馆和度假村的屏幕如图 6 所示。
图 6:查看某一城市中的旅馆和度假村
Ø Exit(退出)
关闭程序,并退出旅馆预订系统。
应在整个系统中应用面向对象编程的概念,在系统的所有功能点处显示相应的消息。
第四部分:对应的章节内容
第二章:高级函数特性
显示菜单并接受选项,根据输入的选项,调用函数来显示相应的消息,告知用户所选择的选项。
第五章:流
为旅馆、度假村和预订创建类别,接受并显示每个类别的数据。
第六章:文件操作和异常
根据菜单选项创建函数,调用函数来添加旅馆、添加度假村、记录预订、记录取消预订以及查看某一城市中的旅馆和度假村。
新旅馆将添加到 Hotel.dat 文件中,新度假村将添加到 Resort.dat 文件中,而预订的详细信息将存储到 Booking.dat 文件中。
使用文件输入/输出流 (fstream) 函数来执行下列操作:
- open à打开文件;
- close à关闭文件;
- seekg à设置 get 指针的位置;
- write à将字符序列写入文件;
- read à读数据块;
第九章:多态
将旅馆和度假村类的共同元素合并到基类中,适当地修改旅馆类和度假村类的数据项和函数来继承基类。