课程设计理发师系统Word下载.docx
《课程设计理发师系统Word下载.docx》由会员分享,可在线阅读,更多相关《课程设计理发师系统Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
主要模块:
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:
星期五上午8:
00-12:
00下午13:
00-17:
第20周星期一上午8:
00
星期二下午14:
00-18:
目录
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"
endl;
cin>
>
opendoor;
while(opendoor!
='
y'
)
{
cout<
对不起,理发店还没有开门!
}
理发店开门营业!
这个功能的实现是用了一个循环,当询问是否开始营业是,用户有两个选择,一个是,一个否,当选择是时,输出“理发店开门营业!
”程序跳出该循环进入下一个功能;
当选择否时,输出“对不起,理发店还没有开门”然后继续询问是否营业。
3.2建立一个理发类
classlifa
{public:
lifa(inti){ii=i;
}
voidlifashi();
private:
intii;
};
建立理发类的作用就是要在主函数中显得更简洁明了,不至于觉得繁琐。
使用更方便,也方便改动程序。
3.3理发功能模块
voidlifa:
:
lifashi()
{intc=3;
charjixu,p;
while(ii<
=0)
{cout<
没有顾客来理发,理发师坐在沙发上休息"
endl<
请输入来的顾客数,输入0表示没有顾客来:
ii;
while(ii>
0)
{for(count=0;
count<
=2;
count++)
{
customers++;
第"
customers<
个顾客到来了。
if(work1==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待
{
if(w<
c)//判断是否有空沙发
{
cout<
有"
c-w<
张空沙发,顾客坐下等待。
w++;
}
else
cout<
没有空沙发,顾客离开。
}
A理发师为第"
个顾客理发。
work1=1;
if(work2==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待
c)//判断是否有空沙发
B理发师为第"
个顾客理发"
work2=1;
if(work3==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待
把空沙发,顾客坐下等待。
C理发师为第"
work3=1;
if(work1==1)
A理发完成。
work1=0;
//理发完成,理发师空闲
finish++;
//理发完人数加1
if(work2==1)
B理发完成。
work2=0;
}
if(work3==1)
C理发完成。
work3=0;
//理发完人数加
if(finish>
2)//完成为3个人理发的任务,询问理发师是否继续工作
已经为"
finish<
位顾客理发了,还有"
w<
个顾客在等待,是否继续工作?
cin>
jixu;
if(jixu=='
n'
{cout<
谢谢光临!
exit(0);
}
if(w>
0)//看看是否有人在等待理发
位顾客等待,A理发师继续为等待的第一位顾客理发"
w--;
//有则进入工作状态
位顾客等待,B理发师继续为等待的第二位顾客理发"
//有则进入工作状态
位顾客等待,C理发师继续为等待的第三位顾客理发"
//有则进入工作状态
}}}
A将等待的顾客理发完成。
B将等待的顾客理发完成。
C将等待的顾客理发完成。
位顾客理发了,还有0个顾客在等待,是否继续工作?
p;
if(p=='
{jixu=p;
{jixu=p;
这是理发类中定义的一个控制理发师理发的函数。
这里用了两个循环嵌套,中间小的一层是控制顾客来的数目,当有顾客来访,就开始往下执行,判断理发师是否有空,如果有空,就进行理发,若没有空,就判断是否有空闲沙发可以让顾客等待,若果有空闲沙发,则顾客等待,若没有空闲沙发,顾客就离开理发店。
理发完成就显示理发完成,完成数就加一,如果理发完成数大于三个人,就输出理发完成的状态和等待的顾客数。
询问是否继续理发,如果否,则退出程序,如果是,则先为等待的顾客理发,完成后输出已完成。
由于整个模块是由一个大的模块控制循环,所以你选择继续,则会又继续重复上面的功能,知道你选择退出程序。
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<
iostream>
usingnamespacestd;
if(work2==1)//判断是否正为顾客理发,是则新来顾客等待,否则不用等待
{cout<
w++;
cout<
{cout<
work3=1;
voidmain()
{intii;
~~~~~~~欢迎光临晶晶的理发店~~~~~~~"
理发店内总共有3张沙发。
输入有无顾客上门(1~9),0表示没有顾客上门:
lifal(ii);
l.lifashi();
7.2参考文献
[1]郑莉等.C++语言程序设计(第四版)[M].北京:
清华大学出版社,201110(5)
[2]汤小丹.计算机操作系统(第三版)[M].西安:
西安电子科技大学出版社,201111(39)
8.评分表
计算机与通信学院课程设计评分表
课程名称:
计算机操作系统
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期: