个人关系网的设计与实现系统 -课程论文5则范文

时间:2019-05-14 03:24:51下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《个人关系网的设计与实现系统 -课程论文》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《个人关系网的设计与实现系统 -课程论文》。

第一篇:个人关系网的设计与实现系统 -课程论文

附件二

【学生用】

西北农林科技大学信息工程学院 《数据结构与C语言综合训练》实习报告

题 目: 个人关系网的设计与实现系统

名 专业班级 指导教师

实践日期 7月8日———7月18日

目 录

一、综合训练目的与要求.............................................................................错误!未定义书签。

二、综合训练任务描述...............................................................................................................1

三、算法设计..............................................................................................................................1

四、详细设计及说明...................................................................................................................5

五、调试与测试..........................................................................................................................7

六、实习日志..............................................................................................................................8

七、实习总结..............................................................................................................................9

八、附录:核心代码清单..........................................................................................................10

一、综合训练目的与要求

本综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务:

1.巩固和加深学生对算法分析课程基本知识的理解和掌握; 2.培养利用算法知识解决实际问题的能力;

3.掌握利用程序设计语言进行算法程序的开发、调试、测试的能力; 4.掌握书写算法设计说明文档的能力;

5.提高综合运用算法、程序设计语言、数据结构知识的能力。

正文

二、综合训练任务描述

总体任务是完成我们学习实践的工作,完成我们的实习报告。具体我个人完成的项目是个人关系网的设计与实现系统。

(1)用顺序表储存信息(2)建立无向图

(3)用switch,case语句建立菜单,便于查询信息

(4)输入人数、信息,输出关系,查询两个人的关系,从而建立起个人关系网

三、算法设计

(1)文字描述

根据题意要求,先要建立图,用结点代表个人信息,边代表人与人之间的关系,利用顺序表储存信息,再设计出菜单函数,这样便于查询。总的来说,用三个任务,就是输入信息,输出信息,建立无向图,并查询两个人之间的关系。所以我必须建立输入信息函数,输出信息函数,建立图,并建立菜单四个重要的模块。(2)框图

图1(3)伪代码

#define vexnum 4

//图的最大顶点个数 #define M 10

//储存人名数组的大小

using namespace std;

typedef struct {

int **arcs;//边的信息

char vex[vexnum][M];//顶点信息

int vexs;//边的大小 } Graph;

void DestroyGraph(Graph &G)//清除图中记录 {

int i;

for(i = 0;i < G.vexs;i++)

free(G.arcs[i]);}

void Print(Graph G)//打印图中信息 {

int i, j;

cout<<“关系信息输出:”<

for(i = 0;i < G.vexs;i++)

cout<

for(i = 0;i < G.vexs;i++)

{

for(j = 0;j < G.vexs;j++)

{

switch(G.arcs[i][j])

}

} }

void FindRelationship(Graph G){

cout<<“请输入要查找的两个人的姓名:”<

char name1[10];

char name2[10];//

cin>>name1;//

cin>>name2;

scanf(“%s %s”, name1, name2);//输入两个要查找关系的人

int i, j, k, t;

i = j = k = t = 0;

for(i = 0;i < G.vexs;i++)

{

if(!strcmp(name1, G.vex[i]))//在表中找到名字为name1的人

}

for(j = 0;j < G.vexs;j++)

{

if(!strcmp(name2, G.vex[j]))

//在表中找到名字为name2的人

}

if(i == G.vexs && j!= G.vexs)

//说明name1在图中,而name2不在图中

else if(i!= G.vexs && j == G.vexs)//说明name2在图中,而name1不在图中

else if(i == G.vexs && j == G.vexs)

//说明name1和name2都不在图中

else

{

switch(G.arcs[k][t])

} }

void GetRecord(Graph &G)//录入信息到图中 {

int i, j;

G.vexs = vexnum;

//输入顶点的信息

printf(“本系统容量为%d人n请输入要存入关系网中的人名:n”, vexnum);

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

{

scanf(“%s”, G.vex[i]);//输入要录入图中的人的名字

}

//给边分配存储空间

G.arcs =(int **)malloc(vexnum*sizeof(int *));

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

//输入边的信息

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

{

for(j = i;j

{

if(j!= i)

}

} }

四、详细设计及说明

(1)菜单的建立

利用switch,case语句处理菜单,其基本语法如下:

switch(controllingExpression)

{

case constantExpression1 :

case constantExpression2 :

case constantExpression3 :

statements;//当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements

break;

case constantExpression :

statements;

break;

...default :

statements;

break;

} 输入的菜单:

图2

(2)信息的输入如下:

