当前位置:文档之家› Java聊天室系统程序设计实验报告

Java聊天室系统程序设计实验报告

Java聊天室系统程序设计实验报告
Java聊天室系统程序设计实验报告

Java聊天室系统程序设计

实验报告

题目:******

院(系):******

年级专业:******

学生姓名:******

指导老师:******

开始时间:******

完成时间:******

第一部分:课程设计总述

课程设计目的:

1.学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java

程序开发的全过程。

2.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、

Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java

数据库编程等。

3.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。

课程设计总体要求:

1.问题的描述与程序将要实现的具体功能。

2.程序功能实现的具体设计思路或框架,并检查流程设计。

3.代码实现。

4.程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。

5.设计小结(包括)

课程设计题目:

目标

本软件是一个实用聊天程序。项目要实现以下目标:

1)允许用户注册;

2)允许注册用户登录聊天室;

3)登录用户之间进行聊天文件传输;

4)用户可以更改背景音乐;

用户信息的保存

本软件只是一个聊天室程序,所以用户只要打开程序就可以登录。本软件使用文本文件或者数据库来保存用户数据。

需求分析

对功能的规定

1.系统的用例图(对注册用户)

2.用户注册过程

3.用户登录过程

对性能的规定

由于本软件只是一个聊天室程序,程序只是提供用户之间的聊天和文件传输,故对网络传输数据要求不是很高,只要正常的传输速度就可以了。

需要管理的数据

用户的信息如下:用户名,密码,头像,电子邮件,地址。

4 开发环境

本软件采用Java语言编写,Java语言是一种跨平台的编程语言,所以本软件对操作系统没有特别的要求。而网络传输方面采用TCP/IP网络传输协议或者是RMI。

总体设计思路

系统主要包含两个java文件,Server.java和UserLogin.java

图形界面主要通过\\org\netbeans\lib\awtextra目录下的两个类:AbsoluteConstraints.class和AbsoluteLayout.class来控制。

启动系统通过依次点击批处理文件:1.bat,2.bat

Server.java中包含:

其中Server类又包括如下类和方法:

UserLogin.java包括:

其中UserLogin类又包括如下类和方法:

而UserLoginWindow类又包含如下事件和方法:

系统为C/S模式。首先根据功能模块将系统分为两部分:服务端(Server)和客户端(UserLogin)。然后构造可以序列化的User类,这是本系统的对象。根据需求功能细分类和方法。建立文件和网络的传输通信。实现聊天室的基本功能

具体设计

代码:

//server.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import https://www.doczj.com/doc/245825735.html,.*;

import java.io.*;

import java.util.*;

//用户信息

class User implements Serializable

{

String UserName;

String UserPassword;

String UserHeadPhoto;

String UserEmail;

String UserAge;

String SinkName;

String FileName;

byte FileData[];

String Message;

String Command;

Vector vectorUserList;

}

public class Server extends JFrame

{

static Vector vectorStreamToUser=new Vector(1,1);

static Vector vectorUserList=new Vector(1,1);

private ServerSocket serverSocket;

private JMenuItem aboutMenuItem;

private JMenu commandMenu;

private JMenu fileMenu;

private JMenu helpMenu;

private JMenuItem helpMenuItem;

private JLabel jLabel1;

private JLabel jLabel2;

private JLabel jLabel3;

private JLabel jLabel4;

private JLabel jLabel5;

private JList jList1;

private JPanel jPanel1;

private JScrollPane jScrollPane1;

private JMenuItem warnMenuItem;

private JMenuItem kickMenuItem;

private JMenuBar menuBar;

private JMenuItem msgMenuItem;

private JMenuItem startMenuItem;

private JMenuItem stopMenuItem;

//右键事件菜单

private static JPopupMenu menu;

private String BlackList;

//建立server框架

public Server()

{

initComponents();

}

private void initComponents()

{

jPanel1 = new JPanel();

jLabel2 = new JLabel();

jLabel3 = new JLabel();

jLabel4 = new JLabel();

jLabel5 = new JLabel();

jScrollPane1 = new JScrollPane();

jList1 = new JList();

jLabel1 = new JLabel();

menuBar = new JMenuBar();

fileMenu = new JMenu();

startMenuItem = new JMenuItem();

stopMenuItem = new JMenuItem();

commandMenu = new JMenu();

warnMenuItem = new JMenuItem();

kickMenuItem = new JMenuItem();

msgMenuItem = new JMenuItem();

helpMenu = new JMenu();

helpMenuItem = new JMenuItem();

aboutMenuItem = new JMenuItem();

getContentPane().setLayout(new

https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteLayout());

setTitle("DaoDao2009服务器端");

setResizable(false);//用户不能手动调整列宽度。

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent evt) {

exitForm(evt);

}

});

jPanel1.setLayout(new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteLayout()); try

{

//建立InetAddress对象

InetAddress intel=InetAddress.getLocalHost();

String SerName=intel.getHostName();

String SerIp=intel.getHostAddress();

jLabel2.setText(" 服务器名:"+SerName); //显示服务器端主机名

jLabel3.setText("服务器IP:"+SerIp); //显示服务器端IP

}

catch(UnknownHostException e2)

{

System.out.println("发生错误!");

}

jLabel2.setForeground(new Color(255,0,0));

jLabel2.setFont(new Font("宋体", 0, 14));

jPanel1.add(jLabel2, new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteConstraints(20, 10, -1, -1));

jLabel3.setForeground(new Color(255, 0, 0));

jLabel3.setFont(new Font("宋体", 0, 14));

jPanel1.add(jLabel3, new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteConstraints(20, 30, -1, -1));

jLabel4.setText("服务器状态:未启动");

jLabel4.setForeground(new Color(255, 255, 0));

jLabel4.setFont(new Font("宋体", 0, 14));

