课程设计理发师系统.docx

上传人:b****6 文档编号:5375236 上传时间:2022-12-15 格式:DOCX 页数:22 大小:270.81KB
下载 相关 举报
课程设计理发师系统.docx_第1页
第1页 / 共22页
课程设计理发师系统.docx_第2页
第2页 / 共22页
课程设计理发师系统.docx_第3页
第3页 / 共22页
课程设计理发师系统.docx_第4页
第4页 / 共22页
课程设计理发师系统.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

课程设计理发师系统.docx

《课程设计理发师系统.docx》由会员分享,可在线阅读,更多相关《课程设计理发师系统.docx(22页珍藏版)》请在冰豆网上搜索。

课程设计理发师系统.docx

课程设计理发师系统

课程设计报告

课程名称计算机操作系统

课题名称理发师问题

专业

班级

学号

姓名

指导教师

2012年7月9日

湖南工程学院

课程设计任务书

 

课程名称计算机操作系统

课题理发师问题

专业班级

学生姓名

学号

指导老师

审批

 

任务书下达日期2012年6月21日

任务完成日期2012年7月9日

一、设计内容与设计要求

1.课程设计目的

全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C++语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。

进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和JAVA\C#语言编程等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。

2.课题题目

理发店有三个理发师,有三张沙发。

顾客来了理发师正忙可以坐在沙发上。

理发师理完发可以从沙发上叫醒顾客理发。

3.设计要求:

主要模块:

1、理发师进程模块

具有功能:

1、有顾客理发师理发2、没有顾客等待3、一个理发师只能理一个顾客4、友好提示5、最多同时理3个顾客5、退出本系统

2、顾客模块

具有功能:

1、友好提示2、理发师忙顾客等待3、理发师闲则顾客理发4、等待的顾客不能超过三个5、退出本系统

 

要求:

1)设计正确,方案合理。

2)界面友好,使用方便。

3)程序精炼,结构清晰。

4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。

5)实际操作过程中遇到的问题及解决方法:

设计总结及心得体会.

6)上机演示。

二、进度安排

第19周星期二晚上18:

00-22:

00

星期四晚上18:

00-22:

00

星期五上午8:

00-12:

00下午13:

00-17:

00

第20周星期一上午8:

00-12:

00

星期二下午14:

00-18:

00

 

目录

1系统需求分析1

2总体设计1

2.1总体设计图1

2.2各功能之间的调用关系2

2.3数据结构及数据库2

3详细设计3

3.1控制营业开始的模块3

3.2建立一个理发类3

3.3理发功能模块4

4.系统调试9

5使用说明10

5.1进入程序的友好界面10

5.2理发店营业界面11

5.3理发店有顾客来的服务界面11

5.4询问是否继续工作的界面12

5.5没有顾客来的界面12

5.6理发店没有营业的界面13

5.7退出程序的界面13

6心得体会14

7附录15

7.1源代码15

7.2参考文献15

8评分表21

1系统需求分析

主要由理发师,沙发和顾客组成,当顾客数为零时,理发师休息,当顾客来时,判定理发师是否空闲,如果空闲则理发师理发。

当顾客数超过理发师数时,理发师都忙碌,顾客则坐沙发休息,如果未理发的顾客数超过沙发数则顾客离开。

2总体设计

程序只有一个主体函数,用的是几个循环体来完成各功能任务。

(1)建立友好界面

(2)用第一个循环体实现本程序是否开始的功能。

(3)用第二个循环体实现理发师的理发功能。

(4)在第二个循环体内设置控制程序结束的语句,可根据用户需要而结束程序。

2.1总体设计图

图2.1总体设计图

2.2各功能之间的调用关系

(1)友好界面后面是一个控制程序是否开始的循环体,会询问用户是否开始程序。

如果用户选择是,就执行后面的程序,如果选择否,就输出“对不起,理发店还没营业”,然后再次询问是否选择营业。

(2)理发师的控制模块是由另一个循环模块控制的,当没有顾客光临时,就输出“没有顾客光临,理发师可以休息”。

当有顾客光临时,就开始继续运行下去,按照闲则服务,忙则等待,若等待人数超过三个就离开理发店的规则运行下去。

当服务人数超过三个,就询问是否还要继续服务。

2.3数据结构及数据库

classlifa//定义一个理发类,便于主程序调用

intc;//沙发数

intcustomers=0;//顾客数

intcount=0;//循环中用来计量的

intw=0;//等候理发的人数

intfinish=0;//已经理完发的人数

intwork1=0,work2=0,work3=0;//理发师是否在工作

charopendoor;//理发店是否开门接待顾客

intradom;//获取有无顾客数

 

3详细设计

3.1控制营业开始的模块

cout<<"是否营业?

