当前位置:文档之家› 算法课程设计

算法课程设计

算法课程设计
算法课程设计

算法设计与分析课程设计

题目:校园导航问题

文档: daohang.cpp

学院专业

学号

学生姓名

班级

二〇一三年十二月

一、问题描述

此次课程设计是根据学校的平面图(共10个场所,每两个场所间有不同的路,且路长不同),找出从任意场所到达另一场所的最佳路径(最短路径)。

此校园导航系统的设计内容主要包括:

1. 创建全景图

2. 各个景点的简介

3. 查看某一景点到其它所有景点的最短路径

4. 查询任意两个景点之间的最短路径

二、概要设计(流程图)

三、源程序

#include

#include

#include

# define MAXNUM 20

# define INF 6789

typedef struct sceneinfo{

int adj; //该弧所指向的顶点的位置

int *info; //该弧相关信息

}sceneinfo;

typedef struct adjlist{

int num; // 景点编号

char *sight; // 景点名称

char *description; // 景点描述

}adjlist;

typedef struct algraph

{

adjlist ver[MAXNUM]; //图顶点

sceneinfo arcs[MAXNUM][MAXNUM]; //图弧度

int vexnum,arcnum; //图的当前顶点数和弧数

} algraph;

algraph m; //把图定义为全局变量

int visited[MAXNUM]; //全局数组,用来记录各顶点被访问的情况int r[MAXNUM]; //全局数组。用来存放路径上的各个顶点

int p=11; //记录当前景点的个数

int w=16; //记录当前景点边数的个数

int a=0; //全局变量,用来记录每对顶点之间的所有路径的条数

/*用户操作界面,选择将要进行的操作*/

int menu(void)

{ int i;

printf("\n---------------------------------------------\n"); printf("1.图中任意景点的相关信息查询\n");

printf("2.任意两个景点间的最短路径查询\n");

printf("3.任意两个景点间的所有路径查询\n");

printf("4.退出该系统\n ");

printf("---------------------------------------------\n"); printf("请输入你要进行的操作:");

scanf("%d",&i);

return(i);

}

/*创建图的函数*/

void picture(void)

