机房机位预定系统报告书.docx
- 文档编号:5899320
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:23
- 大小:158.61KB
机房机位预定系统报告书.docx
《机房机位预定系统报告书.docx》由会员分享,可在线阅读,更多相关《机房机位预定系统报告书.docx(23页珍藏版)》请在冰豆网上搜索。
机房机位预定系统报告书
机房机位预订系统设计报告书
一、需求分析
1、引言
由于机房在使用时存在着机位的查询、预订与退订的过程,这就使机房管理者在一定程度上需要对机房进行有效的信息化管理并且使用者在机房预订机位时会出现许多问题,所以设计了此项程序旨在帮助机房更好的管理机位,以及使机房管理信息化的同时便于机房使用者更有效的节约时间。
所以,从总体上来说,本次的机房机位预订系统对机房的管理、使用者自身的实际情况有着很大的意义。
2、简述题目需要解决的问题
设计一个机房机位预订系统,能够对机房的第二天的机位进行预订。
设某机房有40台机器,编号从1到40,从早上九点到晚上九点,两个小时为一个时间段,每次可预订第二天的某一个时间段。
(1)系统以菜单方式运行
(2)查询,根据输入时间,输出机位信息。
(3)机位预订,根据输入的时间输出是否有空机位,若有则进行预订(在该时段写入预订学生的信息),若无则提供最近时间段。
(4)撤销预订,根据输入的时间段、机器号撤销之前的预订机位。
输出预订,可将第二天的预订情况打印输出。
3、规定软件做什么
此款软件依据具体情况而定,有很大的实用性,所以软件在设计时充分地考虑了一些实际的情况并且做了有效的改进。
首先,软件在总体上要有系统以菜单方式运行,实现此项功能,采用了Display()函数作为菜单的输出,便于使用者清晰的选择所需的菜单。
其次,采用编号制的Switch()语句使用户选择菜单更加具体。
当用户选择查询时,系统由switch()语句进入Search()函数从而进行查询功能。
同理,程序也以此进行了预订、退订、退出系统等功能。
在实现以上功能的同时,增加了对用户姓名的录入,便于下一位用户更好的查询。
二、算法设计
1、机房机位预订系统的总程序结构如下图所示
2、总体程序中的函数调用机执行情况
3、各个执行函数的详细阐述
(1)主函数
voidmain()
{
ComListfan;
fan.CreatList();
fan.Display();
}
主函数中,先定义ComList类的类对象fan,再调用CreatList()函数和Display()函数分别执行对应的功能。
(2)类的创建
classComList
{
private:
Nod*head,*tail;
//intlen;
public:
ComList();
~ComList();
voidDisplay();
voidCreatList();
voidSearch();
voidBook();
voidQuit();
voidExit();
};
ComList:
:
ComList()
{
head=NULL;
tail=NULL;
//len=0;
}
ComList:
:
~ComList()
{
Nod*p;
while(head)
{
p=head;
head=head->next;
deletep;
}
}
ComList类的创建,在公有成员变量中定义了一系列的成员函数,包括菜单的输出、机位的查询、机位的预订以及程序的退出。
类中有构造函数、析构函数的表示,便于系统有效的管理程序—申请、释放内存空间。
在私有成员变量中用到了指针变量,使得程序中进行有效的链表创建。
(3)创建链表
voidComList:
:
CreatList()
{
Nod*p;
inti,j;
for(i=0;i<6;i++)
{
for(j=1;j<=n;j++)
{
p=newNode;
p->a=0;
p->num=j;
strcpy(p->name,"空位置");
p->next=NULL;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
}
Time[i].next=head;
}
}
链表的创建中,首先定义一个Nod型的指针*p,再创建一个新的空链表用于最后储存机位信息。
首先,进行了此链表的初始化,
(4)菜单列表
voidComList:
:
Display()
{
cout< cout<<"\t===========================================\n"; cout<<"\t|★机房机位预约管理★\n"; cout<<"\t===========================================\n"; cout<<"\t-------------------------------------------\n"; cout<<"\t|1: 查询|\n"; cout<<"\t--------------------------------------------\n; cout<<"\t2: 预定|\n"; cout<<"\t-------------------------------------------\n"; cout<<"\t|3: 退订|\n"; cout<<"\t-------------------------------------------\n"; cout<<"\t|4: 退出|\n"; cout<<"\t-------------------------------------------\n"; cout<<"\t请选择操作类型(1-5): "; intc;cin>>c; cout< switch(c) { case1: Search();break; case2: Book();break; case3: Quit();break; case4: Exit();break; default: cout<<"\n\t\t输入有误! ! ! \n"; Display(); break; } } 本程序实行了菜单功能,把每一项功能用标号1、2、3、4来选择,增加了程序的层次感和条理性。 (5)机位查询 voidComList: : Search() { inttime,count=0; Nod*p; charc; cout<<"\t===========================================\n"; cout<<"\t|机位查询|\n"; cout<<"\t===========================================\n"; cout<<"\t输入时间(9-20): "; cin>>time; while(time<9||time>20) { cout<<"\t输入时间不在预定范围内! \n"; cout<<"\t请重新输入时间(9-20): "; cin>>time; } p=Time[(time-9)/2].next; while(count! =n) { if(p->a) cout<<"\t座位号: "< 该客户是: "< else cout<<"\t座位号: "< p=p->next; count++; } cout<<"\t是否继续查询? Y/N? "; cin>>c; if(c=='Y'||c=='y') Search(); else Display(); } 机位查询功能,首先,输入所需查询的时间(9-20),因为两个小时为一个时间段,所以有6个时段并且规定了每个时段有40个机位。 当输入时间超过所在时间段则程序报错,定义了Nod型的Time[]数组,便于对新建的链表进行赋值,采用了count计数变量以次查找所在时间段的机位预订情况。 (6)机位预订 voidComList: : Book() { inttime,i; charc; Nod*p; cout<<"\t===========================================\n"; cout<<"\t|机位预定|\n"; cout<<"\t===========================================\n"; cout<<"\t输入您要预定的时间(9-20): "; cin>>time; while(time<9||time>20) { cout<<"\t输入时间不在预定范围内! \n"; cout<<"\t请重新输入时间(9-20): "; cin>>time; } p=Time[(time-9)/2].next; intcount=0; while(count! =n) { if(p->a==false) { p->a=true; cout<<"\t请输入你的名字: "; cin>>p->name; cout<<"\t预定成功! \n\t座位号是: "< computernum[(time-9)/2]--; Display(); break; } else { p=p->next; count++; continue; } } if(count==n) { cout<<"\t对不起! 该时间段没有可预订的电脑! \n"< for(i=(time-9)/2+1;i<6;i++) if(computernum[i]>0) cout<<"可以提供的空闲时段为: "< } } 机位预订,首先采用了菜单选项规定了输入时间的选择,再次调用了链表和计数变量,调用布尔常量判断程序是否继续预订,当没有机位可以预订的情况下,系统可以提供最近有机位的时间段,便于用户选择。 (7)机位退订 voidComList: : Quit() { inttime,count=0,i; Nod*p; cout<<"\t===========================================\n"; cout<<"\t|机位退订|\n"; cout<<"\t===========================================\n"; cout<<"\t输入你的退订的时间(9-20): "; cin>>time; while(time<9||time>20) { cout<<"\t输入的时间有误! \n"; cout<<"\t请重新输入你要退订的时间(9-20): "; cin>>time; } cout<<"\t输入你座位号: "; cin>>i; p=Time[(time-9)/2].next; while(count! =n) { if(count==i-1) { p->a=false; strcpy(p->name,"空位置"); cout<<"\t退订成功! \n\t"; computernum[(time-9)/2]++; cout< Display(); break; } else { p=p->next; count++; continue; } } cout<<"\t退订成功! \n"; Display(); } 机位退订,依次寻找所需退订的时段中的机器编号,找到后的用户名用空位置进行覆盖。 然后,机器的编号数组本身在该时段中自加1,这样就把机位退订了。 (8)退出 voidComList: : Exit() { cout<<"\n\n\n\n\n\n\t\t\t谢谢您的使用\n\n\n\n\n\n\n"; } 3、课程设计任务中各项要求的实现程度 在本次课程任务中,实现了系统以菜单方式运行查询,根据输入时间,输出机位信息。 机位预订,根据输入的时间输出是否有空机位,若有则进行预订(在该时段写入预订学生的信息),若无则提供最近时间段。 撤销预订,根据输入的时间段、机器号撤销之前的预订机位。 输出预订,可将第二天的预订情况打印输出。 首先,系统以菜单的方式运行程序,从图1中可以看出,系统的功能包括了查询机位、预订机位、退订机位以及最后程序的退出。 在运行机位查询这个功能时系统自动调用Display()的类的成员函数,通过它来显示系统的菜单,便于使用者能更好的使用它,这个函数的实现依赖与C++的基础功能。 其次,图2中有打印预订列表便于用户更好地查清所在时间段的机位使用人数和未被预订的情况,但是此处没用文件的输出打印预订列表。 最后,其他几项程序的要求完成的很好,预订时更是增加了用户姓名的输入,便于机房机位管理者能更好地管理机房。 4、在此次程序设计中的一些新想法 在此次机房机位预订系统中,首先整体的设计思想是,通过一个链表来完成这个程序中最重要的机位信息的储存,从而达到设计中所要求的查询、预订、退订等功能,这就完全基于该链表。 在完成这个程序设计的一些基本功能后,还实现了对机位预订时用户姓名的增加,便于机房管理机位,也是对机位用户的有效制约,其次对预订时间段有了一个很好的规划,不是分为时段计时,而是以每小时为一个预订时段点,这样能更好地使用户节约时间。 此外,个人认为此系统还缺少了两个功能,即等待和等待机位查询,首先,当用户查询后没有机位时,还可以通过此事的等待功能实行等待。 而后,当等待也是一个数组,那么当等待结束后还可以查询等待人员列表,从而使得结尾预订更加人性化,也方便了机房的管理者和用户。 三、用户手册 1、用户在从本系统的菜单运行,按要求输入所要选择的选项 2、在数据输入方面,用户需严格按照程序中所提供的数据格式输入,否则程序有可能将进入死循环。 四、调试及测试 1、解决问题 在程序运行时,出现了很多的错误,尤其是当前一个成员函数的一个花括号丢失后,系统报错二没有解决的方法,最后上网查资料解决了改问题。 其次是对链表的设计和数组的管理,多次出现错误,最后完全解决了改问题。 2、程序运行截图 (图1,查询功能) (图2,打印次日输出) (图3,机位预订) (图4,预订后的查询) (图5,机位退订) (图6,系统退出) 五、小结 课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。 随着科学技术发展的日新月异,当代计算机应用在生活中可以说是无处不在。 因此作为本二十一世纪的大学生来说,掌握一些基本的软件开发技术是十分必要的。 回想起此次C++课程设计,至今我仍感慨颇多,自从拿到题目到最后完成整个编程,从理论得到时间,在整整的一个星期的时间里,可以说学得了很多的东西,同时不仅可以巩固以前所学的很多知识,而且学到了很多在书本上没有学到的很多知识。 通过了这次课程设计使我懂得了理论和实际相结合的重要性,只有理论是远远不够的,只有把所学的理论知识和实际情况结合起来,从而提高了自己的实际动手能力和独立思考能力这样才能真正的体会和认识它,才能活学活用。 在设计中遇到的问题,因为水平有限,难免会遇到这样那样的各种问题,同时在设计过程中发现了自己的不足之处: 对以前所学过的知识掌握不够牢靠,应变能力不是很好,比如对建立链表不是很熟悉。 通过了此次课程设计也使我对以前学过的知识有了一个巩固和加深的过程。 六、参考文献 [1]郑莉等编著《C++语言程序设计(第三版)》北京: 清华大学出版社 [2]郑莉等编著《C++语言程序设计(第三版)学生用书》北京: 清华大学出版社 [3]刘振安等编著《C++程序设计课程设计》机械工业出版社 [4]吴乃陵等编著《C++程序设计》北京: 高等教育出版社 [5]李春葆等编著《C++程序设计学习与上机实验指导》北京: 清华大学出版社 [6]范辉等编著《VisualC++6.0程序设计简明教程》高等教育出版社 [7]李龙澍《C++程序设计实训教程》北京: 清华大学出版社 [8]洪国胜等编著《C++Builder程序设计轻松上手》北京: 清华大学出版社 [9]宁正元《数据结构(c语言)》南京: 东南大学出版社。 2000年6月第1版 [10]严蔚敏等《数据结构(c语言版)》北京: 清华大学出版社,1997年4月第1版。 [11]胡学钢等《数据结构算法设计指导》北京: 清华大学出版社,1999年第1版。 [12]刘大有《数据结构》(面向21世纪课程教材)北京: 高等教育出版社。 2001年6月第1版。 [13]明日科技编著《VisualC++程序开发范例宝典》北京: 人民邮电出版社。 [14]游洪跃等编著《C++面向对象程序设计实验和课程设计教程》北京: 清华大学出版社.2009.2 合肥学院 计算机科学与技术系 课程设计报告书 2010~2011学年第二学期 课程 C++课程设计 课程设计名称 机房机位预订系统 专业班级 计算机科学与技术 (2)班 指导教师 张贯虹屠菁 2011年6月 附录: 机房机位预订系统源程序 #include #include #include structNod { intnum; boola; charname[20]; structNod*next; };//声明指针域的结构体类型 NodTime[6]={{0,1,"0",NULL},{0,1,"0",NULL},{0,1,"0",NULL},{0,1,"0",NULL},{0,1,"0",NULL},{0,1,"0",NULL}};//六个时间段的头结点 intcomputernum[6]={40,40,40,40,40,40};//定义一个机位编号数组,每两个时间段中共有40台电脑 constintn=40;//机房总共40台电脑 classComList//定义一个机位信息类 { private: Nod*head,*tail; public: ComList(); ~ComList(); voidDisplay(); voidCreatList(); voidSearch(); voidBook(); voidQuit(); voidExit(); }; ComList: : ComList()//构造函数 { head=NULL; tail=NULL; } ComList: : ~ComList()//析构函数 { Nod*p; while(head) { p=head; head=head->next; deletep; } } voidComList: : Display()//打印输出 { cout< cout<<"\t=====================================\n"; cout<<"\t|★机房机位预约管理★|\n"; cout<<"\t=====================================\n"; cout<<"\t—————————————————————\n"; cout<<"\t|1: 查询|\n"; cout<<"\t—————————————————————\n"; cout<<"\t|2: 预定|\n"; cout<<"\t—————————————————————\n"; cout<<"\t|3: 退订|\n"; cout<<"\t---------------------------------------------------------------\n"; cout<<"\t|4: 退出|\n"; cout<<"\t---------------------------------------------------------------\n"; cout<<"\t请选择操作类型(1-5): "; intc;cin>>c; cout< switch(c) { case1: Search(); break; case2: Book(); break; case3: Quit(); break; case4: Exit(); break; default: cout<<"\n\t\t输入有误! \n"; Display(); break; } } voidComList: : CreatList() { Nod*p; inti,j; for(i=0;i<6;i++) { for(j=1;j<=n;j++) { p=newNod; p->a=0; p->num=j; strcpy(p->name,"空位置"); p->next=NULL; if(head==NULL) head=p; else tail->next=p; tail=p; } Time[i].next=head; } } voidComList: : Search() { inttime,count=0; Nod*p; charc; cout<<"\t==========================================================\n"; cout<<"\t|机位查询|\n"; cout<<"\t==========================================================\n"; cout<<"\t输入时间(9-20): "; cin>>time; while(time<9||time>20) { cout<<"\t输入时间不在预定范围内! \n"; cout<<"\t请重新输入时间(9-20): "; cin>>time; } p=Time[(time-9)/2].next; while(count! =n) { if(p->a)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机房 机位 预定 系统 报告书