操作系统实验报告java

合集下载

java实训报告(通用9篇)

java实训报告(通用9篇)

java实训报告java实训报告(通用9篇)在当下社会,大家逐渐认识到报告的重要性,写报告的时候要注意内容的完整。

那么一般报告是怎么写的呢?下面是小编精心整理的java实训报告,欢迎大家借鉴与参考,希望对大家有所帮助。

java实训报告篇1一、实训目的1.熟练掌握Java面向对象程序设计的基础知识。

2.熟练掌握Java中常用的Swing组件的使用方法。

3.熟练掌握Java程序中图形用户界面设计的方法。

4.熟练掌握使用JDBC操作数据库的方法。

5.通过实训,培养学生分析和解决实际问题的能力,提高调试和分析应用程序的能力,并为后续Java高级编程等专业课程的学习奠定良好的基础。

二、课程设计报告内容2.1 实训内容本课程设计的题目是设计一个简化的仓库管理系统。

该系统从仓库管理人员的角度出发,实现对货物信息、生产商信息的浏览、添加、删除和查询,同时还可以对货物出货、入货进行操作和控制。

设计内容主要包括系统分析、数据库、数据表的创建、系统各个窗体的布局及其编码实现。

系统功能分析是在系统开发的总体任务的基础上完成的。

该管理系统需要完成的基本功能主要有:用户管理:主要包括用户的添加、修改和删除。

供应商管理:主要包括供应商的添加、删除和修改。

产品管理:主要包括产品的添加、删除和进货、出货。

产品视图管理:主要包括产品查询、数据文件的导入、查询结果集的导出。

2.2 实训设备或软、硬件硬件:PⅣ及以上性能的PC机;软件:Windows 20xx或Windows XP系统;JDK工具;JCreator4.0环境2.3 功能设计及思想本次实训设计采用选择结构化开发方法,即用系统工程的思想和工程化的方法,按照用户至上的原则,自顶向下整体分析与设计和自底向上逐步实施的系统开发过程。

是组织、管理和控制信息系统开发过程的一种基本框架。

其基本思想:在系统分析时,采用自顶向下、逐层分解,由抽象到具体的逐步认识问题的过程;在系统设计的时候,先考虑系统整体的优化,再考虑局部的优化问题;在系统实施的时候,则坚持自底向上,先局部后整体,通过标准化模块的连接形成完整的系统。

操作系统实验报告java

操作系统实验报告java

操作系统实验报告java操作系统实验报告实验名称:java操作系统一、实验目的本次实验的目的是通过使用Java编程语言,实现一个简单的操作系统,包括进程管理、内存管理和文件系统管理。

二、实验环境操作系统:Windows 10开发工具:Eclipse IDE编程语言:Java三、实验过程及结果1、进程管理1.1 进程的创建编写一个Process类,模拟进程的创建过程,包括进程ID、状态等属性,并实现创建进程的方法。

1.2 进程的调度设计一个Scheduler类,实现进程的调度算法,如FCFS(先来先服务)、SJF(短作业优先)、RR(时间片轮转)等。

1.3 进程间通信实现进程间的通信机制,如共享内存、管道等。

2、内存管理2.1 内存分配算法设计一个MemoryAllocator类,实现内存分配的算法,如首次适应、最佳适应、最坏适应等。

2.2 内存回收实现一个MemoryReclmer类,用于回收已经释放的内存空间,并将其标记为可再分配的状态。

3、文件系统管理3.1 文件的创建与删除设计一个类,实现文件的创建和删除功能,包括文件名、大小等属性。

3.2 文件的读取与写入实现一个类和一个类,分别用于文件的读取和写入操作。

3.3 文件权限管理设计一个AccessControl类,用于控制文件的访问权限,包括读、写和执行等操作。

四、实验结果分析根据实验过程的描述,我们成功实现了一个简单的操作系统,包括进程管理、内存管理和文件系统管理。

在进程管理方面,我们实现了进程的创建、调度和通信机制,能够有效管理多个进程的执行。

在内存管理方面,我们实现了不同的内存分配算法,能够根据实际情况分配和回收内存空间。

在文件系统管理方面,我们实现了文件的创建、删除、读取和写入操作,并能够灵活控制文件的访问权限。

五、附件无六、法律名词及注释1、版权:根据著作权法,著作权人享有其作品的署名权、发表权、修改权和保护权等权利。

2、许可证:指授权他人使用某个著作权作品的合法许可证。

Java实验一实验报告

Java实验一实验报告

Java实验⼀实验报告实验⼀ Java开发环境的熟悉⼀、实验内容1. 使⽤JDK编译、运⾏简单的Java程序2.使⽤Eclipse 编辑、编译、运⾏、调试Java程序⼆、实验要求1.没有Linux基础的同学建议先学习《》《》课程2.完成实验、撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运⾏结果,遇到的问题(⼯具查找,安装,使⽤,程序的编辑,调试,运⾏等)、解决办法(空洞的⽅法如“查⽹络”、“问同学”、“看书”等⼀律得0分)以及分析(从中可以得到什么启⽰,有什么收获,教训等)。

3.实验报告中统计⾃⼰的时间步骤耗时百分⽐需求分析 40min20%设计 40min20%代码实现 60min30%测试 30min15%分析总结 30min 15%4. 严禁抄袭。

三、实验步骤(⼀)命令⾏下Java程序开发1.⾸先双击桌⾯上的Xface终端图标。

2.打开终端(类似Windows下的cmd),之后会⾃动运⾏shell程序。

3.输⼊cd Code命令进⼊Code(注意C要⼤写)⽬录。

4.输⼊mkdir 20135109 命令建⽴实验⽬录,注意⽬录名⼀定是⾃⼰的学号(学号要体现在实验报告截图中),可以使⽤ls命令或dir命令查看建⽴的⽬录情况。

5.输⼊cd 20135109命令进⼊实验⽬录,再输⼊类似mkdir exp1建⽴第⼀个实验⽬录,然后输⼊cd exp1进⼊实验⼀⽬录,可以输⼊pwd命令查看当前⼯作路径。

6.输⼊gedit Hello.java(注意把代码保存到exp1⽬录中)或vim Hello.java 编辑Hello.java。

7.输⼊javac -d . Hello.java命令编译代码,输⼊java ljp.Hello命令运⾏程序。

(⼆)Eclipse下Java程序开发、调试1.在命令⾏中输⼊eclipse命令并回车或单击桌⾯上的Eclipse EE图标打开Eclipse。

2.在Eclipse中单击File->New-> Java Project新建Java项⽬。

java实验实验报告

java实验实验报告

java实验实验报告Java 实验实验报告一、实验目的本次 Java 实验的主要目的是通过实际操作和编程实践,深入理解和掌握 Java 编程语言的基本概念、语法结构、面向对象编程的思想以及常用类库的使用。

同时,培养我们解决实际问题的能力和编程思维,提高代码的质量和可读性。