{ int i,j;

m.vexnum=11;

m.arcnum=16;

for(i=0;i

m.ver[i].num=i;

//将各个景点与顶点对应

m.ver[0].sight="东门";

m.ver[1].sight="逸夫楼";

m.ver[2].sight="钱伟长楼";

m.ver[3].sight="一教";

m.ver[4].sight="体育馆";

m.ver[5].sight="小蠡湖";

m.ver[6].sight="文浩馆";

m.ver[7].sight="图书馆";

m.ver[8].sight="北区大学生活动中心";

m.ver[9].sight="南区大学生活动中心";

m.ver[10].sight="一食堂";

m.ver[1].description="物联网学院A区&计算机中心";

m.ver[2].description="理学院";

m.ver[3].description="第一教学楼";

m.ver[4].description="篮球场和羽毛球场";

m.ver[5].description="公园和人工湖";

m.ver[6].description="大型活动举办场所";

m.ver[7].description="公益图书馆";

m.ver[8].description="电影院&北区学生活动场所";

m.ver[9].description="南区学生活动场所";

m.ver[10].description="北区一食堂";

for(i=0;i

m.arcs[i][j].adj=INF;

//设定各个顶点之间的距离

m.arcs[1][2].adj=m.arcs[2][1].adj=100;

m.arcs[1][3].adj=m.arcs[3][1].adj=100;

m.arcs[2][6].adj=m.arcs[6][2].adj=210;

m.arcs[3][5].adj=m.arcs[5][3].adj=300;

m.arcs[1][4].adj=m.arcs[4][1].adj=220;

m.arcs[4][5].adj=m.arcs[5][4].adj=600;

m.arcs[4][9].adj=m.arcs[9][4].adj=150;

m.arcs[4][6].adj=m.arcs[6][4].adj=650;

m.arcs[5][7].adj=m.arcs[7][5].adj=30;

m.arcs[6][8].adj=m.arcs[8][6].adj=60;

m.arcs[10][9].adj=m.arcs[9][10].adj=190;

m.arcs[7][10].adj=m.arcs[10][7].adj=350;

m.arcs[7][9].adj=m.arcs[9][7].adj=280;

m.arcs[8][9].adj=m.arcs[9][8].adj=110;

}

/*创建图的函数*/

void sceneplace(void)

{ int i;

for(i=1;i

{ if(m.ver[i].sight==NULL)

{ printf("%d. ",i);

printf("该景点已被删除\t");

}

else

printf("%d.%s\n",i, m.ver[i].sight);

}

printf("\n\n");

}

/*查询各个景点的信息*/

void checkscene(algraph g)

{ int i,j;

char ch;

while(1)

{ sceneplace(); //调用sceneplace函数以输出各个景点的名称

printf("请输入你要查询的景点的编号:");

scanf("%d",&i);

if(i>p || i<0)

printf("输入错误!!\n");

else

{for(j=0;j<=p;j++)

{ if(i==j)

{ printf("你要查询的景点的相关信息如下:\n");

printf("%d\t\t%s\n",g.ver[i].num,g.ver[i].sight);

printf("%s\n",g.ver[i].description);

}

}

}

printf("是否继续查询?(若停止查询请按n/N,继续查询请按其他任意键继续):"); //停止查询,返回主菜单

scanf("%s",&ch);

printf("\n");

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

break;

}

}

void ppath(algraph g,int path1[],int i,int v0)

{int k;

k=path1[i];

if(k==v0) //找到最短路径,则返回

return;

ppath(g,path1,k,v0); //否则,递归调用之

printf("%s->",g.ver[k].sight); //依次输出路径中的景点名称

}

/*输出由path1计算从v0到i的最短路径*/

void dispath(algraph g,int dist[],int path1[],int s[],int n,int v0,int i)

{

if(s[i]==1&& i!=v0) //当v0不等于i,且i∈s

{ printf("从%s到%s的最短游览路径是:\n",g.ver[v0].sight,g.ver[i].sight);

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

ppath(g,path1,i,v0); //调用ppath函数,输出路径中的顶点

printf("%s \n",g.ver[i].sight);

printf("路径长度:%d米\n",dist[i]);

}

}

/*求从顶点v0到顶点po的最短路径*/

void Dijkstra(algraph g)

{ char ch;

int path1[MAXNUM]; //path1[i]中存放顶点i的当前最短路径上该点的前趋顶点; int dist[MAXNUM]; //dist[i]中存放顶点i的当前最短路径长度

int s[MAXNUM]; //s为已找到最短路径的终点集合,若s[i]=1,则i∈s;

int mindis,i,j,u,n=p;

int v0,po;

while(1)

{

sceneplace();

printf("请输入出发景点的序号:");

scanf("%d",&v0);

printf("请输入目的景点的序号:");

scanf("%d",&po); //在网中找到其编号与输入的目地景点的编号相同的顶点

for(i=0;i

{ dist[i]=g.arcs[v0][i].adj; //距离初始化

s[i]=0; //s[]置空

if(g.arcs[v0][i].adj!=INF) //路径初始化

path1[i]=v0;

else

path1[i]=-1;

}

s[v0]=1;path1[v0]=0; //源点编号v0放入s中

for(i=0;i

{ mindis=INF;

u=-1;

for(j=0;j

if(s[j]==0 && dist[j] < INF)

{ u=j;

mindis=dist[j];

}

s[u]=1; //顶点u加入s中

for(j=0;j

if(s[j]==0)

if(g.arcs[u][j].adj < INF&& dist[u]+g.arcs[u][j].adj

{ dist[j]=dist[u]+g.arcs[u][j].adj;

path1[j]=u;

}

}

dispath(g,dist,path1,s,n,v0,po); //输出最短路径

printf("是否继续查询?(若停止查询请按n/N,继续查询请按其他任意键继续):");

scanf("%s",&ch);

printf("\n");

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

break;

}

}

/*输出任意两个景点的所有路径*/

void path(algraph g,int i,int j,int k)

{

int s,ko;

if(r[k]==j) //找到一条路径

{

a++; //路径的条数值加1

printf("第%d条:",a);

for(s=0;s<=k-1;s++) //输出一条路径

{ printf("%s",g.ver[r[s]].sight);

printf("-->");

}

printf("%s\n",g.ver[r[s]].sight);

}

s=0;

while(s

{if(s!=i) //保证找到的是简单路径

{ ko=r[k];

if(g.arcs[ko][s].adj != INF && visited[s]==0) //当vk与vs之间有边存在且vs未被访问过

{ visited[s]=1; //置访问标志位为1,即已访问的

r[k+1]=s; //将顶点s加入到p数组中

path(g,i,j,k+1); //递归调用之

visited[s]=0; //重置访问标志位为0,即未访问的,以便该顶点能被重新使用

}

}

s++;

}

}

/*查询图中任意两个景点间的所有路径*/

void alldistance(algraph g)

{ int i,j,k,l;

char sh;

while(1)

{ sceneplace(); //输出景点的名称

printf("\n请选择出发景点的序号:");

scanf("%d",&i);

printf("请选择目地景点的序号:");

scanf("%d",&j);

for(k=0;k

if(i==g.ver[k].num) i=k; //在网中找到其编号与输入的出发景点的编号相同的顶点for( l=0;l

if(j==g.ver[l].num) j=l; //在网中找到其编号与输入的目地景点的编号相同的顶点printf("从%s到%s的所有游览路径有:\n",g.ver[i].sight,g.ver[j].sight);/*输出出发景点和目地景点的名称*/

r[0]=i;

for(k=0;k<1;k++)

{ visited[i]=0; //初始化各顶点的访问标志位,即都为未访问过的

a=0; //初始化路径的条数

path(g,i,j,0); //通过调用path函数,找到从vi到vj的所有路径并输出}

printf("是否继续查询?(若停止查询请按n/N,继续查询请按其他任意键继续):");

scanf("%s",&sh);

printf("\n");

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

break;

}

}

int main()

{

picture();

printf("\n---------欢迎进入江南大学校园导航系统-------------\n");

sceneplace();

for(;;)

{

switch(menu()) //操作选择

{ case 1:checkscene(m);break; //查询各个景点的信息

case 2:Dijkstra(m);break; //查询图中任意两个景点间的最短路径

case 3:alldistance(m);break; //查询图中任意两个景点间的所有路径 case 4:printf("感谢你使用江南大学校园导航系统!再见!\n");

exit(0);

default:printf("输入错误!!请重新输入你要进行的操作!!\n");

}

}

return 0;

}

四、运行主要结果界面贴图

1)主菜单 2)景点信息查询

3)最短路径查询 4)所有路径查询

5)退出界面

五、总结

此次课程设计加深了我对最短路径算法的理解,强化了我对于程序模块化的认识。

在调试的过程中,我知道了格式和注释的重要性;要注意修改前后的不同点在哪里,改后调试结果要在原有的基础上更加精确。最初调试时出现了许多小的错误,它们提醒了我在以后编程的时候要注意细节,即使是一个括号的遗漏或者一个字符的误写都可能浪费大量的时间去寻找并修改。

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

一、课程设计题目 二叉平衡排序树 摘要问题描述:从一棵空树开始创建,在创建过程中,保证树的有序性,同时还要针对树的平衡性做些调整。最终要把创建好的二叉排序树转换为二叉平衡排序树。 基本要求: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.二叉排序树的插入 在二叉排序树插入新结点,要保证插入后的二叉树仍符合二叉排序树的定义 插入过程:若二叉排序树正存在,则返回根结点;

计算机算法设计及分析课程设计报告

成绩评定表

课程设计任务书

算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。 分治法字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在一个2^k*2^k的棋盘上,恰有一个放歌与其他方格不同,且称该棋盘为特殊棋盘。 回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。数字拆分问题是指将一个整数划分为多个整数之和的问题。利用回溯法可以很好地解决数字拆分问题。将数字拆分然后回溯,从未解决问题。 关键词:分治法,回溯法,棋盘覆盖,数字拆分

1分治法解决期盼覆问题1 1.1问题描述1 1.2问题分析1 1.3算法设计1 1.4算法实现2 1.5结果分析4 1.6算法分析5 2回溯法解决数字拆分问题7 2.1问题描述7 2.2问题分析7 2.3算法设计8 2.4算法实现8 2.5结果分析10 参考文献10

1分治法解决期盼覆问题 1.1问题描述 在一个2k×2k(k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中出现的位置有4k中情形,因而有4k中不同的棋盘,图(a)所示是k=2时16种棋盘中的一个。棋盘覆盖问题要求用图(b)所示的4中不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且热河亮哥L型骨牌不得重复覆盖 1.2问题分析 用分治策略,可以设计解决棋盘问题的一个简介算法。 当k>0时,可以将2^k*2^k棋盘分割为4个2^k-1*2^k-1子棋盘。由棋盘覆盖问题得知,特殊方格必位于4个较小的子棋盘中,其余3个子棋盘中无特殊方格。为了将3个无特殊方格的子棋盘转化为特殊棋盘可以将一个L型骨牌覆盖这3个较小棋盘的会合处,所以,这3个子棋盘上被L型覆盖的方格就成为给棋盘上的特殊方格,从而将原问题转化为4个较小规模的棋盘覆盖问题。递归的使用这种分割,直至棋盘简化为1*1棋盘为止。 。 1.3算法设计 将2^k x 2^k的棋盘,先分成相等的四块子棋盘,其中特殊方格位于四个中的一个,构造剩下没特殊方格三个子棋盘,将他们中的也假一个方格设为特殊方格。如果是: 左上的子棋盘(若不存在特殊方格)----则将该子棋盘右下角的那个方格假设为特殊方格 右上的子棋盘(若不存在特殊方格)----则将该子棋盘左下角的那个方格假设为特殊方格 左下的子棋盘(若不存在特殊方格)----则将该子棋盘右上角的那个方格假设为特殊方格

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

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

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 ≈-

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)

计算机算法设计与分析课程设计.

成绩评定表 学生姓名吴旭东班级学号1309010236 专业信息与计算 科学课程设计题目 分治法解决棋盘覆 盖问题;回溯法解 决数字拆分问题 评 语 组长签字: 成绩 日期20 年月日

课程设计任务书 学院理学院专业信息与计算科学 学生姓名吴旭东班级学号1309010236 课程设计题目分治法解决棋盘覆盖问题;回溯法解决数字拆分问题实践教学要求与任务: 要求: 1.巩固和加深对基本算法的理解和运用,提高综合运用课程知识进行算法设计与分析的能力。 2.培养学生自学参考书籍,查阅手册、和文献资料的能力。 3.通过实际课程设计,掌握利用分治法或动态规划算法,回溯法或分支限界法等方法的算法的基本思想,并能运用这些方法设计算法并编写程序解决实际问题。 4.了解与课程有关的知识,能正确解释和分析实验结果。 任务: 按照算法设计方法和原理,设计算法,编写程序并分析结果,完成如下内容: 1.运用分治算法求解排序问题。 2. 运用回溯算法求解N后问题。 工作计划与进度安排: 第12周:查阅资料。掌握算法设计思想,进行算法设计。 第13周:算法实现,调试程序并进行结果分析。 撰写课程设计报告,验收与答辩。 指导教师: 201 年月日专业负责人: 201 年月日 学院教学副院长: 201 年月日

算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。算法 (Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。 分治法字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在一个2^k*2^k的棋盘上, 恰有一个放歌与其他方格不同,且称该棋盘为特殊棋盘。 回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。数字拆分问题是指将一个整数划分为多个整数之和的问题。利用回溯法可以很好地解决数字拆分问题。将数字拆分然后回溯,从未解决问题。 关键词:分治法,回溯法,棋盘覆盖,数字拆分

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)用户可以配置服务器的真挺端口

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

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

网络课程设计实验报告--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)// 验证用户名

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

计算机学院计算机科学与技术专业《程序设计综合课程设计》报告(2007/2008学年第一学期) 学生姓名: 学生班级:信管 学生学号: 指导教师: 2009年12月6日

目录 第一章课程设计的目的和要求 (3) 第二章 (4) 第三章模版设计说明 (5) 3.1 系统总框架 (5) 第四章软件使用说明及运行结果 (7) 4.1使用说明 (7) 4.2 运行结果 (8) 第五章课程设计心得与体会 (10) 附录2:程序清单 (13)

第一章课程设计的目的和要求 1.1课程设计教学环节的主要目的 C语言课程设计的主要目的是培养学生综合运用C语言程序设计课程所学到的知识,编写C程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。 通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。 C语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及编写设计报告。 1.2课程设计实验报告主要要求 运用所学的知识,熟练掌握结构体函数的定义与运用、指针函数等函数的熟练掌握,将书本知识运用到程序设计中,做到活学活用。

第二章课程设计任务内容 此次程序设计内容是编写电子英汉词典 2.1、问题描述: 英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和维护等工作。 2.2、功能描述: 1、在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。 2、要求整个设计以人为本,用户界面友好。 2.3、算法提示: 1、数据结构:结构体数组 2、简单的程序设计 3、友好的窗口菜单的设计

算法课程设计

吉林财经大学课程设计报告 课程名称:算法课程设计 设计题目:插棒游戏 所在院系:管理科学与信息工程学院计算机科学与技术 指导教师: 职称:副教授 提交时间: 2017年4月

目录 一、题目描述与设计要求 (1) 1 题目描述与设计要求 (1) 二、问题分析 (1) 1 解空间 (1) 2 解空间结构 (2) 3 剪枝 (2) 4 回溯法的基本思想 (2) 5 回溯法的适用条件 (3) 6 回溯法的空间树 (4) 7 回溯法的基本步骤 (4) 三、算法设计 (5) 1 伪代码 (5) 四、复杂性分析 (6) 1 时间复杂度 (6) 2 空间复杂度该 (6) 五、样本测试、分析与总结 (6) 1 样本测试 (6) 2 分析 (7) 2.1、数据类型 (7) 2.2 主要函数思路 (7) 2.3 回溯 (8) 3 总结 (8) 参考文献 (9) 附录 (10)

一、题目描述与设计要求 1 题目描述与设计要求 这个类似谜题的游戏在等边三角形的板上布置了 15 个孔。在初始时候,如下图所示,除了一个孔,所有孔都插上了插棒。一个插棒可以跳过它的直接邻居,移到一个空白的位置上。这一跳会把被跳过的邻居从板上移走。设计并实现一个回溯算法,求解该谜题的下列版本: a.已知空孔的位置,求出消去 13 个插棒的最短步骤,对剩下的插棒的最终位置不限。 b.已知空孔的位置,求出消去 13 个插棒的最短步骤,剩下的插棒最终要落在最初的空孔上。 图1 二、问题分析 1 解空间 由于棋盘的对称性,棋盘在变化的过程中会形成多个同构的状态。 例如初始状态时,空孔只有一个,共有15种基本状态。如图2 所示,任意状态与空孔位置在其它的与该空孔颜色相同的点处的状态是同构的,它们可以通过沿中位线翻转和旋转60o 互相转换。也就是说,空孔所在位置的颜色相同的个状态是同构的。如空孔位置在顶点处的三个状态,他们仅通过旋转60o的操作即可互相转换。

网络编程_基于TCP的简易聊天室_实验报告

网络编程 课程设计说明书 题目名称:基于TCP/IP的网络文字聊天程序设计专业:网络工程

班级: 1201班 学号: 1220140105 姓名:蒋星 指导老师:利平 完成日期: 2014年12月13日

目录 一、实验基本信息概要3 1. 题目要求 3 2. 题目容3 3. 开发环境 3 二、流程图4 三、系统简介5 1.界面5 2. 软件功能 5 3. 系统设计 9 4. 优点与缺点9 四、系统详细设计11 1. ChatServer类11 2. ChatClient 类13 3. SocketException类15 5. 命令协议 15 6. 消息格式 16 五、系统测试16 1. 服务器使用错误16 2. 客户端使用错误17 3. 启动服务器17 4. 启动客户端17 5. 关闭客户端17 6. 启动服务器错误提示18 7. 公开聊天 18 8. 私聊 18 9. 错误的私聊19 10. 更名20 11. 帮助20 12. 非法指令20 13. 非法的指令参数20 14. 连接服务器失败21 六、心得体会21 七、完整代码21 Charserverd.cpp 服务器main函数文件 21 ChatServer.h 服务器类头文件 22 ChatServer.cpp 服务器类 23 ClientInfo.h 客户信息类 33 Charclientd.cpp 客户端main函数 34 ChatClient.h 客户端头文件34 ChatClient.cpp 客户端类 35 InitSock.cpp 初始化WINSOCK类41

SockException.h 异常类41八、[参考文献] 42

计算机本科专业C语言课程设计题目(1)

计算机本科专业C语言课程设计题目 (10个题目) 课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。通常,课程设计中的问题比平时的习题复杂的多,也更接近实际。课程设计着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。 1、职工信息管理系统设计 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能: 系统以菜单方式工作 职工信息录入功能(职工信息用文件保存)--输入 职工信息浏览功能--输出 查询和排序功能:(至少一种查询方式) --算法 按工资查询 按学历查询等 职工信息删除、修改功能(任选项) 2、学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 系统以菜单方式工作 学生信息录入功能(学生信息用文件保存)---输入 学生信息浏览功能---输出 查询、排序功能---算法 按学号查询 按姓名查询 学生信息的删除与修改(可选项) 3、销售管理系统 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容: 1)销售员的代号 2)产品的代号 3)这种产品的当天的销售额 每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。 1)计算上个月每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额) 4)输出统计报表 销售统计报表 产品代号销售之和