y/n"<

cin>>opendoor;

while(opendoor!

='y')

{

cout<<"对不起,理发店还没有开门!

"<

cout<<"是否营业?

y/n"<

cin>>opendoor;

}

cout<

cout<<"理发店开门营业!

"<

cout<

这个功能的实现是用了一个循环,当询问是否开始营业是,用户有两个选择,一个是,一个否,当选择是时,输出“理发店开门营业!

”程序跳出该循环进入下一个功能;当选择否时,输出“对不起,理发店还没有开门”然后继续询问是否营业。

3.2建立一个理发类

classlifa

{public:

lifa(inti){ii=i;}

voidlifashi();

private:

intii;

};

建立理发类的作用就是要在主函数中显得更简洁明了,不至于觉得繁琐。

使用更方便,也方便改动程序。

3.3理发功能模块

voidlifa:

:

lifashi()

{intc=3;//沙发数

intcustomers=0;//顾客数

intcount=0;//循环中用来计量的

intw=0;//等候理发的人数

intfinish=0;//已经理完发的人数

intwork1=0,work2=0,work3=0;//理发师是否在工作

charjixu,p;

while(ii<=0)

{cout<<"没有顾客来理发,理发师坐在沙发上休息"<

cout<<"请输入来的顾客数,输入0表示没有顾客来:

"<

cin>>ii;

}

while(ii>0)

{for(count=0;count<=2;count++)

{

customers++;

cout<<"第"<

"<

if(work1==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待

{

if(w

{

cout<<"有"<

"<

w++;

}

else

cout<<"没有空沙发,顾客离开。

"<

}

else

{

cout<<"A理发师为第"<

"<

work1=1;

}

customers++;

cout<<"第"<

"<

if(work2==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待

{

if(w

{

cout<<"有"<

"<

w++;

}

else

cout<<"没有空沙发,顾客离开。

"<

}

else

{

cout<<"B理发师为第"<

work2=1;

}

customers++;

cout<<"第"<

"<

if(work3==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待

{

if(w

{

cout<<"有"<

"<

w++;

}

else

cout<<"没有空沙发,顾客离开。

"<

}

else

{

cout<<"C理发师为第"<

"<

work3=1;

}

}

if(work1==1)

{

cout<<"A理发完成。

"<

work1=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work2==1)

{

cout<<"B理发完成。

"<

work2=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work3==1)

{

cout<<"C理发完成。

"<

work3=0;//理发完成,理发师空闲

finish++;//理发完人数加

}

if(finish>2)//完成为3个人理发的任务,询问理发师是否继续工作

{

cout<<"已经为"<

y/n"<

cin>>jixu;

if(jixu=='n')

{cout<<"谢谢光临!

"<

exit(0);}

}

if(w>0)//看看是否有人在等待理发

{

cout<<"有"<

w--;

work1=1;//有则进入工作状态

if(w>0)//看看是否有人在等待理发

{

cout<<"有"<

w--;

work2=1;//有则进入工作状态

if(w>0)//看看是否有人在等待理发

{

cout<<"有"<

w--;

work3=1;//有则进入工作状态

}}}

if(work1==1)

{

cout<<"A将等待的顾客理发完成。

"<

work1=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work2==1)

{

cout<<"B将等待的顾客理发完成。

"<

work2=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work3==1)

{

cout<<"C将等待的顾客理发完成。

"<

work3=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

cout<<"已经为"<

y/n"<

cin>>p;

if(p=='y')

{jixu=p;}

if(p=='n')

{jixu=p;

cout<<"谢谢光临!

"<

exit(0);}

}

}

这是理发类中定义的一个控制理发师理发的函数。

这里用了两个循环嵌套,中间小的一层是控制顾客来的数目,当有顾客来访,就开始往下执行,判断理发师是否有空,如果有空,就进行理发,若没有空,就判断是否有空闲沙发可以让顾客等待,若果有空闲沙发,则顾客等待,若没有空闲沙发,顾客就离开理发店。

理发完成就显示理发完成,完成数就加一,如果理发完成数大于三个人,就输出理发完成的状态和等待的顾客数。

询问是否继续理发,如果否,则退出程序,如果是,则先为等待的顾客理发,完成后输出已完成。

由于整个模块是由一个大的模块控制循环,所以你选择继续,则会又继续重复上面的功能,知道你选择退出程序。

4.系统调试

(1)因为理发店的营业是持续的,在一个阶段完成后,怎么选择继续执行呢,这里我用了一个选择语句,然后利用循环不断地来完成这个过程。

(2)在顾客接受服务的过程中,有很多判断条件,以保证顾客的分类,到底是接受服务,还是等待,又或者是离开。

这个功能是利用很多if语句来完成的。

(3)这里用的类的调用,使得主函数变得简单,而在改动程序时也方便许多。

5使用说明

5.1进入程序的友好界面

图5.1友好界面

5.2理发店营业界面

图5.2营业界面

5.3理发店有顾客来的服务界面

图5.3有顾客来的服务界面

5.4询问是否继续工作的界面

图5.4询问是否继续工作的界面

5.5没有顾客来的界面

图5.5没有顾客来的界面

5.6理发店没有营业的界面

图5.6理发店没有营业的界面

5.7退出程序的界面

图5.7退出程序的界面

6心得体会

7.附录

7.1源代码

#include

usingnamespacestd;

classlifa

{public:

lifa(inti){ii=i;}

voidlifashi();

private:

intii;

};

voidlifa:

:

lifashi()

{intc=3;//沙发数

intcustomers=0;//顾客数

intcount=0;//循环中用来计量的

intw=0;//等候理发的人数

intfinish=0;//已经理完发的人数

intwork1=0,work2=0,work3=0;//理发师是否在工作

charjixu,p;

while(ii<=0)

{cout<<"没有顾客来理发,理发师坐在沙发上休息"<

cout<<"请输入来的顾客数,输入0表示没有顾客来:

"<

cin>>ii;

}

while(ii>0)

{for(count=0;count<=2;count++)

{

customers++;

cout<<"第"<

"<

if(work1==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待

{

if(w

{

cout<<"有"<

"<

w++;

}

else

cout<<"没有空沙发,顾客离开。

"<

}

else

{

cout<<"A理发师为第"<

"<

work1=1;

}

customers++;

cout<<"第"<

"<

if(work2==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待

{

if(w

{

cout<<"有"<

"<

w++;

}

else

cout<<"没有空沙发,顾客离开。

"<

}

else

{

cout<<"B理发师为第"<

work2=1;

}

customers++;

cout<<"第"<

"<

if(work3==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待

{

if(w

{cout<<"有"<

"<

w++;}

else

cout<<"没有空沙发,顾客离开。

"<

}

else

{cout<<"C理发师为第"<

"<

work3=1;

}

}

if(work1==1)

{

cout<<"A理发完成。

"<

work1=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work2==1)

{

cout<<"B理发完成。

"<

work2=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work3==1)

{

cout<<"C理发完成。

"<

work3=0;//理发完成,理发师空闲

finish++;//理发完人数加

}

if(finish>2)//完成为3个人理发的任务,询问理发师是否继续工作

{

cout<<"已经为"<

y/n"<

cin>>jixu;

if(jixu=='n')

{cout<<"谢谢光临!

"<

exit(0);}

}

if(w>0)//看看是否有人在等待理发

{

cout<<"有"<

w--;

work1=1;//有则进入工作状态

if(w>0)//看看是否有人在等待理发

{

cout<<"有"<

w--;

work2=1;//有则进入工作状态

if(w>0)//看看是否有人在等待理发

{

cout<<"有"<

w--;

work3=1;//有则进入工作状态

}}}

if(work1==1)

{

cout<<"A将等待的顾客理发完成。

"<

work1=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work2==1)

{

cout<<"B将等待的顾客理发完成。

"<

work2=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

if(work3==1)

{

cout<<"C将等待的顾客理发完成。

"<

work3=0;//理发完成,理发师空闲

finish++;//理发完人数加1

}

cout<<"已经为"<

y/n"<

cin>>p;

if(p=='y')

{jixu=p;}

if(p=='n')

{jixu=p;

cout<<"谢谢光临!

"<

exit(0);}

}

}

voidmain()

{intii;

charopendoor;

cout<<"~~~~~~~欢迎光临晶晶的理发店~~~~~~~"<

cout<<"理发店内总共有3张沙发。

"<

cout<

cout<<"是否营业?

y/n"<

cin>>opendoor;

while(opendoor!

='y')

{

cout<<"对不起,理发店还没有开门!

"<

cout<<"是否营业?

y/n"<

cin>>opendoor;

}

cout<

cout<<"理发店开门营业!

"<

cout<

cout<<"输入有无顾客上门(1~9),0表示没有顾客上门:

"<

cin>>ii;

lifal(ii);

l.lifashi();

}

7.2参考文献

[1]郑莉等.C++语言程序设计(第四版)[M].北京:

清华大学出版社,201110(5)

[2]汤小丹.计算机操作系统(第三版)[M].西安:

西安电子科技大学出版社,201111(39)

 

8.评分表

计算机与通信学院课程设计评分表

课程名称:

计算机操作系统

项目

评价

设计方案的合理性与创造性

设计与调试结果

设计说明书的质量

答辩陈述与回答问题情况

课程设计周表现情况

综合成绩

教师签名:

日期:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1