诚接计算机专业编程作业(C语言、C++、Python、Java、HTML、JavaScript、Vue等),如有需要请私信我,或者加我的企鹅号:1404293476
本文资源:https://download.csdn.net/download/weixin_47040861/88725363
目录
注意:使用该程序请保证您的编程软件已安装easyX
题目:酒店住宿信息管理系统
住宿信息包括:住宿编号、姓名、身份证号码、联系电话、入住时间、房号、单价、入住接待人姓名、退房时间、退房接待人姓名、优惠费用、使用房内小物品费用、应付费用、备注。酒店住宿
信息管理系统的功能要求:
(1) 系统以菜单方式工作,执行一次操作后重新显示一次菜单; ;
(2)住宿信息利用文件保存;
(3) 住宿信息的录入;
(4) 修改住宿信息;
(5) 删除住宿信息;
(6) 按条件(住宿编号、姓名、身份证号码、联系电话、入住时间、房号)查询住宿信息;
(7)退房时根据退房时间与单价自动计算应付费用,应付费用=单价*入住天数-优惠费用+使用房内小物品费用,入住天数根据入住时间和退房时间自动计算;
(8)按天、周和月统计酒店的营业额。
注意:系统自动对各种数据合理性的检查。
启动函数会生成一个easyX窗口,窗口中包含七个按钮对应不同功能,同时在cmd窗口打印操作
然后只要在easyX窗口中点击对应按钮,就能启动cmd窗口中对应的功能,相关数据存储在当前目录下的hotel_list.csv文件中。
单击按钮后启动添加信息功能,输入对应信息后存储在hotel_list文件中。
根据用户输入的信息编号找到该信息,然后重新输入,若未找到则提示
根据用户输入的信息编号搜索,若找到则打印信息后删除,若未找到则提示
根据用户输入的编号启动对应信息查询功能,根据用户输入的内容进行查询。
根据用户输入身份证号查询相关信息,若存在则输入退房相关信息,若不存在则提示,输入完成后系统自动计算应付费用。
用户输入日期,系统自动统计该日期当日、当周、当月的营业额。
在函数开始时,创建了一个名为 Info
的 AccommodationInfo
类型数组,用于存储住宿信息,并初始化一个整型变量 len
来记录数组长度。
调用 handleFileOperations(Info, len)
函数,用于检查是否存在数据文件,如果有,则加载数据到数组中。
使用 displayMenu()
函数来打印程序的操作菜单。
调用 initgraph(600, 300)
创建了一个宽度为 600,高度为 300 的图形窗口,并设置了窗口背景色为白色,通过 cleardevice()
函数清屏使得背景色生效。
加载名为 "bg.png" 的图片并将其放置在窗口的 (0, 0) 坐标位置。
定义了 Button
类型的数组 buttons
,每个按钮包括位置和对应的文字标签。
使用 drawButton
函数绘制了七个按钮,并将它们显示在图形窗口中。
进入一个循环,监听鼠标事件。当鼠标发生点击事件时,检查点击位置是否在按钮的区域内。如果点击了某个按钮,则根据点击的按钮执行相应的操作,比如录入信息、修改信息等。在退出按钮被点击后,设置循环标志 flag
为 false,退出循环。
最后,调用 closegraph()
函数关闭绘图窗口,并返回0,结束了程序的运行。
首先,函数会输出提示信息:"录入数据"。
接着,创建一个名为 newInfo
的 AccommodationInfo
类型的对象,用于存储新的住宿信息。
函数依次要求用户输入住宿信息的各个字段:
在输入某些字段时,使用了 std::cin.ignore()
来清除输入缓冲区,确保正确获取用户输入。
输入完成后,将新的住宿信息对象 newInfo
存储到 Info
数组中的 len
索引处,并将 len
值增加 1,以便下次添加信息时存储到数组的下一个位置。
调用 saveInfo(Info, len)
函数将更新后的信息保存到数据文件中。
最后,输出提示信息:"录入成功",并使用 system("pause")
暂停程序执行,等待用户按任意键继续。
targetNumber
。found
来标记是否找到了要修改的信息,默认值为 false
。Info
数组中的每一项,查找是否存在与输入编号相匹配的住宿信息。如果找到了匹配的信息:
found
标记为 true
。newInfo
的 AccommodationInfo
类型的对象,并初始化为一个空白的信息对象,用于存储新的住宿信息。saveInfo(Info, len)
函数保存更新后的信息到数据文件。system("pause")
暂停程序执行,等待用户按任意键继续。break
结束循环。found
仍为 false
,即未找到匹配的信息,则输出提示信息:"未找到编号为 targetNumber
的信息。",并使用 system("pause")
暂停程序执行,等待用户按任意键继续。targetNumber
。found
来标记是否找到了要删除的信息,默认值为 false
。Info
数组中的每一项,查找是否存在与输入编号相匹配的住宿信息。如果找到了匹配的信息:
{ 0, "", "", "", "", 0, 0, "", "", "", 0, 0, 0, "" }
来表示信息已删除。saveInfo(Info, len)
函数保存更新后的信息到数据文件。break
结束循环。found
仍为 false
,即未找到匹配的信息,则输出提示信息:"未找到编号为 targetNumber
的信息。"。system("pause")
暂停程序执行,等待用户按任意键继续。choice
。searchKey
。found
标记是否找到了符合条件的信息,默认值为 false
。Info
数组中的每一项,根据用户选择的条件以及输入的关键字进行查询。如果找到符合条件的信息:
found
标记为 true
。show(Info[i])
函数展示符合条件的信息。found
仍为 false
,即未找到符合条件的信息,则输出提示信息:"未找到符合条件的信息。"。system("pause")
暂停程序执行,等待用户按任意键继续。searchID
)。Info
数组,查找匹配身份证号的住宿信息。getday
函数计算入住天数,并根据价格、优惠和额外费用计算应付费用。辅助函数
isLeapYear(int year)
: 判断是否为闰年。daysInMonth(int month, int year)
: 计算某个月的天数。getday(const std::string& start, const std::string& stop)
: 计算入住天数,根据入住和退房时间计算天数差。该功能由 statistics
函数完成。这个函数用于根据用户输入的日期进行统计酒店的营业额。
timePart
,用于后续对当月营业额的统计。getOtherDaysOfWeek
函数获取输入日期所在周的其他日期数组。Info
:
checkInTime
字段,根据输入日期进行当日、当周和当月的营业额统计。checkInTime
是否包含输入日期实现。checkInTime
是否包含在周数组 otherDays
中的任意日期实现。checkInTime
是否包含时间部分 timePart
实现。获取给定日期所在周的其他日期
该功能由 getOtherDaysOfWeek
函数完成。这个函数接收一个日期字符串 dateStr
和一个字符串数组 otherDays
,用于存储给定日期所在周的其他日期。
tm
结构体对象 timeinfo
,表示给定日期的年、月、日信息。mktime
函数获取给定日期所在周的起始日期(周日),并通过计算回到本周的周日。otherDays
数组中。通过增加一天的秒数,并使用 strftime
函数将日期格式化为字符串形式("%Y/%m/%d"),然后存储到 otherDays
数组中。这两个功能函数一起实现了对特定日期的营业额统计以及获取给定日期所在周的其他日期。