二、实验环境1、操作系统:Windows 102、开发工具:IntelliJ IDEA3、 JDK 版本:18三、实验内容(一)基本语法练习1、数据类型与变量在 Java 中,我们学习了不同的数据类型,如整数类型(`int`、`long`)、浮点数类型(`float`、`double`)、字符类型(`char`)和布尔类型(`boolean`)。

通过定义和使用这些变量,我们能够存储和操作各种类型的数据。

```javaint age = 25;double salary = 500050;char grade ='A';boolean isStudent = true;```2、控制结构包括条件语句(`ifelse`、`switch`)和循环语句(`for`、`while`、`dowhile`)。

这些控制结构使我们能够根据不同的条件执行不同的代码块,或者重复执行一段代码。

```javaint num = 10;if (num > 5) {Systemoutprintln("Number is greater than 5");} else {Systemoutprintln("Number is less than or equal to 5");}switch (num) {Systemoutprintln("One");break;case 10:Systemoutprintln("Ten");break;default:Systemoutprintln("Unknown");}for (int i = 0; i < 5; i++){Systemoutprintln(i);}int count = 0;while (count < 3) {Systemoutprintln("Count: "+ count);count++;}count = 0;Systemoutprintln("Count: "+ count);count++;} while (count < 3);```(二)面向对象编程1、类与对象创建了自定义的类来表示现实世界中的实体。

java实验报告

java实验报告

java实验报告Java 实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解和掌握Java 语言的基本语法、面向对象编程的概念和方法,以及常用类库的使用。

同时,培养我们的问题解决能力、逻辑思维能力和代码规范意识,为今后的软件开发工作打下坚实的基础。

二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java Developers3、 JDK 版本:JDK 18三、实验内容本次实验共包括以下三个部分:1、 Java 基本语法练习变量与数据类型运算符与表达式控制流语句(ifelse、for、while、dowhile)数组2、面向对象编程实践类与对象的定义和使用构造函数与方法重载封装、继承与多态抽象类与接口3、 Java 常用类库应用String 类与字符串操作集合框架(ArrayList、HashMap)文件输入输出(File、FileReader、FileWriter)四、实验步骤及代码实现1、 Java 基本语法练习变量与数据类型:```javapublic class VariableDataType {public static void main(String args) {int age = 20;double salary = 50005;String name ="张三";boolean isStudent = true;Systemoutprintln("年龄:"+ age);Systemoutprintln("工资:"+ salary);Systemoutprintln("姓名:"+ name);Systemoutprintln("是否是学生:"+ isStudent);}}```运算符与表达式:```javapublic class OperatorExpression {public static void main(String args) {int num1 = 10;int num2 = 5;int sum = num1 + num2;int difference = num1 num2;int product = num1 num2;int quotient = num1 / num2;int remainder = num1 % num2; Systemoutprintln("和:"+ sum);Systemoutprintln("差:"+ difference);Systemoutprintln("积:"+ product);Systemoutprintln("商:"+ quotient);Systemoutprintln("余数:"+ remainder);}}```控制流语句:```javapublic class ControlFlowStatement {public static void main(String args) {// ifelse 语句int score = 80;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}// for 循环for (int i = 1; i <= 5; i++){Systemoutprintln("第" + i +"次循环");}// while 循环int j = 1;while (j <= 5) {Systemoutprintln("第" + j +"次 while 循环");j++;}// dowhile 循环int k = 1;do {Systemoutprintln("第" + k +"次 dowhile 循环");k++;} while (k <= 5);}}```数组:```javapublic class ArrayExample {public static void main(String args) {//一维数组int numbers ={1, 2, 3, 4, 5};for (int num : numbers) {Systemoutprintln(num);}//二维数组int matrix ={{1, 2, 3},{4, 5, 6},{7, 8, 9}};for (int row : matrix) {for (int num : row) {Systemoutprint(num +"");}Systemoutprintln();}}}```2、面向对象编程实践类与对象的定义和使用:```javapublic class Person {private String name;private int age;public Person(String name, int age) {thisname = name;thisage = age;}public void showInfo(){Systemoutprintln("姓名:"+ name +",年龄:"+ age);}public static void main(String args) {Person person1 = new Person("张三", 20);person1showInfo();}}```构造函数与方法重载:```javapublic class ConstructorOverloading {private String name;private int age;public ConstructorOverloading(String name) {thisname = name;}public ConstructorOverloading(String name, int age) {thisname = name;thisage = age;}public void showInfo(){if (age == 0) {Systemoutprintln("姓名:"+ name);} else {Systemoutprintln("姓名:"+ name +",年龄:"+ age);}}public static void main(String args) {ConstructorOverloading person1 = new ConstructorOverloading("张三");person1showInfo();ConstructorOverloading person2 = new ConstructorOverloading("李四", 25);person2showInfo();}}```封装、继承与多态:```java//父类class Animal {private String name;public Animal(String name) {thisname = name;}public void eat(){Systemoutprintln(name +"正在吃东西");}}//子类继承父类class Dog extends Animal {public Dog(String name) {super(name);}public void bark(){Systemoutprintln(name +"在叫");}}public class InheritancePolymorphism {public static void main(String args) {Animal animal = new Dog("小黑");animaleat();//向下转型为 Dog 类型调用 bark 方法if (animal instanceof Dog) {Dog dog =(Dog) animal;dogbark();}}}```抽象类与接口:```java//抽象类abstract class Shape {abstract void draw();}//实现抽象类的子类class Circle extends Shape {@Overridevoid draw(){Systemoutprintln("画一个圆");}}//接口interface Moveable {void move();}//实现接口的类class Car implements Moveable {@Overridepublic void move(){Systemoutprintln("汽车在移动");}}public class AbstractInterfaceExample {public static void main(String args) {Shape shape = new Circle();shapedraw();Moveable car = new Car();carmove();}}```3、 Java 常用类库应用String 类与字符串操作:```javapublic class StringOperation {public static void main(String args) {String str1 ="Hello, ";String str2 ="World!";String str3 = str1 + str2;Systemoutprintln(str3);int length = str3length();Systemoutprintln("字符串长度:"+ length);char charAt = str3charAt(5);Systemoutprintln("第 5 个字符:"+ charAt);boolean contains = str3contains("World");Systemoutprintln("是否包含 World:"+ contains);}}```集合框架(ArrayList、HashMap):```javaimport javautilArrayList;import javautilHashMap;import javautilMap;public class CollectionFramework {public static void main(String args) {// ArrayListArrayList<String> names = new ArrayList<>();namesadd("张三");namesadd("李四");namesadd("王五");for (String name : names) {Systemoutprintln(name);}// HashMapHashMap<String, Integer> ages = new HashMap<>();agesput("张三", 20);agesput("李四", 25);agesput("王五", 30);for (MapEntry<String, Integer> entry : agesentrySet()){Systemoutprintln(entrygetKey()+"的年龄是" +entrygetValue());}}}```文件输入输出(File、FileReader、FileWriter):```javaimport javaioFile;import javaioFileReader;import javaioFileWriter;import javaioIOException;public class FileIOExample {public static void main(String args) {//写入文件try (FileWriter writer = new FileWriter("outputtxt")){writerwrite("这是写入文件的内容");} catch (IOException e) {eprintStackTrace();}//读取文件try (FileReader reader = new FileReader("outputtxt")){int character;while ((character = readerread())!=-1) {Systemoutprint((char) character);}} catch (IOException e) {eprintStackTrace();}}}```五、实验结果与分析1、 Java 基本语法练习变量与数据类型:能够正确定义和使用各种数据类型的变量,并进行基本的运算和输出。

