Java大作业设计报告

合集下载

Java课程大作业俄罗斯方块作业报告[1]

Java课程大作业俄罗斯方块作业报告[1]
程序使用说明(文字说明,并附界面抓图)
游戏流程图:
进入游戏界面 点击按钮“开始” ,游戏开 始 蛇开始随机出现 键盘操作: “左移” “右移” “旋转” “加速”
到达顶端
单击 “开始” 游戏 继续
游戏结束
游戏面板
点击“开始”Leabharlann 戏开始如图:按“”控制蛇的方向如下图:
方块不能继续下落时游戏结束,出现“Game over” ,如图:

作业结果(学生填写) : 程序设计思路(300字以上,可附流程图或类图)
俄罗斯方块游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制 模块。 在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现移动速度、重新 开始等功能。 游戏主界面模块: 游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形 区域界面、游戏速度控制、重新开始游戏、速度等级以及当前分数。从很大程度上 决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的速度、重新开始等功能。为 了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。设计所开发的 是基于 Java 的一个俄罗斯方块游戏软件,主要实现游戏的速度控制。分为: 游戏 主界面模块、游戏控制模块以二个模块。 性能: 本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程 中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
Java 程序设计 课程作业报告 作业:俄罗斯方块游戏
姓名 程序得分 90% 作业目的: 掌握基本的图形程序设计方法 掌握Java事件处理程序编写方法 掌握编写基于TCP或UDP协议的网络通讯程序 掌握Java的流、文件、多线程等编程技术 郭阳 作业报告 得分 10% 学号 1143730212 实验总分 100%

java结课大作业 实验报告

java结课大作业  实验报告

班级:数学与应用数学01班姓名:姚其禹学号:41008040110学生管理系统用java语言设计一个基于GUI界面的单机版学生管理系统,实现学生基本信息的录入,查询,修改,删除,同时可以对学生所在学院,专业,班级信息进行添加,查询,修改,删除。

本系统是通过java+Mysql实现的。

●设计内容:用java语言设计一个基于GUI界面的单机版学生管理系统,实现学生基本信息的录入,查询,修改,删除,同时可以对学生所在学院,专业,班级信息进行添加,查询,修改,删除。

●设计要求:1.界面要求:必须先要有一个登录用的用户信息表,包含“用户名和密码”两项信息。

2.功能要求:系统里必须包括学生信息录入、修改、删除、查询等功能,还有学院信息录入、修改、删除、查询,专业信息录入,修改、删除、查询,班级信息录入、修改、删除、查询。

输入时学院代码用下拉框选择,必须是学院信息表里存在的学院名称,保存到数据库中时存学院的代码。

输入专业代码和学院代码用下拉框选择,必须是专业信息和学院信息表里存在的专业名称和学院名称,保存到数据库中时分别存专业和学院的代码。

输入班级、专业和学院用下拉框选择,必须是班级专业信息和学院信息表里存在的专业名称和学院名称,保存到数据库中时分别存班级、专业和学院代码。

●设计目标:使用JDBC驱动程序将前台浏览器与后台数据库(本系统用的是Mysql)结合位为一体。

利用Mysql语句接口来调用数据库,以存取或更新数据库中的数据,实现学生信息录入、修改、删除、查询,还有学院信息录入、修改、删除、查询,专业信息录入,修改、删除、查询,班级信息录入、修改、删除、查询功能。

