打印机队列讲述.doc

打印机队列讲述

课程设计报告设计题目:打印机任务队列学生姓名:专 业:计算机科学与技术班 级:学 号:指导教师:完成日期: 合肥工业大学 计算机与信息学院 一. 需求和规格说明 题目:打印机任务队列 要求:打印机的打印队列中,每一个打印任务都有一个优先级,为1~9的一个整数(9的优先级最高,1的优先级最低),打印按如下方法进行. (1)取出打印队列中队首的打印任务J; (2)如果打印队列中存在优先级高于J的打印任务,则将J移动到打印队列的队尾;否则,打印J. 现在的问题是,要确定你要打印的文件何时打印完毕。给定当前打印队列(一个优先级队列)和你的打印任务在当前打印队列中的位置,确定你的打印任务完成时需要多长时间。为了简化问题,假定没有新的打印任务加入到打印队列中;并且,假定完成任何一个打印任务均需要1min时间,向打印队列中加入一个打印任务或从打印队列中移除一个打印任务不需要时间。 例如,当前打印队列为“1 1 9 1 1 1”且你的打印任务在队首时,需要5min. 二. 设计 1.设计思想: 根据要求,可采用队列结构存储打印队列,因此,设计出一个打印队列类printqueue来存储数据并实现相关操作。为了读入打印队列,需设计一个函数createqueue();为了判断打印队列中的优先级,需设计一个函数priority();为了记录打印任务在打印队列中所在位置,可定义一个标识符flag来标记位置;为了算出打印所费时间,可定义一个变量time. 确定何时打印结束:当执行打印时要打印任务在打印队列的队头即flag=1时打印结束。 类图: printqueue()int count; int front; int rear; int data[ ]; int flag; int time;error_code createqueue( int x); bool empty() const; bool full() const; error_code get_front(int x) const; error_code append(const int x); error_code serve(); bool priority(); error_code print(const int x); 2.设计表示: 属性和方法定义: 类名成员类别类型成员名描述 printqueue 属性intcount当前打印队列中的打印任务数privateint front打印队列的队头指针privateintrear打印队列的队尾指针privateintdata[]存储打印队列的数组privateint flag标识符,标记要打印的任务在打印队列中的位置publicinttime打印完成所需时间public 方法printqueue()构造函数publicerror_codecreatequeue()输入并构造打印队列publicboolempty()判断打印队列是否为空publicboolfull()判断打印队列是否已满publicerror_codeget_front()取打印队列的队头元素publicerror_codeappend()出队publicerror_codeserve()入队publicboolpriority()判断队头打印任务是否优先级最高publicerror_codeprint()打印函数public三. 用户手册 1,使用时先输入打印队列,注意打印队列为优先级队列,优先级为1~9,输入-1作为打印队列的输入结束符,且打印队列长度不能超过98。 2,输入打印任务在打印队列中的位置,用数字表示,位置不能超出打印队列长度。 之后计算机便可自行执行打印任务并计算时间。 四. 调试及测试 此次设计的程序基本实现了题目中的要求。 程序运行的时空效率分析: 空间消耗:需要空间存储打印队列,front,rear,count,flag,time及其他中间变量的值,空间消耗较少。 时间性能:若队列长度为n,则最多需要移动元素n!次,最多需要打印n次。时间性能较佳。 测试数据集; 打印队列打印任务所在位置运行结果正确输入1 1

文档评论(0)

1亿VIP精品文档

相关文档