C课程方案设计书宾馆管理系统完整的报告_第1页
C课程方案设计书宾馆管理系统完整的报告_第2页
C课程方案设计书宾馆管理系统完整的报告_第3页
C课程方案设计书宾馆管理系统完整的报告_第4页
C课程方案设计书宾馆管理系统完整的报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、封面作者: PanHongliang仅供个人学习课程设计报告课程设计题目:宾馆管理系统专业:信息工程姓名:学号:班级: 071132指导教师:2009年5月30日C+课程设计报告目录一、程序设计 21基本要求 22程序设计要求 2二、程序实现步骤 2三、程序分块设计 2四、完整源程序 11五、存在问题 22六、课程设计总结 22七、参考文献 22八、表格 22一、程序设计要求:1基本要求(1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;2实验基本要求:(1) 实现用户信

2、息的输入(2) 实现不同等级房间费用的查询(3) 实现用户房间的预定(4) 实现用户住宿费用的结算二、程序设计步骤1、设计用户登陆界面2、建立类别3、合理的使用继承和多态性把各类别组合起来三、程序分块设计1、 用户登陆界面程序:void welcome()cout<<endl 。/ 验证用户登陆,登陆成功显示欢迎信息cout<<endl 。cout<<" *n" 。cout<<"cout<<"* 欢迎使用宾馆管理系统!*n" 。 * n" 。cout<<endl

3、。程序运行截图:2 订房实现程序如下:void book_room()customeri=new Customer 。int room_standard,day 。cout<<" 请您选择预定房间的标准:n" 。cout<<"1.单人间/天150元n2.双人间/天200元n3.标准间/天300元n4.总统套房/天600元 n"。cin>>room_standard 。cout<<" 请输入预定天数n" 。cin>>day 。customeri->set_day(day)

4、 。switch(room_standard)int n 。case 1:cout<<"住房费用总共为:"<<day*150<<"元 n"。for(n=0 。 n<20。 n+)if(roomn.state=0)cout<<"预定成功房间号码为/ 从第一个级别的房间中查找一个空闲的房间/state=0 表示该住房没有被预定的: "<<roomn.number<<endl 。roomn.state=1 。customeri->set_room_numbe

5、r(roomn.number) 。 break。break。case 2:cout<<"住房费用总共为:"<<day*200<<"元 n"。for(n=20 。 n<40 。 n+)if(roomn.state=0)cout<<"预定成功房间号码为:"<<roomn.number<<endl 。roomn.state=1 。customeri->set_room_number(roomn.number) 。break。break。case 3:cout

6、<<"住房费用总共为:"<<day*300<<"元 n"。for(n=40 。 n<60 。 n+)if(roomn.state=0)cout<<"预定成功房间号码为:"<<roomn.number<<endl 。roomn.state=1 。customeri->set_room_number(roomn.number) 。break。break。case 4:cout<<"住房费用总共为:"<<day*6

7、00<<"元 n"。for(n=60 。 n<80 。 n+)if(roomn.state=0)cout<<"预定成功房间号码为:"<<roomn.number<<endl 。roomn.state=1 。customeri->set_room_number(roomn.number) 。break。break。i+ 。 /住房的顾客数加1程序运行的截图如下:3 顾客的入住登记程序:void check_in() char name110,id119 。int ding_or_no,prepai

8、d 。cout<<"该顾客订房了吗?(1->订了 2->没订)"。cin>>ding_or_no 。if(ding_or_no=1)cout<<" 请输入顾客的姓名 :"<<endl 。cin>>name1 。cout<<" 请输入顾客的身份证号码:"<<endl 。cin>>id1 。for(int j=0 。 j<=i 。 j+)if(strcmp(customerj->get_name(),name1)=0)&

9、amp;&(strcmp(customerj->get_ID(),id1)=0) / 查找该顾客的定房信息int num=customerj->get_room_number() 。 / 取得定房的房间号cout<<" 顾客 "<<name1<<" 今天入住本宾馆! ?"<<num<<endl 。roomnum%100-1.state=2 。/修改房间状态为入住状态break。break。elsecustomeri=new Customer 。int room_standar

10、d,day 。cout<<" 请您选择预定房间的标准:n" 。cout<<"1.单人间/天150元n2.双人间/天200元n3.标准间/天300元n4.总统套房/天600元n"。cin>>room_standard 。cout<<" 请输入住宿天数 n" 。cin>>day 。customeri->set_day(day) 。switch(room_standard)int n 。case 1:prepaid=day*150 。customeri->set_pre

11、paid(prepaid) 。cout<<" 请收房费 "<<prepaid<<" 元整 !n" 。for(n=0 。 n<20 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.number) 。 break。break。case 2:prepaid=day*200 。custom

12、eri->set_prepaid(prepaid) 。cout<<" 请收房费 "<<prepaid<<" 元整 !n" 。for(n=20 。 n<40 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.number) 。 break。break。case 3:prepaid

13、=day*300 。customeri->set_prepaid(prepaid) 。cout<<" 请收房费 "<<prepaid<<" 元整 !n" 。for(n=40 。 n<60 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.number) 。 break。brea

14、k。case 4:prepaid=day*600 。customeri->set_prepaid(prepaid) 。cout<<" 请收房费 "<<prepaid<<" 元整 !n" 。for(n=60 。 n<80 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.numb

15、er) 。 break。break。i+ 。程序运行截图:4 程序的退房结算:void check_out()char name210,id219 。int standard,j,room_number,day1,day2,day 。cout<<" 请输入要退房的顾客姓名和身份证号码:n" 。cin>>name2>>id2 。cout<<" 请输入该顾客实住天数:n" 。cin>>day2 。for(j=0 。 j<i 。 j+)if(strcmp(customerj->get_na

16、me(),name2)=0)&&(strcmp(customerj->get_ID(),id2)=0) room_number=customerj->get_room_number() 。standard=room_number/100 。day1=customerj->get_day() 。day=day1-day2 。switch(standard)case 6:cout<<"顾客的房间号是"<<room_number<<":为单人间,每天150元n"。cout<<&q

17、uot; 实际消费 "<<day2*150<<" 元整 !n" 。cout<<endl 。break。case 7:cout<<"顾客的房间号是"<<room_number<<":为单人间,每天200元n"。cout<<" 实际消费 "<<day2*200<<" 元整 !n" 。cout<<endl 。break。case 8:cout<<"顾客

18、的房间号是"<<room_number<<":为单人间,每天300元n"。cout<<" 实际消费 "<<day2*300<<" 元整 !n" 。cout<<endl 。break。case 9:cout<<"顾客的房间号是"<<room_number<<":为单人间,每天600元n"。cout<<" 实际消费 "<<day2*600&

19、lt;<" 元整 !n" 。cout<<endl 。break。cout<<endl 。cout<<" 退房核算清楚,请按 1: "。char account。cin>>account 。if(account='1')for(int k=0 。 k<80 。 k+)if(roomk.number=customerj->get_room_number()roomk.state=0 。i- 。for( 。 j<i 。 j+)customerj=customerj+1 。d

20、elete customeri 。程序运行截图:5 系统的查询功能程序如下:void inquire()char inquire_choice 。cout<<" 房间信息查询请按1 "<<endl 。cin>>inquire_choice 。if(inquire_choice='1')int j,k=0 。cout<<endl。"<<endl。cout<<"下列房间还没人预订,也没人入住:for(j=0。 j<80。 j+)(if(roomj.state=0)(

21、if(k%10=0) cout<<endl 。cout<<roomj.number<<'t' 。k+。cout<<endlcout<<endlk=0。cout<<"下列房间已预订:"<<endl。for(j=0。 j<80。 j+)(if(roomj.state=1)(if(k%10=0) cout<<endl 。cout<<roomj.number<<'t'。k+k=0。cout<<endlcout<

22、;<endlcout<<"下列房间有人入住:"<<endl。for(j=0。 j<80。 j+)(if(roomj.state=2)(if(k%10=0) cout<<endl 。cout<<roomj.number<<'t'。k+cout<<endl程序运行截图:6、主函数程序如下:void main() /程序入口从这里开始运行char choice='1' 。initial_room() 。/初始化 80 个房间的信息,分四个等级welcome() 。/

23、验证用户登陆,登陆成功显示欢迎信息while(choice='1')enter() 。/ 根据用户的选择执行不同的功能cout<<endl 。cout<<" 继续使用本系统请按"1",退出请按 "2"! " 。cin>>choice 。cout<<endl 。四、完整源程序如下:#include<iostream.h>#include<string.h>/*void initial_room() 。/ 初始化 80 个房间信息void welcom

24、e() 。/验证用户登陆,登陆成功显示欢迎信息void enter() 。void book_room() 。void check_in() 。void check_out() 。void inquire() 。int i=0 。/* struct Roomint number。int dank。int price 。int state 。class Customerpublic:Customer()。void set_name(char *n)strcpy(name,n) 。 void set_ID(char *p)strcpy(ID,p) 。 void set_room_number(in

25、t n)room_number=n 。 void set_day(int d)day=d 。 void set_prepaid(int p)prepaid=p 。 char *get_name()return name 。 char *get_ID()return ID 。 int get_room_number()return room_number 。 int get_day()return day 。 virtual Customer() 。private:char name10,ID19 。int room_number 。int prepaid 。int change 。int da

26、y 。Customer:Customer()cout<<" 请您输入顾客的姓名 n" 。cin>>name。cout<<" 请您输入顾客的身份证号码n" 。cin>>ID 。prepaid=change=day=0。Customer:Customer()cout<<" 该顾客退房成功 !"<<endl 。/*Room room80 。Customer *customer80 。void main() / 程序入口从这里开始运行char choice='1&

27、#39; 。initial_room() 。/初始化 80 个房间的信息,分四个等级welcome() 。/验证用户登陆,登陆成功显示欢迎信息while(choice='1')enter() 。/ 根据用户的选择执行不同的功能cout<<endl 。cout<<" 继续使用本系统请按"1",退出请按 "2"! " 。cin>>choice 。cout<<endl 。/系统登陆界面 *void welcome() / 验证用户登陆,登陆成功显示欢迎信息 cout<&l

28、t;endl 。cout<<endl 。cout<<"*n" 。cout<<"* 欢迎使用宾馆管理系统*n" 。cout<<"*n" 。cout<<endl 。/系统入口 * void enter()int kind_of_service 。cout<"请选择服务类别:订房、入住、退房还是查询? n"。cout<<" 1-> 定房 2->入住3->退房4->查询 : "。cin>>k

29、ind_of_service 。if(kind_of_service>4) | (kind_of_service<1)cout<<" 您的输入有误,请重试 !n" 。cin>>kind_of_service 。elseswitch(kind_of_service)case 1: book_room() 。break。case 2: check_in() 。break。case 3: check_out()。break。case 4: inquire() 。break。/订房实现 * void book_room()customeri=ne

30、w Customer 。int room_standard,day 。cout<<" 请您选择预定房间的标准:n" 。cout<<"1.单人间/天150元n2.双人间/天200元n3.标准间/天300元n4.总统套房/天600元 n"。 cin>>room_standard 。cout<<" 请输入预定天数n" 。cin>>day。customeri->set_day(day) 。switch(room_standard)int n 。case 1:cout<&l

31、t;"住房费用总共为:"<<day*150<<"元 n"。for(n=0 。 n<20。 n+)/ 从第一个级别的房间中查找一个空闲的房间if(roomn.state=0)/state=0 表示该住房没有被预定的cout<<"预定成功房间号码为:"<<roomn.number<<endl 。 roomn.state=1 。customeri->set_room_number(roomn.number) 。 break。 break。case 2:cout<&

32、lt;"住房费用总共为:"<<day*200<<"元 n"。for(n=20 。 n<40 。 n+)if(roomn.state=0)cout<<"预定成功房间号码为:"<<roomn.number<<endl 。 roomn.state=1 。customeri->set_room_number(roomn.number) 。 break。 break。case 3:cout<<"住房费用总共为:"<<day*300

33、<<"元 n"。for(n=40 。 n<60 。 n+)if(roomn.state=0) cout<<"预定成功房间号码为:"<<roomn.number<<endl 。roomn.state=1 。customeri->set_room_number(roomn.number) 。 break。break。case 4:cout<<"住房费用总共为:"<<day*600<<"元 n"。for(n=60 。 n<

34、;80 。 n+)if(roomn.state=0)cout<<"预定成功房间号码为:"<<roomn.number<<endl 。roomn.state=1 。customeri->set_room_number(roomn.number) 。break。break。i+ 。 /住房的顾客数加1/入住登记*void check_in()char name110,id119 。int ding_or_no,prepaid 。cout<<" 该顾客订房了吗 ? (1->订了2->没订 ) "

35、 。cin>>ding_or_no 。if(ding_or_no=1)cout<<" 请输入顾客的姓名 :"<<endl 。cin>>name1 。cout<<" 请输入顾客的身份证号码:"<<endl 。cin>>id1 。for(int j=0 。 j<=i 。 j+)if(strcmp(customerj->get_name(),name1)=0)&&(strcmp(customerj->get_ID(),id1)=0) / 查找该

36、顾客的定房信息int num=customerj->get_room_number() 。 / 取得定房的房间号cout<<" 顾客 "<<name1<<" 今天入住本宾馆! ?"<<num<<endl 。roomnum%100-1.state=2 。/ 修改房间状态为入住状态break。break。elsecustomeri=new Customer 。int room_standard,day 。cout<<" 请您选择预定房间的标准:n" 。cout&

37、lt;<"1.单人间/天150元n2.双人间/天200元n3.标准间/天300元n4.总统套房/天600元n"。cin>>room_standard 。cout<<" 请输入住宿天数 n" 。cin>>day 。customeri->set_day(day) 。switch(room_standard)int n 。case 1:prepaid=day*150 。customeri->set_prepaid(prepaid) 。cout<<" 请收房费 "<<

38、;prepaid<<" 元整 !n" 。for(n=0 。 n<20 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.number) 。break。break。case 2:prepaid=day*200 。customeri->set_prepaid(prepaid) 。cout<<" 请收房费

39、 "<<prepaid<<" 元整 !n" 。for(n=20 。 n<40 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.number) 。break。break。case 3:prepaid=day*300 。customeri->set_prepaid(prepaid) 。cout<

40、<" 请收房费 "<<prepaid<<" 元整 !n" 。for(n=40 。 n<60 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.number) 。break。break。case 4:prepaid=day*600 。customeri->set_prepaid(pre

41、paid) 。cout<<" 请收房费 "<<prepaid<<" 元整 !n" 。for(n=60 。 n<80 。 n+)if(roomn.state=0)cout<<" 入住房间号码为 : "<<roomn.number<<endl 。roomn.state=2 。customeri->set_room_number(roomn.number) 。break。break。i+ 。/退房结算*void check_out()char name210

42、,id219 。int standard,j,room_number,day1,day2,day 。cout<<" 请输入要退房的顾客姓名和身份证号码:n" 。cin>>name2>>id2 。cout<<" 请输入该顾客实住天数:n" 。cin>>day2 。for(j=0 。 j<i 。 j+)if(strcmp(customerj->get_name(),name2)=0)&&(strcmp(customerj->get_ID(),id2)=0)room_

43、number=customerj->get_room_number() 。standard=room_number/100 。day1=customerj->get_day() 。day=day1-day2 。switch(standard)case 6:cout<<"顾客的房间号是"<<room_number<<":为单人间,每天150元n"。cout<<" 实际消费 "<<day2*150<<" 元整 !n" 。cout<

44、<endl 。break。case 7:cout<<"顾客的房间号是"<<room_number<<":为单人间,每天200元n"。cout<<" 实际消费 "<<day2*200<<" 元整 !n" 。cout<<endl 。break。case 8:cout<<"顾客的房间号是"<<room_number<<":为单人间,每天300元n"。cout

45、<<" 实际消费 "<<day2*300<<" 元整 !n" 。cout<<endl 。break。case 9:cout<<"顾客的房间号是"<<room_number<<":为单人间,每天600元n"。cout<<" 实际消费 "<<day2*600<<" 元整 !n" 。cout<<endl 。break。cout<<endl

46、。cout<<" 退房核算清楚,请按 1: "。char account。cin>>account 。if(account='1')for(int k=0 。 k<80 。 k+)if(roomk.number=customerj->get_room_number()roomk.state=0 。i- 。for( 。 j<i 。 j+)customerj=customerj+1 。delete customeri 。/信息查询*void inquire()char inquire_choice 。cout<&l

47、t;" 房间信息查询请按1 "<<endl 。cin>>inquire_choice 。if(inquire_choice='1')int j,k=0 。cout<<endl 。cout<<" 下列房间还没人预订,也没人入住: "<<endl 。for(j=0 。 j<80 。 j+)if(roomj.state=0)if(k%10=0) cout<<endl 。cout<<roomj.number<<'t' 。k+ 。c

48、out<<endl 。cout<<endl 。k=0 。cout<<" 下列房间已预订: "<<endl 。for(j=0 。 j<80 。 j+)if(roomj.state=1)if(k%10=0) cout<<endl 。cout<<roomj.number<<'t' 。k+ 。k=0 。cout<<endl 。cout<<endl 。cout<<" 下列房间有人入住: "<<endl 。for(

49、j=0 。 j<80 。 j+)if(roomj.state=2)if(k%10=0) cout<<endl 。cout<<roomj.number<<'t' 。k+ 。cout<<endl 。/房间信息初始化*void initial_room() / 对 80 个房间进行初始化,分 4 个等级int j,k=601 。for(j=0 。 j<20 。 j+)roomj.number=k+ 。roomj.dank=1 。roomj.price=150 。roomj.state=0 。k=701 。for(j=20 。 j<40 。 j+)roomj.number=k+ 。roomj.dank=2 。roomj.price=200 。roomj.state=0 。k=801 。for(j=40 。 j<60 。 j+)roomj.number=k+ 。roomj.dank=3 。roomj.price=300 。roomj.state=0 。k=901 。for(j=60。 j<80。 j+)roomj.number=k+ 。roomj.dank=4 。roomj.price=600 。roomj.state

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论