自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (14)
  • 收藏
  • 关注

空空如也

Shell脚本学习指南

Shell脚本学习指南

2015-08-01

Hadoop权威指南(第2版)

Hadoop权威指南

2015-08-01

Hadoop技术内幕:深入解析YARN架构设计与实现原理.pdf

Hadoop技术内幕:深入解析YARN架构设计与实现原理.pdf 不解释

2015-08-01

struts2标签api

struts2标签的api 用到的时候查一下吧 感觉挺好的

2014-10-21

正则表达式pdf正则表达式pdf正则表达式pdf

正则表达式pdf 啥也不说了 赠与有缘人

2011-04-27

[jQuery基础教程.(英文原版)]

Preface It began as a labor of love back in 2005 by John Resig, a JavaScript wunderkind who now works for the Mozilla Corporation. Inspired by pioneers in the ield such as Dean Edwards and Simon Willison, Resig put together a set of functions to make it easy to programmatically ind elements on a web page and assign behaviors to them. By the time he irst publicly announced his project in January 2006, he had added DOM modiication and basic animations. He gave it the name jQuery to emphasize the central role of inding, or "querying," parts of a web page and acting on them with JavaScript. In the few short years since then, jQuery has grown in its feature set, improved in its performance, and gained widespread adoption by some of the most popular sites on the Internet. While Resig remains the lead developer of the project, jQuery has blossomed, in true open-source fashion, to the point where it now boasts a core team of top-notch JavaScript developers, as well as a vibrant community of thousands of developers. The jQuery JavaScript Library can enhance your websites regardless of your background. It provides a wide range of features, an easy-to-learn syntax, and robust cross-platform compatibility in a single compact ile. What's more, hundreds of plug-ins have been developed to extend jQuery's functionality, making it an essential tool for nearly every client-side scripting occasion. Learning jQuery provides a gentle introduction to jQuery concepts, allowing you to add interactions and animations to your pages—even if previous attempts at writing JavaScript have left you bafled. This book guides you past the pitfalls associated with AJAX, events, effects, and advanced JavaScript language features, and provides you with a brief reference to the jQuery library to return to again and again.

2010-11-22

JavaScript征途源代码

本书是一本学习JavaScript语言的权威书籍,在遵循语言学习的特殊规律基础上精心选材,力争做到统筹、有序,在结构上体现系统性和完整性。同时还重点挖掘JavaScript基于对象的开发精髓及函数式编程两个技术核心。 本书内容全面,由浅入深,包括6篇21章,主要内容包括:JavaScript语言的基本特性,开发简单的JavaScript程序,JavaScript语法体系,数据、数据类型和变量,运算符和表达式,语句和结构,JavaScript函数, JavaScript对象,数组,字符串,使用正则表达式操纵字符串,客户端,控制文档结构的模型,JavaScript事件驱动模型,CSS,Cookie,XML和JSON,Ajax,深入JavaScript面向对象编程,深入JavaScript函数式编程,深入JavaScript动态化编程等。 本书适用于具有一定程序开发基础、准备学习JavaScript语言或希望提高JavaScript语言技巧的读者,还可作为相关培训班的教材。

2010-09-06

操作系统+磁盘调度算法

