Java终极大作业报告.docx
《Java终极大作业报告.docx》由会员分享,可在线阅读,更多相关《Java终极大作业报告.docx(47页珍藏版)》请在冰豆网上搜索。
Java终极大作业报告
Java语言程序设计
展示报告
学院
专业
组长信息
组员信息1
组员信息2
组员信息3
指导教师
日期年月日
第一章选题概述
在一学期的Java课程学习之后,我们对Java语言有了一定的认识与了解。
在此基础上我们选择了题目一作为本组的目标,题目的相关要求如下(初期拟完成目标):
设计编程实现桌面文档共享与管理系统(100%)实现以下功能--
1.能够实现文件的下载与上传(客户端与服务器端)
2.能够通过安全认证与别人分享文档
3.能形成“圈子”,对朋友或这陌生人设置不同的安全级别
4.能够共享桌面与聊天
5.必须用数据库存储信息
6.必须用extends和implements关键字
7.必须用this关键字
8.必须用图形用户界面
9.界面设计与功能不限,充分发挥
题目一比较有挑战性,题目中的要求几乎涉及到了我们学过的所有知识,除此之外还需要我们课外学习一些课堂额外的知识,比如数据库的创建于连接。
由组长XXX1负责整合所学内容与指挥,组员查阅资料并编写程序,再和组长讨论并完成各自的模块设计。
我们设计了如下的流程图:
图1-1流程图
第二章完成情况
经过将近一个月左右的编程设计,我们实现的桌面文档共享与管理系统(90%)实现了以下功能--
1.能够实现文件的上传(客户端与服务器端)
2.能够通过安全认证与别人分享文档
3.能形成“圈子”,对朋友或这陌生人设置不同的安全级别
4.能够聊天并截取屏幕信息
5.采用了数据库存储信息
6.采用了extends和implements关键字
7.采用了this关键字
8.采用了图形用户界面
程序的编程设计
图2-1类成果展示图
其中jp.java功能为截图;khd.java功能为建立客户端;sc.java功能为文件上传线程;zc.java功能为实现用户登录;Main功能为总体调用;fwq.java功能为建立服务端;User.java功能为实现与数据库的连接(直连)。
第三章成果展示
一、登录注册界面展示
1.效果截图
经过我们的编程设计,实现了用户的登录,其运行效果如图3-1所示、登陆成功效果如图3-2示、登陆未成功效果如图3-3示。
注册效果如图3-4所示,注册后数据库数据改变效果如图3-5示
图3-1登陆界面运行成功效果图
图3-2登陆成功效果图
图3-3登陆未成功效果图
图3-4注册界面效果图
2.核心代码
相关核心代码及其详细注解如下:
packageceshi;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.PrintWriter;
importjavax.swing.*;
publicclasszcextendsJFrame{
Userlogin_user=newUser();
JTextFieldj1=newJTextField();//用户名的文本框
JPasswordFieldjpw=newJPasswordField();//密码的文本框
JButtonjb1=newJButton("登录");
JButtonjb2=newJButton("注册");
privateContainera=getContentPane();
publiczc(){
setLayout(null);
setVisible(true);
setBounds(600,320,400,160);
setTitle("登录窗口");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//控制窗口关闭
//添加登录和注册的按钮
jb1.setBounds(270,10,60,30);
j1.setBounds(100,15,100,20);
jpw.setBounds(100,60,100,20);
a.add(j1);
a.add(jpw);
jb1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringname1=j1.getText();
Stringpassword1=newString(jpw.getPassword());
Stringpassword2=login_user.getPWD(name1);
Stringsecurity1=login_user.getSCT(name1);
if(password2.trim().equals(password1.trim()))
{if(security1.trim().equals("管理员")){
//System.out.println("3"+login_user.getPWD(name1));
setVisible(false);
JOptionPane.showMessageDialog(null,"恭喜您登陆成功!
","消息",JOptionPane.INFORMATION_MESSAGE);
newfwq();
}
else{
setVisible(false);
JOptionPane.showMessageDialog(null,"恭喜您登陆成功!
","消息",JOptionPane.INFORMATION_MESSAGE);
newkhd();
}
}
else{
JOptionPane.showMessageDialog(null,"对不起您的用户名或密码错误!
","错误",JOptionPane.ERROR_MESSAGE);
}
}
});
jb2.setBounds(270,55,60,30);
a.add(jb1);
a.add(jb2);
jb2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Registerc=newRegister();
}
});
//添加用户名和密码的标签
JLabeljl1=newJLabel("用户名");
jl1.setBounds(40,10,60,30);
JLabeljl2=newJLabel("密码");
jl2.setBounds(40,55,60,30);
a.add(jl1);
a.add(jl2);
}
publicstaticvoidmain(Stringargsp[]){
newzc();
}
}
classRegisterextendsJFrame{
UserLogin_user=newUser();
JTextFieldjt1=newJTextField();
JTextFieldjt2=newJTextField();
JTextFieldjt3=newJTextField();
JTextFieldjt4=newJTextField();
JTextFieldjt5=newJTextField();
JButtonjb1=newJButton("注册");
JButtonjb2=newJButton("退出");
JLabeljl1=newJLabel("用户名");
JLabeljl2=newJLabel("密码");
JLabeljl3=newJLabel("重新输入密码");
JLabeljl4=newJLabel("邮箱");
JLabeljl5=newJLabel("身份");
JPaneljp=newJPanel();
privateContainera=getContentPane();
publicRegister(){
setLayout(null);
setVisible(true);
setTitle("注册");
setBounds(750,320,300,250);
jb1.setBounds(10,150,60,30);
jb2.setBounds(140,150,60,30);
jl1.setBounds(10,10,100,30);
jl2.setBounds(10,35,100,30);
jl3.setBounds(10,60,100,30);
jl4.setBounds(10,85,100,30);
jl5.setBounds(10,110,100,30);
jt1.setBounds(120,15,130,20);
jt2.setBounds(120,40,130,20);
jt3.setBounds(120,65,130,20);
jt4.setBounds(120,90,130,20);
jt5.setBounds(120,115,130,20);
a.add(jb1);
a.add(jb2);
a.add(jl1);
a.add(jl2);
a.add(jl3);
a.add(jl4);
a.add(jl5);
a.add(jt1);
a.add(jt2);
a.add(jt3);
a.add(jt4);
a.add(jt5);
jb1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringname1=jt1.getText();
Stringpassword1=newString(jt2.getText());
Stringrpassword1=newString(jt3.getText());
Stringgender1=newString(jt4.getText());
Stringsecurity1=newString(jt5.getText());
if(Login_user.jiancha(name1)==1){
JOptionPane.showMessageDialog(null,"对不起您的用户名已被注册!
","错误",JOptionPane.ERROR_MESSAGE);
return;
}
elseif(name1.length()>10){
JOptionPane.showMessageDialog(null,"用户名不能大于10位");
return;
}
elseif(password1.length()<6){
JOptionPane.showMessageDialog(null,"密码不能小于6位");
return;
}
elseif(password1.equals(name1)){
JOptionPane.showMessageDialog(null,"密码不能与用户名一致");
return;
}
elseif(!
password1.equals(rpassword1)){
JOptionPane.showMessageDialog(null,"两次输入的密码不一样");
return;
}
Login_user.insert(name1,password1,rpassword1,gender1,security1);
JOptionPane.showMessageDialog(null,"注册成功!
");
setVisible(false);
}
}
);
jb2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
setVisible(false);
}
});
}
}
二、客户端界面展示
1.效果截图
经过我们的编程设计,实现了客户端的相关操作,其运行效果如图3-6所示,能够实现连接服务端、断开,选择文件并上传文件、发送、截屏等操作
图3-6客户端界面图
2.核心代码
核心代码如下:
packageceshi;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.TitledBorder;
importceshi.wjsc;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
import.Socket;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.StringTokenizer;
publicclasskhdextendsJFrame{
UserLogin_user=newUser();
JButtonjb1=newJButton("发送");
JButtonjb2=newJButton("文件");
JButtonjb3=newJButton("连接");
JButtonjb4=newJButton("断开");
staticJButtonjb5=newJButton("上传");
JButtonjb6=newJButton("截屏");
staticJTextAreajt1=newJTextArea(1,1);
JTextAreajt2=newJTextArea(1,1);
JTextFieldjt3=newJTextField("127.0.0.1");
JTextFieldjt4=newJTextField("6999");
JTextFieldjt5=newJTextField("d");
JTextFieldjt6=newJTextField();
JTextFieldjt7=newJTextField();
JLabeljl1=newJLabel("聊天窗口");
JLabeljl2=newJLabel("写消息");
JLabeljl3=newJLabel("服务器IP");
JLabeljl4=newJLabel("端口");
JLabeljl5=newJLabel("昵称");
Jj1=newJ();
static=newFile("");
static;
privateSocketsocket;
privateSocketsocket2;
privatePrintWriterwriter;
privateBufferedReaderreader;
privateMessageThreadmessageThread;//负责接收消息的线程
privateMaponLineUsers=newHashMap();//所有在线用户
privatebooleanisConnected=false;
privateContainera=getContentPane();
publickhd(){
setLayout(null);
setVisible(true);
setTitle("聊天室");
setBounds(600,150,460,600);
jl1.setBounds(10,50,100,20);
JScrollPanejs1=newJScrollPane(jt1);
jt1.setEditable(false);
js1.setBounds(10,80,420,280);
a.add(js1);
a.add(jl1);
jl2.setBounds(10,420,100,20);
JScrollPanejs2=newJScrollPane(jt2);
js2.setBounds(10,440,420,80);
a.add(js2);
a.add(jl2);
jb1.setBounds(250,370,60,30);
a.add(jb1);
jb3.setBounds(310,370,60,30);
a.add(jb3);
jb4.setBounds(370,370,60,30);
a.add(jb4);
jb5.setBounds(190,370,60,30);
a.add(jb5);
jb6.setBounds(10,370,60,30);
a.add(jb6);
jb2.setBounds(70,370,60,30);
a.add(jb2);
jt6.setBounds(130,370,60,30);
a.add(jt6);
jt3.setBounds(60,10,100,20);
a.add(jt3);
jl3.setBounds(10,10,100,20);
a.add(jl3);
jt4.setBounds(200,10,100,20);
a.add(jt4);
jl4.setBounds(168,10,100,20);
a.add(jl4);
jt5.setBounds(330,10,100,20);
a.add(jt5);
jl5.setBounds(300,10,100,20);
a.add(jl5);
//按钮控制
jb1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
send();
}
});
jb2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
intn=j1.showOpenDialog(null);
String=j1.getSelectedFile().toString();
if(n==J){
jt6.setText();
=new);
file=j1.getSelectedFile();
System.out.println(""+file);
}
}
});
jb3.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
intport;
if(isConnected){
JOptionPane.showMessageDialog(null,"已处于连接上状态,不要重复连接!
",
"错误",JOptionPane.ERROR_MESSAGE);
return;
}
try{
try{
port=Integer.parseInt(jt4.getText().trim());
}catch(NumberFormatExceptione2){
thrownewException("端口号不符合要求!
端口为整数!
");
}
StringhostIp=jt3.getText().trim();
Stringname=jt5.getText().trim();
if(name.equals("")||hostIp.equals("")){
thrownewException("姓名、服务器IP不能为空!
");
}
booleanflag=connectServer(port,hostIp,name);
if(flag==false){
thrownewException("与服务器连接失败!
");
}
setTitle(name);
JOptionPane.showMessageDialog(null,"成功连接!
");
}catch(Exceptionexc){
JOptionPane.showMessageDialog(null,exc.getMessage(),
"错误",JOptionPane.ERROR_MESSAGE);
}
}
});
jb4.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(!
isConnected){
JOptionPane.showMessageDialog(null,"已处于断开状态,不要重复断开!
",
"错误",JOptionPane.ERROR_MESSAGE);
return;
}
try{
booleanflag=closeConnection();//断开连接
if(flag==false){
thrownewException("断开连接发生异常!
");
}
JOptionPane.showMessageDialo