搜档网
当前位置:搜档网 › (完整word版)西安邮电大学导游系统课程设计

(完整word版)西安邮电大学导游系统课程设计

(完整word版)西安邮电大学导游系统课程设计
(完整word版)西安邮电大学导游系统课程设计

西安郵電大学

数据结构课程设计报告题目:阳光农场导游系统

院系名称:计算机学院

专业名称:计算机科学与技术

班级:计科1107

学生姓名:田辉(22)

学号(8位):04111184

指导教师:衡霞

设计起止时间:2012年12月17日~2012年12月21日

一. 设计目的

1.通过本次课程设计巩固《数据结构》中所学的内容,主要是图的相关知识的应用;

2.提高自己上机编程以及调试能力。

二. 设计内容

1.设计阳光农场平面图,

地点(地点名称、地点介绍),

路线(公里数)均不少于10个。(文件存储)

2.提供图中任意地点相关信息的查询。

3.任意两个地点之间的一条最佳访问路线;(带权(公里数)最短路径长度)

4.任意两个地点之间的一条最短的简单路径;(最短路径长度——中转次数

最少)

5.任一景点到其余各景点路径

5.任意两个地点之间的所有简单路径。

三.概要设计

1

2.各个模块详细的功能描述。

1.menu( ),提供主菜单各个功能选项;

2.当用CreatUNG()读文件失败时,建立一个无向图;

3.用map( )打印出西邮的全景图;

4.用find( )查找并显示出所有景点的简介;

5.用search_other()实现查找一景点到其他所有景点的路径的功能;

6.Search_All()查询一对景点间的所有路径

7.用Leastpath ( )实现查找一景点到另一景点间的最短路径的功能;四.详细设计

1.功能函数的调用关系图;

2

1. CreatUNG()

2.find( )

3.重点设计及编码。

1.//迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点

void search_other(AdjMatrix *G)

