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

下载本文档

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

文档简介

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

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

3、模块设计。我们设计了如下的流程图:Java语言程序设计(报告)图1-1流程图第二章完成情况经过将近一个月左右的编程设计,我们实现的桌面文档共享 与管理系统(90%)实现了以下功能-1 .能够实现文件的上传(客户端与服务器端)2 .能够通过安全认证与别人分享文档3 .能形成 圈子”,对朋友或这陌生人设置不同的安全级别4 .能够聊天弁截取屏幕信息5 .采用了数据库存储信息6 .采用了 extends 和 implements 关键字,KvcjawaJava语百蜃设让出报告)lc KB5 KB曰KB1KB3 K82 KB5 KB目 Ipjava;014/L2/30 15:00 JAVA 文件下加7.

4、采用了55关键字/加一件 _ 立Java二&14/12/30 15上 MV虫文件8爆帝8.采用了图形用户界面二'Ajscjava201J/12/30 15 册 ,AVA 大性程序的编程设计L_i ip java2014/12/30 15:035014/12/30 15:00 及*n 1%侑JAVA文件JAVA文件JAVA。住13 KE5 KE1 =! kfRTg/r / 卬 k i-_ hvqjavj2014/1/3015tQ3 JAVA 雌13 KG_ ip扣由2014/L2/30 15;D0 JAVA 文件5 KBkhd.j3vai2014/tJ/O 15:03 JAVA

5、立社iw陋2014/12/30 15t03 JAVA 文件1KBUser.java:014/L2/29 21:豹 .AVA 为牛3 Kfi2014/12/3015rQ3 JAVA 文件2KS2014/L2/30 15;D0 .AVA 为牛5 KB图2-1类成果展示图其中jp.java功能为截图;khd.java功能为建立客户端;sc.java 功能为文件上传线程;zc.java功能为实现用户登录;Main功能 为总体调用;fwq.java功能为建立服务端;User.java功能为实现 与数据库的连接(直连)。第三章成果展示一、登录注册界面展示1 .效果截图经过我们的编程设计,实现了用户的登录,

6、其运行效果如图 3-1所示、登陆成功效果如图 3-2示、登陆未成功效果如图 3-3 示。注册效果如图3-4所示,注册后数据库数据改变效果如图3-5示Java语言程序设计(报告)图3-1登陆界面运行成功效果图图3-2登陆成功效果图图3-3登陆未成功效果图Java语言程序设计(报告)出姗回堂用户由pagayge逑利心必用巧':密也不能与用户占一致图3-4注册界面效果图2 .核心代码相关核心代码及其详细注解如下:package ceshi;import java.awt.*;import java.awt.event.*;import java.io.PrintWriter;import j

7、avax.swing.*;public class zc extends JFrameUser 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()setLayout(null);Java语言

8、程序设计(报告)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 ActionListen

9、er()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.