电力系统分析课程设计-电力系统短路故障的计算机算法程序设计

电力系统分析课程设计-电力系统短路故障的计算机算法程序设计

————————————————————————————————作者:————————————————————————————————日期:

电力系统分析课程设计 电力系统短路故障的计算机算法程序设计 姓名____刘佳琪___ 学号_2014409436__ 班级__20144094___ 指导教师___鲁明芳____

目录 1 目的与原理 (1) 1.2 关于电力系统短路故障的计算机算法程序设计目的 (1) 1.2 设计原理 (1) 1.2.1计算机计算原理 (1) 1.2.2电力系统短路计算计算机算法 (2) 2 计算机编程环境及编程语言的选择 (2) 2.1 优势特点 (2) 2.1.1编程环境 (3) 2.1.2简单易用 (3) 2.1.3强处理能力 (3) 2.1.4图形处理 (3) 2.1.5模块集和工具箱 (4) 2.1.6程序接口 (4) 2.1.7应用软件开发 (4) 3 对称故障的计算机算法 (5) 3.1 用阻抗矩阵计算三相短路电流 (7) 3.2 用节点导纳矩阵计算三相短路电流 (9) 4 附录程序清单 (14) 4.1 形成节点导纳矩阵 (14) 4.2 形成节点阻抗矩阵 (15) 4.2 对称故障的计算 (17)