void GetRecord(Graph &G){

int i, j;

G.vexs = vexnum;

//输入顶点的信息

printf(“本系统容量为%d人n请输入要存入关系网中的人名:n”, vexnum);

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

{

scanf(“%s”, G.vex[i]);

}

//给边分配存储空间

G.arcs =(int **)malloc(vexnum*sizeof(int *));

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

{

G.arcs[i] =(int *)malloc(vexnum*sizeof(int));

}

//输入边的信息

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

{

for(j = i;j

{

if(j!= i)

{

printf(“请输入%s和%s的关系:n提示:0:陌生;1:同学;2:朋友;3:同事n”, G.vex[i], G.vex[j]);

scanf(“%d”, &G.arcs[i][j]);

G.arcs[j][i] = G.arcs[i][j];

}

else

{

G.arcs[i][j] = 100;

}

}

} }

图3(3)信息的输出如下:

图4(4)两个人关系的查询:

图5

五、调试与测试

调试方法,调试结果的分析与讨论,调试过程中遇到的主要问题及采取的解决措施。测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考,算法的改进设想。

六、实习日志

7月8日:这是我的第一次,也是第一天实习。我们首先按照老师和班干部的指示,选择了自己适合并拿手的试题,我选择了个人关系网的设计与实现题目,我感觉这个题目看似简洁明了,动手起来却是非常难操作,思路也不是特别的清楚,于是今天我主要把数据结构的图的知识复习了一遍。

7月9日:经过昨天对图知识的研究,进一步巩固了图的建立,但依然没有明确的思路,于是我请教了老师,她告诉我应该用结点、边的含义来分别表示个人信息和关系,再利用邻接矩阵或邻接表建立无向网,就这样,我按照老师的思路,试着做了一些编程,最后我还先完成了一篇实习计划书。

7月10日———7月12日:在这三天时间里,我正式开始编译程序,通过前两天我上网查阅相关知识、复习课本、通过老师讲解的途径,基本上有了大至的思路,所以我就开始编程,在开始结段还挺顺利的,一直把图的定义、建立很好的完成了,但当我进一步编程时,我有感觉了无从下手,所以我立即查阅资料,但网上资料有限,使我一度陷入困境之中,非常烦恼,实在没办法,就去请教了同学,在同学的帮助下,我很快的找到了思路,并很快的把菜单完成,最后经过不断的调试不断的改正。完成了这个程序,对图、菜单知识有了更深入的了解。

7月13日:我们放假,我们同学很好的放松了心情,并为接下来的实习工作做好准备。

7月14日———7月17日:我很好的完成了代码,应该来说,大部分的工作已经完成,就剩下实习报告的书写了,但我告诉自己,不能放松,一定要坚持到最后,所以我在老师的安排下,认真的完成报告内容的各项要求,并不断的完善,争取把最好的实习报告和实习成果展现给大家。

7月18日:进行答辩,完成各项实习任务,并对这次实习进行深刻的回顾和学习。

七、实习总结

学习完了C语言和数据理论课程,接下来我们必须学以致用,否则学什么都没有意义。通过这次综合训练,我感慨颇多,不光是知识方面的提升,更是在解决问题能力上有了提升。

(1)努力学习,巩固知识

当我面对这次实习时,我有一些忐忑,因为我担心自己能力不够,以至于不能完成这项任务。所以刚开始面对这个问题时,我只能去查阅相关知识,复习学过的理论知识。在这个过程中,我感到自己平时学的很不够,正应了“书到用时方恨少”这句话。所以我希望用自己的经历告诉大家,我们还是平时就要学好文化知识,不断的温习、巩固,这样才能为我们所用,真正的提升自己的能力。(2)不骄不躁,乐于请教

其实,在这次实习中,我面临了很多的困难,不仅是知识方面的缺陷,还有精神毅力上的退缩。经过我的一番准备,我有思路解决问题时,刚开始还很顺利,这时,心里有了小得瑟,就想这很快就能解决了,但当我面对菜单如何巧妙建立时,我很为难,就自此陷入困境之中,在做了很多的尝试失败之后,就有了些许灰心,最终,在同学的帮助之下,我能顺利完成代码编程,非常感谢同学帮助,也告诉自己,在自己不懂时,应该虚心请教他人,不能碍于面子,切记不骄不躁。(3)热情洋溢,大胆创新

在编程过程中,大家都能感觉到非常的枯燥、乏味,但没有办法,这是我们的任务,很有可能使我们未来的工作,所以我们必须对编程要有极大的信心,保持着热情,可以追求编程中的快乐和成就感,当你能顺利的解决很大的困难时,你就会感到非常的自豪,这也是我们编程工作者的辛勤果实。还有这次编程我用的是C++语言,不同于一

般同学采用的C语言做法,我感到即使用又简便,很快能解决很多问题,所以当我们不能用传统方法解决困难问题时,我们可以采用另一种方法,换个思路,我们可能有意想

不到的发现。

面对新的问题、新的挑战,我们应该提高自己的能力,更好的解决它。

八、附录:核心代码清单

typedef struct {

int **arcs;//边的信息

char vex[vexnum][M];//顶点信息

int vexs;//边的大小 } Graph;void DestroyGraph(Graph &G)//清除图中记录 {

int i;

for(i = 0;i < G.vexs;i++)

{

free(G.arcs[i]);

}

free(G.arcs);}

void Print(Graph G)//打印图中信息 {

int i, j;

cout<<“关系信息输出:”<

for(i = 0;i < G.vexs;i++)

{

printf(“t”);

cout<

}

cout<

for(i = 0;i < G.vexs;i++)

{

cout<

for(j = 0;j < G.vexs;j++)

{

switch(G.arcs[i][j])

{

case 0: //边的信息为0.打印关系为陌生

cout<<“t陌生”;

break;

case 1:

//边的信息为1,打印关系为同学

cout<<“t同学”;

break;

case 2:

//边的信息为2,打印关系为朋友

cout<<“t朋友”;

break;

case 3:

//边的信息为3,打印关系为同事

cout<<“t同事”;

break;

default:

//否则,边的信息为100,打印关系为本人

cout<<“t本人”;

break;

}

}

cout<

} }

总代码:

#include #include #include #include

#define vexnum 4

//图的最大顶点个数 #define M 10

//储存人名数组的大小

using namespace std;

typedef struct {

int **arcs;//边的信息

char vex[vexnum][M];//顶点信息

int vexs;//边的大小 } Graph;

void DestroyGraph(Graph &G)//清除图中记录 {

int i;

for(i = 0;i < G.vexs;i++)

{

free(G.arcs[i]);

}

free(G.arcs);}

void Print(Graph G)//打印图中信息 {

int i, j;

cout<<“关系信息输出:”<

for(i = 0;i < G.vexs;i++)

{

printf(“t”);

cout<

}

cout<

for(i = 0;i < G.vexs;i++)

{

cout<

for(j = 0;j < G.vexs;j++)

{

switch(G.arcs[i][j])

{

case 0: //边的信息为0.打印关系为陌生

cout<<“t陌生”;

break;

case 1:

//边的信息为1,打印关系为同学

cout<<“t同学”;

break;

case 2:

//边的信息为2,打印关系为朋友

cout<<“t朋友”;

break;

case 3:

//边的信息为3,打印关系为同事

cout<<“t同事”;

break;

default:

//否则,边的信息为100,打印关系为本人

cout<<“t本人”;

break;

}

}

cout<

} }

void FindRelationship(Graph G){

cout<<“请输入要查找的两个人的姓名:”<

char name1[10];

char name2[10];//

cin>>name1;//

cin>>name2;

scanf(“%s %s”, name1, name2);//输入两个要查找关系的人

int i, j, k, t;

i = j = k = t = 0;

for(i = 0;i < G.vexs;i++)

{

if(!strcmp(name1, G.vex[i]))//在表中找到名字为name1的人

{

k = i;//记录下他的位置

break;

}

}

for(j = 0;j < G.vexs;j++)

{

if(!strcmp(name2, G.vex[j]))

//在表中找到名字为name2的人

{

t = j;//记录下他的位置

break;

}

}

if(i == G.vexs && j!= G.vexs)

//说明name1在图中,而name2不在图中

{

printf(“%s不在关系网中n”, name1);

}

else if(i!= G.vexs && j == G.vexs)//说明name2在图中,而name1不在图中

{

printf(“%s不在关系网中n”, name2);

}

else if(i == G.vexs && j == G.vexs)

//说明name1和name2都不在图中

{

printf(“%s和%s都不在关系网中n”, name1, name2);

}

else

{

switch(G.arcs[k][t])

{

case 0:

//边的信息为0.打印关系为不认识

cout<<“他们彼此不认识”<

break;

case 1:

//边的信息为1,打印关系为同学

cout<<“他们的关系是同学”<

break;

case 2:

//边的信息为2,打印关系为朋友

cout<<“他们的关系是朋友”<

break;

case 3:

//边的信息为3,打印关系为同事

cout<<“他们的关系是同事”<

break;

default:

//否则,边的信息为100,打印关系为本人

cout<<“本人”<

break;

}

} }

void GetRecord(Graph &G)//录入信息到图中 {

int i, j;

G.vexs = vexnum;

//输入顶点的信息

printf(“本系统容量为%d人n请输入要存入关系网中的人名:n”, vexnum);

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

{

scanf(“%s”, G.vex[i]);//输入要录入图中的人的名字

}

//给边分配存储空间

G.arcs =(int **)malloc(vexnum*sizeof(int *));

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

{

G.arcs[i] =(int *)malloc(vexnum*sizeof(int));

}

//输入边的信息

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

{

for(j = i;j

{

if(j!= i)

{

printf(“请输入%s和%s的关系:n提示:0:陌生;1:同学;2:朋友;3:同事n”, G.vex[i], G.vex[j]);

scanf(“%d”, &G.arcs[i][j]);//各个关系用代号0,1,2,3,表示

G.arcs[j][i] = G.arcs[i][j];//此图为无向图,具有对称性

}

else

{

G.arcs[i][j] = 100;

//本人与本人的关系是本人,边的信息用一个较大值代替

}

}

} }

