JAVA高级程序设计课程设计任务书_第1页
JAVA高级程序设计课程设计任务书_第2页
JAVA高级程序设计课程设计任务书_第3页
JAVA高级程序设计课程设计任务书_第4页
JAVA高级程序设计课程设计任务书_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上存档资料 成绩: 广西师范大学漓江学院课程设计报告书课程名称:JAVA高级程序设计课程设计设计题目:基于C/S架构的聊天工具的设计与实现所在系部:理学系班 级:12计算机学号:学生姓名:指导教师:肖建明2014年 4 月 日专心-专注-专业课程设计(论文)评阅意见序号项 目等级优秀良好中等及格不及格1课程设计态度及出勤情况2任务完成程度3设计中创新性4论文书写规范化综合评定等级课程设计软件演示及答辩成绩序号项 目等级优秀良好中等及格不及格1演示过程完成情况2对软件代码熟悉情况3回答问题准确性和逻辑性综合评定等级课程设计软件界面及功能设计成绩序号项 目等级优秀良好中等及

2、格不及格1界面美观及可操作性2功能实现情况及创新性3代码的可读性和可维护性综合评定等级评阅人 年 月 日课程设计任务书一、本课程设计的目的1.使学生能够更好地掌握Java程序设计语言和理解面向对象程序设计的基本概念与方法; 2.掌握类和对象的创建和使用,理解面向对象的封装性、继承性、多态性和面向接口编程的程序设计思想,学会利用Java语言和面向对象编程方法解决一般应用问题;3.从实践中累积经验、培养学生分析、解决问题的能力;4.提高学生实践论文撰写能力。 5.初步掌握使用Java语言开发小型应用软件的基本方法和步骤二、课程设计的教学过程与考核方法1课程设计以小项目的方式开展,以分组(1-2人一

3、组)的形式进行。2第一次实验课时,任课教师下达课程设计题目任务,讲解课程设计的题目要求和注意事项,并要求学生根据题目要求进行界面的设计和功能代码编写工作,完成课程设计报告。3课程设计实验进行过程中,教师根据实验的进度分模块讲述课程设计题目的设计要点。教师给予技术和方法上的指导,每个学生自己动手完成项目,并要求学生积极开展逻辑思维,充分发挥自己的创意,设计出优秀的课程设计作品。4课程设计结束后,要求学生完成课程设计报告,课程设计报告需包括目录、设计目标、实现思路、实现步骤、总结、参考文献、附录等;5最后需上交课程设计报告纸质版和电子版及设计的软件作品源程序、数据库和相关文档,并进行软件设计作品的

4、演示和答辩。三、课程设计评分标准1学习态度:10分;2系统设计:20分;3编程调试:25分;4回答问题:15分;5论文撰写:30分。四、课程设计题目 基于C/S架构的聊天工具的设计与实现1.课程设计题目基本要求:(1)熟悉JAVA开发环境,掌握JAVA程序的编译和运行;(2)掌握JAVA面向对象编程技术和方法;(3)掌握GUI图形界面编程及事件处理机制;(4)了解异常处理机制(5)掌握Java数据库编程方法和数据库基本知识(6)掌握Java网络编程方法和多线程编程方法 2.课程设计内容要求:要求编程实现一个类似QQ的网络聊天工具软件,该聊天工具可以同时跟多人聊天,聊天记录保存在数据库中,具有用

5、户登录、注册,查看聊天记录,离线留言,清除聊天记录,查看在线用户,查找用户,添加好友等功能。目录设计报告应包括整个设计中所采用的具体流程和步骤,以及任务完成的具体情况和取得的收获。主要内容为:需求分析:分析阐述设计的要求以及对应到你要实现的系统应具有什么样的功能。总体设计:进一步提出自己解决问题的思路和方案。让读者了解方案的总体设计和关键技术。具体包括:总的设计思路,体系结构, 总体架构, 功能模块图;各功能模块所要达到的设计目标的简单介绍;设计的数据字典(数据库、表的结构);软硬件环境和开发技术和平台等。详细设计:对整个开发工作的内容进行详细的介绍。一般按照功能模块分成几部分来介绍。每部分应

