/* 用C语言实现一个简单的单身公寓管理系统1. 这个公寓有1024个单人房;
2. 客人入住的时候,看是否有空房,如果有,安排入住,记录客人编号,入住的天数,房间号;
3. 客人如果主动退房,就安排退房,把房间置为空;
4. 如果某个房间的客人已经住足天数,就通知客人退房,不给续住。客人如果还要住,
需要客人重新申请入住;
5. 客人可能住一天,也可能住几年。用c语音编写一个小程序,实现客人入住;住客人主动退房;周期检查各个房间数据,到期的房间安排退房,把房间值为空;
要求:
1.程序要高效; 房间数目使用宏,如果是10000个房间,程序一样可以用;
2.请补全”your define“ 和 “your code” 既可;
3.程序不要求编译通过,以后课程里回教大家如何编译。
4.不用考虑操作互斥的问题;
客人信息:
编号 房间信息:
房间号:0-MAX_ROOM_NUM
房间状态,是否空:1 空, 0有人居住
入住客人编号;32位无符号数;为了编程方便,1-MAX_RENTERS_NUM;
客人要住的天数;32位无符合数;为了编程方便,最大值位MAX_DAYS;
剩余天数;32位无符合数;为了编程方便,最大值位MAX_DAYS;
函数框架1. 客人入住,由其他程序来调用
原型 :DWORD CheckIn(DWORD dwRenterId, DWORD dwDays);
参数 :dwRenterId,入住者ID;
dwDays, 居住天数;
返回值:房间号,如果没有房间可住,返回0xffffffff;
2. 客人主动提前退房,由其他程序来调用;
原型 :DWORD CheckOut(DWORD dwRenterId,DWORD dwRoomNo);
参数 :dwRenterId,入住者ID;
dwRoomNo, 房间号;
返回值:是成功退房; 不成功的情况是入住者ID不合法,dwRoomNo不合法,或者他没有住房,或者他说的房间为空等;3. 每天检查和更新房间信息,为到期的客人退房;
void updateRoomInfo(void)
如果有到期的房间退房,请调用void RoomNote(DWORD dwRenterId,DWORD dwRoomNo);4. 初始化函数
int RoomManInit(void);
*/
/*
** 宏定义,结构定义,函数申明,变量申明等
*/#define ONEDAY 1#define MAX_ROOM_NUM 1024
#define MAX_RENTERS_NUM 4096
#define MAX_DAYS 8192#ifndef __BYTE
#define __BYTE
typedef unsigned char BYTE;
#endif#ifndef __WORD
#define __WORD
typedef unsigned short WORD;
#endif#ifndef __DWORD
#define __DWORD
typedef unsigned long DWORD;
#endif
/* your define */extern void DayDelay(DWORD dwDays);
/*
** 供他人调用
*/
DWORD CheckIn(DWORD dwRenterId, DWORD dwDays)
{
/* your code */
}
/*
** 供他人调用
*/
DWORD CheckOut(DWORD dwRenterId,DWORD dwRoomNo)
{
/* your code */
}
/*
** 供RoomManMain调用
*/
void updateRoomInfo(void)
{
/* your code */
}/*
** 供RoomManMain调用
*/
DWORD RoomManInit(void)
{
/* your code */
}
/*
** updateRoomInfo 来调用
*/
void RoomNote(DWORD dwRenterId,DWORD dwRoomNo)
{
printf("RoomNote: dwRenterId=%lu, dwRoomNo=%lu\n", dwRenterId, dwRoomNo);
return;
}
/*
** 由系统调用来执行
*/
void RoomManMain(void)
{
RoomManInit();
while(1)
{
DayDelay(ONEDAY);
updateRoomInfo();
}
}
2. 客人入住的时候,看是否有空房,如果有,安排入住,记录客人编号,入住的天数,房间号;
3. 客人如果主动退房,就安排退房,把房间置为空;
4. 如果某个房间的客人已经住足天数,就通知客人退房,不给续住。客人如果还要住,
需要客人重新申请入住;
5. 客人可能住一天,也可能住几年。用c语音编写一个小程序,实现客人入住;住客人主动退房;周期检查各个房间数据,到期的房间安排退房,把房间值为空;
要求:
1.程序要高效; 房间数目使用宏,如果是10000个房间,程序一样可以用;
2.请补全”your define“ 和 “your code” 既可;
3.程序不要求编译通过,以后课程里回教大家如何编译。
4.不用考虑操作互斥的问题;
客人信息:
编号 房间信息:
房间号:0-MAX_ROOM_NUM
房间状态,是否空:1 空, 0有人居住
入住客人编号;32位无符号数;为了编程方便,1-MAX_RENTERS_NUM;
客人要住的天数;32位无符合数;为了编程方便,最大值位MAX_DAYS;
剩余天数;32位无符合数;为了编程方便,最大值位MAX_DAYS;
函数框架1. 客人入住,由其他程序来调用
原型 :DWORD CheckIn(DWORD dwRenterId, DWORD dwDays);
参数 :dwRenterId,入住者ID;
dwDays, 居住天数;
返回值:房间号,如果没有房间可住,返回0xffffffff;
2. 客人主动提前退房,由其他程序来调用;
原型 :DWORD CheckOut(DWORD dwRenterId,DWORD dwRoomNo);
参数 :dwRenterId,入住者ID;
dwRoomNo, 房间号;
返回值:是成功退房; 不成功的情况是入住者ID不合法,dwRoomNo不合法,或者他没有住房,或者他说的房间为空等;3. 每天检查和更新房间信息,为到期的客人退房;
void updateRoomInfo(void)
如果有到期的房间退房,请调用void RoomNote(DWORD dwRenterId,DWORD dwRoomNo);4. 初始化函数
int RoomManInit(void);
*/
/*
** 宏定义,结构定义,函数申明,变量申明等
*/#define ONEDAY 1#define MAX_ROOM_NUM 1024
#define MAX_RENTERS_NUM 4096
#define MAX_DAYS 8192#ifndef __BYTE
#define __BYTE
typedef unsigned char BYTE;
#endif#ifndef __WORD
#define __WORD
typedef unsigned short WORD;
#endif#ifndef __DWORD
#define __DWORD
typedef unsigned long DWORD;
#endif
/* your define */extern void DayDelay(DWORD dwDays);
/*
** 供他人调用
*/
DWORD CheckIn(DWORD dwRenterId, DWORD dwDays)
{
/* your code */
}
/*
** 供他人调用
*/
DWORD CheckOut(DWORD dwRenterId,DWORD dwRoomNo)
{
/* your code */
}
/*
** 供RoomManMain调用
*/
void updateRoomInfo(void)
{
/* your code */
}/*
** 供RoomManMain调用
*/
DWORD RoomManInit(void)
{
/* your code */
}
/*
** updateRoomInfo 来调用
*/
void RoomNote(DWORD dwRenterId,DWORD dwRoomNo)
{
printf("RoomNote: dwRenterId=%lu, dwRoomNo=%lu\n", dwRenterId, dwRoomNo);
return;
}
/*
** 由系统调用来执行
*/
void RoomManMain(void)
{
RoomManInit();
while(1)
{
DayDelay(ONEDAY);
updateRoomInfo();
}
}
其实就是一个简单的算法加一个业务流程。网上类似的教程比比皆是。