类,类的方法及类的作用表类的名称类的方法类的作用LoginFrame.java public LoginFrame() 创建一个登入界面,用public void acitonperformed() 户需输入正确的用户名和密码public static void main() Frm_Main.javapublic Frm_Main()创建学生信息表,可以注册,查询,删除,修改学生的信息 public void conDB()public void acitonperformed() public static void main() FacultyFrame.javapublic FacultyFrame ()创建学生学院信息表,可以添加,查询,删除,修改学院信息 public void conDB()public void acitonperformed() SpecialtyFrame.jav apublic SpecialtyFrame ()创建学生专业信息表,可以添加,查询,删除,修改学院信息 public void conDB()public void acitonperformed() ClassFrame.java public ClassFrame()创建学生班级信息表,可以添加,查询,删除,修改班级信息public void conDB()public void acitonperformed() jtree.javapublic void valueChanged() 对该系统的相关说明jtree()数据库设计 1. 创建登入表: CREATE TABLE `admin` (`username` varchar(20) NOT NULL,`pwd` varchar(20) CHARACTER SET latin1 DEFAULT NULL, PRIMARY KEY (`username`) )表2-2 Admin 表2. 创建学生信息表:CREATE TABLE `student` ( `xueid` char(20) NOT NULL,`name` char(20) DEFAULT NULL,`sex` char(4) DEFAULT NULL,`nation` char(4) DEFAULT NULL,`ID` char(2) DEFAULT NULL,`C_ID` char(8) DEFAULT NULL,`S_ID` char(10) DEFAULT NULL,`age` char(8) DEFAULT NULL,`mail` char(20) DEFAULT NULL,`telp` char(11) DEFAULT NULL,PRIMARY KEY (`xueid`))student表3.创建学院信息表CREATE TABLE `faculty` (`ID` char(2) NOT NULL,`NAME` char(30) DEFAULT NULL,PRIMARY KEY (`ID`)表2-4 faculty表4.创建专业信息表CREATE TABLE `specialty` (`S_ID` char(10) NOT NULL,`S_NAME` char(30) DEFAULT NULL,`ID` char(2) DEFAULT NULL,PRIMARY KEY (`S_ID`))specialty表5.创建班级信息表CREATE TABLE `grade` (`C_ID` char(8) NOT NULL,`C_NAME` char(30) DEFAULT NULL, `C_DATE` char(10) DEFAULT NULL, `S_ID` char(10) DEFAULT NULL, `ID` char(2) DEFAULT NULL,PRIMARY KEY (`C_ID`))grade表6.数据库中各表之间的关系各表之间关系图源代码分析1.系统主要的类:登入窗口的类:public class LoginFrame extends JFrame主类:public class Frm_Main implements ActionListener班级信息类:public class ClassFrame implements ActionListener学员信息类:public class FacultyFrame implements ActionListener帮助文档类:public class jtree implements TreeSelectionListener专业信息类:public class SpecialtyFrame implements ActionListener2. 主要方法分析:设置文本框的位置和文本框的大小:S_NAMEL.setLocation(20,110);S_NAMEL.setSize(150,20);c.add(S_NAMEL);S_NAMET.setLocation(90,110);S_NAMET.setSize(200,20);c.add(S_NAMET);处理异常类及方法try{Class.forName("com.mysql.jdbc.Driver");conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=r oot&password=111111");Statement stmt = (Statement)conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CON CUR_UPDATABLE);ResultSet rss1 = null;String sql="select * from faculty ";rs = stmt.executeQuery(sql);while (rs.next()){f.addItem(rs.getString("NAME"));}rs.close();}catch(ClassNotFoundException e){System.err.println(e);}catch(SQLException e){System.err.println(e);}处理监听事件的方法:public void actionPerformed(ActionEvent e)主函数的运行:public static void main(String[] args)连接数据库相关语句:Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection(URL, user, pswd);stmt = conn.createStatement();组件的声明:public JMenuBar menuBar;public JMenu mainMenu1;public JMenu mainMenu2;public JMenu mainMenu3;public JFrame frame;public Container c;public JMenuBar menuBar;JButton toolBarButton[] = new JButton[8];public JToolBar toolBar;Object ID=new String();String S_ID = new String();String S_NAME = new String();Connection con;ResultSet rs;Statement st;public JLabel S_IDL = new JLabel("专业代码:");public JLabel IDL = new JLabel("学院名称:");public JLabel S_NAMEL = new JLabel("专业名称:");public JTextField S_IDT = new JTextField();private JComboBox f = new JComboBox();public JTextField S_NAMET = new JTextField();该程序是一个图形界面的学生信息管理系统,使用人员能快捷简单地进行操作。

《JAVA程序设计》大作业报告模板

《JAVA程序设计》大作业报告模板

华北科技学院计算机系课程综合作业实验报告课程名称JAVA程序设计实验学期2010 至2011 学年第 1 学期学生所在系部计算机年级08级专业班级信管B082学生姓名学号************ 任课教师实验成绩计算机系制《JAVA程序设计》课程综合作业实验报告学生的学号,可以更新这条记录中的数据;“查询记录”,输入要查询学生学号可以查询这个学生的所有信息;选择分数信息中的“各科最高低分”菜单,可以查询所有学科中的最高分和最低分;“总分平均分”显示所有学生的总分和平均分。

3.主要代码本程序使用Java中基于SWING的图形设计,用到java中的java.awt.*内的包,控件的布局用到java.swing.border.*包,事件处理用到java.awt.event.*,连接数据库用到java.sql 登录界面主要代图1public class denglu{public static void main(String args[]){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){ //11System.out.println(""+e);}new WindowBox("登录窗口"); //调用方法}}class WindowBox extends JDialog implements ActionListener{//声明Box baseBox,boxV1,boxV2,boxV3;JButton button1,button2;}}}如果出现用户名密码错误则会出现提示信息对话框图2通过调用Datawin类中的内容可以进入到主界面声明菜单中的显示、添加、删除、修改、查询、最高低分以及总分平均分菜单项和类,能过给菜单添加事件监听事件图3public void actionPerformed(ActionEvent e){if(e.getSource()==itemshow)show.setVisible(true);else if(e.getSource()==itemadd)add.setVisible(true);else if(e.getSource()==itemupdata)updata.setVisible(true);a[k][0]=rs.getString(1);a[k][1]=rs.getString(2);a[k][2]=rs.getString(3);a[k][3]=rs.getString(4);a[k][4]=rs.getString(5);a[k][5]=rs.getString(6);k++;}con.close();}catch(SQLException ee){System.out.println(ee);} //处理异常table=new JTable(a,name);getContentPane().removeAll(); //采用BorderLayout布局add(showRecord,BorderLayout.NORTH);add(new JScrollPane(table),BorderLayout.CENTER);validate();}图4构造增加类,声明组件,定义一个表名Object name[]={"学号","姓名","年龄","性别","系别","班级"};和定义一个表单Object a[][]=new Object[1][6];然后给按钮组件增加以下监听事件,通过对表单中输入数据进而增加到数据库中public void actionPerformed(ActionEvent e)//处理事件图5图6构造删除类,声明组件,在文本框中输入信息,进而可以删除数据库中相应的记录给文本框和按钮增加以下事件public void actionPerformed(ActionEvent e){if(e.getSource()==inputNumber){try{num=inputNumber.getText().trim();con=DriverManager.getConnection("jdbc:odbc:hello","","");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM 学生信息 WHERExueid='"+num+"'");boolean boo=rs.next();if(boo==false){JOptionPane.showMessageDialog(this,"学号不存在",table.repaint();//重打印表con.close();}catch(SQLException ee){JOptionPane.showMessageDialog(this,"更新失败"+ee,"失败",JOptionPane.ERROR_MESSAGE);}}//if图7构造查询方法查询这个窗体整体彩盒式布局,首先声明类和方法设计窗体的外观,给相应的组件添加事件利用SQL语句查询数据库中的信息 rs=sql.executeQuery("SELECT * FROM 学生信息WHERE xueid='"+num+"'");如果输入学号数据库中不存在提示信息“学号不存在”,否则利用table.repaint();方法将数据库中的信息输入到窗体中的table中public void actionPerformed(ActionEvent e)//处理事件{try//连接数据原 hello{num=inputNumber.getText().trim();con=DriverManager.getConnection("jdbc:odbc:hello","","");图8构造最高最低分类首先定义两个静态变量m,n;将数据库中的信息利用查询的方法显示在数字 int b[][]中,con=DriverManager.getConnection("jdbc:odbc:hello","","");sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//只读形式rs=sql.executeQuery("SELECT * FROM 分数信息");st();利用如下方法求得语文成绩的最高分和最低分for(k=0;k<lastNumber;k++){if(m<b[k][0]){m=b[k][0];}if(n>b[k][0]){n=b[k][0];}}a[0][1]=m;a[1][1]=n;同理可以求得其它几科成绩的最高分和最低分然后,将object a[][]中的信息显示有窗体中图9构造总分平均分方法首先将数据库中的信息显示在利用SQL查询方法显示有两个数据中object a[][]和int b[][]中利用如下方法将求得总分和平均分try{con=DriverManager.getConnection("jdbc:odbc:hello","",""); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=sql.executeQuery("SELECT * FROM 分数信息");st();int lastNumber=rs.getRow();b=new int[lastNumber][4];a=new Object[lastNumber][8];int k=0;rs.beforeFirst();while(rs.next()){a[k][0]=rs.getString(1);a[k][1]=rs.getString(2);a[k][2]=rs.getByte(3);b[k][0]=rs.getByte(3);a[k][3]=rs.getByte(4);b[k][1]=rs.getByte(4);a[k][4]=rs.getByte(5);b[k][2]=rs.getByte(5);a[k][5]=rs.getByte(6);b[k][3]=rs.getByte(6);a[k][6]=b[k][0]+b[k][1]+b[k][2]+b[k][3];a[k][7]=(b[k][0]+b[k][1]+b[k][2]+b[k][3])/4;k++;}con.close();}catch(SQLException ee){System.out.println(ee);}图10四、实验结果及分析程序运行中的报告分析1、在登陆时如果输入不正确的用户和密码会提示用户名或密码错误,因为通过getText()方法无法获得正确的字符串从而提示错误2、在进行数据库相应操作时,如果无法正确连接数据库则会提示不存在所需的数据资源,可能原因是没有正确连接到数据源,即可能数据源名称不正确,或者在数据库中不存在相应的表,或者可能SQL语法错误在进行相应的查询的删除操作时,如果不存在输入的学号会提示用户,“学号学号不存在”,因为不在数据库不无法在相应的字段下找到相匹配的字符串。

java程序设计大作业报告

java程序设计大作业报告

Java程序设计大作业报告1. 引言本报告是关于Java程序设计大作业的报告,旨在总结和描述本次大作业的设计和实现过程。

本次大作业的主题是设计一个学生成绩管理系统。

2. 需求分析在开始设计和实现学生成绩管理系统之前,首先需要明确系统的需求。

本次大作业的学生成绩管理系统需要包含以下功能: - 学生信息管理:包括学生的基本信息和成绩信息。

- 成绩录入和查询:教师能够录入学生的成绩,并能够查询和修改学生的成绩信息。

- 成绩统计和分析:系统能够对学生的成绩进行统计和分析,例如计算平均分、最高分、最低分等。

3. 系统设计根据需求分析的结果,我们可以开始进行系统设计。

以下是学生成绩管理系统的设计步骤:3.1 类设计首先,我们需要定义学生类(Student)和成绩类(Grade)来管理学生和成绩信息。

学生类包含学生的基本信息,如学号、姓名、性别等,成绩类包含学生的各科成绩信息。

此外,我们还需要设计一个教师类(Teacher),用于录入和查询学生的成绩信息。

3.2 数据结构设计在设计学生成绩管理系统时,我们需要选择适合的数据结构来存储和管理学生和成绩信息。

例如,可以使用数组、链表或哈希表等数据结构来存储学生和成绩信息,根据具体需求进行选择。

3.3 用户界面设计学生成绩管理系统需要有一个用户友好的界面,方便教师进行操作。

可以使用图形界面(GUI)或命令行界面(CLI)来实现用户界面。

4. 系统实现在完成系统设计后,我们可以开始实现学生成绩管理系统。

4.1 学生类实现首先,我们需要实现学生类。

学生类应该包含学生的基本信息和成绩信息的操作方法,例如获取学生的基本信息、添加和修改成绩等。

4.2 成绩类实现接下来,我们需要实现成绩类。

成绩类应该包含学生的各科成绩信息,并提供计算平均分、最高分、最低分等操作方法。

4.3 教师类实现然后,我们需要实现教师类。

教师类应该包含录入和查询学生成绩的操作方法,例如录入学生成绩、查询学生成绩等。

JAVA程序设计大作业报告

JAVA程序设计大作业报告
JAVA程序设计大作业报告
过程:
1、课程设计目的 2、课程设计题目描述与要求 3、课程设计报考内容 4、输出结果 5、实验总结
1、课程设计目的
用面向对象语言JAVA完成计算 器的设计和实施。通过课程设计掌 握面向对象编程技术,常用库类的 使用和应用系统的开发过程。
2、课程设计题目描述与要求
(1)完成窗口的关闭 按钮的功能; (2)完成清空键 功能;(即清空文本框中的内容) (3)完成数字按钮的功能;(即文本框显示对应数字) (4)完成基本的“+”,“-”,“*”,“/”四则运算;
3、课程设计报告内容
3.1 课程设计思路 设计的程序能完成计算器的基本功能 例如四则运算 3.2 设计过程 本次设计一个简易的计算器的界面,该计算器运行 程序后的界面如下图所示 该计算机包括了加减乘除四则运算 操作建议
3.3实验源代码
在设计这个程序的开始,我们首先设计这个计算器的 界面,我用比较简单的方法,运用GridLayout(4,5)来实 现简单的排版。然后把我需要的几个按键都依次的输入s("CE"))
{
display.setText("0"); start=true; flag=true; command="=";
} else if(start&&flag) { if(command.equals("-")) { display.setText(command); start=false; } else if((command.equals("1/x")||command.equals("sqrt"))&&flag) calculate(Double.parseDouble(display.getText()),command); else if(flag) lastCommand=command; } else { if(command.equals("Backspace")&&flag) { String s=display.getText(); char[] s1=s.toCharArray(); if(s.length()>=2) { String s2=new String(s1,0,s.length()-1); display.setText(s2); } else { display.setText("0"); start=true; } } else if(flag) { calculate(Double.parseDouble(display.getText()),command); lastCommand=command; start=true; } } } }

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

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表的设计和数据 (6)3.3系统功能模块设计 (6)四、系统详细设计 (7)4.1登录模块 (7)4.2 学生模块 (7)4.3 教师模块 (8)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终极大作业报告

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%)实现以下功能--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功能为实现与数据库的连接(直连)。

