《C语言课程设计宾馆住宿系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计宾馆住宿系统.docx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、华中科技大学计算机科学与技术学院C语言程序设计课程设计实验报告题目: 宾馆住宿信息管理系统 专业: 班级: 学号: 姓名: 成绩: 指导教师: 完成日期: 20年 10 月 1 日宾馆管理住宿系统一实验目的:1、进一步掌握和利用C语言进行程设计的能力; 2、 进一步理解和运用结构化程设计的思想和方法; 3、 初步掌握开发一个小型实用系统的基本方法; 4、 学会调试一个较长程序的基本方法; 5、 学会利用流程图或N-S图表示算法; 6、 掌握书写程设计开发文档的能力(书写课程设计报告);二实验要求:1、只能使用C语言,源程序要有适当的注释,使程序容易阅读。2、要有用户界面。要求至少采用简易菜单;
2、鼓励采用文本菜单界面甚至采用图形菜单界面。3、必须使用结构和十字交叉链表等数据结构。4、使用文件保存数据。5、至少输出一份报表(屏幕输出即可),鼓励自行增加新功能。功能要求(宾馆住宿信息管理系统): 对宾馆所有客房的住宿信息进行管理,主要包括客房基本信息、客户住宿信息。包含功能:客房基本信息录入。允许对已经录入的数据重新进行编辑、修改,各种基本数据的插入、删除,基于各种数据的查询、统计计算。宾馆住宿信息其它方面的统计(自行确定)。三实验内容:程序概况本程序采用文本菜单界面,程序数据结构采用三个方向的十字链表来处理的。具有对客房基本信息,客户信息的新建、修改、插入、删除、查找、查看、统计、保存、
3、载入等功能。程序虽简单,但具有完整的功能。程序模块示意图1) 主程序流程图开始功能选择菜单判断选择保存数据结束新建插入 修改删除保存统计查找浏览载入获取按键2)主要数据结构图程序数据结构采用三个方向的十字链表来处理的。程序详细介绍主要数据结构:typedef struct kehuxinxi char name20;/*客户姓名*/ char id20;/*客户ID*/ char sex;/*性别*/ char telephone20;/*电话*/char room10;/*房间号*/char time12;/*入住时间*/float yingshou;/*应付费用*/float shisho
4、u;/*实际费用*/char shouyinyuan20;/*收银员*/struct kehuxinxi * next; kehu,* Pkehu;客户信息包含客户姓名,ID,性别,房间号,入住时间,应付费用,实际费用,收银员的资料。typedef struct kefangxinxi char num10;/*房间号*/ char zhonglei;/*类别*/ int times;/*入住次数*/ float jiage;/*价格*/ struct kefangxinxi * next; Pkehu Record; fangjian,* Pfangjian; 客房信息里包含房间号,房间类别
5、,入住次数,房间价格资料。 typedef struct kefangzhonglei char zhonglei;/*类别*/ int shuliang;/*房间数*/ Pfangjian first; struct kefangzhonglei * next; fangjianzhonglei ,* Pfangjianzhonglei;房间种类包含房间类别和房间数目资料。各函数功能介绍(为方便阅读理解程序,函数名用汉语拼音代替)int xiangdaohejiemian(int function,Pfangjianzhonglei * pRST);绘制功能选择界面int Collect(i
6、nt (* Comp)(void *,void *),int num);按照Comp规则收集前num个信息int jiyushijian(void *,void *);按照次数规则int jiyujiage(void *,void *);按照价格规则int huodecaidan(char * * szTitles,int num);获取菜单int huodekefangzhonglei(FILE * pf,Pfangjianzhonglei sub_tree);获取一整个类型,客房种类int huodekefang(FILE * pf,Pfangjian room);获取一个房间信息int
7、huodekehu(FILE * pf,Pkehu custom);获取一个客户信息int xierukefangxinxi(FILE * pf,Pfangjian room);写入客房信息int xierukehuxinxi(FILE * pf,Pkehu custom);写入客户信息int huodenkefang(Pfangjianzhonglei sub_tree,int num_room);获取num_room个房间intxiugaikehuxinxi(Pkehu pCu);修改客户信息int xiugaikefangxinxi(Pfangjian pRF);修改房间信息int Co
8、llect(int (* Comp)(void *,void *),int num);按照Comp规则收集前num个信息int jiyushijian(void *,void *);按照次数规则int jiyujiage(void *,void *);按照价格规则int Display(void);int Get_Info(char * * szTitles,char * * buffer,int num);int zhanxiankehu(Pkehu pCu);int zhanxiankefang(Pfangjian pRF);显示客房客户信息int huodekehuxinxi(Pkehu
9、 pCu);获取客户信息int sousuokefangzhonglei(Pfangjianzhonglei pRST);搜索一个类型客房种类int sousuokefangxinxi(Pfangjianzhonglei pRST);搜索一个客房int sousuokehu(Pfangjianzhonglei pRST);搜索一个客户int tianjiazhonglei(Pfangjianzhonglei pRST);插入客房种类int tianjiakefang(Pfangjianzhonglei pRST);插入一个客房int tianjiakehu(Pfangjianzhonglei
10、pRST);插入一个客户int shanchuzhonglei(Pfangjianzhonglei * pRST);删除客房种类int shanchukefang(Pfangjianzhonglei * pRST);删除客房信息int shanchukehu(Pfangjianzhonglei * pRST);删除客户信息int xiugaikefangzhonglei(Pfangjianzhonglei pRST);/修改客房种类int xiugaikehu(Pfangjianzhonglei pRST);修改客户信息int huodekefangxinxi(Pfangjian pRF);获
11、得客房信息/*Qsort*/void Qsort(void * * array,int low,int high,int (*Comp)(void * ,void * );快速排序法排序四运行结果1开始功能选择菜单2新建功能界面3插入功能界面4修改功能界面5删除功能界面6查找功能界面7查看功能界面详细设计:(源程序清单见附录):五心得体会 通过这次实训,增加了我学习软件技术的兴趣,虽然在编写修改代码的工程中花费了不少时间甚至有放弃的想法,但最终看到程序运行,那种喜悦兴奋之情无法用文字描述。1. 编写课程设计是理论结合实际的一次很好结合,虽然写得作业仅仅只能当做一项作业没有实际使用的价值,但还是
12、从中学到了不少,真正地体会到完成一项任务的艰辛和付出之后收获的快乐。2. 编写程序时应该使程序易于理解尽量使用通用的变量名和通俗的注释。3. 虽然很多东西刚开始时都不懂,但只要坚持下去学,慢慢地就会熟悉。4. 程序应该分几个文件装,要有条理性。5. 写程序运行时会出现很多bug,要耐心调试,编程需要耐心和细心。把程序完整地调试好后,对自己性格的培养也是一种提高。6. 当自己解决不了时要向他人请教,虚心学习他人的方法。这次完成作业向同学们请教了很多问题,得到了同学的帮助,在此真心地表示感谢。参考文献Turbo C 使用大全第一册、第二册 徐金梧等编译 北京科海培训中心C语言课程设计 曹计昌 卢萍
13、 李开 编著C程序设计谭浩强 著附录源程序清单#ifndef DEF#define DEF#define BUFSIZE 20#define MAX_ROOM 100#define TEXT_CY 20#include#include#include#include#include#include#include#define TRUE 1#define FALSE 0#define NAME 20#define MAX_ID 20#define NUM 10#define TELE 20#define TIME 12typedef struct kehuxinxi char name20;/
14、*客户姓名*/ char id20;/*客户ID*/ char sex;/*性别*/ char telephone20;/*电话*/char room10;/*房间号*/char time12;/*入住时间*/float yingshou;/*应付费用*/float shishou;/*实际费用*/char shouyinyuan20;/*收银员*/struct kehuxinxi * next; kehu,* Pkehu;typedef struct kefangxinxi char num10;/*房间号*/ char zhonglei;/*类别*/ int times;/*入住次数*/
15、float jiage;/*价格*/ struct kefangxinxi * next; Pkehu Record; fangjian,* Pfangjian; typedef struct kefangzhonglei char zhonglei;/*类别*/ int shuliang;/*房间数*/ Pfangjian first; struct kefangzhonglei * next; fangjianzhonglei ,* Pfangjianzhonglei;typedef structfangjian * Buffer;int Bufsize;/*缓冲区大小*/Buf;type
16、def structint left;int top;int right;int bottom;Rect;/*矩形区域,一个好东西*/*Guide*/int xiangdaohejiemian(int function,Pfangjianzhonglei * pRST);/*tools*/int Collect(int (* Comp)(void *,void *),int num);/*按照Comp规则收集前num个信息*/int jiyushijian(void *,void *);/*按照次数规则*/int jiyujiage(void *,void *);/*按照价格规则*/int h
17、uodecaidan(char * * szTitles,int num);/*fun_fun*/int huodekefangzhonglei(FILE * pf,Pfangjianzhonglei sub_tree);/*获取一整个类型*/int huodekefang(FILE * pf,Pfangjian room);/*获取一个房间*/int huodekehu(FILE * pf,Pkehu custom);/*获取一个客户*/int xierukefang(FILE * pf,Pfangjianzhonglei sub_tree);int xierukefangxinxi(FIL
18、E * pf,Pfangjian room);int xierukehuxinxi(FILE * pf,Pkehu custom);int huodenkefang(Pfangjianzhonglei sub_tree,int num_room);/*获取num_room个房间*/intxiugaikehuxinxi(Pkehu pCu);/*修改客户信息*/int xiugaikefangxinxi(Pfangjian pRF);/*修改房间信息*/int Collect(int (* Comp)(void *,void *),int num);/*按照Comp规则收集前num个信息*/in
19、t jiyushijian(void *,void *);/*按照次数规则*/int jiyujiage(void *,void *);/*按照价格规则*/int Display(void);int Get_Info(char * * szTitles,char * * buffer,int num);int zhanxiankehu(Pkehu pCu);int zhanxiankefang(Pfangjian pRF);int huodekehuxinxi(Pkehu pCu);int sousuokefangzhonglei(Pfangjianzhonglei pRST);/*搜索一个类
20、型*/int sousuokefangxinxi(Pfangjianzhonglei pRST);/*搜一个房间*/int sousuokehu(Pfangjianzhonglei pRST);/*搜一个客户*/int tianjiazhonglei(Pfangjianzhonglei pRST);/*插入*/int tianjiakefang(Pfangjianzhonglei pRST);int tianjiakehu(Pfangjianzhonglei pRST);int shanchuzhonglei(Pfangjianzhonglei * pRST);/*删除*/int shanch
21、ukefang(Pfangjianzhonglei * pRST);int shanchukehu(Pfangjianzhonglei * pRST);int xiugaikefangzhonglei(Pfangjianzhonglei pRST);/*修改*/int xiugaikehu(Pfangjianzhonglei pRST);int huodekefangxinxi(Pfangjian pRF);intBuf_Clear(void);intBuf_Fill_Tree(Pfangjianzhonglei pRST_temp);/*Qsort*/void Qsort(void * *
22、array,int low,int high,int (*Comp)(void * ,void * );/*快速排序法排序,基于比较*/Buf Buf_Room;/*调试信息*/#define DEBUG #define DEBUG2 #define DEBUG3(x) DEBUG#endifint Buf_Clear(void)Buf_Room.Bufsize=0;return 0;int Buf_Fill_Tree(Pfangjianzhonglei pHead)Pfangjian pRoom;for(pRoom=pHead-first;pRoom;pRoom=pRoom-next)Buf
23、_Room.BufferBuf_Room.Bufsize+=pRoom;return 0;int huodekefangzhonglei(FILE * pf,Pfangjianzhonglei sub_tree)if(!feof(pf)fread(sub_tree,sizeof(fangjianzhonglei),1,pf);if(!feof(pf)return 1;elsereturn 0;int huodekefang(FILE * pf,Pfangjian room)if(!feof(pf)fread(room,sizeof(fangjian),1,pf);if(!feof(pf)ret
24、urn 1;elsereturn 0;int huodekehu(FILE * pf,Pkehu custom)if(!feof(pf)fread(custom,sizeof(custom),1,pf);if(!feof(pf)return 1;elsereturn 0;int xierukefang(FILE * pf,Pfangjianzhonglei sub_tree)return fwrite(sub_tree,sizeof(fangjianzhonglei),1,pf);int xierukefangxinxi(FILE * pf,Pfangjian room)return fwri
25、te(room,sizeof(fangjian),1,pf);int xierukehuxinxi(FILE * pf,Pkehu custom)return fwrite(custom,sizeof(kehu),1,pf);int tianjiazhonglei(Pfangjianzhonglei pRST)char * szTitles=How many Rooms?;int i,num;Pfangjianzhonglei pRST2;for(i=0;pRST;pRST=pRST-next,i+)pRST2=pRST;pRST2-next=(Pfangjianzhonglei)malloc
26、(sizeof(fangjianzhonglei);pRST=pRST2-next;printf(%s,szTitles);scanf(%d,&num);huodenkefang(pRST,num);pRST-zhonglei=i+0;pRST-next=NULL;return 0;#define IR_X 100#define IR_Y 100#define IR_CX 100#define IR_C 20int tianjiakefang(Pfangjianzhonglei pRST)const char * szRoom=What is the type?;char BufBUFSIZE
27、;int num,i;Pfangjianzhonglei pRST2;PfangjianpRF;Buf0=0;printf(%s,szRoom);scanf(%d,&num);for(i=1,pRST2=pRST;inext,i+);if(!pRST2)return 0;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;return 0;#d
28、efine IC_Y 160#define IC_Y2 220int tianjiakehu(Pfangjianzhonglei pRST)const char * szTree=What is the type?;const char * szRoom=Which room;const char * szName=The name;char RoomBUFSIZE;int type,i;Pfangjianzhonglei pRST2;PfangjianpRF;Pkehu pCu;printf(%s,szTree);scanf(%d,&type);printf(%s,szRoom);scanf
29、(%s,Room);for(i=1,pRST2=pRST;pRST2-zhonglei!=type+0;pRST2=pRST2-next,i+);if(!pRST2)return 0;pRF=pRST2-first;while(!strcmp(pRF-num,Room)&pRF)pRF=pRF-next;if(!pRF)return 0;pCu=pRF-Record;while(pCu-next)pCu=pCu-next;pCu-next=(Pkehu)malloc(sizeof(kehu);pCu=pCu-next;pCu-next=NULL;pRF-times+;huodekehuxinx
30、i(pCu);return 0;int sousuokefangzhonglei(Pfangjianzhonglei pRST)const char * szTree=Which type?;const char * szError=Cant find the Type;char BufBUFSIZE;int type;Buf0=0;printf(%s,szTree);scanf(%d,&type);while(pRST)if(pRST-zhonglei=type+0)Buf_Clear();Buf_Fill_Tree(pRST);Display();return 1;pRST=pRST-ne
31、xt;getch();return 0;int sousuokefangxinxi(Pfangjianzhonglei pRST)const char * szTree=Which type?;const char * szRoom=Please input the doorplate;const char * szError=Cant find the Type,Cant find the Room;char Buf2BUFSIZE;int type,room;Pfangjian pRF;printf(%s,szTree);scanf(%d,&type);printf(%s,szRoom);
32、scanf(%d,&room);while(pRST)if(pRST-zhonglei=type+0)pRF=pRST-first;while(pRF)if(!strcmp(pRF-num,Buf2)zhanxiankefang(pRF);return 1;/*if*/pRF=pRF-next;/*while*/printf(%sn,szError1);return 0;/*if*/pRST=pRST-next;/*while*/printf(%sn,szError0);getch();return 0;int sousuokehu(Pfangjianzhonglei pRST)const c
33、har * szName=The name?;const char * szError=Cant find the one;char BufBUFSIZE;Pfangjian pRF;Pkehu pCu;Buf0=0;printf(%s,szName);scanf(%s,Buf);while(pRST)pRF=pRST-first;while(pRF)pCu=pRF-Record;while(pCu)if(!strcmp(pCu-name,Buf)zhanxiankehu(pCu);return 0;else pCu=pCu-next;pRF=pRF-next;/*while*/pRST=pR
34、ST-next;/*while*/printf(%s,szName);getch();return 0;int shanchuzhonglei(Pfangjianzhonglei * pRST)const char * szTree=Which type?;const char * szError=Cant find the Type;char BufBUFSIZE;Pfangjianzhonglei pRST2,pRST3;int type;Buf0=0;printf(%s,szTree);scanf(%d,&type);pRST2=(*pRST);if(pRST2-zhonglei=typ
35、e+0)(*pRST)=pRST2-next;free(pRST2);return 0;/*改变头指针*/pRST3=pRST2-next;while(pRST3)if(pRST3-zhonglei=type+0)pRST2-next=pRST3-next;free(pRST3);/*删去pRST3*/return 1;printf(%s,szError);getch();return 0;int shanchukefang(Pfangjianzhonglei * pRST_head)const char * szTree=Which type?;const char * szRoom=Ple
36、ase input the doorplate;const char * szError=Cant find the Type,Cant find the Room;char BufBUFSIZE;Pfangjian pRF,pRF2;Pfangjianzhonglei pRST;int type;pRST=(*pRST_head);Buf0=0;printf(%s,szTree);scanf(%d,&type);printf(%s,szRoom);scanf(%s,Buf);while(pRST)if(pRST-zhonglei=type+0)pRF=pRST-first;if(!strcm
37、p(pRF-num,Buf)pRST-first=pRF-next;pRST-shuliang-;free(pRF);return 0;pRF2=pRF;pRF=pRF-next;while(pRF)if(!strcmp(pRF-num,Buf)pRF2-next=pRF-next;free(pRF);pRST-shuliang-;return 1;/*if*/pRF2=pRF;pRF=pRF-next;/*while*/printf(%s,szError1);return 0;/*if*/pRST=pRST-next;/*while*/printf(%s,szError0);getch();
38、return 0;int shanchukehu(Pfangjianzhonglei * pRST_head)const char * szName=The name?;const char * szError=Cant find the one;char BufBUFSIZE;Pfangjian pRF;Pkehu pCu,pCu2;Pfangjianzhonglei pRST;pRST=(*pRST_head);Buf0=0;printf(%s,szName);scanf(%s,Buf);while(pRST)pRF=pRST-first;while(pRF)pCu=pRF-Record;
39、if(!strcmp(pCu-name,Buf)pRF-Record=pCu-next;free(pCu);return 0;pCu2=pCu;pCu=pCu-next;while(pCu)if(!strcmp(pCu-name,Buf)pCu2-next=pCu-next;free(pCu);return 0;/*if*/pCu2=pCu;pCu=pCu-next;pRF=pRF-next;/*while*/pRST=pRST-next;/*while*/getch();return 0;int xiugaikefangzhonglei(Pfangjianzhonglei pRST)const char * szTree=Which type?;const char * szRoom=Please input the doorplate;const char * szError=Cant find the Type,Cant find the Room;char BufBUFSIZE;Pfangjian pRF;int type;Buf0=0;pri