java实验报告

java实验报告

java实验报告一、实验目的本次实验旨在通过设计和实现一个简单的Java程序,来加深对于Java编程语言的理解和应用。

二、实验过程1. 环境准备在开始实验之前,需要先准备好所需的开发环境。

我选择使用Eclipse进行Java开发,因为它是一个强大且易于使用的集成开发环境。

安装完成后,我创建了一个新的Java项目,并在项目中新建了一个Java类。

2. 设计程序结构在设计程序的过程中,我首先明确了程序的功能和要实现的效果。

然后,我根据需求定义了几个类和方法,并确定它们之间的关系和调用顺序。

这有助于提高程序的可读性和模块化。

3. 编写代码接下来,我开始编写Java代码。

我首先实现了主类,并在其中定义了程序的入口方法main。

然后,我逐步实现了其他类和方法,并进行了测试和调试。

在编写代码的过程中,我注重代码的规范和风格,尽量使用可读性高的命名和注释。

4. 运行程序当代码编写完毕后,我通过Eclipse的运行按钮来启动程序。

在程序运行过程中,我注意观察程序的输出,以确保程序能够按照预期的结果执行。

如果程序出现错误或异常,我会根据错误信息进行排查和修复。

5. 进行实验验证为了验证程序的正确性和稳定性,我设计了一系列的测试用例,并分别对程序进行了测试。

我重点测试了一些边界情况和特殊情况,以确保程序能够正确地处理各种可能的情况。

在测试过程中,我还通过打印调试信息和观察程序的运行情况来帮助分析问题。

三、实验结果与分析经过多次测试和调试,我的Java程序得到了正确的结果,并且在运行过程中没有出现明显的性能问题或错误。

程序能够按照预期的要求输出结果,处理各种边界情况时也能够正确地应对。

通过本次实验,我对于Java编程语言有了更深入的理解和掌握。

我熟悉了Java的基本语法和面向对象的特性,掌握了Java程序的设计和实现方法。

我还学会了如何利用开发工具进行程序的调试和测试,提高程序的质量和可靠性。

在实验过程中,我也遇到了一些困难和挑战。

Java实验报告一及作业总结二

Java实验报告一及作业总结二

Java实验报告⼀及作业总结⼆Java实验报告实验⼀ Java开发环境与简单Java程序⼀、实验⽬的(1)熟悉JDK开发环境(2)熟练掌握结构化程序设计⽅法⼆、实验内容1. 打印输出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个3位数,其中各位数字⽴⽅和等于该数本⾝。

例如,153是⼀个“⽔仙花数”。

2. 编写Java程序,求13-23+33-43+…+973-983+993-1003的值。

3. 编程求1!+2!+3!+…+20!。

4. 编写Java程序,计算8+88+888+…前10项之和。

5. ⼀个数如果恰好等于它的因⼦之和,这个数就称为完数。

编写程序输出1000以内的所有完数。

6. 编写应⽤程序,输出满⾜1+2+3+…+n<8888的最⼤正整数。

7. 使⽤for循环打印下⾯的图形。

三、实验过程1. 打印输出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个3位数,其中各位数字⽴⽅和等于该数本⾝。

例如,153是⼀个“⽔仙花数”。

实验源码:实验结果:1533703714072. 编写Java程序,求13-23+33-43+…+973-983+993-1003的值。

实验源码:实验结果:-5003.编程求1!+2!+3!+…+20!。

实验源码:实验结果:40379134.编写Java程序,计算8+88+888+…前10项之和。

实验源码:实验结果:12866086085. ⼀个数如果恰好等于它的因⼦之和,这个数就称为完数。

编写程序输出1000以内的所有完数。

实验源码:实验结果:6284966. 编写应⽤程序,输出满⾜1+2+3+…+n<8888的最⼤正整数。

实验源码:实验结果:1327. 使⽤for循环打印下⾯的图形。

四、实验总结:觉得还是要多练题,增加⾃⼰的逻辑,解决相关问题。

总结报告:⼀:类的定义:基本⽅式;public static 返回值类型⽅法名(参数类型参数名称,.......){⽅法体; return 返回值;}⽅法的三种调⽤⽅式;注意:void 只能⽤于单独调⽤;要有⼀个更重要的地⽅在学习类的定义的时候,定义成员⽅法的时候与基本⽅法不同,成员⽅法他不需要static关键字,这个要注意!熟悉代码 这⾥说明⼀下什么时候⽤什么时候不⽤static关键字:在定义成员⽅法时不⽤,即因为此时定义的⽅法将要由对象调⽤,⽽不像之前那样与主⽅法⼀起定义在⼀个类当中且由主⽅法直接调⽤。

java实验报告:实验六

java实验报告:实验六

java实验报告:实验六一、实验目的本次实验的主要目的是深入理解和掌握 Java 中的一些关键概念和技术,包括面向对象编程的特性、异常处理机制以及文件操作等。

通过实际的编程实践,提高我们运用 Java 解决实际问题的能力。

二、实验环境本次实验使用的开发工具是 IntelliJ IDEA,操作系统为 Windows 10。

三、实验内容(一)面向对象编程实践1、定义一个名为“Student”的类,包含学生的姓名、学号和成绩等属性,并实现相应的 getter 和 setter 方法。

2、在主函数中创建“Student”类的对象,并对其属性进行赋值和输出。

(二)异常处理1、编写一个方法,实现两数相除的运算。

如果除数为 0,抛出“ArithmeticException”异常。

2、在主函数中调用该方法,并使用trycatch 语句捕获并处理异常。

(三)文件操作1、创建一个文本文件,并向其中写入一些数据。

2、读取该文件中的数据,并将其输出到控制台。

四、实验步骤(一)面向对象编程实践1、首先,在 IntelliJ IDEA 中创建一个新的 Java 项目。

