1、C 语言课程设计 - 宾馆客房管理系统报告语言课程设计报告 C 语 言 课程设计报告标题:宾馆客房管理系统学号:姓名:同组人员:年级专业: 09 电子信息工程指导老师:完成日期: 2010/6/21安徽师范大学物理与电子信息学院 College of Physics and Electronic2Information, Anhui Normal University语言课程设计报告目录一、程序的具体分工二、课题要求三、课题分析与设计四、选题背景五、程序介绍六、源程序代码与调试七、流程图八、结语九、参考书目安徽师范大学物理与电子信息学院 College of Physics and Elect
2、ronic3Information, Anhui Normal University语言课程设计报告一、程序的具体分工第一部分包括主函数和 menu菜单函数是由叶伟完成,第二部分包括客人的入住 (checkin )函数和退房( checkout )函数由我完成,第三部分为查询( lookfor )函数由王业生负责。二、课题要求1) 某宾馆有 301、302、303、304、305 五个标准间,每个标准间可住 2 人;2) 链表存储结构:姓名、性别、房号、后续指针,按房间号有序;3) 能实现入住(注意性别)和退房,能按给定姓名、房号查询;4) 建议采用链表结构,但用其它方法实现也可。三、课题分析
3、与设计安徽师范大学物理与电子信息学院 College of Physics and Electronic4Information, Anhui Normal University语言课程设计报告本程序是非数值计算型算法设计, 我们设计出了宾馆客房管理系统的基本功能, 并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是结构体和链表的相关操作,包括结构体数组的输入、输出、查找、删除等。我们设计的这个宾馆客房系统也初步实现了人员信息的显示、删除、查找、添加等必要的功能。四、选题背景C语言是目前世界上流行、使用最广泛的高级程序设计语言。 1972 年,C 语言在美国贝尔实验室
4、里问世, 后来又被多次改进, 并出现了多种版本。80 年代初,美国国家标准化协会 (ANSI),根据 C语言问世以来各种版本对 C语言的发展和扩充,制定了 ANSIC标准。目前,在微机上广泛使用的 C语言编译系统有 MicrosoftC 、Turbo C 、Visual C+ 等。这安徽师范大学物理与电子信息学院 College of Physics and Electronic5Information, Anhui Normal University语言课程设计报告C语言版本不仅实现了 ANSIC标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。C 语言是一种结构化语言。它层次清晰,
5、便于按模块化方式组织程序,易于调试和维护。 C语言的表现能力和处理能力极强。 它不仅具有丰富的运算符和数据类型, 便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址, 进行位 (bit) 一级的操作。由于 C 语言实现了对硬件的编程操作,因此语言集高级语言和低级语言的功能于一体。 既可用于系统软件的开发, 也适合于应用软件的开发。此外, C 语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的 C语言。为了将本学期所学 C语言知识应用于实际,加深对 C 语言的理解与掌握, 我院开设了 C语言课程设计这门课程。 而我们小组选取了宾馆客房管理系统这个
6、课题, 以此来锻炼我们编写程序的能力。安徽师范大学物理与电子信息学院 College of Physics and Electronic6Information, Anhui Normal University语言课程设计报告五、程序介绍宾馆客房管理系统由8 个函数组成,包括main 函数、menu函数、checkin 函数、checkout函数、 lookfor 函数,其中 checkin 函数又包括一个 add 子函数,lookfor函数包括search1和search2 main两个子函数。函数主要是对menu函数、checkin函数、checkout 函数、lookfor 函数进行声明
7、,建立静态链表并且对结构体中 num、sex 进行赋值。 menu 函数是界面函数,有两个功能。一是输出一个界面, 二是作为进入其它函数的入口。 输入 1 则执行 checkin 函数;输入 2 则执行 checkout 函数 ,输入 3 则执行 lookfor 函数。checkin 函数的功能是对入住房客的信息进行统计。首先、函数先对五个房间的入住情况进行检查,并输出相应的信息。例如、若房间 301 是空的,则显示可住两人信息;若已住一人,则显示可住一人信息, 并且同时显示可住房客的性别;若已有两人入住,则不显示任何信息。如果房客已决定入住,则输入 1,进入 add 函数,按7安徽师范大学物
8、理与电子信息学院College of Physics and ElectronicInformation, Anhui Normal University语言课程设计报告提示输入房客信息即可。若要返回 menu函数,则输入 1。checkout 函数的功能是退房。按提示信息输入房间号和姓名即可实现退房。若要返回 menu 函数,输入 1。lookfor函数的功能是查询房客的信息,有按姓名查找和按房间号查找两种查询方式。输入 1 则执行 search1 子函数,即按姓名查找; 输入 2 则执行 search2 子函数,即按房号查找; 输入 3,执行 manu函数。若按姓名查找,则输入姓名即可;若
9、按房间号查找,则输入房间号即可;若要退回 lookfor 函数,则输入 1。六、源程序代码与调试代码:#include#include#include#define NULL 0struct restaurant int num;安徽师范大学物理与电子信息学院 College of Physics and Electronic8Information, Anhui Normal University语言课程设计报告char name220;char sex2;struct restaurant *next;void main()void menu(struct restaurant *pt0)
10、; void checkin(struct restaurant *pt1); void checkout(struct restaurant *pt2); void lookfor(struct restaurant *pt3); struct restaurant a,b,c,d,e,*head,*p; a.num=301,b.num=302,c.num=303,d.num=304,e.num=305;a.sex0=a.sex1=b.sex0=b.sex1=c.sex0=c.sex1=d.sex0=d.sex 1=e.sex0=e.sex1= ;head=&a;a.next=&b; b.n
11、ext=&c;c.next=&d; d.next=&e; e.next=NULL; p=head;menu(p);void menu(struct restaurant *pt0)int i;clrscr();textcolor(5);gotoxy(10,5);cprintf(The Hotel Management Systemn);gotoxy(10,7);cprintf(Welcomen);gotoxy(10,8);cprintf(*Menu*n);gotoxy(10,9);cprintf(*1.checkin*n);gotoxy(10,10);cprintf(*2.checkout*n
12、);gotoxy(10,11);cprintf(*3.lookfor*n);gotoxy(10,12);cprintf(*n);gotoxy(10,13);安徽师范大学物理与电子信息学院 College of Physics and Electronic9Information, Anhui Normal University语言课程设计报告cprintf(Please Enter Your Choice:);scanf(%d,&i);switch(i)case 1:checkin(pt0);break;case 2:checkout(pt0);break;case 3:lookfor(pt0
13、);break;void checkin(struct restaurant *pt1) void add(struct restaurant *pt1); int i,k;struct restaurant *p;p=pt1;clrscr();for(i=0;isex0= &pt1-sex1= ) printf(room:%dntwo person can live heren,pt1-num); else if(pt1-sex0= &pt1-sex1!= )printf(rome:%dn,pt1-num);printf(one person can live here,sex:%cn,pt
14、1-sex1);else if(pt1-sex0!= &pt1-sex1= )printf(rome:%dn,pt1-num);printf(one person can live here,sex:%cn,pt1-sex0); pt1=pt1-next;printf(1:continuen2:returnnInput your chioce:);scanf(%d,&k);switch(k) case 1:add(p);break;case 2:menu(p);break;void add(struct restaurant *pt1)struct restaurant *p;int i,j,
15、k;char ch1,ch2,str20;p=pt1;安徽师范大学物理与电子信息学院 College of Physics and Electronic10Information, Anhui Normal University语言课程设计报告printf(Input room number and sex and name:n);scanf(%d%c%c%s,&i,&ch1,&ch2,&str);for(j=0;jnum) for(k=0;ksexk= )pt1-num=i;pt1-sexk=ch2;strcpy(pt1-namek,str);break; j=5;pt1=pt1-next;
16、checkin(p);void checkout(struct restaurant *pt2) struct restaurant *p; int i,j,k;char str20;p=pt2;clrscr();dopt2=p;printf(Input rome number and name:n);scanf(%d,&k);if(k=1)menu(p);break;else scanf(%s,str);for(i=0;inum)for(j=0;jnamej)=0) memset(pt2-namej, ,20); pt2-sexj= ;break; break;pt2=pt2-next;wh
17、ile(1);void lookfor(struct restaurant *pt3)void search1(struct restaurant *pt4);void search2(struct restaurant *pt4);int i;char str20;clrscr();安徽师范大学物理与电子信息学院 College of Physics and Electronic11Information, Anhui Normal University语言课程设计报告printf(1:search by inputing namen2:search by inputing room num
18、bern3:returnn);printf(please input your choice:);scanf(%d,&i);switch(i) case 1:search1(pt3);break;case 2:search2(pt3);break;case 3:menu(pt3);break;void search1(struct restaurant *pt4) struct restaurant *p; int n,i,j;char str120=1,str220; p=pt4;clrscr();dopt4=p;printf(Input name:n);scanf(%s,&str2);if
19、(strcmp(str1,str2)=0)lookfor(p);else for(i=0;i5;i+)for(j=0;jnamej)=0)printf(rome:%dtsex:%ctname:%sn,pt4-num,pt4-sexj,pt4-nam ej);pt4=pt4-next;while(1);void search2(struct restaurant *pt4)struct restaurant *p;int i,j,k;char str20;p=pt4;clrscr();dopt4=p;printf(Input room number:n);scanf(%d,&j);if(j=1)
20、lookfor(p);break;else for(i=0;inum)for(k=0;ksexk!= )printf(room:%dtsex:%ctname:%sn,pt4-num,pt4-sexk,pt4-namek);break;pt4=pt4-next;while(1);调试:1、菜单函数执行结果:进入程序后进入程序主菜单结果如下:输入 1 进入 checkin 函数,输入 2 进入 checkout安徽师范大学物理与电子信息学院 College of Physics and Electronic13Information, Anhui Normal University语言课程设计报告
21、函数,输入 3 进入 lookfor函数 .2、checkin 入住函数结果:进入入住函数界面运行结果如下输入 1 继续运行结果如下:安徽师范大学物理与电子信息学院 College of Physics and Electronic14Information, Anhui Normal University语言课程设计报告输入房间号性别和姓名例如:输入 301 m yewei运行结果如下:输入 1 返回到 menu函数3、lookfor(查询)函数结果:输入 1 按姓名查找, 输入 2 按房间号查找, 输入 3 返回 menu函数。选择查找方式:输入1 按姓名查找;15安徽师范大学物理与电子信
22、息学院College of Physics and ElectronicInformation, Anhui Normal University语言课程设计报告例如输入 yewei结果:输入 1 返回 lookfor函数。输入 2 按房间号查找,结果:安徽师范大学物理与电子信息学院 College of Physics and Electronic16Information, Anhui Normal University语言课程设计报告例如输入 301结果:输入 1 返回到 lookfor函数4、checkout (退房)函数结果:安徽师范大学物理与电子信息学院 College of Phy
23、sics and Electronic17Information, Anhui Normal University语言课程设计报告输入房间号和姓名即可实现退房例如输入 301 yewei 即可输入 1 返回到 menu函数七、流程图安徽师范大学物理与电子信息学院 College of Physics and Electronic18Information, Anhui Normal University语言课程设计报告安徽师范大学物理与电子信息学院 College of Physics and Electronic19Information, Anhui Normal University语言
24、课程设计报告安徽师范大学物理与电子信息学院 College of Physics and Electronic20Information, Anhui Normal University语言课程设计报告安徽师范大学物理与电子信息学院 College of Physics and Electronic21Information, Anhui Normal University语言课程设计报告八、结语通过这次课程设计, 在我和我们小组成员的共同的努力下,将宾馆客房管理系统这个软件编写出来并运行成功。 在此同时,也加深了我对谭浩强的 C 语言程序设计这本书的体会和了解。我对很多的函数有了新的认识,
25、也学会了运用多种函数,我也明白了写软件的基本过程和基本方法。写软件的过程中我又学到了曾经自己不知道的函数或是自己不会的安徽师范大学物理与电子信息学院 College of Physics and Electronic22Information, Anhui Normal University语言课程设计报告函数的用法。这次课程设计课总的来说让我受益匪浅。在软件的设计过程中遇到了很多的困难。在软件一次一次的调试失败下曾经想过要放弃。我最后还是让自己坚持了下来,毫不畏惧困难,在同学和老师的帮助与讲解下我总算是顺利的完成了软件的设计。 虽然在调试程序遇到了很多的困难,当软件调试成功时那种喜悦的感觉没
26、有什么东西可以代替的。 在程序的编写过程中我发现我自己有很多的知识漏洞和缺陷, 需要进一步努力学习来完善自己。在这几天的编写过程中我对 C语言有了更进一步的认识和了解。 此次编程过程的经验和知识肯定能促进我以后的学习。此次课程设计不仅给了我很多很好的经验,也让我体会到了失败时的焦急和难受, 成功时的兴奋与喜悦。 同时我们小组成员互帮互助, 让我认识到团队的力量,团结就是力量。九、参考书目安徽师范大学物理与电子信息学院 College of Physics and Electronic23Information, Anhui Normal University语言课程设计报告1 谭浩强, C程序设计教程,清华大学出版社, 2007 年 2 赵永哲,李雄飞,戴秀英编著, C 语言程序设计,科学出版社, 2003 年 3 夏宽理,赵子正编著,C语言程序设计,中国铁道出版社, 2006 年 4 谭浩强编著,C程序设计,清华大学出版社, 1991 年5Gary J. Bronson, A FirstBook of ANSIC (FourthEdition),PublishingHouse ofElectronics Industry, 2006. 6 Al Kelley, Ira Pohl, A Book on C:Programming in C (FourthEdition