int main(){

Graph G;//定义一个图

int n;

cout<<“0:退出

1:信息输入

2:信息输出

3:查询”<

cout<<“请输入编号:”<

while(1)

{

cin>>n;

switch(n)

{

case 0:

//输入为零则退出本系统

cout<<“谢谢使用”<

exit(0);

case 1:

//输入为1,调用信息录入函数,执行信息录入功能

GetRecord(G);

cout<<“请输入编号:”<

break;

case 2:

//输入为2,调用输出函数,执行信息输出功能

Print(G);

cout<<“请输入编号:”<

break;

case 3:

//输入为3,调用查找函数,执行查找两个人的关系

FindRelationship(G);

cout<<“请输入编号:”<

break;

default:

//若输入的不是上述编号,提示输入错误

cout<<“输入错误”<

cout<<“请输入编号:”<

break;

}

}

DestroyGraph(G);

//删除图中记录

return 0;}

第二篇:公交查询系统设计与实现论文

公交查询系统设计与实现论文

1引言

随着城市经济的发展、规模的扩大以及人口的增长,城市交通问题日益突出。降低出行时间将使所有的公交利用者产生效益,快速的交通、更好的信息及更好的市场可以提高公交的形象,能够增加公交乘坐者。城市公共交通运输以其覆盖面广、经济、快捷的特点,成为绝大多数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。本地市民特别是外来旅游、出差、就医等急需了解本地道路情况的人可以利用本系统方便快捷的查询出所有符合他们要求的公交路线,对他们的出行和生活提供帮助。我国城市公交乘客信息系统的发展处于一个落后的水平,广大乘客可以获得信息的方式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发布和管理。出于这个目的,在老师的指导下,我设计了这个城市公交线路查询系统。在对公交乘客出行心理特征进行分析的基础上,考虑乘客选择公交线路决策的因素,进行程序关键部分的框架设计。

现阶段,人们的出入方式主要还是来源于城市公交,特别是对于那些到外地出差、打工,进行商业有关或其他事情需要在外地进行短暂停留的人而言,公交对他们是必不可少的,但是对于那个不属于自己所熟悉的城市,坐公交也是一个很大的难题,因此,开发一个公交查询系统就显得非常的重要。本系统的核心是对选择好的车次进行路线的查询,或者输入所要查询的车站名,点击“查询”按钮,查询所有含有该站的车次及相应的停靠站。此处既可以“精确查询”也可以是“模糊查询”,“模糊查询”主要方便那些对站名不是很清楚,但知道其中的一部分的乘客,系统可以帮助他们快速的查出。

1.1论文的研究内容

公交查询系统是一个取代过去由人工查询的查询系统。本论文论述了一个基于浏览器/服务器(B/Srowser/Server)模式的公交查询系统的研究和实现的过程.论文从开发平台和工具谈起,对ASP.NET服务器所提供的组件及其属性和方法做了一般介绍,更重要的是阐述了ASP.NET的数据库访问组件ADO.NET的使用方法。最后,详细介绍了如何创建“公交查询系统”的全部过程。系统的开发工具与环境

2.1ASP.NET简介

ASP.NET是一种建立在通用语言上的程序构架,能被用于一台

Web务器来建立强大的应用程序。ASP.NET提供许多比现在的开发模式强大的的优势。AS.PNET建立在.NET Framework的编程类之上,它提供了一个web应用程序模型,并且包含使生成web应用程序变得简单的控件集和结构。ASP.NET包含封装公共用户界面元素(如文本框和下拉菜单)的控件集。但这些控件在务器上运行,并以HTML的形式将它们的用户界面推送到浏览器。在服务器上,这些控件公开一个面向对象的编程模型,为web开发人员提供了面向对象的编程的丰富性。ASP.NET还提供结构服务(如会话状态管理和进程回收),进一步减少了开发人员必须编写的代码量并提高了应用程序的可靠性。另外,ASP.NET 使用这些同样的概念使开发人员能够以服务的形式交付软件。使用ML webservices功能ASP.NET开发人员可以编写自己的业务逻辑并使ASP.NETT结构通过SOAP交付该服务。Visual Studio.NET是一套完整的开发工具,用于生成应用程序、XML Web services、桌面应用程序和移动应用程序。Visual Basic.NET、Visual C++.NET、Visual C#.NET和VisualJ#.NET全都使用相同的集成开发环境(IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了.NET Framework的功能,此框架提供对简化应用程序和XML Web services 开发的关键技术的访问。

2.1.1ASP.NET技术的优点

ASP.NET是一种将各种Web元素组合在一起的服务器技术,是一个统一的Web开发平台,它提供了生成一个完整的Web应用程序所必须要的各种服务。与以前的开发模型相比较,它提供了以下数个重要的优点:

(1)增强的性能。ASP.NET是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,.NET可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码之前便显著提高了性能。(2)世界级的工具支持。ASP.NET框架补充了Visual Studio集成开发环境中的大量工具箱和设计器。WYSIWYG编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种