2、然后,创建“Student”类,代码如下:```javapublic class Student {private String name;private int studentId;private double score;public String getName(){return name;}public void setName(String name) {thisname = name;}public int getStudentId(){return studentId;}public void setStudentId(int studentId) {thisstudentId = studentId;}public double getScore(){return score;}public void setScore(double score) {thisscore = score;}}```3、在主函数中创建“Student”类的对象,并对其属性进行赋值和输出,代码如下:```javapublic class Main {public static void main(String args) {Student student = new Student();studentsetName("张三");studentsetStudentId(1001);studentsetScore(905);Systemoutprintln("学生姓名:"+ studentgetName());Systemoutprintln("学生学号:"+ studentgetStudentId());Systemoutprintln("学生成绩:"+ studentgetScore());}}```(二)异常处理1、编写一个名为“divide”的方法,实现两数相除的运算,代码如下:```javapublic class ExceptionHandling {public static double divide(double num1, double num2) {if (num2 == 0) {throw new ArithmeticException("除数不能为 0");}return num1 / num2;}public static void main(String args) {try {double result = divide(10, 0);Systemoutprintln("结果:"+ result);} catch (ArithmeticException e) {Systemoutprintln("捕获到异常:"+ egetMessage());}}}```(三)文件操作1、创建一个名为“FileOperation”的类,用于实现文件的写入和读取操作,代码如下:```javaimport javaioBufferedWriter;import javaioFileWriter;import javaioIOException;import javaioBufferedReader;import javaioFileReader;public class FileOperation {public static void writeToFile(String filePath, String content) {try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))){writerwrite(content);} catch (IOException e) {eprintStackTrace();}}public static String readFromFile(String filePath) {StringBuilder content = new StringBuilder();try (BufferedReader reader = new BufferedReader(new FileReader(filePath))){String line;while ((line = readerreadLine())!= null) {contentappend(line)append("\n");}} catch (IOException e) {eprintStackTrace();}return contenttoString();}public static void main(String args) {String filePath ="testtxt";String data ="这是写入文件的内容";writeToFile(filePath, data);String readData = readFromFile(filePath);Systemoutprintln("读取到的文件内容:\n" + readData);}}```五、实验结果(一)面向对象编程实践成功创建了“Student”类的对象,并正确地对其属性进行了赋值和输出。

JAVA实验报告

JAVA实验报告

JAVA实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解 Java 语言的基本语法、面向对象编程的概念以及常用类库的使用。

同时,培养自己解决实际问题的能力,提高编程的熟练程度和代码质量。

二、实验环境操作系统:Windows 10开发工具:EclipseJDK 版本:18三、实验内容及步骤(一)基本语法练习1、数据类型与变量定义不同类型的变量,如整数型(int)、浮点数型(float、double)、字符型(char)和字符串型(String),并进行赋值和输出操作。

了解不同数据类型的取值范围和精度,以及在实际编程中的应用场景。

2、控制结构编写使用 ifelse 语句、switch 语句进行条件判断的程序。

运用 for 循环、while 循环和 dowhile 循环实现重复执行的操作。

3、数组与字符串声明和初始化一维数组和二维数组,对数组元素进行访问和操作。

进行字符串的拼接、截取、查找等常见操作。

(二)面向对象编程实践1、类与对象定义一个简单的类,包含属性和方法。

创建该类的对象,并调用对象的方法来操作属性。

2、继承与多态建立父类和子类,实现继承关系。

在子类中重写父类的方法,展示多态性。

3、封装与抽象将类的属性设置为私有,并提供公共的访问方法(getter 和 setter),实现封装。

定义抽象类和抽象方法,体会抽象的概念和作用。

(三)常用类库的使用1、 Java 输入输出(IO)使用 Scanner 类实现从控制台读取用户输入的数据。

运用 File 类和相关的输入输出流类,实现文件的读取和写入操作。

2、集合框架熟悉 ArrayList、LinkedList 等线性集合的使用方法。

了解 HashSet、TreeSet 等集合的特点和应用场景。

3、异常处理在程序中加入可能引发异常的代码段,并使用 trycatch 语句捕获和处理异常。

四、实验结果与分析(一)基本语法练习1、数据类型与变量成功定义了各种数据类型的变量,并正确进行了赋值和输出。

操作系统实验报告java

操作系统实验报告java

操作系统实验报告java实验报告:操作系统实验一、实验目的本次实验旨在通过使用Java语言编写一个简单的操作系统,加深对操作系统原理的理解,掌握操作系统底层的相关知识。

二、实验环境1.Java编程环境:JDK 82.开发工具:Eclipse IDE3.操作系统:Windows 10三、实验内容1.实验背景介绍在本章节中,我们将介绍操作系统的基本概念、功能以及其在计算机系统中的作用。

2.实验设计与实现本章节将详细描述操作系统实现的设计思路和具体的实现过程,包括创建进程、调度算法、内存管理、文件系统等。

2.1 创建进程在本节中,我们将介绍如何使用Java语言创建一个进程,并实现进程的并发执行。

2.2 调度算法本节将讨论操作系统中的调度算法,例如先来先服务、短作业优先、时间片轮转等,并给出具体的实现代码。

2.3 内存管理在本节中,我们将介绍操作系统的内存管理机制,包括分区分配、动态存储分配等,并给出相关的实现方法。

2.4 文件系统本节将详细介绍操作系统中的文件系统的设计和实现,包括文件的存储、目录管理、文件访问控制等。

四、实验结果与分析1.实验结果展示在本章节中,我们将展示实验的运行结果,并对实验结果进行详细的分析和解释。

2.实验评估与讨论本节将对实验结果进行评估和讨论,包括对实验系统性能的评估以及可能存在的问题和改进方向的讨论。

五、实验总结本次实验通过使用Java语言编写一个简单的操作系统,使我们更深入地了解了操作系统的原理和实现,掌握了操作系统底层的相关知识。

六、附件本文档涉及的附件包括实验代码和相关实验结果的截图。

附件一:源代码文件(OS.java)附件二:实验结果截图(result.png)七、法律名词及注释1.操作系统:操作系统是一种控制和管理计算机硬件与软件资源的程序。

2.进程:进程是计算机中正在运行的一个程序实例,它具有独立的内存空间和系统资源。

3.调度算法:调度算法是操作系统中用于决定进程执行顺序的一种算法,目的是合理利用系统资源,提高系统性能。

java实验报告实验报告java实验报告Java

java实验报告实验报告java实验报告Java

java实验报告实验报告java实验报告Java一、实验目的本次实验的目的是熟悉Java语言,了解Java程序结构,掌握Java程序的开发流程,加深对Java语言特性的认识和理解。

二、实验内容本次实验内容为设计一个简单的Java程序,包括设计程序的需求分析、设计方案、编写代码、测试运行结果等环节。

三、实验分析3.1 需求分析设计一个Java程序,要求该程序能够实现以下功能:1. 用户可以输入两个数,程序可以对这两个数进行加、减、乘、除的操作,并输出运算结果。

2. 用户可以输入一个字符串,程序可以对该字符串进行反转输出。

3.2 设计方案根据需求分析,我们可以先设计一个简单的界面,包括输入框、选择运算符号的下拉框,以及一个按钮,当用户输入完毕后点击按钮即可进行相应的操作。