1 目的与原理 1.1 关于电力系统短路故障的计算机算法程序设计目的 电力系统正常运行的破坏多半是由于短路故障引起的,发生短路时,系统从一种状态剧变成另一种状态,并伴随复杂的暂态现象。所谓短路故障,是指一切不正常的相与相之间或相与地发生通路的情况。 本文根据电力系统三相对称短路的特点,建立了合理的三相短路的数学模型,在此基础上,形成电力系统短路电流实用计算方法;节点阻抗矩阵的支路追加法。编制了对任意一个电力系统在任意点发生短路故障时三相短路电流及其分布的通用计算程序,该办法适用于各种复杂结构的电力系统。从一个侧面展示了计算机应用于电力系统的广阔前景。 根据所给的电力系统,编制短路电流计算程序,通过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。通过自己设计电力系统计算程序使同学对电力系统分析有进一步理解,同时加强计算机实际应用能力的训练。 电力系统的短路故障是严重的,而又是发生几率最多的故障,一般说来,最严重的短路是三相短路。当发生短路时,其短路电流可达数万安以至十几万安,它们所产生的热效应和电动力效应将使电气设备遭受严重破环。为此,当发生短路时,继电保护装置必须迅速切除故障线路,以避免故障部分继续遭受危害,并使非故障部分从不正常运行情况下解脱出来,这要求电气设备必须有足够的机械强度和热稳定度,开关电气设备必须具备足够的开断能力,即必须经得起可能最大短路的侵扰而不致损坏。因此,电力系统短路电流计算是电力系统运行分析,设计计算的重要环节,许多电业设计单位和个人倾注极大精力从事这一工作的研究。由于电力系统结构复杂,随着生产发展,技术进步系统日趋扩大和复杂化,短路电流计算工作量也随之增大,采用计算机辅助计算势在并行。 1.2 设计原理 1.2.1 计算机计算原理 应用计算机进行电力系统计算,首先要掌握电力系统相应计算的数学模型;其次是运用合理的计算方法;第三则是选择合适的计算机语言编制计算程序。 建立电力系统计算的相关数学模型,就是建立用于描述电力系统相应计算的有关参数间的相互关系的数学方程式。该数学模型的建立往往要突出问题的主要方,即考虑影

