课程设计报告(2014--2015年度第二学期)科目面向对象课程设计专业网络工程学生姓名董志文班级13级2班学号1308020207指导教师江涛完成日期永磁同步电机双环调速系统的仿真研究2目录1概述............................................31.1课程设计目的....................................31.2预备知识........................................31.3课程设计内容和要求..............................32需求分析...........................................42.1系统目标.......................................42.2主体功能.......................................42.3开发环境.......................................42.4概念设计.......................................43系统总体设计.......................................53.1系统的功能模块划分.............................53.2系统流程图.....................................64系统详细设计.......................................74.1代码实现情况...................................74.1.1server包chessServer类...................74..1.2client包chessClient类..................74.1.3chessface包chatPad类....................84.1.4chessface包chessPad类...................84.1.5chessface包chessthread类.................84.1.6chessface包controlpad类.................84.1.7chessface包inputpad类...................84.1.8chessface包userPad类....................94.1测试分析........................................94.2.1程序运行情况................................94.2.2程序运行异常处理...........................125小结...............................................12参考文献.............................................13附源代码Java语言与面向对象技术课程设计31、概述1.1课程设计目的《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2预备知识熟悉JAVA语言及ECLIPSE开发工具。1.3课程设计内容和要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的永磁同步电机双环调速系统的仿真研究4观察、理解和归纳能力的提高。五子棋是起源于中国古代的传统黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。经过一个学期的学习,使我对Java有了一定的了解。但要深入理解Java语言,单靠上课是不够的。必须通过课程设计,设计一个比较大的程序,才能更深一步地理解Java语言。在这次课程中,我选择了网络五子棋作为课题。编写网络五子棋游戏要利用到Socket网络编程技术和多线程。通过这次课程设计,熟悉Java的GUI图形界面设计,网络Socket编程和多线程编程。2需求分析2.1系统目标本系统主要是完成五子棋游戏的基本操作,在玩游戏的过程中玩家可以放松心情得到娱乐。2.2主体功能本程序实现了一个小的五子棋游戏,可以实现两个人在用一台机器上进行游戏。程序会自动判断谁输谁赢,在游戏的开始,第一个人可以选择执白棋还是黑棋,之后点击开始进行游戏。2.3开发环境硬件要求能运行Eclipse的windowsxp以上系统。JAVA程序设计语言及相应的集成开发环境,SDK和ECLIPSE开发工具。2.4概念设计Java语言与面向对象技术课程设计5网络五子棋是采用网络协议为TCP/IP的网上对弈游戏,运用“客户端-服务器“(c/s)网络架构模式。实现用户通过Internt连接在任何地方与不同玩家进行对战。服务器可以创建任意多局游戏。通过使用多线程和网络套接字SOCKET来实现游戏之间的通讯,它是基于点对点的通讯。开始让服务器初始化建立服务器套接字SOCKET,基于某个端口PORT,服务器始终处于监听状态。客户端是动作的发起者,何时发出申请由客户端决定。客户端向服务器发出申请,服务器给予响应。打开客户端套接字SOCKET,连接到服务器端的地址ADDRESS和端口PORT。连接建立后,创建一个SOCKET实例,并开始一个线程,监听该客户端请求。服务器继续监听其它用户的连接。服务器通过数据输入流从客户端接收信息,并且通过数据输出流把相应的信息发送给客户端。客户端发送请求和响应接收到的各种信息。在服务器和客户端之间传递的消息格式是采用“[消息类别]+内容“组成的,服务器和客户端在传递消息的过程,根据消息的类别来进行相关的操作。3系统总体设计3.1系统的功能模块示意图永磁同步电机双环调速系统的仿真研究63.2系统流程图Java语言与面向对象技术课程设计74系统详细设计4.1代码实现情况4.1.1server包chessServer类classMessageServerPanelextendsPanel//主消息窗口classServerThreadextendsThread//服务器线程,主要用于服务器与客户端的通信publicclasschessServerextendsFrameimplementsActionListener//服务器端框架类4.1.2client包chessClient类publicclasschessClientextendsFrameimplementsActionListener,KeyListener//五子棋客户端框架,实现了动作监听器和键盘监听器永磁同步电机双环调速系统的仿真研究8publicbooleanconnectServer(StringserverIP,intserverPort)throwsException//和服务器建立连接并通信的函数。returntrue连接成功,false如果失败.4.1.3chessface包chatPad类publicclasschatPadextendsPanel//聊天信息Panel。Panel上的文本域可以显示用户聊天信息。4.1.4chessface包chessPad类publicclasschessPadextendsPanelimplementsMouseListener//显示棋盘的Panel。此Panel实现了鼠标监听器classchessPoint_blackextendsCanvas//表示黑子的类classchessPoint_whiteextendsCanvas//表示白子的类4.1.5chessface包chessthread类publicclasschessThreadextendsThread//一个客户端用户线程.处理用户落子的点击事件处理,及消息发送.4.1.6chessface包controlpad类publicclasscontrolPadextendsPanel//控制Panel。此Panel上的按钮如其名,完成相应的功能。4.1.7chessface包inputpad类publicclassinputPadextendsPanel//输入信息Panel。Panel左边的下拉列表中列出了所有用户的名字。右边的文本框可以输入聊天信息,点击回车信息被发送。Java语言与面向对象技术课程设计94.1.8chessface包userPad类publicclassuserPadextendsPanel//用户列表Panel。此Panel维护一个服务器的当前用户列表,所有的用户名都将显示在列表中。4.2测试分析4.2.1程序运行情况//打开服务端//打开客户端永磁同步电机双环调速系统的仿真研究10//落子Java语言与面向对象技术课程设计11//判定永磁同步电机双环调速系统的仿真研究124.2.2程序运行异常处理启动游戏时,应先启动服务端,然后打开客户端,连接服务端,建立游戏,加入游戏,然后落子。在启动客户端时,若是闪退,请先关闭服务端,然后重启。5小结经过为期二周的课程设计,感觉自己所学远远不能解决做课设时的需求。在熟悉课本和上网搜索后,才算马马虎虎的完成了任务。在画棋盘时,调用draw方法对于画图这块的坐标布置,在今后学画其他图画时能够得心应手。获取棋子方法的巧妙,注册鼠标,获取点击位置,除以棋盘间隔,去掉不为整数的一块,再乘以棋盘间隔便获得最临近点的下棋坐标,即所要下棋的位置。用二维数组模拟Java语言与面向对象技术课程设计13棋盘,无棋子的置为0,黑子置为1,白子置为2,以便在判断胜负时利于同色棋子的查找。整个棋盘就模拟出来了,很巧妙,不过有更好的方法用向量存储棋子信息,便于悔棋等操作。实现多用户聊天,老师后面讲的不是很多,做起来有点费力。参考网上资料,明白Socket原理。开始时照着课本上的例子,不能得出想要的效果,而且只运行了一个程序看不到有通信的效果。后面在运行了Server类后,自己尝试着两个Client类,实现了通话,就像腾讯QQ里面一样的效果。里面定义了Vector线程,实现了多线程用法。两个板块大体实现,但是后面的要求五,由于数据库的使用不是太熟悉,不能注册用户,添加好友,查找好友,还有悔棋操作未能实现。此程序最大的缺点还在于,不能实现网络两人下五子棋。由于不能将棋盘信息与聊天信息区分,不能告诉对反自己下了哪一步,所以根据自己的水平也就能做到这了,今后加以完善。参考文献1.孙卫琴Java面向对象教程电子工业出版社2006-032.孙卫琴Java网络编程精解电子工业出版社2006-033.张仕斌Java程序设计与应用清华大学出版社2005-064.张孝祥Java就业培训程序清华大学出版社2003-065.耿祥义Java课程设计清华大学出版社2004-036.王路群Java高级程序设计中国水利水电出版社2006-037.丁振凡Java语言使用教程北京邮电大学出版社2005-068.薛为民Java应用教程清华大学