3.3 编写代码根据设计方案,我们先编写一个简单的界面代码:import java.awt.*;import javax.swing.*;public class Calculator extends JFrame {private JTextField text1, text2, text3;private JComboBox<String> combo;private JButton calcBtn, reverseBtn, factBtn;public Calculator() {super("Calculator");text1 = new JTextField(5);text2 = new JTextField(5);text3 = new JTextField(10);combo = new JComboBox<String>(new String[]{"+", "-", "*", "/"});calcBtn = new JButton("Calculate");reverseBtn = new JButton("Reverse");factBtn = new JButton("Factorial");JPanel panel2 = new JPanel();panel2.add(new JLabel("String:"));panel2.add(text3);panel2.add(reverseBtn);pack();setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}该界面中包含了3个面板,一个用于加减乘除,一个用于字符串反转,一个用于阶乘操作。

操作系统实验报告java

操作系统实验报告java

操作系统实验报告java操作系统实验报告 Java一、实验目的本次实验旨在通过使用 Java 编程语言来深入理解操作系统的一些核心概念和原理,如进程管理、线程同步、内存管理等。

通过实际的编程实践,提高对操作系统相关知识的掌握程度,培养解决实际问题的能力。

二、实验环境操作系统:Windows 10开发工具:IntelliJ IDEAJDK 版本:18三、实验内容及步骤1、进程管理创建多个进程模拟并发执行,并观察其执行顺序和资源竞争情况。

使用 Java 的`ProcessBuilder`类来创建新的进程,并通过管道进行进程间通信。

以下是示例代码:```javaimport javaioIOException;import javautilArrayList;import javautilList;public class ProcessManagement {public static void main(String args) {List<Process> processes = new ArrayList<>();try {ProcessBuilder processBuilder1 = new ProcessBuilder("notepadexe");processesadd(processBuilder1start());ProcessBuilder processBuilder2 = new ProcessBuilder("calcexe");processesadd(processBuilder2start());} catch (IOException e) {eprintStackTrace();}//等待所有进程结束for (Process process : processes) {try {processwaitFor();} catch (InterruptedException e) {eprintStackTrace();}}}}```2、线程同步实现多个线程对共享资源的访问,并使用同步机制来避免竞态条件。

操作系统实验报告java

操作系统实验报告java

操作系统实验报告java操作系统实验报告一、实验目的本次实验旨在通过编写Java程序来实现一个简单的操作系统模拟,以加深对操作系统的理解。

二、实验环境- 操作系统:Windows 10- Java开发环境:Eclipse- 编程语言:Java三、实验内容⒈实现进程管理⑴进程创建⑵进程调度⑶进程同步⑷进程通信⒉实现内存管理⑴内存分配⑵内存回收⑶页面置换算法⒊文件系统管理⑴文件的创建与删除⑵文件的读写操作⑶文件权限控制四、实验步骤及代码实现⒈进程管理实现步骤⑴定义进程类⑵实现进程创建方法⑶实现进程调度方法⑷实现进程同步方法⑸实现进程通信方法⒉内存管理实现步骤⑴定义内存管理类⑵实现内存分配方法⑶实现内存回收方法⑷实现页面置换算法⒊文件系统管理实现步骤⑴定义文件类⑵实现文件的创建与删除方法⑶实现文件的读写操作方法⑷实现文件权限控制方法五、实验结果与分析在完成以上步骤后,我们成功实现了一个简单的操作系统模拟。

通过模拟进程管理、内存管理和文件系统管理等功能,可以更好地理解操作系统的工作原理和机制。

六、实验附件本实验报告附带Java程序源代码和运行结果截图,请参见附件。

七、法律名词及注释⒈操作系统:指一类管理计算机硬件和软件资源、控制程序运行的系统软件。

⒉进程:操作系统中的基本执行单位,每个进程拥有独立的地质空间和系统资源。

⒊进程调度:操作系统根据一定的策略和算法决定哪个进程在给定时刻执行。

⒋进程同步:多个进程之间的协调工作,保证数据的一致性和并发执行正确性。

⒌进程通信:进程之间通过某种方式交换信息和数据。

⒍内存分配:为进程分配内存空间,使其能够运行。

⒎内存回收:在进程终止或需要更多内存时,将内存空间释放。

⒏页面置换算法:在内存不足时,选择合适的页面进行置换以获取更多空闲内存。

⒐文件系统:操作系统管理文件和目录的组织和存储方式。

⒑文件的创建与删除:操作系统创建或删除文件,为文件分配或回收存储空间。

1⒈文件的读写操作:操作系统对文件进行读取或写入数据的操作。

Java实验报告_实验二

Java实验报告_实验二

Java实验报告_实验⼆实验2 类和对象【实验宗旨】每天做⼀点编程练习。

【实验⽬的】1、学习和掌握Java创建对象的⽅法。

2、学习和掌握通过创建对象、使⽤类的⽅法。

3、学习和掌握Java类定义的⽅法。

4、了解类设计的⼀般原则。

【实验内容】1、(Java API类的应⽤)使⽤java.util.Random类,创建种⼦是1000的Random对象,然后使⽤nextInt(100)⽅法显⽰0到100 之间前50个随机整数。

【实验预习】创建Random对象,含有1000个种⼦,然后输出其中的前50个⽆输⼊,创建Random random = new Random(1000);利⽤for循环输出前50的随机数。

【实验过程及结果记录】import java.util.Random;public class JavaText {public static void main(String[] args) {Random random = new Random(1000);for (int i = 0; i < 50; i++)System.out.print(random.nextInt(100) + " ");}}【实验总结】练习产⽣随机数的⽅法(Random).2.(使⽤StackOfIntegers类,显⽰素数因⼦)编写⼀个程序,提⽰⽤户输⼊⼀个正整数,然后以降序显⽰它的所有最⼩因⼦。

例如:如果整数为120,那么显⽰的最⼩因⼦为5、3、2、2、2。

使⽤StackOfIntegers类存储因⼦(如:2、2、2、3、5),获取之后按倒序显⽰这些因⼦。

【实验预习】练习类的调⽤,使⽤StackOfIntegers类【实验过程及结果记录】import java.util.*;import java.awt.*;import javax.swing.*;public class zhiyinshu{public static void main (String[] args) {StackOfIntegers h1 =new StackOfIntegers(); StackOfIntegers h2 =new StackOfIntegers();String str=JOptionPane.showInputDialog(null,"请输⼊⼀个正整数","分解质因数",JOptionPane.QUESTION_MESSAGE); int yuanshu = Integer.parseInt(str);int i=2;int b=0;int c=0;do{i=2;b=0;do{if(yuanshu%i==0){yuanshu=yuanshu/i;h1.jilu(i);b=1;}i++;}while(b==0&&i}while(ih1.jilu(yuanshu);c=h1.getsize();for(int v=0;vh2.jilu(h1.esc());for(int v=0;vSystem.out.print(""+h2.esc()+"\n"); }}class StackOfIntegers {private int size;private int[] zhan;public static final int a=16;public StackOfIntegers(){this(a);}public StackOfIntegers(int n){zhan = new int[n];}public void jilu(int up) {if(size>=zhan.length){int[] temp = new int[zhan.length * 2];System.arraycopy(zhan,0,temp,0,zhan.length);zhan=temp;}zhan[size++]=up;}public int esc(){return zhan[--size];}public int getsize(){return size;}}【实验总结】练习了创建随机数的⽅法以及Java的输出⽅法,在编码的过程中还是经常出现⼤⼩写打错的情况。

[工作总结]java实验报告

[工作总结]java实验报告

[工作总结]java实验报告一、实验目的:通过本次Java实验的学习,我们可以掌握Java的基本语法,了解面向对象编程的思想,并通过实际操作加深对Java语言的理解。

二、实验环境1.操作系统:Windows 102.JDK版本:1.83.集成开发工具:Eclipse三、实验内容通过本次实验,我们主要学习了以下内容:1. Java语言的基本语法和特性在本次实验中,我们主要学习了Java语言的基础知识,包括Java的语法、数据类型、运算符等。

其中,我们需要掌握Java中的数据类型和变量定义、Java的流程控制语句、Java中的面向对象编程思想等。

2. Java语言的面向对象编程在本次实验中,我们主要学习了Java语言的面向对象编程,包括Java中的类和对象、继承、封装、多态等。

3. Java程序设计在本次实验中,我们需要编写Java程序来实现各种功能。

主要任务包括:编写一个简单的Java应用程序、编写Java类、编写Java方法、编写Java异常处理程序等。

四、实验步骤1. 编写一个简单的Java应用程序Java应用程序是一种可以独立运行的程序,我们可以使用Eclipse来生成一个Java应用程序模板,然后根据自己的需要进行修改。

Java类是一种用来描述对象的模板,我们需要根据自己的需求编写Java类,并定义类中的属性和方法。

Java异常处理程序是一种用来处理Java程序中发生的异常的程序,我们需要根据自己的需求来编写Java异常处理程序。

五、实验总结通过本次实验,我对Java的应用有了更加深刻的理解,同时也提升了自己的编程能力。

同时,我也学会了如何进行Java程序的调试和测试,更加熟练地掌握了Java语言的应用。

java实验报告总结[范本]

java实验报告总结[范本]

java实验报告总结[范本] Java实验报告总结一、实验目的本次Java实验旨在让我们更深入地理解Java语言的基础知识,包括数据类型、控制结构、数组和对象等,并提升我们的编程实践能力和问题解决能力。

二、实验内容本次实验主要涉及Java语言的基础知识,包括数据类型、控制结构、数组和对象等。

我们通过编写程序来解决一些实际问题,例如计算器的实现、排序算法的实现等。

三、实验过程1.实验准备在开始实验之前,我首先复习了Java语言的基础知识,包括数据类型、控制结构、数组和对象等,以确保我对这些知识点有清晰的理解。

然后,我查阅了相关的Java编程书籍和网上资源,了解了Java编程的基本规范和最佳实践。

2.实验实施根据实验要求,我首先编写了一个计算器程序,该程序可以执行加、减、乘、除等基本运算。

然后,我实现了一个冒泡排序算法,用于对一个整数数组进行排序。

在实现这些程序的过程中,我遇到了许多问题,例如程序出现编译错误、运行时异常等。

但是,通过查阅相关资料和请教同学,我逐渐解决了这些问题。

3.实验总结通过本次实验,我深入理解了Java语言的基础知识,掌握了Java编程的基本技能和方法。

同时,我也发现了自己在编程中存在的问题和不足之处,例如对Java语言特性的理解不够深入、编程规范不够严格等。

针对这些问题,我将在今后的学习和实践中加以改进。

四、实验心得1.深入理解Java语言特性是编写高质量Java程序的关键。

例如,在实现计算器程序时,我必须深入理解Java的运算符和表达式规范才能确保程序的正确性。

2.掌握Java编程规范是提高程序可读性和可维护性的重要途径。

例如,在实现排序算法时,我必须遵循Java编程规范中的命名规范和注释规范才能使程序更易于理解和维护。

3.良好的编程习惯是避免程序出现问题的关键。

例如,在实现程序时,我必须注意程序的异常处理和错误处理才能确保程序的稳定性和可靠性。

4.团队合作是提高编程效率和质量的重要手段。

java实验报告

java实验报告

java实验报告一、实验目的本次实验的目的是深入了解Java的基本语法和面向对象编程的思想。

通过实践,掌握Java的常用工具和类库,并能熟练使用Java进行编程和调试。

二、实验内容1.环境搭建在本次实验中,我们使用Eclipse作为Java的开发工具,需要安装JDK环境和相关插件。

安装完毕后,我们需要进行相关配置,如添加JDK环境变量,设置Eclipse编译选项等。

2.基本语法和数据类型Java的基本语法和数据类型是Java编程的基础,需要掌握Java的变量、运算符、流程控制语句等基本知识。

在实验中,我们将会练习Java的语法和数据类型的使用,如输出文本、计算数值、定义变量等。

3.面向对象编程思想Java是一门面向对象的编程语言,面向对象思想是Java编程的核心。

在本次实验中,我们将学习Java的类、对象、继承、多态等面向对象的知识,并通过实践来理解和熟悉Java面向对象编程的思想。

4.常用类库和工具Java有丰富的类库和工具,如集合类、IO类、网络编程类等。

在本次实验中,我们将会了解并运用Java的常用类库和工具来实现一些简单的功能,如读写文件、网络通信等。

三、实验步骤1.环境搭建与配置安装JDK环境和Eclipse开发工具,并将JDK环境添加到系统环境变量中。

然后进入Eclipse,设置编译选项和相关插件,如Java自动补全、eclipse编译和调试工具等。

2.基本语法和数据类型基于Java的基本语法和数据类型,我们可以编写一些简单的程序,如输出HelloWorld、计算数字和变量赋值等。

这些程序可以通过Eclipse自带的编译器进行调试和运行。

3.面向对象编程思想通过学习Java的面向对象编程思想,我们可以定义一个类和对应的对象,使用继承和多态来实现复杂的业务逻辑,并使用接口和内部类等技术来封装数据和实现较复杂的功能。

4.常用类库和工具在实践中,我们会用到常用的类库和工具,如java.io包和包。

操作系统实验报告java

操作系统实验报告java

操作系统实验报告院系:专业:班级:学号:姓名:指导老师:进程调度的模拟与内存管理一、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。

当就续进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。

实验模拟实现处理机调度,以加深了解处理机调度的工作,并体会优先级和时间片轮转调度算法的具体实施方法。

帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。

二、实验要求1、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权-1/要求运行时间-1要求运行时间=0时,撤销该进程3、重新排序,进行下轮调度。

4、可随时增加进程;5、规定道数,设置后备队列和挂起状态。

若内存中进程少于规定道数,可自动从后备队列调度一作业进入。

被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。

6、每次调度后,显示各进程状态。

7、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/空表目)8、结合以上实验,PCB增加为:{PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针}9、采用最先适应算法分配主存空间;10、进程完成后,回收主存,并与相邻空闲分区合并。

11、采用图形界面;三、实验内容选择一个调度算法,实现处理机调度。

1、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。

3、主存储器空间的分配和回收。

在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验原理该模拟系统采用java语言实现,要实现的功能有新建进程、进程调度、挂起进程、解挂进程、删除进程,道数和时间片大小可以由用户自己调整,有两种调度策略:按优先权调度和按时间片轮转调度。

每个进程可能有5种状态:新建(new)、就绪(ready)、运行(running)、阻塞(waiting)、挂起(suspend)。

java实习报告范文5篇

java实习报告范文5篇

java实习报告范文5篇2019优秀java实习报告范文(一)一:实习介绍1)实习题目学生信息管理系统的设计与开发2)实习目的《Java程序设计》课程是电子商务专业的一门专业必修课程,特针对此课程进行为期三周的实践教学,旨在提升本专业学生对此课程中的理论知识的综合应用能力、提高学生的逻辑思维能力、软件开发能力。

本次课程实习要求学生用Java技术在Windows平台下开发学生信息管理系统。

通过此程序的开发能够切实提高学生的程序设计水平,在实践中掌握面向对象程序设计的开发思想。

3)开发环境操作系统;Windows XP编程环境:MyEclipse 6.0主要技术:Java Swing实现窗体界面JDBC实现数据库操作系统架构:三层架构(MVC)+DAO设计模式数据库:MySQL5.0二:课设内容;1)系统功能需求学生信息管理系统主要对在校学生的个人基本信息以及成绩信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供成绩查询功能。

