操作系统课设收银员与顾客Word文档下载推荐.docx
- 文档编号:21328873
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:12
- 大小:99.39KB
操作系统课设收银员与顾客Word文档下载推荐.docx
《操作系统课设收银员与顾客Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统课设收银员与顾客Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
(3)对顾客进行P,V操作
P操作,对信号量xin_guke进行减1操作,判断结果是否大于等于0,如果大于等于0则进入付款队列,反之继续等待。
V操作,对信号量xin_guke进行加1操作,判断结果是否大于0,如果大于0,完成付款就结束,反之,从等待队列中摘下一个进程放入就绪队列中。
(4)控制流程:
用voidenque(linklist&
l,charname),chardeque(linklist&
l)这两个函数对顾客进行队列的插入和删除
创建收银员与顾客:
用voidsy()函数创建收银员相应的操作。
用voidgk()函数创建顾客相应的操作。
voidp()用来控制顾客的P操作。
Voidv()用来控制顾客的V操作。
收银员与顾客进程:
参见图3.4收银员—顾客的完整流程图。
N
图1.3.1P操作流程图
Y
图1.3.2V操作流程图
(4)构造收银员操作
当顾客付款后,收银员判断是否收到付款,判断成功后,付款成功,反之付款未成功。
图1.3.3收银员流程图
图1.3.4主函数流程图
1.4程序清单
#include<
iostream>
malloc.h>
usingnamespacestd;
intxin_guke;
//初值为收银人数,代表当前可以进入付款状态的人数
intguke,shouyin;
//顾客总人数,收银员总人数
typedefstructLNode//结点
{charname;
LNode*next;
}*Llist;
typedefstructa//链表
{LNode*front;
Llistlast;
}*linklist;
linklistdengdai,jiuxu;
voidinit(linklist&
l)
{l=(linklist)malloc(sizeof(a));
l->
front=l->
last=NULL;
}
voidenque(linklist&
l,charname)//将名为name的结点插入到L链表中
{
Llistp=(Llist)malloc(sizeof(LNode));
p->
name=name;
next=l->
front;
front=p;
//cout<
<
l->
front->
name;
chardeque(linklist&
l)//删除l链表中的结点
charname=NULL;
if(l->
front!
=NULL)
{
name=l->
l->
next;
}
//cout<
"
del"
name<
endl;
returnname;
voidshow(linklist&
l)//输出链表L的信息
while(l->
cout<
voidp()//在信号量上执行P操作:
当有多余收银员时,进入就绪队列,
{当满时,进入等待队列
xin_guke--;
if(xin_guke>
=0)
if(dengdai->
{
cout<
顾客"
dengdai->
到就绪队列"
enque(jiuxu,deque(dengdai));
}
}else{
收银员忙,调度顾客到等待队列~~~"
voidv()
xin_guke++;
if(xin_guke>
0)
if(jiuxu->
enque(dengdai,deque(jiuxu));
voidsy()
for(intj=shouyin;
j>
0;
j--)
jiuxu->
收钱完毕!
~~"
deque(jiuxu);
guke--;
voidgk()
intj=guke;
for(inti=j;
i>
i--)p();
sy();
for(i=j;
i--)v();
intmain()
cout<
请输入顾客数:
cin>
>
guke;
请输入收银员数:
shouyin;
if(shouyin>
xin_guke=shouyin;
/*
guke=8;
shouyin=xin_guke;
*/
init(dengdai);
//初始化等待队列
init(jiuxu);
//初始化就绪队列
for(inti=guke;
i--)
enque(dengdai,(char)(i+96));
//根据顾客数,将顾客插入等待队列
while(dengdai->
=NULL||jiuxu->
gk();
return0;
else
对不起,不能没有收银员!
1.5提交结果框图
1.用户输入客户数,如图1.5.1
图1.5.1输入顾客数
2.用户输入收银员数,如图1.5.2
图1.5.2输入收银员数
3.运行结果,如图1.5.3
图1.5.3运行结果
4.当输入数据有误时,如图1.5.4
图1.5.4出错时图
如图所示,可以输入任意数量的顾客数和收银员数。
当顾客数大于收银员数时,后面的顾客将到等待队列中等待前面的顾客付完款。
当前面的顾客将款付完后,后面的顾客进入就绪队列付款,付款后进入等待队列,表示付款完毕。
2总结
通过这次操作系统的课程设计,我研究了收银员与顾客的问题,进一步深入了解了同步与互斥机制。
比如什么是同步,什么是互斥,什么是信号量等等。
课程设计和平时的实验课比较起来有很大的差距,实验课只是将这一章的一部分内容练习操作一遍,而课程设计需要的是他们综合起来的东西,这要更难一些。
总体来说我认为操作系统这门学科在计算机科学当是中非常重要的。
他将我们学过的编程语言联系起来,可以说是第一次利用C++语言利用windows的API与系统进行“沟通”。
总而言之,这次操作系统的课程设计收获颇丰,复习了许多东西,也从新学会了许多东西。
我想这也许就是课程设计的最终目的吧。
3参考文献
[1]刘振安、刘燕君著.《C++程序设计课程设计》.北京:
机械工业出版社,2004
[2][美]AbrahamSilberschatz,PeterBaerGalvin,GregGagne著.郑扣根译.操作系统概念(第六版).北京:
高等教育出版社,2004
[3]陈向群,向勇等.Windows操作系统原理(第二版).北京:
机械工业出版社,2004.
[4]宗大华、宗涛、陈吉人编著.《操作系统》人民邮电出版社,2011.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 收银员 顾客
![提示](https://static.bdocx.com/images/bang_tan.gif)