您好,欢迎来到九壹网。
搜索
您的当前位置:首页JAVA实训论文

JAVA实训论文

来源:九壹网


JAVA综合实训

姓名:

学号: 专业:

目录

第1章 需求分析…………………………………………………………………………………1 第2章 设计重点………………………………………………………………………………

(1)设计思路……………………………………………………………………………… (2)具体设计……………………………………………………………………………… (3)问题解决……………………………………………………………………………… 第3章 测试…………………………………………………………………………………… 第4章 结束语……………………………………………………………………………… 第5章 参考文献………………………………………………………………………………

Java是计算机应用软件开发的重要的面对对象语言之一,也是网络应用

程序编写的首选工具之一。而我们做的主要是一个简易的多人聊天软件,支持任意两个客户端的私聊,所有客户之间的群聊,只需要启动一个服务器端程序,允许多人上线聊天。服务器端创建数据库,存储一张用户表,表中为合法用户的用户名、密码。客户端使用用户名密码登录,服务器端验证通过准予登陆,否则其拒绝上线。

这次主要学了:一、需求分析。它主要包括服务器端需求分析和客户端

需求分析,这个主要是让学生掌握需求分析有关事宜;二、数据库操作类。是项目所需要的数据库的设计及其操作,主要是让学生将数据库与java语言联合使用;三、公共类。它主要包括文件过滤类DoFileFilter、示例文件类ExampleFileFilter、创建类MyTextPane、字体选择类NwFontChooserS、格式日期类FormatDateTime等,主要是要锻炼学生掌握优化设计的方法;

四、管理员。它主要包括聊天记录MessageNote、接收线程的方法

AdminClientReceiveThread、 管理员客户端IMPanelAdminClient等;五、 服务器端。它主要包括单个用户的信息SingleUserMegData、用户信息链表类 UserInfoList、接收客户端发来的信息类ServerReceiveThread 、数据库操作类JDBCThread、服务器侦探类ServerListenThread 、监听客户端的连接类IMServerFrame等;六、客户端。它主要包括图标列表类IconListItem、图标列表条目渲染类IconListItemRenderer、列表MyList、聊天记录类MessageNote、用户接收线程类ClientReceiveThread、会员客户端的类IMPanelClien、私聊类PersonalChat、 声音类VoiceThread等;七、 过客。它主要包括接受服务器端的消息ClientReceiveThread、过客类IMGuestClient等;八、用户注册和登陆。它主要包括用户登录类UserLogining 、程序启动画面类StartSplash、注册类Register、用户登录类UserLogin、用户端启动类ClubClient等。

像第一章让我们了解了我们实训的最最基本的内容,搭建什么样的界面

以及我们所做的东西的用途,还有它的工作原理。

第二章让我们知道一些常用的数据库操作。构造方法JDBCOperation的

主要功能就是创建JDBCOperation的一个实例;数据库连接方法connection的主要功能就是获得数据库的连接;添加表方法addTable的主要功能就是添加一个表,用于字符串类,它创建一个Statement对象将SQL语句发送到数据库,并赋值给tatement的对象stmt;根据参数SQL,得到不同的结果集;删除表格方法deleteTable的主要功能就是删除一个表格,它创建一个Statement对象将SQL语句发送到数据库,并赋值给tatement的对象stmt;根据参数\"drop table \" + tableName,删除相关表,得到不同的结果集;插入数据方法insertValue的主要功能就是向数据库中插入数据,它创建String的对象sql,值为\"insert into \"+tableName+\"