我们的目标就是为该系统提供前台用户界面设计以及后台连接数据库程序设计,系统程序界面采用Java Swing组件实现,数据库操作采用JDBC 实现。

学生信息管理系统要面对教师和学生用户。

对于教师,需要查询全部学生的基本信息和成绩信息,并且可以对其进行修改。

对于学生,不需要查询自己的基本信息,只需要查询成绩。

为了保护学生成绩隐私,每位学生登录系统后只能查询自己的成绩,而无法看到别人的成绩。

教师方面:教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。

在查询功能里面,可以选择是查询学生基本信息,还是查询学生成绩信息。

在查询学生基本信息时,可以从依据不同字段,即学生信息表的不同属性进行查找。

在查找学生成绩信息时,只能依据学生姓名和学号进行查找。

在修改功能里面,包括对学生基本信息表和学生成绩表进行增加和删除记录。

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

操作系统实验报告院系:专业:班级:学号:姓名:指导老师:进程调度的模拟与内存管理一、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。

当就续进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。

实验模拟实现处理机调度,以加深了解处理机调度的工作,并体会优先级和时间片轮转调度算法的具体实施方法。

帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。

二、实验要求1、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权-1/要求运行时间-1要求运行时间=0时,撤销该进程3、重新排序,进行下轮调度。