Java大作业报告

Java大作业报告

课程:Java程序设计与应用开发题目:登录系统与钟表实现班级:XXXXXXXXXX学号:XXXXXXXX姓名:XXXX日期:XXXXX一、大作业目的用面向对象语言JA V A完成登录系统和钟表的分析、设计和实施。

通过课程设计掌握面向对象编程技术、GUI编程、常用类库的使用和应用系统的开发过程。

二、大作业题目描述和要求1.题目设计简单的登录系统和钟表界面,掌握Java编程中的多媒体应用。

2.要求(1)登录系统是java编程中比较基础的,设计一个登录对话框,通过输入正确的用户名和密码来进入系统,系统是一个带有菜单栏的记事本程序,通过点击菜单栏上的按钮来实现相应的功能。

(2) 通过设计一个钟表程序进一步掌握java在多媒体方面的应用。

3. 开发环境Eclipce + JDK1.4.2三、系统分析1.对于登录系统,首先应该对登录界面进行设计,该对话框中包括两个标签,一个文本输入框,一个密码输入框和两个按钮,这些GUI组件被添加到一个使用了网络袋布局的面板panel中,面板panel又被添加到Text_Login的内容窗格。

设计该系统的初步思路就是首先需要定义图像生成器的界面窗口,其次就是往每个按钮上添加触发事件监听器(如ActionListener、MouseListener、MouseMotionListener),然而在实际操作的过程中,新的问题不断出现,不过最后依依解决了。

