宾馆客房管理软件(共11页).doc
精选优质文档-倾情为你奉上目 录1. 问题描述32. 基本要求33系统分析和设计34. 流程图55. 程序清单66. 测试数据107. 小结及收获和体会118. 参考资料12一、问题描述当今社会旅游成为一种时尚,住宿便成为了旅游中的问题。越来越多的旅客加重了旅馆登记,运作负担。如果有一款软件可以代替人工操作,将会极大的提高工作效率。二、基本要求1) 某宾馆有301、302、303、304、305五个标准间,每个标准间可住2人;2) 链表存储结构:姓名、性别、房号、后续指针,按房间号有序;3) 能实现入住(注意性别)和退房,能按给定姓名、房号查询;4) 建议采用链表结构,但用其它方法实现也可。三、系统分析和设计(1)市场分析随着我国市场经济的迅速发展和人们生活水平的不断提高, 宾馆酒店业的竞争越来越激烈。要想在竞争中取得优势, 必须在经营管理、产品服务等方面提高服务管理意识。而对宾馆的经营起决定作用的是客房管理。越来越多的宾馆管理人员已经意识到使用计算机网络和管理系统的重要性。(2)系统主要功能包括:(1)住房管理:住宿登记、客户退房(2)客房管理:客房查询(3)详细设计说明 结构体:struct customer int num; char name20;char sex;struct customer *next; cus; 相关函数:struct customer *creat(void) /*定义函数,此函数带回一个指向链表头的指针*/struct customer *insert(struct customer *head,struct customer *consumer) /*插入登记客户信息函数*/struct customer *del(struct customer *head,int num) /*删除节点(客户退房的程序*/struct customer *search(struct customer *head,char c_name) /*寻找客户信息的程序*/void print(struct customer *head) /*在登记和退房时输出登记入住宾馆人员信息*/(4)设计中的问题:由于链表的创建和文件操作上的课较少,加之程序设计时间较紧,上述源程序还有很多不完善之处。上述原代码中struct customer *insert(struct customer *head,struct customer *consumer)和struct customer *search(struct customer *head,char c_name)两个函数没有调试通过;寻找信息函数没有调试成功,在查找时得到的信息不对;insert函数运行还不是很完善。总之,在编写程序时遇到了很多问题。也有一些问题得到了解决,如在编写insert函数时开始输入不了数据,后来查找资料,用malloc函数开辟了一个空间,可以完成数据的输入。在编写程序时我还是学到了很多。四、流程图开始(欢迎界面)选择所需操作2.登记信息1创建新系统3.退房信息4.查询信息选择所需操作按符合规定查找结束按房间查询是否输出退房人员信息输出开房人员信息五、程序清单#define NULL 0 #define LEN sizeof(struct customer) #include "string.h"struct customer int num; char name20;char sex;struct customer *next; cus; struct customer *creat(void) /*定义函数,此函数带回一个指向链表头的指针*/ struct customer *head,*p1,*p2; int n=0; p1=(struct customer *)malloc(LEN); p2=(struct customer *)malloc(LEN); printf("qing shu ru ke hu de xin xi:n"); printf("nfang jian:"); scanf("%d",&p1->num); printf("n"); printf("xing ming:"); scanf("%s",p1->name); printf("n"); printf("xing bie:"); scanf("%s",&p1->sex); printf("n"); head=NULL; while(p1->num!= 0) /*创建链表,当输入值不为0时创建节点并添加值,继续重复;若输入值为0,结束循环并返回头节点指针。*/ n+; if(n=1) head=p1; else p2->next=p1; p2=p1; p1=(struct customer *)malloc(LEN); printf("qing shu ru ke hu de xin xi:n"); printf("nfang jian:"); scanf("%d",&p1->num); printf("n"); printf("xing ming:"); scanf("%s",p1->name); printf("n"); printf("xing bie:"); scanf("%s",&p1->sex); printf("n"); p2->next=NULL; return(head); struct customer *insert(struct customer *head,struct customer *consumer) struct customer *p1,*p2; p1=head; p2=consumer; while(p1->next!=NULL) p1=p1->next; if(p1->next=NULL) p1->next=p2; p2->next=NULL; return(head); struct customer *del(struct customer *head,int num) /*删除节点的程序*/ struct customer *p1,*p2; if(head=NULL) /*是空表*/ printf("mei you ke hu xin xin"); return(head); p1=head; /*P1指向第一个节点*/while(num!=p1->num&&p1->next!=NULL)/*P1不是所要指向的节点,且后面还有节点*/ p2=p1;p1=p1->next;/*P1后移一个节点*/ if(num=p1->num) /*找到了*/ if(p1=head) head=p1->next; /*若P1是首节点,把第二个节点地址赋予head*/else p2->next=p1->next; /*否则将下一个节点地址赋给head*/printf("tui fang xin xi:n"); printf("ke fang:%dn",&p1->num); printf("xing ming:%sn",p1->name); printf("xing bie:%sn",&p1->sex); else printf("mei you gai ke hu de xin xin"); return(head); struct customer *search(struct customer *head,char c_name) struct customer *p; p=head; while(strcmp(p->name,c_name)&&p->next!=NULL) /*输入的字符和结构体中的name不相等*/p=p->next; if(p->name=c_name) printf("gai ke hu de xin xi wei:n"); printf("fang jian:%dnxing ming:%sn xing bie:%c",p->num,p->name,p->sex); if(p->name!=c_name&&p->next=NULL) printf("mei you gai ke hu xin xi!n"); void print(struct customer *head) /*输出宾馆人员信息*/ struct customer *p; printf("nxian you ke hu xin xi wei:n"); p=head; if(head!=NULL) do printf("ke fang:%dn",p->num); printf("xing ming:%sn",p->name); printf("xing bie:%cn",p->sex); p=p->next; while(p!=NULL); main() struct customer *head,*p; int m,number; char c_name20; printf("n"); printf(" *n"); printf(" huan ying jin ru bin guan ke fang guan li xi tongn"); printf(" *n"); printf(" *nn"); printf(" 1:jian kun"); /*creat*/printf(" 2:deng jin"); /*insert*/printf(" 3:tui fangn"); /*del*/printf(" 4:cha xunn"); /*search*/printf(" *nn"); printf("zhi xing chao zuo:n");scanf("%d",&m); if(m=1) /*建库*/head=creat(); else if(m=2) /*登记*/ printf("qing shu ru yao deng ji de ke hu xin xi:"); p=(struct customer *)malloc(LEN); printf("fang jian;xing ming;xing bie:");scanf("%d %s %c",&p->num,p->name,&p->sex); head=insert(head,p); print(head); /*输出登记人员的信息*/ else if(m=3) /*退房*/ printf("qing shu ru yao tui fang ke hu de fang jian hao:"); scanf("%d",&number); head=del(head,number); print(head);/*输出登记人员的信息*/ else if(m=4) /*查询*/ printf("qing shu ru yao cha xun ke hu de xing ming:"); scanf("%s",c_name); search(head,c_name); else printf("zhi xing chao zuo cuo wu!"); 六、测试数据七、小结及收获和体会这次课题设计对自己来说是一次新的尝试,我选的课题是宾馆客房管理软件,这个课题必须要协助课外的知识才能完成。记得当时开始做的时候真的是一头雾水,都开始后悔自己选了这个课题,还没和同学组队,当时想就从网上下程序或者从其他人那拷来程序交了吧,可是当看到大二学长们的课题报告时,我犹豫了,他们也都是自己编的,为什么他们能做到我不可以呢!趁着一股劲儿,我从图书馆借来了程序设计方面的书,花了几天的时间把和这个课题有关的知识看了一遍,当时看过之后还是挺迷糊的,然后开始尝试着编,发现真正编起来也不是很难,终于花了一上午的时间把程序编好了。随后找时间去了机房调试,开始时出现的问题还挺多的。在编辑编译时出现了定义方面的错误,不过根据错误提示经过稍加修改后终于看到了期待的“success”!在运行时, 终于看到了自己想看到的结果。但是离预期目标还有一定差距,还不能实现入住区分性别的双人间,这也是一个很大的遗憾。此次课程设计我主要负责编写、输入代码的任务,面对密密麻麻的字符,我发现程序员是一个比较辛苦的职业。首先面对难题时要镇静,想好解决方法,然后要坚持去做好;要广泛利用课外书籍资料,通过自学获得知识完成自己的探索,这次实验过程极大地锻炼了自己面对难题,独立思考,自己探索,发现问题,解决问题的能力。但是,最终我还是证明了自己的实力,面对了这种种的挑战,相信我未来一定会在这条路上走更远。八、参考资料1 谭浩强,C程序设计教程,清华大学出版社,2007年2 谭浩强编著,C程序设计,清华大学出版社,1991年3 Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, China Machine Press, 2006.4 宾馆管理系统的设计 马秀莲 ,高志安 边疆经济与文化(THE BORDER ECONOMY AND CUCTURE)2005 年第2 期(总第14 期)5 宾馆客房信息管理系统的设计与实现 赵建功,秦晓明 襄樊职业技术学院学报(Journal of Xiangfan Vocational and Technical College)第4 卷第4 期2005 年8 月专心-专注-专业