基础强化训练餐厅预订管理的设计与实现.docx
- 文档编号:9685880
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:22
- 大小:58.73KB
基础强化训练餐厅预订管理的设计与实现.docx
《基础强化训练餐厅预订管理的设计与实现.docx》由会员分享,可在线阅读,更多相关《基础强化训练餐厅预订管理的设计与实现.docx(22页珍藏版)》请在冰点文库上搜索。
基础强化训练餐厅预订管理的设计与实现
学号:
0120810340631
课程设计
课程名称
基础强化训练
设计题目
餐厅预订管理的设计与实现
班级
0806班
姓名
张军
指导教师
闵联营
2010
年
7
月
7
日
计算机基础强化训练任务书
学生姓名:
张军专业班级:
计算机0806
指导教师:
闵联营工作单位:
计算机科学与技术学院
题目:
餐厅预订管理的设计与实现
初始条件:
理论:
学完计算机基础知识,掌握C++语言编程基础和VC开发平台的使用。
实践:
计算机科学系实验中心提供计算机及软件开发环境。
要求完成的主要任务:
(1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。
(2)系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。
要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。
至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。
(3)编制好程序后,设计若干测试用例,上机测试所设计的程序。
(4)设计报告按格式要求书写。
设计报告正文的内容应包括:
1)系统描述包括问题说明、数据需求和功能需求。
2)系统设计包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。
3)系统测试包括测试用例的描述、测试方法和测试结果。
4)设计的特点、不足、收获和体会。
时间安排:
1、第19周(7月5日至7月9日)完成。
2、7月9日8:
00到计算机学院实验中心(三楼)检查程序、交课程设计报告、源程序(CD盘)。
指导教师签名:
2010年6月30日
系主任(或责任教师)签名:
2010年6月30日
一、系统描述
利用所学的C++知识来实现餐厅座位的预订,初步设计座位号、姓名、联系电话、日期等四部分信息。
实现预订座位、修改预订座位、删除预订座位、查询预订座位、输出所以预订座位信息等功能,主要涉及链表的外存存放,文件操作,实际上做的是一个数据库系统的底层。
二、系统设计
我设计的这个座位预订系统管理分为四类信息的调查,即:
座位号、姓名、联系电话、日期,日期可有电脑自动生成。
首先必须做个数据库系统底层来预存所有的座位信息,这样方便后面的调用,我参照了C++课本第12章的内容先做了这个准备工作,之后就是利用链表的外存存放和文件操作,实现座位的预定、修改、删除和查询。
2.1内存数据结构设计
Typedefstructseat
{
boolrightToInput(stringno,stringname,stringtel);
boolisDigital(stringstr);
voidbook();//预订
voidmodification();//修改
voiddeleteRecord();//删除
voidselect();
voidreadFile();
voidwriteFile();
voidprintMenu();
boolisAlreadyBook(stringno);//查询是否已经被预订
}
2.2代码设计
#include
#include
#include
#include
#include
usingnamespacestd;
boolrightToInput(stringno,stringname,stringtel);
boolisDigital(stringstr);
voidbook();//预订
voidmodification();//修改
voiddeleteRecord();//删除
voidselect();
voidreadFile();
voidwriteFile();
voidprintMenu();
boolisAlreadyBook(stringno);//查询是否已经被预订
stringgetLocalTime();
intstringToInt(stringnum);//字符串转换为int类型
voidprintAlreadyBook();
voidinit();//初始化数据表
classseat{
private:
stringno,name,tel,date;//私有字段,座位号,姓名,电话,日期
public:
voidsetNo(stringno);
stringgetNo();
voidsetName(stringname);
stringgetName();
voidsetTel(stringtel);
stringgetTel();
voidsetDate(stringdate);
stringgetDate();
};
seatmyseat[200];//全局对象数组,大小为200个座位
voidseat:
:
setNo(stringno)
{
this->no=no;
}
stringseat:
:
getNo()
{
returnthis->no;
}
voidseat:
:
setName(stringname)
{
this->name=name;
}
stringseat:
:
getName()
{
returnthis->name;
}
voidseat:
:
setTel(stringtel)
{
this->tel=tel;
}
stringseat:
:
getTel()
{
returnthis->tel;
}
voidseat:
:
setDate(stringdate)
{
this->date=date;
}
stringseat:
:
getDate()
{
returnthis->date;
}
voidbook()//预订
{
cout<<"请输入:
座位号(1-200之间的整数)姓名(中文或者英文均可)电话(纯数字,7-11位)(中间使用空格隔开)"< stringno,name,tel,date; cin>>no>>name>>tel; date=getLocalTime(); /*检查输入的合法性*/ if(! rightToInput(no,name,tel)) { cout<<"输入数据不合法"< } else { if(isAlreadyBook(no)) { cout<<"已经被预订,无法预定"< } else { intNo=stringToInt(no); myseat[No].setNo(no); myseat[No].setName(name); myseat[No].setTel(tel); myseat[No].setDate(date); writeFile();//写入文件 cout<<"预订成功"< } } } boolisDigital(stringstr)//判断字符串是否为纯数字 { for(inti=0;i { if((str.at(i)>'9')||(str.at(i)<'0')) { returnfalse; } } returntrue; } boolrightToInput(stringno,stringname,stringtel)//判断输入是否合法 { if(! isDigital(no)||! isDigital(tel))//座位号和电话非纯数字 { cout<<"座位号或者电话号码非纯数字! "< returnfalse; } intNo=stringToInt(no); if(No<1||No>200)//座位号不在范围内 { cout<<"座位号不在0-200之间"< returnfalse; } if(name.size()<1||name.size()>10)//名字太长或者太短 { cout<<"名字的长度必须在1-10个字符或者汉字之间"< returnfalse; } if(tel.size()<7||tel.size()>11)//电话太短或者太长 { cout<<"电话号码长度必须在7-11之间"< returnfalse; } returntrue; } stringgetLocalTime()//获取本地时间 { structtm*lt; time_tt; t=time(NULL); lt=localtime(&t); stringresult=""; charyear[5],month[5],day[5],hour[5],minute[5],second[5]; ltoa((lt->tm_year)+1900,year,10); ltoa((lt->tm_mon)+1,month,10); ltoa((lt->tm_mday),day,10); ltoa((lt->tm_hour),hour,10); ltoa((lt->tm_min),minute,10); ltoa((lt->tm_sec),second,10); result+=year; result+="-"; result+=month; result+="-"; result+=day; result+="_"; result+=hour; result+=": "; result+=minute; result+=": "; result+=second; returnresult; } boolisAlreadyBook(stringno)//判断指定的座位号是否已经被预订 { intNo=stringToInt(no); if(myseat[No].getNo()=="0") { returnfalse;//没有被预订,可以预订 } else { returntrue; } } intstringToInt(stringnum)//字符串转换为整型 { constchar*ch=num.c_str(); intnumber=atoi(ch); returnnumber; } voidmodification()//修改 { cout<<"修改前必须查询出你要修改的座位号,请输入座位号: "< stringno; cin>>no; if(! isDigital(no)) { cout<<"输入不合法"< return; } else { intNo=stringToInt(no); if(No<1||No>200) { cout<<"输入不合法,1-200之间的整数"< return; } if(myseat[No].getNo()=="0") { cout<<"该座位号未被预订! "< return; } else { /*把原来的座位信息置为空*/ myseat[No].setNo("0"); myseat[No].setName("0"); myseat[No].setTel("0"); myseat[No].setDate("0"); cout<<"请输入您要修改的座位号、姓名、电话: "< stringno,name,tel; cin>>no>>name>>tel; if(! rightToInput(no,name,tel)) { cout<<"输入不合法"< } else { intindex=stringToInt(no);//座位号的整数值 myseat[index].setNo(no); myseat[index].setName(name); myseat[index].setTel(tel); myseat[index].setDate(getLocalTime()); writeFile();//写文件 } } } } voiddeleteRecord()//删除 { cout<<"输入你要删除的已预订的座位号: "< stringno; cin>>no; if(! isDigital(no)) { cout<<"输入不合法"< return; } else { intNo=stringToInt(no); if(No<1||No>200) { cout<<"输入不合法,1-200之间的整数"< return; } if(myseat[No].getNo()=="0") { cout<<"该座位号未被预订! "< return; } else { /*置为空*/ myseat[No].setNo("0"); myseat[No].setName("0"); myseat[No].setTel("0"); myseat[No].setDate("0"); writeFile();//写入文件 cout<<"删除成功! "< return; } } } voidselect()//查询 { cout<<"输入你要查找的已预订的座位信息"< stringno; cin>>no; if(! isDigital(no)) { cout<<"输入不合法"< return; } else { intNo=stringToInt(no); if(No<1||No>200) { cout<<"输入不合法,1-200之间的整数"< return; } if(myseat[No].getNo()=="0") { cout<<"该座位号未被预订! "< return; } else { cout<<"找到信息如下: "< cout<<"********************************"< cout<<"座位号姓名联系电话日期"< cout< cout<<"********************************"< return; } } } voidreadFile()//读取文件 { ifstreamfin("data.txt"); if(! fin) { cout<<"文件打开失败,无法读取文件! "< return; } else { inti=0; while(! fin.eof())//读取文件数据到全局数组myseat[] { stringno,name,tel,date; fin>>no>>name>>tel>>date; myseat[i].setNo(no); myseat[i].setName(name); myseat[i].setTel(tel); myseat[i].setDate(date); i++; } } fin.close(); } voidwriteFile()//写文件 { ofstreamfout("data.txt"); if(! fout) { cout<<"文件打开失败"< return; } inti=0; while(i<200) { fout< i++; } fout.close(); } voidprintAlreadyBook()//输出所有已经预订的座位 { inti=0; cout<<"********************************"< cout<<"座位号姓名联系电话日期"< while(i<200) { if(myseat[i].getNo()! ="0") cout< i++; } cout<<"********************************"< } voidprintMenu()//打印菜单 { cout<<"菜单如下(如果你是第一次使用该程序,请选择10来初始化数据文件): "< cout<<"1: 预订座位"< cout<<"2: 修改预订的座位"< cout<<"3: 删除预订的座位"< cout<<"4: 查询预订的座位"< cout<<"5: 输出所有已经预订的座位信息"< cout<<"10: 初始化数据表"< cout<<"请输入你的选择: "< stringchoice; cin>>choice; if(choice=="1") { book(); } elseif(choice=="2") { modification(); } elseif(choice=="3") { deleteRecord(); } elseif(choice=="4") { select(); } elseif(choice=="5") { printAlreadyBook(); } elseif(choice=="10") { init(); writeFile(); readFile(); cout<<"初始化完毕! "< } else { cout<<"输入错误! "< } } voidinit()//初始化数据文件,置为空 { for(inti=0;i<200;i++) { myseat[i].setNo("0"); myseat[i].setName("0"); myseat[i].setTel("0"); myseat[i].setDate("0"); } } intmain() { readFile(); while (1) { printMenu(); } return0; } 2.3输入/输出设计 通过输入流ifstream/输出流ofstream加载和存储文件,将seat.txt读取文件或写入文件。 三、系统测试 3.1初始化数据表 3.2预定座位 3.3修改预订的座位 3.4删除预订的座位 3.5查询预订的座位 3.6输出所有已经预订的座位信息(1个例子) 四、设计的特点、不足、收获和体会 这次基础强化训练的课程设计对于我们来说,有一定的难度。 因为他要求我们较完整的去实现一个比较可行的程序。 将其应用到实际的生活中,我的题目是餐厅预订管理的设计与实现,实际上就是平常的餐厅座位预订,只是这次利用程序进行编写显得更加的正式和完整。 首先我分析了题目的相关内容,在网上搜索了相关方面的资料,其实网上这方面广告比较多,基本上未得到什么帮助,只是了解到了餐厅订座位的具体操作过程而已。 初步设定了四方面调查信息: 姓名、电话、座位号、时间,然后有目的的进行编程,因为题目规定要实现数据的增加、删除、查询、修改等几部分的操作,最后各个方面逐个击破最终完成了整个程序,其中也经历了几次修改才得以完善。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 其实,此类问题还可以涉及更多的复杂情况,但是由于能力有限,不能够对那些复杂的情况处理好,所以只是挑选了一些简单的方面进行了编程,所以本质上说此程序还不具有大型程序的规模,也让我了解到了做大型程序的艰辛。 本科生课程设计成绩评定表 班级: 0806班 姓名: 张军 学号: 0120810340631 序号 评分项目 满分 实得分 1 学习态度认真、遵守纪律 20 2 设计结果 40 3 设计报告规范(包括设计图、设计代码) 40 总得分/等级 评语: 注: 最终成绩以五级分制记。 优(90-100分)、良(80-89分)、中(70-79分)、 及格(60-69分)、60分以下为不及格 指导教师签名: 2010年 月 日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础 强化 训练 餐厅 预订 管理 设计 实现