当前位置:文档之家› 燕山大学os课程设计说明书

燕山大学os课程设计说明书

燕山大学os课程设计说明书
燕山大学os课程设计说明书

1. 概述 (3)

1.1. 目的 (3)

1.2. 主要完成的任务 (3)

1.3. 使用的开发工具 (3)

1.4. 解决的主要问题 (3)

2. 使用的基本概念和原理 (3)

2.1. 线程 (3)

2.2. 线程的同步 (4)

2.3. 模态对话框 (4)

2.4. 原理 (4)

3. 总体设计 (4)

3.1. 确定基本的技术路线 (4)

3.2. 软件的总体结构 (4)

3.3. 创建的进程和线程 (5)

4. 详细设计 (5)

4.1. 利用的进程操作的函数、原语、API (5)

4.1.1. 信号量创建函数 (5)

4.1.2. 互斥对象的创建. (5)

4.1.3. 线程创建函数 (6)

4.1.4. 等待函数 (6)

4.2. 模块内部的流程和实现算法 (6)

4.3. 全局变量的声明 (8)

5. 编码设计 (9)

5.1. 开发环境的设置和建立 (9)

5.2. 编译环境的设置 (9)

5.3. 程序设计时要注意的事项 (10)

5.4. 主要程序的代码设计及注释 (10)

5.5. 解决的技术难点、经常犯的错误 (14)

6. 测试时出现的问题及其解决方法 (14)

7. 软件使用说明及运行结果 (14)

7.1. 基本功能 (14)

7.2. 需要运行的环境 (15)

7.3. 安装及运行 (15)

7.4. 操作 (15)

7.5. 运行结果 (15)

8. 总结 (16)

8.1. 操作系统课程设计完成情况 (16)

8.2. 收获和感受 (16)

8.3. 经验总结 (16)

9. 参考文献 (17)

1. 概述

1.1. 目的

通过使用程序设计语言设计一个程序,模拟生产者消费者和搬运者对产品操作的过程。

1.2. 主要完成的任务

图1 Buffer 操作

(1) 可以随机产生字符数据,由put 操作放入Buff1,buffer 中容量单位是字符。

(2) 提供良好图形界面,显示Buffer 的操作过程。

(3) 可以设定各Buffer 的容量、PUT 、GET 、Move 操作的个数;

(4) 可以设定PUT 、GET 、Move 操作的速度;

(5) 实时显示每个Buffer 中数据的个数和数据的内容,空闲Buffer 的空间的个数;

(6) 实时显示线程、进程所处于等待(阻塞)状态的个数

(7) 程序运行结束,显示汇总数据:

总的运行时间;

Buffer 中数据的个数;

已放入BUFFER 的数据个数;

已放已取的数据个数;

平均每个buffer 中的数据个数。

1.3. 使用的开发工具

使用MFC 在VC++6.0上完成程序的设计。

1.4. 解决的主要问题

(1)可以随机产生字符数据。

(2)设计put ,get ,move 的线程。

(3)可以设计buffer 的容量,put ,get ,move 的个数。

(4)控制put ,get ,move 的速度。

(5)实时显示buffer 的内容。

2. 使用的基本概念和原理

2.1. 线程

线程,有时被称为轻量级进程(Lightweight Process ,LWP ),是程序执行流的最小

单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥Put Move2 Buff1 Buff Buff3 Get Move 1

有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。

线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

2.2. 线程的同步

临界段:临界段对象通过提供所有线程必须共享的对象来控制线程。只有拥有临界段对象的线程才可以访问保护资源(进行临界区操作)。在另一个线程可以获取对象的访问权。用户应用程序可能会使用临界对象来阻止两个线程同时访问共享的资源发文件等。

互斥量:互斥量的工作方式和临界段非常相似,其区别在于互斥量不公保护一个进程内的资源共享,而且还保护系统中进程之间的共享资源。它是通过为互斥量提供一个“互斥量名”来进行进程间资源共享协调的。

事件:事件对象用于给线程传递信号,指示线程中特定的操作可以开始或结束。除非线程已经收到了这个事件信号,否则它将一直处于挂起状态。当事件对象进入其信号状态时,正在等待该事件的线程就可以开始执行。例如,一个应用程序可以通过事件来通知线程它需要的数据已经准备好。经常利用事件进行线程之间的通信。

信号量:信号量与互斥相似,但是互斥只允许在同一时刻一个线程访问它的数据,而信号量允许多个线程在同一时刻访问它的数据。WIN32 不知道哪一个线程拥有信号量,它只保证信号量使用的资源计数正确的设置。

2.3. 模态对话框

模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。

2.4. 原理

使用信号量作为同步互斥的工具,通过对BUFFER1、BUFFER2的容量,还有控制权设置不同的信号量来协调PUT、GET、MOVE线程,使其同步来实现P、V操作。

3.总体设计

3.1. 确定基本的技术路线

用MFC设计的,是面向对象的程序。

3.2. 软件的总体结构

生产者消费者 搬运者过程演示

图2 框架图

3.3. 创建的进程和线程

(1)DWORD WINAPI ThreadProduct(LPVOID lpParameter);//生产者线程

(2)DWORD WINAPI ThreadConsumer(LPVOID lpParameter);//生产者线程

(3)DWORD WINAPI ThreadMover1(LPVOID lpParameter);//搬运者1线程

(4)DWORD WINAPI ThreadMover2(LPVOID lpParameter);//搬运者2线程

(5)DWORD WINAPI ThreadBuffer1(LPVOID lpParameter);//显示buffer1的线程

(6)DWORD WINAPI ThreadBuffer2(LPVOID lpParameter);//显示buffer2的线程

(7)DWORD WINAPI ThreadBuffer3(LPVOID lpParameter);//显示buffer3的线程

(8)DWORD WINAPI ThreadCount(LPVOID lpParameter);//汇总的线程

(9)DWORD WINAPI Threadtime(LPVOID lpParameter);//时间的线程

4. 详细设计

4.1. 利用的进程操作的函数、原语、API

4.1.1. 信号量创建函数

HANDLE CreateSemaphore(

LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, // 安全属性指针

LONG lInitialCount, // 初始计数

LONG lMaximumCount, // 最大计数

LPCTSTR lpName // 对象名指针

);

该函数创建一个信号量,llnitialCount 是对信号量的初始值,iMaximunCount 为信号量的最大值,即信号量在一个范围内有效,例empty=::CreateSemaphore(0,0,M,0);

第二个0为empty 信号量的初始值,M 为信号量的最大值,在这个范围内(0,M )信号量都是有信号的。

4.1.2. 互斥对象的创建

