




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮阴工学院 C+程序设计课程设计报告淮阴工学院C+程序设计课程设计报告选题名称: 客房管理 系(院): 计算机工程学院专 业: 通信工程(多媒体通信)班 级: xxxxxx 姓 名: xxxxxx 学 号: xxxxxx 指导教师: xxxxxxx 学年学期: 2011 2012 学年 第 1 学2011年 12 月 26 日设计任务书课题名称客房管理设计目的1. 调研并熟悉客房管理的基本功能、数据流程与工作规程;2. 学习客房管理中的相关算法和VC+集成环境的编程技术;3. 通过实际编程加深对基础知识的理解,提高实践能力;4. 学习开发资料的收集与整理,学会撰写课程设计报告。实验环境1. 微型电子计算机(PC);2. 安装Windows 2000以上操作系统,Visual C+6.0开发工具。任务要求1、设计内容:设计一个实用的小型客房管理程序。对客房的空闲和占用状态要有所表示。能按客房的编号进行客房基本信息的查询。2、程序应提供的基本管理功能有:1)添加:即增加一个客房的记录到系统中。2)删除:即从系统中删除一个客房的记录。3)查询:可根据客房编号、客房价格、客房状态等查找客房的相关信息,若找到显示该客房的全部信息。4)修改:可修改一个客房的除编号外的其它信息。5)状态:提供该客房空闲、占用的状态。6)客房信息可包括:客房编号、价格、面积、入住状态等相关信息。 程序应输入不少于10个客房的信息。3、结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。工作进度计划序号起止日期工 作 内 容12011.12.192011.12.20在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。22011.12. 212011.12.22设计总体方案,构建、绘制流程框图,编写代码,上机调试。32011.12.232011.12.24测试程序,优化代码,增强功能,撰写设计报告。42011.12.252011.12.25提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。指导教师(签章): 年 月 日 摘要客房管理系统包括客户基本信息的录入,统计,查询,修改,删除功能。系统开发由分析,设计,实施,调试,测试等阶段组成,其中信息管理为开发重点,在程序设计中结构体的调用与文件的阅读为编译的重点部分。包括客户信息管理、客房信息管理、入住和退房管理客房类型管理、费用管理和价目信息管理等6大功能模块,并提供了各功能模块的查询和更新功能,其中客户信息管理、入住和退房管理是系统开发的重点。本系统由需求分析、概念设计、逻辑设计等组成。根据设计的需要,运用了类函数、指针数组、结构语句、if语句、for语句、switch语句等。系统按功能将分为三个模块,分别为添加模块,调用模块,查询模块。 整个系统比较适合小型的宾馆客房使用。没有过多的其他附加功能,只是简单得将如何订房、入住、退房、查询功能实现,然后在此基础上进行了递阶性的开发。关键词:结构体的调用;查询函数的运用;循环语句的运用;函数的调用。目录1.课题综述.51.1课题来源.51.2课题意义.51.3预期目标.51.4面对的问题.51.5需要解决的关键技术.52.需求分析.62.1题目分析.62.2系统功能模块图.63.总体设计.73.1.模块设计.73.2.总体业务图.73.3.业务流程图.84.详细设计.84.1主函数部分.84.2各功能的实现.84.2.1定义成员函数.94.2.2类的运用.94.2.3指针和结构指针的运用.104.2.4 if_else语句,for语句和switch语句的运用.115.上机操作.14 5.1.工程任务.14 5.2.操作步骤.146.总结.177.致谢.188.附录 源代码.199.参考文献.2810.教师评语 .29一.课题综述 1.1课题来源 利用C+所学的知识,设计一个小型的客房管理系统,充分利用C语言的知识,把相关设计用代码形式表示出来。所设计的管理系统要完整并且可行,要达到预期的效果,通过对代码的编写,充分了解所学C+知识,牢记并掌握C+在实际应用中的重要作用。1.2课题意义 通过对小型客房管理系统的设计,帮助学生巩固所学的C+基础知识,培养学生的动手操作能力,提高学生的团队合作能力。培养学生的自主创新能力,使学生更用心、更谨慎地看待问题,帮助学生提高对C+程序设计的学习兴趣。1.3预期目标 通过对题目的分析和思考,通过自主创新和相关资料的查找,设计出一个小型的客房管理系统,实现对宾馆对客房的管理。客户信息包括身份证号,姓名,房间号,试设计一个客房管理系统,使之能提供以下功能: (1)系统以菜单方式提供(2)客户信息录入功能(3)客户信息统计功能(4)客户信息查询功能,查询方式(5)客户信息修改功能【提示】 建立客户信息结构体,结构体成员包括身份证号,姓名,房间号,费用,客房状态。1.4面对的问题 (1)主菜单的设计该如何提供用户选择界面; (2)各功能的实现需要运用哪些函数和如何调用函数; (3)如何提供给客户最清晰、最简单的选择操作。1.5需要解决的关键技术 (1)C+编译器中的Visual C+ 6.0作为软件开发工具,提供代码编写和程序的调试; (2)在程序设计过程中,相关代码的编写要运用不同的函数,相关函数的分析运用和调试需要运用不同的知识。二.需求分析 2.1 题目分析 根据题目要求,要求对客户信息进行输入,输出等操作;在程序中需要浏览客户信 息,应提供显示,统计,查询,修改等操作。2.2 系统功能模块图客房管理系统入住和退房管理客户信息管理价目信息管理客房类型管理客房信息管理费用管理图一:系统功能模块图三.总体设计 1.根据需求分析,可以对这个系统的设计分为以下几个模块:客户信息管理系统数据输入数据统计数据查询数据删除数据修改图二:客房信息管理系统图订房 2.总体业务图客房管理系统退房客房信息客户信息退出新增查询显示新增查询显示图三:总体业务图3.业务流程图开始用户登录用户注册身份验证注册成功删除客户客户,客房查询退房新增客户结束图四:业务流程图四.详细设计1.主函数部分: 主函数一般设计比较简洁,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择。 主函数代码: 29 void main() char choice=1; initial_room(); welcome(); while(choice=1) enter(); coutendl; coutchoice; if(choice=2) cout*endl; cout*谢谢使用本系统!*endl; cout*endl; coutendl; 2.各功能的实现 (1)定义成员函数:a.结构的运用:结构是一种复合数据类型,结构体类型定义时可以嵌套,即结构体的某个成员也可以是结构体类型。b.结构类型定义格式:struct 结构类型名数据类型 成员名1;数据类型 成员名2;数据类型 成员名 N;c.用结构函数实现房间信息的定义,代码设计:struct Room int number; int dank; int price; int state; ;(2)类的运用:a.用类来把数据和函数封装在一起。1.类成员数据成员,它们指定了该类对象的内部表示成员函数,它们指定该类的操作。类成员访问权限公有(public)成员:可以在类外访问。私有(private)成员:只能被该类的成员函数访问。保护(protected)成员:只能被该类的成员函数或派生类的成员函数访问。数据成员通常是私有的。成员函数通常有一部分是公有的,一部分是私有的。公有成员函数可在类外被访问,也称之为类的接口。2.代码设计:class Customer public: Customer(); void set_name(char *n)strcpy(name,n); void set_ID(char *p)strcpy(ID,p); void set_room_number(int 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; int get_prepaid()return prepaid; virtual Customer();private: char name10,ID19; int room_number; int prepaid; int change; int day; b.析构函数:析构函数用来释放分配给对象的内存空间。 1.析构函数的定义格式如下::()2.析构函数的特点: *析构函数的名字是在类名前加一个“”构成;*析构函数没有参数,也没有返回值,而且不能重载,所以在一个类中只能有一个析构函数; *对象注销时,系统自动调用析构函数; *如果一个类中没有定义析构函数,系统会自动生成一个缺省的析构函数,其形式为:类名:类名()代码设计:Customer:Customer() cout该顾客退房成功!endl;c.静态数据成员函数:静态数据成员属于整个类,使用是可用以下格式:类名:静态数据成员 或者 对象名.静态数据成员名(3)指针与结构指针的运用:a.指针定义格式:数据类型 *指针名b.指针与一维数组:假如有数组a和指针p,且p=a;则有ai、*(a+i)、pi、*(p+i)四种形式等价,均是对ai元素的引用。c.结构指针:当用点操作符时,它的左边应是一个结构变量,当用箭头操作符时,它的左边应是一个结构指针。d.用结构指针来访问结构成员,代码设计:例如:void check_in() char name110,id119; int ding_or_no; int prepaid; cout订了 2-没订) ; cinding_or_no; if(ding_or_no=1) cout请输入顾客的姓名:name1; cout请输入顾客的身份证号码:id1; for(int j=0;jget_name(),name1)=0)&(strcmp(customerj-get_ID(),id1)=0) int num=customerj-get_room_number(); cout顾客name1今天入住本宾馆! 房间号码为: numget_day()*150; customerj-set_prepaid(prepaid); cout请收房费 prepaid元整!get_day()*200; customerj-set_prepaid(prepaid); cout请收房费 prepaid元整!get_day()*300; customerj-set_prepaid(prepaid); cout请收房费 prepaid元整!get_day()*600; customerj-set_prepaid(prepaid); cout请收房费 prepaid元整!endl; room59+num%100.state=2; break; break; C.new与delete:new类似与函数malloc(),分配堆内存,但比malloc()更简练。new的操作数为数据类型,它可以带初始化值表或单元个数。New返回一个具有操作数之数据类型的指针。返回delete类似于函数free(),释放堆内存。Delete的操作数是new返回的指针,当返回的是new分配的数组时,应带。代码设计customeri=new Customer; int room_standard,day; cout请您选择预定房间的标准:n; coutroom_standard; coutday; customeri-set_day(day);coutaccount; if(account=1) for(int k=0;kget_room_number() roomk.state=0; i-; for(;ji;j+) customerj=customerj+1; delete customeri; (4).if.else语句; switch语句的运用;for语句的运用a.常用的构成选择结构的if语句有两种形式,如下:*.if(条件) 语句1Else 语句2*.if(条件) 语句1else if(条件) 语句2else if(条件) 语句3else 语句b.switch语句:用switch语句构成选择结构的格式为:switch(表达式)case 常量表达式1:语句块1 break;case 常量表达式2:语句块2 break;case 常量表达式n:语句块n break;c.for语句形式:for(表达式1;表达式2;表达式3) 循环体语句块注意:1.for循环通常用于有确定次数的循环; 2.for语句中三个表达式中任何一个均可以省略,但两个分号不可以省略; 3.for循环可以有多个循环变量,此时,循环变量的表达式之间用逗号隔 开; 4.循环语句能够在另一个循环语句的循环体内,即循环能够被嵌套。d.代码设计:void book_room() customeri=new Customer; int room_standard,day; cout请您选择预定房间的标准:n; coutroom_standard; coutday; customeri-set_day(day); switch(room_standard) int n; case 1: cout住房费用总共为: day*150元n; for(n=0;n20;n+) if(roomn.state=0) cout预定成功!房间号码为: roomn.numberset_room_number(roomn.number); break; break; case 2: cout住房费用总共为: day*200 元n; for(n=20;n40;n+) if(roomn.state=0) cout预定成功!房间号码为: roomn.numberset_room_number(roomn.number); break; break; case 3: cout住房费用总共为: day*300 元n; for(n=40;n60;n+) if(roomn.state=0) cout预定成功!房间号码为: roomn.numberset_room_number(roomn.number); break; break; case 4: cout住房费用总共为: day*600元n; for(n=60;n80;n+) if(roomn.state=0) cout预定成功!房间号码为: roomn.numberset_room_number(roomn.number); break; break; i+; 五.上机操作1.工程任务A.界面设计;B.输入客户信息,包括姓名、身份证号等;C.输出每个客户的信息。2.操作步骤(1)输出界面:根据要求,输入用户名和密码,登录到系统首界面图 1(2)订房实现:根据提示,选择服务类别,选一进入订房管理系统图 2(3)入住实现:根据提示选二进入入住管理系统图 3(4)退房实现:根据提示输入3进入退房管理系统图 4(5)查询功能:a.房间信息查询图 5b.顾客信息查询图 6(6)退出系统图7 总结此次课程设计中,我成功做出了课堂上老师要求的内容。虽然最后的一个模块是通过网络找的,但是也通过这个模块学到了一些在课堂上没有真正掌握的文件部分的自如运用。 通过此次课程设计,我对所学知识有了更深层次的理解,我更加理解和懂得运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试同一个较长程序的基本方法,进一步掌握和提高利用C语言进行程序设计的能力。这次C+课程设计不仅是一次动手的机会,更让我们在实践中对这一学期所学的知识有了很好的复习,巩固和提高。 在设计中遇到了好多的调试不出结果的问题通过大家的合作,得到了好多以后可以避免错误的经验,通过老师的帮助,也得到了很多没有接触过的知识。通过实践,建立课程设计的整体思想,锻炼编写程序、调试程序的能力,学习文档编写规范,培养独立学习、吸取他人经验、探索前沿知识的习惯,树立团队协作精神。 通过实习,我还明白一些做人的道理。不论是什么,做出来的成果永远是最值得骄傲的。想象重要,动手更重要。我们不可能掌握所有的知识,但是我们可以从实践中学到很多我们平时不太熟悉的知识。平时我们不太注重的细节,往往会导致我们犯错,因此,我们每个人都应该注重细节。实践是检验真理的唯一标准,我相信通过实践我们不仅能较好的地掌握所学过的基础知识,还能够对所学的知识有更进一步的了解,并能在后续课程中发挥优越性。实践出真知,因而我不会仅仅依靠这一次课程设计的机会,我还要抓住以后每一个课程设计的机会检验自己。 最后,我想说:“C+很重要,我们努力把它做得更好!”致谢这次的C+课程设计能够顺利圆满的完成不仅是个人的功劳,还要感谢那些给予我帮助的人和参考文献,实践地点。首先要感谢淮阴工学院计算机工程学院,感谢淮阴工学院给我们提供了良好的硬件设施,给我们提供了一个动手的平台;其次还要感谢淮阴工学院计算机工程学院的老师们。 在这次课程设计中,多亏了同学的指导,让我在实践中学到了很多知识,同学帮我纠正了很多错误,帮我更好地完善我的报告。回顾着过去的一周,我发现自己收获了很多,也成长了很多懂得如何去多方位地查找资料,完善和创新一些旧的思维方式,懂的如何同老师和同学交流协作。在这一周里,我从很多地方去查找资料来完善我的课程设计,同学们给予我很大的帮助,我很多知识掌握的不好,同学会很有耐心地讲给我听。在设计过程中,才发现自己对好多知识都没有理解透彻,通过大家的互帮互助,我们克服了很多困难。不光在学习方面,我得到了许多人的帮助,同时在人际交往方面自己也能更好的体会。虽然在这次课程设计上花了一定的时间,但我认为这是值得的。我也要感谢老师的耐心教导和悉心的讲解。任劳任怨,默默奉献着,在我们遇到编程上的困难时,她给了我们最细致入微的辅导,与我们一起探讨代码上出现的问题,寻求解决方案,在平时细心地讲解知识点,认真地批阅实验报告,在我遇到问题和疑惑时能够给予解答并进行适当的延拓与发散。一个学期,老师细心地教我们知识,扩大我们的视野,帮我们充分掌握知识,老师的奉献,我们无以为报。千言万语,只化作一声感谢。对于指导老师和同学的帮助我再次 深深的谢意!没有他们的帮助我相信自己一个人很难及时完成任务。真的很感谢他们!附录源代码:#include #include/*void initial_room(); /初始化80个房间信息void welcome(); /验证用户登陆,登陆成功显示欢迎信息void enter();void book_room();void check_in();void check_out();void inquire();int i=0;/*struct Room / room的结构声明 int number; int dank; int price; int state; ;class Customer /类的运用public: Customer(); void set_name(char *n)strcpy(name,n); void set_ID(char *p)strcpy(ID,p); void set_room_number(int 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; int get_prepaid()return prepaid; virtual Customer();private: char name10,ID19; int room_number; int prepaid; int change; int day;Customer:Customer() coutname; coutID; prepaid=change=day=0;Customer:Customer() cout该顾客退房成功!endl;/*Room room80;Customer *customer80;void main() /程序入口从这里开始运行 char choice=1; initial_room(); /初始化80个房间的信息,分四个等级 welcome(); /验证用户登陆,登陆成功显示欢迎信息 while(choice=1) enter(); /根据用户的选择执行不同的功能 coutendl; coutchoice; coutendl; /系统登陆界面*void welcome() /验证用户登陆,登陆成功显示欢迎信息 char name4,code7; coutnamecode; while(strcmp(name,000)!=0)|(strcmp(code,666666)!=0) /比较两个字符串 coutnamecode; coutendl; coutendl; cout *n; cout 欢迎使用*系统!n; cout *n; coutendl;/系统入口*void enter() int kind_of_service; cout请选择服务类别:订房、入住、退房还是查询? n; cout定房 2-入住 3-退房 4-查询: ; cinkind_of_service; if(kind_of_service4) | (kind_of_service1) coutkind_of_service; else switch(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=new Customer; int room_standard,day; cout请您选择预定房间的标准:n; coutroom_standard; coutday; customeri-set_day(day); switch(room_standard) int n; case 1: cout住房费用总共为: day*150元n; /计算住房费用 for(n=0;n20;n+) /从第一个级别的房间中查找一个空闲的房间 if(roomn.state=0) /state=0表示该住房没有被预定的 cout预定成功房间号码为: roomn.numberset_room_number(roomn.number); break; break; case 2: cout住房费用总共为: day*200 元n; for(n=20;n40;n+) if(roomn.state=0) cout预定成功房间号码为: roomn.numberset_room_number(roomn.number); break; break; case 3: cout住房费用总共为: day*300 元n; for(n=40;n60;n+) if(roomn.state=0) cout预定成功房间号码为: roomn.numberset_room_number(roomn.number); break; break; case 4: cout住房费用总共为: day*600元n; for(n=60;n80;n+) if(roomn.state=0) cout预定成功房间号码为: roomn.numberset_room_number(roomn.number); break; break; i+; /住房的顾客数加1/入住登记*void check_in() char name110,id119; int ding_or_no,prepaid; cout订了 2-没订) ; cinding_or_no; if(ding_or_no=1) cout请输入顾客的姓名:name1; cout请输入顾客的身份证号码:id1; for(int j=0;jget_name(),name1)=0)&(strcmp(customerj-get_ID(),id1)=0) /查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论