网络编程 基于TCP的简易聊天室 实验报告

网络编程课程设计 -基于TCP的简易聊天室 一、实验基本信息概要 1.题目要求 熟悉异步网络编程的基本方法,掌握异步网络编程和网络协议设计的方法。要求采用select 模型、WSAAsyncSelect模型、WSAEventSelect模型、重叠模型或完成端口等模型完成编程任务。 2.上机要求 要求采用select模型、WSAAsyncSelect模型、WSAEventSelect模型、重叠模型或完成端口等模型完成下面的任务。 3.题目内容 内容概要:实现一个聊天室,支持多人聊天。也可以增加私聊等功能。 4.开发环境 操作系统:Windows 7 开发语言:C++ 集成开发环境:Microsoft Visual Studio 2010

二、系统简介 1.界面 本软件使用DOS控制台界面,界面风格较为朴素,没用使用复杂的颜色。但是对聊天时界面进行了一定的控制和修正使得界面较为美观,易读。 服务器: 客户端: 2.软件功能 本软件实现了聊天室基本的功能,包括公开聊天,私聊,获取在线用户,更改昵称,获得帮助等。

1)公开聊天 在光标处直接输入消息后按回车即为发送公开聊天,如下图所示。 2)私聊 使用命令【/m 对方UID 消息】即可发送私聊,私聊只有对方可以看到,如下图所示:客户端1,密聊UID为132的用户。 发送后 客户端2,UID为132的用户收到私聊消息。