(3)威力和灵活性。由于ASP.NET基于公共语言运行库,因此应用程序开发人员可以利用整个平台的威力和灵活性。.NET框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NETT也与语言无关,所以可以选择最适合应用程序的语言(如C#),或是跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到ASP.NET时保留基于COM的开发中的现有投资。(4)简易性。ASP.NET使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署的站点配置。

(5)可管理性。ASP.NET采用基于文本的分层配置系统,简化了将设置应用于服务器环境和Web应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了ASP.NET框架应用程序的部署。只需将必要的文件复制到服务器,即可将ASP.NET框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。

(6)可缩放性和可用性。ASP.NET在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。2.1.2.NET Framework概述 NET Framework是用于生成、部署和运行XML Web services 和应用程序的多语言环境。它由以下几个主要部分组成:

公共语言运行库

运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名 称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的COM相比。特别是反射等功能显著减少了开发人员为将业务逻辑转 变为可重用组件而必须编写的代码量。

统一编程类

该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集(API)。目前,C++开发人员使用Microsoft基础类,而Java开发人员使用Windows 基础类。框架统一了这些完全不同的模型并且为Visual Basic和JScript程序员同样提供了对类库的访问。通过创建跨所有编程语言的公共 API 集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从JScript到C++的所有编程语言具有对框架的相似访问,开发人员可以自由选 择它们要使用的语言。2.2 ADO.NET概述

ADO.NET并不是ADO的升级版本,它是全新的面向对象模型。比ADO更适应于分布式及Internet等大型应用程序环境,为了多人同时存取更具扩展性,ADO.NET的数据存取采用的是离线存取模式,可说是专门为.NET台设计的数据存取结构。它具有简单地访问关系数据、可扩展性、支持多层应用程序、统一XML和关系数据访问的特点。ADO.NET的主要目标是提供对关系数据的简单访问功能。坦白的说,易于使用的类描述关系数据库中的表、列和行。另外,ADO.NET引入了DataSet类,它代表来自封装在一个单元中的关联表中的一组数据,维持他们之间完整的关系。这是在ADO.NET中的新概念,可以显著的扩展数据访问接口的功能。ADO.NET可以扩展——它为插件.NET 数据提供者(也称为可管理提供者)提供了框架,这些提供者被构建,以便从任何数据源读取和写入数据。ADO.NET提供了两种内置的.NET数据提供者,一种用于OLE DB数据源,另一种用于Microsoft SQL Server。可以通过OLE DB访问数据格式(比如Microsoft Access)、第三方数据库和非关系数据另外,Microsoft最近预演了用于ADO.NET的ODBC.NET数据提供者,它允许.NET 访问更多的旧的数据格式和第三方数据库。ADO.NET用于多层应用程序。这是当今商业和电子商务应用程序最常见的体系结构。在多层体系结构中,应用逻辑的不同部5分1运a行s在p多x个服务器或进程中,每一部分就称为一层。ADO.NET使用开放的Internet标准XML格式在层之间通信,允许数通过Internet防火来传递,并允许以非Microsoft技术来实现一层或多层。那么在Visual Studio.NET中ADO.NET访问数据库分为二种。一种是SQL Server 数据库,另一种是其任何类型的数据库。本系统的后台数据库为SQL Server2005,因此是通过SQLConnection、SqlCommandSqlDataAdapter、DataSet等几个主要的数据访问对象来访问数据的.需求分析

3.1系统需求分析

随着我国经济的高速发展,人们生活水平的提高,越来越多的人开始热衷于到外地旅游。那么对于这些外来旅游者,首先搞清这个城市的公交路线显的很重要!我的家乡沈阳,作为一个旅游城市,每年都要吸引大量的游客,为了满足这些游客熟悉公交路线的需求,特以公交查询系统为设计课题。本软件不仅能给游客带来方便,也能给广大市民提供方便。我认为这样的系统应该具有很好的实用性!开发本系统的目标就是立足广大乘客的实际,着眼于公交业的未来发展,规范公交管理,提高服务质量,方便乘客查询,并为此设计该系统。人们生活水平的提高,越来越多人喜欢旅游,但是第一次来一个陌生的城市,肯定对公交路线不熟悉,所以必定需要一个能查看具体公交线路的公交系统。有些只知道一个站的某几个字或一个车次的某几个数字,所以本系统将给出站点的模糊查询,方便用户的查询,有些只知道车次

或某个站点,本系统也给出了公交线路查询、公交站点查询、公交换乘查询,进一步方便大家的出行,但也有用户什么都查不到,想留言问问人,所以再搞个留言板很有必要,方便大家交流以及解答各种疑难问题!本系统采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,即将整个系统合的划分成各个功能模块,正确地处理模块之间和模块内部的联系以及和数据库的联系,定义各模块的内部结构,通过对模块的设计和模块之间关系的系统来实现整个系统的功能前台主要有3个模块,线路查询、站点查询、公交换乘模块和后台管理模块

功能名称:线路查询

功能概述:可以获得要查询公交所通过的各个站点。

功能名称:站点查询

功能概述:通过输入的指定站点查询经过该站点的公交。

功能名称:公交换乘查询

功能概述:分为公交直达、公交一次换乘,主要体现那些不可直达需要转车的路线的所有换法。(如果用户输入的起始点和终点,有一条及一条以上的公交线可以直达的,则为公交直达;如果输入的起始点和终点,没有一条公交线可以直接到的,系统将会给出一次换乘的方案,则为公交一次换乘)功能名称:后台管理

功能概述:用于管理员登陆,添加、修改、删除公交线路,修改信息资料、安全密码,回复留言板等功能。

本系统提供了的车次查询功能、路5线1查A询S功P能X。乘客可以方便的进行查询,以防乘错车次。当然有些功能的智能化不是很强,系统有待进一步来完善。

3.2 数据库需求分析

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

数据库技术是由传统的文件系统发展而来的,从层次模型、网状模型发展到关系模型。数据库技术是数据管理的最新技术,是计算机科学的一个重要分支,它能指导我们正确地设计数据库系统,它的出现极大地促进了计算机应用的发展。采用数据库技术的原理和方法可以有效地设计实用的数据库系统。一个完整的数据库系统包括数据库管理系统(DBMS),数据库管理员(DBA)、数据库(DB)、应用程序和相应的硬件设施。

目前许多数据库管理系统都基于关系模型,关系模型的主要特点是用表格结构表达实体,用键表示实体与实体之间的联系。与层次模型和网状模型相比,关系模型比较简单,容易为初学者接受。关系模型是由若干个关系模式组成的集合,关系模式相当于记录类型,它的实例称为关系。每个关系是一张表格。表格简单,用户易懂,用户只需用简单的查询语句就可以对数据库进行数据操作,并不涉及到存储结构,访问技术等细节。关系模型是数学化的模型,要用到集合论,离散数学等知识。SQL语言是关系数据库的代表性语言,已经得到广泛应用。

在设计数据库时,应注意数据的安全性,保证数据的安全,防止非法用户访问数据库,以免泄露重要信息,同时也能51防A止s非法用户的蓄意破坏,有许多保护数据的方法,如采用用户标识,口令密码或访问控制等方法。一个成功的数据库应用系统应具有用户标识,每一个合法用户具有一个用户名和相应的口令,进入数据库应用系统前必须输入正确的口令,否则无法进入系统,这就保证了只有合法的用户才能操作数据库系统。为了保证数据的合法语义,必须对数据库的数据进行完整性约束,即防止用户输入不合语义的数据。

在设计应用软件时,应严格按照软件工程学的方法进行设计,传统的方法采用瀑布模型,从问题定义、可行性分析、需求分析、概念设计、总体设计、系统实现、编码和软件测试、运行和维护等软件生命周期内,每一阶段均在前一阶段的基础上进行设计,并在每一阶段有相应的文档资料。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的

需求。数据库设计一般包括如下几个步骤:数据库需要分析,数据库概念结构设计,数据库逻辑结构设计。

4系统概要设计

4.1概述

本阶段设计的基本目标是解决系统如何实现问题,也叫做概要设计,本阶段主要任务是划分

出系统的物理元素及设计软件的结构,完成软件定义时期的任务之后就应该对系统进行总体设

计,即根据系统分析产生的分析结果来确定这个系统由哪些系统和模块组成,这些系统和模块又如何有机的结合在一起,每个模块的功能如何实现。系统设计的目标是使系统实现拥有所要求的功能,同时,力争达到高效率、高可靠性、可修改性,并且容易掌握和使用。模块化的依据是:

把复杂问题分解成许多容易解决的小问题。原来的问题也就变得容易解决。模块化设计是把大型软件按照一定的原则划分成一个较小的相对功能独立又相关联的模块。每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。完成指定的功能,满足问题的要求。采用模块化原理的优点在于可以使软件结构清晰,容易测试和调试。从而提高软件的可靠性,可修改性。有助于软件开发的组织管理。一个大型软件可分别编写不同的模块。4.2功能模块划分 查询系统模块

该模块实现公交查询功能。可实现按线路查询、站点查询和起点—终点查询三种查询方式。录入系统模块该模块实现数据的新增、修改、删除功能。

4.3.1 数据库概念结构设计

在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”,如“实体联系模型”;另一种是直接面向数据库逻辑结构的“结构数据模型”。在本系统中我采用“实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER模型直接从现实世界抽象出实体类型及实体间联系然后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。但它只是数据库设计的第一步。E-R图是直观表示概念模型的工具,它有三个基本成分:

(1)矩形框,表示实体类型(考虑问题的对象)。(2)菱形框,表示联系类型(实体间的联系)。(3)椭圆形框,表示实体的属性。实体和属性的定义如下:

管理员表(登陆ID,登录姓名,登录密码)站名表(站名编号,站名)

车辆线路编号表(车次,车线类型)

线路表(线路编号,车次,站名,次序)

车辆表(车辆编号,车次,车辆类型,服务类型,票价,IC 卡类型,运行区间)

冬季发车时间表(车次,编号,首班时间,末班时间)

夏季发车时间表(车次,编号,首班时间,末班时间)

4.3.2数据库逻辑结构设计

本系统创建的SQL数据库名称为城市公交查询系统。并将数据文件和日志文件保存在公交查询系统APP_DATA文件夹中。①管理员表(LoginTable)

管理员表存放登陆系统所需要的用户名和密码,登录后台时需要访问此表。

②站名表

站名表存放站名等数据,修改站名需要访问此表。

③车辆线路编号表

车辆线路编号表存放线路编号等数据,修改车辆线路编号将要访问此表。

④线路表

线路表存放公交车线路的数据,修改车辆线路需要访问此表。

5详细设计与实现

5.1.连接数据库的包含文件

在动态网站中,调用数据库中的数据是十分频繁的,为了避免编写重复的代码。编写一个数据库连接文件是非常重要的。DB.cs

文件中包含了本系统中的数据库的连接代码。本系统的数库 的连接代码如下:

public static SqlConnection createConnection(){

SqlConnection

con=new SqlConnection(“server=.;database=城市公交查询系统;uid=sa;pwd=;”);return con;}

5.1.1新增车次线路

此模块为管理员操作,如当地出现新的公交线路,或原有公交车线路有新的站点加入,管理员可以登录此表,及时添加线路和站点的信息,以保证车次线路的及时更新,方便用户查询。添加车次的界面如图所示。

在输入相关车次信息后便进入站名添加过程如图

5.1.2新增车次线路

此模块为管理员操作,如当地出现新的公交线路,或原有公交车线路有所变动是,管理员可以登录此模块,及时添加相关的线路图,以保证车次线路图的及时更新,方便用户查询。添加的界面如图

5.1.3删除车次以及无效站点

此模块同样为管理员操作,如当地哪个公交线路已经被废除,或原有公交车线路有哪个站点被删除,管理员可以登录此表,及时删除线路和站点的信息,以保证车次线路的及时更新,方便用户查询。删除的界面如图

5.1.4删除线路图

该模块在管理员系统中实现,如当地哪个公交线路已经改变,管理员可以登录此模块,及时删除线路图信息,以保证车次线路图的及时更新,方便用户查询。删除的界面如图

6测试与维护

6.1 创建和测试应用程序

为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。现将具体操作及过程

举例说明如下:

创建和测试应用程序应是交替进行的,既要注意开发的效率也要注意它的稳定性。每编写一个模块,就要对这个模块进行测试,看它能否根据特定的要求工作。及早发现问题,及早解决,否则到最后再来测试的话,难度会大大增加。6.2测试项目

在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS 开发总工作量的40%以上。因此,我们必须重视测试工作。由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。

有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。

总结

在公交数字化的时代,公交系统的设计者应当以乘客需求为首位,调整服务策略,满足社会的需要和乘客的需要,充分发挥公交系统交通中心的作用。本系统基本达到了预定的设计目标,但是在系统的实际化应用中仍需要改进和提高公交查询系统的服务职能。系统的不足与改进方案:

在数据库设计方面,还有待改进,数据库设计也可采用别的形式,比如:可以用一个字段作为站点字段,另一个字段作为经过该站点的车次字段,只要找到经过某个站点最多的车次,就可以设计该字段的类型以及长度。其次,系统的实际应用化欠缺,可以通过使用根据起点站、终点站来确定那条路线,给出多种乘车方案的方法改进。线路的更新应该可以通过调整数据库次序的方法来更新。同时,界面的设计不够美观版面的设计以及查询结果的显示不够人化,视觉效果不佳。应当参照一些比较美观的网站设计进行色彩的调整,同时亦可以加入更多的FLASH效果使得页面更具动态性。

致谢

时光飞逝,一转眼我的大学生活就要结束了。这两年我学到了很多很多的知识,是我人生的一个转折。我之所以能取得这些成绩,除了有自己的努力外,在我的学习,生活中还得到了很多人的关心和帮助。在此我要对他们表示衷心的感谢。

首先,我要感谢我的毕业指导老师。在连续数月的毕业设计中,她不遗余力地指导和帮助我。在她孜孜不倦的教诲下,我顺利地完成了毕业设计。老师对工作认真负责的态度,对学生无私的关怀,使我受益良多。我衷心地感谢她。在这里我还要感谢所有指导过我的老师们,没有你们的培养我无法完成两年的大学学业还有,我能有今天,是与我父母的辛勤培养分不开的,他们为我付出了一切。我将在以后的学习、工作中再接再厉,尽我最大的努力做到最好来报答父母的养育之恩。

参考文献

[1]曹祖圣.吴明哲.Visual C#.NET 程序设计经典.北京:科学版社,2004.P.50-53.[2]宣小平.ASP.NET数据库系统开发实例导航.上海:人民邮电出版社,2003.P.121-130.[3]金银秋.数据库原理与设计.北京:科学出版社,2003.P.201-230.[4]张海藩.软件工程.北京:人民邮电出版社2002.P.75-80.[5]朱晔.ASP.NET 第一步——基于C#和ASP.NET2.0.北京:清华大学出版社,.2007-7-1.P.301-310.[6]谭振林.道不远人——深入解析ASP.NET 2.0 控件开发.北京:子工业出版社。2007-9-1.P.125-140.[7]哈特 ASP.NET 2.0经典教程——C#篇孟宪瑞,易磊.北京:人民邮电出版社.2007-2-1.P.20-40.[8]朱印宏,熊利荣.Dreamweaver 8完美网页设计——ASP动态网页设计篇.北京 中国电力出版社.2006-10-1.P.63-72.[9]郝刚ASP.NET 2.0开发指南.北京:人民邮电出版社.2006-5-1.P.53-55.

第三篇:展馆漫游系统设计与实现论文

摘 要:本系统以电子技术系展馆为真实蓝本,通过建模软件Autodek 3ds max实现整体三维场景模型搭建及三维交互软件Unity3d实现漫游交互模块的开发设计,该虚拟漫游系统的功能完全符合实际参观教学需求,能够为虚拟场景摄像机添加脚本文件实现了全场景第一视角漫游交互功能。

关键词:

关键词:展馆漫游;模块构建;警史馆

虚拟漫游,是虚拟现实技术的一个重要分支,它能够使表达内容直观形象,用户可以通过与系统的人机交互,身临其近地感受到操作场景互动逼真。笔者以武警工程大学电子技术系展馆为蓝本,将虚拟建筑场景建模和虚拟漫游技术结合应用在虚拟展馆中。基础模块构建

参照真实警史馆蓝本只有一个房间,主要使用基础几何体进行建模。

2.1 虚拟警史馆侧墙构建

在该警史馆三维模型中,侧墙模型虽是一个不规则的几何体,但可以在基础几何体建模的基础上进行一定变换操作来进行创建。通过多边形几何体的“连接”和“挤出”两种功能的交互使用,生成侧墙侧面的物品架模型,从而完成虚拟警史馆侧墙模型的搭建,见图1。

图1 侧墙模型

2.2 虚拟警史馆展柜构建

警史馆展柜是一个不规则的组合几何体,分为玻璃罩、柜门、侧板和底面四个部分,其基本构建方法是先通过基础几何体建模方法创建展柜的板材模型,并把每个板材转换为可编辑多边形,之后再对每块板材进行修改变换,最后将所有板材模型组合在一起形成展柜模型,见图2。

图2 展柜模型

2.3 添加材质和灯光渲染

3ds max自带强大的材质和灯光渲染系统,可为用户提供丰富的材质和灯光效果。在展馆基础模型搭建完成后,要通过软件的材质编辑器功能为场景中的模型附加材质和灯光,见图3。

图3 通过材质编辑器添加地板材质交互模块实现

展馆建模完成后,需要在Unity3d软件中实现虚拟警史馆的漫游交互功能。

3.1 添加脚本文件实现漫游功能

为场景摄像机添加脚本文件,可实现场景摄像机具有随着键盘控制键左右旋转和前后移动的功能,从而使场景在运行时具有第一视角观察的效果,并可以通过键盘的控制使人的虚拟视角在场景中移动和旋转,通过这些操作可以使用户更方便的了解场景中的内容,见图4。

图4 实现场景摄像机交互功能

3.2 添加刚体和碰撞检测组件实现防穿功能

为防止漫游时摄像机穿过场景对象产生失去视角的现象,使用户造成不便,所以要通过添加一定的组件消除这一问题。

通过为该选择对象添加了刚体组件,修改场景中的虚拟物体的属性使其具备物理实体的质量、重力、弹性等等特性,增大对象的移动阻力,防止场景对象在发生碰撞后因为弹性碰撞发生位移。同时,选择离散碰撞检测选项,该属性可控制避免高速运动的对象穿过其他的对象而未发生碰撞。最后,冻结x和y轴位置,使对象在选中的轴向上的移动和旋转无效。这样,就不会在碰撞后发生弹性位移现象,从而实现防止穿过的功能。结 语

本系统以电子技术系展馆为真实蓝本,通过建模软件Autodek 3ds max实现整体三维场景模型搭建,以及三维交互软件Unity3d实现漫游交互模块的开发设计,该虚拟漫游系统的功能完全符合实际参观教学需求,能够为虚拟场景摄像机添加脚本文件实现了全场景第一视角漫游交互功能。

参考文献

[1]高尚宇.基于GIS的“数字校园”信息系统的设计与实现[D].山东科技大学,2005.基金项目:电子技术系教员赵一泽基金,国家自然科学基金青年项目(61402530)。

第四篇:算法设计与实现个人课程总结

算法课程总结

指导教师 所在院(系)班 级 学生姓名 学 号

一、算法概述

1.什么是算法?

算法是解一确定类问题的任意一种特殊的方法。在计算机科学中,算法是使用计算机解一类问题的精确、有效方法的代名词。算法是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。

2.算法的五个重要特性:确定性、能行性、输入、输出、有穷性/有限性。

1)确定性:算法每种运算必须有确切定义,不能有二义性。

