计算机课程设计

计算机课程设计
计算机课程设计

可编辑

数据结构课程设计

题目小型图书馆管理系统

系(部) 电子与信息工程系

班级11级计算机科学与技术

姓名郭小龙

学号2011222240

指导教师付争方

2013年01月08日

电子与信息工程系

《数据结构》课程设计任务书

计算机教研室制

小型图书馆管理系统

郭小龙

安康学院计算机科学与技术11级陕西省安康市725000

摘要:本文采用单链表,通过对链表的技术的探究,利用C语言实现了从程序打开新建文件并写入内容,并进行插入、查找、删除、排序的功能,同时克服了C语言下数组长度的有限性。经实验验证,效果良好。

关键字:单链表;结构体;建立;指针;插入;查找;删除;排序。

1.引言

线性表是数据结构的一个基本内容。线性表的存储结构有顺序存储和链式存储结构,也就是我们常说的顺序表和链表。顺序和链式存储时线性表不同的存储方式,各有优劣,而不同的存储方式所对应的算法操作也不同,实现的效率也有差异。通过对两种存储方式进行对比分析,加深对链表的理解,本文分析了数据结构中链表的建立,插入,查找,删除,排序运算的实现并给出相应的程序。使人们对链表的优缺点有一个明确的认识。

2.链表的建立以及操作

2.1. 基本术语

(1)头节点

链表中的第一个节点,它没有存放有效地数据,只时使用了该节点的指针成员,指针成员指向了链表中的第一个有效节点的地址。

(2)首节点和尾节点

链表中的第一个存放有效数据的节点就是首节点,最后一个存放有效数据的节点。

(3)data域和next域

一个节点包括两个域,data域(数据域)用来存储节点的值,next 域(指针域)用来存放存储数据元素的直接后继的地址。

2.2. 链表

链表即用一组地址任意的存储单元存放线性表中的数据元素,以元素和指针表示一个节点,是一种链式的存取的结构,为找第i个数据元素则必须找到第i-1个数据元素,所以查找第i个数据元素的基本操作为:移动指针比较i和j。

2.3. 链表的建立和基本操作

链表的建立需要使用标准malloc(size)函数来为其申请一个长度为size字节的连续空间,

建立时有头插法和尾插法两种方法。基本操作包括链表的插入、查找、删除、排序。

3.链表的建立和操作的算法描述

3.1. 链表的建立

单链表的建立有头插法、尾插法两种方法。

(1)头插法

单链表是用户不断申请存储单元和改变链接关系而得到的一种特殊数据结构,将链表的左边称为链头,右边称为链尾。头插法建单链表是将链表右端看成固定的,链表不断向左延伸而得到的。头插法最先得到的是尾结点。由于链表的长度是随机的,故用一个while循环来控制链表中结点个数。假设每个结点的值都大于O,则循环条件为输入的值大于o。申请存储空间可使用malloc()函数实现,需设立一申请单元,但malloc()函数得到的指针并不是指向结构体的指针,需使用强制类型转换,将其转换成结构体型指针。刚开始时,链表还没建立,是一空链表,head指针为NULL。链表建立的过程是申请空间、得到数据、建立链接的循环处理过程。

(2)尾插法

若将链表的左端固定,链表不断向右延伸,这种建立链表的方法称为尾插法。尾插法建立链表时,头指针固定不动,故必须设立一个搜索指针,向链表右边延伸,则整个算法中应设立三个链表指针,即头指针head、搜索指针p2、申请单元指针pl。尾插法最先得到的是头节点。

3.2. 基本操作的算法(插入、查找、删除、排序)

3.2.1.插入

插入运算是将值为x的新结点插入到表的第i个结点的位置上,即插入到ai-1与ai之间。

(1)找到ai-1存储位置p

(2)生成一个数据域为x的新结点*s

(3)令结点*p的指针域指向新结点(4)新结点的指针域指向结点ai

3.2.2.查找(按值查找和按序号查找)

(1)按序号查找

设带头结点的单链表的长度为n,要查找表中第i个结点,则需要从单链表的头指针L出发,从头结点(H->next)开始顺着链表扫描,用指针p指向当前扫描到的结点,初值指向头结点,用j左计数器,累计当前扫描过的结点数(初值为0),当j=i时,指针所指结点就是要找的第i个结点。

(2)按值查找

按值查找是指在单链表中查找是否有结点值等于e的结点,若有的话,则返回首次找到的其值为e的结点的存储位置,否则返回NULL。查找过程从单链表的头指针指向的头结点出发,顺着链逐个将结点的值和给定值e作比较。

3.2.3.删除(按值删除和按序号删除)

(1)按序号删除

与在带头结点的单链表L中删除第i个结点,则首先要通过计数方式找到第i-1个结点并使p指向第i-1个结点,而后删除第i个结点并释放结点空间。

(2)按值删除

在链表中删除节点值等于e的节点,则首先要通过指针的向后移动比较每个节点data域值与e是否相等,相等的话则将前一个节点的next指向这个节点的后一个节点,释放删除节点的空间。

3.2.

4.排序

链表的排序可用很多的方法,比如选择排序和直接插入排序又或者冒泡排序。排序是需要用节点的data域,比较其值得大小。然后通过指针修改节点只链表中的位置。

4.结语

通过以上的探究,我们可以发现链表就像一条锁链一样,一环扣一环。在操作中它要不断的进行遍历,从一个节点跳到下一个节点,然后修改它前后节点的指针。并且在操作的节点距离首节点比较近的时候花费的时间是比较上的。但是距离比较远是则显示了它的不足之处,所以我们在对一组数据操作时选用正确的存储方式是非常重要的。

参考文献:

耿国华. 数据结构—用c语言描述[M] .北京:高等教育出版社,2005.

附件:

#include

#include

#include

#include

struct books_list

{

char author[20]; /*作者名*/

char bookname[20]; /*书名*/

char publisher[20]; /*出

版单位*/

char pbtime[15]; /*出版时间*/

char number[20]; /*书号*/

float price; /*价格*/

char classfy[10]; /*分类号*/

struct books_list * next; /*链表的指针域*/

};

struct books_list * Create_Books_Doc(); /*新建链表*/