3)获取在线用户列表 使用命令【/list】即可获得在线用户列表,用户列表会议系统消息的方式返回,如下图所示。命令 发送后 4)更改昵称 使用命令【/name 你的新昵称】即可立即更改昵称,成功修改后服务器会以系统消息的方式返回成功修改的提示。 命令

计算机平面设计专业课程设置

计算机平面设计专业 一、培养目标 1、总体目标 中职学校学生在校学习一技之长,关键是要在校所学课程与市场的工作相接轨,能够学以致用。学生在校学习两年之后,我们要努力使学生能够找到与专业对口的工作,并能够在短期内为企业创造经济效益。 2、具体目标 学生在校通过两年的训练,具有较强的专业造型能力;美术审美能力得到提高;能够熟练使用美术设计软件,能够独立进行图片修复,能够根据主题独立设计制作出完整的设计作品。培养学生的团队合作意识和吃苦耐劳的品质。 二、从业方向: 可以从事广告、印刷、媒体、网站平面设计;可以在婚纱影楼从事图片处理和设计工作;也可在超市、地产等企业从事美工工作,有能力独立建立设计公司和工作室等。 三、课程设置及说明 (一)美术基础课程 1)美术基础 美术基础课应有别于普通的常规美术基础教育,强调审美意识的培养、强调设计性和形式感 (二)设计基础课程 1)平面设计 2)色彩构成 (三)平面设计工具软件课程 1)图形图像处理(Photoshop) 2)计算机动画设计与制作(Flash) 3)图形设计与制作(Coreldraw) (四)平面设计实践课程 1)电子多媒体文件制作技术 1产品演示多媒体文件 2教学解说课件 3电子杂志、相册等 4FLASH网络广告 2)平面设计毕业作品创作 海报、折页、画册、书籍装帧、礼盒包装等创作及成品制作 学生完成平面设计毕业作品,需要多学科教师的共同指导,是一个由教学走入生产的过程,