2)能行性:算法中有待实现的运算都是基本的运算,原理上每种运算都能由人用纸和笔在有限的时间内完成。

3)输入:每个算法有0个或多个输入。这些输入是在算法开始之前给出的量,取自于特定的对象集合——定义域

4)输出:一个算法产生一个或多个输出,这些输出是同输入有某种特定关系的量。

5)有穷性/有限性:一个算法总是在执行了有穷步的运算之后终止。

3.计算过程:只满足确定性、能行性、输入、输出四个特性但不一定能终止的一组规则。

4.准确理解算法和计算过程的区别:不能终止的计算过程:操作系统;算法是“可以终止的计算过程”;算法的时效性:只能把在相当有穷步内终止的算法投入到计算机上运行。

5.算法的语言主要有:自然语言,流程图,盒图,PAD图,伪代码,计算机程序设计语言。6.算法分类:

1)多项式时间算法:可用多项式(函数)对其计算时间限界的算法。常见的多项式限界函数有:Ο(1)< Ο(logn)< Ο(n)< Ο(nlogn)< Ο(n2)< Ο(n3)2)指数时间算法:计算时间用指数函数限界的算法。常见的指数时间限界函数:Ο(2n)< Ο(n!)< Ο(nn)7.算法基本工具:循环与递归,算法与数据结构,优化算法的数学模型。