目录 目录 1 1.课程设计目的 2 1.1编写目的 2 2.课程设计内容 2 2.1设计内容 2 3.课程设计方案 3 3.1模块划分 3 3.2模块调用关系图 6 3.3子模块程序流程图 6 4.测试数据和结果 10 4.1测试数据 10 4.2测试结果 11 4.3测试抓图 11 5.参考文献 14 6.总结 15 6.1设计体会 15 6.2结束语 15 7.程序使用说明书 15 8.程序源代码 15 1.课程设计目的 1.1编写目的 本课程设计的目的是通过设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解。 2.课程设计内容 2.1设计内容 系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。 1、先来先服务算法(FCFS) 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。 2、最短寻道时间优先算法(SSTF) 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。 3、扫描算法(SCAN) 扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。 4、循环扫描算法(CSCAN) 循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。 3.课程设计方案 3.1模块划分 本系统划分为四个模块:先来先服务算法模块void FCFS(int array[],int m)、最短寻道时间优先算法模块void SSTF(int array[],int m)、扫描算法模块void SCAN(int array[],int m) 和循环扫描算法模块:void CSCAN(int array[],int m) 1 先来先服务算法模块:void FCFS(int array[],int m) 输入磁道号,按先来先服务的策略输出磁盘请求序列,求平均寻道长度,输出移动平 均磁道数。 主要代码:for(i=0,j=1;j<m;i++,j++) { sum+=abs(array[j]-array[i]); ave=(float)(sum)/(float)(m); } 2 最短寻道时间优先算法模块:void SSTF(int array[],int m) 将磁道号用冒泡法从小到大排序,输出排好序的磁道序列,输入当前磁道号,根据前 磁道在已排的序列中的位置,选择扫描的顺序,求出平均寻道长度,输出移动的平均磁道数。 主要代码:for(i=0;i<m;i++) /*使用冒泡法按从小到大顺序排列*/ for(j=i+1;j<m;j++) { if(array[i]>array[j]) { temp=array[i]; array[i]=array[j]; array[j]=temp; } } if(array[m-1]<=now) /*若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务*/ { for(i=m-1;i>=0;i--) cout<<array[i]<<" "; sum=now-array[0]; } else if(array[0]>=now) /*若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务*/ while((l>=0)&&(r<m)) /*当前磁道在请求序列范围内*/ { if((now-array[l])<=(array[r]-now)) /*选择与当前磁道最近的请求给予服务*/ { cout<<array[l]<<" "; sum+=now-array[l]; now=array[l]; l=l-1; } 3 扫描算法模块:void SCAN(int array[],int m) 将磁道号用冒泡法从小到大排序,输出排好序的序列,输入当前磁道号,选择移动臂的移动方向,根据当前磁道在已排的序列中的位置,选择扫描的顺序,求出平均寻道长度,输出移动的平均磁道数。 主要代码:if(d==0) /*选择移动臂方向向内,则先向内扫描*/ { for(j=l;j>=0;j--) { cout<<array[j]<<" "; /*输出向内扫描的序列*/ } for(j=r;j<m;j++) /*磁头移动到最小号,则改变方向向外扫描未扫描的磁道*/ { cout<<array[j]<<" "; /*输出向外扫描的序列*/ } sum=now-2*array[0]+array[m-1]; } else /*选择移动臂方向向外,则先向外扫描*/ { for(j=r;j<m;j++) { cout<<array[j]<<" "; /*输出向外扫描的序列*、 } for(j=l;j>=0;j--) /*磁头移动到最大号,则改变方向向内扫描未扫描的磁道*/ { cout<<array[j]<<" "; } sum=-now-array[0]+2*array[m-1]; } }ave=(float)(sum)/(float)(m); 4 循环扫描算法模块:void CSCAN(int array[],int m) 将磁道号用冒泡法从小到大排序,输出排好序的序列,输入当前磁道号,规定移动臂单向反复的从内向外移动,根据当前磁道在已排的序列中的位置,选择扫描的顺序,求出平均寻道长度,输出移动的平均磁道数。 主要代码:if(array[m-1]<=now) /*若当前磁道号大于请求序列中最大者,则直接将移动臂移动到最小号磁道依次向外给予各请求服务 */ { for(i=0;i<m;i++) cout<<array[i]<<" "; sum=now-2*array[0]+array[m-1]; } else if(array[0]>=now) /*若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务,此情况同最短寻道优先*/ { for(i=0;i<m;i++) cout<<array[i]<<" "; sum=array[m-1]-now; } for(j=0;j<r;j++) /*当扫描完最大号磁道,磁头直接移动到最小号磁道,再向外扫描未扫描的磁道*/ { cout<<array[j]<<" "; } sum=2*array[m-1]-now; } ave=(float)(sum)/(float)(m); 3.2模块调用关系图 3.3子模块程序流程图 FCFS算法流程图: SSTF算法流程图: SCAN算法流程图: CSCAN算法流程图: 4.测试数据和结果 4.1测试数据 1 先来先服务算法 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:100 2 最短寻道时间优先算法 (1)当前磁道号大于磁道序列中的最大的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:200 (2)当前磁道号小于磁道序列中的最小的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:0 (3)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:100 3 扫描算法 (1)当前磁道号大于磁道序列中的最大的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:200 (2)当前磁道号小于磁道序列中的最小的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:0 (3)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号(磁头向外)时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:100 (4)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号(磁头向内)时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:100 4 循环扫描算法 (1)当前磁道号大于磁道序列中的最大的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:200 (2)当前磁道号小于磁道序列中的最小的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:0 (3)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184 当前磁道号:100 4.2测试结果 1 先来先服务算法 平均寻道长度:55.3 2 最短寻道时间优先算法 (1)当前磁道号大于磁道序列中的最大的磁道号时 平均寻道长度:20.2 (2)当前磁道号小于磁道序列中的最小的磁道号时 平均寻道长度:27.5 (3)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号时 平均寻道长度:20.4 3 扫描算法 (1)当前磁道号大于磁道序列中的最大的磁道号时 平均寻道长度:20.2 (2)当前磁道号小于磁道序列中的最小的磁道号时 平均寻道长度:27.8 (3)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号(磁头向外)时 平均寻道长度:27.5 (4)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号(磁头向内)时 平均寻道长度:20.4 4 循环扫描算法 (1)当前磁道号大于磁道序列中的最大的磁道号时 平均寻道长度:38.6 (2)当前磁道号小于磁道序列中的最小的磁道号时 平均寻道长度:35.8 (3)当前磁道号大于磁道序列中的最小的磁道号且小于最大磁道号时 平均寻道长度:20.4 4.3测试抓图 1 输入磁道序列(0结束):55 58 39 18 90 160 150 38 184,输出序列: 2 选择先来先服务算法,得出结果: 3 选择最短寻道时间优先算法,输入当前磁道号100,得出结果: 4 选择扫描算法,输入当前磁道号100,选择向外移动,得出结果: 5 选择扫描算法,输入当前磁道号100,选择向内移动,得出结果: 6 选择循环扫描算法,输入当前磁道号100,得出结果: 7 选择退出: 5.参考文献 《计算机操作系统(修订版)》 汤子瀛 西安电子科技大学出版社 《操作系统教程》 方敏编 西安电子科技大学出版社 《操作系统实用教程(第二版)》 任爱华 清华大学出版社 《操作系统原理与实践教程》 周湘贞、曾宪权 清华出版社 《程序设计基础教程》 陈家骏 机械工业出版社 6.总结 6.1设计体会 本系统具有很强的健壮性,当输入错误数据类型时,系统提示用户输入的数据类型错误,让用户重新输入,保证系统的稳定性,不会因为用户的误操作而致使系统瘫痪;虽然是在dos状态下,但是本系统界面还是设计的比较漂亮的,具有比较好的交互性;对于软件中的重用代码,设计成一个函数,实现代码重用。本系统是在dos状态下进行编译执行的,没有图形化界面,可以设计出一个图形化界面,使用户操作更加简单,明了。 6.2结束语 通过此次课程设计,我对操作系统的基础知识了解得更透彻了,同时对磁盘调度的四种算法——先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)有了更深刻的理解和掌握,使我能够为磁盘调度选择适当的算法,提高CPU工作效率。设计过程中遇到的困难在老师和同学的帮助下顺利解决并通过了验收,我深刻认识到算法的逻辑性对程序的重要影响,算法的准确度对程序运行结果的重要影响,这对我以后在操作系统的学习中有极大帮助。 7.程序使用说明书 用户使用时请注意: 1、进入系统,用户根据提示依次输入磁道号,要结束时输入“0”,回车,输入磁盘号结束; 2、系统输出你输入的磁道序列,用户核对输入数据 3、系统显示系统算法菜单; 4、用户选择相应算法,回车; 5、系统要求输入当前磁道号,用户输入磁道号,回车; 6、系统输出磁头的扫描序列和平均寻道长度; 7、用户继续选择系统菜单中的算法; 8、当用户选择扫描算法时,需要输入磁道的寻道方向(1表示扫描磁道号大的方向,0表示扫描磁道号小的方向); 8.程序源代码 #include<stdio.h> #include<stdlib.h> #include<iostream.h> #include<math.h> #define maxsize 1000 /*********************判断输入数据是否有效**************************/ int decide(char str[]) //判断输入数据是否有效 { int i=0; while(str[i]!='\0') { if(str[i]<'0'||str[i]>'9') { return 0; break; } i++; } return i; } /******************将字符串转换成数字***********************/ int trans(char str[],int a) //将字符串转换成数字 { int i; int sum=0; for(i=0;i<a;i++) { sum=sum+(int)((str[i]-'0')*pow(10,a-i-1)); } return sum; } /*********************冒泡排序算法**************************/ int *bubble(int cidao[],int m) { int i,j; int temp; for(i=0;i<m;i++) //使用冒泡法按从小到大顺序排列 for(j=i+1;j<m;j++) { if(cidao[i]>cidao[j]) { temp=cidao[i]; cidao[i]=cidao[j]; cidao[j]=temp; } } cout<<"排序后的磁盘序列为:"; for( i=0;i<m;i++) //输出排序结果 { cout<<cidao[i]<<" "; } cout<<endl; return cidao; } /*********************先来先服务调度算法**************************/ void FCFS(int cidao[],int m) //磁道号数组,个数为m { int now;//当前磁道号 int sum=0; //总寻道长度 int j,i; int a; char str[100]; float ave; //平均寻道长度 cout<<"磁盘请求序列为:"; for( i=0;i<m;i++) //按先来先服务的策略输出磁盘请求序列 { cout<<cidao[i]<<" "; } cout<<endl; cout<<"请输入当前的磁道号:"; B: cin>>str; //对输入数据进行有效性判断 a=decide(str); if(a==0) { cout<<"输入数据的类型错误,请重新输入!"<<endl; goto B; } else now=trans(str,a); //输入当前磁道号 sum+=abs(cidao[0]-now); cout<<"磁盘扫描序列为:"; for( i=0;i<m;i++) //输出磁盘扫描序列 { cout<<cidao[i]<<" "; } for(i=0,j=1;j<m;i++,j++) //求平均寻道长度 { sum+=abs(cidao[j]-cidao[i]); ave=(float)(sum)/(float)(m); } cout<<endl; cout<<"平均寻道长度:"<<ave<<endl; } /**********************最短寻道时间优先调度算法********************/ void SSTF(int cidao[],int m) { int k=1; int now,l,r; int i,j,sum=0; int a; char str[100]; float ave; cidao=bubble(cidao,m); //调用冒泡排序算法排序 cout<<"请输入当前的磁道号:"; C: cin>>str; //对输入数据进行有效性判断 a=decide(str); if(a==0) { cout<<"输入数据的类型错误,请重新输入!"<<endl; goto C; } else now=trans(str,a); //输入当前磁道号 if(cidao[m-1]<=now) //若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务 { cout<<"磁盘扫描序列为:"; for(i=m-1;i>=0;i--) cout<<cidao[i]<<" "; sum=now-cidao[0]; } if(cidao[0]>=now) //若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务 { cout<<"磁盘扫描序列为:"; for(i=0;i<m;i++) cout<<cidao[i]<<" "; sum=cidao[m-1]-now; } if(now>cidao[0]&&now<cidao[m-1]) //若当前磁道号大于请求序列中最小者且小于最大者 { cout<<"磁盘扫描序列为:"; while(cidao[k]<now) //确定当前磁道在已排的序列中的位置,后面的算法都用到了,可以直接复制后少量修改,节省时间。 { k++; } l=k-1; r=k; while((l>=0)&&(r<m)) //当前磁道在请求序列范围内 { if((now-cidao[l])<=(cidao[r]-now)) //选择与当前磁道最近的请求给予服务 { cout<<cidao[l]<<" "; sum+=now-cidao[l]; now=cidao[l]; l=l-1; } else { cout<<cidao[r]<<" "; sum+=cidao[r]-now; now=cidao[r]; r=r+1; } } if(l==-1) //磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道 { for(j=r;j<m;j++) { cout<<cidao[j]<<" "; } sum+=cidao[m-1]-cidao[0]; } else //磁头移动到序列的最大号,返回内侧扫描仍未扫描的磁道 { for(j=l;j>=0;j--) { cout<<cidao[j]<<" "; } sum+=cidao[m-1]-cidao[0]; } } ave=(float)(sum)/(float)(m); cout<<endl; cout<<"平均寻道长度: "<<ave<<endl; } /*****************************扫描调度算法*******************************/ void SCAN(int cidao[],int m) //先要给出当前磁道号和移动臂的移动方向 { int k=1; int now,l,r,d; int i,j,sum=0; int a; char str[100]; float ave; cidao=bubble(cidao,m); //调用冒泡排序算法排序 cout<<"请输入当前的磁道号:"; D: cin>>str; //对输入数据进行有效性判断 a=decide(str); if(a==0) { cout<<"输入数据的类型错误,请重新输入!"<<endl; goto D; } else now=trans(str,a); //输入当前磁道号 if(cidao[m-1]<=now) //若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务,此情况同最短寻道优先 { cout<<"磁盘扫描序列为:"; for(i=m-1;i>=0;i--) cout<<cidao[i]<<" "; sum=now-cidao[0]; } if(cidao[0]>=now) //若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务,此情况同最短寻道优先 { cout<<"磁盘扫描序列为:"; for(i=0;i<m;i++) cout<<cidao[i]<<" "; sum=cidao[m-1]-now; } if(now>cidao[0]&&now<cidao[m-1]) //若当前磁道号大于请求序列中最小者且小于最大者 { while(cidao[k]<now) { k++; } l=k-1; r=k; cout<<"请输入当前移动臂的移动的方向 (1 表示向外 ,0表示向内) : "; cin>>d; if(d==0) //选择移动臂方向向内,则先向内扫描 { cout<<"磁盘扫描序列为:"; for(j=l;j>=0;j--) { cout<<cidao[j]<<" "; //输出向内扫描的序列 } for(j=r;j<m;j++) //磁头移动到最小号,则改变方向向外扫描未扫描的磁道 { cout<<cidao[j]<<" "; //输出向外扫描的序列 } sum=now-2*cidao[0]+cidao[m-1]; } else //选择移动臂方向向外,则先向外扫描 { cout<<"磁盘扫描序列为:"; for(j=r;j<m;j++) { cout<<cidao[j]<<" "; //输出向外扫描的序列 } for(j=l;j>=0;j--) //磁头移动到最大号,则改变方向向内扫描未扫描的磁道 { cout<<cidao[j]<<" "; } sum=-now-cidao[0]+2*cidao[m-1]; } } ave=(float)(sum)/(float)(m); cout<<endl; cout<<"平均寻道长度: "<<ave<<endl; } /************************循环扫描调度算法*****************************/ void CSCAN(int cidao[],int m) { int k=1; int now,l,r; int i,j,sum=0; int a; char str[100]; float ave; cidao=bubble(cidao,m); //调用冒泡排序算法排序 cout<<"请输入当前的磁道号:"; E: cin>>str; //对输入数据进行有效性判断 a=decide(str); if(a==0) { cout<<"输入数据的类型错误,请重新输入!"<<endl; goto E; } else now=trans(str,a); //输入当前磁道号 if(cidao[m-1]<=now) //若当前磁道号大于请求序列中最大者,则直接将移动臂移动到最小号磁道依次向外给予各请求服务 { cout<<"磁盘扫描序列为:"; for(i=0;i<m;i++) cout<<cidao[i]<<" "; sum=now-2*cidao[0]+cidao[m-1]; } if(cidao[0]>=now) //若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务,此情况同最短寻道优先 { cout<<"磁盘扫描序列为:"; for(i=0;i<m;i++) cout<<cidao[i]<<" "; sum=cidao[m-1]-now; } if(now>cidao[0]&&now<cidao[m-1]) //若当前磁道号大于请求序列中最小者且小于最大者 { cout<<"磁盘扫描序列为:"; while(cidao[k]<now) //单向反复地从内向外扫描 { k++; } l=k-1; r=k; for(j=r;j<m;j++) { cout<<cidao[j]<<" "; //输出从当前磁道向外扫描的序列 } for(j=0;j<r;j++) //当扫描完最大号磁道,磁头直接移动到最小号磁道,再向外扫描未扫描的磁道 { cout<<cidao[j]<<" "; } sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0]; } ave=(float)(sum)/(float)(m); cout<<endl; cout<<"平均寻道长度: "<<ave<<endl; } void main() { int a; int c; //菜单项 int cidao[maxsize]; int i=0,count; char str[100]; cout<<"请输入磁道序列(0结束):"<<endl; A:cin>>str; //对输入数据进行有效性判断 a=decide(str); if(a==0) { cout<<"输入数据的类型错误,请重新输入!"<<endl; goto A;//输入错误,跳转到A,重新输入 } else cidao[i]=trans(str,a); i++; while(cidao[i-1]!=0) { cin>>str; //对输入数据进行有效性判断 a=decide(str); if(a==0) cout<<"输入数据的类型错误,请重新输入!"<<endl; else { cidao[i]=trans(str,a); i++; } } count=i-1; //要访问的磁道数 cout<<"你输入的磁道序列为:"; for(i=0;i<count;i++) { cout<<cidao[i]<<" "; //输出磁道序列 } cout<<endl; while(1) { cout<<endl; cout<<"**********************************************"<<endl; cout<<"****** 系统菜单 ******"<<endl; cout<<"**********************************************"<<endl; cout<<"*** ***"<<endl; cout<<"** 1. 先来先服务 **"<<endl; cout<<"** **"<<endl; cout<<"** 2. 最短寻道时间优先 **"<<endl; cout<<"** **"<<endl; cout<<"** 3. 扫描调度 **"<<endl; cout<<"** **"<<endl; cout<<"** 4. 循环扫描 **"<<endl; cout<<"** **"<<endl; cout<<"** 5. 退出 **"<<endl; cout<<"*** ***"<<endl; cout<<"**********************************************"<<endl; cout<<"**********************************************"<<endl; G:cout<<"请选择算法:"; F:cin>>str; //对输入数据进行有效性判断 a=decide(str); if(a==0) { cout<<"输入数据的类型错误,请重新输入!"<<endl; goto F;//输入错误,跳转到F,重新输入 } else c=trans(str,a); if(c==5) break; if(c>5) { cout<<"数据输入错误!请重新输入"<<endl; goto G; } switch(c) { case 1: //使用FCFS算法 FCFS(cidao,count); break; case 2: //使用SSTF算法 SSTF(cidao,count); break; case 3: //使用SCAN算法 SCAN(cidao,count); break; case 4: //使用CSCAN算法 CSCAN(cidao,count); break; } } }

