C语言课程设计宾馆住宿系统.docx
- 文档编号:12031486
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:53
- 大小:105.04KB
C语言课程设计宾馆住宿系统.docx
《C语言课程设计宾馆住宿系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计宾馆住宿系统.docx(53页珍藏版)》请在冰豆网上搜索。
C语言课程设计宾馆住宿系统
华中科技大学计算机科学与技术学院
《C语言程序设计》课程设计
实验报告
题目:
宾馆住宿信息管理系统
专业:
班级:
学号:
XX:
成绩:
指导教师:
完成日期:
20年10月1日
宾馆管理住宿系统
一实验目的:
1、进一步掌握和利用C语言进行程设计的能力;
2、进一步理解和运用结构化程设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、掌握书写程设计开发文档的能力(书写课程设计报告);
二实验要求:
1、只能使用C语言,源程序要有适当的注释,使程序容易阅读。
2、要有用户界面。
要求至少采用简易菜单;鼓励采用文本菜单界面甚至采用图形菜单界面。
3、必须使用结构和十字交叉链表等数据结构。
4、使用文件保存数据。
5、至少输出一份报表(屏幕输出即可),鼓励自行增加新功能。
功能要求(宾馆住宿信息管理系统):
对宾馆所有客房的住宿信息进行管理,主要包括客房基本信息、客户住宿信息。
包含功能:
客房基本信息录入。
允许对已经录入的数据重新进行编辑、修改,各种基本数据的插入、删除,基于各种数据的查询、统计计算。
宾馆住宿信息其它方面的统计(自行确定)。
三实验内容:
程序概况
本程序采用文本菜单界面,程序数据结构采用三个方向的十字链表来处理的。
具有对客房基本信息,客户信息的新建、修改、插入、删除、查找、查看、统计、保存、载入等功能。
程序虽简单,但具有完整的功能。
程序模块示意图
1)主程序流程图
2)主要数据结构图
程序数据结构采用三个方向的十字链表来处理的。
程序详细介绍
主要数据结构:
typedefstructkehuxinxi{
charname[20];/*客户XX*/
charid[20];/*客户ID*/
charsex;/*性别*/
chartelephone[20];/**/
charroom[10];/*房间号*/
chartime[12];/*入住时间*/
floatyingshou;/*应付费用*/
floatshishou;/*实际费用*/
charshouyinyuan[20];/*收银员*/
structkehuxinxi*next;
}kehu,*Pkehu;
客户信息包含客户XX,ID,性别,房间号,入住时间,应付费用,实际费用,收银员的资料。
typedefstructkefangxinxi{
charnum[10];/*房间号*/
charzhonglei;/*类别*/
inttimes;/*入住次数*/
floatjiage;/*价格*/
structkefangxinxi*next;
PkehuRecord;
}fangjian,*Pfangjian;
客房信息里包含房间号,房间类别,入住次数,房间价格资料。
typedefstructkefangzhonglei{
charzhonglei;/*类别*/
intshuliang;/*房间数*/
Pfangjianfirst;
structkefangzhonglei*next;
}fangjianzhonglei,*Pfangjianzhonglei;
房间种类包含房间类别和房间数目资料。
各函数功能介绍(为方便阅读理解程序,函数名用汉语拼音代替)
intxiangdaohejiemian(intfunction,Pfangjianzhonglei*pRST);
绘制功能选择界面
intCollect(int(*p)(void*,void*),intnum);
按照p规则收集前num个信息
intjiyushijian(void*,void*);
按照次数规则
intjiyujiage(void*,void*);
按照价格规则
inthuodecaidan(char**szTitles,intnum);
获取菜单
inthuodekefangzhonglei(FILE*pf,Pfangjianzhongleisub_tree);
获取一整个类型,客房种类
inthuodekefang(FILE*pf,Pfangjianroom);
获取一个房间信息
inthuodekehu(FILE*pf,Pkehucustom);
获取一个客户信息
intxierukefangxinxi(FILE*pf,Pfangjianroom);
写入客房信息
intxierukehuxinxi(FILE*pf,Pkehucustom);
写入客户信息
inthuodenkefang(Pfangjianzhongleisub_tree,intnum_room);
获取num_room个房间
intxiugaikehuxinxi(PkehupCu);
修改客户信息
intxiugaikefangxinxi(PfangjianpRF);
修改房间信息
intCollect(int(*p)(void*,void*),intnum);
按照p规则收集前num个信息
intjiyushijian(void*,void*);
按照次数规则
intjiyujiage(void*,void*);
按照价格规则
intDisplay(void);
intGet_Info(char**szTitles,char**buffer,intnum);
intzhanxiankehu(PkehupCu);
intzhanxiankefang(PfangjianpRF);
显示客房客户信息
inthuodekehuxinxi(PkehupCu);
获取客户信息
intsousuokefangzhonglei(PfangjianzhongleipRST);
搜索一个类型客房种类
intsousuokefangxinxi(PfangjianzhongleipRST);
搜索一个客房
intsousuokehu(PfangjianzhongleipRST);
搜索一个客户
inttianjiazhonglei(PfangjianzhongleipRST);
插入客房种类
inttianjiakefang(PfangjianzhongleipRST);
插入一个客房
inttianjiakehu(PfangjianzhongleipRST);
插入一个客户
intshanchuzhonglei(Pfangjianzhonglei*pRST);
删除客房种类
intshanchukefang(Pfangjianzhonglei*pRST);
删除客房信息
intshanchukehu(Pfangjianzhonglei*pRST);
删除客户信息
intxiugaikefangzhonglei(PfangjianzhongleipRST);/
修改客房种类
intxiugaikehu(PfangjianzhongleipRST);
修改客户信息
inthuodekefangxinxi(PfangjianpRF);
获得客房信息
/*Qsort*/
voidQsort(void**array,intlow,inthigh,int(*p)(void*,void*));
快速排序法排序
四运行结果
1开始功能选择菜单
2新建功能界面
3插入功能界面
4修改功能界面
5删除功能界面
6查找功能界面
7查看功能界面
详细设计:
(源程序清单见附录):
五心得体会
通过这次实训,增加了我学习软件技术的兴趣,虽然在编写修改代码的工程中花费了不少时间甚至有放弃的想法,但最终看到程序运行,那种喜悦兴奋之情无法用文字描述。
1.编写课程设计是理论结合实际的一次很好结合,虽然写得作业仅仅只能当做一项作业没有实际使用的价值,但还是从中学到了不少,真正地体会到完成一项任务的艰辛和付出之后收获的快乐。
2.编写程序时应该使程序易于理解尽量使用通用的变量名和通俗的注释。
3.虽然很多东西刚开始时都不懂,但只要坚持下去学,慢慢地就会熟悉。
4.程序应该分几个文件装,要有条理性。
5.写程序运行时会出现很多bug,要耐心调试,编程需要耐心和细心。
把程序完整地调试好后,对自己性格的培养也是一种提高。
6.当自己解决不了时要向他人请教,虚心学习他人的方法。
这次完成作业向同学们请教了很多问题,得到了同学的帮助,在此真心地表示感谢。
参考文献
《TurboC使用大全》第一册、第二册徐金梧等编译科海培训中心
《C语言课程设计》曹计昌卢萍李开编著
《C程序设计》谭浩强著
附录
源程序清单
#ifndefDEF
#defineDEF
#defineBUFSIZE20
#defineMAX_ROOM100
#defineTEXT_CY20
#include
#include
#include
#include
#include
#include
#include
#defineTRUE1
#defineFALSE0
#defineNAME20
#defineMAX_ID20
#defineNUM10
#defineTELE20
#defineTIME12
typedefstructkehuxinxi{
charname[20];/*客户XX*/
charid[20];/*客户ID*/
charsex;/*性别*/
chartelephone[20];/**/
charroom[10];/*房间号*/
chartime[12];/*入住时间*/
floatyingshou;/*应付费用*/
floatshishou;/*实际费用*/
charshouyinyuan[20];/*收银员*/
structkehuxinxi*next;
}kehu,*Pkehu;
typedefstructkefangxinxi{
charnum[10];/*房间号*/
charzhonglei;/*类别*/
inttimes;/*入住次数*/
floatjiage;/*价格*/
structkefangxinxi*next;
PkehuRecord;
}fangjian,*Pfangjian;
typedefstructkefangzhonglei{
charzhonglei;/*类别*/
intshuliang;/*房间数*/
Pfangjianfirst;
structkefangzhonglei*next;
}fangjianzhonglei,*Pfangjianzhonglei;
typedefstruct{
fangjian**Buffer;
intBufsize;/*缓冲区大小*/
}Buf;
typedefstruct{
intleft;
inttop;
intright;
intbottom;
}Rect;/*矩形区域,一个好东西*/
/*Guide*/
intxiangdaohejiemian(intfunction,Pfangjianzhonglei*pRST);
/*tools*/
intCollect(int(*p)(void*,void*),intnum);/*按照p规则收集前num个信息*/
intjiyushijian(void*,void*);/*按照次数规则*/
intjiyujiage(void*,void*);/*按照价格规则*/
inthuodecaidan(char**szTitles,intnum);
/*fun_fun*/
inthuodekefangzhonglei(FILE*pf,Pfangjianzhongleisub_tree);/*获取一整个类型*/
inthuodekefang(FILE*pf,Pfangjianroom);/*获取一个房间*/
inthuodekehu(FILE*pf,Pkehucustom);/*获取一个客户*/
intxierukefang(FILE*pf,Pfangjianzhongleisub_tree);
intxierukefangxinxi(FILE*pf,Pfangjianroom);
intxierukehuxinxi(FILE*pf,Pkehucustom);
inthuodenkefang(Pfangjianzhongleisub_tree,intnum_room);/*获取num_room个房间*/
intxiugaikehuxinxi(PkehupCu);/*修改客户信息*/
intxiugaikefangxinxi(PfangjianpRF);/*修改房间信息*/
intCollect(int(*p)(void*,void*),intnum);/*按照p规则收集前num个信息*/
intjiyushijian(void*,void*);/*按照次数规则*/
intjiyujiage(void*,void*);/*按照价格规则*/
intDisplay(void);
intGet_Info(char**szTitles,char**buffer,intnum);
intzhanxiankehu(PkehupCu);
intzhanxiankefang(PfangjianpRF);
inthuodekehuxinxi(PkehupCu);
intsousuokefangzhonglei(PfangjianzhongleipRST);/*搜索一个类型*/
intsousuokefangxinxi(PfangjianzhongleipRST);/*搜一个房间*/
intsousuokehu(PfangjianzhongleipRST);/*搜一个客户*/
inttianjiazhonglei(PfangjianzhongleipRST);/*插入*/
inttianjiakefang(PfangjianzhongleipRST);
inttianjiakehu(PfangjianzhongleipRST);
intshanchuzhonglei(Pfangjianzhonglei*pRST);/*删除*/
intshanchukefang(Pfangjianzhonglei*pRST);
intshanchukehu(Pfangjianzhonglei*pRST);
intxiugaikefangzhonglei(PfangjianzhongleipRST);/*修改*/
intxiugaikehu(PfangjianzhongleipRST);
inthuodekefangxinxi(PfangjianpRF);
intBuf_Clear(void);
intBuf_Fill_Tree(PfangjianzhongleipRST_temp);
/*Qsort*/
voidQsort(void**array,intlow,inthigh,int(*p)(void*,void*));
/*快速排序法排序,基于比较*/
BufBuf_Room;
/*调试信息*/
#defineDEBUG
#defineDEBUG2
#defineDEBUG3(x)
DEBUG
#endif
intBuf_Clear(void)
{
Buf_Room.Bufsize=0;
return0;
}
intBuf_Fill_Tree(PfangjianzhongleipHead)
{
PfangjianpRoom;
for(pRoom=pHead->first;pRoom;pRoom=pRoom->next)
Buf_Room.Buffer[Buf_Room.Bufsize++]=pRoom;
return0;
}
inthuodekefangzhonglei(FILE*pf,Pfangjianzhongleisub_tree)
{
if(!
feof(pf))
fread(sub_tree,sizeof(fangjianzhonglei),1,pf);
if(!
feof(pf))
return1;
else
return0;
}
inthuodekefang(FILE*pf,Pfangjianroom)
{
if(!
feof(pf))
fread(room,sizeof(fangjian),1,pf);
if(!
feof(pf))
return1;
else
return0;
}
inthuodekehu(FILE*pf,Pkehucustom)
{
if(!
feof(pf))
fread(custom,sizeof(custom),1,pf);
if(!
feof(pf))
return1;
else
return0;
}
intxierukefang(FILE*pf,Pfangjianzhongleisub_tree)
{
returnfwrite(sub_tree,sizeof(fangjianzhonglei),1,pf);
}
intxierukefangxinxi(FILE*pf,Pfangjianroom)
{
returnfwrite(room,sizeof(fangjian),1,pf);
}
intxierukehuxinxi(FILE*pf,Pkehucustom)
{
returnfwrite(custom,sizeof(kehu),1,pf);
}
inttianjiazhonglei(PfangjianzhongleipRST)
{
char*szTitles="HowmanyRooms?
";
inti,num;
PfangjianzhongleipRST2;
for(i=0;pRST;pRST=pRST->next,i++)
pRST2=pRST;
pRST2->next=(Pfangjianzhonglei)malloc(sizeof(fangjianzhonglei));
pRST=pRST2->next;
printf("%s",szTitles);
scanf("%d",&num);
huodenkefang(pRST,num);
pRST->zhonglei=i+'0';
pRST->next=NULL;
return0;
}
#defineIR_X100
#defineIR_Y100
#defineIR_CX100
#defineIR_C20
inttianjiakefang(PfangjianzhongleipRST)
{
constchar*szRoom="Whatisthetype?
";
charBuf[BUFSIZE];
intnum,i;
PfangjianzhongleipRST2;
PfangjianpRF;
Buf[0]='\0';
printf("%s",szRoom);
scanf("%d",&num);
for(i=1,pRST2=pRST;i
;
if(!
pRST2)
return0;
pRF=pRST2->first;
pRST2->shuliang++;
while(pRF->next)
pRF=pRF->next;
pRF->next=(Pfangjian)malloc(sizeof(fangjian));
pRF=pRF->next;
huodekefangxinxi(pRF);
pRF->next=NULL;
return0;
}
#defineIC_Y160
#defineIC_Y2220
inttianjiakehu(PfangjianzhongleipRST)
{
constchar*szTree="Whatisthetype?
";
constchar*szRoom="Whichroom";
constchar*szName="Thename";
charRoom[BUFSIZE];
inttype,i;
PfangjianzhongleipRST2;
PfangjianpRF;
PkehupCu;
printf("%s",szTree);
scanf("%d",&type);
printf("%s",szRoom);
scanf("%s",Room);
for(i=1,pRST2=pRST;pRST2->zhonglei!
=type+'0';pRST2=pRST2->next,i++)
;
if(!
pRST2)
return0;
pRF=pRST2->first;
while(!
strcmp(pRF->num,Room)&&pRF)
pRF=pRF->next;
if(!
pRF)
return0;
pCu=pRF->Record;
while(pCu->next)
pCu=pCu->next;
pCu->next=(Pkehu)malloc(sizeof(kehu));
pCu=pCu->next;
pCu->next=NULL;
pRF->times++;
huodekehuxinxi(pCu);
return0;
}
intsousuokefangzhonglei(PfangjianzhongleipRST)
{
constchar*szTree="Whichtype?
";
constchar*szError="
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 宾馆 住宿 系统