8.主要算法:迭代算法,蛮力法,分治法,动态规划法,贪婪算法,图搜索基础。

二、算法的核心是思想

我们学习这门课不是仅仅掌握那几个经典算法例子,更重要的是为了学习蕴含在其中的思想方法。为什么呢?举个例子。有同学曾问我这样一个问题:1000只瓶子装满水,但有一瓶有毒,且毒发期为1个星期。现在用10只老鼠在一个星期内判断那只瓶子有毒,每只老鼠可以喝多个瓶子的水,每个瓶子可以只喝一点。问如何解决?其实一开始我也一头雾水,但是他提醒我跟计算机领域相关,我就立马有了思路,运用二进制。因为计算机的最基本思想就是二进制。所以说,我们不仅要学习算法,更得学习思想方法。

①算法最基本的设计方法包括分治法,动态规划法,贪婪算法,周游法,回溯法,分支定界法。我们可利用分治法做快速排序,降低找n个元素中最大元和最小元的量级,降低n位二进制x和y相乘的量级,做Strassen矩阵乘法等等。它的思想就是规模很大的问题分解为规模较小的独立的子问题,关键是子问题要与原问题同类,可以采取平衡法来提高性能。

动态规划法是把大问题分解为子问题,但是子问题是重复的,后面的问题可以利用前面解决过的问题的结果。如构造最优二叉查找树,解决矩阵连乘时最小计算次数问题,寻找最长公共子序列等等。

贪婪算法就是局部最优法,先使局部最优,再依次构造出更大的局部直至整体。如Kruscal最小生成树算法,求哈夫曼编码问题。

周游法就是简单理解就是采取一定的策略遍历图中所有的点,典型的应用就是图中的深度优先搜索(DFS)和广度优先搜索(BFS)。

回溯法就是就是在满足一定的条件后就往前走,当走到某步时,发现不满足条件就退回一步重新选择新的路线。典型的应用就是8皇后问题,平面点集的凸包问题和0-1背包问题。

分支定界法:它是解决整数规划问题一种最常用的方法。典型应用就是解决整数规划问题。

②评价算法性能的方法如平摊分析中的聚集法,会计法和势能法。聚集法就是把指令分为几类,计算每一类的消耗,再全部叠加起来。会计法就是计算某个指令时提前将另一个指令的消耗也算进去,以后计算另一个指令时就不必再算了。势能法计算每一步的势的变化以及执行这步指令的消耗,再将每一步消耗全部累计。

这几种方法都是平摊分析法,平摊分析的实质就是总体考虑指令的消耗时间,尽管某些指令的消耗时间很大也可以忽略不计。上述三种方法难易程度差不多,每种方法都有属于它的难点。如聚集法中如何将指令有效分类,会计法中用什么指令提前计算什么指令的消耗,势能法中如何选取势能。因此掌握这些方法原理还不够,还要学会去应用,在具体的问题中去判断分析。

三、重点学习

1.贪婪算法

贪婪+其他算法:由于贪婪往往能大幅化简状态,利用问题的某些“单调性”,加上贪婪的思想,往往能是问题大幅简化,从而结合其他算法解决问题经典例题:田忌赛马,利用贪婪来确定状态。2.分治法

