C 语言程序设计
课程设计报告
设计题目:酒店房间登记与计费管理系统
完成方式:(单选)
● 独立完成
○ 参考他人工作的基础上完成
○ 在他人的帮助下完成
○ 完整拷贝他人成果
自我评分:(单选)
● 优秀
○ 良好
○ 中等
○ 及格
○ 不及格
2011 年 4 月 11 日
设计任务:C 语言课程设计任务书 2
题目:酒店房间登记与计费管理系统
功能:1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,
包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。
2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收
费,可根据顾客需要在登记的入住的时候进行选择。
3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费
用。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功
能。
3、进一步要求:完成计费和费用查询功能。
要求:1、用 C 语言实现系统;
2、系统的各个功能模块要求用函数实现;
3、界面友好(良好的人机交互),程序加必要的注释。
一、总体设计
1.程序的总体设计
1)程序的总体设计方案:
程序运行时,屏幕上出现一个界面,并显示酒店名字及欢迎信息,并
提示客户是否进入酒店,进入酒店后便显示一个功能选择菜单,有四项功
能可供选择,分别为 1.预定房间;2.入住情况查询;3.费用查询;4.退房
结账。客户通过键盘输入相应的数字选择不同的功能,进入不同的功能模
块之后客户按照提示完成一轮操作,之后程序根据客户不同需求跳转到功
能菜单处实现另一轮选择或者退出程序。
2)程序的总体设计概要框图:
初始界面
功能
选择
功能
实现
程序结束
提
示
信
息
2. 数据结构
本程序允许客户在酒店的订房以及退房操作,涉及到了客户信息的加
入以及删除,对于订房的客户,其信息根据预定的先后顺序进行存储,而
办理退房手续的客户,客户信息的删除不是按从头或者从尾有顺序地删
除,因为每个已经订房的客户都可能随时会退房,退房的客户其信息存储
不一定是最前面,也不一定是最后面,所以数据存储结构不能采用队列的
先进先出或者栈先进后出等原则实现。所以,我采用了线性链表对客户信
息进行存储,而每个客户的信息采用结构体 guest 来定义,结构体元素包
括 ID(存储客户身份证号)、roomtype(有’A’、’B’、’C’、’D’四种取值,分
别代表客户选择的单人间、双人间、高级间和总统套房)、feetype(有’1’、’2’
两种取值,’1’代表客户选择按日计费的计费方式,’2’代表客户选择按小时
计费的钟点房)、price(客户选择的房间类型的单价)、roomnum(房间号码)、
next(指向下一个客户信息)。当有客户选择订房时,程序为该客户分配一定
的空间,并将该客户信息依次加入到线性表中;当有客户选择退房时,程
序从线性表中找到客户的位置,删除相应信息并释放空间。
3. 函数原型声明的说明(功能,参数,返回值)
1)void choose(void)函数说明:
该函数可供客户对不同功能进行选择,并根据选择跳转到不同函数做相
应操作,首先函数在屏幕上显示一个功能选择菜单,接着允许客户从键盘上
输入一个范围为 1 到 4 的整数(若超出范围则报错并要求重新输入),并将该
数赋给 a,然后调用 switch(a),当 a 为 1 是,则跳转到 booking()函数;当 a
为 2 时,则跳转到 checkroom()函数;当 a 为 3 时,则跳转到 checkfee()函
数;当 a 为 4 时,则跳转到 checkout()函数,即实现了根据客户的不同选择
执行不同的功能,该函数的参数及返回者均为空。
2) void booking(void)函数说明:
该函数提供客户预定房间的操作,包括要求客户输入身份证号,计费类型,
选择房间类型并为客户分配房间号码,同时将订房的客户信息存储到线性链
表中,该函数的参数及返回者均为空。
3) void checkroom(void)函数说明:
该函数提供客户对酒店入住情况查询的操作,首先函数允许客户对需要查
询的房间类型的选择(房间类型有四类,分别为单人间、双人间、高级间和总
统套房),客户选择相应的房间类型,程序便显示该房间类型还剩下的房间数,
我设置单人房一共 20 间,双人房一共 20 间,高级间一共 10 间,总统套房一
共 5 套,若该类型的房间数已满,则程序做出相应的提示,该函数的参数及
返回者均为空。
4) void checkfee(void)函数说明:
该函数提供客户进行已产生费用的查询,首先函数提示客户输入身份证
号及房间号,函数从已存储的线性链表中找到客户信息,并将它显示出来,
同时提示用户已经入住的时间,并根据客户所住房间类型的单价算出客户住
宿到查询时截止所产生的费用。若用户输入的身份证号码或者房间号码有误,
程序也做出了相应的提示,该函数的参数及返回者均为空。
5) void checkout(void)函数说明:
该函数提供客户退房结账的操作,首先函数提示客户输入身份证号及房
间号,函数从已存储的线性链表中找到客户信息,并将它显示出来,同时提
示用户已经入住的时间,并根据客户所住房间类型的单价算出客户住宿应交
纳的费用。接着程序询问客户是否确定退订,若是,则程序将该客户的信息
从线性链表中删除。若用户输入的身份证号码或者房间号码有误,程序也做
出了相应的提示,该函数的参数及返回者均为空。
6) void quit(void)函数说明:
该函数提示客户是否需要新一轮的操作,当客户从功能函数退出时均跳
转到该函数,函数提示客户是否需要继续操作,若是,程序跳转到功能选择
函数 choose();若不是,则程序显示“欢迎下次继续光临”的信息并推出程
序。
4. 流程图
开始
二、详细设计
酒 店 信 息 显
1.main( )(流程图)
否
是否进入酒店
开始
是
功 能 菜 单 显
酒 店 信 息 显
输入 a
是否进入酒店
Switch(a)
否
欢迎下次光临
欢 迎 下 次 光
是
结束
调用函数 choose()
Case 1:
预定房间
Case 2:
入住情况查询
结束
Case 3:
费用查询
Case 4:
结账退房
2.quit( )(流程图)
是否继续操作
是
开始
提 示 是 否 继 续 操
输入 a
a!=1 && a!=2
是
输入有误,重
是
a=1
否
否
调用函数 choose()
欢迎下次光临
结束
3.choose( )(流程图)
开始
功 能 选 择 菜
输入 a
a>4 || a<1
否
输 入 有
是
Switch(a)
Case 1:
预定房间
Case 2:
入住情况查询
Case 3:
费用查询
Case 4:
结账退房
是
是否继续操作
否
欢 迎 下 次 光
结束
4.booking( )(流程图)