




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、 课程设计目的及要求课程设计的内容1. 采用C+过程化程序设计方法,设计一个简单的旅店管理系统;2. 采用C+面向对象程序设计方法,封装一个旅店类,并完善相关操作。课程设计的目的1提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。2培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。3学习和掌握C+程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。课程设计要求:宾馆客房管理系统宾馆的客房信息包括客房号、客房类型、客房价格、空闲情况、客人姓名、客人身份证号、入住时间、退房时间,预付费用等信息。试设计一宾馆客房管理系统统,系统以菜单方式工作,使之能提供以下功能:l 客房信息的录入功能l 客人入住登记l 客人退房结算l 客房信息浏览功能,浏览全部客房的信息l 客房信息查询:查询空房间情况、按姓名或房间号查询l 客房信息的删除、修改功能二、 课程设计的具体实现课程设计内容:一【旅店管理系统】(1) 总体设计:本程序的设计主要分为2个.h 文件和7个.cpp文件来做,其中头文件用一个结构体来实现客房数据类型的定义,另一个做extern外部声明,使每一个.cpp文件都能调用头文件中的数据。各个模块的实现过程相对独立,使得操作更加方便,7个.cpp的作用分别为:主程序客房数据录入客人入住登记客人退房结算客房信息浏览客房信息查询客房信息修改(2) 总体设计图:旅店管理系统总流程图客房信息修改i=6cini;Cini;i=1客房信息录入i=2i=3i=4i=5客房信息查询客房信息浏览客人退房结算客人入住登记(3) 详细设计:1、登陆模块:主要完成的功能为,当用户开始使用本系统时,进入登陆模块,屏幕显示菜单提示,用户可以根据提示选择需要的功能。具体如下:(1)客房信息录入 (2)客人入住登记 (3)客人退房结算 (4)客房信息浏览 (5)客房信息查询 (6)客房信息修改 (0)退出系统主要使用技术:函数的递归调用和switch.case语句关键代码:int m;cinm; /选择进入某个选项switch(m)case 0:save();cout欢迎下次光临客房系统!版权所有,盗版必究.endl;break;case 1:input();break; /信息录入 case 2:dengji();break; /旅客登记case 3:jiezhang();break; /客人退房结账case 4:output();break; /客房信息浏览case 5:chaxun();break; /客房信息查询case 6:xuanze();default: /输入有误cout - -! 您的输入有错, & endl;cout 请重新输入 & n数据录入in输入客房信息i+ 关键代码:system(cls);cout 请选择你的操作:endl;cout 1 . 确定录入 endl;cout 0 . 返回菜单 endl;cout l;if(l=1)FILE *fp;fp=fopen(room.txt,w);cout &请输入房间信息,您预设的房间有()个:f;fwrite(&f,sizeof(int),1,fp);for(int i=0;if;i+)coutai.num;coutai.kind;coutai.price;coutai.kongxian;fwrite(&ai,sizeof(room),1,fp);fclose(fp);cout*恭喜!您已经成功录入了f个房间的信息*endl;cout endl;cout*请按 1 返回主菜单 *endl; 运行截图:3、客人入住登记模块:主要完成的功能为,当有客人入住时,实现对客人相关信息的登记和对磁盘数据的更新。主要使用技术:函数的自身调用和I/O流关键代码:FILE *fp; fp=fopen(room.txt,wb+);fread(&f,sizeof(int),1,fp);int j;system(cls);cout *请输入将要入住的房间号:*j;for(int i=0;if;i+) /查找所查询的房间号码if(ai.num=j)break;/coutai.kongxian;save(); cout *是否要入住? 确认入住 1 * endl; /选择是否入住 cout * 否 0 * c;if(c=1) /选择入住 cout请输入客人的信息:endl; ;coutendl;coutai.zhengjian;coutendl;coutai.rztime;coutendl;coutai.time;coutendl;coutai.yufu;strcpy(ai.kongxian,已住宿);fwrite(&ai,sizeof(room),1,fp);fclose(fp); cout *继续填写 0 * endl; cout *返回主菜单 1 * n;if(n=1)print(); /返回主菜单slect();elsedengji(); /继续填写入住信息else /选择不入住 因为已经有人 cout *返回主菜单 1 * endl; cout *重新选择入住 0 * c;if(c=1)print(); /返回主菜单slect();elsedengji(); /继续选择房间运行截图:4、客人退房结算模块:主要完成的功能为,当客人退房时,实现对客房信息的更新和并将更新后数据写入磁盘。主要使用技术:I/O流和函数的调用以及拷贝技术关键代码: cout请选择将要结账的房间号码:c; for(int i=0;if;i+) /查找所查询的房间号码if(ai.num=c)break;cout房间ai.numendl; /输出房间的信息coutai.kindai.price元/天 ai.kongxian 客人名字: 客人证件:ai.zhengjian 入住时间:ai.rztimeai.time 预付款为:ai.yufu元endl;int S;S=ai.price*ai.time-ai.yufu;cout您所需付款为:Sendl;strcpy(ai.kongxian,空);strcpy(,);strcpy(ai.zhengjian,);strcpy(ai.rztime,);ai.time=0;ai.yufu=0;fwrite(&ai,sizeof(room),1,fp);fclose(fp);save();cout欢迎下次光临!endl;cout请选择是否继续结账* 继续请按 0 *endl; cout * 返回主菜单请按 1 *endl; /选择是否继续查询fanhui(); 运行截图:5、客房信息浏览模块:主要完成的功能为,实现对旅店内全部信息的浏览。主要使用技术:I/O流for循环语句关键代码:FILE *fp;fp=fopen(room.txt,r);fread(&f,sizeof(int),1,fp);for(int i=0;if;i+)fread(&ai,sizeof(room),1,fp);for( i=0;if;i+)cout房间ai.numendl; /输出房间的信息coutai.kindai.price元/天 ai.kongxian 客人名字: 客人证件:ai.zhengjian 入住时间:ai.rztimeai.time 预付款为:ai.yufu元endl;coutendl;运行截图:6、客房信息修改模块:主要完成的功能为,对房间信息的改、房间信息的删除和密码的修改并且将修改后的数据写入磁盘主要使用技术:switchcase 语句while循环 for循环I/O流以及数组下标的提取关键代码:void jian()cout您确定要进行删除房间信息操作吗? endl;cout 1 . 确定 endl;cout 0 . 返回 endl;coutk;if(k=1)cout请输入您所要删除的房间号码:c; FILE *fp;fp=fopen(room.txt,r+);fread(&f,sizeof(int),1,fp); for(int i=0;if;i+) /查找所查询的房间号码if(ai.num=c)break;cout房间ai.numendl; /输出房间的信息coutai.kindai.price元/天 ai.kongxian 客人名字: 客人证件:ai.zhengjian 入住时间:ai.rztimeai.time 预付款为:ai.yufu元endl;strcpy(ai.kongxian,空);strcpy(,);strcpy(ai.zhengjian,);strcpy(ai.rztime,);ai.time=0;ai.yufu=0;fwrite(&ai,sizeof(room),1,fp);fclose(fp);else if(k=0)print(); /返回slect(); elsecout您的输入有错.endl;save();jian();运行截图:7、客房信息查询模块:主要完成的功能为,对客房信息的查询。主要使用技术: for循环I/O流关键代码: 此函数实现空房间的查询FILE *fp;int i;fp=fopen(room.txt,r);fread(&f,sizeof(int),1,fp);coutc; for(i=0;if;i+)fread(&ai,sizeof(room),1,fp);for(i=0;if;i+) /查找所查询的房间号码if(ai.num=c)cout房间ai.numendl; /输出房间的信息coutai.kindai.price元/天 ai.kongxian 客人名字: 客人证件:ai.zhengjian 入住时间:ai.rztimeai.time 预付款为:ai.yufu元endl;fclose(fp);cout请选择你的操作:endl;cout 1 . 返回菜单 endl;cout 0 . 继续查询 endl;couti;信息录入信息浏览信息查询信息修改信息删除i=1i=2i=3i=4i=5i=6退出清空主界面运行时的截图为:(2)详细设计1信息录入模块 主要完成功能为:对学生信息录入的实现 主要流程介绍:进入信息录入模块以后,首先输入要录入学生的个数,然后根据系统提示,分别输入各个学生的信息,并存入磁盘文件。流程图: 学生信息录入系统输入录入学生人数输入学生通讯信息:学号 姓名 年龄 性别 寝室号 地址 电话 输出到磁盘文件:学号 姓名 年龄 性别 寝室号 地址 电话 主要使用技术与代码:1. 成员函数的定义方法函数类型 类名 作用域运算符 函数名()如:void student:luru()2. 向磁盘文件输出信息时的方式要采用追加的方式,即app,如果使用out的话,前面的内容都被最后一条覆盖了如:ofstream outfile(1.txt,ios:app);for(i=1;i=a;i+)cout请输入第i位学生的信息endl;coutnum;coutname;coutsex;coutage;coutadd;coutbedroom;couttelphone;outfileendlnum name sex age add bedroom telphone;outfile.close();信息录入时的截图为:2信息浏览模块 主要实现的功能:对学生通讯信息的输出显示或打印 主要流程介绍:首先要把磁盘文件的信息内容读入内存,然后把内存中的这些信息输出显示或打印 主要流程图为: 学生信息浏览系统输入信 息显示信息并将输出到文 本浏览 打印主要使用技术和代码: 文件输入流与判断文件是否已到结尾; 判断文件是否已到结尾用eof函数,如:while(!infile.eof() 当文件到达结尾时就停止while循环.。cout*信息浏览*numnamesexageaddbedroomtelphone;cout学号:numt姓名:namet性别:sext年龄:aget住址:addt寝室:bedroomt电话:telphonenumnamesexageaddbedroomtelphone;char b20;cout请输入要查询的学生的姓名b;if(strcmp(b,name)=0) /字符串比较coutnum:numtname:nametsex:sextage:agetadd:addtbedroom:bedroomttelphone:telphoneendl;信息查询时运行的截图为:4信息删除模块主要实现功能:删除符合要求的学生的信息主要流程介绍:首先还是先把文件里的学生信息读入到内存,然后输入你要删除的学生的学号,进行比较,如果与用户输入的学号相等的话,则把这条信息输出显示,同时,还要定义一个输出文件,当用户输入的学号与内存中学生的学号不相等,就把这条信息输出到文本文件,也就是相等的不输出,不相等的全输出,这样就实现了对信息的删除。主要流程图如下所示: 学生信息删除系统信息输入内存输入删除学生学号比较学号是否相等不相等相等输出显示重新读入磁盘文件主要使用技术与代码: 输入信息与内存信息进行比较,以及信息的输入输出,及fstream应用。 代码如:cout请输入要删除的同学的学号n; ifstream infile(1.txt,ios:in);while(!infile.eof()infilenumnamesexageaddbedroomtelphone;if(n=num)cout你要删除的信息为:endl;coutnum:numtname:nametsex:sextage:agetadd:addtbedroom:bedroomttelphone:telphoneendl;ofstream outfile(1.txt,ios:out);if(n!=num)outfileendl num name sex age add bedroom telphone;信息删除运行时的截图为:5.信息修改模块 主要实现功能:对符合要求的学生信息进行修改 主要流程介绍:与信息的删除有些类似,先把文本文件读入到内存,然后输入要修改学生的学号,进行比较,如果与输入到内存中的学号相等的话,输出显示这条信息,同时还要定义一个输出文本文件,如果不相等的话,就输出到这个文本文件中去,然后再重新输入一条信息,把这条信息也追加到这个文本文件中去,这样就实现了信息的修改。主要流程图为: 学生信息修改系统信息输入内存输入修改学生学号比较学号是否相等不相等相等输出显示重新读入磁盘文件重新输入一条信息主要使用技术与代码: 输入信息与内存信息进行比较,以及信息的输入输出,及fstream应用 ,输入一条新信息并输出到文本文件。 主要代码如: ifstream infile(1.txt,ios:in);ofstream outfile(2.txt,ios:out);int m;cout请输入要修改的学生的学号:numnamesexageaddbedroomtelphone;cinm;if(m=num) cout学号:numt姓名:namet性别:sext年龄:aget住址:addt寝室:bedroomt联系电话:telphoneendl;if(m!=num)outfileendlnum name sex age add bedroom telphone;infile.close();outfile.close();ofstream aa(2.txt,ios:app);cout请输入新资料endl;coutnum;coutname;coutsex;coutage;coutadd;coutbedroom;couttelphone;coutendl;aaendlnum name sex age add bedroom telphone;信息修改运行时的截图为:6.信息清空模块 主要实现功能:将学生信息全部清空 主要流程介绍:打开一个输出文本文件,然后以覆盖方式输出”0”,把里面的内容覆盖掉,即清空了。 主要代码如下:void student:null()ofstream outfile(1.txt,ios:out);outfile0;cout已清空endl;(3)调试及问题解决 1.当在类外面直接调用类的数据成员时,会出现错误,这是因为类具有封装性,它的数据成员是私有的,类外的函数不能调用它,只能通过类本身的成员函数来调用它。 2.有时在用strcmp函数进行字符串比较的时候,系统老是会警告错误,可能是没有写头文件#include,这样是不能直接用strcmp函数进行字符串比较的。3.在定义一个类时是不给它分配内存空间的,只有定义一个对象时才给它分配内存空间。4.有事后在用exit函数退出运行时会退不出去,这可能是玫有包含头文j件#inciude”stdlib.h”用面向对象的方法,做完该程序的心得:当用面向对象的方法做完该程序时,我才体会到它的好处,虽然还不能很好的运用,但是相信通过慢慢的学习,我会对类有更深的认识,并且能很好的将其运用于的程序设计的过程当中!三、 课程设计心得体会:通过三周的课程设计,使我对用C+进行程序开发有了更深的认识,并且使我知道做程序员是多么的困难,但是又使我坚持了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物联网工程技术高级考试模拟试题及复习策略指导
- 2025年煤气安全操作规范学习笔记与考试重点梳理
- 甲醇安全知识培训资料课件
- 优翼数学高中教学课件
- 甩头试验课件
- 湖北省黄石市两区联考2024-2025学年八年级下学期期末历史试题
- 2024-2025学年河北省邯郸市七年级(下)期末数学试卷(含答案)
- 用电安全知识培训班课件
- 生鲜食品安全知识培训课件
- 生物类基础知识培训课件
- 跨境出口策划方案(3篇)
- 小学数学教师进城选调考试试题及答案
- 慢性鼻窦炎诊断和治疗指南(2024)解读
- 2025至2030中国太阳能发电中的水泵行业发展趋势分析与未来投资战略咨询研究报告
- 厂内专用垃圾转运方案(3篇)
- 2025年地质勘探与资源矿产管理技术考试试题及答案
- 中小学教师中高级职称答辩备考试题及答案(50题)
- 2025年电信传输工程师职称考试试题
- 2024-2025学年人教版八年级数学上册《全等三角形》综合训练练习题(含答案解析)
- 肾内科常见病诊疗与管理
- 口腔医生岗前培训课件
评论
0/150
提交评论