HANDLE CreateMutex(

LPSECURITY_ATTRIBUTES lpMutexAttributes, 安全属性结构指针,可为NULL,设置模块,设置生产者消费者搬运者的初始值,及其它们的速度。 显示模块,实时显示生产者消费者搬运者及buffer 的情况变化,还有汇总的情况。 控制模块,控制开始,停止及退出。

表示默认安全性

BOOL bInitialOwner, //是否占有该互斥量,TRUE:占有,FALSE:不占有

LPCTSTR lpName //设置互斥对象的名字);

如果一个线程拥有了一个互斥对象后,当该线程运行完成后就要释放该互斥对象,不然其他的线程得不到互斥对象则无法运行。

用ReleaseMutex(HWND);操作它的具体作用是每调用它一次将互斥对象的计数器减一,直到减到零为止,此时释放互斥对象,并将互斥对象中的线程id置零。

它的使用条件是,互斥对象在哪个线程中被创建,就在哪个线程里面释放。因为调用的时候会检查当前线程的id是不是与互斥对象中保存的id一致,若一致,则此次操作有效,不一致,则无效。

4.1.3.线程创建函数

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes.//线程安全属性

DWORD dwStackSize,//线程堆栈的初始化大小,等于0时为系统默认的堆栈大小

PLTHREAD_START_ROUTINE lpStartAddress,//线程函数

LPVOID lpParameter,//线程参数

DWORD dwCreationFlags,//创建方式

LPDWORD lpThreadId//线程标识符);

该函数创建一个线程,如果没有特殊需要除第三个参数外都可设为0,按系统的默认取值对待,主要是第三个参数,它是线程程序的入口,线程序入口的标准形式为UINT FUNCTION(LPVOID param)

线程函数里可以传一个指针做为参数(param),该参数由创建线程函数(CreateThread)里的第四个参数确定。

4.1.4.等待函数

DWORD WaitForSingleObjec(

HANDLE hHandle,//对象句柄

DWORD dwMilliseconds//等待的时间,单位为毫秒

该函数在不同的应用里会有不同的意义,在信号量里应用时主要是判断信号量是否有信号。第二个参数为等待时间,我们通常设为INFINITE,即为无限等待,在等待期间会将线程挂起,直到等待的信号量有信号。

4.2. 模块内部的流程和实现算法

设置6个信号量full1、empty1、hMutex1、full2、empty2、hMutex2,full3、empty3,hMutex3它们的含义和初值如下:

(1)full1——buffer1是否有数据,初值为0;

(2)empty1——buffer1有空间,初值为M;

(3)hMutex1——buffer1是否可操作,初值为1;

(4)full2——buffer2是否有数据,初值为0;

(5)empty2——buffer2有空间,初值为N;

(6)hMutex2——buffer2是否可操作,初值为1;

(7)full3——buffer3是否有数据,初值为0;

(8)empty3——buffer3有空间,初值为Q;

(9)hMutex3——buffer3是否可操作,初值为1;

设置三类进程函数,用信号量实现同步互斥,PUT,MOVE,GET算法如下:

{

While()

P(empty1); /*判断buff1是否有空间,没有则等待 */

P(hMutex1); /*是否可操作buffer1*/

PUT;

V(hMutex1); /*设置buff1可操作标志 */

V(full1); /*设置buff1有数据的标志 */

until false

}

Move1

{

While()

P(full1); /*判断buffer1是否有数据*/

P(empty2); /*判断buffer2是否有空间*/

P(hMutex1); /*是否可操作buffer1 */

P(hMutex2); /*是否可操作buffer2 */

MOVE;

V(hMutex1); /*设置buffer1可操作标志*/

V(hMutex2); /*设置buffer2可操作标志*/

V(empty1); /*设置buffer1有空间标志*/

V(full2); /*设置buffer2有数据标志*/

until false

}

Move2

{

While()

P(full2); /*判断buffer2是否有数据*/

P(empty3); /*判断buffer3是否有空间*/

P(hMutex2); /*是否可操作buffer2 */

P(hMutex3); /*是否可操作buffer3*/

MOVE;

V(hMutex2); /*设置buffer2可操作标志*/

V(hMutex3); /*设置buffer3可操作标志*/

V(empty2); /*设置buffer2有空间标志*/

V(full3); /*设置buffer3有数据标志*/

until false

}

{

While()

P(full3); /*判断buffer3是否有数据,没有则等待 */

P(hMutex3); /*是否可操作buffer3*/

GET;

V(hMutex3); /*设置buffer3可操作标志 */

V(full3); /*设置buffer3有数据的标志 */

until false

}

4.3. 全局变量的声明

int put_buffer1=0;//放入buffer1的产品个数;

int move_buffer1=0;//从buffer1中取走的产品个数;

int move_buffer2=0;//从buffer2中取走的产品个数;

int get_buffer3=0;//从buffer3中取走的产品个数;

int m_time;//记录时间

int buffer1;//buffer1中产品个数

int buffer2;//buffer2中产品个数

int buffer3;//buffer3中产品个数

int consumer;//消费者个数

int product;//生产者个数

int mover;//搬运者一的个数

int mover2;//搬运者二的个数

int producterid=1;//生产者的id号

int moverid1;//搬运者1的id号

int moverid2;//搬运者2的id号

int consumer_id=1;//消费者的id

int productid=101;//生产者生产出来的产品的id号

int name_product;//存储随机产品;

int ioend=0;//判断用的

int toend=1;

int consumerid=101;//消费者消费的产品id号

int move1_consumerid=101;//搬运者搬运的产品的id号

int move2_consumerid=101;

int put=1000;//put的速度

int move1=1000;//move1的速度

int move2=1000;//move2的速度

int get=1000;//get的速度

CString getget;//存获取m_list_buffer里面的第0行的字符串;

CString move;//存获取m_list_buffer里面的第0行的字符串;

CString putput;//存获取m_list_buffer里面的第0行的字符串;

5.编码设计

5.1. 开发环境的设置和建立

(1)起动VISUAL C++ 6.0程序

(2)在菜单里选择[文件],子菜单里选择[新建],弹出新建对话框,如图3所示。

图3.新建工程

(3)在左边的新建选项里选择MFC AppWizard[exe]选项,右边的project name里填入一个工程名,选择OK按扭。选择默认设置。

5.2. 编译环境的设置

在WINDOWS环境下的多线程中,为保证程序的正确性,必须使用用于多线程环境的正确的函数库,在VC++ 6.0开发环境中在菜单[工程]中[设置]中进行选择。步骤如下:

(1)选择PROJECT菜单中的SETTING….项;

(2)在打开的表彰中选择C/C++项;

(3)选择CATEGORY中的CODE GENERATION项;

(4)在USE RUN-TIME LIBRARY中选择MULTITHREADED;

(5)单击OK即可。

此时,在命令行方式下编译选项由ML变为MT,如图4所示。

图4.编译环境

5.3. 程序设计时要注意的事项

(1)尽量避免全局变量的使用;

(2)变量的命名要规范;

(3)注意给代码多写注释;

(4)注意进行模块化设计,写相应的函数来完成相应的功能。

5.4. 主要程序的代码设计及注释

(1)四个主要线程PUT,GET,MOVE1,MOVE2代码实现。

DWORD WINAPI ThreadProduct(LPVOID lpParameter)

{

int j=producterid;//用j来标记第几条线程;

producterid++;

while(toend)

{

Sleep(put);

CString str;

CString str1;

CString str2;

WaitForSingleObject(SemaphoreEmpty,INFINITE);

WaitForSingleObject(hMutex,INFINITE);

put_buffer1++;//放进去一个产品,就加一;

srand((unsigned)time(NULL));

name_product=(rand()%26)+65;

str.Format("%s%d%4d%s","工作者完成",j,put_buffer1,"次生产");

str1.Format("%s%d%s%c","产品号:",productid++,"产品名:",name_product);

str2.Format("%s%d%s","线程",j,"在运行,其他线程处于阻塞状态");

m_list_product->DeleteString(0);

m_list_product->DeleteString(0);

m_list_product->InsertString(-1,str);

m_list_product->InsertString(-1,str1);

m_list_product->InsertString(-1,str2);

m_list_buffer1->InsertString(-1,str1);

Sleep(400);

m_list_product->DeleteString(2);

ReleaseMutex(hMutex);

ReleaseSemaphore(SemaphoreFULL,1,NULL);

}

return 1;

}

DWORD WINAPI ThreadMover1(LPVOID lpParameter)

{

int j=moverid1;

moverid1++;

while(toend)

{

Sleep(move1);

CString str;

CString str1;

CString str2;

WaitForSingleObject(SemaphoreFULL,INFINITE);

WaitForSingleObject(SemaphoreEmpty2,INFINITE);

WaitForSingleObject(hMutex,INFINITE);

WaitForSingleObject(hMutex2,INFINITE);

move_buffer1++; //表示从buffer1移出的产品也是移入buffer2的产品个数;

str.Format("%s%d%s%4d%s","搬运者",j,"buffer1->buffer2",move_buffer1,"次搬运");

str2.Format("%s%d%s","线程",j,"在运行其他线程处于阻塞状态");

m_list_buffer1->GetText(0,putput);

m_list_move1->DeleteString(0);

m_list_move1->DeleteString(0);

m_list_move1->InsertString(-1,str);

m_list_move1->InsertString(-1,putput);

m_list_move1->InsertString(-1,str2);

m_list_buffer1->DeleteString(0);

m_list_buffer2->InsertString(-1,putput);

Sleep(400);

m_list_move1->DeleteString(2);

ReleaseMutex(hMutex2);

ReleaseMutex(hMutex);

ReleaseSemaphore(SemaphoreFULL2,1,NULL);

ReleaseSemaphore(SemaphoreEmpty,1,NULL);

}

return 1;

}

DWORD WINAPI ThreadMover2(LPVOID lpParameter)

{

int j=moverid2;

moverid2++;

while(toend)

{

Sleep(move2);

CString str;

CString str2;

WaitForSingleObject(SemaphoreFULL2,INFINITE);

WaitForSingleObject(SemaphoreEmpty3,INFINITE);

WaitForSingleObject(hMutex2,INFINITE);

WaitForSingleObject(hMutex3,INFINITE);

move_buffer2++; //表示从buffer2移出的产品也是移入buffer3的产品个数;

str.Format("%s%d%s%4d%s","搬运者",j,"buffer2->buffer3",move_buffer2,"次搬运");

str2.Format("%s%d%s","线程",j,"在运行其他线程处于阻塞状态");

m_list_buffer2->GetText(0,move);

m_list_move2->DeleteString(0);

m_list_move2->DeleteString(0);

m_list_move2->InsertString(-1,str);

m_list_move2->InsertString(-1,move);

m_list_move2->InsertString(-1,str2);

m_list_buffer2->DeleteString(0);

m_list_buffer3->InsertString(-1,move);

Sleep(400);

m_list_move2->DeleteString(2);

ReleaseMutex(hMutex3);

ReleaseMutex(hMutex2);

ReleaseSemaphore(SemaphoreFULL3,1,NULL);

ReleaseSemaphore(SemaphoreEmpty2,1,NULL);

}

return 1;

}

DWORD WINAPI ThreadConsumer(LPVOID lpParameter)

{

int j=consumer_id;

consumer_id++;

while(toend)

{

Sleep(get);

CString str;

CString str1;

CString str2;

WaitForSingleObject(SemaphoreFULL3,INFINITE);

WaitForSingleObject(hMutex3,INFINITE);

get_buffer3++;

str.Format("%s%d%s","本次生产完成:",get_buffer3,"次消费");

str2.Format("%s%d%s","线程",j,"在运行其他线程处于阻塞状态");

m_list_buffer3->GetText(0,getget);

m_list_buffer3->DeleteString(0);

m_list_consumer->DeleteString(0);

m_list_consumer->DeleteString(0);

m_list_consumer->InsertString(-1,str);

m_list_consumer->InsertString(-1,getget);

m_list_consumer->InsertString(-1,str2);

Sleep(400);

m_list_consumer->DeleteString(2);

ReleaseMutex(hMutex3);

ReleaseSemaphore(SemaphoreEmpty3,1,NULL);

}

return 1;

}

5.5. 解决的技术难点、经常犯的错误

(1)不了解MFC已经封装好的函数的功能,有时候都不会调用,要通过MSDN来查,或者通过百度来查。

(2)控件不太会使用,刚开始的时候还不知道如何绑定控件和变量。

(3)全局变量和局部变量的使用不清楚,有时候造成一些错误。

6.测试时出现的问题及其解决方法

(1)局部变量的运用:有一次有一个局部变量写错了,把j写成了i,结果导致程序运行不下去,我通过单步跟踪,跟踪程序的运行,最后修改了这个局部变量。

(2)随机生产的产品如何记录:并非记录全部产生的变量,我在生产者线程中用一个局部变量记录随机产生的字符产品,然后将其放入buffer1,搬运者是通过获取buffer里的第一个字符就是所要搬运的产品。

(3)buffer的内的内容实时显示是通过在定义了buffer线程,来实时显示buffer内的情况。

7.软件使用说明及运行结果

7.1.基本功能

(1) 可以随机产生字符数据,由put操作放入Buff1,buffer中容量单位是字符。

(2) 提供良好图形界面,显示Buffer的操作过程。

(3) 可以设定各Buffer的容量、PUT、GET、Move操作的个数;

(4) 可以设定PUT、GET、Move操作的速度;

(5) 实时显示每个Buffer中数据的个数和数据的内容,空闲Buffer的空间的个数;

(6) 实时显示线程、进程所处于等待(阻塞)状态的个数

(7) 程序运行结束,显示汇总数据:

总的运行时间;

Buffer中数据的个数;

已放入BUFFER的数据个数;

已放已取的数据个数;

平均每个buffer中的数据个数。

7.2.需要运行的环境

Windows系统下均能运行。

7.3.安装及运行

不用安装,打开可执行文件即可。

7.4.操作

(1)首先设置好生产者消费者搬运者和它们的速度以及3个buffer的容量。

(2)点击开始,程序开始运行。

(3)点击暂停,生产者停止生产,消费者停止消费,搬运者停止搬运。

(4)点击停止并退出,程序停止,关闭窗口。

7.5. 运行结果

图5.程序运行界面图

图6.运行中的界面

8.总结

8.1. 操作系统课程设计完成情况

基本完成了老师布置的任务,在实时显示在工作的线程和阻塞线程上有一点小小的瑕疵,这点倒是有点美中不足。在时间的记录上也有一点小小的瑕疵,会把暂停的时间也算在总共运行时间内。

8.2. 收获和感受

(1)首先谈谈收获,这次课设让我收获颇多,本人是一人一组,从头到尾都是自己在设计,让自己的编程能力有所提高,对操作系统多线程的运行机制也有了更加深刻的理解。还有对如何调用系统的API函数有了更多的认识,更多的是收获了那一股自己钻研问题的精神,这种精神将为我们将来走向社会铺下更加结实的道路,让我们走的更加的平坦。

(2)操作系统课设在我看来是一种小型项目开发的锻炼,让我感受到了作为计算机程序开发人员的不容易,也让自己更加确定了自己以后要多多锻炼自己的能力的重要性。

8.3. 经验总结

(1)通过本次课设,我认识到无论做什么事都要首先规划好每一步要完成的任务,逐个突破,这样才能成功。

(2)这次课设,其中有一次因为没有备份程序,导致后来改不回来了,然后花费了大量的时间从新写,从这事我吸取教训,以后一定要多多的备份,这样才能保证不再出现这种情

况。

9.参考文献

[1] 汤小丹.计算机操作系统.西安.西安电子科技大学出版社.2010.10.起止页34-81

[2] 孙鑫. VC++深入详解. 北京. 电子工业出版社.起止页218-263

[3] 姚领田.精通MFC程序设计.人民邮电出版社.

污水处理厂课程设计设计说明书及方案(模版)(参考模板)

1 概述 1.1 工程概况 依据城市总体规划,华东某市在城西地区兴建一座城市污水处理厂,以完善该地区的市政工程配套,控制日益加剧的河道水污染,改善环境质量。该城市现状叙述如下: 1、2号居住区人口3万,污水由化粪池排入河道;3、4号居住区人口5万,正在建设1年内完成;5号居住区人口4.5万,待建,2年后动工,建设周期2年。还有部分主要公共建筑,宾馆5座,2000个标准客房;医院2座,1500张床。以上排水系统均采用分流制系统。同时新区内还有部分排污工厂:电子厂每天排水1500m3,BOD5污染负荷为3000人口当量;食品厂每天排出污水量500 m3,污染负荷为1500人口当量。 旧城区原仅有雨水排水系统,污水排水系统的改造和建设工程计划在10年内完成,届时整个排水区域服务人口将达到18万。 依据上述情况,整个工程划分为近期和远期两个建设阶段,现在实施的工程为近期建设。近期建设周期大概在3年左右,设计服务范围应该包括新区5个已建和待建的居住区、新区内部分主要公共建筑以及2个工厂。依据环保部门以及排放水体的状况,排放水要求达到《城镇污水处理厂污染物排放标准》(GB 18918-2002)一级B标准。 1.2 设计依据 《城镇污水处理厂污染物排放标准》(GB 18918-2002) 《室外排水设计规范》(GB50101) 《城市污水处理工程项目标准》 《给水排水设计手册》,第5册城镇排水 《给水排水设计手册》,第10册技术经济 城市污水处理以及污染物防治技术政策(2002) 污水排入城市下水道水质标准CJ3082-1999 地表水环境质量标准GB3838-2002 城市排水工程规划规范GB50381-2000 1.3设计任务和范围 (1)收集相关资料,确定废水水量水质及其变化特征和处理要求; (2)对废水处理工艺方案进行分析比较,提出适宜的处理工艺方案和工艺流程; (3)确定为满足废水排放要求而所需达到的处理程度; (4)结合水质水量特征,通过经济技术分析比较,确定各处理构筑物的型式; (5)进行全面的处理工艺设计计算,确定各构筑物尺寸和设备选型; (6)进行废水处理站平面布置及主要管道的布置和高程计算; (7)进行工程概预算,说明废水处理站的启动运行和运行管理技术要求 2 原水水量与水质和处理要求: 2.1 原水水量与水质 一期工程: Q=36000m3/d

课程设计说明书范本模板

辽宁工业大学 工艺课程设计( 论文) 题目: Al-12.5 Si-3 Cu-2-2Ni-0.5Mg铸造合金热处理工艺设计 院(系): 光伏学院 专业班级: 材料工程技术102 学号: 学生姓名: 杨向天 指导教师: 李青春 教师职称: 副教授 起止时间: -7-5~ -7-16

前言 合金工具钢的淬硬性、淬透性、耐磨性和韧性均比碳素工具钢高, 按用途大致可分为刃具、模具和检验尺寸使用的量具用钢三类。合金工具钢广泛用作刃具、冷、热变形模具和量具, 也可用于制作柴油机燃料泵的活塞、阀门、阀座以及燃料阀喷嘴等。 此设计是经过在课堂学习热处理理论知识后的探索和尝试, 其内容讨论如何设计圆板牙钢的热处理工艺, 重点是制定合理的热处理规程, 并按此完成Al-12.5Si-3Cu圆板牙钢的热处理工艺设计。

目录( 小二号黑体, 段前段后1行, 1.25倍行距, 居中排列) 1 低合金刃具钢热处理工艺概述........................................ 错误!未定义书签。 2 圆板牙钢的热处理工艺设计............................................ 错误!未定义书签。 2.1 圆板牙钢的服役条件、失效形式......................... 错误!未定义书签。 2.2 圆板牙技术要求及示意图 ...................................... 错误!未定义书签。 2.3 圆板牙钢的材料选择 .............................................. 错误!未定义书签。 2.4 圆板牙9SiCr钢的C曲线...................................... 错误!未定义书签。 2.5 圆板牙9SiCr钢加工工艺流程图........................... 错误!未定义书签。 2.6 9SiCr圆板牙(M12)钢退火-淬火-回火热处理工艺错误!未定义书签。 2.7 9SiCr圆板牙钢退火、淬火、回火热处理工艺理论错误!未定义书 签。 2.8 选择设备、仪表和工夹具..................................... 错误!未定义书签。 2.9 圆板牙热处理质量检验项目、内容及要求 ........ 错误!未定义书签。 2.10 圆板牙热处理常见缺陷的预防及补救方法........ 错误!未定义书签。 3 参考文献 ............................................................................ 错误!未定义书签。

燕山大学操作系统课设题目(最新)

操作系统课程设计 日 程 安 排 与 要 求 主持人:申利民 参加班级:计算机11、信息安全11、软件工程11 日期:2014.01.06-2014.01.17

操作系统课程学习总结会议 操作系统课程设计任务安排与辅导 时间:01月05日(星期日) 上午8:00 - 12:00 地点:四教(209)教室 全体同学必须参加 主要内容 (1)对在操作系统课程学习进行总结,对中取得优异成绩同学进行表彰; (2)对操作系统课程设计任务进行部署; (3)邀请有经验老师和研究生讲解课程设计中方法和技术。

01月05日(星期日)详细内容 上午8:00开始 (1)申利民操作系统课程设计任务和要求20分钟(2)穆运峰Windwos 多线程程序设计60分钟(3)刘希晨课程设计经验介绍与VS 上界面设计60分钟(4)申利民操作系统课程学习总结和表彰30分钟

操作系统课程设计与实验室安排 计算机科学11、计算机应用11 日期:2014.01.06---- 2013.01.10 实验室安排(可以带笔记本电脑) 计算机应用1-2班计算机应用3班信息馆101 计算机科学1-2班计算机应用3班信息馆318 软件工程11、信息安全11 日期:2013.01.13---- 2013.01.17 实验室安排(可以带笔记本电脑) 软件工程1-2班信息馆101 信息安全信息馆318 参加辅导的教师和研究生 申利民、何海涛、穆运峰、尤殿龙、刘希晨 王俊飞、杨惠峰、陈真、郭超、许建生

教师实验室值班时间 教师实验室值班时间

申利民130******** 何海涛139******** 穆运峰139******** 信息馆415 (VC++ 辅导) 尤殿龙139******** 信息馆415 (Java 辅导) 王俊飞159******** 信息馆507 (Java 辅导) 陈真136******** 信息馆507 (VC++ 辅导) 许建生150******** 信息馆507 (VC++ 辅导) 杨惠峰187******** 信息馆415 (VC++ 辅导 刘希晨186******** 信息馆415 (VC++ 辅导)郭超138******** 信息馆415 (VC++ 辅导)王一发152******** 信息馆415 (Android 辅导)

燕山大学软件工程课程设计

燕山大学 课程设计报告自习室座位管理系统 学院信息科学与工程学院年级专业09级计算机科学2班学生姓名XXX 090104010XXX XXX 090104010XXX XXX 090104010XXX 指导教师XXX 提交日期2012-6-14

摘要 本次课程设计在Windows 7平台上,以VS2010作为界面开发工具,分析设计了“图书馆自习室座位管理系统”。学生可以通过终端进行座位申请、座位退还、座位保留操作;管理员可以通过账户登录获取管理权限,对数据库进行更新和修改。 本报告中首先说明了该系统的特点与业务需求,构造了系统的数据模型、功能模型和动态模型,之后详细说明了系统的业务流程和系统开发流程,重点介绍了系统各模块的功能及相关功能的实现方向。 关键词座位管理系统;座位;数据库;VS2010;动态模型;模块

目录 摘要 (1) 第1章绪论 (2) 1.1 课题背景 (3) 1.2 课题意义 (4) 1.3 选题依据 (5) 第2章系统需求分析 (10) 2.1 系统功能描述 (10) 2.2 系统功能需求 (11) 2.3系统功能模块图 (12) 第3章系统总体设计 (13) 2.1 系统方案选取 (14) 2.2 系统功能设计 (15) 2.3数据库设计 (16) 结论 (18) 参考文献 (53)

第一章绪论 1.1 背景和意义 在大学中,公共自习室的座位管理是一个很重要的问题,因为它牵扯到能否让每个同学公平地享用到其应有的公共资源,同时更好的做好配合学校教学的服务工作,所以一个有力的图书馆座位管理系统不可或缺。由于图书馆的座位是免费使用,所以必须要做到公平;但是,图书馆的座位资源有限,应该得到最大限度地使用,所以必须讲究效率。每到学期末或考试周,图书管的公共自习室就变成了紧俏资源,一系列因为管理上的不力所产生的问题接踵而至,例如:一些座位被长期占用却得不到回收,一人同时占用多个座位,座位信息不能及时反馈给同学等等。一个有力的座位管理系统可以公平管理和分配公共资源,使其得以充分利用,并节省人力物力,避免人为因素所导致的错误,同时还可以实时更新信息使得信息统一从而为同学节省宝贵时间。 现代信息技术的飞速发展给我们生活带来了极大的便利,尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。作为计算机应用的一部分,管理信息系统具有着手工管理所无法比拟的优点,例如:检索迅速、查找方便、可靠性高、存储量大、寿命长、实时性好、成本低等。如果我们将信息技术运用至自习室座位管理系统,那么再给我们带来方便的同时,也能让我们时刻体会到数字化的乐趣。 1.2 主要内容和工作 (1)前期准备:做好需求分析工作,作为一个座位管理系统,使用者应该以学生为主,自习室座位信息更新界面应简单易用,输入方便,针对学生对系统的实时性要求较高的特点,要做好数据库的设计。需求分析之后要进一步明确问题域,站在用户人群的角度进行开发。进行可行性分析,从经济、技术、操作等方面入手,看问题能否解决。 (2)设计实施:对系统功能进行调查分析,逐步抽象,构造功能模块,建立系统的功能模型、数据模型、动态模型。然后进行总体设计,完成系统的大致框架,画出层次图。然后再进行详细设计工作,完成数据编码工作,设计出数据库和人机界面。

课程设计说明书模板

机械制造学课程设计说明书 题目名称 专业班级 学生姓名 学号 指导教师 机械与电子工程系 二○一四年月日

目录 一、任务书--------------- -------3 二、指导教师评阅表----------------------4 三、序言-------------------------------------------------------------------------------------------3 四、零件的分析-----------------------------------------------------------------------------------3 五、工艺规程的设计------------------------------------------------------------------------------4 (1). 确定毛坯的制造形式---------------------------------------------------------------4 (2). 基面的选择---------------------------------------------------------------------------4 (3). 制订工艺路线------------------------------------------------------------------------4 (4). 机械加工余量、工序尺寸及毛坯尺寸的确------------------------------------5 (5). 确定切削用量及基本工时---------------------------------------------------------6 六、设计心得与小结-----------------------------------------------------------------------------11 七参考文献-------------------------------------------------------------------------------------1 1

燕山大学操作系统课程设计说明书

燕山大学课程设计说明书课程设计名称:操作系统 题目:多道程序缓冲区协调操作 (模拟生产者消费者问题) 课题负责人: 学院:信息科学与工程学院 班级: 姓名: 学号: 课题开发日期:2014年1月13日 自评成绩: A

目录 1概述-------------------------------------------------------------------- ------------------3 目的--------------------------------------------------------3 主要完成的任务----------------------------------------------3 使用的开发工具、开发语言------------------------------------3 本软件解决的主要问题 ---------------------------------------4 2 设计的基本理念、概念和原理------------------------------------------------4 设计的基本理念----------------------------------------------4 基本概念----------------------------------------------------4 基本原理----------------------------------------------------5 3 总体设计----------------------------------------------------5 基本的技术路线:面向对象--------------------------------------------------------5 模块关系及总体流程-------------------------------------------5 4 详细设计----------------------------------------------------7 变量设计----------------------------------------------------7 线程的设计--------------------------------------------------7 button按钮的设计-------------------------------------------8 5编码设计----------------------------------------------------9 开发环境----------------------------------------------------9 注意事项----------------------------------------------------9 主要代码设计------------------------------------------------9 PUTTER线程的设计---------------------------------------------------9 MOVER1线程的设计---------------------------------------------------10 GETTER1线程的设计--------------------------------------------------11 “开始”按钮的设计--------------------------------------------------12 “结束”按钮的设计--------------------------------------------------14 解决的主要难题----------------------------------------------16 6测试出现的问题及其解决方案-------------------------------16 7工程总结----------------------------------------------------16 8参考文献----------------------------------------------------16

机械设计课程设计说明书模板.

燕山大学 机械设计课程设计说明书题目:带式输送机传动装置 学院(系):机械工程学院 年级专业: 09级机械设计及理论 学号: 0901******** 学生姓名:乔旋 指导教师:许立忠 教师职称:教授

目录 一、设计任务书.................................................................. 二、传动方案分析................................... .......................... 三、电动机的选择和参数计算........................................ 四、传动零件的设计计算................................................. 五、轴的设计...................................................................... 六、键的选择校核............................................................ 七、轴承的校核................................................................... 八、联轴器的选择及校核................................................ 九、密封与润滑的选择.................................................... 十、减速器附件及说明................................................... 十一、装配三维图........................................................ 十二、设计小结............................................................. 参考资料...................................................................

燕山大学发电厂电气部分课程设计 大型骨干电厂电气主接线

目录 第一章原始资料的分析 (1) 1.1电压等级 (1) 第二章电气主接线方案 (1) 2.1 电气主接线设计的基本原则 (1) 2.2 具体方案的拟定 (2) 第三章主要电气设备的选择 (4) 3.1 发电机 (4) 3.2 主变压器 (4) 3.4 断路器和隔离开关 (5) 3.5电压互感器 (8) 3.6电流互感器的选择 (9) 3.7 母线的导体 (10) 第四章方案优化 (11) 第五章短路电流计算 (12) 5.1 等效阻抗网络图 (12) 5.2阻抗标幺值计算 (12) 5.3 短路点短路电流计算 (14) Q的计算 (15) 5.4 短路电流热效应 K 第六章校验动、热稳定(设备) (17) 6.1断路器稳定校验 (18) 6.2 隔离开关稳定校验 (18) 6.3电流互感器稳定校验 (19) 6.4 母线导体稳定校验 (20) 第七章心得体会 (20) 参考资料 (21)

大型骨干电厂电气主接线 第一章原始资料的分析 1.1电压等级 根据原始资料的分析可知,需要设计的是一个大型骨干凝汽电厂,共有两个电压等级:220KV,500KV 1.2 系统(电源)、负荷 电压等级进出线回数负荷(max) 负荷(min) 220kv 4 600MW 300MW 500kv 6 1.3 发电机、主变压器容量及台数 发电机容量和台数为6× 300MW (QFSN-300-2) 因此主变压器的台数选为6台。 1.4 联络变压器 选择三绕组变压器,连接两个电压等级,剩余一端引接备用电源。 第二章电气主接线方案 2.1 电气主接线设计的基本原则 电气主接线设计的基本原则是以设计任务书为依据,以国家的经济建设方针、政策、技术规定、标准为准绳,结合工程实际情况,在保证供电可靠、调度灵活、满足各项技术要求的前提下、兼顾运行、维护方便,尽可能的节省投资,就近取材,力争设备元件和设计的先进性与可靠性,坚持可靠、先进、适用、经济、美观的原则。 电气主接线是由高压电器通过连接线,按其功能要求组成接受和分配电能的电路,成为传输强电流,高电压的网络,它要

燕山大学11计算机编译原理课程设计安排

大校11计算机《编译原理》课程设计安排 时间:18周(12月30日-1月3日)地点:信息馆317、318实验室 一、设计目的:研究、改进或自行设计、开发一个简单的编译程序或其部分功能,加深对编译理论和编 译过程的理解。编程语言不限。 二、设计任务 (学号最后一位%4+1): 1.扩展PL/0编译程序功能 目的:扩充PL/0编译程序功能, 要求:(1)阅读、研究PL/0编译程序源文件。 (2)在上述工作基础上,可有选择地补充、完善其中词法分析、语法分析、语义分析、目标代码生成、目标代码解释执行等部分的功能。如以语法分析部分为例,则可以增加处理更多语法成分的功能,如可处理一维数组、++、--、+=、-=、*=、/=、%(取余)、!(取反)、repeat、for、else、开方、处理注释、错误提示、标示符或变量中可以有下划线等。还可以增加类型,如增加字符类型、实数类型;扩充函数如有返回值和返回语句的,有参数函数等; (3)设计编制典型的运行实例,以便能反映出自己所作的改进。 2. 基于LL(1)方法的语法分析程序 目的:设计、编制和调试一个典型的语法分析方法,进一步掌握常用的语法分析方法。 要求: (1)根据LL(1)分析法编写一个语法分析程序,可根据自己实际情况,选择以下一项作为分析算法 的输入:a.直接输入根据已知文法构造的分析表M; b.输入文法的FIRST(α)和FOLLOW(U)集合,由程序自动生成文法的分析表M; c.输入已知文法,由程序自动构造文法的分析表M。 (2)所开发的程序可适用于不同的文法和任意输入串,且能判断该文法是否为LL(1)文法。 (3)如完成前两项,可增加运行实例,对于输入的文法和符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子,并要求输出分析过程。 3.基于LR(0)方法(或SLR(1)方法、或LR(1)方法)的语法分析程序 要求: 可根据自己实际情况,选择以下一项作为分析算法的输入: (1)直接输入根据己知文法构造的LR(0)(或SLR(1) 、或LR(1))分析表。 (2)输入已知文法的项目集规范族和转换函数,由程序自动生成LR(0) ( 或SLR(1) 、或LR(1))分析表; (3)输入已知文法,由程序自动生成LR(0) ( 或SLR(1) 、或LR(1))分析表。 目的和其它要求参考“基于LL(1)方法的语法分析程序” 4.词法分析程序设计 目的:设计、编制和调试一个具体的词法分析程序,加深对词法分析的理解。 要求: 通过对PL/0词法分析程序(GETSYM)的分析,编制一个具有以下功能的词法分析程序: a.输入为待进行词法分析的源程序,输出为单词串,即由(单词,类别)所组成的二元组 序列; b.有一定的错误检查能力,例如能发现2a这类不能作为单词的字符串。 选作题目:若以上题目均不感兴趣,可申请做选作题目。 ①基于Lex和Y acc的C-Minus编译器。 基于W indows环境下的Lex和Yacc集成环境Parser Generator, 实现了以C _ M inus ( C 语言子集) 语言为源语言的编译器。主要从编译技术的角度对C _ M inus语言的词法分析、语法分析、符号表的建立以及目标代码生成的过程进行详细的阐述。 ②利用Lex和Yacc工具制作一个小型的计算器编译器。 功能如下:1. 分别能够完成十进制、八进制、十六进制的一些基本运算。可以通过DEC_ON,OCT_ON,HEX_ON三个开关进行控制。 2.能够完成一些基本的算术运算和逻辑运算,如:加、减、乘除、乘方、取模、与、或、非等运算。 3.提供帮助提示操作,如:HELP命令,清屏命令CLEAR等,错误提示信息等。

燕山大学课程设计---移位与卷积

燕山大学 课程设计说明书题目:移位与卷积 学院(系):电气工程学院 年级专业:检测(2) 学号: 120103020122 学生姓名:赵家德 指导教师:王娜 教师职称:讲师

电气工程学院《课程设计》任务书 课程名称:数字信号处理课程设计 说明:1、此表一式四份,系、指导教师、学生各一份,报送院教务科一份。 2、学生那份任务书要求装订到课程设计报告前面。 电气工程学院教务科

目录 第一章、MATLAB简述 (1) 第二章、基本原理介绍 (2) 第三章、命令介绍、仿真及结论 (4) 3.1命令介绍 (4) 3.2仿真 (4) 3.2.1仿真总程序 (4) 3.2.2仿真图 (8) 3.3从程序仿真与仿真图得出的结论 (9) 第四章、心得体会 (10) 参考文献 (11)

第一章 MATLAB简述 MATLAB 是一个可视化的计算程序,被广泛地应用在科学运算领域里。它具有功能强大、使用简单等特点,内容包括:数值计算、符号计算、数据拟合、图形图像处理、系统模拟和仿真分析等功能。此外,用Matlab还可以进行动画设计、有限元分析等。 MATLAB系统包括五个主要部分: 开发环境:这是一组帮助你使用MATLAB的函数和文件的工具和设备。这些工具大部分是图形用户界面。它包括MATLAB桌面和命令窗口,命令历史,和用于查看帮助的浏览器,工作空间,文件和查找路径。 MATLAB数学函数库:这里汇集了大量计算的算法,范围从初等函数如:求和,正弦,余弦和复数的算术运算,到复杂的高等函数如:矩阵求逆,矩阵特征值,贝塞尔(Bessel)函数和快速傅立叶变换等。 MATLAB语言:这是一种高水平的矩阵/数组语言,含有控制流语句,函数,数据结构,输入/输出,和面向对象编程特征。它允许“小型编程”以迅速创立快速抛弃型程序,以及“大型编程”以创立完整的大型复杂应用程序。 句柄制图:这是MATLAB制图系统。它包括高级别的二维、三维数据可视化,图像处理,动画,以及表现图形的命令。它还包括低级别的命令,这使你不但能在MATLAB的应用中建立完整的图形用户界面,而且还能完全定制图形的外观。 MATLAB应用程序界面(API):这是使你编写与MATLAB相合的C或Fortran程序的程序库。它包括从MATLAB中调用程序(动态链接),调用MATLAB为计算引擎,和读写MAT-文件的设备。 MATLAB的重要作用与此次课程设计的关系 MATLAB是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。而线性卷积和循环卷积在工程上的应用亦非常广泛,在MATLAB软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

超市进销存管理系统课程设计实验报告

燕山大学经济管理学院 实验实习 实验报告 组长: 组员: 经济管理学院电子商务系

2014年1月 在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市高速的发展,其经营管理也变得愈加复杂,早期的销售员站柜台的形式早已不能满足现有销售的发展,超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。对于我国来说,超市已经普遍存在,这种自动化管理也成为必要,有必要通过管理系统的应用来提高超市的服务效率。下面我们将对其进行系统分析与设计、数据库分析、功能模块方面做细致介绍。 一、系统分析 (一)需求分析 超市进销存管理系统的主要工作是对企业的进货、销售和库存以信息化的方式进行管理,最大限度的减少各个环节中可能出现的错误,有效减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,使企业能够合理安排进、销、存的每个关键步骤,提升企业市场竞争。 超市数据资料有些属内部资料,不能为外人所知,系统须有保密措施,设置密码。查看资料需输入正确密码,销售人员销售货物需输入代号才能打开收银柜。 针对经营管理中存在的问题,参观兴龙广缘卖场后,我们对产品进销存合理化提出了更高的要求。 通过实际调查,要求超市进销存管理系统具有以下功能:

○1界面设计美观大方,操作方便、快捷、灵活。 ○2实现强大的进销存管理,包括基本信息、进货、销售和库存管理。 ○3能够在不同的操作系统下运行,不局限于特定平台。 ○4提供数据库备份和修复功能。 ○5提供库存盘点功能。 ○6提供技术支持的联系方式,可以使用邮件进行沟通,或者直接连接到技术网站。 (二)可行性分析 1.背景: 兴龙广缘是一家以商品零售为主的商业企业,为了更好地管理进货、销售和库存,现需要开发一个超市进销存管理系统,项目名称为“超市进销存管理系统”。 2.可行性研究的前提: (1)要求: a.附加进货、库存和销售功能以增加管理的灵活性。 b.系统的功能要符合本企业的实际情况。 c.管理内容较多,涉及窗口容易混乱,应提供窗口集合操作和菜单管理。

燕山大学SolidWorks课程设计

课程设计说明书 学生姓名:赵志远杨新宇吕林猛赵帅任江周 王晓峰翟文朔孙亚光 专业班级:轧钢二班 指导教师:黄华贵、许石民、于凤琴、陈雷 得分: 答辩时间:2014.12.12

燕山大学课程设计(论文)任务书院(系):机械工程学院基层教学单位:冶金机械系

目录 第一章矫直机下矫直辊系装配及原理 (4) 1.1 矫直机下矫直辊系结构组成 (4) 第二章零件设计过程 (4) 2.1 辊系零件创建 (4) 2.2部分零件图 (5) 第三章矫直机下矫直辊系装配 (6) 3.1 辊系装配 (6) 3.2装配图 (6) 第四章矫直机下矫直辊系工程图创建 (7) 4.1创建过程 (7) 4.2工程图 (7) 第五章设计心得体会 (8) 参考文献 (9)

第一章矫直机下矫直辊系装配 1.1 矫直机下矫直辊系结构组成 电机、键、联轴器、挡圈、轴向调整蜗杆、定距环、套、唇形密封圈、轴向调整透盖、螺栓、螺母、垫圈、接近开关信号板、接近开关托架、螺柱、薄螺母、固定螺母、辊片固定螺母、固定环、销、固定垫圈、辊片套、螺钉、矫直辊、衬套、透盖、杯形套、外定距环、内定距环、轴承、操作侧止动垫片、操作侧锁紧螺母下矫直辊轴、定距套、杯形套、轴承、锁紧螺母、止动垫片、螺钉、下套筒、蜗轮箱箱体、蜗轮箱上盖、轴向调整蜗轮、轴向调整环、油封 第二章零件设计过程 2.1 辊系零件创建 利用SolidWorks画出各零件图。 创建过程: 1、画出草图; 2、对草图进行拉伸、旋转; 3、对多余部分切除、钻孔; 4、进一步加工; 5、保存。

2.2 部分零件图下套筒 涡轮箱上盖 下矫直滚轴

程序设计说明书

燕山大学课程设计说明书课程设计名称:操作系统题目:多道程序缓冲区协调操作 班级:软件工程2班 开发小组名称:多道程序缓冲区协调操作小组课题负责人:马灿 课题组成员:马灿 姓名:马灿 学号:100120010039 班级:软件工程2班 自评成绩:A 课题开发日期:2012.01.

目录 1概述 (4) 1.1.目的 (4) 1.2 .主要完成的任务 (4) 1.3.使用的开发工具 (5) 1.4. 解决的主要问题 (5) 2.使用的基本概念和原理 (5) 2.1.基本概念 (5) 2.2.基本原理 (5) 3总体设计 (6) 3.1基本的技术路线 (6) 3.2软件的总体结构 (6) 3.3模块关系 (6) 3.4总体流程 (6) 3.5创立的进程、线程 (6) 4.详细设计 (7) 4.1.线程操作的函数 (7) 4.2.三个缓冲池对应三个空区信号,通用函数 (7) 4.3三个缓冲池对应三个数据信号 (7)

4.4互斥信号 (7) 5.编码设计 (8) 5.1开发环境的设置和建立 (8) 5.2程序设计时要注意的事项 (8) 5.3关键控件的特点和使用 (9) 5.4主要程序的代码设计及注释 (9) 5.5解决的技术难点、经常犯的错误 (14) 6. 测试时出现过的问题及其解决方法 (14) 6.2.问题2 (14) 6.1.问题1 (14) 7.软件使用说明 (14) 7.1基本功能 (14) 7.2需要运行的环境 (14) 7.3运行 (15) 7.4操作 (15) 8.总结 (15) 9.参考文献 (16)

1概述 1.1.目的 通过实现多线程的生产者、消费者问题,掌握对线程、互斥信号及其同步机制的学习,巩固对线程实验的代码的实践能力,加深对相关基本概念的理解,将学习内容与实践有机的结合起来。而本实现界面的目的是通过动态演示,模拟多线程生产者消费者及其进程同步和互斥的程序设计的基本方法。 1.2 .主要完成的任务 有多个PUT 操作要不断循环地向Buffer1送字符数据,有Move1操作不断地将Buffer1的数据取到Buffer2,Move2操作不断地将Buffer2的数据取到Buffer3,有多个GET 操作要不断地从Buffer3中取数据。PUT 、 MOVE 、 GET 每次操作一个数据,为了在操作的过程中要保证数据不丢失, 每个Buffer 每次只能接受一个PUT 或一个Move 或一个Get ,多个操作不能同时操作同一BUFFER 。设计一个多道程序完成上述操作。 图1 Buffer 操作 基本功能要求 (1) 可以随机产生字符数据,由put 操作放入Buff1,buffer 中容量单位是字符。 (2)提供良好图形界面,显示Buffer 的操作过程。 (3) 可以设定各Buffer 的容量、PUT 、GET 、Move 操作的个数; (4) 可以设定PUT 、GET 、Move 操作的速度; (5) 实时显示每个Buffer 中数据的个数和数据的内容,空闲Buffer 的空间的个数; (6) 实时显示线程、进程所处于等待(阻塞)状态的个数 (7)程序运行结束,显示汇总数据: 总的运行时间; Buffer 中数据的个数; 已放入BUFFER 的数据个数; 已放已取的数据个数; 平均每个buffer 中的数据个数。 1.3. 使用的开发工具 Windows 7操作系统,V C++6.0开发工具,C++编程语言 Put Get Move1

施工组织课程设计说明书

施工组织课程设计说明书班级姓名 指导教师 土木教研室 2012年5 月

施工组织课程设计说明书 ---多层砖混结构办公楼 一、编制依据 1、设计文件及技术规范 (1)本工程的建设主管单位提供的设计任务书。 (2)本工程的建设主管单位与土木工程教研室签订的建设工程设计合同。 (3)当地城市建设规划管理部门对本工程方案设计的审批意见。 (4)本工程的建设主管单位批准的方案设计文件及有关方案修改往来的一般性函。 (5)现行有关的国家规范、规定、规程。 (6)建筑结构可靠度设计统一标准(GB50068—2001)。 (7)建筑结构荷载规范(GB50009—2001)。 (8)建筑地基基础设计规范(GBS0007—2002)。 (9)房屋建筑图纸统一标准(GB/T50001-2001)。 (10)混凝土结构设计规范(GB50010 2002)。 (11)建筑工程项目管理规范(GB/T505326-2001)。 (12)建筑抗震设计规范(GB500t1一2001)。 (13)建筑地面设计规范(GB50037-1996)。 (14)住宅设计规范(GB50096-1999)。 (15)混凝土外加剂应用技术规范(GB50119 2003)。 2、编制原则 本施工组织设计编制参照房屋建筑学,现行国家标准,针对工程特点,重点从科学的施工管理、最佳的组织部署、全面质量控制、先进的施工工艺等各方面作出规划,在确保工程质量、进度和安全的前提下降低消耗、节约成本。 二、工程概况 1、建筑物概况 本工程为某省××公司的办公楼,位于××市郊××公路边,建筑总面积为6262㎡,平面形式为L型,南北方向长61.77m,东西方向总长39.44m。该建筑物大部分为五层,高18.95m,局部六层,高22.45m,附楼(F~L轴)带地下室,在⑾轴线处有一道温度缝,在F轴线处有一道沉降缝。其总平面、立面、平面如附图所示。 本工程承重结构除门厅部分为现浇钢筋混凝土半框架结构外,皆采用砖混结构。基础埋深1.9 m,在C15素混凝土垫层上砌条形砖基础,基础中设有钢筋混凝土地圈梁,实心砖墙承重,每层设现浇钢筋混凝土圈梁;内外墙交接处和外墙转角处设抗震构造柱;除厕所、盥洗室采用现浇楼板外,其余楼板和屋面均采用预制钢筋混凝土多孔板,大梁、楼梯及挑檐均为现浇钢筋混凝土构件。 室内地面除门厅、走廊、试验室、厕所、后楼梯、踏步为水磨石面层外,其他皆采用水泥砂浆地面。室内装修主要采用白灰砂浆外喷106涂料,室外装修以涂料为主。窗间墙为干粘石,腰线、窗套为贴面砖。散水为无筋混凝土一次抹光。 屋面保温为炉渣混凝土,上做二毡三油防水层,铺绿豆砂。上人屋面部分铺设预制混凝

课程设计说明书

《管套注塑成型与模具设计》 课程设计说明书 机械1304 1040513435 谢荣连 周建华 时间: 12 18-12 26 目录 1、 零件成型工艺分析 ................................................ .1 1.1 产品结构 分析及材料选择 2、 设计计算 .............................................. .1 2.1 、计算制品的体积和重量 JIANGNAN UNIVERSITY 班级: 学号: 姓名: 指导老师:

2.2、确定型腔数目 2.3、选择注射机型号与校核 2.4、选择分型面 2.5、确定型腔的布置方案 3、模具结构设计...................................................... .4 3.1、模架的设计与选择 3.2浇注系统的设计 3.3顶出机构设计 3.4冷却系统设计 4、模具3D结构设计.................................................... .7 5、结束语8 6、参考文献.8

1零件成型工艺分析 产品结构分析及材料选择 1.1.1产品结构分析 产品形状如图,产品为管套,根据PPF水管的常用规格确定壁厚为2.5mm图中 A B C、D 尺寸分别为25、38、2、18mm 材料分析与选择 该产品为管套,材料采用PPR PPF是由(PP和PE)气相法合成的无规共聚聚丙烯,其结构 特点是PE分子无规则的链接在PP分子当中。利用PPF原料生产的管材又称无规共聚聚丙烯管材 我们使用UG软件能自动计算出所画图形的体积,选择PVC材料,也可根据形状进行手动几何计算得到图形的体积和质量。 通过计算塑件的体积V塑=8.2(cm3) 塑件的重量M塑件=p V塑=11.5g 式中:p——塑料密度。 浇注系统体积V浇=3.7 (cm3 浇注系统重量M浇p V浇=5.1g 故V 总=2V塑+ V浇=20.1 (cm3 故M总=2X 11.5+5.07=28.1 (g) 2.设计计算

操作系统考试试题.doc

一、选择一个最合适的答案,填写在()中(1分*30) 1.当线程处于阻塞状态时,线程( )。 A. 正在占用处理机 B.没有占用处理机 C. 将进入执行状态 D.将进入结束状态 2.当多道程序系统中发生死锁时,()。 A.计算机系统不能处理任何事情 B.某个进程不能够执行 C.一组进程相互等待,并进入阻塞状态 D.不能进行输入和输出 3.超线程机制是由()实现的。 A. 进程 B.处理机内部 C. 线程 D.OS 4.针对文件既要共享又要安全的要求,可以采取的措施是()。 A.采用虚拟管理技术 B.采用存取控制机制 C.采用系统容错技术 D.采用“后备系统” 5.Windows2000的安全性达到了可信计算机系统标准的()级。 A. A1 B. B2 C. C2 D. C1 6. 钥匙盘主要用于() A. 身份验证 B. 防病毒 C. 软件反拷贝 D. 提高可靠性 7.进程调度的基本功能是选择( ). A.就绪的进程 B.后备的作业 C.空闲内存 D.空闲设备 8.对于普通用户而言,OS的()是最重要。 A.开放性 B.方便性 C.有效性 D.可扩充性 9.计算机的普通用户通常通过()使用OS所提供的服务。 A.中断键盘 B.控制接口 C.特权指令 D.系统调用 10.()进程调度算法适合分时系统. A.先来先服务 B.轮转 C.短作业优先 D.最高优先级

11.进程的控制信息和描述信息存放在()。 A.JCB B.PCB C.AFT D.SFT 12.装机的种类最多的OS 是()。 A.MS-DOS B. Linux数据库管理系统 C.Unix D. Windows 13.解除死锁时,系统最有可能使用( )进程控制原语。 A. Create B. Delete C. Block D. Activate 14.一般用户最喜欢使用()系统。 A.手工操作 B.单道批处理 C.多道批处理 D.多用户分时 15.主流OS最重要的特征是()。 A.可运行软件的数量众多 B.技术的最先进 C.装机的种类多 D.使用方便 16.信息的保护、存取控制和共享可以以用户为基本单位进行,这个OS的安全级别最可能在()级上。 A. C1 B. C2 C. A D. D 17.与计算机硬件关系最密切的软件是(). A.编译程序 B.数据库管理系统 C.游戏程序 D.OS 18.( )进程调度算法适合紧急事件的处理。 A.先来先服务 B.轮转 C.可抢占优先级 D.优先级 19.进程依靠什么从阻塞状态过渡到就绪状态()。 A.操作人员的命令 B.系统服务 C.等待下一个时间片到来 D.由"合作"进程唤醒 20.()物理结构的文件适合进行文件备份。 A.连续 B.索引 C.链接 D.网状 21.新创立的进程首先进入( )状态。 A.就绪 B.执行 C.阻塞 D.挂起 22.早期的OS主要追求的是()。 A.系统的效率 B.用户的方便性 C.可移植 D.可扩充性 23.在OS中,文件的存取控制可以使()。 A. 用户间不能相互删除文件 B. 内存中的多道程序间不相互破坏 C. 内存中的程序不破坏OS D. 防止黑客攻击 24.页的逻辑地址形式是:页号24位,页内地址10位,内存128M,辅存10G,那么虚拟存储器最大实际容量可能是( ) 。

相关主题
文本预览
相关文档 最新文档