6、包括文字叙述、界面图片、关键实现技术(操作或代码)等几个方面综合说明问题。系统调试与测试:介绍设计过程中遇到的问题和解决方法。如何测试系统,测试中发现的问题和解决方案。总结:对整个设计中做的工作、获得的成果、心得体会等做一个简单小结。 基于C/S架构的聊天工具的设计与实现需求分析:在当今信息时代,越来越多的聊天工具被应用,java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的

7、维护和继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。本程序正是用java语言实现了简单聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包等。总体设计:本软件实现的功能有1.允许服务器侦听客户端,客户端连接到服务器2.允许服务区与客户端之间进行聊天; 3.服务器与客户端时,会显示内容发送时间;4.允许服务器与客户端用鼠标点击“发送”可发送内容5.允许服务器与客户端用鼠标点击关闭时关闭聊天窗口服务器和客户端登陆以及客户端群聊界面利用java语言的AWT和Swing实现,聊天功能利用java语言网络编程的多线程

8、和网络编程的知识实现。详细设计:本系统中我们利用Java实现基于C/S模式的聊天室系统,分为服务器端和客户端两部分,运用Socket套接字实现客户方和服务方的链接,服务器端通过端口设置在特定端口上进行监听,等待客户端的连接,一旦客户端连接成功,则可以向连接成功的用户发送系统消息,可以接收所有客户端发送的消息并显示;客户端则与服务器端规定的端口进行连接,连接成功后可以登录,登录成功后便可以和所选的对象聊天,可以发送信息,也可以接收聊天对象所发送过来的信息,并显示信息内容。程序中引入的包:import java.awt.*;import java.awt.event.*;import javax.

9、swing.*;import .*;import java.io.*;源代码package xjm;import java.awt.BorderLayout;import java.awt.FlowLayout; import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JTextArea;import javax.swing.JScrollPane;import java.awt

10、.Color;import javax.swing.border.BevelBorder;import javax.swing.border.CompoundBorder;import javax.swing.border.EtchedBorder;import javax.swing.border.SoftBevelBorder;import javax.swing.border.TitledBorder;import javax.swing.ScrollPaneConstants;import java.awt.event.ActionListener;import java.awt.ev

11、ent.ActionEvent;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter;import .ServerSocket;import .Socket;import java.util.ArrayList; public class ChatServer extends JDialog private final JPanel contentPanel = new JPanel();/以下创建网络相关变量 int serverPort=2345;ServerSocket se

12、rverSocket=null;/Socket socket=null;BufferedReader socketIn;PrintWriter socketOut; boolean isstarting=false;JButton okButton=null;JTextArea textArea_info;ArrayList clientList=new ArrayList();/* * Launch the application. */public static void main(String args) try ChatServer dialog = new ChatServer();

13、dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true); catch (Exception e) e.printStackTrace();/* * Create the dialog. */public ChatServer() setTitle(u804Au5929u670Du52A1u5668);setBounds(100, 100, 641, 365);getContentPane().setLayout(new BorderLayout();contentPanel.setBor

14、der(new BevelBorder(BevelBorder.LOWERED, null, null, null, null);getContentPane().add(contentPanel, BorderLayout.CENTER);contentPanel.setLayout(null);JScrollPane scrollPane = new JScrollPane();scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);scrollPane.setHorizont

15、alScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);scrollPane.setBounds(10, 10, 613, 278);contentPanel.add(scrollPane);textArea_info = new JTextArea();scrollPane.setViewportView(textArea_info);textArea_info.setBackground(new Color(224, 255, 255);textArea_info.setText(u670Du52A1u5668u

16、901Au8BAFu8BB0u5F55);textArea_info.setForeground(Color.BLUE);JPanel buttonPane = new JPanel();buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT);getContentPane().add(buttonPane, BorderLayout.SOUTH);okButton = new JButton(u542Fu52A8);/启动okButton.addActionListener(new ActionListener() public void a

17、ctionPerformed(ActionEvent arg0) if (serverSocket=null) try serverSocket=new ServerSocket(serverPort);isstarting=true;okButton.setEnabled(false);new Thread(new Runnable() Overridepublic void run() int i=1;/ TODO 自动生成的方法存根while(isstarting)try Socket socket;socket = serverSocket.accept();SocketThread

18、socketThread=new SocketThread(socket);socketThread.setTextArea_handle(textArea_info);socketThread.setClientList(clientList);socketThread.start();/System.out.println(i+); catch (IOException e) / TODO 自动生成的 catch 块e.printStackTrace();isstarting=false;okButton.setEnabled(true);).start(); catch (IOExcep

19、tion e) / TODO 自动生成的 catch 块e.printStackTrace();try if (serverSocket!=null) serverSocket.close(); catch (IOException e1) / TODO 自动生成的 catch 块/e1.printStackTrace(););JButton clearButton = new JButton(u6E05u8BB0u5F55);clearButton.addActionListener(new ActionListener() public void actionPerformed(Actio

20、nEvent e) textArea_info.setText(););buttonPane.add(clearButton);okButton.setActionCommand(OK);buttonPane.add(okButton);getRootPane().setDefaultButton(okButton);JButton cancelButton = new JButton(u9000u51FA);cancelButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e

