Java终极大作业报告_第1页
Java终极大作业报告_第2页
Java终极大作业报告_第3页
Java终极大作业报告_第4页
Java终极大作业报告_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java语言程序设计 展示报告学 院 专 业 组长信息 组员信息1 组员信息2 组员信息3 指导教师 日 期 年 月 日目录第一章选题概述1第二章完成情况2第三章成果展示3一、登陆注册界面展示3 1、效果截图3 2、核心代码4二、客户端界面展示5 1、效果截图8 2、核心代码8三、服务端界面展示4 1、效果截图3 2、核心代码3四、数据库直连和文件线程10第四章总结与感受12第一章 选题概述 在一学期的Java课程学习之后,我们对Java语言有了一定的认识与了解。在此基础上我们选择了题目一作为本组的目标,题目的相关要求如下(初期拟完成目标): 设计编程实现桌面文档共享与管理系统(100%)实现

2、以下功能-1. 能够实现文件的下载与上传(客户端与服务器端)2. 能够通过安全认证与别人分享文档3. 能形成“圈子”,对朋友或这陌生人设置不同的安全级别4. 能够共享桌面与聊天5. 必须用数据库存储信息6. 必须用extends 和 implements 关键字7. 必须用this关键字8. 必须用图形用户界面9. 界面设计与功能不限,充分发挥题目一比较有挑战性,题目中的要求几乎涉及到了我们学过的所有知识,除此之外还需要我们课外学习一些课堂额外的知识,比如数据库的创建于连接。由组长XXX1负责整合所学内容与指挥,组员查阅资料并编写程序,再和组长讨论并完成各自的模块设计。我们设计了如下的流程图:

3、 图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功能为总体调

4、用;fwq.java功能为建立服务端;User.java功能为实现与数据库的连接(直连)。 第三章 成果展示一、登录注册界面展示 1.效果截图经过我们的编程设计,实现了用户的登录,其运行效果如图3-1所示、登陆成功效果如图3-2示、登陆未成功效果如图3-3示。注册效果如图3-4所示,注册后数据库数据改变效果如图3-5示 图3-1 登陆界面运行成功效果图 图3-2 登陆成功效果图 图3-3 登陆未成功效果图 图3-4 注册界面效果图 2.核心代码相关核心代码及其详细注解如下:package ceshi;import java.awt.*;import java.awt.event.*;impor

5、t java.io.PrintWriter;import javax.swing.*;public class zc extends JFrame User login_user=new User(); JTextField j1=new JTextField();/用户名的文本框 JPasswordField jpw=new JPasswordField();/密码的文本框 JButton jb1=new JButton(登录); JButton jb2=new JButton(注册); private Container a = getContentPane(); public zc()