vvalues(\"+\"\\'\"+username+\"\\'\"+\+\"\\'\"+\创建一个Statement对象将SQL语句发送到数据库,并赋值给tatement的对象stmt;根据参数sql,执行相应操作,得到不同的结果集,并返回\"success\";查找用户的ID方法search_Mem的主要功能就是查找用户的ID,它声明boolean量isRegister,初始值为假,声明String对象sql,初值为SQL查询语句构成的字符串,这里为\"select username,password from member where username = \" + \"\\'\"+ ID +\"\\'\" +\"and

password=\"+\"\\'\"+password+\"\\'\",创建一个Statement对象将SQL语句发送到数据库,并赋值给tatement的对象stmt,利用参数sql,执行该SQL语句,经结果集赋值给ResultSet的对象rst,如果rst还有下一条记录,则isRegister为真,否则为假,然后返回isRegister的值;.查找管理员方法search_Admin的功能就是查找管理员,它声明boolean量isAdmin,并初始化为假,声明String对象sql,初值为SQL查询语句构成的字符串,这里为\"select username,password from admin where username =\"+\"\\'\"+ID +\"\\'\"+\"and password=\"+\"\\'\"+password+\"\\'\",创建一个Statement对象将SQL语句发送到数据库,并赋值给tatement的对象stmt,利用参数sql,执行该SQL语句,经结果集赋值给ResultSet的对象rst,如果rst还有下一条记录,则isAdmin为真,否则为假,返回isAdmin的值;查找成员密码方法search_Admin的功能就是来返回数据据库中注册用户的密码并且编成字符数组来返回,它声明String对象result,初始值为null,声明String对象sql,初值为SQL查询语句构成的字符串,这里为\"select password from \"+tableName+\" where username =\" +\"\\'\"+username+\"\\'\",创建一个Statement对象将SQL语句发送到数据库,并赋值给tatement的对象stmt,利用参数sql,执行该SQL语句,经结果集赋值给ResultSet的对象rst,如果rst还有下一条记录,则result为口令,即result=rst.getString(\"password\"),返回result的值;主方法main的功能就是测试,它创建Connection对象con,连接数据库,账号和密码:

con = JDBCOperation.connection(\"net.sourceforge.jtds.jdbc.Driver\ \"jdbc:jtds:sqlserver://127.0.0.1:1433/gamvantalk\ \"sa\

它调用插入方法,使用JDBCOperation.insertValue(\"member\中国\,并输出;

第三章公共类中的构造方法DoFileFilter的功能就是初始化;接收方法accept的

功能就是接收文件如果(name.indexOf(\".gif\") != -1)为真,返回真,否则就返回假;扩展名方法isExtensionListInDescription的功能就是返回扩展名列表(.JPG,.gif等)是否显示可读的描述,如果只有相关的描述是在构造或用setDescription()提供的,它返回对象useExtensionsInDescription的值。获取扩展名方法getExtension的功能就是返回文件名的扩展名部分,

如果(f != null)为真,则:

{

用getName从 f获取名字,赋值给字符串filename;

用'.'作为lastIndexOf参数从filename获取最后的'.'的索引,赋值给整型量i;

如果(i>0 && i返回filename.substring(i+1).toLowerCase(); } }

返回 null;

添加扩展名方法addExtension的功能就是添加文件类型“dot”扩展名到过滤器,例如:下

面的代码将创建一个过滤器,滤掉除那些以“.JPG”和“.tif”结尾的所有文件:

* ExampleFileFilter filter = new ExampleFileFilter(); * filter.addExtension(\"jpg\"); * filter.addExtension(\"tif\");

请注意扩展名前的“.”不需要,否则将会被忽略。 算法:

如果(filters == null)为真,则 {

创建Hashtable(5)赋值给filters; }

以(extension.toLowerCase(), this)为参数的put向filters输出消息; 将fullDescription 赋值为空; }

设置描述方法setDescription的功能就是设置描述,它将description赋值给this. Description,将fullDescription 赋值为空; 5.设置扩展名方法tensionListInDescription

功能:确定扩展名表(.JPG,.gif等)是否显示可读的描述。只有相关是在构造或使用setDescription()中提供的描述。

入口参数:boolean b 出口参数:无 算法:

使tensionListInDescription的值为b; 将fullDescription 赋值为空; 6.接受文件accept

功能:如果这个文件应该在目录面板中显示,返回true,否则返回false。以“.”开始的文件被忽略。

入口参数:File f 返回值:boolean类型 算法:

如果(f != null)为真,则: {

如果(f.isDirectory())为真,则 {

返回 真 }

将getExtension(f)赋值给字符串extension;

如果(extension != null && filters.get(getExtension(f)) != null)为真,则

{

}

返回 真; }

7.获取文件描述的方法getDescription

功能:返回可读描述,例如JPEG和 GIF图像文件 (*.jpg, *.gif)。 入口参数:无

出口参数:String 算法:

如果(fullDescription == null)为真,则 {

如果(description == null || isExtensionListInDescription())为真,则 {

如果(description==null)为真,则结果\"(\",否则结果为description + \" (\",将结果赋值给fullDescription;

将filters.keys()的结果赋值个Enumeration的对象extensions; 如果(extensions != null)为真,则 {

fullDescription += \".\" + (String) extensions.nextElement();

当(extensions.hasMoreElements())为真时,则

{

fullDescription += \.\" + (String) extensions.nextElement();

}

}

fullDescription += \")\"; }否则,则 {

将description赋值给fullDescription; } }

返回 fullDescription; 8.构造方法ExampleFileFilter 构造方法1:

功能:创建一个文件过滤器。如果没有使用过滤器,则接收所有文件。 入口参数:无 出口参数:无 算法:

创建Hashtable()赋值给this.filters; 或this.filters = new Hashtable();

构造方法2:

功能:创建一个文件过滤器,它接受给定扩展名的文件。例如: new ExampleFileFilter(“JPG格式”);

入口参数:String extension

出口参数:无 算法:

用参数(extension,null),调用父类构造方法;

构造方法3:

功能:创建一个文件过滤器,接受给定的文件类型。例:new ExampleFileFilter(“JPG格式”,“JPEG图像的图像”)。请注意扩展名前的“.”是不需要的。如果提供,它将被忽略。

入口参数:String extension, String description

出口参数:无 调用父类构造方法;

如果(extension!=null)为真,调用addExtension(extension); 如果(description!=null)为真,调用setDescription(description)

构造方法4:

从给定的字符串数组创建一个文件过滤器。例:new ExampleFileFilter(String {\"gif\\"jpg\请注意扩展名前的“.”是不需要的。如果提供,它将被忽略。

入口参数: String[] filters 出口参数:无

用参数(filters, null),调用父类构造方法; 构造方法5:

功能:从给定的字符串数组和说明,创建一个文件过滤器。例:new ExampleFileFilter(String {\"gif\请注意扩展名前的“.”是不需要的。如果提供,它将被忽略。

入口参数:String[] filters, String description 出口参数:无 算法:

空参数调用父类构造方法; 整型量i为0;

如果i小于filters.length为真,则 {

调用addExtension(filters[i]); }

如果(description!=null)为真,则调用setDescription(description);

3.3 创建类MyTextPane

类MyTextPane继承于JTextPane。

声明全局量:public static boolean setColor = false; 1.构造方法MyTextPane 功能:初始化 入口参数:无 出口参数:无 算法: 空

2.添加文本方法append

功能:取文档共享的默认 AttributeContext,将该属性添加到给定的集合中属性,并返回新的有代表性的集合。将滚动条自动拉到JTextArea最底端,将属性应用于字符内容。再用给定字符串所表示的新内容替换当前选定的内容。

入口参数:Color c,String s 出口参数:无 算法:

利用空参数的getDefaultStyleContext从StyleContext赋值给StyleContext的对象sc;

以参数(SimpleAttributeSet.EMPTY, StyleConstants.Foreground,c)的addAttribute为sc添加消息,赋值给AttributeSet的对象aset;

利用空参数getLength从getDocument()获取长度,赋值给整型量len; 利用参数len,设置当前位置setCaretPosition(len);

以参数(aset,false),设置属性,即setCharacterAttributes(aset,false); 调用replaceSelection(s); 3.添加方法append

功能:将滚动条自动拉到JTextArea最底端,将属性应用于字符内容。再用给定字符串所表示的新内容替换当前选定的内容。

入口参数: String s 出口参数:无 算法:

利用getLength()从getDocument()得到长度赋值给整型量len; 调用setCaretPosition(len); 调用replaceSelection(s);

3.4 字体选择类NwFontChooserS

创建JDialog的子类NwFontChooserS,用于字体选择。 声明全局量:

String[] styleList = new String[] {\"Plain\

String[] sizeList = new String[]

{\"3\\"20\ NwList StyleList; NwList FontList ; NwList SizeList ;

static JLabel Sample = new JLabel(); boolean ob = false; 1.构造方法NwFontChooserS

功能:初始字体选择对话框

入口参数:JFrame parent,boolean modal,Font font 出口参数:无 算法:

继承父类的构造方法,实际参数是parent,modal; 调用方法initAll();

设置对话框标题为:Font Choosr;

如果font为null,font设为Sample.getFont();

利用setSelectedItem(font.getName())给FontList设置条目; 利用setSelectedItem(font.getSize()+\"\")给SizeList设置条目;

利用setSelectedItem(styleList[font.getStyle()])给StyleList设置条目; 2.显示对话框showDialog

功能:初始字体选择对话框

入口参数:JFrame parent,String s,Font font 出口参数:static Font 算法:

创建NwFontChooserS类的对象fd,利用构造方法NwFontChooserS(parent,true,font)初始化对象fd;

如果s 不为null,则对话框标题为s的值; 设定fd可见;

创建Font的对象fo,初值为null;

如果fd.ob为真,fo 为Sample.getFont(); 关闭fd; 返回fo;

3.初始化方法initAll

获取容器,并设置布局为空,大小为(50,50,425,400); 添加列表、按钮和Sample标签;

设置Sample标签的大小为(10,320,415,25),前景色为黑色; 侦听窗口,如果窗口关闭事件发生就关闭窗口; 4.添加列表方法addLists

功能:添加字体、风格和大小和窗口侦听。 入口参数:无 出口参数:无 算法:

创建NwList的对象FontList,位置和大小为(10,10,260,295),参数为:

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

创建NwList的对象StyleList,位置和大小为(280,10,80,295),参数为:styleList; 创建NwList的对象SizeList,位置和大小为(370,10,40,295),参数为:sizeList; 添加FontList、StyleList和izeList; 5.添加按钮方法addButtons

功能:添加按钮并侦听 入口参数:无 出口参数:无

创建按钮,即JButton的对象ok,初始化为“Ok”;

利用Insets方法设定ok按钮与标签的空白为(0,0,0,0),位置和大小为(260,350,70,20),利用Font方法设置字体、风格和大小为 (\" \;

创建按钮,即JButton的对象ca,初始化为“Cancel”,位置和大小为(340,350,70,20),利用Font方法设置字体、风格和大小为 (\" \;

利用Insets方法设定ca按钮的空白为(0,0,0,0); 将按钮“ok”添加到当前容器上; 将按钮“ca”添加到当前容器上;

为按钮“ok”添加侦听,并侦听:点击“ok”是不显示该对话框,ob为真; 为按钮“ca”添加侦听,并侦听:点击“ca”是不显示该对话框,ob为假; 6.显示标签方法showSample

功能:为标签Sample设定字体、字型和大小。 入口参数:无 出口参数:无 算法:

从SizeList中选择值,解析成整型数,赋值给g; 从StyleList中选择值,赋值给字符串对象st; 字体整型变量s默认为Font.PLAIN;

如果st是\"Bold\",则s为 Font.BOLD;

如果st是\"Italic\",则s为 Font. Italic;

从FontList获取值,在利用Font为Sample标签设定字体; 设定Sample标签文本为\"21212121 Ok Cancel \"。 7.显示对话框方法showDialog

功能:显示对话框

入口参数:JFrame parent,String s,Font font 出口参数:Font类型 算法:

用参数(parent,true,font)创建NwFontChooserS,赋值给NwFontChooserS的对象fd; 如果(s != null)为真,则 {

用setTitle设置fd的标题为s; }

使Font的对象fo为空; 如果(fd.ob)为真,则 {

用getFont()从Sample获取字体,赋值给fo; 调用fd.dispose(); 返回fo

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务