1、C+程序设计课程设计汇报班级 计科101班 学号 37 姓名 毛翔 得分 一 目标加深对C+/C语言知识了解,扩大相关知识面,培养对这些知识应用能力。经过一个实际问题C+/C语言源程序编写和调试,提升综合利用C+/C语言、程序设计技术能力,并为后续相关课程学习打下基础。二 题目及要求题目:酒店房间登记和计费管理系统 功效:1、屏幕上出现一个界面,让操作员能够方便选择所需要进行操作,包含登记入住、查询房间入住情况、查询目前费用、结账退房等操作。2、对不一样标准房间实施不一样收费标准,也能够按天收费或按小时收费,可依据用户需要在登记入住时候进行选择。3、在结账退房时,依据入住时间,计费方法和房间单
2、价计算出总费用。分步实施: 1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数; 2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功效。 3、深入要求:完成计费和费用查询功效。要求:1、用C语言实现系统;2、函数功效要划分好(结构化程序设计);3、界面友好(良好人机交互),加必需注释;4、要提供程序测试方案,程序一定要经得起测试,宁可功效少部分,也要能运行起来,不能运行程序是没有价值。三 程序设计思想及步骤图正确定义所要用到变量,利用结构体存放房间信息,用函数实现各个功效, 对不一样标准房间实施不一样收费标准用,在结账退房时,依据入住时间,计费方法和房间单价计算出总费
3、用,用switch语句实现旅客对所需要操作选择,其它具体操作实现用循环、次序、选择结构语句实现。四 源程序#include stdafx.h#include using namespace std;#define ROOMNUM 10#define DAYFEE 100#define HOURFEE 10typedef struct roomint id;/房间编号int num;/床位数float fee;/费率int type;/0 代表按天,1代表安小时float time;/时间char startTime50;/入住时间char name30;/旅客姓名bool status;/房间
4、状态 false 代表空闲 true 代表已经有旅客ROOM;bool InitRoom(ROOM *roomList,int len)/printf(请分别输入 编号 床位数 );for(int i=0;iroomListi.idroomListi.num;roomListi.id = 100+i;roomListi.num = 2;roomListi.type = 0;roomListi.status = false;roomListi.time = 0;roomListi.fee = DAYFEE;return true;void InitRoom(ROOM &r)/重载r.type =
5、 0;r.status = false;r.time = 0;r.fee = DAYFEE;int RegRoom(ROOM *roomList,int len)bool flag = false;for(int i=0;ilen;i+)if(!roomListi.status)flag = true;break;if(flag)coutroomListi.nameroomListi.startTimeroomListi.type;if(roomListi.type = 1)roomListi.fee = HOURFEE;roomListi.status = true;if(flag)retu
6、rn i;else return -1;bool SearchRoom(ROOM *roomList,int len,int roomId)bool flag = false;for(int i=0;ilen;i+)if(roomListi.id = roomId)flag = true;break;if(flag)if(roomListi.status)cout该房间已经被旅客:roomListi.name 租住!endl;elsecout该房间还是空闲!endl;elsecout该房号不存在!endl;return flag;void DispalyCountInfo(ROOM &r)co
7、ut房号:r.id 用户名:r.name起始时间:r.startTime 费用:r.fee*r.timeendlendl;void DispalyAllRoom(ROOM *roomList,int len)cout房号 状态 用户名 入住时间endl;for(int i=0;ilen;i+)coutroomListi.id;if(roomListi.status)cout 入住 roomListi.name roomListi.startTime;elsecout 空闲 ;coutendl;bool CountRoom(ROOM *roomList,int len,int roomId)bo
8、ol flag = false;for(int i=0;ilen;i+)if(roomListi.id = roomId)flag = true;break;if(flag)if(roomListi.status)if(roomListi.type = 0)cout该旅客按天租住:n;elsecout该旅客按小时租住:n;coutroomListi.time;DispalyCountInfo(roomListi);/显示结账信息InitRoom(roomListi);/初始化该房间elsecout该房间还是空闲,不能结账!endl;elsecout该房号不存在!endl;return flag
9、;bool RequireRoom(ROOM *roomList,int len,int roomId,float time)bool flag = false;for(int i=0;ilen;i+)if(roomListi.id = roomId)flag = true;break;if(flag)if(roomListi.status)if(roomListi.type = 0)cout该旅客按天租住:n;elsecout该旅客按小时租住:n;float t = roomListi.time;roomListi.time = time;DispalyCountInfo(roomListi
10、);/显示结账信息roomListi.time = t;elsecout该房间还是空闲,不能结账!endl;elsecout该房号不存在!endl;return flag;int main(int argc, char* argv)ROOM roomListROOMNUM;InitRoom(roomList,ROOMNUM);int roomId;float time;int ret = -1;int regId = 0;while(ret != 0)cout请输入一个整数:n 1. 登记入住;n 2. 查询房间;n 3. 查询目前费用;n 4. 结账退房; n 5.显示全部房间信息 n 0.
11、 退出系统。n;coutret;switch(ret)case 1:regId = RegRoom(roomList,ROOMNUM);if(regId=0)cout登记成功!房间号为:roomListregId.idendl;elsecout房间已经满!endl;break;case 2:coutroomId;SearchRoom(roomList,ROOMNUM,roomId);break;case 3:coutroomIdtime;RequireRoom(roomList,ROOMNUM,roomId,time);break;case 4:coutroomId;CountRoom(roomList,ROOMNUM,roomId);break;case 5:DispalyAllRoom(roomList,ROOMNUM);break;coutendl;return 0;五 设计体会经过这次课程设计,我发觉我们所学知识还是远远不够.我们不仅要牢牢掌握书本上知识,还要进行课外探索,对知识点进行深入研究,加深对知识点了解.还有更关键一点是,在学好知识同时,多去实践一下,做到学以致用,这么才能愈加好提升自己能力,真正成为这方面人才.(汇报以此为模板,打印装订后上交)