6、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(new ActionLi

7、stener()public void actionPerformed(ActionEvent e)String name1=j1.getText();String password1=new String(jpw.getPassword();String password2=login_user.getPWD(name1);String security1=login_user.getSCT(name1);if(password2.trim().equals(password1.trim()if(security1.trim().equals(管理员)/System.out.println(

8、3 + login_user.getPWD(name1);setVisible(false);JOptionPane.showMessageDialog(null, 恭喜您登陆成功!, 消息, JOptionPane.INFORMATION_MESSAGE);new fwq();elsesetVisible(false);JOptionPane.showMessageDialog(null, 恭喜您登陆成功!, 消息, JOptionPane.INFORMATION_MESSAGE);new khd();elseJOptionPane.showMessageDialog(null, 对不起您的

9、用户名或密码错误!, 错误,JOptionPane.ERROR_MESSAGE);); jb2.setBounds(270,55,60,30); a.add(jb1); a.add(jb2); jb2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) Register c=new Register(); ); /添加用户名和密码的标签 JLabel jl1=new JLabel(用户名); jl1.setBounds(40,10,60,30); JLabel jl2=new JLa

10、bel(密 码); jl2.setBounds(40,55,60,30); a.add(jl1); a.add(jl2); public static void main(String argsp) new zc(); class Register extends JFrameUser Login_user = new User();JTextField jt1=new JTextField();JTextField jt2=new JTextField();JTextField jt3=new JTextField();JTextField jt4=new JTextField();JTex

11、tField jt5=new JTextField();JButton jb1=new JButton(注册);JButton jb2=new JButton(退出);JLabel jl1=new JLabel(用户名);JLabel jl2=new JLabel(密 码);JLabel jl3=new JLabel(重新输入密码);JLabel jl4=new JLabel(邮 箱);JLabel jl5=new JLabel(身 份);JPanel jp=new JPanel();private Container a = getContentPane();public Register(

12、)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)

13、;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(new ActionListener() public

14、void actionPerformed(ActionEvent e) String name1=jt1.getText();String password1=new String(jt2.getText();String rpassword1=new String(jt3.getText();String gender1=new String(jt4.getText();String security1=new String(jt5.getText();if (Login_user.jiancha(name1)=1)JOptionPane.showMessageDialog(null, 对不

15、起您的用户名已被注册!, 错误,JOptionPane.ERROR_MESSAGE);return;else if(name1.length()10) JOptionPane.showMessageDialog(null,用户名不能大于10位); return;else if(password1.length()6) JOptionPane.showMessageDialog(null,密码不能小于6位); return; else if (password1.equals(name1) JOptionPane.showMessageDialog(null,密码不能与用户名一致); retur

16、n; else if (!password1.equals(rpassword1) JOptionPane.showMessageDialog(null,两次输入的密码不一样 ); return; Login_user.insert(name1, password1,rpassword1,gender1,security1);JOptionPane.showMessageDialog(null, 注册成功!);setVisible(false); );jb2.addActionListener(new ActionListener() public void actionPerformed(A

17、ctionEvent e) setVisible(false); ); 二、客户端界面展示1.效果截图经过我们的编程设计,实现了客户端的相关操作,其运行效果如图3-6所示,能够实现连接服务端、断开,选择文件并上传文件、发送、截屏等操作 图3-6 客户端界面图2.核心代码核心代码如下:package ceshi;import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; import ceshi.wjsc;import java.awt.*;im

18、port java.awt.event.*;import java.io.*; import .Socket; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer;public class khd extends JFrameUser Login_user=new User();JButton jb1=new JButton(发送);JButton jb2=new JButton(文件);JButton jb3=new JButton(连接);JButton jb4=n

19、ew JButton(断开);static JButton jb5=new JButton(上传);JButton jb6=new JButton(截屏);static JTextArea jt1=new JTextArea(1,1);JTextArea jt2=new JTextArea(1,1);JTextField jt3=new JTextField();JTextField jt4=new JTextField(6999);JTextField jt5=new JTextField(d);JTextField jt6=new JTextField();JTextFi

20、eld jt7=new JTextField();JLabel jl1=new JLabel(聊天窗口);JLabel jl2=new JLabel(写消息);JLabel jl3=new JLabel(服务器IP);JLabel jl4=new JLabel(端口);JLabel jl5=new JLabel(昵称);J j1 = new J();static = new File();static ;private Socket socket; private Socket socket2;private PrintWriter writer; private BufferedReader

21、 reader; private MessageThread messageThread;/ 负责接收消息的线程 private Map onLineUsers = new HashMap();/ 所有在线用户 private boolean isConnected = false; private Container a = getContentPane();public khd()setLayout(null);setVisible(true);setTitle(聊天室);setBounds(600,150,460,600);jl1.setBounds(10,50,100,20);JScr

22、ollPane js1 = new JScrollPane(jt1);jt1.setEditable(false);js1.setBounds(10,80,420,280);a.add(js1);a.add(jl1);jl2.setBounds(10,420,100,20);JScrollPane js2 = new JScrollPane(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.

23、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(2

24、00,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(new ActionListener() public void actionPerformed(ActionEvent arg0) send(); );jb2.addActionListener(new ActionListener()pub

25、lic void actionPerformed(ActionEvent e) int n = j1.showOpenDialog(null); String = j1.getSelectedFile().toString(); if (n = J) jt6.setText(); = new ); file = j1.getSelectedFile(); System.out.println(+file); );jb3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int po

26、rt; if (isConnected) JOptionPane.showMessageDialog(null, 已处于连接上状态,不要重复连接!, 错误, JOptionPane.ERROR_MESSAGE); return; try try port = Integer.parseInt(jt4.getText().trim(); catch (NumberFormatException e2) throw new Exception(端口号不符合要求!端口为整数!); String hostIp = jt3.getText().trim(); String name= jt5.getTe

27、xt().trim(); if (name.equals() | hostIp.equals() throw new Exception(姓名、服务器IP不能为空!); boolean flag = connectServer(port, hostIp, name); if (flag = false) throw new Exception(与服务器连接失败!); setTitle(name); JOptionPane.showMessageDialog(null, 成功连接!); catch (Exception exc) JOptionPane.showMessageDialog(nul

28、l, exc.getMessage(), 错误, JOptionPane.ERROR_MESSAGE); ); jb4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (!isConnected) JOptionPane.showMessageDialog(null, 已处于断开状态,不要重复断开!, 错误, JOptionPane.ERROR_MESSAGE); return; try boolean flag = closeConnection();/ 断开连接 if

29、(flag = false) throw new Exception(断开连接发生异常!); JOptionPane.showMessageDialog(null, 成功断开!); catch (Exception exc) JOptionPane.showMessageDialog(null, exc.getMessage(), 错误, JOptionPane.ERROR_MESSAGE); ); jb6.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) new jp();

30、RectD rd = new RectD(); GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment() .getDefaultScreenDevice(); gd.setFullScreenWindow(rd); ); public synchronized boolean closeConnection() try sendMessage(CLOSE);/ 发送断开连接命令给服务器 messageThread.stop();/ 停止接受消息线程 / 释放资源 if (reader != null) reade

31、r.close(); if (writer != null) writer.close(); if (socket != null) socket.close(); isConnected = false; return true; catch (IOException e1) e1.printStackTrace(); isConnected = true; return false; public void sendMessage(String message) writer.println(message); writer.flush(); public void send() if (

32、!isConnected) JOptionPane.showMessageDialog(null, 还没有连接服务器,无法发送消息!, 错误, JOptionPane.ERROR_MESSAGE); return; String message = jt2.getText().trim(); if (message = null | message.equals() JOptionPane.showMessageDialog(null, 消息不能为空!, 错误, JOptionPane.ERROR_MESSAGE); return; sendMessage(getTitle() + + ALL

33、 + + message); jt2.setText(null); public static void main(String args)new khd(); class MessageThread extends Thread private BufferedReader reader; private JTextArea textArea; / 接收消息线程的构造方法 public MessageThread(BufferedReader reader, JTextArea textArea) this.reader = reader; this.textArea = textArea;

34、 / 被动的关闭连接 public synchronized void closeCon() throws Exception / 清空用户列表 / listModel.removeAllElements(); / 被动的关闭连接释放资源 if (reader != null) reader.close(); if (writer != null) writer.close(); if (socket != null) socket.close(); isConnected = false;/ 修改状态为断开 public void run() String message = ; while

35、 (true) try message = reader.readLine(); StringTokenizer stringTokenizer = new StringTokenizer( message, /); String command = stringTokenizer.nextToken();/ 命令 if (command.equals(CLOSE)/ 服务器已关闭命令 textArea.append(服务器已关闭!n); closeCon();/ 被动的关闭连接 return;/ 结束线程 else if (command.equals(ADD) / 有用户上线更新在线列表

36、String username = ; String userIp = ; if (username = stringTokenizer.nextToken() != null & (userIp = stringTokenizer.nextToken() != null) User user = new User(username, userIp); onLineUsers.put(username, user); /listModel.addElement(username); else if (command.equals(DELETE) / 有用户下线更新在线列表 String use

37、rname = stringTokenizer.nextToken(); User user = (User) onLineUsers.get(username); onLineUsers.remove(user); else if (command.equals(USERLIST) / 加载在线用户列表 int size = Integer .parseInt(stringTokenizer.nextToken(); String username = null; String userIp = null; for (int i = 0; i size; i+) username = str

38、ingTokenizer.nextToken(); userIp = stringTokenizer.nextToken(); User user = new User(username, userIp); onLineUsers.put(username, user); /listModel.addElement(username); else if (command.equals(MAX) / 人数已达上限 textArea.append(stringTokenizer.nextToken() + stringTokenizer.nextToken() + n); closeCon();/

39、 被动的关闭连接 JOptionPane.showMessageDialog(null, 服务器缓冲区已满!, 错误, JOptionPane.ERROR_MESSAGE); return;/ 结束线程 else / 普通消息 textArea.append(message + n); catch (IOException e) e.printStackTrace(); catch (Exception e) e.printStackTrace(); public boolean connectServer(int port, String hostIp, String name) / 连接服务器 try socket = new Socket(hostIp, port);/ 根据端口号和服务器ip建立连接 socket2=new Socket(hostIp,port); writer = new PrintWriter(socket.getOutputStream(); reader = new BufferedReader(new In

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论