jPanel1.add(jLabel4, new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteConstraints(20, 240, -1, -1));

jLabel5.setText("共有:0个客户在线");

jLabel5.setForeground(new Color(255, 255, 51));

jLabel5.setFont(new Font("宋体", 0, 14));

jPanel1.add(jLabel5, new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteConstraints(250, 240, -1, -1));

menu = new JPopupMenu(); //右键事件菜单

JMenuItem Admonition= new JMenuItem("警告");

Admonition.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

int state=JOptionPane.showOptionDialog(null,"确实要警告用户"+BlackList+"吗?","确认",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);

if(state==JOptionPane.OK_OPTION)

{

warnMenuItemActionPerformed(e);

}

}

});

JMenuItem Delete = new JMenuItem("删除");

Delete.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

int state=JOptionPane.showOptionDialog(null,"确实要删除用户"+BlackList+"吗?","确认",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);

if(state==JOptionPane.OK_OPTION)

{

kickMenuItemActionPerformed(e);

}

}

});

menu.add(Admonition);

menu.add(Delete);

jList1.setModel(new AbstractListModel() {

String[] strings = {};

public int getSize() { return strings.length; }

public Object getElementAt(int i) { return strings[i]; }

});

jList1.setFont(new Font("Dialog",Font.BOLD | Font.ITALIC, 16));

jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

jList1.addMouseListener(new MouseAdapter()

{

public void mousePressed(MouseEvent evt)

{

if (evt.getClickCount()==1)

{

BlackList=(String)jList1.getSelectedValue();

}

}

public void mouseReleased(MouseEvent evt)

{

if (evt.isPopupTrigger())

{

menu.show(evt.getComponent(), evt.getX(), evt.getY());

}

}

});

jScrollPane1.setViewportView(jList1);

jPanel1.add(jScrollPane1, new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteConstraints(20, 45, 362, 190));

jLabel1.setIcon(new ImageIcon("img\\Server.jpg"));

jPanel1.add(jLabel1, new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteConstraints(0, -10, -1, -1));

getContentPane().add(jPanel1, new https://www.doczj.com/doc/245825735.html,beans.lib.awtextra.AbsoluteConstraints(0, 0, 400, 270));

menuBar.setBorder(null);

menuBar.setBackground(new Color(0, 0, 0));

fileMenu.setForeground(new Color(255, 255, 255));

fileMenu.setText("文件");

fileMenu.setBackground(new Color(0, 0, 0));

fileMenu.setFont(new Font("宋体", 0, 14));

startMenuItem.setForeground(new Color(255, 255, 255));

startMenuItem.setFont(new Font("宋体", 0, 14));

startMenuItem.setText("启动");

startMenuItem.setBackground(new Color(0, 0, 0));

startMenuItem.setBorder(null);

startMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

startMenuItemActionPerformed(evt);

}

});

fileMenu.add(startMenuItem);

stopMenuItem.setForeground(new Color(255, 255, 255));

stopMenuItem.setFont(new Font("宋体", 0, 14));

stopMenuItem.setText("结束");

stopMenuItem.setBackground(new Color(0, 0, 0));

stopMenuItem.setBorder(null);

stopMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

stopMenuItemActionPerformed(evt);

}

});

fileMenu.add(stopMenuItem);

menuBar.add(fileMenu);

commandMenu.setForeground(new Color(255, 255, 255));

commandMenu.setText("命令");

commandMenu.setBackground(new Color(0, 0, 0));

commandMenu.setFont(new Font("宋体", 0, 14));

msgMenuItem.setForeground(new Color(255, 255, 255));

msgMenuItem.setFont(new Font("宋体", 0, 14));

msgMenuItem.setText("公告");

msgMenuItem.setBackground(new Color(0, 0, 0));

msgMenuItem.setBorder(null);

msgMenuItem.addActionListener(new ActionListener() {

msgMenuItemActionPerformed(evt);

}

});

commandMenu.add(msgMenuItem);

warnMenuItem.setForeground(new Color(255, 255, 255)); warnMenuItem.setFont(new Font("宋体", 0, 14));

warnMenuItem.setText("警告");

warnMenuItem.setBackground(new Color(0, 0, 0));

warnMenuItem.setBorder(null);

warnMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {

warnMenuItemActionPerformed(evt);

}

});

commandMenu.add(warnMenuItem);

kickMenuItem.setForeground(new Color(255, 255, 255)); kickMenuItem.setFont(new Font("宋体", 0, 14));

kickMenuItem.setText("踢人");

kickMenuItem.setBackground(new Color(0, 0, 0));

kickMenuItem.setBorder(null);

kickMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {

kickMenuItemActionPerformed(evt);

}

});

commandMenu.add(kickMenuItem);

menuBar.add(commandMenu);

helpMenu.setForeground(new Color(255, 255, 255));

helpMenu.setText("帮助");

helpMenu.setBackground(new Color(0, 0, 0));

helpMenu.setFont(new Font("宋体", 0, 14));

helpMenu.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

helpMenuActionPerformed(evt);

}

});

helpMenuItem.setForeground(new Color(255, 255, 255)); helpMenuItem.setFont(new Font("宋体", 0, 14));

helpMenuItem.setText("帮助主题");

helpMenuItem.setBackground(new Color(0, 0, 0));

helpMenuItem.setBorder(null);

helpMenuItem.addActionListener(new ActionListener() {

helpMenuItemActionPerformed(evt);

}

});

helpMenu.add(helpMenuItem);

aboutMenuItem.setForeground(new Color(255, 255, 255));

aboutMenuItem.setFont(new Font("宋体", 0, 14));

aboutMenuItem.setText("关于");

aboutMenuItem.setBackground(new Color(0, 0, 0));