{

int vi,v0;//起始点与终点

int visit[Max];//访问标志

int path[Max];//记录当前查找到的最短路径

int dist[Max];//当前查找的最短路径长度

int i,j,k,t;

int min;

G->vexnum=13;

printf("输入起始点:\n");

scanf("%d",&v0);

if(v0<0||v0>G->vexnum)

{

printf("\a\a输入起点数据有误!!!\n");

printf("请重新输入:\n");

scanf("%d",&v0);

}

printf("[%s]到其余各景点最短路径:\n\n",G->vertex[v0].sight);

//初始化

for(vi=0;vivexnum;vi++)

{

visit[vi]=0;

dist[vi]=G->arcs[v0][vi].adj;

if(dist[vi]

path[vi]=v0;

else

path[vi]=-1;

}

visit[v0]=1;

path[v0]=0;

for(t=1;tvexnum-1;t++)

{

min=INFINITY;

for(i=0;ivexnum;i++)

if(!visit[i]&&dist[i]

{

k=i;

min=dist[i];

}

if(min==INFINITY)

return;

visit[k]=1;

for(j=0;jvexnum;j++)//修正权值

if(!visit[j]&&G->arcs[k][j].adj!=INFINITY&&(dist[k]+G->arcs[k][j].adj

{

dist[j]=dist[k]+G->arcs[k][j].adj;

path[j]=k;

// AddTail(&path[i],g.vertex[i]);

}

}

for(i=0;ivexnum;i++)

{

vi=i;

if(vi==v0)

continue;

printf("%s",G->vertex[v0].sight);

Leastpath(G, path, vi, v0);

printf("-->%s\n",G->vertex[vi].sight);

printf("最短路径长度:%d\n\n",dist[vi]);

}

}

2. //prim算法求最佳访问路径

void prim(AdjMatrix *G)

{

int v,sum=0;

int i,j,k,min,n=G->vexnum;

int closest[MAX];

ArcCell lowcost[MAX];

printf("输入起点景点编号:");

scanf("%d",&v);

for(i=0;i

{

lowcost[i]=G->arcs[v][i];

closest[i]=v;

}

printf("\n%s",G->vertex[v].sight);

for(i=1;i

{

min=32767;

for(j=0;j

if(lowcost[j].adj!=0&&lowcost[j].adj

{

min=lowcost[j].adj;

k=j;

}

if(v!=k)

{

sum+=lowcost[k].adj;

printf("-->%s",G->vertex[k].sight);

}

lowcost[k].adj=0;

for(j=0;j

if(G->arcs[k][j].adj!=0&&G->arcs[k][j].adj

{

lowcost[j]=G->arcs[k][j];

closest[j]=k;

}

}

printf("\n");

printf("权值总和为:%d\n",sum);

}

五.测试数据及运行结果

1.正常测试数据(3组)及运行结果;

一、

二、

三、

四、

2.非正常测试数据(2组)及运行结果。

一、

二、

六.调试情况,设计技巧及体会

1.对自己的设计进行评价,指出合理和不足之处,提出改进方案;

总体框架设计基本完成,大部分功能也基本上实现了,但是还是有些功能没有实现,如添加和删除景点。

需要改进的地方有:在查询景点信息时可以增加按组合查找的方法,可以在程序健壮性,人性化上稍微改进一下,以期更加完美。

2.对设计及调试过程的心得体会。

数据结构是我们计科专业计算机应用能力培养的重要技术基础,它能锻炼我们的思维能力,让我们的思维更加严谨。数据结构程序设计需要我们总结理论课所学知识,并熟练应用。它是我们的一种强化训练和智力的开发。我想其目的并不是要求我们能编写出高水平的程序,而是要求我们能独立进行实践,完成自己的工作,并培养我们大学生在动手方面的技能。数据结构程序设计对有些同学来说比较枯燥乏味,这就需要我们用顽强的意志去战胜每一个难关。刚开始时,觉得太难,简直无从下手。看着同学们都在积极准备、策划。我也不能落伍啊!于是我也积极参与。到最后竟也忙得不亦乐乎!尽管在编程中我遇到了很多问题,但我坚持到底,不懂就问,不仅解决了难题,同时对C语言也有了更深一步的认识和理解,体会到了学习的乐趣,真是受益匪浅!这个动手的过程使我认识到要做到面面俱到真地很难,但只要认真思考坚持不懈,就会离完美更进一步。我以后学习要更加认真刻苦。努力掌握这些知识,包括C语言和其他以后会学到的各种计算机语言。

七.参考文献

[1] 数据结构:C语言描述. 耿国华,张德同,周明全等编. 北京:高等教育出版社.2011

[2] C语言程序设计(第二版).王曙燕,王春梅,王小银等编. 北京:科学出版社. 2008八.附录:源代码(电子版)

#include

#include

#include

#include

#include

#include

# define Max 50

#define m 1000

# define MAX 13

#define INFINITY 32768

typedef struct

{

int adj;//存放顶点的权值信息

}ArcCell;

typedef struct inf

{

char sight[m];//景点名称

int number;//景点的编号

char description[m];//景点的介绍

}ArcNode;

typedef struct

{

ArcNode vertex[MAX];//景点数组

ArcCell arcs[MAX][MAX];//邻接矩阵

int vexnum,arcnum;//图的顶点数与弧数

}AdjMatrix;

void prim(AdjMatrix *G);

void Dsearch(AdjMatrix *G,int num1);

void search_other(AdjMatrix *G);//从某一顶点到其余各点最短路径

void map();

void find(AdjMatrix *G); //查找景点信息

void SightDesp(); //菜单

void CreatUNG(AdjMatrix *G);//创建临接矩阵

void TraverGraph(AdjMatrix g);//深度优先遍历图

void DepthFirstSearch(AdjMatrix *g,int v0);//深度优先遍历V0所在的连通子图

void Leastpath(AdjMatrix *G,int path[],int vi,int v0);//输出v0~vi两景点中间的景点

int menu();//查找景点信息

void search1(AdjMatrix *G);//查找景点信息

void Search_All(AdjMatrix *G);//输出指定地点间的所有路径

void Depsearch(AdjMatrix *G,int num1,int num2);

//创建图

//校园导游图

void map()

{

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

printf("\t\t┃阳光农场平面图┃\n");

printf("\t\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");

printf("\t\t┃┏━━━━━━━━━━━━━━━━━━━━━━━┓┃\n");

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

printf("\t\t┃┃住宿区┃┏━━┻━━┓┃住宿区┃┃\n");

printf("\t\t┃┗━━━┳━┛┃购物超市┃┣━━━━━┫┃\n");

printf("\t\t┃11. ┃12.┗━━┳━━┛║║┃\n");

printf("\t\t┃┏━┻┓┏━━┻━━━━┓║┏┻┓┃\n");

printf("\t\t┃┃室体┣═══┫餐厅┣╬┃停┃┃\n");

printf("\t\t┃8.┃内育┃9.┗━━┳━━━━┛║10.┃车┃┃\n");

printf("\t\t┃┃馆┃║┏━━━┻━━━┓┃场┃┃\n");

printf("\t\t┃┗━┳┛║┃室外┏━━━┫┃┃┃\n");

printf("\t\t┃║║7.┣━━━┛运动场┃┗┳┛┃\n");

printf("\t\t┃║ 6. ║┗━━━━━┳━┛║┃\n");

printf("\t\t┃╬══┳━━━━┻━┓║║┃\n");

printf("\t\t┃║┃游乐场┣═════╬═══╝┃\n");

printf("\t\t┃┏══╬┗━━┳━━━┛ 5.┏━┻━━━┓┃\n");

printf("\t\t┃┏┻┓┣━┓╬═══════┫农场┃┃\n");

printf("\t\t┃┃医┃┃游┃║┏┻┳┛┃\n");

printf("\t\t┃┃务┃┃泳┃║┃观光区┃┃\n");

printf("\t\t┃┃室┃┃池┣═══╬┏┻┳┛┃\n");

printf("\t\t┃┗┳┛┃┃║┃┃┃\n");

printf("\t\t┃3.║┗┳┛║┗━┳━━━┛┃\n");

printf("\t\t┃║║4. ║ 2.┏━━┻━┓┃\n");

printf("\t\t┃╩═══╬╬════┫接待大厅┃┃\n");

printf("\t\t┃┏━━━┻━┓║┗━━┳━┛┏━━━┓┃\n");

printf("\t\t┃1.┃农场采摘区┣══╬═══════╝┃南┃┃\n");

printf("\t\t┃┗━━━━━┛║┃东╋西┃┃\n");

printf("\t\t┃┏━┻━━━┓┃北┃┃\n");

printf("\t\t┃0.┃农场大门┃┗━━━┛┃\n");

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

void CreatUNG(AdjMatrix *G)

{

int i,j;

FILE *fp;

fp=fopen("导游.txt","rt");

G->vexnum=13;

G->arcnum=16;

if(fp)

{

for(i=0;ivexnum;i++)

fscanf(fp,"%s %d %s",G->vertex[i].sight,&G->vertex[i].number,G->vertex[i].description);

}

for(i=0;ivexnum;i++)

for(j=0;jvexnum;j++)

{

fscanf(fp,"%d ",&G->arcs[i][j].adj);

}

fclose(fp);

}

//查询景点信息

void find(AdjMatrix *G)

{

int num;

int i,count=0;

int n;

char name[m];

G=(AdjMatrix *)malloc(sizeof(AdjMatrix));

CreatUNG(G);

printf("please input a number<1:编号查询,2:名称查询>\n\n");

printf("请输入选项:");

scanf("%d",&n);

switch (n)

{

case 1:

count=0;

printf("\n\n请输入您要查找的景点编号: ");

scanf("%d",&num);

for(i=0;ivexnum;i++)

if(num==G->vertex[i].number)

{

printf("\n\n景点信息:");

printf("\n\n%s:%s\n\n",G->vertex[i].sight,G->vertex[i].description);

count++;

getchar();

}

if(count==0)

{

printf("\n\a\a*****************\n");

printf("* 无此景点!!! *\n");

printf("*****************\n\n");

}

break;

case 2:

count=0;

printf("\n\n请输入您要查找的景点名称: ");

scanf("%s",name);

for(i=0;ivexnum;i++)

if(!strcmp(name,G->vertex[i].sight))

{

printf("\n\n您要查找景点信息如下:");

printf("\n\n%s %s\n\n",G->vertex[i].sight,G->vertex[i].description);

count++;

getchar();

getchar();

}

if(count==0)

{

printf("\n\a\a*****************\n");

printf("* 无此景点!!! *\n");

printf("*****************\n\n");

}

break;

default:

system("cls");

printf("输入有误,");

}

}

//深度优先找出从顶点v0到顶点Vi的所有路径

void Leastpath(AdjMatrix *G,int path[],int vi,int v0)

{

int k;

k = path[vi];

if(k == v0)

return;

Leastpath(G,path,k,v0);

printf("——>%s ",G->vertex[k].sight);

}

void search1(AdjMatrix *G)

{

int vi,v0;//起始点与终点

int visit[Max];//访问标志

int path[Max];//记录当前查找到的最短路径

int dist[Max];//当前查找的最短路径长度

int i,j,k,t;

int min;

printf("输入起始点:\n");

scanf("%d",&v0);

if(v0<0||v0>G->vexnum)

{

printf("\a\a输入起点数据有误!!!\n");

printf("请重新输入:\n");

scanf("%d",&v0);

}

//初始化

for(vi=0;vivexnum;vi++)

{

visit[vi]=0;

dist[vi]=G->arcs[v0][vi].adj;

if(dist[vi]

path[vi]=v0;

else

path[vi]=-1;

}

visit[v0]=1;

path[v0]=0;

for(t=1;tvexnum-1;t++)

{

min=INFINITY;

for(i=0;ivexnum;i++)

if(!visit[i]&&dist[i]

{

k=i;

min=dist[i];

}

if(min==INFINITY)

return;

visit[k]=1;

for(j=0;jvexnum;j++)//修正权值

if(!visit[j]&&G->arcs[k][j].adj!=INFINITY&&(dist[k]+G->arcs[k][j].adj

dist[j]=dist[k]+G->arcs[k][j].adj;

path[j]=k;

// AddTail(&path[i],g.vertex[i]);

}

}

//输入终点

printf("输入终点:\n");

scanf("%d",&vi);

if(vi<0||vi>G->vexnum||vi==v0)

{

printf("\a\a输入终点数据有误!!!\n");

printf("请重新输入:\n");

scanf("%d",&vi);

}

if(vi!=v0&&visit[vi])

{

printf("%s",G->vertex[v0].sight);

Leastpath(G, path, vi, v0);

printf("-->%s\n\n",G->vertex[vi].sight);

printf("最短路径长度:%d\n",dist[vi]);

}

}

//从某一顶点到其余各点最短路径

void search_other(AdjMatrix *G)

{

int vi,v0;//起始点与终点

int visit[Max];//访问标志

int path[Max];//记录当前查找到的最短路径

int dist[Max];//当前查找的最短路径长度

int i,j,k,t;

int min;

G->vexnum=13;

printf("输入起始点:\n");

scanf("%d",&v0);

if(v0<0||v0>G->vexnum)

{

printf("\a\a输入起点数据有误!!!\n");

printf("请重新输入:\n");

scanf("%d",&v0);

}

printf("[%s]到其余各景点最短路径:\n\n",G->vertex[v0].sight);

//初始化

for(vi=0;vivexnum;vi++)

{

visit[vi]=0;

dist[vi]=G->arcs[v0][vi].adj;

if(dist[vi]

path[vi]=v0;

else

path[vi]=-1;

}

visit[v0]=1;

path[v0]=0;

for(t=1;tvexnum-1;t++)

{

min=INFINITY;

for(i=0;ivexnum;i++)

if(!visit[i]&&dist[i]

{

k=i;

min=dist[i];

}

if(min==INFINITY)

return;

visit[k]=1;

for(j=0;jvexnum;j++)//修正权值

if(!visit[j]&&G->arcs[k][j].adj!=INFINITY&&(dist[k]+G->arcs[k][j].adj

dist[j]=dist[k]+G->arcs[k][j].adj;

path[j]=k;

// AddTail(&path[i],g.vertex[i]);

}

}

for(i=0;ivexnum;i++)

{

vi=i;

if(vi==v0)

continue;

printf("%s",G->vertex[v0].sight);

Leastpath(G, path, vi, v0);

printf("-->%s\n",G->vertex[vi].sight);

printf("最短路径长度:%d\n\n",dist[vi]);

}

}

int path[Max],visited[Max];

int top=0;

void Depsearch(AdjMatrix *G,int num1,int num2)

{

int v,i;

top++;

path[top]=num1;

visited[num1]=1;

if(num1==num2)

{

for(i=0;i<=top;i++)

printf("%s->",G->vertex[path[i]].sight);

printf("\b\b \n");

visited[num1]=0;

top--;

return ;

}

for(v=0;vvexnum;v++)

{

if(G->arcs[num1][v].adj

Depsearch(G,v,num2);

}

visited[num1]=0;

top--;

}

//找出从顶点v0到顶点Vi的所有路径

void Search_All(AdjMatrix *G)

{

int num1,num2,i;

printf("请输入起点的景点编号:");

scanf("%d",&num1);

printf("请输入终点的景点编号:");

scanf("%d",&num2);

top=-1;

for(i=0;i

visited[i]=0;

Depsearch(G,num1,num2);

printf("按任意键返回");

getchar();

}

//深度遍历V0所在的连通子图

void DepthFirstSearch(AdjMatrix *g,int v0)

{

int vi;

int visit[MAX];

printf("%s--->",g->vertex[v0].sight);

for(vi=0;vivexnum;vi++)

{

if(!visit[vi]&&g->arcs[v0][vi].adj!=INFINITY)

DepthFirstSearch(g,vi);

}

}

//深度优先遍历图g

void TraverGraph(AdjMatrix g)

{

int flag;

int vi;

for(vi=0;vi

flag=0;

for(vi=0;vi

if(!flag)

DepthFirstSearch(&g,vi);

printf("\n\n");

}

void prim(AdjMatrix *G)

{

int v,sum=0;

int i,j,k,min,n=G->vexnum;

int closest[MAX];

ArcCell lowcost[MAX];

printf("输入起点景点编号:");

scanf("%d",&v);

for(i=0;i

{

lowcost[i]=G->arcs[v][i];

closest[i]=v;

}

printf("\n%s",G->vertex[v].sight);

for(i=1;i

{

min=32767;

for(j=0;j

if(lowcost[j].adj!=0&&lowcost[j].adj

{

min=lowcost[j].adj;

k=j;

}

if(v!=k)

{

sum+=lowcost[k].adj;

printf("-->%s",G->vertex[k].sight);

}

lowcost[k].adj=0;

for(j=0;j

if(G->arcs[k][j].adj!=0&&G->arcs[k][j].adj

{

lowcost[j]=G->arcs[k][j];

closest[j]=k;

}

}

printf("\n");

printf("权值总和为:%d\n",sum);

}

int menu()

{

int choice;

printf("\n\n");

printf("\t\t*****************阳光农场导游系统*****************\n");

printf("\t\t* *\n");

printf("\t\t* ★★★1.浏览农场全景*\n");

printf("\t\t* ★★★2.查看农场所有景点*\n");

printf("\t\t* ★★★3.景点信息查询*\n");

printf("\t\t* ★★★4.任意景点为起点的最佳路径查询*\n");

printf("\t\t* ★★★5.任意两个景点间带权路径查询*\n");

printf("\t\t* ★★★6.任一景点到其余各景点最短路径查询*\n");

printf("\t\t* ★★★7.指定地点的所有路径查询*\n");

printf("\t\t* ★★★0.退出系统*\n");

printf("\t\t* *\n");

printf("\t\t**************************************************\n");

printf("\n");

printf("输入选项:");

scanf("%d",&choice);

return choice;

}

void SightDesp()

{

printf("\n 0.农场大门");

printf("\t\t 1.农场采摘区");

printf("\t 2.接待处");

printf("\t 3.医务室");

printf("\n 4.游泳池");

printf("\t\t 5.农场观光区");

printf("\t 6.游乐场");

printf("\t 7.室外运动场");

printf("\n 8.室内体育馆");

printf("\t\t 9.餐厅");

printf("\t\t10.停车场");

printf("\t11.住宿区");

printf("\n12.购物超市\n\n");

}

void main()

{

int c;

AdjMatrix *G;

system("color 1e");

G=(AdjMatrix *)malloc(sizeof(AdjMatrix));

CreatUNG(G);

printf("\n\n\n\n\n\t\t\t\t欢迎");

Sleep(300);

system("cls");

printf("\n\n\n\n\n\t\t\t\t欢迎.");

Sleep(300);

system("cls");

printf("\n\n\n\n\n\t\t\t\t欢迎..");

Sleep(300);

system("cls");

printf("\n\n\n\n\n\t\t\t\t欢迎...");

Sleep(600);

system("cls");

do{

c=menu();

switch(c)

{

case 1:

system("cls");

printf("\n");

printf("浏览农场全景\n");

map();

printf("按任意键返回");

getch();

system("cls");

break;

case 2:

system("cls");

printf("\n");

printf("阳光农场所有景点\n");

SightDesp();

printf("按任意键返回");

getch();

system("cls");

break;

case 3:

system("cls");

SightDesp();

printf("景点信息查询:\n");

find(G);

printf("按任意键返回主界面!!!");

getch();

system("cls");

break;

case 4:

system("cls");

SightDesp();

printf("任意景点为起点的最佳路径查询:\n\n");

prim(G);

getch();

system("cls");

break;

case 5:

system("cls");

SightDesp();

printf("两景点间带权访问最短路径查询:\n");

search1(G);

printf("按任意键返回");

getch();

system("cls");

break;

case 6:

system("cls");

SightDesp();

printf("任意景点到其余各景点的最短路径查询:\n\n");

search_other(G);

printf("按任意键返回");

getch();

system("cls");

break;

case 7:

system("cls");

SightDesp();

printf("任意景点间的所有路径查询:\n\n");

Search_All(G);

getch();

system("cls");

break;

case 0:

printf("退出系统");

system("cls");

printf("\n\n\n\n\n\n\n\t\t\t\t**************\n\n");

printf("\t\t\t\t 谢谢使用");

printf("\n\n\t\t\t\t**************");

printf("\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t ");

printf("版权所有盗版必究\n\n\n");

exit(1);

break;

default:

system("cls");

printf("输入有误,按任意键返回,重新输入!!!");

getch();

system("cls");

}

}while(c);

}

操作系统实验内存分配

西安邮电大学 (计算机学院) 课内实验报告 实验名称:内存管理 专业名称:软件工程 班级: 学生姓名: 学号(8位): 指导教师: 实验日期:

实验五:进程 1.实验目的 通过深入理解区管理的三种算法,定义相应的数据结构,编写具体代码。充分模拟三种算法的实现过程,并通过对比,分析三种算法的优劣。 (1)掌握内存分配FF,BF,WF策略及实现的思路; (2)掌握内存回收过程及实现思路; (3)参考给出的代码思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因,写出实验报告。 2.实验要求: 1)掌握内存分配FF,BF,WF策略及实现的思路; 2)掌握内存回收过程及实现思路; 3)参考本程序思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因,写出实验报告。 3.实验过程: 创建进程:

删除其中几个进程:(默认以ff首次适应算法方式排列) Bf最佳适应算法排列方式:

wf最差匹配算法排列方式: 4.实验心得: 这次实验实验时间比较长,而且实验指导书中对内存的管理讲的很详细,老师上课的时候也有讲的很详细,但是代码比较长,刚开始的时候也是不太懂,但是后面经过和同学一起商讨,明白几种算法的含义: ①首次适应算法。在采用空闲分区链作为数据结构时,该算法要求空闲分区链表以地址递增的次序链接。在进行内存分配时,从链首开始顺序查找,直至找到一个能满足进程大小要求的空闲分区为止。然后,再按照进程请求内存的大小,从该分区中划出一块内存空间分配给请求进程,余下的空闲分区仍留在空闲链中。 ②循环首次适应算法。该算法是由首次适应算法演变而形成的,在为进程分配内存空间时,从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,并从中划出一块与请求的大小相等的内存空间分配给进程。 ③最佳适应算法将空闲分区链表按分区大小由小到大排序,在链表中查找第一个满足要求的分区。 ④最差匹配算法将空闲分区链表按分区大小由大到小排序,在链表中找到第一个满足要求的空闲分区。 实验中没有用到循环首次适应算法,但是对其他三种的描述还是很详细,总的来说,从实验中还是学到了很多。 5.程序源代码: #include #include #include

2015西安交通大学操作系统考试试卷(带答案)

2015西安交通大学操作系统考试试卷(带答案)

2014—2015学年第 1 学期 (A 卷标准答案) 西安交通大学考试试卷(操作系统)(A /B □卷) 开课单位: 课程名称: 操作系统 课程编码: 106027 时间120分钟,开卷□/闭卷 ,总分100分,占总评成绩80%,2015 年1月11日 提示:本场考试不得携带使用计算器。 阅 卷 评 分 表(评阅人填写) 题号 一 二 三 四 五 六 七 八 总得分 得分 评阅人 诚信承诺: 我保证严格遵守学校考场规则,诚信应考。若有任何违纪、作弊行为,自愿接受学校按相关规定进行处理。 本人签名: 院(系): 专业班级: 姓名: 学号: 装 订

一、选择题(共20分,各选项0.5分) 1、在分时系统中,为使多个用户能够同时与系统交互,最关键的问题是( 4)A;当用户数目为100时,为保证响应时间不超过2s,此时的时间片最大应为( 2)B。 A:(1)计算机具有足够高的运行速度;(2)内存容量应足够大;(3)系统能及时地接收多个用户的输入;(4)能在一较短的时间内,使所有用户程序都得到运行;(5)能快速进行内外存对换。 B:(1)10ms;(2)20ms;(3)50ms;(4)100ms;(5)200ms。 2、设有10个进程共享一个互斥段,如果最多允许有1个进程进入互斥段,则所采用的互斥信号量初值应设置为( 3)A,而该信号量的取值范围为( 4)B;如果最多允许有3个进程同时进入互斥段,则所采用的互斥信号量初值应设置为( 2)C A,C:(1)10;(2)3;(3)1;(4)0。 B:(1)0~1;(2)-1~0;(3)1~-9;(4)0~-9。 3、在引入线程的操作系统中,资源分配和调度的基本单位是(2 ),CPU调度和分配的基本单位是(3)。 (1)程序;(2)进程;(3)线程;(4)作业。 4、设m为同类资源R的数目,n为系统中的并发进程数。当n个进程共享m个互斥资源R 时,每个进程对R的最大需求是w;则下列情况会出现死锁的是(4)。 (1)m=2,n=1,w=2;(2)m=2,n=2,w=1;(3)m=4,n=3,w=2;(4)m=4,n=2,w=3。 5、一个计算机系统的虚拟存储器最大容量是由(5)确定的,其实际容量是由(4)决定的。(1)计算机字长;(2)内存容量;(3)硬盘容量;(4)内存和硬盘容量之和;(5)计算机的地址结构。 6、下列解决死锁的方法中,属于死锁预防策略的是( 2),属于死锁避免策略的是( 1)。(1)银行家算法;(2)资源有序分配法;(3)资源分配图化简法;(4)撤销进程法。 7、为实现设备分配,应为每类设备配置一张( 1),在系统中配置一张( 3);为实现设备独立性,系统中应配置一张( 2)。 (1)设备控制表;(2)逻辑设备表;(3)系统设备表;(4)设备分配表;(5)I/O请求表8、现代操作系统中,提高内存利用率主要是通过(1或4)功能实现的,而使每道程序能在不受干扰的环境下运行,主要是通过(2 )功能实现的。 (1)对换;(2)内存保护;(3)地址映射;(4)虚拟存储器。 9、在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起(3);否则,若所需的页不在内存中,则会引起(4)。 (1)输入/输出中断;(2)时钟中断;(3)越界中断;(4)缺页中断。 10、测得某个请求调页的计算机系统部分的状态数据如下:CPU利用率为20%,用于对换空间的硬盘的利用率为97.7%,其它设备的利用率为5%。由此判定系统出现异常。此种情况下,(4)A或(1)B能提高CPU利用率。 A:(1)安装一个更快的硬盘;(2)通过扩大硬盘容量增加对换空间; (3)增加运行进程数;(4)减少运行进程数。 B:(1)加内存条,增加物理空间容量;(2)增加一个更快的CPU; (3)增加其他更快的I/O设备;(4)使用访问速度更快的内存条。 11、静态链接是在(5)A进行的,而动态链接是在(2)B或(3)C进行的,其中在(3)C进行链接可使得内存利用率最高;适用于动态链接的存储方式是(1)D。 A,B,C:(1)编译某段程序时;(2)装入某段程序时;(3)调入某段程序时;(4)紧凑时;(5)装入程序之前。 D:(1)分段存储管理;(2)分页存储管理;(3)可变分区管理;(4)固定分区管理。

西安邮电大学课程设计报告

一. 实验目的及实验环境 实验目的:目前,对于中小超市来说,需要采取一套行之有效的超市管理系统来管理超市的日常进货、销售、员工管理等信息。本次设计的超市管理系统就是想让用户以最少的手工业务处理,来完成超市中的日常工作,增加超市业务处理的效率。 一个典型的超市管理系统,除了应该完成超市中必要的销售工作,如收银台,还应该具有后台管理的功能。 实验环境:系统的体系结构:C/S结构 前台:Java (Eclipse 3.5) 后台数据库:SQL Server 2008 二. 实验内容 超市管理系统 该系统应具备前台收银操作,还有后台对各种数据的管理。 该系统应为多用户使用的,应以用户的权限来进入系统管理模块。 友好的界面及方便简单的操作。 数据存放在数据库中,系统对数据库可进行增、删、查、改的操作。三.方案设计 系统开发的总体任务是实现Java与SQL Server 2008的组合应用,实现用JDBC 方式调用SQL数据库,且有一定的透明性。 超市管理系统需要完成的功能主要有: 1、用户分类登录系统及权限管理。 2、超市收银台的销售管理方式。 3、销售商品信息的录入、查询、修改、删除。 4、供应商信息的录入,查询,修改、删除。 5、超市员工的职位基本信息的设定。 6、员工的基本信息的录入,查询,修改和删除。 7、仓库信息的录入与查看。 8、数据间的相互联系:销售商品的数量和库存量的基本联系;商品信息和供应商的相关数据联系;员工与职位间的联系等。 9、数据存放在数据库中,任何数据操作都是对数据库的数据的操作。

系统结构图(功能模块图) 各个模块的功能描述: (1)、登录界面:本系统简单的设置有三种职位,用户使用密码登录,成功后给其相应的操作界面。 (2)、仓库管理:是仓库管理员和老板可使用的操作,主要是查看仓库的入库信息和添加入库信息。 (3)、管理商品信息:只有老板可用,主要是查看现有商品的信息、修改、删除及添加新的商品信息。 (4)、管理供应商信息:只有老板可用,主要是查看现有的供应商的信息、修改、删除及添加新供应商的信息。 (5)、管理员工信息:只有老板可用,主要是查看现有的员工信息、修改、删除及增加新员工。 (6)、查看销售纪录。 四.测试数据及运行结果 1、Java与数据库SQL 2008的链接: String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=SuperMarket"; 2、用户登陆(登陆界面,老板界面,仓库管理员界面,销售员界面):

软件工程课程设计方案报告范例

西安科技大学 软件工程课程设计报告 题目:图书馆管理系统 班级:软件工程** 学号: ********** 姓名: ******* 2013年1月

目录 1绪论 (1) 2 可行性研究报告 (1) 3 需求规格说明书 (4) 4 总体设计说明书 (7) 5 数据库设计说明书 (8) 6 详细设计说明书 (9) 7 系统实现 (11) 8测试分析报告 (23) 参考文献

1.绪论 1.1 选题目的及意义 随着计算机技术的快速发展,人们对用计算机代替手工管理信息的需求越来越强烈,越来越多的计算机软件如雨后春笋般的应用于人们生产生活的各个领域,为人们提供各种各样的便利。本图书馆管理系统应用软件可以有效地解决高等院校、中小学图书馆由于藏书量增大而带来的管理问题,图书馆管理员可以更好地管理学校图书馆藏书信息,学生可以更方便地享受借书还书的服务,为更有效地学习知识提供有利的保证。 对于我来说,选择这个题目作为课程设计的题目有以下两个原因:一是因为自从上大学以来,每当在图书馆借书的时候,我都会留心观察一下图书馆管理员的那台计算机上显示的内容,久而久之,就对本系统的基本流程越来越了解,做好一个软件的前提是必须对这个软件的功能和原理非常熟悉,相比别的题目,我对这个题目更加了解;二是本学期通过学习Java程序设计和Oracle数据库课程,我觉得这个题目虽然没有那么难(涉及算法的内容很少),但也不是轻而易举就能完成的,所以我想挑战一下自己,看看自己的实现能力到底怎么样,因此决定用面向对象方法学的思想,前台用Java程序设计语言编写界面,访问Oracle数据库中的数据,完成本系统。 1.2 系统概述 本系统通过JDBC-ODBC桥实现前后台数据的联系,基本上实现了一个图书馆管理系统所具备的基本功能,本系统把使用者分为三类:超级管理员、普通管理员、读者,对三种用户分别设计了各自的主界面,以便更好的实现信息的隐藏性,超级管理员可以进行这个系统所有操作;管理员只能执行超级管理员的基本功能,查看自己的信息;读者只能查看自己的信息,对自己当前借书进行挂失和续借两种操作,查询图书馆的藏书。 2.可行性研究报告 2.1 编写目的 本报告编写目的在于研究图书馆管理系统应用软件是否可行,指出本软件开发所使用的方法和手段,并对该软件前景进行分析。 本报告的预期读者是:高等院校、中小学图书馆管理人员、程序设计人员、以及对图书馆管理系统感兴趣的爱好者。 2.2 相关背景 工程名称:图书馆管理应用软件 工程产品名称:高校图书馆管理系统应用软件 工程的组织者:西安科技大学计算机学院软件工程系 产品用户:高校图书馆、中小学图书馆; 产品的生产者:西安科技大学计算机学院软件工程062班袁震; 产品设计者:西安科技大学计算机学院软件工程062班袁震; 2.3 可行性研究的前提 本图书管理系统在功能上要求完成以下基本功能: a).读者、管理员登陆;

操作系统实验内存分配

精心整理西安邮电大学 (计算机学院) 课内实验报告 1. (1 (2 (3 原因,写出实验报告。 2.实验要求: 1)掌握内存分配FF,BF,WF策略及实现的思路; 2)掌握内存回收过程及实现思路; 3)参考本程序思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因,写出实验报告。

3.实验过程: 创建进程: 删除其中几个进程:(默认以ff首次适应算法方式排列) Bf最佳适应算法排列方式: wf最差匹配算法排列方式: 4.实验心得: 明 实验中没有用到循环首次适应算法,但是对其他三种的描述还是很详细,总的来说,从实验中还是学到了很多。 5.程序源代码: #include #include #include #include

#define PROCESS_NAME_LEN 32 //进程名长度 #define MIN_SLICE 10 //最小碎片的大小#define DEFAULT_MEM_SIZE 1024 //内存大小 #define DEFAULT_MEM_START 0 //起始位置 /*内存分配算法*/ #define MA_FF 1 #define MA_BF 2 #define MA_WF 3 /*描述每一个空闲块的数据结构*/ struct free_block_type { }; /* /* { }; /* /* void display_menu(); int set_mem_size(); void set_algorithm(); void rearrange(int algorithm); int rearrange_WF(); int rearrange_BF(); int rearrange_FF(); int new_process(); int allocate_mem(struct allocated_block *ab);

西安工业大学通信工程专业和电子信息工程专业本科毕业设计题目

西安工大通信工程和电子信息工程专业 毕业设计参考题目 题目: 导师: 内容: 要求:专业不限..【通信工程 电子信息科学与技术 电子信息工 程】 部门:部门不限..【信通系 电工电子教学部 电工电子实验中心 信控技术研究所 院办】 来源:来源不限..科研 生产实际 自拟 其它 状态:可选状态 结束状态 状态不限 列表按 默认题目 导师专业来源部门 限选 已选结束 日期 降序 升序排列 【信通系】网上选题系统 秦刚电子信息工程[需要1人] 浏览详情 [1]电缆隧道车转向控制系统的研究 4004 张海宁 专业方向不限[需要1人,已接受0人]可选报 [2]电动扭矩扳手设计 还没有人选报! 雷斌 专业方向不限[需要1人] 浏览详情 [3]便携式水分数据采集仪设计与实现 4018 王鹏 专业方向不限[需要1人] 浏览详情 [4]基于WIFI 的嵌入式图像监控系统--图像存储模块 4023 张峰 专业方向不限[需要1人] 浏览详情 [5]无线气压测量系统 一接口及显示单元设计 4015 [需要1人] 浏览详情 [6] 雷斌专业方向不限 基于Creator/Vega 的试验水槽仿真模型的实现 4031 雷斌 专业方向不限[需要1人] 浏览详情 [7] 靶场试验环境的虚拟现实场景建模 4016 雷斌 专业方向不限[需要1人] 浏览详情 [8] 便携式热敏电阻测温缆数据采集仪设计 4015 雷斌 专业方向不限[需要1人] 浏览详情 [9] 多路高 精度计时及延时控制器通信接口设计 4032 雷斌 专业方向不限[需要1人] 浏览详情 [10] 多路高精度计时及延时控制器人机接口设计 4019 雷斌 专业方向不限[需要1人] 浏览详情 [11] 多路高精度计时及延时控制器设计与实现 4032

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于A RM的数字式万年历 课程:嵌入式系统课程设计 专业:电子信息科学与技术 班级: 03114411 学号: 031441119 学生姓名:田紫龙 指导教师:易金桥 2017年6 月20 日

信息工程学院课程设计任务书 学号031441119学生姓名田紫龙专业(班级)0314411 设计题目基于 ARM 的数字式万年历 1.能测量温度并且实时显示; 2.具有时间显示功能,能够显示年月日,时分秒,并且可以手动调节时间。 设 3. 具有 12 小时制和 24 小时制切换功能。 计 技 术 参 数 对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集 选用 DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602 液晶显 示模块,可以在LCD1602 上同时显示年、月、日、周日、时、分、秒,还具有 设 时间校准整点灯光提醒等功能。制作仿真和实物。 计 要 求 [1]苏平 . 单片机的原理与接口技术 [M]. 北京 : 电子工业出版社, 2006,1-113. [2]王忠民 . 微型计算机原理 [M]. 西安 : 西安科技大学出版社, 2003,15-55. [3]左金生 . 电子与模拟电子技术 [M]. 北京 : 电子工业出版社, 2004,105-131. [4]新编单片机原理与应用(第二版). 西安电子科技大学出版社, 2007.2 [5]张萌 . 单片机应用系统开发综合实例 [M]. 北京:清华大学出版社, 2007.7 [6] 朱思荣. 51 单片机实现公历与农历、星期的转换[Z].当当电子网 [7]李广弟 . 单片机原理及应用 [M] 北京航空航天大学出版社 ,2004 年 参[8] 王越明 . 电子万年历的设计 [J]. 黑龙江科技信息, 2004 年 考 资 料 2017年 6 月 20 日

西安工业大学毕业设计要求

1 专科毕业设计说明书(论文)的字数及印装 1.1 毕业设计说明书(论文)的字数 专科毕业设计说明书(论文)的字数:理工科1.2万字以上,文科1万字以上,体育艺术类8,000字以上。 1.2毕业设计说明书(论文)用纸、版面及页眉 1.3 毕业设计说明书(论文)用字及打印 毕业设计说明书(论文)使用简化汉字撰写(外语类专业除外)。毕业设计说明书(论文)必须打印;打印稿正文、中文摘要用字为小四号宋体,页码置于页面的底部并居中放置,论文采用单面打印。 电子文档格式:DOC格式或WPS格式。 1.4毕业设计说明书(论文)的装订 毕业设计说明书(论文)的封面按统一要求(见附录A)制作,论文装订后,成品尺寸与A4纸幅的偏差为 2mm。

2 毕业设计说明书(论文)内容顺序、摘要及主要符号表 2.1毕业设计说明书(论文)的内容及顺序 毕业设计说明书(论文)的内容按顺序依次为:封面、扉页、摘要、目录、主要符号表、论文主体部分(包括绪论、正文和结论三部分)、致谢(总结)、注释、参考文献、附录等。 2.2 封面 a. 封面的主要内容包括:“毕业设计说明书”或“毕业设计论文”字样、论文题目、论文作者信息、指导教师(含专业技术职务信息)、提交论文时间等。 b. 论文题目应能反映论文的主要工作、研究目的和特点。确定题目时要把握好可索引性、特异性、明确性和简短性。论文题目的字数一般应在25字以内。如果有些细节必须放进标题,可分为主标题和副标题两个部分。 封面的排版规范见附录A。 2.3 扉页 内容与封面相同。 2.3 摘要 a. 摘要包括:论文题目、“摘要”字样(位置居中)、摘要正文、关键词。 b. 摘要主要包括三部分内容:论文研究工作的目的意义、研究的内容及方法、结果与结论。 c. 毕业设计摘要应简明扼要,文字要精练。 d. 关键词是反映毕业设计(论文)主题内容的名词,是供检索使用的,应尽量选取《汉语主题词表》等词表提供的规范词。一般为3~5个,按词条外延层次(学科目录分类),由高至低顺序排列。关键词排在摘要部分的下方。 e. 英文摘要与中文摘要相对应,但应避免按中文字义逐字逐句生搬硬译。 f. 摘要排版见附录B(中文摘要B1,英文摘要B2)。 2.4 目录 a.目录应包括:主要符号表、正文中的标题、附录、参考文献、致谢等。 b.目录编入三级标题,即章、节、小节的标题,各级序号均使用阿拉伯数字。 c.目录中的页码从论文的正文开始至全文结束。 d.中英文摘要、符号表及目录本身的页码另编,页码在页下方居中排列。 目录的排版规范见附录C。

西安邮电大学软件课程设计报告

软件课程设计 报告书 院系名称:电子工程学院 学生姓名:李群 专业名称:光信息 班级:1103 学号:05113096 时间:2012年4月11日至2012年4月20日

实验题目 一、实验目的 让学生综合应用所学的计算机基础知识和所掌握的程序设计语言(C语言),自行设计并实现一个较为完整的小型管理信息系统或小型应用系统的设计与开发。其主要目的是使学生通过系统分析、系统设计、编程调试,写实验报告等环节,初步掌握软件系统设计的方法和步骤,灵活运用程序设计语言进行软件开发的能力,提高分析问题和解决问题的能力,提高程序设计水平。要求编程时采用结构体、指针、文件等复杂数据结构存储组织数据。 二、实验内容 1 通过键盘输入某位学生的学生证信息。学生证包含的信息请参看自己的学生证; 2 给定学号,显示某位学生的学生证信息; 3 学生信息的添加 4 显示全部的学生证信息; 5 给定某位学生的学号,修改该学生的学生证信息; 6 给定某位学生的学号,删除该学生的学生证信息; 7 提供一些统计各类信息的功能。统计学生数,学生男女人数; 8 能够对年龄进行升序和降序排序; 9 用文件的形式将录入的数据进行存储,并从其中读取数据。 三、需求分析 根据题目要求,学生信息要从文本文件中存取,所以本程序要提供读写文件,显示,统计,查寻,修改记录,保存文件等操作,此外,还要提供键盘式选择菜单实现功能。 四、概要设计 分析整个系统,根据上面的需求分析,可以将这个系统的设计分为如下几大模块:读取数据,输出数据,添加数据,输入数据、修改数据、查询数据、删除数据、统计数据,排序数据,保存数据。 五、详细设计及运行结果

西安工业大学毕业设计要求

1 专科毕业设计说明书(论文)地字数及印装 1.1 毕业设计说明书(论文)地字数 专科毕业设计说明书(论文)地字数:理工科1.2万字以上,文科1万字以上,体育艺术类8,000字以上. 1.2毕业设计说明书(论文)用纸.版面及页眉 专科科毕业设计说明书(论文)用纸均为A4(标准幅面210mm×297mm),版芯为38行(行距为固定值18磅)×39字(小四号),字体要求为宋体.矚慫润厲钐瘗睞枥庑赖。 1.3 毕业设计说明书(论文)用字及打印 毕业设计说明书(论文)使用简化汉字撰写(外语类专业除外).毕业设计说明书(论文)必须打印;打印稿正文.中文摘要用字为小四号宋体,页码置于页面地底部并居中放置,论文采用单面打印.聞創沟燴鐺險爱氇谴净。 电子文档格式:DOC格式或WPS格式. 1.4毕业设计说明书(论文)地装订 毕业设计说明书(论文)地封面按统一要求(见附录A)制作,论文装订后,成品尺寸与A4纸幅地偏差为 2mm.残骛楼諍锩瀨濟溆塹籟。

2 毕业设计说明书(论文)内容顺序.摘要及主要符号表 2.1毕业设计说明书(论文)地内容及顺序 毕业设计说明书(论文)地内容按顺序依次为:封面.扉页.摘要.目录.主要符号表.论文主体部分(包括绪论.正文和结论三部分).致谢(总结).注释 .参考文献 .附录等. 2.2 封面 a. 封面地主要内容包括:“毕业设计说明书”或“毕业设计论文”字样.论文题目.论文作者信息.指导教师(含专业技术职务信息).提交论文时间等. b. 论文题目应能反映论文地主要工作.研究目地和特点.确定题目时要把握好可索引性.特异性.明确性和简短性.论文题目地字数一般应在25字以内.如果有些细节必须放进标题,可分为主标题和副标题两个部分.謀荞抟箧飆鐸怼类蒋薔。 封面地排版规范见附录A. 2.3 扉页 内容与封面相同. 2.3 摘要 a. 摘要包括:论文题目.“摘要”字样(位置居中).摘要正文.关键词. b. 摘要主要包括三部分内容:论文研究工作地目地意义.研究地内容及方法.结果与结论. c. 毕业设计摘要应简明扼要,文字要精练. d. 关键词是反映毕业设计(论文)主题内容地名词,是供检索使用地,应尽量选取《汉语主题词表》等词表提供地规范词.一般为3~5个,按词条外延层次(学科目录分类),由高至低顺序排列.关键词排在摘要部分地下方.厦礴恳蹒骈時盡继價骚。 e. 英文摘要与中文摘要相对应,但应避免按中文字义逐字逐句生搬硬译. f. 摘要排版见附录B(中文摘要B1,英文摘要B2). 2.4 目录 a.目录应包括:主要符号表.正文中地标题.附录.参考文献.致谢等. b.目录编入三级标题,即章.节.小节地标题,各级序号均使用阿拉伯数字.

西安邮电大学嵌入式课后答案

嵌入式系统开发 习题1 1.什么是嵌入式系统?有何特点? 答:嵌入式系统的概念有很多种,在嵌入式系统领域中比较认同的嵌入式系统的概念是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 嵌入式系统的特点: ⑴嵌入式系统是将先进的计算机技术、半导体技术以及电子技术与各个行业的具体应用相结合的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。 ⑵系统内核小。由于嵌入式系统一般是应用于小型电子装置中,系统资源相对有限,所以内核较之传统的操作系统要小得多。 ⑶专用性强。 ⑷系统精简。 ⑸系统软件(OS)要求具有高实时性。 ⑹嵌入式软件开发要走向标准化,需要使用多任务的操作系统。 ⑺嵌入式系统本身并不具备在其上进行进一步开发的能力。 2.嵌入式系统可以分为几层?每一层各完成哪些功能? 答:嵌入式系统由硬件层、中间层、软件层和功能层组成。 硬件层:以嵌入式微处理器为核心,存储器用以存储数据和执行代码,相关的设备接口和I/O接口,这些组成了一个嵌入式系统的基础,实现逻辑运算,算术运算等。 中间层:将系统上层软件和底层硬件进行分离,封装成标准的接口,在上层软件开发人员无需知道底层硬件的具体情况,完成的任务是底层硬件的初始化、数据的输入/输出操作、硬件的配置等功能。 软件层:主要由RTOS、文件系统、图形用户接口、网络系统和通用的组件模块组成,是软件开发的基础。 功能层:用来完成被控对象的控制功能。 3.嵌入式系统中硬件抽象层有什么特点? 答:硬件抽象层是介于硬件层与软件层之间的中间层,它将系统上层软件与底层硬件分离开来,具有以下两个特点: ⑴硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,硬件抽象层需要为操作系统提供操作和控制具体硬件的方法。 ⑵操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。 4.简述嵌入式处理器的硬件组成? 答:随着集成电路集成度的不断提高,嵌入式系统板级的硬件电路模块也越来越多的集成到芯片内部,目前处理器芯片内部的电路模块组成如下: ⑴处理器内核,以CPU为核心,有的还包含MMU(存储器管理单元)、Cache(高速缓存)、ICE(在线仿真)等电路模块。

2016西安交通大学操作系统实验报告

操作系统实验报告 实验一:用户接口实验 一.实验目的 1.理解面向操作命令的接口Shell。 2.学会简单的shell编码。 3.理解操作系统调用的运行机制。 4.掌握创建系统调用的方法。 操作系统给用户提供了命令接口和程序接口(系统调用)两种操作方式。用户接口实验也因此而分为两大部分。首先要熟悉Linux的基本操作命令,并在此基础上学会简单的shell编程方法。然后通过想Linux内核添加一个自己设计的系统调用,来理解系统调用的实现方法和运行机制。在本次实验中,最具有吸引力的地方是:通过内核编译,将一组源代码变成操作系统的内核,并由此重新引导系统,这对我们初步了解操作系统的生成过程极为有利。 二.实验内容 1)控制台命令接口实验 该实验是通过“几种操作系统的控制台命令”、“终端处理程序”、“命令解释程序”和“Linux操作系统的bash”来让实验者理解面向操作命令的接口shell 和进行简单的shell编程。 查看bash版本。 编写bash脚本,统计/my目录下c语言文件的个数 2)系统调用实验 该实验是通过实验者对“Linux操作系统的系统调用机制”的进一步了解来理解操作系统调用的运行机制;同时通过“自己创建一个系统调用mycall()” 和“编程调用自己创建的系统调用”进一步掌握创建和调用系统调用的方法。 编程调用一个系统调用fork(),观察结果。 编程调用创建的系统调用foo(),观察结果。

自己创建一个系统调用mycall(),实现功能:显示字符串到屏幕上。 编程调用自己创建的系统调用。 三.实验步骤 系统调用实验: 1.首先将Linux-3.0.tar.bz2拷贝到/usr/src目录下 ——命令:cp linux-3.0.tar.bz2 /usr/src/ 2.打开终端,获得root权限 ——命令:sudo –s 3.进入/usr/src目录 ——命令:cd /usr/src 4.解压linux源码 ——命令:tar xvzf linux-3.0.tar.bz2 5.进入目录linux-3.0.5 ——命令:cd linux-3.0 6.添加系统调用 ——操作:gedit kernel/myservice.c 在文本编辑器中添加 #include #include asmlinkage void sys_mycall() { printk(KERN_INFO "Hello, world!\n"); return; } 7.修改kernel/Makefile添加生成myservice.c添加到Makefile的编译规则中: obj-y += myservice.o 8..修改arch/x86/include/asm/unistd_32.h,添加以下内容: #define __NR_mycall SYS_ID //SYS_ID表示新添加系统调用的调用号

西安科技大学发电厂课程设计报告书

‘ 发电厂电气部分课程设计 (煤矸石电厂厂用电设计) 设 计 计 算 说 明 书

目录 一.煤矸石电厂基础资料----------------------------------------1 1.1电厂基本情况-----------------------------------------------1 1.2电源情况--------------------------------------------------1 1.3环境条件--------------------------------------------------1二.设计说明书------------------------------------------------1 三.设计计算书------------------------------------------------3 3.1 各车间的计算负荷-----------------------------------------------3 3.2 厂用低压变压器的选择-------------------------------------------5 3.3 发电机端分裂电抗器的选择---------------------------------------6 3.4 短路电流的计算-------------------------------------------------6 3.5 母线导体的选择-------------------------------------------------10 3.6 电动机的选择及自启动校验---------------------------------------11 3.7 设备的选型-----------------------------------------------13 参考文献-----------------------------------------------------20

西安邮电大学linux操作系统课程设计

西安郵電大學 操作系统课程设计 报告书 院系名称:软件工程 学生姓名:蒋博 专业名称:软件工程 班级:1202班 学号:04123038 时间:2015 年4月13 日至2015 年4月24 日

1实验目的 操作系统是控制和管理计算机硬件和软件资源的虚拟机,其中的文件系统是对软件和设备进行管理的系统,文件系统是操作系统中非常重要的一个模块,它的实现占用了操作系统源码的最大编码量,其好坏也直接影响着用户对操作系统的感受程度。通过对操作系统课程设计的实践,进一步加深对文件系统的认识和理解,并在此基础上培养学生的工程应用能力。实验分别从用户态和内核态两个层次实践文件系统的部分功能。 2实验任务 2.1 ls实现 在linux下编程实现带参数的shell命令ls,ls命令必须支持如下功能。 1.基本要求 (1)支持-l 参数; (2)输出结果按字典排序; (3)列出“.”文件,支持-a参数,在没有-a时候不显示隐藏文件; (4)显示记录总数。 2.高级要求 (1)支持对给定的目录进行操作,如ls /tmp; (2)输出结果分栏排序,每栏的宽度由这一栏最长的文件名决定,显示的栏 数还受终端显示器的宽度影响,每一列尽可能的等宽; (3)正确显示文件特殊属性suid、sgid和sticky,参见联机帮助确保程序能处 理各种情况; (4)支持标准的ls支持选项-R,它的功能是递归地列出目录中所有的文件包 含子目录中的文件; (5)支持标准的ls支持选项-u,它会显示出文件的最后访问时间,如果用了 -u而不用-l,会有什么结果?; (6)当关掉一个文件的读权限,就不能打开这个文件来读。如果从一个终端 登录,打开一个文件,保持文件的打开状态,然后从另外的终端登录,去掉文件的读权限,这时有什么事情会发生?编写一个程序,先用open()打开一个文件,用read()读一些内容,调用sleep()等待20s以后,再读一些内容,从另外的终端,再等待的20s内去掉文件的读权限,这样会有什么结果?。 2.2编写内核模块显示目录或文件的信息。

课程设计实习报告

课程设计实习报告 篇一:课程设计实习报告 测绘工程08-2班 郭庆彪实习报告 07082967 课程设计(一) ——灯湖矿区设计 《灯湖矿区控制网设计任务通知书》 XX测绘队: 灯湖矿区位于广州省灯湖煤田东北域,煤藏总量为10000亿吨。本矿区已列入国家经济建设计划,准备进行重点开发。根据建设规划,首先需分别施测54 的1∶XX地形图及23 1∶1000地形图。图2-1为该矿区1∶50000地形图,其中虚线范围为1∶XX测图区,点划线范围为1∶1000测图区。 为了加快建井速度,需在竖井间进行对向掘进(石红-上村直线贯通),最大贯通距离为3km,矿井最大单翼长度5km,井深一般不超过300m。

为满足矿山设计,建井、生产三阶段测绘各种比例尺地形图、井巷贯通以及工业场地施工测量的需要,应在全矿区建立统一的具有足够精度密度的平面控制网与高程控制网。另外,为贯通工程需布设一专用控制网,要求两近井点横向相对中误差小于30mm。要求你队在任务通知书下达后二个月内完成技术设计和准备工作,一年内完成建网任务。 《灯湖矿区控制测量技术设计说明书》 (一)作业任务及测区概况 1.作业目的及任务范围 灯湖矿区位于广州市灯湖煤田东北域,煤藏量为10000亿吨。要求于XX年XX月之前,完成建网任务和提交阳春一矿的54 的1:XX和23 1∶1000地形图。。在全矿区建立统一的具有足够精度密度的平面控制网与高程控制网。另外,为贯通工程需布设一个专用控制网,要求两近井点横向相对中误差小于30mm。灯湖矿区的测图总面积为77km2。 2.测区概况 测区地处华东近海地区,玉山东南方向;大牛山以北的地区。面积约为77平方千米,行政律属广州市。测区内的主要的城镇有马林,史庄,白马村,小刘庄,广兴镇,广平庄,五店,王家屯,大北望,小北望等分散列式的农庄。灯湖地区有海拔在80米到300米的玉山,大广山,太山,广

数字信号处理课程设计(西安科技大学通信学院)

通信与信息工程学院 数字信号处理课程设计(综合实验) 班级:电信XX班 姓名:XX 学号:XX 指导教师:李远征 设计时间:2013~2014学年第18~19周 成绩: 评 通信与信息工程学院 二〇一三年

设计一 正余弦信号的谱分析 【一】 设计目的 1. 用DFT 实现对正余弦信号的谱分析; 2. 观察DFT 长度和窗函数长度对频谱的影响; 3. 对DFT 进行谱分析中的误差现象获得感性认识。 【二】 设计原理 数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体地说,它也包括确定能量谱和功率谱。基于表征正余弦信号的基本参数,如振幅、频率和相位不随时间改变,则此信号的傅立叶变换)(ω j e G 可以用计算 它的DTFT 得到 ∑∞ -∞ =-= n n j j e n g e G ωω )()( 实际上无限长序列)(n g 首先乘以一个长度为M 的窗函数)(n w ,使它变成一个长为M 的有限长序列,)()()(1n w n g n g =,对)(1n g 求出的DTFT )(1ω j e G 应该可以作为原连续 模拟信号)(t g a 的频谱估计,然后求出)(1ω j e G 在πω20≤≤区间等分为N 点的离散傅立 叶变换DFT 。为保证足够的分辨率,DFT 的长度N 选的比窗长度M 大,其方法是在截断了的序列后面补上N -M 个零。计算采用FFT 算法。 【三】 设计内容 1. 图1.1 设计内容1的运行结果

程序: N=input('输入谱分析的长度'); n=0:N-1; x1=cos(pi*20*n/64); x2=cos(pi*22*n/64); subplot(2,2,1),stem(n,x1) xlabel('n');ylabel('x1(n)'); title('余弦序列'); subplot(2,2,2),stem(n,x2) xlabel('n');ylabel('x2(n)'); title('余弦序列'); X1=abs(fft(x1,N)); subplot(2,2,3) k=0:N-1; stem(k,X1) %绘制序列的幅 xlabel('k');ylabel('X1(k)'); string=[num2str(N),'点FFT幅频曲线']; X2=abs(fft(x2,N)); %求x2余弦序 subplot(2,2,4) k=0:N-1; stem(k,X2) xlabel('k');ylabel('X2(k)'); string=[num2str(N),'点FFT幅频曲线']; 泄漏的原因:通过图可看出:频率为10Hz的余弦曲线DFT只有两个点不等于零,位于k=5和 k=27处,k=5对应于频率10Hz,k=27对应于频率54Hz(也就是-10Hz)。这样DFT确实正确的分辨了余弦信号的频率。但是这样的理想结果是恰巧得到的,此时我们借去了五个完整的余弦周期(f*N/Fs=5). 将频率改为11Hz,采样频率和窗长度依然为32点,计算图像可看出:频谱图上k=5和k=27处都有较大的峰值,而其它的点上幅度不再为零。这两个峰值对应的频率为10Hz和12Hz,所以,信号的峰值位于两者之间,本来是单一的11Hz频率的能量会分不到许多DFT频率上,这种现象叫频率泄露,来源于截断效应。 2. 图1.2 设计内容2的运行结果 程序: N1=input('输入谱分析的长度');

西安邮电大学操作系统期末考试题及答案

2010―2011 学年度第二学期 一、单项选择题(每题1分,共20分) 1.操作系统的发展过程是( C ) A、原始操作系统,管理程序,操作系统 B、原始操作系统,操作系统,管理程序 C、管理程序,原始操作系统,操作系统 D、管理程序,操作系统,原始操作系统 2.用户程序中的输入、输出操作实际上是由( B )完成。 A、程序设计语言 B、操作系统 C、编译系统 D、标准库程序 3.进程调度的对象和任务分别是( C )。 A、作业,从就绪队列中按一定的调度策略选择一个进程占用CPU B、进程,从后备作业队列中按调度策略选择一个作业占用CPU C、进程,从就绪队列中按一定的调度策略选择一个进程占用CPU D、作业,从后备作业队列中调度策略选择一个作业占用CPU 4.支持程序浮动的地址转换机制是( A ) A、动态重定位 B、段式地址转换 C、页式地址转换 D、静态重定位 5.在可变分区存储管理中,最优适应分配算法要求对空闲区表项按( C )进行排列。 A、地址从大到小 B、地址从小到大 C、尺寸从小到大 D、尺寸从大到小 6.设计批处理多道系统时,首先要考虑的是( 系统效率和吞吐量 )。 A、灵活性和可适应性 B、系统效率和吞吐量 C、交互性和响应时间 D、实时性和可靠性 7.当进程因时间片用完而让出处理机时,该进程应转变为( B )状态。 A、等待 B、就绪 C、运行 D、完成 8.文件的保密是指防止文件被( C )。 A、篡改 B、破坏 C、窃取 D、删除 9.若系统中有五个并发进程涉及某个相同的变量A,则变量A的相关临界区是由( D )临界区构成。 A、2个 B、3个 C、4个 D、5个10.按逻辑结构划分,文件主要有两类:(A)和流式文件。 A、记录式文件 B、网状文件 C、索引文件 D、流式文件 11.UNIX中的文件系统采用(D)。 A、网状文件 B、记录式文件 C、索引文件 D、流式文件 12.文件系统的主要目的是( A )。 A、实现对文件的按名存取 B、实现虚拟存贮器 C、提高外围设备的输入输出速度 D、用于存贮系统文档 13.文件系统中用( D )管理文件。 A、堆栈结构 B、指针 C、页表 D、目录 14.为了允许不同用户的文件具有相同的文件名,通常在文件系统中采用( B )。 A、重名翻译 B、多级目录 C、约定 D、文件名 15.在多进程的并发系统中,肯定不会因竞争( C )而产生死锁。 A、打印机 B、磁带机 C、CPU D、磁盘 16.一种既有利于短小作业又兼顾到长作业的作业调度算法是( C )。 A、先来先服务 B、轮转 C、最高响应比优先 D、均衡调度 17.两个进程合作完成一个任务。在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的( B )。 A、互斥 B、同步 C、调度 D、伙伴 18.当每类资源只有一个个体时,下列说法中不正确的是( C )。 A、有环必死锁 B、死锁必有环 C、有环不一定死锁 D、被锁者一定全在环中 19.数据文件存放在到存储介质上时,采用的逻辑组织形式是与( A )有关的。 A、文件逻辑结构 B、存储介质特性 C、主存储器管理方式 D、分配外设方式 20.在单处理器的多进程系统中,进程什么时候占用处理器和能占用多长时间,取决于( B )。 A、进程相应的程序段的长度 B、进程自身和进程调度策略 C、进程总共需要运行时间多少 D、进程完成什么功能 二、填空题(每空2分,共20分)

相关主题