对于记事本程序中的菜单栏的实现,菜单也是一种常用的GUI组件,菜单是一种层次结构,最顶层是菜单栏,在菜单栏中可以添加若干个菜单,每个菜单又可以添加若刚菜单选项,子菜单。

当单击一个菜单选项时,会生成一个动作事件,为菜单选项添加事件侦听器就可以侦听起动作事件。

2.对于Java的多媒体应用之钟表实现,程序在窗口上显示一个表盘,时刻度和分刻度为3D样式的,分别为黑灰色和灰色时针分针秒针随着时间在走动,间隔1s。

时针和分针的样式设计为略显锥形,秒针为简单的直线形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Java程序设计》大作业设
计报告
设计名称多人聊天室
组员姓名
学生班级
设计时间 2013.12.15
设计成绩
一、问题描述及设计思路
设计多人聊天程序,能进行多人实时聊天,其中服务器为PC端,客户端为安卓端。

在服务器上,不断监听来自客户端的接入请求,对于接入的客户端加入线程池,同时为之开启独立线程,等待从该客户端发来的信息,再转发给其他客户端。

在客户端上,首先布局简单的安卓界面,开启客户端并且登录后,设置button 按钮监听想服务器发送信息请求,同时开启独立线程接收来自服务器的信息(即来自其他客户端的信息)。

