学号-姓名-Java语言实验报告四

合集下载

人机猜拳小游戏

人机猜拳小游戏

Java程序设计基础实验报告班级:学号:姓名:实验题目:猜拳小游戏实验要求:用java编写一个人机对战的猜拳小游戏。

人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。

有基本的UI界面。

实验内容:1、问题分析过程:实验针对java的具体应用,设计了猜拳小游戏。

根据游戏的规则,玩家可以和电脑进行对战。

成学的主要功能是使用标准的JDK进行编译和运行。

定义玩家自己选择性出拳,电脑随机出拳,赢的记10分,输的记0分,平局都记10分。

本程序设计了Game、Person、Player、等多个类,通过程序设定的规则来实现游戏。

(登陆界面)(初始界面)(游戏界面)2、主要实现代码:******************************oString();"="+playerName);etName());etName());造函数的特点:* A:函数名和类名相同* B:函数没有返回类型,即使void也不行* 2.构造函数什么时候被执行:在用户实例化对象时编译器自动调用的,用户无法调用* 3.构造函数完成什么样的工作:在用户实例化对象时完成实例变量(被static的变量)的初始化工作**/public LoginFrame() {etScreenSize();etResource[index]);return new ImageIcon(url);}/*** 根据选手索引的猜拳状态创建ImageIcon对象* @param player_index 选手索引* @param state 猜拳状态,0:初始状态,1:赢状态;2:平局;3:输状态* @return ImageIcon对象*/public ImageIcon getPlayerIcon(int player_index,int state){URL url=getClass().getResource[player_index][state]);return new ImageIcon(url);}public static String getResult(Player userPlayer,Player computerPlayer){count++;int differ=()();int state=0;etPlayerIcon, 0));jContentPane = new JPanel();(null);etMorraIcon (new Game().getMorraIcon ;(new Game().getPlayerIcon(img_index, + "");+ "");+ "");}/*** 恢复游戏初始状态*/private void setInit() {=false;=0;本类型的默认值: byte(1) 0 short(2) 0 int(4) 0 long(8) 0 * char(2) '\0' boolean(2) false* float(4) double* 2.引用类型的默认值:null** 基本类型和引用类型的区别:* 基本类型是在栈内存中存放数据值* 引用类型是在栈内存中存放引用地址,在堆内存中存放数据值的* @author hsj* @version**/public class Person {private String name;private int age;public Person(String name, int age) {super();= name;= age;}public Person() {例化Person类型的对象Person p1=new Person("张三",20);用display()函数完成成员变量的输出工作//段落注释的快捷键:ctrl+shift+o/*();();*/}}3、实验心得体会:通过这次java实验。

JAVA实训1

JAVA实训1

姓名:*** 信科***1班学号;***0010127实验报告实训1》与实训2》:一,实验目的1,掌握在Eclipse环境中开发控制台程序的方法与步骤。

2,掌握Eclipse的基本使用方法。

3,掌握Eclipse下编译调控程序的方法与步骤4.创建一个项目并编写代码“确定”使得点击确定就会弹出“你好,宝贝!“二,实训内容:1)在Eclipse环境中开发控制台程序要求:创建java类,编写代码,执行程序。

实训:在Eclipse环境下编写一个简单java程序,运行后显示“你好,宝贝!步骤如下:1)选择菜单“文件”,“新建”“类”命令,或单击工具栏上“New java class”按钮。

2)在“新建java类”窗口中,“源文件夹”的默认值是项目的文件夹,不需要改动。

3)在“包”栏中输入程序包的名称“CH1”,在“名称”栏中输入类名“Ex1-”。

4)选中“public static void main (string[] args)”复选框,使之自动创建一个main ()。

5)单击“完成”按钮,一个代码编译窗口被打开。

6)在编译器中加入一行代码,System.out.println(“你好,宝贝!”):7)选择菜单“运行”-“运行方式”-“2java应用程序”命令,如果程序作了修改,系统会自动提示是否保存,选定“在启动前始终保存资源”复选框,然后单击“确定”按钮。

这时“控制台”视图中可以看到程序的运行结果:结果是:实训3》:一,实验目的:掌握Eclipse的使用方法及标签lable和Button的使用方法,并能够掌握DOS环境下开发JAVA程序的方法和步骤。