10、println("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();Java语言程序

11、设计(报告)elseJOptionPane.showMessageDialog(null,对不起您的用户名或 密码错误!","错误",JOptionPane.ERROR_MESSAGE););jb2.setBounds(270,55,60,30);a.add(jbl);a.add(jb2);jb2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)Register c=new Register。;);/添加用户名和密码的标签JLabel jl1=new J

12、Label("用户名");jl1.setBounds(40,10,60,30);儿abel jl2=new 儿abel("密码");jl2.setBounds(40,55,60,30);a.add(jl1);a.add(jl2);public static void main(String argsp)new zc();Java语言程序设计(报告)class Register extends JFrameUser Login_user = new User();JTextField jt1=new JTextField();JTextField jt2=

13、new JTextField();JTextField jt3=new JTextField();JTextField jt4=new JTextField();JTextField jt5=new JTextField();JButton jb1=new JButton("注册");JButton jb2=new JButton("退出");JLabel jl1=new JLabel("用户名)JLabel jl2=new JLabel("密码");JLabel jl3=new JLabel("重新输入密码&qu

14、ot;);JLabel jl4=new JLabel("邮箱");JLabel jl5=new JLabel("身份");JPanel jp=new JPanel();private Container a = getContentPane();public Register() setLayout(null); setVisible(true);setTitle("注册)setBounds(750,320,300,250);jb1.setBounds(10,150,60,30);jb2.setBounds(140,150,60,30);jl1

15、.setBounds(10,10,100,30);jl2.setBounds(10,35,100,30);jl3.setBounds(10,60,100,30);Java语言程序设计(报告)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.

16、add(jbl);a.add(jb2);a.add(jll);a.add(jl2);a.add(jl3);a.add(jl4);a.add(jl5);a.add(jtl);a.add(jt2);a.add(jt3);a.add(jt4);a.add(jt5);jb1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String name1=jt1.getText();String password1=new String(jt2.getText();String rpassword1

17、=new String(jt3.getText();String gender1=new String(jt4.getText();String security1=new String(jt5.getText();if (Login_user.jiancha(name1)=1)Java语言程序设计(报告)JOptionPane.showMessageDialog(null,对不起您的用户名已 被注册!","错误",JOptionPane.ERROR_MESSAGE);return;else if(name1.length()>10)JOptionPane.

18、showMessageDialog(null,用户名不能大于 10 位)return;else if(password1.length()<6)JOptionPane.showMessageDialog(null,密码不能小于 6 位) return;else if (password1.equals(name1)JOptionPane.showMessageDialog(null,密码不能与用户名一致"); return;else if (!password1.equals(rpassword1)JOptionPane.showMessageDialog(null,两次输入的

19、密码不 一样");return;Login_user.insert(name1,password1,rpassword1,gender1,security1);JOptionPane.showMessageDialog(null,注册成功!");setVisible(false););jb2.addActionListener(new ActionListener()Java语言程序设计(报告)public void actionPerformed(ActionEvent e)setVisible(false);tileif Imhoi Ak WKfcfWil i ll J

20、T , J .1H ”rwW * 12艮F< 1 R 嗨,.<>*>£ *anhuTB:IvyWHljUMhUMH |MM 3441 LbfQ-Li gff0Crn4> ! MwF强i kiifl T曲,7 50: taring Ikvigv4. I-Hh * WUPH*,.ajM 巾 M Scie q M1-1 虫 HhJw , itzLfawa Mi 1KlpmVUrdiE?i UM*TalJiU, WM4I8加 feHiwww'ra, - uivtfg);一客户端界面展7K1 .效果截图经过我们的编程设计,实现了客户端的相关操作, 具运行效

21、 果如图3-6所示,能够实现连接服务端、断开,选择文件弁上传 文件、发送、截屏等操作ioJava语言程序设计(报告)图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.*;import java.awt.event.*;import java.io.*;import .Socket;import jav

22、a.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("连接");1iJava语言程序设计(报告)JButton jb4=new JButton(" 断开&quo

23、t;);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");J

24、TextField jt6=new JTextField();JTextField 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(""

25、);static ;private Socket socket;private Socket socket2;private PrintWriter writer;private BufferedReader reader;private MessageThread messageThread;/负责接收消息的线程private Map<String, User> onLineUsers = new HashMap<String,User>();/所有在线用户private boolean isConnected = false;12Java语言程序设计(报告)priv

26、ate Container a = getContentPane();public khd()setLayout(null);setVisible(true);setTitle("聊天室");setBounds(600,150,460,600);jl1.setBounds(10,50,100,20);JScrollPane js1 = new JScrollPane(jt1);jt1.setEditable(false);js1.setBounds(10,80,420,280);a.add(js1);a.add(jl1);jl2.setBounds(10,420,100,2

27、0);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.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);13Java语言程序设计(报告)a.

28、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.setBou

29、nds(300,10, 100, 20);a.add(jl5);/按钮控制jb1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) send(););jb2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)Java语言程序设计(报告)int n = jl.showOpenDialog(null);String = j1.getSelectedFile().toStr

30、ing();if (n = J) jt6.setText();=new );file = j1.getSelectedFile();System.out.println(""+file););jb3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int port;if (isConnected) JOptionPane.showMessageDialog(null,”已处于连接上状态,不要重复连接!”,"错误 ", JOptionPane

31、.ERROR_MESSAGE);return;try try port= Integer.parseInt(jt4.getText().trim(); catch (NumberFormatException e2) thrownewException("端口号不符合要求!端口为整数!)15Java语言程序设计(报告)String hostIp = jt3.getText().trim();String name= jt5.getText().trim();if (name.equals("") | hostIp.equals("") thro

32、w 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(null,exc.getMessage(),"错误 &

33、quot;, JOptionPane.ERROR_MESSAGE););jb4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (!isConnected) JOptionPane.showMessageDialog(null,”已处于断开状态,不要重复断开!","错误 ", JOptionPane.ERROR_MESSAGE);return;Java语言程序设计(报告)try boolean flag = closeConnection();

34、/断开连接if (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 actionPer

35、formed(ActionEvent arg0) new jp();RectD rd = new RectD();GraphicsDevice gd =GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();gd.setFullScreenWindow(rd););public synchronized boolean closeConnection() try 17Java语言程序设计(报告)sendMessage("CLOSE");/发送断开连接命令给服务器messageThr

36、ead.stop();/停止接受消息线程/释放资源if (reader != null) reader.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(messag

37、e);writer.flush();public void send() if (!isConnected) Java语言程序设计(报告)JOptionPane.showMessageDialog(null,"还没有连接服务器,无法发送消息!","错误",JOptionPane.ERROR_MESSAGE);return;String message = jt2.getText().trim();if (message = null | message.equals("") JOptionPane.showMessageDialog(

38、null,"消息不能为空!","错误”,JOptionPane.ERROR_MESSAGE);return;sendMessage(getTitle() + "" + "ALL" + "" + message);jt2.setText(null);public static void main(String args)new khd();class MessageThread extends Thread private BufferedReader reader;private JTextArea te

39、xtArea;/接收消息线程的构造方法public MessageThread(BufferedReader reader, JTextAreatextArea) this.reader = reader;Java语言程序设计(报告)this.textArea = textArea;/被动的关闭连接public synchronized void closeCon() throws Exception /清空用户列表 listModel.removeAllElements();/被动的关闭连接释放资源if (reader != null) reader.close();if (writer !

40、= null) writer.close();if (socket != null) socket.close();isConnected = false;/修改状态为断开public void run() String message =""while (true) try message = reader.readLine();StringTokenizer stringTokenizer = new20Java语言程序设计(报告)StringTokenizer(String命令message, "/");command= stringTokeniz

41、er.nextToken();服务器已关闭命if (command.equals("CLOSE")textArea.append(" 服务器已关闭!n");线更新在线列表closeCon();/return;/被动的关闭连接结束线程 else if (command.equals("ADD") /有用户上String username =""String userIp =""if (username =stringTokenizer.nextToken() != null&& (

42、userIp =stringTokenizer.nextToken() != null) User有用user = new User(username, userIp);onLineUsers.put(username, user);/listModel.addElement(username); else if (command.equals("DELETE") /户下线更新在线列表String username =stringTokenizer.nextToken();21Java语言程序设计(报告)User user = (User)onLineUsers.get(u

43、sername);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 =stringTokenizer.nextToken();userIp = stringTokenizer.nextToken();Us

44、eruser = new User(username, userIp);onLineUsers.put(username, user);/listModel.addElement(username); else if (command.equals("MAX") /人数已达上限textArea.append(stringTokenizer.nextToken()+ stringTokenizer.nextToken() +"n");closeCon();/被动的关闭连接22Java语言程序设计(报告)JOptionPane.showMessageDial

45、og(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

46、 = new Socket(hostIp, port);/根据端口号和服务器ip建立连接socket2=new Socket(hostIp,port);writer = new PrintWriter(socket.getOutputStream();reader = new BufferedReader(newInputStreamReader(socket.getInputStream();23Java语言程序设计(报告)/发送客户端用户基本信息(用户名和ip地址)sendMessage(name + "" + socket.getLocalAddress().toSt

47、ring();/ 开启接收消息的线程messageThread = new MessageThread(reader, jt1);messageThread.start();new wjsc(socket2).start();/new Input(socket2).start();isConnected = true;/已经连接上了return true; catch (Exception e) jt1.append("与端口 号为:"+ port + " IP 地址为:"+hostIp+ "的服务器连接失败!" + "n&

48、quot;);isConnected = false;/未连接上return false; 二、服务端界面展不'1 .效果截图经过我们的编程设计,实现了服务端的相关操作,具运行效果如图3-5所示,能够实现通过自己的IP地址创造一个服务端。24Java语言程序设计(报告)图3-5服务端效果图2 .核心代码主要代码如下:package ceshi;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.io.*;import .BindExc

49、eption;import .ServerSocket;import .Socket;25Java语言程序设计(报告)import java.util.ArrayList;import java.util.StringTokenizer;public class fwq extends JFrameprivate ServerSocket serverSocket;private ServerThread serverThread;ArrayList<ClientThread> clients;JTextField jt1=new JTextField("127.0.0.

50、1");JTextField jt2=new JTextField("6999");JTextArea jt3=new JTextArea(1,1);JTextArea jt4=new JTextArea(1,1);JLabel jl1=new JLabel(" 端口 ");JLabel jl2=new JLabel("IP");JLabel jl3=new JLabel("聊天窗口 ");JLabel jl4=new JLabel(" 写消息");final JButton jb1=

51、new JButton(" 启动");final JButton jb2=new JButton("停止");/static JButton jb3=new JButton(" 传文件");private boolean isStart = false;private Container a = getContentPane();public fwq()setBounds(600,150,400,400);setLayout(null);setVisible(true);setTitle("聊天室服务端");JSc

52、rollPane js3 = new JScrollPane(jt3);jt3.setEditable(false);26Java语言程序设计(报告)JScrollPane js4 = new JScrollPane(jt4);js3.setBounds(10,85,370,270);js4.setBounds(10,400,300,150);jl4.setBounds(20,375,300,30);a.add(js3);/a.add(js4);/a.add(jl4);jl1.setBounds(10,40,75,15);a.add(jll);jt2.setBounds(40,40,110,2

53、0);a.add(jt2);jt2.setColumns(10);jsetBounds(10,65,100,15);a.add(jl3);jb1.setBounds(180,20,80,50);jb2.setBounds(280,20,80,50);jb3.setBounds(390,370,150,70);a.add(jbl);a.add(jb2);/a.add(jb3);jl2.setBounds(10,10,25,15);jt1.setBounds(40,10,110,20);a.add(jtl);a.add(jl2);/启动服务器jb1.addActionListener(new Ac

54、tionListener() 27Java语言程序设计(报告)public void actionPerformed(ActionEvent e)if (isStart) JOptionPane.showMessageDialog(null,”服务器已处于启动状态, 不要重复启动!","错误",JOptionPane.ERROR_MESSAGE);return; int max; int port; try try port = Integer.parseInt(jt2.getText(); catch (Exception e1) throw new Excep

55、tion("端 口 号为正整数!)if (port <= 0) thrownew Exception。' 端口号 为正整数!)serverStart(port);System.out.println("端口: " + port28Java语言程序设计(报告)+ "n");JOptionPane.showMessageDialog(null,”服务器成功启动!”); jbl.setEnabled(false); jtl.setEnabled(false); jt2.setEnabled(false); jb2.setEnabled(true); catch (Exception exc) JOptionPane.showMessageDialog(null, exc.getMessage(),"错误",JOptionPane.ERROR_MESSAGE); );/停止服务器jb2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (!isStart) JOptionPane.showMe

温馨提示

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

评论

0/150

提交评论