JAVA 实验 聊天工具的实现 和 学生管理系统.doc_第1页
JAVA 实验 聊天工具的实现 和 学生管理系统.doc_第2页
JAVA 实验 聊天工具的实现 和 学生管理系统.doc_第3页
JAVA 实验 聊天工具的实现 和 学生管理系统.doc_第4页
JAVA 实验 聊天工具的实现 和 学生管理系统.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

重 庆 交 通 大 学学 生 实 验 报 告实验课程名称 网络开发技术 开课实验室 数学实验室 学院 09 级 信息与计算科学 专业班 2 学 生 姓 名 陈旭峰 学 号 09180214 开 课 时 间 2011 至 2012 学年第 2 学期评分细则评 分报告表述的清晰程度和完整性(30分)程序设计的正确性(40分)实验结果的分析和体会(30分)总 成 绩实验指导教师邱俊实验一 类、对象基础知识实验体会1. 结果:存入21000元后余额为:22000.0取出11500元后余额为:10500.02. 结果:圆(Circle)的圆心坐标为:1,3,半径为:1。圆(Circle)的圆心坐标为:4,2,半径为:5。3. 结果:子圆(SubCircle)的圆心坐标为:1,3,半径为:2。子圆(SubCircle)的圆心坐标为:4,2,半径为:5。圆(Circle)的圆心坐标为:1,3,半径为:2。圆(Circle)的圆心坐标为:7,8,半径为:9。子圆(SubCircle)的圆心坐标为:4,2,半径为:5。子圆(SubCircle)的圆心坐标为:2,2,半径为:5。圆(Circle)的圆心坐标为:2,2,半径为:5。4. 结果:三角形的三个顶点坐标分别为:0,0 3,0 0,4 三角形的周长为:12.0三角形的面积为:6.0通过本次实验,使我了解以及掌握了类、对象的的概念以及对事物的抽象。同时,也许会了成员、方法的概念以及构造方法的概念。了解了封装性,多态性的概念,理解面向对象的程序设计方法。通过运行上述几个例子及对思考题的尝试编写发现:Java语言是一个面向对象的程序设计语言,结构类似于,都是通过类来实现目标,类中包括数据及方法,这样语言可重用性,可靠性,抽象和封装,继承性,多态性;但还是与C+有些许不同。掌握了一个重要概念-构造方法:是一种和类同名的特殊方法,用来初始化对象,Java中的每个类都有构造方法,用来初始化该类的一个新的对象,没有定义构造方法的类,系统自动提供默认的构造方法实验二 简单数据类型和流程控制实验体会1.结果:6 5 4 1 2 3 7 8 9 0 4 8 a23是鞍点2结果:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 6 11 16 7 13 4 12 5 15 10 9 14 3 8 2通过本次实验,使我认识了并掌握语言的标识符和保留字,各简单数据类型变量以及有逻辑意义数据的表示方法以及表示条件的表达式的类型。掌握Java语言中具各种运算符表达式的基本知识。熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。熟练掌握while、do-while和for三种语句组成循环结构的基本方法。熟练掌握特殊流程。并且通过比较了解了JAVA平台与C语言平台的不同之处。在程序中很多工作是通过计算表达式的值来完成的,而表达式是由一系列变量、运算符、方法调用构成的,每个表达式都有类型,如果表达式的类型对于上下文不合适,那么可能会导致编译错误或者语言会进行隐含类型转换Java数组的创建用关键字new构成数组的表达式,可以指定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量,基本类型数组的每个元素都是一个基本类型的变量;引用类型数组的每个元素都是对象的的引用。实验三 异常处理实验体会1结果:当输入0个参数时:进入监控区程序发生异常并在此处进行处理发生的异常为:自定义异常类 NoOprandException:没有输入参数当输入1个参数时:进入监控区程序发生异常并在此处进行处理发生的异常为:自定义异常类 OnlyOneException:仅输入一个参数当输入12和13时:25通过本次实验,使我了解掌握异常的概念和 Java 异常处理机制。并且通过简单实验可以进行异常的定义、抛出和捕捉处理。充分了解了Java程序如何抛出异常及捕获异常。异常又称为例外,是特殊的运行错误对象,Java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息及处理错误的方法,每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。异常可以分为两类:(1)非检查型异常:包括不能期望程序捕获的异常(例如数组越界,除零等),它继承自RuntimeException且在方法中不需要声明,编译器也不进行检查;(2)检查型异常:其他类型的异常,如果被调用的方法抛出一个类型为E的检查型异常,那么调用者必须捕获E或者也声明抛出E(或者E的一个父类),对此编译器要进行检查实验四 抽象类、接口和包实验体会通过本次实验,使我掌握了抽象类abstract的概念。能够熟练掌握接口interface的概念。并且可以熟练包package的概念以及编译运行的方法。进一步理解了面向对象的程序设计方法。抽象类的最大作用让其他类来继承它的抽象化的特征,因为抽象类中可以包括被它的所有子类共享的公共行为以及包括被它的所有子类共享的公共属性;既然了解了抽象类,自然应该了解抽象方法:抽象方法仅有方法头,而没有方法体和操作实现,具体实现由当前类的不同子类在它们各自的类声明中完成,抽象类可以包含抽象方法。实验五 流式输入输出处理实验体会通过本次实验,使我理解流的概念,流的划分掌握文件描述,顺序处理,随机访问处理的方法,能够熟练的使用过滤流,掌握字符流处理的方法,理解对象串行化的概念和方法。包括输入输出流、节点流、面向字符的流、面向字节的流。输入流是为了从信息源获取信息,程序打开一个输入流,程序可从输入流读取信息;输出流是当程序需要向目标位置写信息时,便需要打开一个输出流,程序通过输出流向这个目标位置写信息;面向字符的流专门用于字符数据,其抽象类有Reader和Writer;数据源或目标中含有非字符数据,必须用面向字节流,面向字节流类有InputStream和OutputStream;实验六 线程与对象群体实验体会实验结果与体会:通过本次实验,使我了解了线程的概念、线程的生命周期。学会了多线程的编程:继承Thread类与使用Runnable接口。认识到处理简单的多线程互斥和同步,并创建使用Vector向量。线程和进程的区别是:一个独立程序的每一次运行称为一个进程,例如用字处理软件编辑文稿时,同时打开mp3播放程序听音乐,这两个独立的程序在同时运行,称为两个进程,设置一个进程要占用相当一部分处理器时间和内存资源,大多数操作系统不允许进程访问其他进程的内存空间,进程间的通信很不方便,编程模型比较复杂;而一个程序中多段代码同时并发执行,称为多线程,通过多线程,一个进程表面上看同时可以执行一个以上的任务并发,创建线程比创建进程开销要小得多,线程之间的协作和数据交换也比较容易;实验七 图形界面实验体会通过本次实验使我学会掌握常用GUI控制组件的使用方法,了解掌握事件处理的方法,了解swing控件的概念。关于图形界面的实验我了解到Java有两种方式的运行程序,一种是Application;一种是Applet。Application运行在客户端Java虚拟机上的Java程序,可在客户端机器中读写,使用自己的主窗口、标题栏和菜单,程序可大可小,能够以命令行方式运行,主类必须有一个主方法main(),作为程序运行的入口;而Applet运行于支持Java的Web浏览器,浏览器的解释器把字节码转换成和机器匹配的指令,是在网页中执行小程序。Applet和Application的差别:运行环境的不同,小应用程序总是放在Web浏览器的图形用户界面中;。实验八 数据库应用实验体会通过本次实验,使我了解进一步掌握事件处理的方法,通过JAVA平台了解数据库程序设计的概念。建立Java与数据库之间的连接:首先注册数据源,然后通过Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)装载驱动器,再通过Connection con = DriverManager.getConnection(jdbc:odbc:PIMS, test,1234)建立连接,再通过一下三个步骤操作数据库:(1)使用Connection对象创建Statement对象(2)使用Statement对象执行SQL命令(3)从上一步骤返回的ResultSet对象中提取执行结果综合设计实验1. 编写一个能够进行异常处理的分数管理小系统,该程序可以是Application也可以是Applet。该系统的界面可参照图1所示面板。界面由上到下分为3个区域,上面是录入成绩的面板,中间是输入查询条件的面板,下面则是一个输出提示信息或查询结果的文本区。图1 分数管理界面 系统实现的功能包括: 录入成绩:在录入按钮后面的录入信息框中输入学生姓名、课程名、分数之后,点击录入按钮,即可将此条成绩信息保存起来,要求将信息保存至一个文本文件中。条件查询:在查询框中输入查询条件(按姓名查询或查询某门课程的成绩),根据输入的条件从文本文件(数据库文件)中查询出学生成绩信息。如要按姓名查询,输入学生的姓名,再点击查找按钮,即可将该学生所有成绩在面板下方的文本区中显示出来;如输入课程名查询,则返回该课程所有学生成绩。要求程序采用抛出并捕获异常的方式处理各种可能遇到的异常情况,能处理的异常包括: 1) 输入课程名错误。程序预先设定共有三门课程,如“Java”和“C”和“Database” ;共有10位学生,姓名自定。如果输入的课程名不在设定的范围内,则应给出输入错误的警告信息。2) 录入的分数应该在0100之间。3) 缺少必要的输入信息要给出错误警告信息。比如在录入成绩时学生姓名、课程名和得分一项都不可以缺少;条件查询时,必须要给出查询的条件,是要查找某个学生的成绩还是查找某门课程的成绩。实验代码:import java.awt.*;import java.text.*; import javax.swing.*;import java.awt.event.*;import java.sql.*;import javax.swing.table.*; import java.io.*; import java.util.Vector; public class asan1 extends WindowAdapter implements ActionListener JFrame frame1; /主界面 JFrame Frame_Add; /添加学生的窗口 JFrame Frame_Show; /查看学生的窗口 JTextField name=new JTextField(20); /姓名JTextField java=new JTextField(20); /javaJTextField c=new JTextField(20); /CJTextField database =new JTextField(20); / Database JComboBox pl; public asan1() stu_in(); public void setfont(JButton button) /设置按钮的大小及字体button.setFont(new Font(宋体,Font.PLAIN,18);button.setForeground(java.awt.Color.black);public void stu_in()frame=new JFrame(学生成绩管理系统);frame.setBounds(150,200,600,300); /窗口大小及开始在屏幕上的位置。Container cp=frame.getContentPane();cp.setLayout(new BorderLayout();BackImage p= new BackImage();p.setLayout(new GridBagLayout();GridBagConstraints c = new GridBagConstraints();cp.add(p,BorderLayout.CENTER);frame.add(label,BorderLayout.PAGE_START); frame.setResizable(false); /窗口不随鼠标拖动而改变大小 frame.addWindowFocusListener(this); /添加窗口的监控类frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();public void stu_add() Frame_Add=new JFrame(录入); /添加学生的窗口 Frame_Add.setResizable(false); Container conterPane; JPanel p=new JPanel(); JLabel J2=new JLabel( 姓名:); JLabel J3=new JLabel( JAVA:); JLabel J4=new JLabel( C:); JLabel J5=new JLabel(Database:); JButton add=new JButton(添加); add.addActionListener(this); /添加 JButton clear=new JButton(清空); /清除 clear.addActionListener(this); JButton exit=new JButton(退出); /退出 exit.addActionListener(this); GridBagLayout gridBag=new GridBagLayout(); GridBagConstraints gridBagCon; num=new JTextField(20); /学号 name=new JTextField(20); /姓名 great=new JTextField(20); /Database java=new JTextField(20); /JAVA c=new JTextField(20); /C database=new JTextField(20); /Database p.add(J1); J1.setLabelFor(num);p.add(num); p.add(J2); J2.setLabelFor(name);p.add(name); p.add(J6); J6.setLabelFor(great);p.add(great); p.add(J3); J3.setLabelFor(java);p.add(java); p.add(J4); J4.setLabelFor(c);p.add(c); p.add(J5); J5.setLabelFor(database);p.add(database); p.add(add); p.add(clear); p.add(exit); Frame_Add.setBounds(300,280,300,230); /窗口大小及开始在屏幕上的位置。 Frame_Add.add(p); Frame_Add.show();public void stu_show() Frame_Show=new JFrame(查找); /添加学生的窗口 Frame_Show.setResizable(false); Container conterPane; JPanel p=new JPanel(); Data_access DB=new Data_access(); Vector rec_vector= new Vector(); /列名集合 int numberOfColumns; String XueHao=; try String query=SELECT ID FROM student; DB.rs=DB.stmt.executeQuery(query); JOptionPane.showMessageDialog( null , 连接数据库失败 ,数据连接 , JOptionPane.ERROR_MESSAGE) ; ; pl=new JComboBox(rec_vector); pl.setEditable(true); pl.setPreferredSize(new Dimension(135,22); /框的长和高 pl.addActionListener(this); JLabel J2=new JLabel( 姓名:); JLabel J3=new JLabel( JAVA:); JLabel J4=new JLabel( C:); JLabel J5=new JLabel(Database:); name=new JTextField(12); /姓名 great=new JTextField(12); /Database java=new JTextField(12); /JAVA c=new JTextField(12); /C database=new JTextField(12); /Database name.setEditable(false); great.setEditable(false); java.setEditable(false); c.setEditable(false); database.setEditable(false); p.add(J1);p.add(pl); p.add(J2); J2.setLabelFor(name);p.add(name); p.add(J6); J6.setLabelFor(great);p.add(great); p.add(J3); J3.setLabelFor(java);p.add(java); p.add(J4); J4.setLabelFor(c);p.add(c); p.add(J5); J5.setLabelFor(database);p.add(database); JButton show=new JButton(查看); show.addActionListener(this); p.add(show); Frame_Show.setBounds(300,280,210,230); /窗口大小及开始在屏幕上的位置。 Frame_Show.add(p); Frame_Show.show();public int mian_JFrame() throws Exception JPanel pane= new JPanel(); frame1=new JFrame(学生成绩管理系统);JTable friends=new JTable(); DefaultTableModel dt=new DefaultTableModel(); friends.setModel(dt); Vector vecColumnName = new Vector(); /列名集合 int numberOfColumns; int b=1; Stu_Change Sadd=new Stu_Change();try Sadd.stuSum(); Data_access DB=new Data_access(); numberOfColumns=DB.rsmd.getColumnCount(); /以下是显示数据库中的列名的代码 dt.addColumn(姓名); dt.addColumn(JAVA); dt.addColumn(C); dt.addColumn(Database); dt.addColumn(总分); /以下是在表格中显示数据中的内容 while(DB.rs.next() Vector newRow=new Vector(); int c=1; while(c=numberOfColumns) newRow.addElement(DB.rs.getString(c); c+; dt.addRow(newRow); catch(Exception ex)JOptionPane.showMessageDialog( null , 连接数据库失败 ,数据连接 , JOptionPane.ERROR_MESSAGE) ; return 0; friends.setPreferredScrollableViewportSize(new Dimension(580, 200);/设置表格的大小friends.setRowHeight (25);/设置每行的高度为20friends.setRowHeight (0, 25);/设置第1行的高度为20friends.setRowMargin (2);/设置相邻两行单元格的距离5friends.setRowSelectionAllowed (true);/设置可否被选择.默认为falsefriends.setSelectionBackground (Color.white);/设置所选择行的背景色friends.setSelectionForeground (Color.gray);/设置所选择行的前景色friends.setGridColor (Color.null);/设置网格线的颜色friends.clearSelection ();/取消选择friends.setDragEnabled (false);friends.setShowGrid (false);/是否显示网格线friends.setShowHorizontalLines (false);/是否显示水平的网格线friends.setShowVerticalLines (true);/是否显示垂直的网格线/friends.setEditable(false);friends.doLayout ();friends.setBackground (Color.lightGray);JScrollPane pane3 = new JScrollPane (friends);/JTable最好加在JScrollPane上pane.setPreferredSize (new Dimension(600,300);pane.setBackground (Color.orange);JPanel panel = new JPanel(new FlowLayout();JButton but1=new JButton(录入);setfont(but1); panel.add(but1); JButton but4=new JButton(查找);setfont(but4); panel.add(but4);JButton but5=new JButton(保存退出);setfont(but5); panel.add(but5);JPanel pane2 = new JPanel(new BorderLayout(); pane.add (panel,BorderLayout.PAGE_END);pane.add (pane3,BorderLayout.SOUTH); pane.add (label,BorderLayout.LINE_END); but1.addActionListener(this); but2.addActionListener(this); but3.addActionListener(this); but4.addActionListener(this); but5.addActionListener(this); frame1.setBounds(150,200,600,300); /窗口大小及开始在屏幕上的位置。frame1.setContentPane (pane);frame1.pack();frame1.setResizable(false); /窗口不随鼠标拖动而改变大小 frame1.addWindowFocusListener(this); /添加窗口的监控类frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame1.show(); return 0;public void actionPerformed(ActionEvent e) /各按钮的事件处理String s; s=e.getActionCommand(); /记录按钮的名称/Object obj=e.getSource();/if(obj=add)if(s=录入)try /延迟函数 stu_add(); catch(Exception e1) else if(s=查找)try /延迟函数 stu_show(); catch(Exception e1) else if(s=添加) Stu_Change Sadd=new Stu_Change();Sadd.stuAdd(num.getText(),name.getText(),great.getText(),Integer.valueOf(java.getText(),Integer.valueOf(c.getText(),Integer.valueOf(database.getText();try /延迟函数 frame1.setVisible(false); /窗口自动消失 Frame_Add.setVisible(false);mian_JFrame(); stu_add(); catch(Exception e1) else if(s=查看) Data_access DB=new Data_access();String Snum=pl.getSelectedItem().toString(); String sql=SELECT * FROM student WHERE ID=+Snum+; String Sname=0;String Sgreat=;String Sjava=;String Sc=;String Sdatabase=;try DB.rs=DB.stmt.executeQuery(sql); DB.rs.next(); Sname=DB.rs.getString(name); Sgreat=DB.rs.getString(great); /Database Sjava=DB.rs.getString(java); /JAVA Sc=DB.rs.getString(c); /C Sdatabase=DB.rs.getString(database); /Database catch(Exception e1) JOptionPane.showMessageDialog( null , 连接数据库失败 ,数据连接 , JOptionPane.ERROR_MESSAGE) ; .setText(Sname.toString();this.great.setText(Sgreat.toString();this.java.setText(Sjava.toString();this.c.setText(Sc.toString();this.database.setText(Sdatabase.toString();public static void main(String args) new asan1(); class BackImage extends JPanel /背景图片 public GrayImage(); public void paint(Graphics g) int x=0,y=0; .URL img=getClass().getResource(gray.jpg); ImageIcon icon = new ImageIcon(img); g.drawImage(icon.getImage(),x,y,getSize().width,getSize().height,this);算法流程图:实验结果:2编写一服务器与客户端的聊天程序。界面如下。要求实现客户端与服务器端的信息发送与接收。client与server在窗口下端的编辑框中输入信息,然后点击“send”按钮发送,聊天信息在上端的文本框中显示出来。实验代码/* * 客户端 */package com.test1;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import .*;public class MyClient extends JFrame implements ActionListener JTextArea jta=null; JTextField jtf=null; JButton jb=null; JPanel jp1=null;/面板用来附加按钮等 调节布局 JScrollPane jsp=null;/滚动条 PrintWriter pw=null; public static void main(String args) throws UnknownHostException, IOException / TODO Auto-generated method stub MyClient msv=new MyClient(); public MyClient() throws UnknownHostException, IOException jta=new JTextArea(); /将文本面板附加到滚动面板上 jsp=new JScrollPane(jta); jtf=new JTextField(10); jb=new JButton(发送); jb.addActionListener(this); jp1=new JPanel(); jp1.add(jtf); jp1.add(jb); this.add(jsp,Center); this.add(jp1,South); this.setTitle(简易聊天客户端); this.setSize(300,200); this.setVisible(true); Socket s=new Socket(,9988); InputStreamReader isr=new InputStreamReader(s.getInputStream(); BufferedReader br=new BufferedReader(isr); pw=new PrintWriter(s.getOutputStream(),true); while(true) /不停地读取从服务器端发来的信息 String info=br.readLine(); jta.append(服务器对客户说: +info+rn); Override public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub if(e.getSource()=jb) String info=jtf.getText(); jta.append(客户端对服务器说: +info+rn); pw.println(info)

温馨提示

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

评论

0/150

提交评论