void InsertDoc(struct books_list * head); /*插入*/

void DeleteDoc(struct books_list * head);/*删除*/

void Print_Book_Doc(struct books_list * head);/*浏览*/

void search_book(struct books_list *head); /*查询*/

void info_change(struct books_list * head);/*修改*/

void arrange(struct books_list * head);/*排序*/

void save(struct books_list * head);/*保存数据至文件*/

/*新建链表头节点*/

struct books_list * Create_Books_Doc() {

struct books_list * head;

head=(struct books_list

*)malloc(sizeof(struct books_list)); /*分配头节点空间*/

head->next=NULL; /*头节点指针域初始化,定为空*/

return head;

}

/*保存数据至文件*/

void save(struct books_list * head)

{

struct books_list *p;

FILE *fp;

p=head;

fp=fopen("data.txt","w+"); /*以写方式新建并打开data.txt文件*/

fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n"); /*向文件输出表格*/ fprintf(fp,"┃书号┃ 书名┃ 作者┃ 出版单位┃ 出版时间┃分类号┃ 价格┃\n");

fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/

while(p->next!= NULL)

{

p=p->next;

fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10. 10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f

┃\n",p->number,p->bookname,p->aut hor,p->publisher,p->pbtime,p->classfy, p->price);

}

fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

fclose(fp);

printf(" 已将图书数据保存到data.txt 文件\n");

}

/*插入*/