4、可随时增加进程;5、规定道数,设置后备队列和挂起状态。

若内存中进程少于规定道数,可自动从后备队列调度一作业进入。

被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。

6、每次调度后,显示各进程状态。

7、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/空表目)8、结合以上实验,PCB增加为:{PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针}9、采用最先适应算法分配主存空间;10、进程完成后,回收主存,并与相邻空闲分区合并。

11、采用图形界面;三、实验内容选择一个调度算法,实现处理机调度。

1、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。

3、主存储器空间的分配和回收。

在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验原理该模拟系统采用java语言实现,要实现的功能有新建进程、进程调度、挂起进程、解挂进程、删除进程,道数和时间片大小可以由用户自己调整,有两种调度策略:按优先权调度和按时间片轮转调度。

每个进程可能有5种状态:新建(new)、就绪(ready)、运行(running)、阻塞(waiting)、挂起(suspend)。

每个状态都有一个队列用来存放处于该状态的进程,不同的调度策略采用不同的队列实现。

当创建进程时,如果内存中的进程数还没达到规定道数,则将新建进程插入就绪队列,如果内存中进程数已经达到规定道数,则插到后备队列,后备队列中的进程的状态为new。

CPU每次调度时都从就绪队列中取进程,在进程执行过程中如果下一个操作时IO操作,则将进程插入到waiting队列。

在系统运行过程中可以执行进程挂起操作,但执行的挂起操作时系统自动暂停运行,在弹出窗口选择要挂起的进程后,将选中的进程从原来的队列中删除并插入到挂起队列。

进行解挂操作时将选中的进程从挂起队列中删除并插入该进程原来所处的队列。

➢按优先级调度:当选择按优先权调度时,所有队列都采用优先队列,优先队列采用一个有序链表实现,进程的优先权值越大代表优先级越高,优先队列中的进程按优先权从大到小排列,当新进程插入时根据该进程的优先权插入到队列中的合适位置,插入后保持队列按优先权从大到小排列,如果新进程与队列中某个进程优先权值相等,则该新进程插到那个进程后面,以遵循先来先服务的规则。

当要从队列中取出进程时总是取队列中第一个进程,因为该进程的优先级最高。

➢按时间片轮转调度:当选择按时间片轮转调度时,所有队列都采用先进先出队列,先进先出队列采用一个普通单向链表实现,当新进程插入时插入到队列的末尾,当要取进程时取队首进程,这样就实现了先进先出。

➢内存管理该实验基于实验一完成,核心是内存的分配和回收,在实验一的基础上增加内存管理部分,在新建进程的时候增加一个输入内存大小的输入框,在进程进入内存时要分配内存,在进程销毁时要回收内存,如果进入内存时内存不足,则将进程插入到后备队列等待下次调度。

系统维护一个内存表,每个表项代表一个空间,每个空间保存了该空间的起始地址和空间大小以及空间使用状态。

初始时只有一个空间,当CPU启动时要分配内存,内存分配采用最先适应算法。

回收内存时如果有相邻空闲空间,则要进行空闲空间合并。