2010-07-28

图书管理和查询系统报告

图书管理和查询系统 一、设计题目和功能 题目:图书管理和查询系统 1.1系统功能 (1)图书信息的录入,出版社信息管理等; (2)图书的检索(包括按作者姓名、书名); (3)图书的租借(包括借书登记、限借数量控制、还书登记、过期罚款计算等); (4)借书证件的管理(包括办新证件) (5)系统设置(主要是不同类型证件的可借书的总量和借书时间等) (6)统计资料(包括惜出数量与库存数量的比例,各类图书数量与总数量的比例,热门图书统计数据等各种信息资料的统计); (7)帮助信息(包括对系统功能的说明、使用说明、使用注意事项以及系统的版权和版本信息等) 1.2实验目的 (1)培养综合应用PowerBuilder进行应用程序设计和解决实际问题的能力; (2)加深对PowerBuilder编程环境和编程方法的理解; (3)发挥各人的想像能力和分析能力,拓展思维空间; (4)掌握应用程序设计的基本方法; (5)巩固已经学到的编程技术,学会在编程中学习编程。 1.3.实验要求 1)按照应用程序设计的4个阶段进行,熟悉每个阶段需要解决的问题以及解决的方法; 2)使用SQL Server设计数据库和数据表,注意把握数据库的设计原则; 3)要求应用程序有菜单栏,操作方便; 4)强调一点:在借书输入证件ID时,首先检索校验证件的真伪。在借、还书时要显示本证件已借书的量和图书信息;在系统设置中可随机设置不同借书书证件(如教师和学生)的可借书数量和借书的时间。 5)应用程序界面和风格不作具体要求,各人按照自己的思路去做,发挥自己的创造。 二、实验内容 详细步骤 2.1 ER图的设计 2.2、数据库设计: 数据库的设计:创建数据库,数据库名user,在数据库里建表1~表4,表1 Bookinfo为存放图书信息表,表2 certificateinfo证件表为证件表,表3 LOAN 图书租借表,表4 SET系统设置表,表如下: 然后要完成的是数据库的设计: 1) 对图书信息表的设计: 表1 Bookinfo 2) 对出版社表的设计: 表2 certificateinfo 3) 对借阅证表的设计: 表3 LOAN 4)对借阅记录表的设计: 三、应用程序用户界面的设计 3.1 主界面 主界面上面包含了这个程序 3.2 新书入库 3.3 图书检索 3.4 借书管理 3.5还书管理 3.6 证件办理 3.7 系统设置 四、代码实现 1新书入库 根据BookInfo表中的信息,在加入信息的时候需要填写图书编号,书名,ISDN号,作者,出版日期等。在点击确认按钮时,和申请证件的一样,需要把必要的信息填上才能进行下一步操作,否则会提示并返回,正确的话系统会把该表中所填入的信息添加到BookInfo表中相应的栏中。 代码如下: 2图书检索 查找图书的功能比较简单,有按作者姓名查找,按书名查找。每个查找方式基本上都一样。 代码如下: 3借书管理 借书功能是整个系统的核心功能了,在借书的时候需要考虑到书号,借书号,所借书是不是存在,借后何时归还等问题,还是比较麻烦的。 代码如下: 4显示借书记录 这个功能还是比较简单的,支需要从数据库中调出借书的记录就可以了。 代码如下: 5还书管理 还书是系统的比较重要的功能,还书的时候还要检查借的该书是不是到了该还的时候没有还,如果没有在应还日期之前还书的话就提示。 代码如下: 6证件办理 图书证件的办理,需要把信息插入数据库中,需要填写的信息有图书证号,用户类型,以及姓名,班级。当必要的数据未被输入时会弹出窗口提示并重新进行操作,办理成功的话就把填写的信息加入CertificateInfo表中。 代码如下: 7系统设置 代码如下: 五、系统调试 六、心得体会