二,实验内容;用简单的程序使三,步骤:1,创建JAVA项目2,创建JAVA类3,添加组件更改其属性4,添加事件响应代码5,运行结果得运行后“王秋,我是苏建!“显示实训4》:一,实验目的1,掌握按位异或运算符和运算法则。

2,了解数据精度。

3,掌握异或运算的性质。

【实验】java多线程实验报告

【实验】java多线程实验报告

【关键字】实验java多线程实验报告篇一:西北农林科技大学java多线程实验报告实验7 多线程1.实验目的(1) 掌握Java多线程的概念和实现方法(2) 掌握Java多线程的同步问题2.实验内容任务一:火车售票假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。

打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。

程序运行结果见左图。

打开EclipseTickets.javapublic class Ticket extends Thread {int ticket =1000; String name =""; public void run(){ while(true){synchronized(name){ if(ticket"第" + Thread.currentThread().getName()+ "售票点卖出了第" + ticket-- + "张票");}} }}} try{ } catch(InterruptedException e){ } Thread.sleep(100);Test.javapublic class Test {} public static void main(String args[]){} Ticket t = new Ticket(); new Thread(t,"1").start(); new Thread(t,"2").start(); new Thread(t,"3").start(); new Thread(t,"4").start(); new Thread(t,"5").start(); new Thread(t,"6").start(); new Thread(t,"7").start(); new Thread(t,"8").start(); new Thread(t,"9").start(); new Thread(t,"10").start();任务二:银行存款假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。

JAVA实验报告Y.Daniel Liang第二次实验

JAVA实验报告Y.Daniel Liang第二次实验

2014-2015学年第一学期实验报告课程名称:Java SE 平台技术实验名称:JA VA编程(基础练习)姓名:学号:成绩:指导教师:日期:目录一、实验目的 (3)二、实验内容 (3)2.1 构建一个继承类。

(3)2.2 抽象类和接口的使用 (3)2.3 图像类编程和事件驱动程序。

(3)三、实验环境 (3)四、实验结果 (3)4.1构建继承类 (3)4.2抽象类和接口的使用 (3)4.3 事件驱动程序 (3)五、附录 (4)5.2 设计方案 (4)5.1构建继承类 (4)5.2抽象类和接口的使用 (4)5.3 事件驱动程序 (4)5.2 设计方案 (4)5.1构建继承类 (4)5.2抽象类和接口的使用 (4)5.3 事件驱动程序 (4)5.3 算法 (4)5.3.1 三角形继承类 (4)5.3.2 抽象类与接口 (5)5.3.3 画出小车 (5)5.4. 设计图 (6)5.4.1 三角形类UML设计图 (6)5.4.2.1 Colorable接口UML设计图 (7)5.4.2.2 CompareTo与Clone接口UML设计图 (8)5.4.3 小车UML设计图 (9)5.5 仿真结果 (9)5.5.1构建继承类 (9)5.5.2抽象类和接口的使用 (9)5.5.3 事件驱动程序 (10)5.6 调试心得 (10)5.6.1 错误分析 (10)5.6.2 心得与收获 (10)一、实验目的通过使用JA V A语言进行基本程序的开发,掌握JA V A通用IDE,练习类的封装使用、JA V A基本类库的使用、利用UML进行简单建模。

二、实验内容2.1 构建一个继承类。

2.2 抽象类和接口的使用2.3 图像类编程和事件驱动程序。

三、实验环境Eclipse、Win 8.1四、实验结果4.1构建继承类输出了三角形的三边长,面积,周长。

4.2抽象类和接口的使用4.2.1执行Colorable接口,输出了一条how to color的信息4.2.2执行Comparable 和Cloneable接口,输出了创建的五边形和克隆五边形的周长和面机的信息。

java_Micaps实验报告

java_Micaps实验报告