五、部分源程序public class data {private String name; //进程的名字private int time; //要求的时间总和private int priority; //进程的优先权,值越大优先级越高private String state; //进程的状态private int start;private int length; //进程所占的内存空间private int isIn; //进程所需内存大小➢进程各项变量的初始化public void setName(String name) { = name;}public void setPriority(int priority) {this.priority = priority;}public void setState(String state) {this.state = state;}public String getName() {return ();}public int getPriority() {return (this.priority);}public String getState() {return (this.state);}public void setTime(int time) {this.time = time;}public int getTime() {return (this.time);}public void setLength(int length) {this.length = length;}public int getLength() {return (this.length);}public void setStart(int start) {this.start = start;}public int getStart() {return (this.start);}public void setIsIn(int isIn) {this.isIn = isIn;}public int getIsIn() {return (this.isIn);}➢删除列表中第几个数据public void update(ArrayList<Data> list, int num) {sList.clear();for(int i = 0; i < list.size(); i++){if(i != num){sList.add(list.get(i));}}list.clear();for(int i = 0; i < sList.size();i++){list.add(sList.get(i));}}public void update1(ArrayList<Data_Memory> list, int num){sList1.clear();for(int i = 0; i < list.size(); i++){if(i != num){sList1.add(list.get(i));}}list.clear();for(int i = 0; i < sList1.size();i++){list.add(sList1.get(i));}}➢放入内存public void putInMemory(){if(runningList.size()>0){if(runningList.get(0).getIsIn()==0){for(int i = 0; i < unAssignList.size(); i++){if(unAssignList.get(i).getLimit() >= runningList.get(0).getLength()){runningList.get(0).setStart(unAssignList.get(i).getBase());runningList.get(0).setIsIn(1);if(unAssignList.get(i).getLimit() == runningList.get(0).getLength()){update1(unAssignList,i);}else{unAssignList.get(i).setBase(unAssignList.get(i).getBase()+runningList.get(0).getLength());unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-runningList.get(0).getLength());}break;}}}}if(readyList.size()>0){for(int j = 0; j < readyList.size(); j++){if(readyList.get(j).getIsIn()==0){for(int i = 0; i < unAssignList.size(); i++){if(unAssignList.get(i).getLimit() >= readyList.get(j).getLength()){readyList.get(j).setStart(unAssignList.get(i).getBase());readyList.get(j).setIsIn(1);if(unAssignList.get(i).getLimit() == readyList.get(j).getLength()){update1(unAssignList,i);}else{unAssignList.get(i).setBase(unAssignList.get(i).getBase()+readyList.get(j).getLength());unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-readyList.get(j).getLength());}break;}}}}}}➢移除内存public void putOutMemory(ArrayList<Data> list, int num){list.get(num).setIsIn(0);boolean flag1 = false;boolean flag2 = false;for(int i = 0; i < unAssignList.size(); i++){if(unAssignList.get(i).getBase() ==(list.get(num).getLength()+list.get(num).getStart())){unAssignList.get(i).setBase(list.get(num).getStart());unAssignList.get(i).setLimit(list.get(num).getLength()+unAssignList.get(i).getLimit());flag1 = true;break;}}for(int i = 0; i < unAssignList.size(); i++){if((unAssignList.get(i).getBase()+unAssignList.get(i).getLimit()) ==list.get(num).getStart()){if(!flag1){unAssignList.get(i).setLimit(list.get(num).getLength()+unAssignList.get(i).getLimit());flag2 = true;break;}else{unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()+unAssignList.get(i+1).getLimit());update1(unAssignList,i+1);}}}if(flag1 || flag2){}else{int i = 0;while(unAssignList.get(i).getBase()<list.get(num).getStart()){i++;}Data_Memory data = new Data_Memory();data.setBase(list.get(num).getStart());data.setLimit(list.get(num).getLength());sList1.clear();for(int j = 0; j < i; j++){sList1.add(unAssignList.get(j));}sList1.add(data);for(int j = i; j < unAssignList.size(); j++){sList1.add(unAssignList.get(j));}unAssignList.clear();for(int j = 0; j < sList1.size(); j++){unAssignList.add(sList1.get(j));}}}➢对内存管理调度的操作private class MyRenderer extends DefaultListCellRenderer{public Component getListCellRendererComponent(JList list, Object value,int index, boolean isSelected, boolean cellHasFocus){super.getListCellRendererComponent(list, value, index, isSelected,cellHasFocus);setBackground(Color.gray);for(int i = 0; i < unAssignList.size(); i++){for(int j = unAssignList.get(i).getBase()+6 ; j <unAssignList.get(i).getLimit()+unAssignList.get(i).getBase()+6; j++){if(index == j){setBackground(Color.white);//当没有内容变为白色}}}return this;}}public void timeManager(){//去掉time==0的,从waiting队列加入新的进程,排序,调整waitingList加入runningLIst//去掉time==0的if(runningList.size()>0)if(runningList.get(0).getTime()==0)runningList.clear();sList.clear();for(int i = 0; i < readyList.size(); i++){if(readyList.get(i).getTime()>0){sList.add(readyList.get(i));}}readyList.clear();for(int i =0; i < sList.size();i++){readyList.add(sList.get(i));readyList.get(i).setState("ready");}//从waiting队列加入新的进程int j = 0;int m = readyList.size();for(; m < 6 && j < waitingList.size(); m++,j++){readyList.add(waitingList.get(j));readyList.get(m).setState("ready");}// sort(readyList);//调整waitingListsList.clear();for(int i = j; i < waitingList.size(); i++){sList.add(waitingList.get(i));}waitingList.clear();for(int i =0; i < sList.size();i++){waitingList.add(sList.get(i));}//加入runningLIstif(runningList.size()==0){if(readyList.size()>0){runningList.add(readyList.get(0));runningList.get(0).setState("running");update(readyList,0);if(waitingList.size()>0){readyList.add(waitingList.get(0));readyList.get(5).setState("ready");}update(waitingList,0);}}else//if(runningList.size()>0){if(readyList.size()>0){readyList.add(runningList.get(0));runningList.clear();readyList.get(0).setState("running");readyList.get(readyList.size()-1).setState("ready");runningList.add(readyList.get(0));update(readyList,0);}}putInMemory();sub();display();jtf1.grabFocus();}public void PManager(){if(runningList.size()>0)if(runningList.get(0).getTime()==0)runningList.clear();s List.clear();f or(int i = 0; i < readyList.size(); i++){if(readyList.get(i).getTime()>0){sList.add(readyList.get(i));}}r eadyList.clear();f or(int i =0; i < sList.size();i++){readyList.add(sList.get(i));readyList.get(i).setState("ready");}i nt j = 0;i nt m = readyList.size();f or(; m < 6 && j < waitingList.size(); m++,j++){readyList.add(waitingList.get(getFirstW(waitingList)-1));readyList.get(m).setState("ready");update(waitingList,getFirstW(waitingList)-1);}//调整waitingList//加入runningLIsti f(runningList.size()==0){if(readyList.size()>0){runningList.add(readyList.get(getFirstW(readyList)-1));runningList.get(0).setState("running");update(readyList,getFirstW(readyList)-1);if(waitingList.size()>0){readyList.add(waitingList.get(getFirstW(waitingList)-1));readyList.get(readyList.size()-1).setState("ready");}update(waitingList,getFirstW(waitingList)-1);}}e lse{if(readyList.size()>0){boolean flag = false;int a = runningList.get(0).getPriority();int b = readyList.get(getFirstW(readyList)-1).getPriority();if(a > b){sList.clear();sList.add(readyList.get(getFirstW(readyList)-1));flag = true;}if(flag){runningList.get(0).setState("ready");readyList.add(runningList.get(0));runningList.clear();runningList.add(sList.get(0));runningList.get(0).setState("running");update(readyList,getFirstW(readyList)-1);}}}p utInMemory();s ub1();d isplay();j tf1.grabFocus();}}六、程序运行图图1 进程界面图2 新建进程图3 进程的挂起与解挂图4. 进程的删除图5 进程运行中七、实验总结为了完成这个程序,我参考了课本,互联网以及相关资料。

相关文档
最新文档