分而治之的思想在信息学竞赛中是非常重要的,下面主要介绍一下分治的经典应用

1)二分查找

思想很简单,功能很强大,边界要注意,负数要特判(NOI2010 PIANO)在非负数范围内的二分一般写法

如果是l := mid1 或 +1则 mid :=(l + r + 1)div 2 2)快速幂

a^b =(a^(b div 2))^2 + ord(odd(b))*a取模也适用 3)快速排序,归并排序

任何一本算法书上都会讲的,这里就略过了,值得一提的是快排记得加上随机化

k := a[random(rg(x)*ans = 0 重构权,将f(i)-g(i)*ans作为新权值,用相应算法求出一个“最小值”,判断是否>=0,接着二分即可

5)树的分治

一般用来解决树上的路径或统计类问题,每次只考虑跟树根有关的信息,然后递归分治处理

树的分治通常有基于点或基于边的分治,基于点的难合,基于边的复杂度太高,这里只介绍基于点的分治

步骤:处理跟当前树根有关的信息,重新计算子树大小,在子树中选择重心为根,递归到相应子树处理。

因为每次选了重心,所以递归总共logn层,每层O(n)的复杂度,总复杂度就是O(nlogn)6)二分搜索

直接搜的复杂度是指数级的的话,一般是40左右的数据量,hash一半,搜一半,搜后面的时候利用之前的hash信息合并出原问题的解。

而直接搜的复杂度达到阶乘级的话n一般就不超过20了,做法一般差不多 经典例题:POI02szy,NOI2001方程的解数。3.搜索

作为信息学竞赛中的所谓“万能算法”,搜索可以说是计算机学科所具有的最大特点了,自然地,搜索算法的应用自然也是非常之广泛,除了专门的搜索题,搜索一般可以用来部分预处理,打表找规律,当然还有骗分。

搜索的一般步骤:确定状态——选择搜索方式(dfs、bfs)——确定产生式规则——开始搜索。搜索的常见优化方式:

1)改变状态表示

这个需要根据题目而定,确定一个漂亮的状态表示,可能就有希望转向记忆化了,即使不行,搞出一个漂亮的状态表示是解决一道麻烦题的最重要的一步,再者,调试起来也会容易许多。

2)优化搜索顺序

这个优化在多数搜索中能起到摧枯拉朽的提速效果,通常我们选择枝叶较少的儿子先扩展,例如大名鼎鼎的dancing Links,除了利用双向十字链表去除冗余状态,每次选择可扩展数最少的儿子扩展同样给它的神速创造了条件。

3)可行性剪枝以及最优性剪枝

这是非常常用的剪枝思路之一,因题目而异,在迭代加深搜索中尤为重要 一般思路:考虑每次解最多变优多少,从当前的层数来看还有多少改进空间,如果已经不可能成为解或更新答案则可以剪枝了

——A*及IDA*算法:本质就是给搜索加上一个满足相容性的估价函数,然后用估价函数剪枝,理论上很牛B,实际上不常用,因为考场上很难想出满足那么多条件的估价函数,但记得一些常见模型的估价函数还是有价值的。例如15数码的估价函数就可以选择除了0之外每个元素到自己该到的位置的曼哈顿距离之和,因为每次最多使一个数距离减少1,所以这个估价函数是相容的,再例如求k短路的A*算法就是用个堆维护 min{ f(s)+ g(s)}估价函数就是从汇点反搜的“反向最短路”的长度。

四、总结

在计算机软件专业中,算法分析与设计是一门非常重要的课程,很多人为它如痴如醉。很多问题的解决,程序的编写都要依赖它,在软件还是面向过程的阶段,就有程序=算法+数据结构这个公式。算法的学习对于培养一个人的逻辑思维能力是有极大帮助的,它可以培养我们养成思考分析问题,解决问题的能力。作为IT行业学生,学习算法无疑会增强自己的竞争力,修炼自己的“内功”。

经过这门课的学习,我深刻的领悟到数学是一切算法分析与设计的基础。这门课的很多时间多花在了数学公式定理的引入和证明上。虽然很枯燥,但是有必不可少。我们可以清晰的看到好多算法思路是从这些公式定理中得出来的,尤其是算法性能的分析更是与数学息息相关。其中有几个定理令我印象深刻。

①主定理

本门课中它主要应用在分治法性能分析上。例如:T(n)=a*T(n/b)+f(n),它可以看作一个大问题分解为a个子问题,其中子问题的规模为b。而f(n)可看作这些子问题的组合时的消耗。这些可以利用主定理的相关结论进行分析处理。当f(n)量级高于时,我们可以设法降低子问题组合时的消耗来提高性能。反之我们可以降低的消耗,即可以扩大问题的规模或者减小子问题的个数。因此主定理可以帮助我们清晰的分析出算法的性能以及如何进行有效的改进。

②随机算法中的许多定理的运用

在这门课中,我学到了以前从未遇见过的随机算法,它给予我很大的启示。随机算法不随机,它可通过多次的尝试来降低它的错误率以至于可以忽略不计。这些都不是空穴来风,它是建立在严格的定理的证明上。如素数判定定理是个很明显的例子。它运用了包括费马小定理在内的各种定理。将这些定理进行有效的组合利用,才得出行之有效的素数判定的定理。尤其是对寻找证据数算法的改进的依据,也是建立在3个定理上。还有检查字符串是否匹配也是运用了许多定理:指纹的运用,理论出错率的计算,算法性能的评价也都是建立在数学定理的运用上。

第五篇:浅析数字律师事务所应用系统设计与实现论文

近年来,我国公民法律意识不断提高,律师和律师事务所数量和业务不断扩大。但律师职业能力和律师事务所管理水平与国际相比还存在很大差距,尤其是信息化管理水平相对较低。提升我国律师事务所管理水平,缩小与国外律师所的差距,争取早日与国际接轨,是摆在我们面前的一个紧迫的难题。国际对律所信息化建设比较一致的观点认为一个律所信息化会经历起步、增长、发展和成熟四个阶段,起步阶段的特征是用软件处理数据,增长阶段则有个软件系统,发展阶段的特征是有集成化的技术和系统,而成熟阶段则是将用户、内部律师、客户端集成在一起。目的及意义

随着公民的法律意识越来越高,传统的律师事务所业务流程与发展模式不能满足客户和行业的需求。全国各地法院都建立了电子法院系统,从立案到审查,再到结案的各个环节都已经进入到了数字化的时代。各类卷宗归档的数字化也必将在不久的将来成为行业的主流形式。截止到2016 年3 月,全国执业律师数量达到29.7 万人,律师事务所达到2.4 万多家,与4 年前相比增幅分别达38%和20%。数字律师事务所应用系统是一个具有广泛需求的潜在市场,应用先进的软件管理系统,能促进律所管理规范化,提高管理能力和服务水平。

数字律师事务所应用系统的实现使得律师事务所内部管理实现了有序化、规范化、并通过资源共享,有效地进行资源的优化与调配,极大地提高了办公效率,并通过网络化管理的窗口,大力推展业务。通过信息有效的整合,提高服务质量、竞争力、促进我国法治建设。行业特点

与一般企业相比,律师事务所的日常工作具有如下特点:

1)办公场所和办公时间相对灵活。