aboutMenuItem.setBorder(null);

aboutMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

aboutMenuItemActionPerformed(evt);

}

});

helpMenu.add(aboutMenuItem);

menuBar.add(helpMenu);

setJMenuBar(menuBar);

pack();

}

public static void main(String args[]) //主函数

{

new Server().show();

}

class connection extends Thread

{

private User fromUserMessage=new User();

private User toUserMessage=new User();

private Socket netUser;

private ObjectInputStream streamFromUser;

private ObjectOutputStream streamToUser;

private boolean existName,existPassword;

private String onlineNumber="Immovability";//判断在线人数的变化

public connection(Socket UserSocket)

{

netUser=UserSocket;

try

{

streamFromUser = new ObjectInputStream(netUser.getInputStream());

streamToUser = new ObjectOutputStream(netUser.getOutputStream());

}

catch(IOException e)

{

try

{

netUser.close();

}

catch(IOException e1)

{

System.out.print("Unable to set up stream"+e1);

return;

}

}

this.start();

}

public boolean validateName(String name)

{

boolean validate;

String recode,message;

RandomAccessFile logfile;

FileInputStream fsread;

InputStreamReader inputread;

BufferedReader bfread;

validate=false;

try

{

fsread=new FileInputStream("User.txt");

inputread=new InputStreamReader(fsread);

bfread=new BufferedReader(inputread);

while((recode=bfread.readLine()) != null)//验证用户信息

{

StringTokenizer st = new StringTokenizer(recode,":"); while (st.hasMoreTokens())

{

message=st.nextToken();

if(message.equals(name))

{

validate=true;

break;

}

break;

}

}

}

catch(FileNotFoundException e)

{

System.out.println("The specified file does not exist"); }

catch(IOException e)

{

System.out.println("Error performing IO Operation");

}

return validate;

}

public boolean validatePassword(String password)

{

boolean validate;

String recode,message;

RandomAccessFile logfile;

FileInputStream fsread;

InputStreamReader inputread;

BufferedReader bfread;

validate=false;

try

{

fsread=new FileInputStream("User.txt");

inputread=new InputStreamReader(fsread);

bfread=new BufferedReader(inputread);

while((recode=bfread.readLine()) != null)//验证用户信息

{

StringTokenizer st = new StringTokenizer(recode,":"); while (st.hasMoreTokens())

{

message=st.nextToken();

message=st.nextToken();

if(message.equals(password))

{

validate=true;

break;

}

break;

}

}

}

catch(FileNotFoundException e)

{

System.out.println("The specified file does not exist"); }

catch(IOException e)

{

System.out.println("Error performing IO Operation");

}

return validate;

}

public void run()

{

try

{

for(;;)

{

String ButtonMessage;

fromUserMessage=(User)streamFromUser.readObject();//读用户信息

ButtonMessage=https://www.doczj.com/doc/245825735.html,mand; //读按钮信息

existName=validateName(https://www.doczj.com/doc/245825735.html,erName); //验证用户名

existPassword=validatePassword(https://www.doczj.com/doc/245825735.html,erPassword);//验证用户密码

if(ButtonMessage.equals("Login"))

{

Login();

}

if(ButtonMessage.equals("Enter"))

{

Enter();

}

if(ButtonMessage.equals("Leave"))

{

Leave();

}

if(!onlineNumber.equals("Immovability"))

{

Updating(https://www.doczj.com/doc/245825735.html,erName);

}

if(ButtonMessage.equals("PublicChat") || ButtonMessage.equals("PrivateChat"))

{

Message();

}

if(ButtonMessage.equals("Request") || ButtonMessage.equals("FileCopy"))

{

toSinkMessage();

}

if(ButtonMessage.equals("Agree") || ButtonMessage.equals("Refuse") || ButtonMessage.equals("Succeed"))

{

toUserMessage();

}

}

}

catch(IOException e){}

catch(ClassNotFoundException e){}

try

{

streamFromUser.close();

streamToUser.close();

netUser.close();

}

catch(IOException e){}

}

public void Login()//注册请求处理

{

try

{

if(existName)

{

https://www.doczj.com/doc/245825735.html,mand="Repeat";

streamToUser.writeObject((User)toUserMessage); //返回操作

信息

streamToUser.flush();

}

else

{

//加入新用户信息

RandomAccessFile UserObj=new RandomAccessFile("User.txt","rw");

UserObj.seek(UserObj.length());

UserObj.writeBytes(https://www.doczj.com/doc/245825735.html,erName+":"+https://www.doczj.com/doc/245825735.html,erPassword+ ":"

+https://www.doczj.com/doc/245825735.html,erHeadPhoto+":"+https://www.doczj.com/doc/245825735.html,erEmail+":"+fromUserMess

https://www.doczj.com/doc/245825735.html,erAge+"\n");

onlineNumber="add";

https://www.doczj.com/doc/245825735.html,mand="Login";

https://www.doczj.com/doc/245825735.html,erName=https://www.doczj.com/doc/245825735.html,erName;

toUserMessage.Message="系统消息:大家欢迎

"+https://www.doczj.com/doc/245825735.html,erName+"加入我们的DaoDao聊天室!!!"+"\n";

Server.vectorUserList.addElement(https://www.doczj.com/doc/245825735.html,erName);//加入用户到用户在线列

toUserMessage.vectorUserList=Server.vectorUserList;

streamToUser.writeObject((User)toUserMessage);//返回用户

在线列表和操作信息

streamToUser.flush();

Server.vectorStreamToUser.addElement(streamToUser);//存储

该对象的输出流

jLabel5.setText("共有:"+Server.vectorUserList.size()+"个

客户在线");//服务器刷新

jList1.setListData(Server.vectorUserList);

Java程序设计-实验报告1-模板 (1)

实验报告 课程名称Java程序设计 实验项目实验一类和对象 系别_________计算机_________ 专业/班级_______计算机类/1402______ 姓名_____李馨雪________ 实验日期______2015.10.10______ 成绩_______________________ 指导教师

一、实验题目:实验一类和对象 二、实验内容: (1)用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。 1)PC类与CPU类和HardDisk类关联的UML图如图所示。 其中,CPU类要求getSpeed()返回speed的值,setSpeed(int m)方法 将参数m的值赋值给speed。 HardDisk类要求getAmount()返回amount的值,setAmount(int m)方 法将参数m的值赋值给amount。 PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk (HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示 cpu的速度和硬盘的容量。 2)主类Test的要求 main()方法中创建一个CPU对象cpu,其speed设置为2200; main()方法中创建一个HardDisk对象disk,其amount设置为200; main()方法中创建一个PC对象pc, pc调用setCPU方法,实参是cpu;调用setHardDisk方法,实参是 disk;调用show方法。 (2)设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下: 1)编写接口Animal,有2个抽象方法cry()和getAnimaName(); 2)编写模拟器类Simulator,该类有一个playSound(Animal animal)方法,其形参是Animal类型,可以调用实现Animal接口的类所重写的cry()方法播放具体动物的声音,调用重写方法显示动物种类的名称; 3)编写实现Animal接口的Dog类和Cat类。具体的UML图如下所示:4)编写主类Application,其main方法中至少包含如下代码: Simulator si=new Simulator();

java实验报告完整版

实验报告 (计算机与信息工程学院实验中心) 学期: 2014-2015 课程名称:《Java程序设计实验》 班级:信息1202 姓名:方逸梅 学号: 31 指导老师:费玉莲

《Java程序设计》 独立实验教学安排 一、实验的教学方式、安排及实验环境 (一)教学方式 对照本课程的实验教材,实验一至实验十一,由教师提示实验原理、方法、步骤等内容,在教师的指导下,学生独立完成程序设计及调试工作。实验十二的内容由学生自行设计完成。 (二)教学安排 学时数:30课时 学时安排:每次实验3学时,从学期第五周开始,共十次上机实验。 (三)实验环境 实验环境为JDK 。 (四)具体安排 地点:信息大楼实验室。 辅导:每个班次一名辅导老师,原则上由任课老师担任。 登记:实验完成,由辅导老师登记实验纪录。 学生:实验做完,完成实验报告内容,并在学期末上交实验册。 老师:批改实验,成绩与平时成绩一起占期末的30%。 二、实验的具体内容和要求 见实验报告。

浙江工商大学 计算机与信息工程学院实验报告(1)日期:地点:成绩: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 实验目的、实验原理和内容: 一、实验目的:熟悉Java开发环境及简单程序Java设计。 二、实验原理:SDK 的下载与安装,设置环境变量,安装java 虚拟机,使用Eclipse,编译Java 源程序,运行Java 程序。 三、实验内容及要求: 1.下载、安装并设置Java SDK 软件包。 2.熟悉Eclipse 编辑软件。 3.掌握运行Java 程序的步骤。 4.分别编写Application和Applet程序,显示字符串”Hello Java!欢迎使用!”。 要求:请同学把预备知识、步骤、程序框图、调试好的程序及存在的问题写在下面(不够可以附页)。 程序一 public class hello { public static void main(String[] args) { for(int i=0;i<=4;i++) { "Hello java! 欢迎使用!"); } }

java课程设计实验报告

一实验目的 加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。在对Java 程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。 二、实验要求 (1)问题描述准确、规范; (2)程序结构合理,调试数据准确、有代表性; (3)界面布局整齐,人机交互方便; (4)输出结果正确; (5)正确撰写实验报告。 三、设计内容 1、计算器 计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。 2、文本编辑器 可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其他功能参照windows的文本编辑器。

四.实验步骤 (1)上机实验之前,为课程设计的内容作好充分准备。对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。 (2)按照实验目的和实验内容进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。 (3)根据实验结果,写出实验报告。 五. 源代码及运行结果 1.计算器源代码 import .*; import .*; import .*; public class jisuanqi extends WindowAdapter { , "=", "+","n!" ,"关闭" }; static double a, sum=1; static String s, str ;rame(); } public void frame() { etBackground; txt = new TextField(""); (false);ddActionListener(new buttonlistener());ddActionListener(new close()); (this); (new BorderLayout());.计算器运行界面(1)计算器主界面

java设计模式结课论文

论文 2012 — 2013学年第 2 学期 论文题目备忘录模式 学生姓名 学号 专业班级 指导教师 2013 年7 月 1 日

备忘录模式 1.备忘录模式概述 对象的状态依赖于它的变量的取值情况,对象在程序运行期间的各个时刻可能具有不同的状态。在某些应用中,程序可能需要使用一种合理的方式来保存对象在某一时刻的状态,以便在需要时,对象能恢复原先保存的状态。在备忘录模式中,称需要保存状态的对象为“原发者”,称负责保存原发者可以访问备忘录中的细节,即可以访问备忘录中的数据,以便恢复原发者的状态,而负责人只能保存和得到备忘录,但访问备忘录中的数据收到一定的限制。备忘录模式使原发者可以将自己的状态暴露内部数据的同时,又保证了数据的封装性。另外,经过精心设计的备忘录通过保存原发者状态中最本质的数据,就能使原发者根据此备忘录中的数据恢复原始状态。 2.备忘录模式的定义 备忘录模式是关于怎样保存对象状态的成熟模式,其关键是提供一个备忘录对象,该备忘录负责存储一个对象的状态,程序可以在磁盘或内存中保存这个备忘录,这样以后就可将该对象恢复到原先保存的状态。 3. 备忘录模式的结构和使用 3.1备忘录模式包括三种角色:

原发者(Originator):需要在某个时刻保存其状态的对象。原发者负责创建备忘录,比如使用createMemento()方法创建一个备忘录,然后原发者该备忘录记录自己的状态。当原发者需要恢复某个时刻的状态是,它通过获得相应的备忘录中的数据来恢复那个时刻的状态,比如原发者调用restoreFromMemento(Memento mem)方法,并通过参数men制定的备忘录恢复状态。 备忘录(Memento):负责存储原发者状态的对象,创建备忘录的类和创建原发者的类在同一个包中,该类提供的访问数据的方法都是友好方法,是的只有和原发者在同一个包中的类的实例才可以访问备忘录中的数据。 负责人(Caretaker):负责管理保存备忘录的对象。负责人如果不和原发者在同一个包中,就不能对备忘录中的内容进行修改或读取。如果需要将备忘录保存到磁盘,负责人可以使用对象流将备忘录写入文件。 3.2备忘录模式的UML类图 备忘录模式的类图如图所示,备忘录模式中原发者角色,Recoder 类的实例是备忘录(Menmento)角色,SaveRecoder类的实例是负责人(Caretaker)角色。

Java程序设计实验报告分析

学生实验报告 (理工类) 课程名称: JAVA程序设计专业班级: 13电子信息工程(2)学生学号: 1305102056 学生姓名:许伟铭 所属院部:软件工程学院指导教师:王倩倩 20 15 ——20 16 学年第 2 学期 金陵科技学院教务处制

实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:JAVA编程基础实验学时: 4 同组学生姓名:————实验地点: 1514/A203 实验日期: 2016.04.08 实验成绩: 批改教师:王倩倩批改时间:

一、实验目的和要求 (1)熟练掌握JDK1.7及Eclipse Kepler Service Release 1(下简称Eclipse)编写调试Java应用程序及Java小程序的方法; (2)熟练掌握Java应用程序的结构; (3)了解Java语言的特点,基本语句、运算符及表达式的使用方法; (4)熟练掌握常见数据类型的使用; (5)熟练掌握if-else、switch、while、do-while、for、continue、break、return 语句的使用方法; (6)熟练掌握数组和字符串的使用; (7)调试程序要记录调试过程中出现的问题及解决办法; (8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验; (9)做完实验后给出本实验的实验报告。 二、实验仪器和设备 奔腾以上计算机,Windows 操作系统,装有JDK1.7和Eclipse软件。 三、实验过程 (1)分别使用JDK命令行和Eclipse编译运行Java应用程序。记录操作过程。 Java应用程序参考如下: 思考:1. 适当添加注释信息,通过javadoc生成注释文档; 2. 为主方法传递参数“Hello world”字符串,并输出; 3. 压缩生成".jar"文件。 (2)分别使用JDK命令行和Eclipse编译Java Applet,并建立HTML文档运行该Applet。 记录操作过程。 Java小应用程序参考如下:

JAVA程序设计实验报告格式

《JA V A程序设计》实验报告 题目JAVA基础实战——Bank项目 专业及班级计算机科学与技术120?班 姓名________ ______ _____ __ _ 学号_________ __ _____ 指导教师_____ 孙艺珍____ __________ 日期____________2014年11月_____ __

一、实验目的 《Bank项目》以银行业务为背景,由8 组由浅入深的模块构成,通过实验,可以对面向对象的封装性、构造器、引用类型的成员变量、异构数组、继承、多态、方法的重载、方法的重写、包装类、单例模式、异常、集合等技术有更深刻的理解。 二、实验内容: 可以完成银行业务中的基本操作:添加客户,创建异构账户、储蓄卡业务(存钱、取钱)和信用卡业务(包括透支保护等)业务。 三、实验原理 该项目包含Bank、Customer、Account、SavingsAccount、CheckingAccount、OverdraftException、CustomerReport、TestBanking 等8 个类构成,Bank 和Customer、Customer 和Account(SavingsAccount、CheckingAccount)、CheckingAccount 和OverdraftException、CustomerReport 和Bank 及TestBanking 之间以方法参数、成员变量的方式建立引用、依赖关系。 (可以写一下实验过程的思路和采用的技术) 四、实验过程与结果 一些业务逻辑的流程图以及实现的结果 五、分析与讨论 对于实验结果的讨论,对于异常的分析,对于未来功能扩展的设想等等

JAVA聊天室系统的设计与实现

目录 第1章绪论- 1 - 1.1论文背景及课题来源 (1) 1.2本课题在国内外的发展状况 (1) 1.3应解决的问题及系统开发意义 (1) 第2章开发工具及相关技术介绍........................................................................................................... - 2 - 2.1J A V A与S OCKET简介 .. (2) 2.2JB UILDER5介绍 (3) 2.3C/S模型介绍 (3) 2.4用J A V A实现S OCKET模型 (4) 2.5J A V A中的线程模型简介 (5) 2.6SQL SERVER2000简介 (5) 第3章系统需求分析............................................................................................................................... - 6 - 3.1系统任务描述. (6) 3.2系统功能分析 (6) 3.2.1 系统的功能需求....................................................................................................................... - 6 - 3.2.2系统数据流图............................................................................................................................ - 7 - 3.2.3系统数据分析............................................................................................................................ - 8 - 3.3系统可行性分析 (9) 第4章系统设计 .................................................................................................................................... - 11 - 4.1系统总体结构设计 (11) 4.2数据库设计 (12) 4.3系统功能模块详细设计 (13) 第5章编码与实现 ................................................................................................................................ - 16 - 5.1系统主要模块代码 (16) 5.1.1启动、停止服务器.................................................................................................................. - 16 - 5.1.2客户端连接服务器.................................................................................................................. - 17 -

Java程序设计基础实验报告

Java程序设计基础实验报告50—53 实验50 FileInputStream类的应用 实验目的: 1.学习FileInputStream类的语法格式 2.学习FileInputStream类的使用 实验要求 编写一个Java程序,在main()中生成FileInputStream的一个实例,使它能打开文件myfile.txt,并能够把文件内容显示在屏幕上。 程序运行效果:如图所示 程序模板:package https://www.doczj.com/doc/245825735.html,.tt; import java.io.*; class ShowFile { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub int i; FileInputStream fin; fin=new FileInputStream("d:\\myfile.txt"); do{ i=fin.read(); if(i!=-1) System.out.print((char)i); }while(i!=-1); fin.close(); } }

实验51 FileOutputStream类的应用 实验目的: 3.学习FileOutputStream类的语法格式 4.学习FileOutputStream类的使用 实验要求:编写一个Java程序,把文件myfile.txt复制到youfile.txt文件中。 程序运行效果:如图所示 程序模板:package https://www.doczj.com/doc/245825735.html,.tt; import java.io.*; class CopyFile { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub int i; FileInputStream fin; FileOutputStream fout; fin=new FileInputStream("d:\\myfile.txt"); fout=new FileOutputStream("d:\\yourfile.txt"); do{ i=fin.read(); if(i!=-1) fout.write(i); }while(i!=-1); fin.close(); fout.close(); System.out.print("myfile.txt内容已经被复制到yourfile.txt文件中"); } }

java课程设计报告(java聊天室)

Java聊天室课程设计 一、需求分析 1.1开发背景 在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。 1.2设计要求 本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。 1.3设计目的 通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。能将相关的只是运用到相关的实践中去。 1.4功能实现 聊天室共分为客户端和服务端两部分,服务器程序主要负责侦听客户端发来的消息,客户端需要登录到相应的服务器才可以实现正常的聊天功能。 服务器的主要功能有 1)在特定端口上进行侦听,等待客户连接 2)用户可以配置服务器的真挺端口

JAVA聊天室实验报告

JA V A聊天室实验报告 姓名:马琳越 班级:131114 学号:13111368 日期:2014年4月23日

目录 目录 (2) JA V A程序课程设计任务书 (3) 摘要 (4) 第1章引言 (5) 第2章聊天室系统的设计 (7) 第3章界面设计 (11) 第4章总结 .................................................................................. 错误!未定义书签。

Java聊天室的设计任务书 1.主要内容 用JA V A实现基于C/S模式的聊天室系统。聊天室分为服务器端和客户端部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。 2.具体要求 A.服务器端主要功能 (1).在特定端口上进行侦听,等待客户端连接。 (2).用户可以配置服务器端的侦听端口,默认端口为8888。 (3).向已经连接到服务器端的用户发送系统消息。 B. 客户端主要功能 (1).连接到已经开启聊天服务的服务器端。 (2).用户可以配置要连接的服务器端的IP地址和端口号。 (3).用户可以配置连接后显示的用户名。 (4).用户可以向所有人或某一个人发送消息。 3.主要参考文献及运用工具 (1)Bruce Eckel 著Thinking in Java ,李刚著疯狂Java讲义 (2)使用技术:Java 使用开发工具:Eclipse

摘要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次大作业要求使用Java编写一个聊天系统。 一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,但是,由于自己数据库知识的部分遗忘,本程序未连接数据库,采用客户机/服务器架构模式,通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信。 本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

java实验报告(全)

学生学号0120910680526 实验课成绩 武汉理工大学 学生实验报告书 实验课程名称软件工具与环境 开课学院计算机科学与技术学院 指导老师姓名付国江 学生姓名 学生专业班级软件工程0905 2011— 2012学年第1学期

实验课程名称: java语言程序设计 实验项目名称JDK安装与配置、简单的程序编写实验成绩 实验者专业班级软件0905 组别 同组者实验日期年月日第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 实验目的: 熟悉JDK的安装、配置和使用,掌握Java Application程序的基本结构。 实验内容: (1)安装JDK,并练习设置JAVA_HOME、path和classpath环境变量; (2)编写一个打印出”HelloWorld”的Java Application程序,并编译运行; 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或 者算法描述) (1)jdk的安装 (2)”HelloWorld”的编译运行 三、主要仪器设备及耗材 个人计算机,jdk 第二部分:实验调试与结果分析(可加页) 一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)(1)jdk的安装步骤: 1:双击jdk-6u10-windows-i586.exe安装文件 2:点击接受 3:点击下一步 4:选择JRE路径 5:点击下一步 6:完成 配置环境变量: 1:右键我的电脑,找到属性,高级中的环境变量 2:点击环境变量:3:系统变量针对所有用户,这里找到系统变量中的Path 点击编辑: 3:系统变量针对所有用户,这里找到系统变量中的Path 点击编辑: 4:在变量值末尾打上分号分隔,加入JDK库路径。 点击确定,完成! 5:变量配置好后。 6:测试环境是否好 在控制台中 输入javac指令,能显示参数,说明成功。

Java程序设计大作业实验报告

目录 一、前言 (2) 二、需求分析 (3) 三、系统总体设计 (3) 3.1系统总体设计系统思路 (3) 3.2数据库设计 (4) 3.2.1 login1表的设计和数据 (4) 3.2.2 student表的设计和数据 (5) 3.2.3 course表的设计和数据 (5) 3.2.4 score表的设计和数据 (5) 3.3系统功能模块设计 (6) 四、系统详细设计 (7) 4.1登录模块 (7) 4.2 学生模块 (7) 4.3 教师模块 (7) 4.4 管理员模块 (8) 五、系统测试及运行结果 (9) 5.1 主界面 (9) 5.2 学生管理中心界面 (9) 5.3 教师管理中心界面 (10) 5.4 管理员管理中心界面 (10)

5.5 查询课表界面 (11) 5.6 查询成绩界面 (11) 5.7 查询教学情况界面 (11) 5.8 查询所有学生成绩界面 (12) 5.9 学生信息管理界面 (12) 5.10 学生成绩管理界面 (13) 5.11 用户管理界面 (13) 六、实验总结 (14) 七、参考文献 (14) 一、前言 随着计算机在人们生活中的普及和网络时代的来临,对信息的要求日益增加,学生信息管理业务受到了较为强烈的冲击,传统的手工管理方式传统的手工管理方式已不能适应现在的信息化社会。如何利用现有的先进计算机技术来解决学生信息管理成为当下的一个重要问题,学生信息管理系统是典型的信息管理系统,其开发主要就是针对前台的页面展示以及后台数据的管理。对于前者,要求应用程序功

能完备,易于使用,界面简单;而对于后者,则要求数据库具有一致性、完整性,并能够依据前台的操作来对应操作后台数据库达到一定的安全性。 本学生信息管理系统主要采用的纯JAVA代码实现图形界面系统的开发,以及数据库知识进行数据的查询,删除,插入和更新。本系统主要分为三个部分:学生模块、教师模块、管理员模块。其中学生模块实现的功能:查询课表信息和查询成绩。教师模块实现的功能:查询课表信息、查询教学情况和查询所有学生的各科成绩。管理员模块实现的功能:课表信息的管理、学生信息管理、学生成绩管理和用户信息管理。 二、需求分析 用JAVA语言实现学生信息管理系统的图形界面的编程。主要实现以下几个重要功能: ①实现三种不同身份(学生、教师、管理员)登录学生信息管理系统。(其中的数据信息保存在数据库中)

java实验报告完整版

实验报告 (计算机与信息工程学院实验中心) 学期: 2014-2015 课程名称: 《Java程序设计实验》 班级: 信息1202 姓名: 方逸梅 学号: 1212100231 指导老师: 费玉莲 《Java程序设计》 独立实验教学安排 一、实验的教学方式、安排及实验环境 (一)教学方式 对照本课程的实验教材,实验一至实验十一,由教师提示实验原理、方法、步骤等内容,在教师的指导下,学生独立完成程序设计及调试工作。实验十二的内容由学生自行设计完成。 (二)教学安排 学时数:30课时 学时安排:每次实验3学时,从学期第五周开始,共十次上机实验。 (三)实验环境 实验环境为JDK 1、6。

(四)具体安排 地点:信息大楼实验室。 辅导:每个班次一名辅导老师,原则上由任课老师担任。 登记:实验完成,由辅导老师登记实验纪录。 学生:实验做完,完成实验报告内容,并在学期末上交实验册。 老师:批改实验,成绩与平时成绩一起占期末的30%。 二、实验的具体内容与要求 见实验报告。

浙江工商大学 计算机与信息工程学院实验报告(1)日期:地点:成绩: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━实验目的、实验原理与内容: 一、实验目的:熟悉Java开发环境及简单程序Java设计。 二、实验原理:SDK 的下载与安装,设置环境变量,安装java 虚拟机,使用Eclipse,编译Java 源程序,运行Java 程序。 三、实验内容及要求: 1. 下载、安装并设置Java SDK 软件包。 2. 熟悉Eclipse编辑软件。 3.掌握运行Java 程序的步骤。 4.分别编写Application与Applet程序,显示字符串”Hello Java!欢迎使用!”。 要求:请同学把预备知识、步骤、程序框图、调试好的程序及存在的问题写在下面(不够可以附页)。 程序一 public class hello { public static void main(String[] args) { for(int i=0;i<=4;i++) { System、out、println("Hello java! 欢迎使用!"); } } } 结果示意图1

Java程序的设计实验报告

信息科学与工程学院 课程设计 题目:图书管理系统 姓名:晓雨颖 学号: 201312140115 201312140120 班级: 13级本科四班物联网 课程: Java程序设计 任课教师梦琳 2014年12月20日

课程设计任务书及成绩评定

目录 1前言 (3) 1.1设计目的 (4) 1.2设计任务 (4) 1.3运行环境 (4) 2总体设计 (5) 2.1设计原理............................................. 错误!未定义书签。3详细设计实现.. (5) 3.1 代码 (5) 3.2 登陆后事件处理 (12) 4心得体会................................................ 错误!未定义书签。

1前言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发容和软硬件环境等因素来选择一种合适的开发 工具。

JAVA简单画板程序设计实验报告

J A V A简单画板程序设计 实验报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。 设计思想: 1.进行界面设计 2.进行算法实现 3.运行调试 4.总结问题 设计过程: A.界面设计 B.新建一个Jframe容器,然后定义一个panel( Panel convas2), convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。 add(canvas2,; Panel canvas2 = new Panel(); 添加工具按键 Panel canvas2 = new Panel(); Button btn1 = new Button("直线"); Button btn2 = new Button("椭圆"); Button btn3 = new Button("矩形"); Button btn4 = new Button("清除");

Button btn5 = new Button("画笔"); Button btn6 = new Button("橡皮"); Choice choice = new Choice(); Choice choice1 = new Choice(); (choice); (choice1); (btn1); (btn2); (btn3); (btn4); (btn5); (btn6); 在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。 1.画笔的大小: ("1"); ("3"); ("5"); ("7"); ("9"); 2.画笔颜色

设计模式实验报告

太原师范学院 实验报告 Experimentation Report of Taiyuan teachers College 系部计算机系年级课程设计模式实训教程 姓名学号日期2018.03.03 项目 Factory Method设计模式 一、实验目的 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 框架使用抽象类定义和维护对象之间的关系。这些对象的创建通常也由框架负责。考虑这样一个应用框架,它可以向用户显示多个文档。在这个框架中,两个主要的抽象是类Application和Document。这两个类都是抽象的,客户必须通过它们的子类来做与具体应用相关的实现。 二、实验原理 试验要求包含典型的 Factory Method结构。 程序能够明确表达设计思想。 三、实验仪器及材料 操作系统: Windows,linux; 开发工具: VC; Java,C# 四、实验方法 设计一个Factory Method案例并实现,并撰写设计报告。

五、实验记录及数据处理 interface Log{ public void writeLog(); } //文件日志记录器:具体产品 class FileLog implements Log{ @Override public void writeLog() { System.out.println("文件日志记录。"); } } //数据库日志记录器:具体产品 class DatebaseLog implements Log{ @Override public void writeLog() { System.out.println("数据库日志记录。"); } } //日志记录器工厂接口:抽象工厂 interface LogFactory{ public Log createLog(); } //文件日志记录器工厂类:具体工厂 class FileLogFactory implements LogFactory{ @Override public Log createLog() { return new FileLog(); } } //数据库日志记录器工厂类:具体工厂 class DatabaseLogFactory implements LogFactory{ @Override public Log createLog() {

《JAVA程序设计》实验报告

福建师范大学协和学院本科实验报告 课程名称:JA V A程序设计 系别:信息技术系 专业:计算机科学与技术 班级: 学号: 姓名: 2013年

实验项目列表

《JA V A程序设计》实验相关说明 实验要求: 1.明确实验课是课程的重要组成部分,与理论课有着同等地位,是培养自身的实验技能与创新能力的重要途径; 2.在实验课前,对实验的目的、要求和基本内容,实验的重点和难点,应进行预习与讨论,确定实施措施,并编写好程序; 3.了解实验室的规章制度和安全用电常识、实验设备损坏赔偿制度等,加强安全意识,爱惜实验设备; 4.实验课期间不得擅自离开实验室或从事与本实验无关的活动,按时按质完成实验作业,培养创造性思维,努力提高自身的实践能力; 5.每次实验应提交实验结果,指导老师将结合实验操作过程给予综合评分(对于有创造性的实验成果酌情给予加分),作为期末考试成绩的一部分。 实验须知: 1.每次实验完成之后,学生须填写实验报告,并上交。报告内容包括:实验目的、实验内容、实验步骤、思路分析或流程图、程序源代码、实验中未解决的问题、屏幕出错提示代码、出错原因、解决方法及实验心得等内容。不交实验报告的学生,本次实验成绩为0分。 2.若有拷贝现象,程序代码雷同的学生实验成绩一律为0分。 3.每次实验任务必须在2-6节课内完成,并经过实验指导老师检查才能得分。没能按时完成的同学,本次实验成绩为0分。

实验一简单输入/输出项目设计 一、实验目的 1、了解Java运行环境的安装与配置; 2、了解程序的基本结构,编辑、编译与运行方法; 3、掌握方法的调用、异常的处理; 4、掌握if语句的使用和if语句的嵌套编程特点; 5、掌握switch语句的使用; 6、掌握数组与常用运算符的使用。 二、实验环境(主要仪器设备和软件) 1、操作系统Windows XP 2、JA V A开发包JSDK1.6 3、代码编辑器Jcreart3.2 4、数据库管理系统MySQL5.0 5、数据库可视化管理平台CapVideo8.0 6、JA V A开发工具MyEclipse7.0 7、微机 三、实验内容 1、开发软件的安装与配置; 2、熟悉各类软件的使用; 3、编写判断素数的小程序; 要求:从键盘输入一个整数,然后判断该数是否为素数,同时能对键盘输入的数据进行合法性验证。 4、以下内容任选一项完成: 选项一:编写星期计算器。 要求:从键盘直接输入“yyyy-MM-dd”格式的日期,并通过计算输出该日期对应的星期几。同时要对输入的日期合法性作出判断。 选项二:编写离毕业时间的倒计时器。 要求:具有X天X时X分X秒的倒计时显示功能。 选项三:编写身份证号码的合法性验证程序。 要求:能对身份证号码的省份、日期格式的合法性进行验证。

Java聊天室系统程序设计实验报告材料

Java聊天室系统程序设计 实验报告 院(系):信息与通信工程系 专业:计算机应用技术 班级: 学号: 姓名: 指导老师: 2013/6/8

目录 第一部分:系统设计总述 (2) 1.设计目的: (2) 2.设计总体要求: (2) 3.实现目的: (2) 第二部分:系统需求分析 (3) 1.系统任务描述 (3) 2.系统功能分析 (3) 3.系统可行性分析 (3) 第三部分:系统设计 (4) 1.系统总体结构设计 (4) 2.系统主体的处理流程 (5) 3.系统流程逻辑 (5) 第四部分:代码分析 (6) 1.服务器端部分代码 (6) 2.客户端部分代码 (6) 第五部分:系统的具体实现 (6) 界面设计 (6) 第六部分:小结 (10) 第七部分:参考文献 (10)

1.设计目的: 1.在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序 设计的思想,加深对面向对象程序设计特性的理解。 2.学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全 过程。 3.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、文件和网络输入 输出流编程、Java数据库编程等。 4.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。 2.设计总体要求: 1.问题的描述与程序将要实现的具体功能。 2.程序功能实现的具体设计思路或框架,并检查流程设计。 3.代码实现。 4.程序测试。 5.设计小结(包括) 3.实现目的: 本软件是一个实用聊天程序。项目要实现以下目标: 1)建立服务器端和客户端并进行连接; 2)利用线程设计结构合理,运行效率较高的聊天室; 3)实现写消息,发消息,回复,查看聊天记录等功能;

相关主题
文本预览
相关文档 最新文档