信息学院本科生课程设计。
题目 课程设计时间:xxxx年xx月xx日--xxxx年xx月xx日。
题目】本次课程设计中,我们实现了一个聊天交友的软件,该软件由两大模块部分组成。各部分模块基本功能如下:
1软件的账号注册。
2服务器的网络的访问。
3聊天交友的功能。
本软件简单评价(实用性、界面、功能等方面的优点与缺点)。
本课程设计达到的效果描述。(知识的掌握、能力的提高、自我收获等)
一实验目的。
通过实现聊天系统的实际编程了解基于j**a的网络编程、多线程和数据库操作原理,提高利用j**a在网络、多线程和jdbc技术的综合运用能力。
二实验原理。
本实验完成的聊天系统是一个c/s体系结构网络程序的实例,其操作原理为:服务器程序会等待客户端联机,当有用户要求加入聊天室且联机成功后,便可开始发送消息,这些消息将会以广播的方式传送给所有其他在聊天室中的成员。
服务器端使用4个线程,其功能如下:
1)等待客户端联机;
2)维护客户端联机;
3)广播消息到客户端;
4)清除不正常中断的联机。
当服务器启动时,即建立并启动等待客户端联机的线程,然后每当有客户联机时,程序便再建立一个可以维护客户端联机的线程,此两线程的体系结构如图一所示。
利用维护客户端联机的线程来读取由客户端传来的消息,然后将此消息加入一个广播队列中,接着由广播消息到客户端的线程来广播队列中的消息给每一个客户端,如下图二所示。
广播线程负责将客户消息广播给所有的客户端,可采用每个几秒钟执行一次该线程,执行时先检查消息队列中是否由要被传送的消息,如果没有则继续等待,否则就取出第一消息,并将第一个消息从消息队列中移除,然后将取出的消息广播给所有用户。
清除不正常的中断联机的线程可每隔10秒钟执行一次,每次执行时逐个检查存储在clients(在服务器端线程用vector来定义)的线程是否还活着(isalive()方法判断),已经死亡的线程将会从clients中清除。
值得注意的是,服务器程序会同时执行多个线程,并且每个线程都有可能在任何一个时间访问clients或消息变量messages,需采用synchronized语句的同步处理。
由客户端的退出按钮传送特殊字符串#bye#来正常的结束联机,然而有时客户端会不正常的方式离开,例如直接关闭机器,因此还需要一个能清楚不正常中断的联机的线程。
客户端主要是提供一些必要的用户界面,这涉及到版面布局管理器、swing组件和事件处理方法的基本操作。另外,客户端也会用到一个线程,主要负责接收由服务器端传来的广播消息。
运行windows的pc机,具有jdk1.4以上j**a编译环境和jcreator3.5或eclipse3.0以上j**a编辑环境。
四实验内容和步骤。
1、系统需求分析,写出功能流程图。
2、项目分析:确定对象并确定对象的属性和操作,为对象建模,画出uml类图。
3、数据库设计:主要包括用户表、朋友信息表。
4、类的设计与实现。
5、实现系统功能,聊天系统基本功能如下:
服务器程序。
1)能等待用户联机,并建立和客户端通信的i/o通道;
2)当有用户要求加入聊天室,先验证其帐号和密码的合法性,验证成功后允许联机并将登陆信息写入日志log表;
3)能将用户发来的信息存入数据库保存,以便查询统计,同时能将消息广播给所有聊天室成员;
4)能清除不正常终端的联机;
5)系统管理:能设置加入聊天系统的人数限制,能查看用户登陆信息和聊天信息。
客户端程序。
1)能注册和登陆帐号;
2)能与服务器程序联机并且建立i/o通道,通道建立完成后,其工作便是接收由客户端传来的消息,然后根据消息来作出适当的处理。
3)列出**的所有用户登陆名或昵称。
给出各个类之间的整体组合结构,如图所示。
各个类的简要描述(在整个软件中的地位及实现功能的简要描述,其继承层次关系及所实现的接口等);详细设计每个类的成员变量、构造方法与方法;并根据详细设计给出每个类的实现**。示例如下:
1.主函数calendarwindow类。
1)简要描述:
该类是整个程序的主框架,是包中jframe的一个子类。并实现了actionlistener、mouselistener和focuslistener接口。
2)类详细设计:
该类的成员变量、构造方法及方法设计如下:
1) 成员变量。
2) 构造方法。
3) 方法。
actionperformed(actionevent)方法是calendarwindow类实现的actionlistener接口中的方法。calendarwindow创建的窗口是nextyear,previousyear,nextmonth,previousmonth,s**edailyrecord,,当用户单击其中按钮时,窗口将执行actionperformed(actionevent)方法进行相应的操作。
3)类详细**:
message类:
package
import
import
* 消息类,客户端与服务端通用类,* 实现序列化接口。
* @author administrator
suppresswarnings("serial")
public class message implements
public string getmestype()
public void setmestype(string mestype)
public string getsender()
public void setsender(string sender)
public string getgetter()
public void setgetter(string getter)
public string getcon()
public void setcon(string con)
public string getsendtime()
public void setsendtime(string sendtime)
messagetype类。
package
* 消息类型的定义类。
* @author administrator
public class messagetype {
public static final string message_succeed = 1"; 登陆成功。
public static final string message_fail = 0登陆失败。
public static final string message_comm = 3聊天窗口消息。
public static final string message_chatroom = 4"; 聊天室消息。
public static final string message_onlinefriend = 5"; **好友。
public static final string message_noonline = 6"; 不**。
课程设计报告书
售票员与乘客。班级 方0905 2 学号 20095765 姓名 刘康 指导教师 焦小炜。石家庄铁道大学四方学院。2012年6月12日。一 编程实现车票订购统计系统 下图是昆明 北京的沿途车站与票价 请用c语言为之开发一个售票程序,要求如下 1.乘客购票时用菜单选择起点站和终到站。如果选择的起点站和...
汇编课程设计报告书
汇编语言与接 术设计说明书。设计题目 字符串转换程序 学院 计算机科学与技术学院 专业 信息安全。班级 信息121班 学号 1208060066 学生姓名 饶永明。指导教师 肖敏。组名 列夫 尼古拉耶维奇 托尔斯泰。同组组员 姚敏敏,蔺华庆 2014 年 12 月 27 日。摘要。本程序是基于汇编语...
网页课程设计报告书
开发背景与目的随着网络技术的发展与互联网的普及,建设与网页制越来越成为各行各业以及个人宣传自己的有利工具,在当今时代被越来越多的人用来宣传,通过 的制作可以让老师 同学以及朋友更好的了解自己以及别人想要知道的事情。我现在做的是关于我的家乡,为别人提供了一个更深入了解自己和了解我们家乡 也是我们大学生...