21、) try if (serverSocket!=null) serverSocket.close(); catch (IOException e1) / TODO 自动生成的 catch 块/e1.printStackTrace();System.exit(0););cancelButton.setActionCommand(Cancel);buttonPane.add(cancelButton); 系统调试与测试:总结:1通过本次课程设计,使得自己懂得理论和实践相结合起来,从理论中得出结论,才能真正掌握这门技术,也提高了自己独立思考的能力,在设计的过程中,可以自己解决。真正体会到要将一门知识

22、学的更深入,必须加强实践,多练习,才能发现问题所在。2.本程序实现的功能还比较简单不够完善,从中,我知道了自己的不足之处,决心增长自己的知识,设计更加好的程序,实现各种更加复杂的功能,如:传输文件,图片。以及登陆界面,昵称等。3总的来说,这次实训对我很有帮助。让我学会了的不只是设计JAVA聊天器,更让我学会主动学习,而不是被动接收。这样才能更好的运用自己所学到的知识。参考文献1 袁绍欣等编著. Java面向对象程序设计(第二版).北京:清华大学出版社,2012.6附 录程序主要源代码:package xjm;import java.awt.BorderLayout;import java.aw

23、t.FlowLayout; import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JTextArea;import javax.swing.JScrollPane;import java.awt.Color;import javax.swing.border.BevelBorder;import javax.swing.border.CompoundBorder;import

24、javax.swing.border.EtchedBorder;import javax.swing.border.SoftBevelBorder;import javax.swing.border.TitledBorder;import javax.swing.ScrollPaneConstants;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.io.BufferedReader;import java.io.IOException;import java.io.Print

25、Writer;import .ServerSocket;import .Socket;import java.util.ArrayList; public class ChatServer extends JDialog private final JPanel contentPanel = new JPanel();/以下创建网络相关变量 int serverPort=2345;ServerSocket serverSocket=null;/Socket socket=null;BufferedReader socketIn;PrintWriter socketOut; boolean is