使得学生的学习有个综合的质的变化。 四、毕业实习: 实习职位 1)广告公司、印刷厂、喷绘公司、平面传播媒体做平面设计 2)网站等电子媒体做电子文件设计和网页前台设计 3)婚纱影楼做图片处理师和平面设计师 4)超市、企业等单位做美工和企业广告策划等 5)留校在专业工作室实习 在实习期间,老师要经常参与实习,帮助学生解决工作中遇到的问题,同时也让自己接触生产,避免教学脱离实际。

java实现聊天系统(计算机网络课程设计报告)

计算机网络课程设计报告 学生姓名 学号 班级 指导教师 设计时间

目录 第一章系统描述 设计目的 (3) 系统设计任务 (3) 系统设计分析 (3) 系统功能分析 (4) 第二章功能模块结构 模块划分 (5) 模块结构图 (5) 模块功能 (5) 第三章模块算法实现 服务器实现 (6) 客户端实现 (9) 第四章运行结果 (13) 第五章课程设计总结 (17) 第六章附录 参考文献 (19) 源代码 (19)

第一章系统描述 设计目的 1.学习网络编程的知识,掌握网络编程的方法。 2.进一步掌握编程思想与编程技巧,做到模块化程序设计, 3. 强化语言学习,尤其是Java的图形界面与多线程,需反复练习,熟练掌握。 系统设计任务 聊天室软件的设计与开发:基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。 学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。 系统设计分析 一.实现网络聊天室编程,关键在于Socket通信,程序的功能都是在Socket的基础上一层一层增加的。实现Socket通信的基本方法为以下4个步骤。 在客户端与服务器端创建相应的ServerSockot/Socket实例。 打开连接到Socket的输入输出流 利用输入输出流,按照一定的协议(TCP协议)对Socket进行读写操作 关闭输入输出流和Socket 我们要实现的功能都是在第3步对Socket的输入输出流做相应的操作 二.因为是多客户端,所以必须用线程进行控制,不同的处理线程为不同的客户服务,主线程只负责循环等待,处理线程负责网络连接,接受客户输入的信息,再做相应的处理。 系统功能分析

计算机专业课程设置