2010-07-28

uml随机点名系统详细设计

一、系统背景描述 5 1引言 5 2项目背景 5 3系统建模 6 4点名系统用例图 7 4.1系统管理员用例图: 7 4.2随机点名系统教师点名用例图: 8 4.3随机点名教师管理系统用例图: 9 4.4随机点名学生系统用例图: 10 4.5教师点名时序图: 11 4.6教师时序图: 11 4.7管理员时序图: 12 4.8信息添加子功能: 12 4.9信息删除子功能: 13 4.10信息修改子功能: 13 4.11随机点名教师系统类图: 13 5 点名系统用例规约 14 5.1考勤管理用例 14 5.2考勤管理用例: 15 5.3查询个人考勤记录用例规约 15 6数据流向图 15 7数据概念模型和描述 16 8.数据库描述 17 二、系统实现 17 1.系统流程图 17 2.主要数据结构 18 3.逻辑流程图 18 4.测试要点 19 5.用户界面设计说明 20 5.1 登录界面: 20 5.2教师界面 20 5.3管理员界面 21 5.4学生界面图 22 三、随机点名系统调试与运行 22 四、随机点名系统总结 23 五、附录 24

2010-06-17

计算机组成原理本科复习题2.rar

本科生期末试卷十一 一.选择题(每小题1分,共10分) 1.目前大多数集成电路生产中,所采用的基本材料为___a___。 A.单晶硅 B.非晶硅 C.锑化钼 D.硫化镉 2. 用16位字长(其中一位符号位)表示定点小数时,所能表示的数值范围是___c___。 A.0≤│N│≤1-2-(16+1) B.0≤│N│≤1-2-16 C.0≤│N│≤1-2-(16-1) D.0≤│N│≤1 3. 运算器虽有许多部件组成,但核心部件是___b___。 A.数据总线 B.算术逻辑运算单元 C.多路开关 D.累加寄存器 4. 某计算机字长32位,其存储容量为4MB,若按字编址,它的寻址范围是___a___。 A.0--1M B.0--4MB C.0--4M D.0-¬-1MB 5. 常用的虚拟存贮系统由___a___两级存贮器组成,其中辅存是大容量的磁表面存贮器。 A.主存-辅存 B.快存-主存 C.快存-辅存 D.通用寄存器-主存 6. 单地址指令中为了完成两个数的算术运算,除地址码指明的一个操作数以外,另一个数常需采用___c___。 A.堆栈寻址方式 B.立即寻址方式 C.隐含寻址方式 D.间接寻址方式 7. 为确定下一条微指令的地址,通常采用断定方式,其基本思想是___c___。 A.用程序计数器PC来产生后继微指令地址 B.用微程序计数器μPC来产生后继微指令地址 C.通过微指令顺序控制字段由设计者指定或由设计者指定的判别字段控制产生后继微指令地址 D.通过指令中指定一个专门字段来控制产生后继微指令地址 8. 描述PCI总线中基本概念不正确的句子是___c_d__。 A.PCI总线是一个与处理器无关的高速外围总线 B.PCI总线的基本传输机制是猝发式传送 C.PCI设备一定是主设备 D.系统中只允许有一条PCI总线 9. 为了使设备相对独立,磁盘控制器的功能全部转移到设备中,主机与设备间采用____a__接口。 A.SCSI B.专用 C.ESDI D.RISC 10. I/O标准接口SCSI中,一块主适配器可以连接___b___台具有SCSI接口的设备。 A.6 B.7 C.8 D.10 二.填空题(每小题3分,共24分) 1.IEEE754标准,一个浮点数由A___符号位___、阶码E、尾数M三个域组成。其中阶码E的值等于指数的B___真值___加上一个固定C___偏移量___。 2. 相联存储器不按地址而是按A___内容___访问的存储器,在cache中用来存放B___行地址表___,在虚拟存储器中用来存放C___页表快表___。 3. 指令操作码字段表征指令的A___操作特性和功能___,而地址码字段指示B___操作数地址___。微小型机中多采用C___二地址 单地址 0地址___混合方式的指令格式。 4. CPU从A___存储器___取出一条指令并执行这条指令的时间和称为B___取指周期___。由于各种指令的操作功能不同,各种指令的时间和是不同的,但在流水线CPU中要力求做到C___一致___。 5. 微型计算机的标准总线从16位的A___ISA___总线发展到32位的B___eisa___总线,又进一步发展到64位的C___pci___总线。 6. 显示适配器作为CRT和CPU的接口由A___刷新___存储器、B___显示___控制器、C___rombios___三部分组成。 7. 根据地址格式不同,虚拟存贮器分为A___页式___、B___段式___和C___段页式___三种。 8. CPU从主存取出一条指令并执行该指令的时间叫做A___取指周期___,它常用若干个B___机器周期___来表示,而后者又包含有若干个C___时钟周期___。 三.应用题 1.(11 分)图B11.1为某ALU部件的内部逻辑图,图中S0、S1为功能选择控制端,Cin为最低位的进位输入端,A(A1-A4)和B(B1-B4)是参与运算的两个数,F(F1-F4)为输出结果,试分析在S0,S1,Cin各种组合条件下输出F和输入A,B,Cin的算术关系。 图B11.1 2.(11分)设有两个浮点数x=2Ex×Sx,y=2Ey×Sy,Ex=(-10)2,Sx=(+0.1001)2,Ey=(+10)2,Sy=(+0.1011)2。若尾数4位,数符1位,阶码2位,阶符1位,求x+y=?并写出运算步骤及结果。 3.(11分)机字长32位,常规设计的存储空间≤32M,若将存储空间扩展到256M, 请提出一种可能方案。 4.(11分)今有4级流水线分别完成取值、指令译码并取数、运算、送结果四步操作, 今假设完成各步操作的时间依次为100ns,100ns,80ns,50ns。 请问:(1)流水线的操作周期应设计为多少? (2)若相邻两条指令发生数据相关,而且在硬件上不采取措施,那么第二条指令要推迟多少时间进行。 (3)如果在硬件设计上加以改进,至少需推迟多少时间? 5.(11分)画出PCI总线结构框图,说明HOST总线、PCI总线、LAGACY总线的功能。 6.(11分)若设备的优先级依次为CD-ROM、扫描仪、硬盘、磁带机、打印机,请用标 准接口SCSI进行配置,画出配置图。