26、starting=false;JButton okButton=null;JTextArea textArea_info;ArrayList clientList=new ArrayList();/* * Launch the application. */public static void main(String args) try ChatServer dialog = new ChatServer();dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true); catch (Exc

27、eption e) e.printStackTrace();/* * Create the dialog. */public ChatServer() setTitle(u804Au5929u670Du52A1u5668);setBounds(100, 100, 641, 365);getContentPane().setLayout(new BorderLayout();contentPanel.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null);getContentPane().add(content

28、Panel, BorderLayout.CENTER);contentPanel.setLayout(null);JScrollPane scrollPane = new JScrollPane();scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);scrollPane.setBounds(10, 1

29、0, 613, 278);contentPanel.add(scrollPane);textArea_info = new JTextArea();scrollPane.setViewportView(textArea_info);textArea_info.setBackground(new Color(224, 255, 255);textArea_info.setText(u670Du52A1u5668u901Au8BAFu8BB0u5F55);textArea_info.setForeground(Color.BLUE);JPanel buttonPane = new JPanel()

30、;buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT);getContentPane().add(buttonPane, BorderLayout.SOUTH);okButton = new JButton(u542Fu52A8);/启动okButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) if (serverSocket=null)try serverSocket=new ServerSocket(serv

31、erPort);isstarting=true;okButton.setEnabled(false);new Thread(new Runnable() Overridepublic void run() int i=1;/ TODO 自动生成的方法存根while(isstarting)try Socket socket;socket = serverSocket.accept();SocketThread socketThread=new SocketThread(socket);socketThread.setTextArea_handle(textArea_info);socketThr

32、ead.setClientList(clientList);socketThread.start();/System.out.println(i+); catch (IOException e) / TODO 自动生成的 catch 块e.printStackTrace();isstarting=false;okButton.setEnabled(true);).start(); catch (IOException e) / TODO 自动生成的 catch 块e.printStackTrace();try if (serverSocket!=null) serverSocket.close

33、(); catch (IOException e1) / TODO 自动生成的 catch 块/e1.printStackTrace(););JButton clearButton = new JButton(u6E05u8BB0u5F55);clearButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) textArea_info.setText(););buttonPane.add(clearButton);okButton.setActionCommand(OK);

34、buttonPane.add(okButton);getRootPane().setDefaultButton(okButton);JButton cancelButton = new JButton(u9000u51FA);cancelButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try if (serverSocket!=null) serverSocket.close(); catch (IOException e1) / TODO 自动生成的 catch

35、块/e1.printStackTrace();System.exit(0););cancelButton.setActionCommand(Cancel);buttonPane.add(cancelButton);package xjm;import java.awt.BorderLayout;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.s

36、wing.JPasswordField;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import javax.swing.JTextField;import java.awt.Color;import javax.swing.SwingConstants;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;public class LoginDialog extends JDialog private LoginDialo

37、g loginDialog=this;private final JPanel contentPanel = new JPanel();private JTextField textField_username;private JPasswordField textField_password;private JTextField textField_serverIP;/* * Launch the application. */public static void main(String args) try LoginDialog dialog = new LoginDialog();dia

38、log.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true); catch (Exception e) e.printStackTrace();/* * Create the dialog. */public LoginDialog() setForeground(Color.CYAN);setTitle(u7528u6237u767Bu5F55u7A97u53E3);setBounds(100, 100, 325, 215);getContentPane().setLayout(new Borde

39、rLayout();contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5);getContentPane().add(contentPanel, BorderLayout.CENTER);contentPanel.setLayout(null);JLabel label = new JLabel(u7528u6237u540Du79F0uFF1A);label.setHorizontalAlignment(SwingConstants.RIGHT);label.setForeground(Color.BLUE);label.setBounds(41

40、, 59, 89, 15);contentPanel.add(label);JLabel label_1 = new JLabel(u767Bu5F55u5BC6u7801uFF1A);label_1.setHorizontalAlignment(SwingConstants.RIGHT);label_1.setForeground(Color.BLUE);label_1.setBounds(41, 94, 89, 15);contentPanel.add(label_1);textField_username = new JTextField();textField_username.set

41、ToolTipText(u7528u6237u540Du79F0u533Au5206u5927u5C0Fu5199uFF01);textField_username.setBounds(140, 56, 120, 21);contentPanel.add(textField_username);textField_username.setColumns(10);textField_password = new JPasswordField();textField_password.setToolTipText(u8BF7u8F93u5165u767Bu5F55u5BC6u7801uFF01);

42、textField_password.setBounds(140, 91, 120, 21);contentPanel.add(textField_password);textField_password.setColumns(10);JLabel lblip = new JLabel(u670Du52A1u5668IPuFF1A);lblip.setHorizontalAlignment(SwingConstants.RIGHT);lblip.setForeground(Color.BLUE);lblip.setBounds(41, 21, 89, 15);contentPanel.add(lblip);textField_serverIP = new JTe

温馨提示

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

评论

0/150

提交评论