南京信息工程大学实验(实习)报告实验(实习)名称micaps基本功能练习实验(实习)日期得分指导老师马利系专业班级姓名学号实验目的:通过使用eclipse上机环境,熟悉面板构造,达到熟练编程的目的实验内容:一、主面板1.创建窗口import ;import ;import ;import ;public class MainFrame {public static void main(String[] args) {new MicapsFrame();}}class MicapsFrame extends JFrame{JDesktopPane desktopPane;public MicapsFrame(){//设置窗体属性,采用默认的绝对布局super();// 设定窗体出现在屏幕的正中// 获取屏幕的大Dimension scrnDim = Toolkit.getDefaultToolkit().getScreenSize();setBounds(200,100,(int)((1000.0/1280)*scrnDim.getWidth()),(int)((800.0/1024)*scrnDim.get Height())); //设置窗体大小和位置setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置窗体关闭方式setTitle("MICAPS3");//给窗体命名setVisible(true); //一定要设置窗体可见c=getContentPane();//窗体其实就是一个容器,获取该容器desktopPane=new JDesktopPane();//创建桌面面板desktopPane.setBounds(0,50,this.getSize().width,this.getSize().height-50);//设置桌面面板大小和位置c.setLayout(null);//设置布局属性为空,即默认的绝对布局方式}}2.添加菜单栏按钮JMenuBar menuBar;//给窗体添加菜单组件menuBar=new JMenuBar();//设置菜单栏的属性menuBar.setBounds(0,0,this.getSize().width,20);//将菜单栏添加到容器中c.add(menuBar);3.添加菜单栏按钮---实现一个实例JMenu menuFile=new JMenu("文件");//将菜单栏的选项添加到菜单栏中menuBar.add(menuFile);4.添加工具栏按钮JToolBar toolBar;//添加工具栏toolBar=new JToolBar();//设置工具栏不可移动toolBar.setFloatable(false);//将工具栏添加到容器中toolBar.setBounds(0,20,this.getSize().width,30);c.add(toolBar);5.添加工具栏按钮------实现一个实例JButton btn_1=new JButton(new ImageIcon("res/新建.png"));//给按钮添加提示信息btn_1.setToolTipText("新建交互层");//将按钮添加到工具栏中toolBar.add(btn_1);6.添加主面板控件JTabbedPane paneLeft;JPanel panel;panel=new JPanel();panel.setBounds(0,0,(int) ((200.0/1000)*this.getSize().width),this.getSize().height-50);panel.setLayout(null);//在桌面面板左边添加选项卡面板paneLeft=new JTabbedPane(JTabbedPane.LEFT);paneLeft.setBounds(0,0,(int)((200.0/1000)*this.getSize().width),this.getSize().height-50);panel.add(paneLeft);desktopPane.add(panel);c.add(desktopPane);7.添加左侧分裂面板JTabbedPane paneLeft;JPanel panel;JSplitPane splitLeft;panel=new JPanel();panel.setBounds(0,0,(int) ((200.0/1000)*this.getSize().width),this.getSize().height-50);panel.setLayout(null);//在桌面面板左边添加选项卡面板paneLeft=new JTabbedPane(JTabbedPane.LEFT);paneLeft.setBounds(0,0,(int)((200.0/1000)*this.getSize().width),this.getSize().height-50);panel.add(paneLeft);desktopPane.add(panel);c.add(desktopPane);//图层数据控制面板splitLeft=new JSplitPane(JSplitPane.VERTICAL_SPLIT);splitLeft.setDividerLocation(300);JTabbedPane leftJPanel=new JTabbedPane(JTabbedPane.TOP);JScrollPane scrollTuzu=new JScrollPane();JPanel scrollPane=new JPanel(new GridLayout(0,5));leftJPanel.addTab("图组",scrollTuzu);leftJPanel.addTab("工具箱",scrollPane);splitLeft.setTopComponent(leftJPanel);/*splitLeft.setBottomComponent(leftJTabbedPane); */paneLeft.addTab("",new ImageIcon("res/图层数据属性控制.png"),splitLeft);二、地面资料统计1、单选框ButtonGroup bg;bg = new ButtonGroup();JRadioButton radiobutton6=new JRadioButton("大于等于",true);radiobutton6.setBounds(250, 50, 110, 30);radiobutton6.setFont(font);Panel.add(radiobutton6);bg.add(radiobutton6);JComboBox comboBox1=new JComboBox(new MyComboBox1());comboBox1.setBounds(370, 50, 80, 30);Panel.add(comboBox1);JRadioButton radiobutton7=new JRadioButton("等于",false);radiobutton7.setBounds(250, 80, 80, 30);radiobutton7.setFont(font);Panel.add(radiobutton7);bg.add(radiobutton7);JRadioButton radiobutton8=new JRadioButton("小于等于",false);radiobutton8.setBounds(250, 110, 110, 30);radiobutton8.setFont(font);Panel.add(radiobutton8);bg.add(radiobutton8);2、下拉框JComboBox comboBox1=new JComboBox(new MyComboBox1());comboBox1.setBounds(370, 50, 80, 30);Panel.add(comboBox1);public class MyComboBox1 extends AbstractListModel implements ComboBoxModel{ String[] test={"全国","省份","城市"};String selecteditem=test[0];public Object getElementAt(int index){return test[index];}public int getSize(){return test.length;}public void setSelectedItem(Object item){selecteditem=(String)item;}public Object getSelectedItem(){return selecteditem;}public int getIndex(){for(int i=0;i<test.length;i++){if(test[i].equals(getSelectedItem()))return i;break;}return 0;}}三、三线图1、创建三线图面板setBounds(100,100,1000,700);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);setTitle("三线图");2、添加分裂面板private JSplitPane mySplitPane;private JPanel labelLeft;private JLabel lab_color_change;mySplitPane = new JSplitPane();labelLeft = new JPanel();labelLeft.setLayout(null);JTabbedPane myTabbedPane;myTabbedPane = new JTabbedPane();lab_color_change = new JLabel("颜色改变实例");lab_color_change.setBounds(50,37,200,50);labelLeft.add(lab_color_change);mySplitPane.setRightComponent(labelLeft);JPanel lab_tuxingcaozuo = new JPanel();//选项卡之一:图形操作JPanel lab_beijingshezhi = new JPanel();//选项卡二:背景设置myTabbedPane.addTab("图形操作", lab_tuxingcaozuo);lab_tuxingcaozuo.setLayout(null);myTabbedPane.addTab("背景设置", lab_beijingshezhi);mySplitPane.setLeftComponent(myTabbedPane);getContentPane().add(mySplitPane);mySplitPane.setDividerLocation((this.getSize().width)/5*1); 3、添加左侧面板基本内容JTextPane textPane = new JTextPane();textPane.setBounds(37, 10, 106, 84);lab_tuxingcaozuo.add(textPane);JButton btnNewButton_2 = new JButton("隐现");btnNewButton_2.setBounds(21, 117, 70, 23);lab_tuxingcaozuo.add(btnNewButton_2);JButton btnNewButton_3 = new JButton("标签");btnNewButton_3.setBounds(101, 117, 70, 23);lab_tuxingcaozuo.add(btnNewButton_3);JButton btn_color = new JButton("颜色");btn_color.setBounds(21, 160, 70, 23);lab_tuxingcaozuo.add(btn_color);JButton btnNewButton_5 = new JButton("宽度");btnNewButton_5.setBounds(101, 160, 70, 23);lab_tuxingcaozuo.add(btnNewButton_5);ButtonGroup myButtonGroup = new ButtonGroup();JRadioButton rdbtnNewRadioButton = new JRadioButton("时间轴向左",true);rdbtnNewRadioButton.setBounds(37, 214, 121, 23);myButtonGroup.add(rdbtnNewRadioButton);;lab_tuxingcaozuo.add(rdbtnNewRadioButton);JRadioButton rdbtnNewRadioButton_1 = new JRadioButton("时间轴向右",false);rdbtnNewRadioButton_1.setBounds(37, 256, 121, 23);myButtonGroup.add(rdbtnNewRadioButton_1);lab_tuxingcaozuo.add(rdbtnNewRadioButton_1);JLabel lblNewLabel = new JLabel("时间间隔");lblNewLabel.setBounds(31, 313, 60, 15);lab_tuxingcaozuo.add(lblNewLabel);textField = new JTextField();textField.setBounds(94, 310, 33, 21);lab_tuxingcaozuo.add(textField);textField.setColumns(10);JLabel lblNewLabel_1 = new JLabel("小时"); lblNewLabel_1.setBounds(138, 313, 43, 15);lab_tuxingcaozuo.add(lblNewLabel_1);JCheckBox chckbxNewCheckBox = new JCheckBox("只填风"); chckbxNewCheckBox.setBounds(37, 354, 103, 23);lab_tuxingcaozuo.add(chckbxNewCheckBox);JLabel lblNewLabel_2 = new JLabel("开始时间"); lblNewLabel_2.setBounds(37, 399, 106, 15);lab_tuxingcaozuo.add(lblNewLabel_2);textField_1 = new JTextField();textField_1.setBounds(37, 424, 106, 23);lab_tuxingcaozuo.add(textField_1);textField_1.setColumns(10);JLabel lblNewLabel_3 = new JLabel("结束时间"); lblNewLabel_3.setBounds(37, 464, 106, 15);lab_tuxingcaozuo.add(lblNewLabel_3);textField_2 = new JTextField();textField_2.setColumns(10);textField_2.setBounds(37, 489, 106, 23);lab_tuxingcaozuo.add(textField_2);JButton btnNewButton = new JButton("存图"); btnNewButton.setBounds(21, 580, 70, 23);lab_tuxingcaozuo.add(btnNewButton);JButton btnNewButton_1 = new JButton("退出");btnNewButton_1.setBounds(101, 580, 70, 23);lab_tuxingcaozuo.add(btnNewButton_1);4、设置面板起始位置在屏幕正中间。

java实验报告 动画设计

java实验报告    动画设计

:****姓名:**** 学号:******0127Java实验报告(九):动画特效一、实验目的1. 掌握Applet的绘图方法。

2. 掌握Applet的动画技术。

3. 掌握AWT 中的组件的创建及使用。

二、实验内容:编写一个具有GUI的Java程序。

实训例子:编写一个Java程序,Applet中的动画:物体的垂直上抛运动,并且利用刻度条控制初速度。

三、实验步骤:1) 、创建Java 类。

在“包资源管理器”中用鼠标右击项目“Practical”,选择快捷菜单中“新建”→“Visual Class”;在打开的“New Java Visual Class ”窗口中,“源文件夹”的默认值是项目的文件夹,不需要更改,“包”栏中输入程序包的名称“ch8”。

“名称”栏中输入类名“Sujian”,在“Style ”列表框中选择“AWT”→“Applet”,单击“完成”按钮,一个含有GUI 程序界面以及代码的编辑器窗口被打开。

将类的属性“layout”改为“BorderLayout”。

2) 、添加组件。