二、详细设计过程
服务器开发
1.首先,导入了我们完成服务器端所要完成的各种类:
能,辅助以GUI界面进行美化。

2.在Server类里面的私有成员函数里,有以下定义:
程运行做准备,
同时创建了一个广义的ArrayList<Socket>vector,用来存放客户端的套接字。

创建了两个file类的文件,分别用于记录客户端的链接信息和保存客户端的聊天记录。

一个独立的线程,互不干扰。

接下来则是采用GUI组件进行简单的界面设计,在try-catch块里完成主要功能。

首先,采用ServerSocket serverSocket = new ServerSocket(port);建立套接字,一旦建立成功,则在服务器端的界面上会出现创建的日期信息。

又使用Socket socket = serverSocket.accept();连接客户端,采用while语句不断监听客户端连接,收到请求后,则在服务器端显示客户端的信息,如连接到服务器的时间,客户端的主机名称和IP地址,这些信息会被写进txt文本进行保存。

mExecutorService.execute(new Thread
(newHandleAClient(socket)));则是向线程池中添加线程,这里使用了一个内部类HandleAClient用于处理服务器和单独一个客户端之间的问题。

请看下面的继续解析。

4.采用一个内部类HandAClient完成一个客户端和服务器之前互相传输信息的
将信息发送到其他的客户端。