2010-06-17

计算机组成原理本科复习题1

本科生期末试卷六 一. 选择题(每小题1分,共10分) 1. 完整的计算机应包括___d___。 A 运算器、存储器、控制器 ; B 外部设备和主机 ; C 主机和实用程序 ; D 配套的硬件设备和软件系统 ; 2. 用64位字长(其中1位符号位)表示定点小数时,所能表示的数值范围是___b___。 A [ 0,264 – 1 ] B [ 0,263 – 1 ] C [ 0,262 – 1 ] D [ 0,263 ] 3. 四片74181ALU和1片74812CLA器件相配合,具有如下进位传递功能___b___。 A 行波进位 ; B 组内先行进位,组间先行进位 ; C 组内先行进位,组间行波进位 ; D 组内行波进位,组间先行进位 ; 4. 某机字长32位,存储容量为 1MB,若按字编址,它的寻址范围是___c___。 A 0—1M B 0—512KB C 0—256K D 0—256KB 5. 某一RAM芯片,其容量为512×8位,除电源和接地端外,该芯片引出线的最小数目应是___d___。 A 23 B 25 C 50 D 19 6.堆栈寻址方式中,设A为通用寄存器,SP为堆栈指示器,MSP为SP指示器的栈顶单元,如果操作的动作是:(A)→MSP ,(SP)- 1 →SP ,那么出栈的动作应是___b___。 A (MSP)→A, (SP) + 1→SP ; B (SP) + 1→SP ,(MSP)→A ; C (SP) - 1→SP ,(MSP)→A ; D (MSP)→A ,(SP) - 1→SP ; 7.指令周期是指___c___。 A CPU从主存取出一条指令的时间 ; B CPU执行一条指令的时间 ; C CPU从主存取出一条指令加上CPU执行这条指令的时间 ; D 时钟周期时间 ; 8.在___a___的微型计算机系统中,外设可和主存贮器单元统一编址 ,因此可以不使用I / O指令。 A 单总线 B 双总线 C 三总线 D 多总线 9.在微型机系统中,外围设备通过___a___与主板的系统总线相连接。 A 适配器 B 设备控制器 C 计数器 D 寄存器 10.CD—ROM光盘的标准播放时间为60分钟。在计算模式1情况下,光盘的存储容量为 ___b___。 A 601MB B 527MB C 630MB D 530MB 二. 填空题(每小题3分,共24分) 1.计算机的硬件包括A.___存储器___,B.___运算器___,C.___控制器___适配器,输入输出部分。 2.按IEEE764标准,一个浮点数由A.___符号位___,阶码E ,尾数m 三部分组成。其中阶码E 的值等于指数的B.___基值___加上一个固定C.___偏移量___。 3.存储器的技术指标有A.___存储容量___,B.___存储时间___,C.__存储周期____,存储器带宽。 4.指令操作码字段表征指令的A.___操作___,而地址码字段指示B.__特征与功能___。微小型机多采用 C.___操作数的地址___混合方式的指令格式。 5. CPU中至少有如下六类寄存器,除了A.___指令___寄存器,B.____程序__计数器,C.___地址___寄存器外,还应有通用寄存器,状态条件寄存器,数据缓冲寄存器。 6.总线有A.___物理___特性,B.___功能___特性,电气特性,C.___机械___特性。 7.不同的CRT显示标准所支持的最大A.__分辨率___和B.___颜色___数目是C.___不同___的。 8.中断处理需要有中断A.___优先级仲裁___,中断B.___向量___产生,中断C.___控制逻辑___等硬件支持。 三.应用题 1. (11分)设有两个浮点数 N1 = 2j1 × S1 , N2 = 2j2 × S2 ,其中阶码2位,阶符1位,尾数四位,数符一位。设 :j1 = (-10 )2 ,S1 = ( +0.1001)2 j2 = (+10 )2 ,S2 = ( +0.1011)2 求:N1 ×N2 ,写出运算步骤及结果,积的尾数占4位,要规格化结果,用原码阵列乘法器求尾数之积。 2. (11分)已知某8位机的主存采用半导体存贮器,地址码为18位,若使用4K×4位RAM芯片组成该机所允许的最大主存空间,并选用模块条的形式,问: (1) 若每个摸条为32K×8位,共需几个模块条? (2) 每个模块内共有多少片RAM芯片? (3) 主存共需多少RAM芯片?CPU如何选择各模块条? 3. (11分)图B6.1是某SRAM的写入时序,其中R / W 是读 、写命令控制线,当R / W 线为低电平时,存贮器按给定地址把数据线上的数据写入存贮器。请指出图中时序的错误,并画出正确的写入时序。 图B6.1 4. (11分)某计算机有如下部件:ALU,移位器,主存M,主存数据寄存器MDR,主存地址寄存器MAR,指令寄存器IR,通用寄存器R0——R3 ,暂存器C和D。 (1) 请将各逻辑部件组成一个数据通路,并标明数据流向。 (2) 画出“ADD R1,(R2)+ ”指令的指令周期流程图,指令功能是 (R1)+((R2))→R1。 ALU 图B6.2 5. (11分)集中式仲裁有几种方式?画出计数器定时查询方式的逻辑结构图,说明其工作原理。 6. (11分)刷存的主要性能指标是它的带宽。实际工作时显示适配器的几个功能部分要争用刷存的带宽。假定总带宽的50%用于刷新屏幕,保留50%带宽用于其他非刷新功能。 (1) 若显示工作方式采用分辨率为1024×768,颜色深度为3B,帧频(刷新速率)为72HZ,计算总带宽。 (2) 为达到这样高的刷存带宽,应采取何种技术措施?

2010-06-17

点名系统用例图及用例规约

用例描述:本用例用于向用户提供注册功能。每个用户必须注册后才能进入系统。学生注册需填写学号、密码、班级等信息,教师注册需填写教师号、密码等信息。 执行者 所有用户 相关用例 注册 前置条件 系统中存在用户的基本信息。 后置条件 注册成功后,才可以登录系统。 涉众利益 注册可以设置密码,保护个人信息,防止别人进入。 基本路径 1 进入系统登录界面 2 用户注册,进入注册界面 3 注册成功,用户用自己的帐号密码进入系统 备选路径 暂无 字段列表 非功能需求 桌面用户界面应与 Windows 98/2000/XP 兼容。 设计约束 系统必须提供基于 Windows 桌面的接口。 业务规则 本用例所有用户都可以进入 待解决问题 由于第一次设计点名系统,很多细节还不是很清楚,所以有些功能不是太完善,如注册时要求用户输入什么信息。

2010-06-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除