上两周我们做了java的课程设计实习,这次实习同大一时C语言实习一样充满了激情。以前加入开放性试验《网络视频会议》时老师要求我们用C++完成相关设计。当时我就有一种想法,能不能用java完成这个课题。上两周终于有时间让我全身心的来完成这样一个设计了。这个学期开了一门课----《软件工程导论》,在整个设计实现中我就极力想采用软件工程的思想,按照软件工程学的步骤来完成。事实上我觉得在这一点我做的很失败,估计是个人经验不足吧。本想着用软件工程思想,讲我的设计达到高度代码可重用性。但是事实证明整个程序在这方面做得很差。直到验收时,当我向老师陈述这个问题后,老师说这很正常。软件工程的设计过程是一种按照软件工程的角度来实现的,软件的真正实现是有程序员完成,程序员的目标是尽可能完成软件的功能。。。。。。后来想想,也挺有道理的!
再来看看自己设计的优点吧:
1、完成了用户的身份验证并且与数据库联系,所以的用户信息,组信息都存于系统数据库中
2、另外一个创意就是本程序采用了组播的方式来完成了组中成员的通信,而不是简单的采用服务器端想每个组成员分别发的思想(其实这也是我刚开始的想法,后来在实施过程中遇到了很大困难)
3、本程序采用了FTP的思想:将组管理员与系统管理员的控制通信用TCP来完成,而他们谈话交流用组播完成,服务器维护着两根线程
4、本程序采用B/S的模式,虽然本程序从道理上说是属于C/S模式,但是它的设计还是掺杂了很多B/S的思想。采用了MVC(model view control)模式,同时为了保证数据的安全性采用了服务器与数据库服务器分开的硬件部署。这样就有可能完成将显示、业务逻辑、数据分离开来的设计思想。
然后是在实习中的收获了:
1、在实习中最大的收获要数解决了java程序和数据库的中文乱码以及程序中文件读写、 网络传输中中文乱码的解决
在基于java的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问
号。这是因为java中默认的编码方式是UNICODE,而中国人通常使用的文件和DB都是
基于GB2312或者BIG5等编码,故会出现这样的问题。
。java程序和数据库之间
在该过程中首先应该设置数据库的编码为UTF-8码(当然GBK也可能,没有试
过然后是在添加应用程序到数据库链接的驱动时应该设置编码为GBK
DriverManager.getConnection(
"jdbc:mysql://localhost/" + 数据库名+ "?" +
"user=" + 用户名 +
"&password=" +用户名+
"&useUnicode=true&characterEncoding=gbk");
这样就解决了读入和写入数据中文为乱码的问题。
。在读写文件和网络中传输
写出时要用相信的编码(我用的是UTF-8)将你要写出的数据编码然后在发送
byte[] temp = words.getBytes("UTF-8");
DatagramPacket dp = new DatagramPacket(buff,
1024, InetAddress.getByName(grpIp), port);
socket.setTimeToLive(30);
socket.send(dp);
在客户端读入数据时也要将其按发送端的编码编码回来
String temp1 = new String(recvString.getBytes
("ISO-8859-1"),"UTF-8");
同理在写入文件和读出文件也一样,好在java提供了一对方法writeUTF()
readUTF()使中文的写入和读出能更方便。
2、第二个收获就是关于内部类的使用了
内部类可以方便的访问外部类的公共属性成员,这使得在收都信息后写在面板上
能够在读线程和面板类分开实现的情况下完成,方法是将读线程定义为面板类的
内部类
虽然,课程设计结束了。但是我的网络视频会议系统还没有完成,其中缺少了视频和音频部分,为了完成这些部分接下来的时间里要努力钻研JMF(java media framwork),估计要花半个多月。这个任务放在暑假完成吧!!
最后贴些程序的运行图片吧:
用户注册
系统管理员登陆
组管理员和普通用户登陆
聊天进行中