void InsertDoc(struct books_list *head) {

/*定义结构体指针变量s指向开辟的新结点首地址p为中间变量*/

struct books_list *s, *p;

int n=0;

char flag='Y'; /*定义flag,方便用户选择重复输入*/

p=head;

/*遍历到尾结点,p指向尾结点*/

while(p->next!= NULL)

{

p=p->next;n++;

}

/*开辟新空间,存入数据,添加进链表*/

while(flag=='Y'||flag=='y')

{

s=(struct books_list

*)malloc(sizeof(struct books_list)); printf("\n 请输入图书书号:");

fflush(stdin);

scanf("%s",s->number);

printf("\n 请输入图书书名:");

fflush(stdin);

scanf("%s",s->bookname);

printf("\n 请输入图书作者名:");

fflush(stdin);

scanf("%s",s->author);

printf("\n 请输入图书出版社:");

fflush(stdin);

scanf("%s",s->publisher);

printf("\n 请输入图书出版时间:");

fflush(stdin);

scanf("%s",s->pbtime);

printf("\n 请输入图书分类号:");

fflush(stdin);

scanf("%s",s->classfy);

printf("\n 请输入图书价格:");

fflush(stdin);

scanf("%f",&s->price);

printf("\n");

p->next=s; /*将新增加的节点添加进链表*/

p=s; /*p指向尾节点,向后移*/ s->next=NULL;

printf(" ━━━━ 添加成功!━━━━");

printf("\n

继续添加?(Y/N):");

fflush(stdin);

scanf("%c",&flag);

printf("\n");

if(flag=='N'||flag=='n')

{break;}

else if(flag=='Y'||flag=='y') {continue;}

}

save(head); /*保存数据至文件*/ return;

}

/*查询操作*/

void search_book(struct books_list

*head)

{

struct books_list * p;

char temp[20];

p=head;

if(head==NULL || head->next==NULL) /*判断数据库是否为空*/

{

printf("

━━━━ 图书库为空!━━━━\n");

}

else

{

printf("请输入您要查找的书名: ");

fflush(stdin);

scanf("%s",temp);

/*指针从头节点开始移动,遍历至尾结点,查找书目信息*/

while(p->next!= NULL)

{

p=p->next;

if(strcmp(p->bookname,temp)==0)

{

printf("\n图书已找到!\n");

printf("\n");

printf("书号: %s\t\n",p->number);

printf("书

名: %s\t\n",p->bookname);

printf("作者名: %s\t\n",p->author);

printf("出版单

位: %s\t\n",p->publisher);

printf("出版时

间: %s\t\n",p->pbtime);

printf("分类号: %s\t\n",p->classfy);

printf("价格: %.2f\t\n",p->price);

}

if(p->next==NULL)

{

printf("\n查询完毕!\n");

}

}

}

return;

}

/*浏览操作*/

void Print_Book_Doc(struct books_list * head)

{

struct books_list * p;

if(head==NULL || head->next==NULL) /*判断数据库是否为空*/

{

printf("\n

━━━━ 没有图书记录!

━━━━\n\n");

return;

}

p=head;

printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");

printf("┃书号┃ 书名┃ 作

者┃ 出版单位┃ 出版时间┃分类号┃ 价格┃\n");

printf("┣━━━╋━━━━━╋━━━━

━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/

while(p->next!= NULL)

{

p=p->next;

printf("┃%-6.6s┃%-10.10s┃%-10.10s ┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->number,p->bookname,p->aut hor,p->publisher,p->pbtime,p->classfy, p->price); /*循环输出表格*/

}

printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

printf("\n");

}

/*修改操作*/

void info_change(struct books_list * head)

{

struct books_list * p;

int panduan=0; /*此变量用于判断是否找到书目*/

char temp[20];

p=head;

printf("请输入要修改的书名:");

scanf("%s",temp);

while(p->next!= NULL)

{

p=p->next;

if(strcmp(p->bookname,temp)==0)

{

printf("\n 请输入图书书号:");

fflush(stdin);

scanf("%s",p->number);

printf("\n 请输入图书书名:");

fflush(stdin);

scanf("%s",p->bookname);

printf("\n 请输入图书作者名:");

fflush(stdin);

scanf("%s",p->author);

printf("\n 请输入图书出版社:");

fflush(stdin);

scanf("%s",p->publisher);

printf("\n 请输入图书出版时间:");

fflush(stdin);

scanf("%s",p->pbtime);

printf("\n 请输入图书分类号:");

fflush(stdin);

scanf("%s",p->classfy);

printf("\n 请输入图书价格:");

fflush(stdin);

scanf("%f",&p->price);

printf("\n");

panduan=1;

}

}

if(panduan==0)

{

printf("\n

━━━━ 没有图书记录!

━━━━\n\n");

}

save(head); /*保存数据至文件*/ return;

}

/*删除操作*/

void DeleteDoc(struct books_list * head) {

struct books_list *s,*p; /*s为中间变量,p为遍历时使用的指针*/

char temp[20];

int panduan; /*此变量用于判断是否找到了书目*/

panduan=0;

p=s=head;

printf(" [请输入您要删除的书名]:");

scanf("%s",temp);

/*遍历到尾结点*/

while(p!= NULL)

{

if(strcmp(p->bookname,temp)==0)

{

panduan++;

break;

}

p=p->next;

}

if(panduan==1)

{

for(;s->next!=p;) /*找到所需删除卡号结点的上一个结点*/

{

s=s->next;

}

s->next=p->next; /*将后一节点地址赋值给前一节点的指针域*/

free(p);

printf("\n

━━━━ 删除成功! ━━━━\n");

}

else/*未找到相应书目*/

{

printf(" 您输入的书目不存在,请确认后输入!\n");

}

save(head); /*保存数据至文件*/ return;}

/*排序操作*/

void arrange(struct books_list * head) {

struct books_list *temp,*q,*p;

if(head==NULL ||

head->next==NULL) /*判断数据库是否为空*/

{

printf("\n

━━━━ 没有图书记录!

━━━━\n\n");

return;

}

p = head->next;

q = head;

temp = NULL;

if (p->next == NULL)

return ;

else

{

while (p && p->next)

{

q = head;

/*查找插入位置*/

while (q->next->number < p->next->number)

q = q->next;

/*如果要插入的位置不与原位置相同,则执行插入*/

if (q != p)

{

temp = p->next;

p->next = temp->next;

temp->next = q->next;

q->next = temp;

}

else

p = p->next;

}

}

save(head); /*保存数据至文件*/ return;

}

int main(void)

{

struct books_list * head;

char choice;

head=NULL;

for(;;) /*实现反复输入选择*/

{

printf("

┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");

printf(" ┃ ┃

socat 图书管理系统┃

┃\n");

printf(" ┃

┗━━━━━━━━━━━━━━━━━━━┛ ┃\n");

printf(" ┃

●[1]图书信息录入┃\n"); printf(" ┃

┃\n");

printf(" ┃

●[2]图书信息浏览┃\n"); printf(" ┃

┃\n");

printf(" ┃

●[3]图书信息查询┃\n"); printf(" ┃

┃\n");

printf(" ┃

●[4]图书信息修改┃\n"); printf(" ┃

┃\n");

printf(" ┃

●[5]图书信息插入┃\n"); printf(" ┃

┃\n");

printf(" ┃ ●[6]图书信息删除┃\n"); printf(" ┃

┃\n");

printf(" ┃

●[7]图书信息排序┃\n"); printf(" ┃

┃\n");

printf(" ┃

●[8]退出系统┃\n"); printf("

┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("

请选择:");

fflush(stdin);

scanf("%c",&choice);

if(choice=='1')

{

if(head==NULL)

{

head=Create_Books_Doc();

}

InsertDoc(head);

}

else if(choice=='2')

{

Print_Book_Doc(head);

}

else if(choice=='3')

{

search_book(head);

}

else if(choice=='4')

{

info_change(head);

}

else if(choice=='5')

{

InsertDoc(head);

}

else if(choice=='6')

{

DeleteDoc(head);

}

else if(choice=='7')

{

arrange(head);

}

else if(choice=='8')

{

printf("\n");

printf(" ━━━━━━━━ 感谢使用图书管理系统

━━━━━━━━\n");

break;

}

else

{

printf("

━━━━ 输入错误,请重新输入!━━━━");

break;

}

}

return 0;

}

流程图:

运行结果截图:

初始化界面录入图书信息界面

浏览所有图书界面

查询结构界面修改图书信息界面

删除界面插入界面

排序界面

退出界面

操作系统课程设计题目

课程设计任务书 一、课程设计目的 《计算机操作系统》课程设计是计算机类专业的集中实践性环节之一,是学习完《计算机操作系统》课程后进行的一次全面的综合练习。其目的在于加深对操作系统课程的理解,使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,理解操作系统在计算机系统中的作用、地位和特点,具有分析实际操作系统,设计、构造和开发现代操作系统的基本能力,为今后从事的各种实际工作,如设计、分析和改进各种系统软件和应用软件提供必要的软件理论基础。 二、课程设计内容及要求 课程设计要求: 每位同学从下述设计任务中任选一个任务完成,上机验收运行结果,现场提问,并提交所完成该任务的课程设计报告。 实验要求: 1)上机前认真使用C语言编写好程序,采用Visual C++6.0作为编译环境; 2)上机时独立调试程序 3)上机验收运行结果,现场提问 4)根据具体任务要求,提交课程设计实验报告,报告内容包括:课程设计目的、内容、基本原理、模块划分、数据结构、算法设计、程序流程图(包括主程序流程图、模块详细设计流程图等)、以及算法源码(必须有相关注释,以有助于说明问题为宜,不得全盘打印而不加任何注释)、心得体会等。

设计内容一页式虚拟存储管理页面置换算法 1.目的和要求 在熟练掌握计算机虚拟存储技术的原理的基础上,利用一种程序设计语言模拟实现几种置换算法,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础 2.实验内容 阅读教材《计算机操作系统》,掌握存储器管理相关概念和原理。 模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论。 前提: (1)页面分配采用固定分配局部置换。 (2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。 (3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。 3.实验环境 Windows操作系统、VC++6.0、C语言 4.实验提示 (1)基础知识 存储管理是操作系统进行资源管理的一个重要功能。现代操作系统广泛采用虚

电子设计大赛综合测评题课程设计解析

郑州轻工业学院 电子技术课程设计> @ 题目: 2015年电赛测评试题 姓名:王苗龙 专业班级:电信13-01 学号: 0134 ~ 院(系):电子信息工程学院 指导教师:曹卫锋谢泽会

完成时间: 2015年10月 29日 郑州轻工业学院 课程设计任务书 题目 2015年电子设计大赛综合测评试题 ~ 专业电信工程13-1 学号 0134 姓名王苗龙 主要内容、基本要求、主要参考资料等: 主要内容 1.阅读相关科技文献。 2.学习电子制图软件的使用。 3.学会整理和总结设计文档报告。 4.学习如何查找器件手册及相关参数。 技术要求 ~ 1、使用555时基电路产生频率20kHz-50kHz连续可调,输出电压幅度为1V的方波Ⅰ; 2、使用数字电路74LS74,产生频率5kHz-10kHz连续可调,输出电压幅度为1V的方波Ⅱ; 3、使用数字电路74LS74,产生频率5kHz-10kHz连续可调,输出电压幅度峰峰值为3V的三角波; 4、产生输出频率为20kHz-30kHz连续可调,输出电压幅度峰峰值为3V的正弦波Ⅰ; 5、产生输出频率为250kHz,输出电压幅度峰峰值为8V的正弦波Ⅱ;方波、三角波和正弦波的波形应无明显失真(使用示波器测量时)。频率误差不大于5%;通带内输出电压幅度峰峰值误差不大于5%。 主要参考资料 1.何小艇,电子系统设计,浙江大学出版社,2010年8月 . 2.姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月 3.王澄非,电路与数字逻辑设计实践,东南大学出版社,1999年10月 4.李银华,电子线路设计指导,北京航空航天大学出版社,2005年6月 5.康华光,电子技术基础,高教出版社,2006年1月 完成期限: 2015年10月30日 指导教师签章:

计算机科学与技术课程设计

一、课程设计题目 二叉平衡排序树 摘要问题描述:从一棵空树开始创建,在创建过程中,保证树的有序性,同时还要针对树的平衡性做些调整。最终要把创建好的二叉排序树转换为二叉平衡排序树。 基本要求:1.创建(插入、调整、改组) 2.输出 开发工具:windows XP操作系统,Microsoft visual c++ 6.0 编译系统; 关键词:C++ ; 二、设计主要目的及意义 目的: 1.熟悉掌握二叉树的基本操作 2.熟悉二叉树的创建(插入、调整、改组),输出以及把二叉排序树转换为二 叉平衡排序树 3.更进一步掌握有关二叉排序树的操作 意义: 软件课程设计是计算机科学与技术专业软件方向的一个重要环节,是语言类课程学习的总结。通过课程设计使我们加深对程序设计的理解,掌握程序开发的基本方法,深化学生面向对象的编程设计思想和新一代程序设计的逻辑思维方式,把课堂上所学到的多个单元串到一起,提高我们在软件设计过程中分析问题和解决问题的实际动手能力,使我们的理论知识和实践技能得到共同发展,最终提高我们解决问题和分析问题的能力。为我们踏上工作岗位之前提供了一次专业研究和项目开发的宝贵实践机会,为今后的工作积累经验。

三、课程设计的过程 主要算法说明: 1.主要数据结构定义 typedef struct node node ; Struct node { Node*parent; Node*left; Node*right; Int balance;//左右子树高度之差 Int key; } 2.主要函数说明 Int scarchNode(int key, node* root, node*parent):按key查找结点 Node* minNode(node* root):树root的最小结点 Node* maxNode(node* root):树root的最大结点 Node* preNode(node* target):求前驱结点 Node* nextNode(node* targer):求后继结点 node* adjustAVL(node* root, node* parent, node* child);调整,保证二叉树的平衡性 Node* insertNode(int key, node* root):插入 Node* deletevode(int key, node* root):删除 Node*createAVL(int* data, int size):创建新的二叉树 Void interordertraverse (node*root):中序遍历 Void preordertraverse(node* root):先序遍历 3.二叉排序树的插入和删除 a.二叉排序树的插入 在二叉排序树插入新结点,要保证插入后的二叉树仍符合二叉排序树的定义 插入过程:若二叉排序树正存在,则返回根结点;

计算机操作系统原理课程设计

上海电力学院 课程设计报告 课程名称:操作系统原理 题目名称:采用可变分区存储管理,模拟主存空间的分配和回收 姓名: xxx 学号: xxx 班级: 2013054 同组姓名: xxx 课程设计时间: 2015.7.6~2015.7.10 评语: 成绩:

课程设计题目 一、设计内容及要求 可变分区存储管理模拟 设计内容:编写程序模拟实现可变分区存储管理。 具体要求: 编写程序模拟实现可变分区存储管理,实现存储管理的基本功能,包括内存的分配、内存的回收、地址变换等。 输入:1、输入新进程名称及使用内存的大小(可创建多个进程); 2、撤销某个指定的进程; 3、某个进程的逻辑地址; 输出:显示每次创建进程或者撤销进程后内存使用的状况,包括每一个进程占据的内存的位置和大小; 计算并输出给定逻辑地址对应的物理地址。 必须分别使用以下分配算法完成模拟: 1、首次适应算法; 2、最佳适应算法; 3、最差适应算法; 小组分工: 程序设计讨论: 程序主体设计: 程序调试及修改: 实验报告设计: 总结: (要求注明小组分工情况) 二、详细设计 1)原理概述 对于可变分区存储管理的内存分配与回收,主要为设计以下几个部分: 1、设计动态输入空闲分区表的程序 2、设计内存分配的程序 3、设计内存回收的程序 首次适应算法: FF算法要求空闲分区表或空闲分区链以地址递增的次序链接。在分配内时,从链首开始查找,直至找到一个大小能满足要求分区为止;然后再按照作业大小,从该分区中划一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。如从链首直至链尾都不能找到一个能满足要求的分区,则此次分配失败,返回 最佳适应算法: BF算法是指每次为作业分配内存,总是把满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。为了加速寻找,该算法要求所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。这样,第一次找到能满足要求的空闲区,

《操作系统课程设计》题目要求

操作系统课程设计要求 一.设计目的 熟悉Linux编程环境,加强对Linux命令的理解及函数的运用 二.设计内容 1. 在Linux环境下模拟实现简单命令解释器。 (1)要求实现的基本命令包括: pwd //显示当前所在目录的路径名 dir <目录名> //列出指定目录名中的所有目录及文件 cd <目录名或路径>//改变当前工作目录 newdir <目录名> //新建目录 deldir <目录名> //删除目录 exit //退出命令解释程序 (2)可选做的扩展命令包括: rename <旧文件名> <新文件名> //重命名一个文件或目录 find <目录> -name <待查找的文件名> //在指定的目录及其子目录中查找指定的文件date //显示当前日期 (3)提示:整个程序的大致框架可参考如下: while ( exit未被输入) { 接收键盘的一行输入 分析输入的命令 对输入的命令进行处理,调用系统函数实现功能 } 2. 设计要求 (1) 设计必须在Linux环境下进行。 (2) 命令解释程序的提示符为:姓名拼音@ (3) 程序编写中不得使用system()系统调用。 (4) 整个程序必须严格经过测试,完成所有基本功能。源程序应有较详尽的注释。 3.可能用到的系统调用: open(),close(),read(),write(),creat() chdir(), opendir(),readdir(),rewinddir(),closedir(),rmdir(),mkdir() getcwd(), ftw() time(), localtime(), asctime()

计算机控制技术课程设计报告

《计算机控制技术》课程设计单闭环直流电机调速系统

1 设计目的 计算机控制技术课程是集微机原理、计算机技术、控制理论、电子电路、自动控制系统、工业控制过程等课程基础知识一体的应用性课程,具有很强的实践性,通过这次课程设计进一步加深对计算机控制技术课程的理解,掌握计算机控制系统硬件和软件的设计思路,以及对相关课程理论知识的理解和融会贯通,提高运用已有的专业理论知识分析实际应用问题的能力和解决实际问题的技能,培养独立自主、综合分析与创新性应用的能力。 2 设计任务 2.1 设计题目 单闭环直流电机调速系统 实现一个单闭环直流电机调压调速控制,用键盘实现对直流电机的起/停、正/反转控制,速度调节要求既可用键盘数字量设定也可用电位器连续调节,需要有速度显示电路。扩展要求能够利用串口通信方式在PC上设置和显示速度曲线并且进行数据保存和查看。 2.2 设计要求 2.2.1 基本设计要求 (1)根据系统控制要求设计控制整体方案;包括微处理芯片选用,系统构成框图,确定参数测围等; (2)选用参数检测元件及变送器;系统硬件电路设计,包括输入接口电路、逻辑电路、操作键盘、输出电路、显示电路; (3)建立数学模型,确定控制算法; (4)设计功率驱动电路; (5)制作电路板,搭建系统,调试。 2.2.2 扩展设计要求 (1)在已能正常运行的微计算机控制系统的基础上,通过串口与PC连接; (2)编写人机界面控制和显示程序;编写微机通信程序;实现人机实时交互。

3方案比较 方案一:采用继电器对电动机的开或关进行控制。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。 方案二:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。 方案三:采用由电力电子器件组成的H 型PWM 电路。用单片机控制电力电子器件使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路由于工作在电力电子器件的饱和截止模式下,效率非常高;H 型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM 调速技术。 兼于方案三调速特性优良、调整平滑、调整围广、过载能力大,因此本设计采用方案三。 4单闭环直流电机调速系统设计 4.1单闭环调速原理 4.1.1 闭环系统框图 4.1.2 调速原理 直流电机转速有: 常数Ke Ka 不变,Ra 比较小。 所以调节Ua 就能调节n 。 n n I K R K U K R I U n d d a e e d ?-=Φ -Φ=-=0φa a a U I U ≈-

计算机操作系统课程设计

计算机操作系统课程设计 班级:计091-1 姓名: 学号: } 使用语言:C++ 指导老师: 学院:

一、] 二、系统要求 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 ` delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 二、系统分析 1、设计思想 - 本文件为二级文件系统,即要实现对文件的增删改查,同时又具备登陆系统、注册用户的功能,各个用户之间的文件系统互不干扰。 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 系统采用结构体来存储用户、文件目录、文件数据内容:

0 48*5 48*5+44*50 48*5+44*50+264*200 、 每个分区都是由结构体组成,每个个去的结构体的个数由格式化系统是决定。整个系统的编码构成主要分为: 定义了每个分区的结构体; 声明了对系统操作的各种方法; 声明了对文件操作的各种方法; 整个系统的主函数,操作入口; \ 包含了,实现了操作系统的各种方法; 包含了,实现了操作文件的各种方法; 2、主要数据结构 文件的内容: struct s_user 登录"<

JAVA聊天室课程设计报告(含源代码压缩文件)

南京晓庄学院 《JAVA程序设计》 课程设计报告 Java聊天室的设计与实现题 目 姓名:戴佳伟 学号:14552019 班级:14软件工程3班 指导教 王峥 师: 完成时间2016.10.7 成绩: 信息工程学院 2016年6月

目录 1引言.............................. . (3) 1.1 java 聊天室开发背景.................................... (3) 1.1java 聊天室开发的目的和意义........ (3) 1.2完成的主要工作.................... (4) 2 需求分析和总体设计................ (5) 2.1 需求分析与设计思路................ (5) 2.1.1 关键技术说明 .................................... . (5) 2.1.2 需求分析..................... ....................... 6 2.1.3 java 聊天室设计方案与思路 (6) 2.1.4 java 聊天室目录结构说明....... (7) 2.2 java 聊天室功能结构 .................................... (8) 3 详细设计.......................... (10) 3.1 java 聊天室模块实现 .................................... (10) 3.1.1 XX 模块实现.................. ..................... 10 4 java 聊天室运行结果.................................... (13) 5课程设计总结...................... .. (15)

操作系统-课程设计

课程设计说明书(操作系统) 题目:进程调度 院系:计算机科学与工程学院 专业班级:信息安全13-2 学号:20133029xx 学生姓名:xx 指导教师:xx 2015年12月15日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

安徽理工大学课程设计(论文)成绩评定表

摘要 现代计算机系统中,进程是资源分配和独立运行的基本单位,是操作系统的核心概念。因而,进程就成为理解操作系统如何实现系统管理的最基本,也是最重要的概念。进程调度是进程管理过程的主要组成部分,是必然要发生的事件。 在现代操作系统中,进程的并发机制在绝大多数时候,会产生不断变化的进程就绪队列和阻塞队列。处于执行态的进程无论是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占CPU。 进程调度的核心是进程调度的算法.在本课程设计中,用良好清晰的界面向用户展示了进程调度中的时间片轮转调度算法。在最终实现的成果中,用户可指定需要模拟的进程数,CPU时间片和进程的最大执行时间,并且选择需要演示的算法,界面将会动态的显示进程调度过程及各个队列的变化。通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观的了解。 关键词:进程,调度,PCB,时间片轮转

目录 1.设计目的 (6) 2.设计思路 (6) 3.设计过程 (8) 3.1流程图 (8) 3.2算法 (8) 3.3数据结构 (10) 3.4源代码 (10) 4.实验结果及分析 (20) 4.1 使用说明 (20) 4.2程序演示 (20) 5.实验总结 (24) 6.参考文献 (24)

2017年电子技术课程设计题

信息学院 2017年电子技术课程设计题 1 音频小信号功率放大电路设计(A) 设计并制作音频小信号功率放大电路。具体要求如下: (1)放大倍数A V≥1000;(20分) (2)通频带100Hz~10KHz;(20分) (3)放大电路的输入电阻R I≥1MΩ; (5分) (4)在负载电阻为8Ω的情况下,输出功率≥2W;(30分) (5)功率放大电路效率大于50%;(5分) (6)输出信号无明显失真。(20分) 说明:设计方案和器件根据题目要求自行选择,但要求在通用器件范围内。不能选用集成音频功放。 测试条件:技术指标在输入正弦波信号峰值Vp=10mV的条件进行测试(输入电阻通过设计方案预以保证),设计报告中应有含有详细的测试数据说明设计结果。 评分标准: (1)提供1000倍的电压增益,得满分;电压增益小于800倍,扣5分;电压增益小于500倍,不得分; (2)上限频率大于10kHz,得10分;上限频率5~10kHz,得5分;上限频率<5kHz,不得分;下限频率满足要求,得10分;下限频率100~500Hz,扣5分,下限频率>500Hz,不得分;(3)输出功率≥2W,得满分;1W≤输出功率≤2W,得20分;500mW≤输出功率≤1W, 得10分; 输出功率≤500mw,不得分。 (4) 设计效率大于50%,得满分,小于50%不得分。 (5) 输出信号无明显失真, 得满分,否则不得分。 参考元器件: NE5532/TL082, LM324/TL084,,S8050/S8550,2N3904/2N3906,1N4148/1N4001~7,TIP41/42中功率三极管或2N3055/MJ2955大功率三极管等。 主要测试设备:直流电源,信号源,示波器和8Ω功率电阻。 2 数控直流电源的设计(B) 设计一线性输出电压可调的直流电源。电源有电压增(UP)和电压减(DOWN)两个键,按UP键时电压步进增加,按DOWN键时电压步进减小。具体要求如下:(1)输出电压5~12V,步进为1V;(40分) (2)输出电压误差最大±0.1V;(40分) (3)输出电流不小于1A;(5分) 测试条件:分别测试输出为5V、6V、7V、。。。、12V的输出电压。输出电流通过设计预以保证。 评分标准:[注:满分为95分] (1)输出电压5~12V,步进1V,得满分,否则不得分; (2) 输出电压误差≤±0.1V,得满分;±0.1V≤输出电压误差≤±0.2V,扣10分;±0.2V≤输出电压误差≤±0.3V,扣20分;输出电压误差≥±0.5V,不得分。 发挥部分:用LED或数码管显示电压设定值; 参考元器件:74LS193,74HC138,三极管S8050/S8550/CD406/CD4051/AD7501/AD7503,LM317,CD4511等。 3 数控直流稳压电源设计(A)

华中科技大学计算机学院操作系统课程设计报告[1]

华中科技大学 嵌入式操作系统课程设计实验报告 院系: 计算机科学与技术学院 专业: 班级: 姓名: 指导老师: 报告时间:

计算机科学与技术学院 目录 1.课程设计目的 (3) 2.课程设计环境搭建 (3) 3.内容一:熟悉和理解Linux编程环境 3.1 内容要求 (5) 3.2 设计过程及实现 (5) 4.内容二:掌握添加系统调用的方法 4.1 内容要求 (9) 4.2 设计过程及实现 (9) 5.内容三:掌握添加设备驱动程序的方法 5.1 内容要求 (17) 5.2 设计过程及实现 (17) 6.内容四:理解和分析/proc文件 6.1 内容要求 (22) 6.2 设计过程及实现 (22)

1 课程设计目的 (1)掌握Linux操作系统的使用方法; (2)了解Linux系统内核代码结构; (3)掌握实例操作系统的实现方法。 2 课程设计环境搭建 (1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台:◎Ubuntu 11.10 (安装包:ubuntu-11.10-desktop-i386) ◎内核:linux-headers-3.0.0-12-generic (2)更改root登录: 在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法: ◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端: 初始化/修改root密码 sudo passwd root 用vi编辑器修改这个文件: sudo vi /etc/lightdm/lightdm.conf 在文件最后加入这么一行代码: greeter-show-manual-login=true 然后保存退出,sudo reboot 重启系统。之后就可以输入root用户登录。(3)在添加系统调用中用到的其他内核包: ◎下载和当前实验环境最为接近的系统版本(这点很重要) 使用apt-get install linux-source-3.0.0 命令, ◎下载结果是linux-source-3.0.0.tar.bz2 ◎解压命令:tar –xjvf linux-source-3.0.0.tar.bz2 –C /usr/src ◎解压后,在/usr/src目录下得到内核文件夹linux-source-3.0.0

java课程设计报告(java聊天室)

Java聊天室课程设计 一、需求分析 1.1开发背景 在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。 1.2设计要求 本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。 1.3设计目的 通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。能将相关的只是运用到相关的实践中去。 1.4功能实现 聊天室共分为客户端和服务端两部分,服务器程序主要负责侦听客户端发来的消息,客户端需要登录到相应的服务器才可以实现正常的聊天功能。 服务器的主要功能有 1)在特定端口上进行侦听,等待客户连接 2)用户可以配置服务器的真挺端口

2017操作系统(含课程设计) - 随堂练习

随堂练习提交截止时间:2017-12-15 23:59:59 当前页有10题,你已做10题,已提交10题,其中答对10题。 1.(单选题) 操作系统是基本的特征是() A、并发 B、共享 C、虚拟 D、异步 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 2.(单选题) 下面不属于操作系统设计目标的是() A、提高资源利用率 B、提高系统吞吐量 C、用户操作计算机更方便 D、并行执行多个进程 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 3.(单选题) 历史上最早出现的操作系统是() A、单道批处理系统 B、多道批处理系统 C、分时系统 D、实时系统 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 4.(单选题) 实时操作系统必须在()内处理完来自外部的事件。 A、响应时间 B、周转时间 C、被控对象规定时间 D、调度时间 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 5.(单选题) 操作系统是对()进行管理的软件。 A、软件 B、硬件 C、计算机资源 D、应用程序 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 6.(单选题) 配置了操作系统的计算机是一台比原来的物理计算机功能更强的计算机,这样的一台计算机只是一台逻辑上的计算机,称为()计算机。 A、并行 B、真实 C、虚拟 D、共享 答题: A. B. C. D. (已提交)

问题解析: 7.(单选题) 操作系统中采用多道程序设计技术提高了CPU和外部设备的() A、利用率 B、可靠性 C、稳定性 D、兼容性 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 8.(单选题) 在操作系统中,并发性是指若干事件____发生( ) A、在同一时刻 B、在不同时刻 C、在某一时间间隔内 D、依次在不同时间间隔内 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 9.(单选题) ()操作系统允许在一台主机上同时联接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。 A、网络操作系统 B、批处理操作系统 C、实时操作系统 D、分时操作系统 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 10.(单选题) 下面关于操作系统的叙述中正确的是 ( ) A、批处理作业必须提交作业控制信息 B、分时系统不一定都具有人机交互功能 C、从响应时间的角度看,实时系统与分时系统差不多 D、由于采用了分时技术,用户可以独占计算机的资源 答题: A. B. C. D. (已提交) 参考答案:A 问题解析:

电子技术课程设计题目

电子技术课程设计 一、课程设计目的: 1.电子技术课程设计是机电专业学生一个重要实践环节,主要让学生通过自己设计并制作一个实用电子产品,巩固加深并运用在“模拟电子技术”课程中所学的理论知识; 2.经过查资料、选方案、设计电路、撰写设计报告、答辩等,加强在电子技术方面解决实际问题的能力,基本掌握常用模拟电子线路的一般设计方法、设计步骤和设计工具,提高模拟电子线路的设计、制作、调试和测试能力; 3.课程设计是为理论联系实际,培养学生动手能力,提高和培养创新能力,通过熟悉并学会选用电子元器件,为后续课程的学习、毕业设计、毕业后从事生产和科研工作打下基础。 二、课程设计收获: 1.学习电路的基本设计方法;加深对课堂知识的理解和应用。 2.完成指定的设计任务,理论联系实际,实现书本知识到工程实践的过渡; 3.学会设计报告的撰写方法。 三、课程设计教学方式: 以学生独立设计为主,教师指导为辅。 四、课程设计一般方法 1. 淡化分立电路设计,强调集成电路的应用 一个实用的电子系统通常是由多个单元电路组成的,在进行电子系统设计时,既要考虑总体电路的设计,同时还要考虑各个单元电路的选择、设计以及它们之间的相互连接。由于各种通用、专用的模拟、数字集成电路的出现,所以实现一个电子系统时,根据电子系统框图,多数情况下只有少量的电子电路的参数计算,更多的是系统框图中各部分电子电路要正确采用集成电路芯片来实现。

2. 电子系统内容步骤: 总体方案框图---单元电路设计与参数计算---电子元件选择---单元电路之间连接---电路搭接调试---电路修改---绘制总体电路---撰写设计报告(课程设计说明书) (1)总体方案框图: 反映设计电路要求,按一定信息流向,由单元电路组成的合理框图。 比如一个函数发生器电路的框图: (2)单元电路设计与参数计算---电子元件选择: ●基本模拟单元电路有:稳压电源电路,信号放大电路,信号产生电路,信号处理电 路(电压比较器,积分电路,微分电路,滤波电路等),集成功放电路等。 ●基本数字单元电路有:脉冲波形产生与整形电路(包括振荡器,单稳态触发器,施 密特触发器),编码器,译码器,数据选择器,数据比较器,计数器,寄存器,存储器等。

计算机科学与技术专业课程设计

专业教育 ─我所认识的计算机专业 1.对专业的最初认识 1.1为什么选择计算机专业 计算机使当代社会的经济、政治、军事、科研、教育、服务等方面在概念和技术上发生了革命性的变化,对人类社会的进步已经并还将产生极为深刻的影响。目前,计算机是世界各发达国家激烈竞争的科学技术领域之一。 随着信息时代的到来,计算机逐渐成为技术及科学领域的核心。随着计算机的普及,其应用领域逐渐广泛,深刻影响着我们的学习,工作及生活。因而,计算机的学习与我们的生活息息相关。 1.2最初的认识 虽然对于这个专业刚开始的时候不了解它具体是干什么的,但是从小就对于计算机十分感兴趣,因此在高考完填报志愿时就报了这个专业。进入大学之后,看到培养计划发现这个专业应用还是挺多的,但是因此让自己更加的对以后的职业感到很迷茫,不知道究竟是该干什么了。但是既来之,则安之。相信在以后的学习过程中会慢慢地找到方向,并为之努力的。因此说对于计算机专业还是抱有很大的热情的。 2.学习的方法 2.1培养对专业的兴趣 俗话说兴趣是最好的老师,因此要想真正做好一件事情,学好自己的专业首先就要培养自己对本专业的兴趣。那么应该如何培养呢?可能阅读专业书籍对于刚刚步入大学的自己来说有点困难,也很枯燥,那么不妨先从科普书籍看起。科普书籍是了解理论、获得应用知识最好的途径。相信不少理工科的同学被量子物理和相对论搞得头昏脑胀过。究其原因,是我们的现实生活与抽象的数学模型之间存在思想意识上的鸿沟。然而要是读读斯蒂芬·霍金的《时间简史》,你就会被书中有趣的故事和例证所吸引,从而对抽象的理论有了感性的认识——即使仍然没有读懂,你也至少了解了这个学科研究的领域和目标是什么,也必然有所收获。 2.2认真学习专业课程,学好数学 大学计算机专业对数学的要求较高,其重要性不必多言。数学令不少同学头痛,除了其“繁”与“难”外,很大程度上是因为他们没有理解这些抽象理论的实际应用方向。与本科数学专业的课程设置相比,计算机专业的数

计算机网络课程设计

计算机网络课程设计

滨江学院 计算机网络课程设计——广告公司网络的设计 姓名:刘权 班级:计算机科学与技术1班 指导教师:谈玲 日期: 4月8日

目录前言 一、项目概述 二、可行性分析报告 三、需求分析 3.1需求概述 3.2网络需求 1.布线结构需求 2.网络设备需求 3.IP地址规划 3.3、系统需求 1.系统要求 2.网络和应用服务 3.4、存储备份系统需求1.总体要求 2.存储备份系统建设目标

3.存储系统需求 4.备份系统需求 3.5、网络安全需求1.网络安全体系要求2.网络安全设计模型 四、网络结构设计 五、系统配置与实施 六、工程预算与进度安排

一:项目概述 1.1项目信息 某广告公司现有分公司1(50台pc)和分公司2(40台pc),分公司1和分公司2都拥有各自独立的部门。分公司1和分公司2包括:策划部、市场部、设计部。为提高办公效率,该广告公司决定建立一个内部网络。 该广告公司内部使用私有IP地址192.168.160.0/23,要求该广告公司的分公司1和分公司2之间使用路由器进行连接(不使用vpn技术),使用动态的路由协议(RIP)。分公司1和分公司2内部通过划分vlan技术,使不同的部门在不同的局域网内。 1.2 方案设计 写题为“广告公司的网络解决方案”的网络方案设计书。包括: ①完整的校园网络拓扑图(网络拓扑图要求使用visio工具进行设计绘制); ②结合网络拓扑图进行IP地址的规划; ③分公司1的VLAN的设计与规划。 ④分公司2的VLAN的设计与规划。 ⑤分公司1和分公司2的网络互连互通。 1.3 设计原则 本项目将提供全面完整和可扩展性强的解决方案,以实现系统实施灵活性和连贯性。项目在设计中充分理解用户对智能化工程建设的要求,对系统现在以及将来的应用及连接需求进行综合分析,在系统需要扩容和扩展时而进行下一步实施时,可以方便并且平滑的实现。 为了满足需求,本综合布线系统方案设计遵循以下原则:

网络课程设计实验报告--QQ聊天实现

计算机网络课程设计报告 设计选题网络聊天室 姓名马继鸣 学号 0909090630 完成时间 2012-1-12 一、需求分析

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。 主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。 二. 设计 1.设计思想: 课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服 务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客 户端登录到服务器端才可以实现正常的聊天功能。

2.功能设计 (1)服务器端的主要功能如下。 在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000. 当停止服务时,断开所有用户连接。 (2)客户端的主要功能如下。 连接到已经开启聊天服务的服务端。 当服务器端开启的话,用户可以随时登录与注销。

用户可以向所有人发送消息。 3.详细设计 聊天室服务器端设计 聊天室服务器中主要的功能文件的功能如下: MyButLis.java 主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。 public class MyButLis implements ActionListener private MyServe server; private JTextField filed1; public void actionPerformed(ActionEvent e) MyChatSet.java 服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。 public static ArrayList servers=new ArrayList();//线程队列 public static void addThread(MyserThread th) //增加一个服务器线程对象 public static void sendReMess(String type,String state,String s,MyserThread myth)//返回应答信息 public static void SendOSMess(String type,String user)//其他用户上下线信息 public static void SendChatMess(String type,String sender,String reciver,String Mess)//聊天信息 public static void SendList//用户列表 MyCheckTool.java 保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。 //建立码表,用以保存用户信息 private static Map maps=new HashMap(); public static boolean CheckUser(MyUserInfo user)// 验证用户名

操作系统课程设计论文

学年论文(课程设计)题目:操作系统课程设计 学院数学与计算机学院 学科门类工学 专业网络工程 学号 姓名 指导教师王煜 年月日

河北大学学年论文(课程设计)任务书 (指导教师用表) 指导教师签字: 系主任签字: 主管教学院长签字: 装 订 线

河北大学学年论文(课程设计)成绩评定表学院:数学与计算机学院 装 订 线

摘要 此系统实现了存储管理、设备管理和进程管理。 存储管理部分主要实现主存空间的分配和回收。存储管理采用可移动的可变分区存储管理方式。采用数组来模拟主存,大小为512个字节。 设备管理主要包括设备的分配和回收。模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。设备分配时采用采用先来先服务策略。设备回收时唤醒等待设备的进程。 进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。其中硬件中的中央处理器用不断循环的函数CPU( )模拟,重要寄存器(如:程序状态寄存器PSW、指令寄存器IR)用全局变量模拟,中断的发现是在函数CPU中加检测PSW 的方式来模拟,时钟的模拟通过timer控件实现。进程控制块的模拟通过数组,本系统最多容纳10个。进程调度时采用时间片轮转调度算法,时间片为5。 关键词:存储管理设备管理进程管理时间片

ABSTRACT The system has storage management, equipment management and process management. The storage management has achieved the allocation and recovery of the main memory space. Variable storage management is used as storage management .We simulate the main memory by array, whose size is 512 bytes. The device management, including the distribution and recovery of devicet. We simulate three devices ,A,B,C. the numbers of them are 3,2,1. The distribution of device used to adopt first-come first-service strategy. It awakes the blocking process when the device is recycled. The process management, including scheduling ,creating revocation ,blocking and waking up the process, the realization of the interruption.We simulate the central processing unit by the cycling function named CPU(),simulate the important register by global variable, simulate the recovering of interruption by checking PSW in the function of CPU(),simulate the clock by the timer control. The simulation of the process control block by array, whose number is up to 10. When the scheduling of the process happens, we use the algorithm of time piece rotation scheduling, and the time piece is 5. Key words: storage device process time

相关文档
最新文档