首先在“Palette”面板中打开“A WT Controls”界面,单击“Panel”将其置于程序界面的“North”处,并将属性改为“FlowLayout”,再单击“Scrollbar”,将其置于程序界面的“South”处,并将其“orientation”属性改为“HORIZONTAL”,修改maximum 属性为25,minimum属性为8。

从“Pallete”工具栏中依次单击组件“button”选择一个“button”。

更改“button”组件的属性为“上抛”如下所示。

3)、在编译器中修改类声明为:public class Sujian extends Applet implements Runnable 添加run()方法:public void run() {while(true){T+=0.1;S=V*T-0.5*G*T*T;if(S<=0){S=0;repaint();break;}repaint();try{Thread.sleep(100);}catch(Exception e){ break; } }}}添加类的成员变量声明:private double S,V,T;private final double G=9.8;其中S、V、T分别代表位移、初速度、时刻。

大学软件工程专业实习报告(优秀范文五篇)

大学软件工程专业实习报告(优秀范文五篇)

《大学软件工程专业实习报告(优秀范文五篇):》摘要:学号: 姓名: 指导老师: 实习成果: 实习地点: 实习时间:2011-6-29至 2011-10-29 在现今社会,就业问题就似乎总是围绕在我们的身边,成了说不完的话题,实习期间,第一阶段:主要学习了 Unix 开发环境(Unix 系统原理, Unix 常用命令, Unix开发环境 ; java 语言基础(算法基础,常用数据结构,企业编程规范 ; java 面向对象, JDK 核心 API ;并做了一个“在线考试系统项目”,语言(SQL 语言基础和提高, SQL 语句调优 ; Oracle 数据库开发; javaSE 核心编程; XML ; JDBC ;并粗略的完成“在线考试系统” 的数据部分20xx年x月,我离开了学校,进入了最后一学期的顶岗实习阶段。

从离开学校的那天起,我就当自己是一个正式的员工,做好了经历重重困难的准备,我始终坚信,我的努力与坚持不懈不会白费,我的未来不是梦。

一、实习单位介绍南京xx有限公司是我现在实习的单位,它成立于xx年,是从事教育软件、数字化教学资源、多媒体产品等开发、制作的专业公司;是江苏省信息产业厅认定的双软企业、江苏省新闻出版局审核认定的电子出版物开发制作单位。

公司长期承担高校及教育管理部门的数字化教学资源、教务教学、实验科研等管理系统的开发和信息化项目建设。

如:《数字化教学资源库-名师名课网系统》、《OA办公系统》等多个系统平台。

智风公司多年来致力于网络课程的建设服务工作,拥有一支专业化的开发团队,通过严格的开发流程和创新的教学理念为广大院校提供优质的服务。

专业化的研发队伍:从教学设计、技术开发,到交互设计、视觉设计、资源素材制作等各个方面,全面解决您的后顾之忧;丰富的开发经验:业已开发的课程中有42门被评为精品课程,累计开发的网络课程已逾1000门。

二、实习岗位、主要过程、主要内容、主要工作、收获我在该公司任职软件开发工程师,刚实习的第一个星期,主要的工作是熟悉公司的开发框架及开发流程,及时完成项目经理派发的任务。

中南民族大学JavaEE实验报告(聊天室,购物车)

中南民族大学JavaEE实验报告(聊天室,购物车)

院系:计算机科学学院专业:年级:课程名称: Java EE学号:姓名:学号:姓名:学号:姓名:学号:姓名:指导教师:2012年 3月 13日4、登录成功界面源代码如下:1、登录页面代码:login.html<!--To change this template, choose Tools | Templatesand open the template in the editor.--><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>欢迎登陆聊天室</title></head><body bgcolor="#FFFFFF" background="D:\java_ee\ChatRoom\images\loginback.jpg"> <h1 align="center"><br> </h1><h1 align="center"><b>欢迎登陆聊天室</b></h1> <form name="login" action="Main" method ="post"><p> </p><table width="52%" border="2" align="center"><tr bgcolor="#00eeee"><td align="center" width="43%"> <div align="center">用户名:</div></td><td width="57%"> <div align="left"><input type="text" name="username"></div></td></tr><tr bgcolor="#00eeee"><td align="center" width="43%"> <div align="center">密码:</div></td><td width="57%"> <div align="left"><input type="password" name="password"></div></td></tr></table><p align="center"><input type="submit" name="Submit2" value="提交"><input type="reset" name="Reset" value="重置"></p></form></body></html>2、判断登录界面main.java/** To change this template, choose Tools | Templates* and open the template in the editor.*/package com.servlet;import java.io.*;import .*;import javax.servlet.*;import javax.servlet.http.*;/**** @author huxiao*/public class Main extends HttpServlet {/*** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.* @param request servlet request* @param response servlet response* @throws ServletException if a servlet-specific error occurs* @throws IOException if an I/O error occurs*/protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");RequestDispatcher dispatcher;String username=request.getParameter("username");if(username==null)username="";String password=request.getParameter("password");if(password==null)password="";usernameServlet tempMem=new usernameServlet(request.getParameter("username"),request.getParameter("password"));if(tempMem.isMember(getInitParameter("MemFilePath")+"memberInfo.txt")){ //创建会话,将成功登陆后的用户名写入session以便后面使用String name=request.getParameter("username");HttpSession session=request.getSession(true);session.setAttribute("username", name);dispatcher=request.getRequestDispatcher("loginsucess");dispatcher.forward(request, response);}else{dispatcher = request.getRequestDispatcher("loginfail");dispatcher.forward(request, response);}}// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">/*** Handles the HTTP <code>GET</code> method.* @param request servlet request* @param response servlet response* @throws ServletException if a servlet-specific error occurs* @throws IOException if an I/O error occurs*/@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {processRequest(request, response);}/*** Handles the HTTP <code>POST</code> method.* @param request servlet request* @param response servlet response* @throws ServletException if a servlet-specific error occurs* @throws IOException if an I/O error occurs*/@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {processRequest(request, response);}/*** Returns a short description of the servlet.* @return a String containing servlet description*/@Overridepublic String getServletInfo() {return "Short description";}// </editor-fold>}3、对用户名和密码的归类usernameServlet.java/** To change this template, choose Tools | Templates* and open the template in the editor.*/package com.servlet;import java.io.*;import java.util.HashMap;/*** 成员类* @author Josh*/public class usernameServlet {private String name;private String password;usernameServlet(){name=null;password=null;}usernameServlet(String paraName,String paraPassword){ name=paraName;password=paraPassword;}//赋值函数void setMemName(String Name){name=Name;}void setMemPassword(String Password){password=Password;}//取值函数String getMemName(){return name;}String getMemPassword(){return password;}//打印信息void printMemName(){System.out.print(name);}void printMemPassword(){System.out.print(password);}//通过读取本地成员信息,与自己比较,看自己是否是成员boolean isMember(String filePath) throws FileNotFoundException, UnsupportedEncodingException{BufferedReader file;String tempName,tempPassword; //用于暂存从文件中读取的信息HashMap hashMember=null;//解决读取中文txt错误问题InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath),"gb2312");file=new BufferedReader(isr);try{while((tempName=file.readLine())!=null){tempPassword=file.readLine();if(hashMember==null) //哈希表不存在时才new一个新的hashMember=new HashMap();hashMember.put(tempName,tempPassword);}file.close();}catch(IOException e){System.out.print("读取数据错误!");}if(hashMember.containsKey(name)){if(password.equals(hashMember.get(name))){System.out.print("登录成功!");return true;}else{System.out.print("密码错误,请重新输入密码!");return false;}}else{System.out.print("此用户不存在,请重新输入!");return false;}}}4、登录成功sucesslogin.java/** To change this template, choose Tools | Templates* and open the template in the editor.*/package com.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.*;import javax.servlet.http.*;/**** @author huxiao*/public class loginsucess extends HttpServlet {protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { //TODO Method stub generated by Lombozresponse.setContentType("text/html;charset=gb2312");String name=request.getParameter("username");HttpSession session=request.getSession();String history =(String)getServletContext().getAttribute("Counter");if(history==null)history="0";String temp =(String)getServletContext().getAttribute("online");if(temp==null)temp="0";PrintWriter out = response.getWriter();try{out.println("<meta http-equiv=\"refresh\" content=\"10\" url=response.encodeURL(\"ChatRoom\")>");out.println("<html><head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"> <title>聊天室"+"</title></head>");out.println("<body bgcolor=\"#FFFFFF\" background=\"D:\\java_ee\\ChatRoom\\images\\mainback.jpg\">");out.println("<h2 align=\"center\"><blink>欢迎来到聊天室"+"</blink><h2>");out.println("<marquee bgcolor=#00aabb behavior=alternate><<<<<<<<希望大家聊的开心>>>>>>>"+"</marquee>");out.println ("<h4>在线人数:"+temp+"<br>"+"历史访问次数:"+history+"</h4>");out.println("<p>");String tempHistory=(String)getServletContext().getAttribute("getmessage");if(tempHistory==null)tempHistory="\r\n";out.println("<textarea cols=\"70\" rows=\"23\" name=\"getmessage\"style=\"overflow:auto background-color:BFCEDC\">"+tempHistory+"</textarea>");out.println();out.println("</p>");out.println("<p >");out.println("<form name=\"form\" action=\"outservlet\" method=\"get\">");out.println("<textarea cols=\"70\" rows=\"8\" style=\"#b1b1b1\"name=\"setmessage\">");out.println("</textarea><br>");out.println("<input align=\"center\" type=\"submit\" name=\"tj\" value=\"发送\">");out.println("<input align=\"center\" type=\"reset\" name=\"qx\" value=\"取消\">");out.println("</p>");out.println("</form></body></html>");}finally{out.close();}}protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();String user=request.getParameter("username");session.setAttribute("user", request.getParameter("username"));processRequest(request,response);}}5、登录失败faillogin.java/** To change this template, choose Tools | Templates* and open the template in the editor.*/package com.servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;/**** @author huxiao*/public class loginfail extends HttpServlet {protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { //TODO Method stub generated by LombozdoPost(request,response);}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { //TODO Method stub generated by Lombozresponse.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head>");out.println("<title>");out.println("登录失败");out.println("</title>");out.println("</head>");out.println("<body>");out.println("登录失败!!!请重新登录。

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

《Java语言与面向对象程序设计基础》课程
实验报告四
姓名:xxx
学号:20097110080xxx
实验题1
[实验要求]
•掌握Java IO流处理
•掌握文件操作
•掌握多线程程序设计
[实验程序]
import java.io.*;
public class Test4_1 {
public static void main(String[] args) {
try {
File myDir=new File("C:/Test");
if ( !myDir.exists()) myDir.mkdir();
else if ( !myDir.isDirectory()) {
System.err.println(" 'C:/Test' is not a directory");
return;
}
File f=new File(myDir,"a.txt");
f.createNewFile();
FileWriter out = new FileWriter(f);
for (int i=0;i<26;i++){
out.write((char)('A'+i));
}
out.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
[运行结果]
[实验结论与收获]
掌握文件及文件夹的创建及文件的写入。

实验题2
[实验要求]
将实验1题中新建的"a.txt"文件内容复制到"C:\Test\Ex"目录中"b.txt"文件中。

[实验程序]
import java.io.*;
public class Test4_2 {
public static void main(String[] args) {
try {
File myDir=new File("C:/Test/Ex");
if ( !myDir.exists()) myDir.mkdir();
else if ( !myDir.isDirectory()) {
System.err.println(myDir+ " is not a directory");
return;
}
File myFile =new File(myDir,"b.txt");
myFile.createNewFile();
FileReader in= new FileReader("C:/Test/a.txt");
BufferedReader bufIn = new BufferedReader(in);
FileWriter out= new FileWriter (myFile);
BufferedWriter bufOut= new BufferedWriter(out);
String line;
line = bufIn.readLine();
//System.out.println(line);
while ( line!= null ) {
System.out.println(line);
bufOut.write(line,0,line.length());
bufOut.newLine();
line = bufIn.readLine();
}
bufIn.close();
bufOut.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
[运行结果]
[实验结论与收获]
掌握文件读取和写入。

实验题3
[实验要求]
•将实验1题中新建的“a.txt”文件中写入字符“*”,替换第6个字符。

[实验程序]
import java.io.*;
public class Test4_3 {
public static void main(String[] args) {
try {
RandomAccessFile r = new RandomAccessFile("C:/Test/a.txt","rw");
r.seek(5);
r.write('*');
r.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
[运行结果]
[实验结论与收获]
掌握随机文件创建与写入。

实验题4
[实验要求]
•调试并记录多线程程序(生产者/消费者实例)结果。

•体会多线程机制。

[实验程序]
Consumer.java
class Consumer implements Runnable{
SStack theStack;
public Consumer(SStack s){
theStack = s;
}
public void run(){
char c;
for (int i=0;i<20;i++) {
c = theStack.pop();
System.out.println("Consumed: "+c);
try{
Thread.sleep((int)(Math.random()*1000));
}catch(InterruptedException e){}
}
}
}
Producer.java
class Producer implements Runnable{
SStack theStack;
public Producer(SStack s){
theStack = s;
}
public void run(){
char c;
for(int i=0; i<20; i++){
c =(char)(Math.random()*26+'A');
theStack.push(c);
System.out.println("Produced: "+c);
try{
Thread.sleep((int)(Math.random()*100));
}catch(InterruptedException e){}
}
}
}
SStack.java
class SStack{
private int index = 0;
private char []data = new char[10];
public synchronized void push(char c){
while(index == data.length){
try{ this.wait();
}catch(InterruptedException e){ }
}
this.notify();
data[index] = c;
index++;
}
public synchronized char pop(){
while(index ==0){
try{ this.wait();
}catch(InterruptedException e){ } }
this.notify();
index--;
return data[index];
}
}
STest.java
public class STest{
public static void main(String args[]){
SStack stack = new SStack();
Runnable p=new Producer(stack);
Runnable c = new Consumer(stack);
Thread t1 = new Thread(p);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
[运行结果]
[实验结论与收获]
掌握多线程应用。

相关文档
最新文档