2)工作人员之间的工作彼此独立而又不可分割。

3)涉及到大量的文书处理。

4)需要同客户进行交互。系统开发方案

针对行业特点和对系统功能的调研和需求分析,本系统设计以案件管理为核心,以律师管理为基础,把案件、律师、客户及日常行政管理等信息进行紧密关联,来协助律师进行移动式网络化办公,对律师日常工作中的客户、案件卷宗、日程安排、法律法规、法律文书等文件和信息进行智能化的处理,协助律师和律师事务所对纷繁复杂的信息进行有效的管理,从而极大地提高工作效率和管理水平。

目前国内律师事务所管理系统主要分为以下类型:一是基于简单的局域网共享的,基于简单的局域网共享架构简单,入手快。但律师事务所的工作效率并没有得到显著提高。第二种是单机版架构,单机的律师事务所管理系统可以实现一些律师事务所的管理功能,但在协同工作、资源共享上显得力不从心。三是基于C/S 架构,此类系统是由服务器与客户端构成,律师们利用客户端就可以实现远程办公,资料的共享调阅,工作流程的管理,财务,权限管理等。但此类系统必须安装客户端,给松散的律师业务带来不便。

近几年,随着IT 技术的迅猛发展,互联网也在发生着巨大变化,它的终端已从传统的个人电脑逐渐演变为移动智能终端,人们已经进入了移动互联网时代。人们希望能够随时随地的获取信息和处理信息,不受地域、时间的限制。因此,互联网技术和移动通信紧密融合已成为目前不可阻挡的发展趋势。随之出现的搭载于移动智能终端的Android 操作系统和IOS 操作系统极大地促进了移动互联网的不断进步,特别是Android 系统,凭借其开放性吸引着众多专业人士开发基于它的各种应用程序。本系统的开发方案把C/S 架构与移动互联网紧密结合起来,实现律师业务应用系统的数字化。移动终端设备通过3G/4G 网络访问服务器,PC 端通过Internet 访问服务器,并实现数据资源的共享。系统功能模块

系统具有十大功能模块,按照人员可划分为三大模块。

1)客户管理。针对企业和个人客户建立详细的档案,满足不同客户的需求。

2)业务管理。对业务案件进行登记,跟踪办理进度,随时了解案件进展。

3)法务文档管理。法律法规库、司法文书库、辩护词库。

4)行政管理。主要有通知公告、考勤管理、值班日志、工作汇报等。

5)人事管理。提供了完备的人事档案管理功能。

6)文件管理。收发文件进行归档管理。

7)客服管理。对客户咨询、投诉、主动服务进行登记。

8)个人管理。管理个人信息。如个人日程安排、备忘事项提醒、通讯录等。

9)用户管理。系统用户管理,根据不同级别进行权限限制。

10)系统管理。保证系统运行稳定,安全可靠。如系统登陆日志管理、数据备份还原、数据字典设置等。系统实现技术

5.1 ASP.NET

ASP.NET 是一个统一的Web 开发模型,它提供了为建立和部署企业级Web 应用所必要的服务。随着.NET Framework 版本的更新,ASP.NET 也经历了多个版本。它所具有的主要特点有:

1)ASP.NET 是同Microsoft.NET Framework 集成在一起的,运行在CLR 运行库环境之内。

2)ASP.NET 是编译执行的,它支持多种编程语言,同时,也是面向对象的。

3)ASP.NET 是跨浏览器和跨设备的,并易于配置。

5.2 数据库

本系统采用SQL Server2000 作为后台数据库。SQL Server2000能够满足大型Web 站点和企业数据处理系统的数据存车分析需求,并且还可以与.NET 技术实现无缝结合。系统数据库访问采用的是流行的ADO.NET 技术。

5.3 Android

Android 是由谷歌公司于2007 年推出的基于Linux 内核的操作系统。Android 操作系统以其开源性受到各大移动设备生产厂商的青睐,随着版本不断迭代,其功能变得更加强大。Android平台具有开放性、应用程序平等性、易开发性和并行性的特点。本系统移动客户端开发就是建立在Android平台之上。展望与不足

本系统中的所有操作都完全针对律师的日常工作流程进行设计,具有功能齐全的特点。以律师案件办理为核心,以规范化律师事务所日常办公为宗旨,系统功能涵盖了律师事务所日常业务。具有操作简单,流程清晰的特点。同时,系统设计中充分考虑了安全性能,通过网络数据存储和备份功能,从而最大程度的保障了数据的安全性。

系统存在的主要不足,一是移动终端平台目前还只局限于Android平台,但iOS 也是一个巨大的市场,所以系统在应用领域存在巨大缺憾,后继将开发扩展。同时,只局限于律师事务所的日常管理,而目前法院正在积极推进电子法院建设,如网上立案,证据交换,在线开庭等。系统应对接口进行有效设计,以便今后的全方位对接。

结语

系统开发设计,实现了大部分的主要功能,今后还将在移动客户端的信息推送方面进行深入探索,这对于提高律师和律师事务所的知名度,提升用户体验等方面具有现实意义。

下载个人关系网的设计与实现系统 -课程论文5则范文word格式文档
下载个人关系网的设计与实现系统 -课程论文5则范文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    办公自动化系统的设计与实现答辩论文

    办公自动化系统的设计与实现答辩论文 随着信息化社会的来临,传统的纸质化办公已经显得效率低下,将信息技术引入办公势在必行,办公自动化(OA)的时代已经来临。由于国家对3G建设......

    论文管理系统的设计与实现(含5篇)

    论文管理系统的设计与实现 1绪论 1.1引言 1.1引言 随着时代的进步,网络已经成为人们生活中不可缺少的一部分。人们对网络经历了由陌生到熟悉的过程,网络为人们的生活、学习、......

    图书管理系统的设计与实现论文

    1、 图书管理系统的设计与实现论文: 概念:作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多信息数据的管理。优点:减轻工作,使工作科学化、规范化,提高工作质量。缺点:传......

    顶岗实习管理系统设计与实现论文

    高职院校人才培养的关键是学生专业技能的培养,是以为社会和企业输送专业技能过硬的合格毕业生为目的。《国家中长期教育改革和发展规划纲要(2010-2020年)》明确指出,要推进教育......

    制糖生产管理系统设计与实现论文(精选五篇)

    摘要:制糖企业的生产管理是有一定的具体流程的,生产管理是糖厂制糖管理中的一个重要环节,所以对于制糖生产管理有一定的规划与设计可以提高制糖的效率。如今,我国的网络信息技......

    人事管理系统设计与实现

    人事管理系统设计与实现 目 录 前 言.... 1 1 需求分析.... 2 1.1 系统需求... 2 1.1 功能需求... 2 1.3 可靠性要求... 3 1.4 性能需求... 3 2 开发环境简介.... 4 2.1 Del......

    论文:个人网站的设计与实现

    个人网站的设计与实现 前 言 随着国际互联网的普及,很多人已经不满足仅仅在Internet上的浏览信息,而是希望更深入的参与其中,拥有自己的Web网站,这似乎已经成为一种潮流。如果......

    空气质量检测系统的设计与实现论文[5篇模版]

    大气环境是人类生存环境的重要组成部分,也是人类生存、发展的基本物质基础。当前,随着我国经济的快速发展,工业企业的不断扩张,环境污染严重。由于工业集中,加上人口密集等原因使......