计算机科学与技术专业 03023001 高等数学Higher Mathematics 【192—11—1、2】 内容提要:作为本专业的重要基础课程,内容以微积分、中值定理、不定积分、定积分及其应用,多元函数微分法及其应用、重积分、曲线积分与曲面积分、无穷级数及微分方程等。修读对象:计算机科学与技术专业本科生 教材:《高等数学》同济大学主编高等教育出版社 参考书目:《高等数学》四川大学主编高等教育出版社 03023002 线性代数Linear Algebra 【36—2—1】 内容提要:线性代数是研究有限线性空间的结构和线性空间的线性变换的数学分支。主要学习N阶行列式,矩阵及其运算等,向量组的线性相关与矩阵的秩,线性方程,相似矩阵及二次型,线性空间与线性变换。 修读对象:计算机科学与技术专业本科生 教材:《线性代数》同济大学主编高等教育出版社 参考书目:《线性代数》四川大学数学系教学研究室编高等教育出版社 03023003 高级语言程序设计High-level Language Program Design 【110—5—1、2】 先修课程:计算机科学技术导论 内容提要:结构化程序设计基本思想及各种基本结构设计方法,高级语言数据类型、数组、函数、预编译,指针、结构体、文件等,简单的算法分析,使学生能够用高级语言进行相应程序设计。 修读对象:计算机科学与技术专业本科生 教材:《C++程序设计》谭浩强主编清华大学出版社 参考书目:《C语言程序设计教程》秦友淑主编 03023004 计算机科学技术导论Introduction to Computer Science and Technology 【42—2—1】 内容提要:本课程通过与信息化社会、计算机科学技术的基础知识、计算机软硬件系统、软件开发技术、数据通信与计算机网络、多媒体技术及其应用、数据库系统及其应用、计算机信息安全技术、计算机的应用领域等方面的概要讲解,系统介绍了计算机科学技术学科体系内容。是计算机科学与技术专业的入门课。 修读对象:计算机科学与技术专业本科生 教材:《计算机科学技术导论》陶树平主编高等教育出版社 参考书目:《计算机科学导论》钟珞主编武汉理工大学出版社 03023005 电路与模拟电子技术Electric Circuit and Simulation Electronic Technology 【54—2.5—2】 内容提要:本课程主要讲述电路的基本概念、基本定律,分析方法;正弦交流电的基本概念、性质及分析方法;电路的暂态与稳态,以及电路时间常数的物理意义。半导体器件工作原理和主要参数;放大电路的工作原理、性能特点和分析方法;运算放大器的工作原理和分析方法;反馈的概念,反馈电路的基本特点;振荡电路的工作原理;整流、滤波稳压电路的工

Java聊天室课程设计报告

UML课程设计 题目网络聊天程序开发设计与实现 学号:201515614376 姓名:卫国辉 指导教师: 完成时间:2017年 12月

目录 1.摘要 (2) 2.绪论 0 2.开发环境 0 3.需求分析 (1) 3.1程序简介 (1) 3.2程序功能 (1) 4.系统设计 (2) 4.1概要设计 (2) 4.2详细设计 (2) 5.测试 (7) 6.结论 (9) 参考文献 (10)

摘要 本次训练主要是考查了对JA V A程序设计的综合运用,设计一个Socket 通信的聊天程序,用户可以通过程序进行聊天通信,但不支持用户自定义表情及图片的发送。 本程序设计也用到了一些相关的标准Java的类,给程序设计带来了许多的方便,但用那些要切记加相应的类的包,还有一些构造方法和个别接口方法。 本程序可以实现用户之间的一些简单的交互,虽然功能较少,但是我想通过这次程序设计来熟悉并且学习更多关于JA V A编程的东西,来便于以后可以使用。 关键词:java聊天

1.绪论 对于一个选择网络编程的人来说,必须要有足够的细心和耐心,因为编程一般来说是很枯燥的乏味的,而且程序会越来越复杂,它所用到的符号、标记很多,所以不能出点小错误的。还有,我们不能只是看程序,要学会把自己学的自己拿去实践,自己去编一些程序,培养自己的动手能力,掌握一些编程技巧,熟练运用自己学到的理论知识,这样在以后才能开发出属于自己的东西。 如今,随着科学技术的发展,计算机已成为了我们生活中必不可少的设备了,而掌握计算机知识和运用,又成了我们每一个人的目标了。现在IT行业的飞速发展,无不应正了以前、现在、将来计算机行业都是科学发展的主导行业。而这些基本上都建立在程序上的,所以程序员对计算机行业来说,可想而知有多么的重要了,他们所付出的每一滴汗水都将推动这个行业的发展。 现在我就用JA V A语言编写一个简单的程序——Java聊天程序。将所学的基本知识用到其中去,这里包括了构造方法,创建图形界面,引用类等等。这不仅能锻炼我的实践能力,同时也进一步复习和巩固了我所学的理论知识。对以前没有学好的还有督促和促进作用。而且,根据需要,还可以了解一些课外的知识。增加自己的知识面。 2.开发环境 在开发此聊天程序时,该项目所使用的软件开发环境如下: 操作系统:Windows 7 开发工具:eclipse3.2及其VE插件

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