西安邮电大学JAVA实验(3,4)
西电计算机Java上机实验报告参考模板
西安电子科技大学Java课程上机练习题(2016年度)上机报告班级:姓名:学号:一、J ava语言基础1、实验目标:掌握Java语法;掌握Java程序结构;掌握Java编译、调试、运行的方法。
2、实验要求:编写一个程序,程序提供两种功能:(1)用户输入一个整数,程序计算并输出从1开始到该整数的所有整数之和;同时,计算并输出不大于该整数的所有素数的数目。
(2)用户输入一个数字串,程序判断该数字串各位上数字的奇偶性,并分别输出奇、偶数位的计数值及各位的加和值。
3、题目分析:判断整数是素数要构建一个测试类,然后统计是素数的个数;数字串需要判断每位的数字的奇偶性,则要将数字串转化为数组的形式,然后进行奇偶判断,进行统计。
4、题目设计实现:分别设计判断素数、整数求和、格式转变、判断奇偶性、各位求和的函数。
5、实现过程://判断一个数是否是素数public static boolean isPrime(int a){boolean flag = true;if(a<2)return false;elsefor(int i = 2;i<=Math.sqrt(a);i++){if(a%i == 0)flag = false;}return flag;}//在main函数计算求和及判断public static void main(String []args){int sum=0,j=0;Scanner sc = new Scanner(System.in);System.out.println("请输入一个数计算他的和");int num = sc.nextInt();for(int i=1;i<=num;i++){sum = sum + i;if(isPrime(i))j++;}System.out.println("这个数的和为"+sum+"\n素数有"+j+"个");//输入一个字符串并转化为数字存放到数组中public static void main(String[] args){System.out.println("请输入一串数字串");Scanner scan = new Scanner(System.in);String line = scan.next();int odd=0,even=0,sumo=0,sume=0;char[] c = line.toCharArray();//求和for(int i = 0; i<line.length(); i++){if((int)c[i]%2 == 0){even++;sume = sume +(int)c[i]-48;}else{sumo = sumo +(int)c[i]-48;odd++;}}System.out.println("奇数共有"+odd+"个\n"+"奇数和为"+sumo);System.out.println("偶数共有"+even+"个\n"+"偶数和为"+sume);}6、实验结果:7、个人总结:通过这次基础练习,对Java的各种规范和函数调用有了一定的熟悉,因为之前的编过类似的,所以用Java上手没有很陌生,算是一个很好的入门基础。
Java类与对象实验报告
西安邮电大学(计算机学院)课实验报告实验名称:类与对象专业名称:计算机科学与技术班级:计科1405班学生:高宏伟学号:04141152指导教师:霞林实验日期:2016.9.29一、实验目的通过编程和上机实验理解Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP 方式进行程序设计的方法。
二、实验要求1.编写一个创建对象和使用对象的方法的程序。
2.编写一个包含类成员和示例成员的程序。
3.编写一个使用Java包的程序。
三、实验容(一)三角形、梯形和圆形的类封装✧实验要求:编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
具体要求如下:a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。
b) Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。
c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。
✧程序模板:AreaAndLength.javaclass Trangle{double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c){this.sideA=a; //【代码1】参数a,b,c分别赋值给sideA,sideB,sideCthis.sideB=b;this.sideC=c;if((sideA+sideB)>sideC&&(sideC+sideB)>sideA&&(sideC+sideA)>sideB)//【代码2】a,b,c构成三角形的条件表达式{boo=true;//【代码3】给boo赋值。
西安邮电大学java类与对象实验报告
西安邮电⼤学java类与对象实验报告西安邮电⼤学(计算机学院)Java程序设计课内实验报告实验名称:类与对象专业名称:软件⼯程班级:学⽣姓名:学号(8位):指导教师:实验⽇期:2014年4⽉2⽇⼀. 实验⽬的及实验环境理解类与对象的概念,掌握Java 类的定义(域、⽅法)、创建对象和使⽤对象。
理解包的概念,会创建包,引⼊包。
掌握访问权限规则。
环境:eclipse⼆. 实验内容1. 设计Point 类⽤来定义平⾯上的⼀个点,⽤构造⽅法传递坐标位置。
默认构造⽅法创建坐标原点,带参数构造⽅法根据指定坐标创建⼀个点对象。
提供get、set ⽅法返回和设置坐标。
distance 返回两个点之间距离或当前点到指定坐标之间的距离。
同时设计应⽤类进⾏测试。
2. 设计⼀个三⾓形类,能判断给定三边是否构成三⾓形,能判断三⾓形的类型(普通、等腰、等边、直⾓,⽤枚举类型(参见第六章))能计算周长与⾯积。
并在应⽤类中演⽰。
3.定义⼀个Line 类,该类包含两个Point 类型的实例变量,⽤以表⽰线段的两个端点。
提供以下⽅法:计算线段长度;判断线段是否⽔平、判断是否为垂直、计算线段斜率、计算线段中点、判断两条线段是否相等。
并在应⽤类中演⽰。
4.定义两个包p1、p2,三个类C1、C2、C3.其中C1、C2 位于p1 中,C3 位于p2 中。
在C1 中定义四个不同访问控制修饰类型的变量,在C2、C3 中进⾏访问测试。
并练习在JDK 命令⾏下⽣成包。
三.⽅案设计对于第⼀题,⽤了staticstatic double distance(Point p1,Point p2){return Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));}对于第⼆题,采⽤if –else,严谨的判断三⾓形的形状public void judge(){if(a==b || b==c || c==a){if(a==b && b==c)System.out.println("该三⾓形为等边三⾓形。
西安邮电大学可编程逻辑实验报告
可编程逻辑实验院系名称 :电子工程学院学生姓名 : 专业名称 : 电子科学与技术班 级 :学号 :实验名称:门电路的设计实验一:用原理图输入法设计门电路实验目的:1.掌握PLD芯片的基本使用方法,熟悉EDA软件MAX+plus的操作。
1.学会利用软件仿真和实现用硬件对数字电路的逻辑功能进行验证和分析。
器材:PC实验内容:实现1、F=/AB 2、F=AB+CD实验结果:1.F=/AB原理图:仿真结果:2.F=AB+CD原理图:仿真结果:实验二:用原理图输入法设计门电路实验目的:1.进一步掌握PLD芯片的基本使用方法,熟悉EDA软件MAX+plus的操作。
2.学会利用软件仿真和实现用硬件对数字电路的逻辑功能进行验证和分析。
3.学习初步的VHDL程序设计方法。
器材:PC实验内容:实现3、F=A⊕B4、F=/abc+/d实验结果:3、F=A⊕B源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity xor2 isport(a,b:in std_logic;F:out std_logic);end;architecture main of xor2 isbeginF<=a xor b;end;仿真结果:4、F=/abc+/d源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity zhonghe isport(a,b,c,d:in std_logic;F:out std_logic);end;architecture main of zhonghe issignal g,h,y,m,n:std_logic;beginm<=not a;g<=m and b;h<=g and c;n<=not d;y<=h or n;F<=y;end;仿真结果:实验小结:本实验为第一次DEA实验,不免有些兴奋和好奇,加之老师讲的比较好,所以基本上没有遇到什么问题。
西邮计算机学院java实验报告
网络程序设计报告书系部名称:计算机学院专业班级:学生姓名:学生学号:一、实验目的1.掌握TCP/IP体系结构中端口、套接字、TCP协议概念;2.掌握TCP SOCKET的ServerSocket和Socket;3.掌握TCP SOCKET技术中多线程技术。
二、实验内容1.学习TCP/IP体系结构,理解什么是SAP、端口、套接字的概念;掌握TCP 传输模式和netstat命令的用途;2.学习为TCP服务的Socket和ServerSocket类的使用,掌握TCP连接的方法,服务器接收客户端连接请求的方法,创建输入/输出流的方法,传输数据的方法,以及关闭流和套接字,注意可能会出现的异常操作;3.完成以下各内容程序,截存运行结果图,并提交实验报告。
三、实验内容1.在Windows下使用netstat命令,查看本地计算机开放端口。
获得/help,分别测试-s -e –r -a –n及其组合。
2.简单的单线程,一问一答式通信的TCP Server和TCP Client,注意在编译源代码时有个提示“某API已经过时”,找到该API类或者方法。
在运行程序时,注意通信双方是否随时输入,如果不能,考虑可能是什么原因造成的。
位置2的语句不能放在位置1,因为main方法是个静态的方法,所以除非定义为静态的。
位置2不能放在位置三处,因为代码块是封闭的,第二个try{}里面将会看不到,另一个try{}里面的定义。
2.以下代码是个非常经典的用户自定义一问一答协议,在这里只需要修改服务器端程序即可,添加了GreetingProtocol.java(自定义协议),调试并修改协议使程序可以正常运行。
//服务器端import java.io.*;import .*;public class MyServer{public static void main(String [] args){//TCP通信,作为服务器ServerSocket serverSocket = null;//首先建立服务器try{serverSocket = new ServerSocket(1080);//端口号唯一标是本进程System.out.println("Server is Listening Now");}catch(IOException e){System.err.println("Can't listen on port");System.exit(1);}//接受客户端连接Socket clientSocket = null;try{clientSocket = serverSocket.accept(); //connectSystem.out.println("已经连接上!!");}catch(IOException e){System.err.println("Accept failed");System.exit(1);}try{PrintStream out = new PrintStream(new BufferedOutputStream(clientSocket.getOutputStream(), 1024) ,false);DataInputStream in = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));String inputLine, outputLine;GreetingProtocol greeting = new GreetingProtocol();//自定义协议outputLine = greeting.processInput(null);//输出操作out.println("Welcome to My Chat Server"+" "+outputLine);out.flush();//立即将数据从输出缓存提交给网络发送//输入操作while((inputLine = in.readLine()) != null){outputLine = greeting.processInput(inputLine); //协议处理out.println(outputLine);out.flush();if(outputLine.equals("bye")) break;}out.close();//流关闭in.close();clientSocket.close();//套接字关闭serverSocket.close();}catch(IOException e){System.err.println("Protocol Stream Error");}}}//协议//自定义协议import java.io.*;import .*;public class GreetingProtocol{private static final int WAITING = 0;private static final int SENDKNOCK = 1;private static final int SENDCLUE = 2;private static final int ANOTHER = 3;private static final int NUMJOKES = 5;private int state = WAITING;private int currentJoke = 0;private String [] clues = {"Turnip", "Little Old Lady", "Atch", "Lamp", "Godness"};private String [] answers = {"Turnip the heat, it's cold in here!","I did not know you could come!","Bless you", "Lamp is bright","Godness is happy"};public String processInput(String theInput){String theOutput = null;//System.out.println(state);if(state == WAITING){theOutput = "Knock! Knock!...";state = SENDKNOCK;}else if( state == SENDKNOCK){if(theInput.equalsIgnoreCase("Who's there?")){theOutput = clues[currentJoke];state = SENDCLUE;}elsetheOutput = "You are supposed to say \" Who's there? \"! Try again.";}else if( state == SENDCLUE){if(theInput.equalsIgnoreCase(clues[currentJoke] + "Who?")){theOutput = answers[currentJoke] + "Want another?(y/n)";state = ANOTHER;}else{theOutput = "You are supposed to say \"" + clues[currentJoke] + "Who? \"! Try again. Knock! Knock!!!";}}else if( state == ANOTHER){if(theInput.equalsIgnoreCase("y")){theOutput = "Knock! Knock!!!";if(currentJoke == (NUMJOKES - 1))currentJoke = 0;elsecurrentJoke ++;state = SENDKNOCK;}else{theOutput = "bye";state = WAITING;}}return theOutput;}}//客户端import java.io.*;import .*;public class Client {public static void main(String [] args){Socket ClientSocket = null;try {ClientSocket = new Socket("localhost",1080);PrintStream out = new PrintStream(new BufferedOutputStream(ClientSocket.getOutputStream(),1024),false);DataInputStream in = new DataInputStream(new BufferedInputStream(ClientSocket.getInputStream()));DataInputStream stdIn = new DataInputStream(System.in);String inputLine, outputLine;while((inputLine = in.readLine()) != null){System.out.println("server:"+inputLine);outputLine = stdIn.readLine();if(outputLine.equals("bye")) break;out.println(outputLine);out.flush();}out.close();//流关闭in.close();ClientSocket.close();//套接字关闭} catch (UnknownHostException e) {System.out.println("无法连接到服务器!!");e.printStackTrace();} catch (IOException e) {System.out.println("无法获得I/O流!!");e.printStackTrace();}}}运行结果如下:3.探测目标计算机开放的TCP端口import java.io.*;import .*;public class ScanPort{public static void main(String args[]) throws IOException{Socket comSocket = null;for(int i=0;i<1024; i++){try{//建立socket连接comSocket = new Socket("localhost", i);//发出连接请求System.out.println("Can get I/O for the Connection, Port:" + i);}catch(UnknownHostException e){System.err.println("Can't find the Server host");//System.exit(0);}catch(IOException e){System.err.println("Can't get I/O for the Connection, Port:" + i);//System.exit(0);}}try{comSocket.close();}catch(Exception e){}}}运行的结果如下:自作实验:1.自行编写一个一问一答的场景,例如,帐号登录场景,A:用户名?B:user。
Java第三次实验
实验4:修饰符与继承性一、实验目的了解如何使用类及其成员的修饰符,理解类的继承性,掌握方法的继承、重载和覆盖。
二、实验要求1.编写如何使用类及其成员的修饰符的程序。
2.编写如何通过传递参数来调用方法的程序。
3.编写体现类的继承性(成员变量、成员方法的继承)的程序。
三、实验内容(一)使用修饰符有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。
常用的修饰符有:public,private,protected,package,static,final,abstract等。
1.程序功能:通过两个类StaticDemo、KY4_1 来说明类变量与对象变量,以及类方法与对象方法的区别。
2.编写源程序KY4_1.java,程序源代码如下。
class StaticDemo {static int x;int y;public static int getX() {return x;}public static void setX(int newX) {x = newX;}public int getY() {return y;}public void setY(int newY) {y = newY;}}public class KY4_1 {public static void main(String[] args) {System.out.println("类变量x="+StaticDemo.getX());System.out.println("对象变量y="+StaticDemo.getY());StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println("类变量a.x="+a.getX());System.out.println("对象变量a.y="+a.getY());System.out.println("类变量b.x="+b.getX());System.out.println("对象变量b.y="+b.getY());}}3.编译并运行程序KY4_1.java,看看该程序是否有错?如果有错请在实验报告中指出出错的地方,出错的原因,并给出修改意见以及程序正确运行的结果。
西安邮电大学JAVA实验(3,4)
第三次线程实验:一. 实验目的及实验环境实验目的:1.理解JA V A中线程的同步和死锁2.掌握线程同步和互斥实验环境:eclipse 4.4二. 实验内容编程实现隧道通车问题。
内容如下:有一条隧道,同时允许一辆车通行,隧道两端各有多辆车等待通过,车辆只能等到隧道空闲才能被运行进入隧道。
一旦隧道中有车辆,则禁止其他车辆通过。
三.方案设计1.定义类Test,Car,CarType,Tunnel类2.在Test类中创建一个隧道Tunnel和多个车辆,观察结果四.测试数据及运行结果1.正常测试数据(3组)及运行结果;2.非正常测试数据(2组)及运行结果。
无五.总结1.实验过程中遇到的问题及解决办法;①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。
所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。
②对程序进行同步时,notify()方法会唤醒等待队列中的随机的一个线程,而notifyAll()方法会唤醒等待队列中的全部线程2.对设计及调试过程的心得体会。
①Java中的每个对象都有一个lock,当访问某个对象的synchronized方法时,该对象就会被上锁(注意,是对象,不是方法,假如你在这个类中定义了多个方法,如果你的线程访问到了其中的任意一个synchronized方法,那么其它的就暂时不能被访问了,必须等到该对象被解锁以后,即方法执行结束才行)。
解锁的意思是值线程执行该方法完毕,或者说过程中抛出了异常。
②wait,notify,notifyAllwait:Object类中的final方法,有InterruptedException。
它的作用是导致当前的线程等待,直到其它线程调用此对象的notify方法或者notifyAll方法,wait还有一些重用方法,传参数,比如说时间长度。
当前的线程必须拥有此对象监视器,然后该线程发布对此监视器的所有权并且开始等待,直到其它线程通过调用notify方法或者notifyAll方法,通知在此对象的监视器上等待的线程醒来,然后该线程将等到重新获得对监视器的所有权后才能开始执行。
西安邮电学院20112012全校课表
新校区2011-2012学年第一学期通信与信息工程学院本科课程表(一)
新校区2011-2012学年第一学期通信与信息工程学院本科课程表(四)
新校区2011-2012学年第一学期通信与信息工程学院本科课程表(五)
新校区2011-2012学年第一学期计算机学院本科课程表(二)
新校区2011-2012学年第一学期计算机学院本科课程表(三)
新校区2011-2012学年第一学期理学院本科课程表(一)
新校区2011-2012学年第一学期理学院本科课程表(一)
新校区2011-2012学年第一学期电子工程学院本科课程表(二)
新校区2011-2012学年第一学期电子工程学院本科课程表(三)
新校区2011-2012学年第一学期电子工程学院本科课程表(四)
新校区2011-2012学年第一学期电子工程学院本科课程表(五)
新校区2011-2012学年第一学期电子工程学院本科课程表(六)
新校区2011-2012学年第一学期经济与管理学院本科课程表(一)
新校区2011-2012学年第一学期经济与管理学院本科课程表(四)
新校区2011-2012学年第一学期自动化学院本科课程表(一)
新校区2011-2012学年第一学期自动化学院本科课程表(二)
新校区2011-2012学年第一学期自动化学院本科课程表(三)
新校区2011-2012学年第一学期人文社科学院本科课程表(一)
新校区2011-2012学年第一学期外语系本科课程表(一)
新校区2011-2012学年第一学期预科课程表(一)
新校区2011-2012学年第一学期数字媒体艺术系本科课程表(一)。
Java继承与多态实验报告
西安邮电大学(计算机学院)课内实验报告实验名称:继承与多态专业名称:计算机科学与技术班级:计科1405班学生姓名:高宏伟学号:04141152指导教师:刘霞林实验日期:2016.10.13一、实验目的通过编程和上机实验理解Java 语言的继承和多态特性,掌握变量的隐藏、方法的覆盖、重载,掌握抽象类和接口的使用。
二、实验要求1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。
2.编写体现类的多态性(成员方法重载)的程序。
3.编写体现类的多态性(构造方法重载)的程序。
4.编写使用接口的程序。
三、实验内容(一)类的继承1.创建公共类Student.(1)编写程序文件Student.java,源代码如下:public class Student{protected String name; //具有保护修饰符的成员变量protected int number;void setData(String m,int h) //设置数据的方法{name =m;number= h;}public void print() //输出数据的方法{System.out.println(name+", "+number);}}(2)编译Student.java,产生类文件Student.class。
2.创建继承的类Undergraduate(1)程序功能:通过Student 类产生子类undergraduate,其不仅具有父类的成员变量name()、number(学号),还定义了新成员变量academy(学院)、department (系)。
在程序中调用父类的print 方法。
(2)编写Undergraduate 程序:class Undergraduate extends Student{【代码1】//定义成员变量academy【代码2】//定义成员变量departmentpublic static void main(String args[]){【代码3】//创建一个学生对象s【代码4】//用父类的setData方法初始化对象s【代码5】//对象s调用print方法【代码6】//创建一个大学生对象u【代码7】//调用父类的成员方法setData初始化对象u【代码8】//设置对象u的成员变量academy【代码9】//设置对象u的成员变量departmentSystem.out.print(+", "+u.number+", "+u.academy+", "+u.department);}}(3)编译并运行程序注意:公共类Student 与undergraduate 类要在同一文件夹(路径)。
南邮Java实验报告1-综合图形界面程序设计
南邮Java实验报告1-综合图形界面程序设
计
自查报告。
在本次综合图形界面程序设计的实验中,我使用Java语言完成
了一个简单的图形界面程序。
在完成实验过程中,我对自己进行了
一些自查,总结如下:
1. 程序功能完整性,在设计程序时,我充分考虑了程序的功能
完整性,确保程序能够实现预期的功能。
我在自查过程中,对程序
进行了多次测试,确保程序的各个功能模块都能正常运行。
2. 代码规范性,我在编写代码的过程中,遵循了Java编程规范,确保代码的可读性和可维护性。
在自查过程中,我对代码进行
了排版和注释,确保代码的规范性。
3. 用户体验,在设计图形界面时,我考虑了用户体验,确保界
面简洁明了,操作方便。
在自查过程中,我对界面进行了多次优化,确保用户能够顺利使用程序。
4. 错误处理,在程序中,我考虑了各种可能出现的错误情况,
并进行了相应的错误处理。
在自查过程中,我对程序进行了多次异
常测试,确保程序能够正确处理各种异常情况。
在自查过程中,我发现了一些问题,并及时进行了修改和优化。
通过本次自查,我对自己的程序设计能力有了更深入的认识,也提
高了对程序质量的要求。
在今后的学习和工作中,我将继续努力,
不断提升自己的编程能力和程序设计水平。
西安邮电大学计算机学院数据结构课内实验报告(线性表的应用)
西安邮电大学(计算机学院)数据结构课内实验报告实验名称:线性表的应用专业名称:电子商务班级:学生姓名:学号(8位):指导教师:实验日期:2014年10 月15 日一. 实验目的及实验环境1.实验目的熟悉并掌握线性表如何构建,并学会线性表的基本应用和两种存储结构的实现2.实验环境VC++6.0二. 实验内容约瑟夫问题:编号为1、2、3…..,按顺时针坐在一张圆桌周围,每人持有一个密码,一个人选任意正整数为报数上限m,从第一个人开始报数报到m时停止报数,这个人出列,直到所有的人都出列,游戏结束。
用线性表的内容来实现这个程序。
三.方案设计第一步:建立n个节点的无头循环链表。
第二步:从链表的第一个节点开始计数,直到寻找到第m个节点第三步:输出该节点的id值,并将其password值,作为新的m值第四步:根据新的m值,继续删除节点,直到循环链表为空,程序结束四.测试数据及运行结果1.正常测试数据(3组)及运行结果;第一组:测试数据:9、5、2、3、4、1运行结果截图为:第二组:测试数据:5、2、6、1、2、3、4运行结果截图:运行结果截图:2.非正常测试数据(2组)及运行结果。
第一组:测试数据:1、0、2、0运行结果截图为:第二组:测试数据:0、0、0、0、0运行结果截图为:五.总结六.附录:源代码(电子版)#include<stdio.h>#include<stdlib.h>typedef struct node{int id;int password;struct node *next;}lnode,*list;list creat2(){lnode *head,*p,*q;int m,n=2;head=(lnode *)malloc(sizeof(lnode));head->next=NULL;q=head;printf("please input the initial password:");scanf("%d",&m);head->password=m;head->id=1;printf("please input(password):");scanf("%d",&m);while(m!=-1){p=(list)malloc(sizeof(lnode));p->password=m;p->id=n;q->next=p;q=p;printf("please input(password):");scanf("%d",&m);n++;}p->next=head;return head;}void print(lnode *q){lnode *p;printf("%4d,%4d\n",q->id,q->password);p=q->next;while(p!=q){printf("%4d,%4d\n",p->id,p->password);p=p->next;}printf("\n");}list front(list q){list p;p=q->next;while(p->next!=q)p=p->next;return p;}void deletee(list q){list p,r;int i,m=q->password;p=q;while(p->next!=p){i=1;while(i!=m){p=p->next;i++;}printf("%4d,%4d\n",p->id,p->password);p=front(p);r=p->next;p->next=r->next;m=r->password;free(r);p=p->next;}printf("%4d,%4d\n",p->id,p->password);}void main(){list head;head=creat2();printf("========打印队列原有情况==========\n");print(head);printf("==========打印出队情况==========\n");deletee(head);}西安邮电大学(计算机学院)数据结构课内实验报告实验名称:栈和队列的应用专业名称:电子商务班级:学生姓名:学号(8位):指导教师:衡霞实验日期:2014年11 月10 日一. 实验目的及实验环境1、实验目的掌握栈和队列的基本操作,实现栈或队列的基本应用2、实验环境VC++6.0二. 实验内容判断输入的一个字符串是否为回文三.方案设计第一步:建立一个顺序栈第二步:输入字符串的时候入栈第三步:出栈时也保存到一个数组中第四步:比较两个数组是否完全相同四.测试数据及运行结果1.正常测试数据(3组)及运行结果;第一组:测试数据:1、2、3运行结果:第二组:测试数据:a、b、c运行结果:第三组:测试数据:1、2、a、2、1运行结果:2.非正常测试数据(2组)及运行结果。
北航计软实验报告实验三
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2.快速排序
1)设置两个变量i、j,排序开始的时候: i=0, j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
实验报告
实验名称冒泡排序和快速排序
班级
学号
姓名
成绩
实验概述:
【实验目的及要求】
通过编程程序达到熟悉并掌握教材中所介绍的几种排序方法。
【实验原理】
1.冒泡排序
1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
b[i]=num;
}
printf("随机数产生完成\n");
for (i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n\n");
system("pause");
printf("\n\n");
com=0;
mov=0;
for (i=0;i<N;i++)
{
for (j=0;j<N-1;j++)
{
l++;
com++;
}
b[r]=b[l];
mov++;
西邮java 实验报告格式1
西安郵電學院网络程序设计课内实验报告书院系名称:计算机学院实验题目:InetAddressDemo和URL类学生姓名:高敏专业名称:网络工程班级:网络0904学号:04093147时间:2012年4月13日网络程序设计实验报告InetAddressDemo和URL类一、实验目的1.学习类库;2.学习Java网络编程基础类:InetAddress和URL类;3. 熟练掌握以上2个类的各种构造方法和常用方法,实现对网络资源信息的描述二、实验内容1.学习InetAddress类的使用,练习其常用方法:getLocalHost(),getByName(),getAllByName(),getByAddress()等;2.学习URL类的使用,练习对指定的URL解析,掌握常用方法:getProtocol(),getHost(),getPort(),getFile(),getRef()等;3.完成以下各内容程序,截存运行结果图,并提交实验报告。
三、设计与实现过程①使用InetAddress类,用于获得指定的计算机名称和IP地址1获得本机信息:2获得本地hosts文件中的纪录主机:3根据指定域名获得IP:4获得指定主机信息:5获得本地主机所有IP地址:6根据IP地址构造InetAddress:②采用URL类,用于解析在单行编辑框中输入的URL地址,分解出访问协议、主机名称、端口号以及文件路径名称:③利用URL类型实现从指定地址获得文本格式的HTML源文件:四、设计技巧及体会本次试验一共分为三大块,一个是InetAddress类的使用,一个是URL类的使用,还有一个是关于利用URL类型实现从指定地址获得文本格式的HTML源文件,汉字的乱码问题在于使用UTF-8编码就可以解决,试验内容大多可以理解,只是对于类的使用还太过生疏,以后要多加练习。
西安邮电大学编译基础原理词法分析
西安邮电大学(计算机学院)课内实验报告实验名称:词法分析器专业名称:班级:学生姓名:学号(8位):指导教师:实验日期:年月日一. 实验目的及实验环境设计一个词法分析器,并更好的理解词法分析实现原理,掌握程序设计语言中各类单词的词法分析方法,并实现对一种程序设计语言的词法分析。
二. 实验内容<字母表>→<变量><数字>|<变量>|<关键字>|<字母>|<分隔符><关键字>→abstract|assert|boolean|break|byte|case|catch|char|class| const|continue|default|do|double|else|enum|extends|final|finally| float|for|goto|if|implements|import|instanceof|int|interface|long native|new|package|private|protected|public|return|strictfp|short static|super|switch|synchronized|this|throw|throws|transient|try void|volatile|while<操作符>→+|++|-|--|*|/|=|==|%|!|!=|%|>|>=|>>|<|<=|<<|&|&&|~||||||^<数字>→<数字>.<数字>|0|1|2|3|4|5|6|7|8|9<字母>→A|B|...|X|Y|Z|a|b|...|x|y|z<分隔符>→;|,|.|(|)|{|}|[|]|”|’3.单词状态转换图4.算法描述读取文件到内存,逐个字母分析,并将连续的字母使用超前搜索组合成为变量或关键字;若是数字,则要判断是否为浮点数,即使用超前搜索的时候,判断扫描到的字符是否为小数点;若是分隔符或者操作符,则要到响应的表中查找并输出。
北邮java智能卡实验报告实验三电子钱包(一)
智能卡技术实验报告学院:电子工程学院班级:2011211204学号:**********姓名:实验三Java卡电子钱包程序一、实验目的建立Java卡电子钱包程序,并进行java卡程序的编译和调试二、实验设备PC机、智能卡读卡器、Java卡三、实验内容1、建立一个JavaCard工程2、编写电子钱包应用代码3、使用卡模拟器对应用代码进行编译调试4、使用Java卡对应用代码进行编译调试四、实验设计1、实验说明设计一个电子钱包小应用程序,应该至少能够实现以下功能:电子钱包的安装、选择与撤销选择、存款、借款、获取钱包余额以及身份验证。
2、流程图绘制A、总体框图B、存款模块图C、消费模块图D、PIN验证模块图E、查询余额模块图五、关键代码部分A、PIN的次数判断public boolean select(){//在选择钱包应用之前,对pin可尝试次数进行判断,若可尝试次数为零,即钱包已锁定,则该钱包应用不能被选择if(pin.getTriesRemaining()==0)return false;return true;}public void deselect(){//当钱包应用被取消选择是,将pin的状态清空为初始值pin.reset();}B、APDU入口public void process(APDU apdu) {byte[] buffer=apdu.getBuffer();/*APDU对象为JCRE临时入口点对象,它可以被任何应用所访问,负责传递终端发送的APDU命令。
通过APDU.getBuffer()命令即可以得到APDU对象的通信缓冲区,即APDU命令数组*/buffer[ISO7816.OFFSET_CLA]=(byte)(buffer[ISO7816.OFFSET_CLA]&(byte)0xFC) ;//判断命令头是否正确if((buffer[ISO7816.OFFSET_CLA]==0)&&(buffer[ISO7816.OFFSET_INS]==(byte)(0 xA4)))return;//若为select命令,则直接返回,不做其他操作if(buffer[ISO7816.OFFSET_CLA]!=Wallet_CLA)ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);/*若为其他命令,则判断命令CLA和INS是否能为钱包应用所支持,若为支持范围外的其他值,则返回对象的错误状态字*/switch (buffer[ISO7816.OFFSET_INS]) {case GET_BALANCE:getBalance(apdu);return;case DEBIT:debit(apdu);return;case CREDIT:credit(apdu);return;case VERIFY:verify(apdu);return;default:ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);}}C、存款模块private void credit(APDU apdu){if(!pin.isValidated())ISOException.throwIt(SW_PIN_VERIFICATION_REQUIRED);//钱包应用鉴权byte[] buffer=apdu.getBuffer();byte numBytes=(byte)(buffer[ISO7816.OFFSET_LC]);//取命令LC,并将之存储在numBytes中byte byteRead =(byte)(apdu.setIncomingAndReceive());/*接收APDU命令数据,并将之存储在APDU通信缓冲区的ISO7816.OFFSET.CDATA处,接着5字节的APDU命令头*/if ((numBytes!=1)||(byteRead!=1))//判断LC是否为1,否则抛出异常。
北邮java实验报告
JAVA实验报告信息工程27班项明钧2013210731一、设计思路1.首先定义一个student类,并对里面的变量进行定义并用构造方法进行初始化,构造方法中用到了this,对对象Set并get到对象属性。
2.定义了一个Graduatestudent对student进行继承,除了用super对student里原有属性可以直接继承,其余的增加属性用student里的方法用this,set和get构造。
3.主函数部分利用ArrayList将所有成员归于一个集合中并使用Comparator按照学号大小进行排序。
分别定义变量average,max,min,利用累加除以总个数算出average,利用逐个比较并替代得出max和min。
最后通过File g=new File将得到的学生信息序列和average,max,min输出到文件夹中的TXT文件中。
二 关键代码及注释分析1. student类的构造class student {public int age;public int number;public String name;public String sex;public student(int age,int number,String name,String sex){this.age=age;this.number=number;=name;this.sex=sex;2. getter和setter的方法public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getNumber() {return number;}public void setNumber(int number) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;3. Graduatestudent继承student的原有属性并增加新属性class Graduatestudent extends student{public String major;public String teacher;public int score;public Graduatestudent(int age,int number,String name,String sex,String major,String teacher,int score){super(age,number,name,sex);this.major=major;this.teacher=teacher;this.score=score;}public int getScore() {return score;}public void setScore(int score) {this.age = age;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public String getTeacher() {return teacher;}public void setTeacher(String teacher) {this.teacher = teacher;}public String toString(){return "age="+age+" number="+number+" name="+name+" sex="+sex+" major="+major+ " teacher="+teacher+ " score="+score;}} }4.按学号排序:Comparator OrderNumber=new Comparator() {public int compare(Object o1, Object o2) {Graduatestudent s1 = (Graduatestudent) o1;Graduatestudent s2 = (Graduatestudent) o2;return (int) (s1.getNumber() - s2.getNumber());}5.为不同学生赋值并统一归于集合中ArrayList <Graduatestudent>list = new ArrayList<Graduatestudent>();Graduatestudent a=new Graduatestudent(32,1,"zhang","female","xinxi","qin",165);Graduatestudent b=new Graduatestudent(55,2,"li","male","yixue","zhou",34);Graduatestudent c=new Graduatestudent(63,3,"wang","male","kuaiji","zhang",97);Graduatestudent d=new Graduatestudent(12,4,"chen","male","wuli","li",45);Graduatestudent e=new Graduatestudent(34,5,"gao","female","shuxue","qu",67);Graduatestudent f=new Graduatestudent(31,6,"xiang","male","buzhidao","mei",87);list.add(a);list.add(b);list.add(c);list.add(d);list.add(e);list.add(f);6.求平均值最大值最小值平均值double n=0;int brray[]={a.score,b.score,c.score,d.score,e.score,f.score};for(int i=0;i<brray.length;i++ )n=n+brray[i];double average=n/brray.length;System.out.println("average result: "+average);最大值int brray[]={a.score,b.score,c.score,d.score,e.score,f.score};int max=brray[0];int min=brray[0];for(int x=0;x<brray.length;x++ ){if(brray[x]>max)max=brray[x];}最小值for(int y=0;y<brray.length;y++ ){if(brray[y]<min)min=brray[y];}System.out.println("max result: "+max);System.out.println("min result: "+min);7.将结果输出到TXTFile g=new File("e://shuchu.txt");try {PrintWriter pw=new PrintWriter(g);pw.println(a);pw.println(b);pw.println(c);pw.println(d);pw.println(e);pw.println(g);pw.println("平均成绩"+average);pw.println("最小值"+min);pw.println("最大值"+max);pw.close();} catch (FileNotFoundException h) {// TODO Auto-generated catch blockh.printStackTrace();}8.总程序package xmj.jc;import java.io.*;import java.util.*;import java.util.ArrayList;import java.util.Collections;import parator;import java.util.List;class student {public int age;public int number;public String name;public String sex;public student(int age,int number,String name,String sex) {this.age=age;this.number=number;=name;this.sex=sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getNumber() {return number;}public void setNumber(int number) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String toString(){return "number="+number+", name="+name+", age="+age+", sex="+sex;}}class Graduatestudent extends student{public String major;public String teacher;public int score;public Graduatestudent(int age,int number,String name,String sex,String major,String teacher,int score){super(age,number,name,sex);this.major=major;this.teacher=teacher;this.score=score;}public int getScore() {return score;}public void setScore(int score) {this.age = age;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public String getTeacher() {return teacher;}public void setTeacher(String teacher) {this.teacher = teacher;}public String toString(){return "age="+age+" number="+number+" name="+name+" sex="+sex+" major="+major+ " teacher="+teacher+ " score="+score;}}public class xmj{public static void main(String[] args) {ArrayList <Graduatestudent>list = new ArrayList<Graduatestudent>();Graduatestudent a=new Graduatestudent(32,1,"zhang","female","xinxi","qin",99);Graduatestudent b=new Graduatestudent(55,2,"li","male","yixue","zhou",34);Graduatestudent c=new Graduatestudent(63,3,"wang","male","kuaiji","zhang",97);Graduatestudent d=new Graduatestudent(12,4,"chen","male","wuli","li",45);Graduatestudent e=new Graduatestudent(34,5,"gao","female","shuxue","qu",67);Graduatestudent f=new Graduatestudent(31,6,"xiang","male","buzhidao","mei",87);list.add(a);list.add(b);list.add(c);list.add(d);list.add(e);list.add(f);Comparator OrderNumber=new Comparator() {public int compare(Object o1, Object o2) {Graduatestudent s1 = (Graduatestudent) o1;Graduatestudent s2 = (Graduatestudent) o2;return (int) (s1.getNumber() - s2.getNumber());}};double n=0;int brray[]={a.score,b.score,c.score,d.score,e.score,f.score}; int max=brray[0];int min=brray[0];for(int i=0;i<brray.length;i++ )n=n+brray[i];double average=n/brray.length;for(int x=0;x<brray.length;x++ ){if(brray[x]>max)max=brray[x];}for(int y=0;y<brray.length;y++ ){if(brray[y]<min)min=brray[y];}System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);System.out.println(e);System.out.println(f);System.out.println("average result: "+average); System.out.println("max result: "+max);System.out.println("min result: "+min);File g=new File("e://shuchu.txt");try {PrintWriter pw=new PrintWriter(g);pw.println(a);pw.println(b);pw.println(c);pw.println(d);pw.println(e);pw.println(g);pw.println("平均成绩"+average);pw.println("最小值"+min);pw.println("最大值"+max);pw.close();} catch (FileNotFoundException h) {// TODO Auto-generated catch blockh.printStackTrace();}}}三 运行结果Eclipse截图输出文件夹截图输出文件内容截图。
西电JAVA第四次上机作业实验报告
JAVA第四次上机作业实验报告一、上机内容Java GUI编程实验编写程序,利用JTextField和JPasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验。
对于每个用户名有三次密码输入机会。
要求:1、所有用户名和密码信息都预先存放在文件passwords.txt中,使用文件流读入;2、当三次密码输入均错误时,弹出模式化对话框阻塞窗口,并在对话框关闭时同时关闭窗口。
二、上机分析1、组件定义及界面显示内容:public class Login {private JFrame frame;private JLabel label1;private JLabel label2;private JLabel label3;private JPasswordField jf;private JTextField jt;private JButton yes;private JButton no;private int i=0;public Login(){frame=new JFrame("用户登陆");label1=new JLabel("西电芝麻开门");label2=new JLabel(" 用户名:");label3=new JLabel("密码:");jf=new JPasswordField(15);jt=new JTextField(15);yes=new JButton("登录");no=new JButton("取消");init();addEventHandler();}2、界面格局设计:public void init(){JPanel north=new JPanel();JPanel center=new JPanel();JPanel south=new JPanel();north.setLayout(new FlowLayout());center.setLayout(new FlowLayout(2));south.setLayout(new FlowLayout());north.add(label1);center.add(label2);center.add(jt);center.add(label3);center.add(jf);south.add(yes);south.add(no);frame.setLayout(new BorderLayout());frame.add(north,BorderLayout.NORTH);frame.add(center,BorderLayout.CENTER);frame.add(south,BorderLayout.SOUTH);}public void showMe(){label1.setFont(new Font("隶体",Font.BOLD,16));frame.setLocation(600, 400);frame.setSize(250,200);frame.setResizable(false);//不能改变窗口大小frame.setVisible(true);//frame.pack();//设置窗口为最适尺寸frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}3、操作后显示设计当三次密码输入均错误时,弹出模式化对话框阻塞窗口,并在对话框关闭时同时关闭窗口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三次线程实验:一. 实验目的及实验环境实验目的:1.理解JA V A中线程的同步和死锁2.掌握线程同步和互斥实验环境:eclipse 4.4二. 实验内容编程实现隧道通车问题。
内容如下:有一条隧道,同时允许一辆车通行,隧道两端各有多辆车等待通过,车辆只能等到隧道空闲才能被运行进入隧道。
一旦隧道中有车辆,则禁止其他车辆通过。
三.方案设计1.定义类Test,Car,CarType,Tunnel类2.在Test类中创建一个隧道Tunnel和多个车辆,观察结果四.测试数据及运行结果1.正常测试数据(3组)及运行结果;2.非正常测试数据(2组)及运行结果。
无五.总结1.实验过程中遇到的问题及解决办法;①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。
所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。
②对程序进行同步时,notify()方法会唤醒等待队列中的随机的一个线程,而notifyAll()方法会唤醒等待队列中的全部线程2.对设计及调试过程的心得体会。
①Java中的每个对象都有一个lock,当访问某个对象的synchronized方法时,该对象就会被上锁(注意,是对象,不是方法,假如你在这个类中定义了多个方法,如果你的线程访问到了其中的任意一个synchronized方法,那么其它的就暂时不能被访问了,必须等到该对象被解锁以后,即方法执行结束才行)。
解锁的意思是值线程执行该方法完毕,或者说过程中抛出了异常。
②wait,notify,notifyAllwait:Object类中的final方法,有InterruptedException。
它的作用是导致当前的线程等待,直到其它线程调用此对象的notify方法或者notifyAll方法,wait还有一些重用方法,传参数,比如说时间长度。
当前的线程必须拥有此对象监视器,然后该线程发布对此监视器的所有权并且开始等待,直到其它线程通过调用notify方法或者notifyAll方法,通知在此对象的监视器上等待的线程醒来,然后该线程将等到重新获得对监视器的所有权后才能开始执行。
wait和sleep的区别:sleep是Thread里面的方法,在被执行的时候,锁并不会被交出去,要直到sleep所在的方法全部被执行完毕以后才交出锁。
wait是Object里面的方法,在被执行的时候,锁被解除,由其它线程去争夺,直到有notify 或者notifyAll方法唤醒它。
notify:也是Object类中的方法,用于唤醒在此对象上等待着的某一个线程,如果有很多线程挂起的话,就随机地决定哪一个。
注意,是随机的,这时可以用notifyAll来唤醒所有的。
一定要注意这个问题,除非你明确地知道你在做什么,否则最好就是用notifyAll。
附代码public class Car implements Runnable {private String name;private Tunnel tunnel;private String str;public Car(int type, String name, Tunnel tunnel) { = name;this.tunnel = tunnel;str = type == CarType.LEFT?"left to right":"right to left";}@Overridepublic void run() {synchronized (Car.class) {tunnel.inUse();System.out.println("car " + name + " has pass the runnel from "+str + " @" + new Date());tunnel.release();try {Thread.sleep(1000);}catch (InterruptedException e) {e.printStackTrace();}}}}public class CarType {public static final int LEFT = 1;public static final int RIGHT = 2;}public class Tunnel {private boolean flag = false;//判断是否有车public synchronized void release(){while (flag == false) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();} }flag = false;this.notifyAll();}public synchronized void inUse(){while(flag){try{this.wait();}catch (InterruptedException e){e.printStackTrace();}}flag = true;this.notifyAll();}}public class Test {public static void main(String[] args) {Tunnel tunnel = new Tunnel();for(int i = 0;i<100;i++){int type = new Random().nextInt()%2 +1;Car car = new Car(type, "Car"+i, tunnel);Thread t = new Thread(car);t.start();}}}第四次IO实验:一. 实验目的及实验环境实验目的:1.理解JA V A文件读写操作2.掌握JA V A中IO流实验环境:eclipse 4.4二. 实验内容1.编写文件复制功能,用命令行方式提供源文件名和目标文件名2.编写一个程序,从键盘输入5个学生的信息(包含学号、姓名、3科成绩),统计各个学生的总分,然后将学生信息和统计结果存入二进制数据文件STUDENT.DAT文件中;3.编写一个程序,从上题中建立的STUDENT.DAT文件中读取数据,按学生的总分递减排序后,显示前3个学生的学号、姓名和总分;4.编写一个程序,从键盘输入5个学生的信息(包含学号、姓名、3科成绩),统计各个学生的总分,然后将学生信息和统计结果存入文本文件STUDENT.TXT 中;5.编写一个程序,从上题中建立的STUDENT.TXT文件中读取数据,按学生的总分递减排序后,显示前3个学生的学号、姓名和总分;三.方案设计1.文件读写题:创建一个类FileCopyTest,使用JUNIT4测试方法执行,演示文件复制2.学生信息题:创建一个学生类Student,实现Serializable接口在DAT文件中,文件使用二进制的方式保存,为乱码,需要使用ObjectInputStream和ObjectOutputStream两个类完成读写;在TXT文件中,文件使用UTF-8编码,中文不会乱码,此时需要使用BufferedWriter和BufferedReader完整文件读写;四.测试数据及运行结果1.正常测试数据(3组)及运行结果;二进制方式写入文件:STUDENT.DA T文本方式写入文件:STUDENT.TXT2.非正常测试数据(2组)及运行结果。
无五.总结1.实验过程中遇到的问题及解决办法;①JA V A中的关于流的操作的类有80多种,选择适合使用的类才是关键:在本次实验中,向文件中写入JA V ABEAN最合适的办法是使用ObjectInputStream;而读写文本文件,使用BufferedReader的ReaderLine方法可以方便的读出一行数据,将其转化为相应的JavaBean②完美的程序需要多次调整,比如说异常的处理需要处理Runtime异常和代码中抛出的异常;2.对设计及调试过程的心得体会。
①异常的处理需要多次调试,观察各种RuntimeException的出现方式,分别使用try--catch语句进行捕获并处理;②简化IO操作,可以使用Jakarta的common.io包进行代码编写附代码public class FileCopyTest {@Testpublic void fileCopy() {String originalFileName = "";String destFileName = "";File originalFile = null;File destFile = null;FileInputStream fis = null;FileOutputStream fos = null;Scanner scanner = new Scanner(System.in);System.out.print("请输入源文件名(项目目录下):");try {originalFileName = scanner.next();originalFile = new File(originalFileName);if (!originalFile.exists()) {System.out.println("目标文件不存在");} else {System.out.print("请输入目标文件名称:");destFileName = scanner.next();destFile = new File(destFileName);if (destFile.exists()) {System.out.println("目标文件存在,覆盖文件");} else {boolean flag = destFile.createNewFile();if (flag == true) {System.out.println("目标文件创建成功");} else {System.out.println("目标文件创建失败");throw new IOException();}}fis = new FileInputStream(originalFile);fos = new FileOutputStream(destFile);byte[] buffer = new byte[1024];int length = 0;while ((length = fis.read(buffer)) != -1) {fos.write(buffer, 0, length);}System.out.println("文件复制成功");}} catch (FileNotFoundException e) {e.printStackTrace();System.out.println("目标文件不存在");} catch (IOException e) {e.printStackTrace();System.out.println("目标文件读取失败");}finally{try {fis.close();fos.close();} catch (IOException e) {e.printStackTrace();}}}}public class Student implements Serializable{private static final long serialVersionUID= 3880353223704557926L;private String id;private String name;private int chinese;private int math;private int english;private int total;public Student(String id, String name, int chinese, int math, int english) {super();this.id = id; = name;this.chinese = chinese;this.math = math;this.english = english;total = chinese + math + english;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public int getChinese() {return chinese;}public void setChinese(int chinese) {this.chinese = chinese;}public int getMath() {return math;}public void setMath(int math) {this.math = math;}public int getEnglish() {return english;}public void setEnglish(int english) {this.english = english;}public int getTotal() {return total;}public void setTotal(int total) {this.total = total;}@Overridepublic String toString() {return"Student [id=" + id + ", name=" + name + ", chinese=" + chinese+ ", math="+ math+ ", english="+ english+ ", total="+ total + "]";}}public class StudentComparator implements Comparator<Student>{ @Overridepublic int compare(Student o1, Student o2) {return o2.getTotal() - o1.getTotal();}}public class FileWriteIo {public static List<Student> db = new ArrayList<Student>();static {db.add(new Student("04121001", "zc1", 70, 80, 90));db.add(new Student("04121002", "zc2", 71, 81, 91));db.add(new Student("04121003", "zc3", 72, 82, 92));db.add(new Student("04121004", "张4", 73, 83, 93));db.add(new Student("04121005", "张5", 74, 84, 94));}public final static String fileName = "STUDENT.txt";@Testpublic void writeToFile() {FileOutputStream fos = null;OutputStreamWriter osw = null;BufferedWriter bw = null;try {File file = new File(fileName);if (!file.exists()) {boolean flag = file.createNewFile();if (flag) {System.out.println("文件创建成功");} else {System.out.println("文件创建失败");throw new IOException();}}fos = new FileOutputStream(file);osw = new OutputStreamWriter(fos);bw = new BufferedWriter(osw);for (Student student : db) {String s = ""+student.getId() + " "+ student.getName() + " "+ student.getChinese() + " "+ student.getMath() + " "+ student.getEnglish() + "\n";System.out.println(s);bw.write(s);}System.out.println("文件写入成功");} catch (FileNotFoundException e) {System.out.println("文件未找到");e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {bw.close();osw.close();fos.close();} catch (IOException e) {e.printStackTrace();}}}@Testpublic void readFromFile() {BufferedReader br = null;FileReader fr = null;try {File file = new File(fileName);if (!file.exists()) {throw new FileNotFoundException();}fr = new FileReader(file);br = new BufferedReader(fr);;List<Student> students = new ArrayList<Student>();String line = "";while ((line = br.readLine()) != null) {System.out.println(line);String[] data = line.split(" ");Student student = new Student(data[0], data[1],Integer.parseInt(data[2]),Integer.parseInt(data[3]),Integer.parseInt(data[4]));students.add(student);}sort(students);} catch (FileNotFoundException e) {e.printStackTrace();System.out.println("文件未找到");} catch (IOException e) {e.printStackTrace();System.out.println("文件读写错误");}finally{try {br.close();fr.close();} catch (IOException e) {e.printStackTrace();}}}public void sort(List<Student> students) {Collections.sort(students, new StudentComparator());for (int i = 0; i < 3; i++) {System.out.println(students.get(i));}}}public class BinaryObjectIO {public static List<Student> db = new ArrayList<Student>();static {db.add(new Student("04121001", "zc1", 70, 80, 90));db.add(new Student("04121002", "zc2", 71, 81, 91));db.add(new Student("04121003", "zc3", 72, 82, 92));db.add(new Student("04121004", "zc4", 73, 83, 93));db.add(new Student("04121005", "zc5", 74, 84, 94));}public final static String fileName = "STUDENT.DAT";@Testpublic void writeToFile() {try {File file = new File(fileName);if (!file.exists()) {boolean flag = file.createNewFile();if (flag) {System.out.println("文件创建成功");} else {System.out.println("文件创建失败");throw new IOException();}}FileOutputStream fos;fos = new FileOutputStream(file);ObjectOutputStream oos = new ObjectOutputStream(fos);for (Student student : db) {oos.writeObject(student);}System.out.println("文件写入成功");} catch (FileNotFoundException e) {System.out.println("文件未找到");e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Testpublic void readFromFile() {try {File file = new File(fileName);if (!file.exists()) {throw new FileNotFoundException();}ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));List<Student> students = new ArrayList<Student>();Student student = null;boolean flag = true;while (flag) {try{student = (Student) ois.readObject();}catch(EOFException e){System.out.println("文件读取完毕");flag = false;}if(student != null){students.add(student);}else{break;}}sort(students);} catch (FileNotFoundException e) {e.printStackTrace();System.out.println("文件未找到");} catch (IOException e) {e.printStackTrace();System.out.println("文件读写错误");} catch (ClassNotFoundException e) {e.printStackTrace();}}public void sort(List<Student> students) {Collections.sort(students, new StudentComparator());for (int i = 0; i < 3; i++) {System.out.println(students.get(i));}}}。