首先,用br获取流对象,再用msg保存读到的信息,同时在里面还定义了另外一个函数sendToClient(),用于把信息发送给客户端,在发送信息是,服务端还要进行判断,通过ArrayList类对象Vector,里面每一个元素为客户端的socket,进行判断:如果获取到的某个信息是来源于客户端A,则发送时客户端A暂时关闭,把A的信息发送到其他的所有客户端,这样会避免在客户端上自己发出的信息显示两次的问题。

同时,服务端把客户端的信息保存为记录文本txt文件。

客户端开发
开发步骤:
1.新建一个android应用程序
2.在布局文件中添加两个button控件标签,和两个文本框,并未其设置属性和值
3.在Activity中,声明控件变量并根据id获得控件对象
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.activity_talk);
buttonIn = (Button) findViewById(R.id.buttonIn);
buttonSend = (Button) findViewById(R.id.buttonSend);
//show the messages
text01 = (EditText) findViewById(R.id.text01);
//input the message
text02 = (EditText) findViewById(R.id.text02);
4.以匿名内部类方式监听button
// the button of login
buttonIn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try {
// con nect to server
s = new Socket(IP, PORT);
//inputStream includes in br
br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
//os is the outputStream
os = s.getOutputStream();
} catch (Exception e) {
// handle exception
Log.e(DEBUG_TAG, e.toString());
}
}
});
//the button of send
buttonSend.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try {
// get the information from the text02
String str = text02.getText().toString();
//show the information on text01
text01.setText(str);
os.write((str + "\n").getBytes("utf-8"));
} catch (Exception e) {
// handle exception
Log.e(DEBUG_TAG, e.toString());
}
}
});
5.登陆后,开启线程监听来自服务器的信息
private Runnable myRunnable = new Runnable() {
public void run() {
//monitor the information from the server continually
while (true) {
try {
if ((message = br.readLine()) != null) {
message += "\n";
mHandler.sendMessage(mHandler.obtainMessage());
}
} catch (Exception e) {
Log.e(DEBUG_TAG, e.toString());
}
}
}
};
开启异步处理函数:
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
try {
//show the information from the server
text01.append(message);
} catch (Exception e) {
Log.e(DEBUG_TAG, e.toString());
}
}
};
三、结论及体会
此次大作业,是我们团队对新知识应用很好的一次的尝试。

此次我们团队四人分成两组,分别写服务器和客户端。

期间,我们一共敲出三份代码。

首先单客户端通信的软件,这个程序难度比较小。

另外还敲了比较复杂的安卓UDP通信程序,有用户名自定义跟头像选择,但是因为在安卓Activity间用intent转换时没有找出其中的bug,所以暂时性放弃那份代码。

这份代码是第三份相对第二份来说比较简单。

通过此次合作,让我们团队深刻地了解到,对于多而泛的知识学习,我们更应该强调合作精神,分工细化,这样能更有效地进行学习,因此我们也专门成立android学习小组。

四、附录(图表、关键代码)
服务器界面:
一旦服务器端运行,那么在服务器上就会显示这次服务器运行时的准确时间。

一旦连接到客户端,就会在服务器的界面上不断显示信息。

具体请看客户端代码报告。

客户端界面:
客户端登录:
客户端发送消息:
其他客户端接入。

相关文档
最新文档