动态分区分配方式地模拟.docx
- 文档编号:12792577
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:23
- 大小:102.91KB
动态分区分配方式地模拟.docx
《动态分区分配方式地模拟.docx》由会员分享,可在线阅读,更多相关《动态分区分配方式地模拟.docx(23页珍藏版)》请在冰豆网上搜索。
动态分区分配方式地模拟
工业学院计算机工程系
操作系统实验报告()
实验名称
动态分区分配方式的模拟
实验日期
2016/12/3
成绩
姓名
班级学号
实
验
目
的
了解动态分区分配方式中使用的数据结构和分配算法,进一步加深对动态分区存储管理方式及其实现过程的理解
实
验
环
境
Eclipse,SQLServer
实
验
容
1.在数据库中创建分区表;
2.JAVA实现采用首次适应算法和最佳适应算法的动态分区分配过程和回收过程。
3.设置初始状态,每次分配和回收后显示出空闲存分区表的情况。
实
验
步
骤
数据库的创建:
实验代码:
连库类:
packagecommon;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
publicclassConnectionFactory{
//Createavariablefortheconnectionstring.
privatestaticfinalStringconnectionUrl="jdbc:
sqlserver:
//localhost:
1433;"+
"DatabaseName=czxt;";
//DeclaretheJDBCobjects.user=sa;password=wz951107
privatestaticConnectionconn=null;
static{
try{
//Establishtheconnection.
Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver");
conn=DriverManager.getConnection(connectionUrl,"sa","wz951107");
/*if(conn!
=null)
{
System.out.println("连接成功");
}*/
}
//Handleanyerrorsthatmayhaveoccurred.
catch(Exceptione){
e.printStackTrace();
}
}
//关闭连接
publicstaticvoidclose(ResultSetrs,PreparedStatementpstmt,Connectionconn)throwsException{
//释放资源
if(rs!
=null){
rs.close();
}
if(pstmt!
=null){
pstmt.close();
}
if(conn!
=null){
conn.close();
}
}
//获取连接
publicstaticConnectiongetConnection(){
returnconn;
}
publicstaticvoidmain(String[]args)
{
if(conn!
=null)
{
System.out.println("连接成功");
}
}
}
实体类:
packagebean;
publicclassZone{
privateStringnumber;
privateStringsize;
privateStringaddress;
privateStringstatus;
privateStringwork;
publicStringgetWork(){
returnwork;
}
publicvoidsetWork(Stringwork){
this.work=work;
}
publicZone(){
super();
}
publicZone(Stringnumber,Stringsize,Stringaddress,Stringstatus,Stringwork){
super();
this.number=number;
this.size=size;
this.address=address;
this.status=status;
this.work=work;
}
publicStringgetNumber(){
returnnumber;
}
publicvoidsetNumber(Stringnumber){
this.number=number;
}
publicStringgetSize(){
returnsize;
}
publicvoidsetSize(Stringsize){
this.size=size;
}
publicStringgetAddress(){
returnaddress;
}
publicvoidsetAddress(Stringaddress){
this.address=address;
}
publicStringgetStatus(){
returnstatus;
}
publicvoidsetStatus(Stringstatus){
this.status=status;
}
Override
publicStringtoString(){
return"Zone[number="+number+",size="+size+",address="+address+",status="+status+",work="
+work+"]";
}
}
Dao层类(对数据库的操作):
packagedao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.util.ArrayList;
importjava.util.List;
importbean.Zone;
importcommon.ConnectionFactory;
publicclassZoneDao{
//插入
publicvoidsave(Zonezone){
try{
Connectionconn=null;
PreparedStatementpstmt=null;
try{
//连接
conn=ConnectionFactory.getConnection();
//预处理sql
Stringsql="insertintozonevalues(?
?
?
?
?
)";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,zone.getNumber());
pstmt.setString(2,zone.getSize());
pstmt.setString(3,zone.getAddress());
pstmt.setString(4,zone.getStatus());
pstmt.setString(5,zone.getWork());
//执行sql
intnum=pstmt.executeUpdate();
System.out.println("Zone插入一条数据");
}finally{
/*ConnectionFactory.close(null,pstmt,conn);*/
}
}catch(Exceptione){
e.printStackTrace();
}
}
//删除
publicvoiddeleteByWork(Stringwork){
try{
Connectionconn=null;
PreparedStatementpstmt=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="deletefromzonewherework=?
";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,work);
intnum=pstmt.executeUpdate();
System.out.println("删除"+num+"条数据");
}finally{
/*ConnectionFactory.close(null,pstmt,conn);*/
}
}catch(Exceptione){
e.printStackTrace();
}
}
//删除
publicvoiddeleteByNumber(Stringnumber){
try{
Connectionconn=null;
PreparedStatementpstmt=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="deletefromzonewherenumber=?
";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,number);
intnum=pstmt.executeUpdate();
System.out.println("删除"+num+"条数据");
}finally{
/*ConnectionFactory.close(null,pstmt,conn);*/
}
}catch(Exceptione){
e.printStackTrace();
}
}
//查询
publicList
List
try{
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
//连接
conn=ConnectionFactory.getConnection();
//预处理sql
Stringsql="select*fromzoneORDERBYnumber";
pstmt=conn.prepareStatement(sql);
//执行sql
rs=pstmt.executeQuery();
while(rs.next())
{
Stringnumber=rs.getString("number");
Stringsize=rs.getString("size");
Stringaddress=rs.getString("address");
Stringstatus=rs.getString("status");
Stringwork=rs.getString("work");
Zonezone=newZone(number,size,address,status,work);
list.add(zone);
}
}finally{
/*ConnectionFactory.close(rs,pstmt,conn);*/
}
}catch(Exceptione){
e.printStackTrace();
}
returnlist;
}
//单个查询
publicZonequeryByNumber(Stringnumber,Stringsize,Stringaddress,Stringstatus,Stringwork){
Zonezone=newZone();
try{
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="select*fromzoneWhere1=1";
if(number!
=null){
sql+="andnumber='"+number+"'";
}
if(size!
=null){
sql+="andsize='"+size+"'";
}
if(address!
=null){
sql+="andaddress='"+address+"'";
}
if(status!
=null){
sql+="andstatus='"+status+"'";
}if(work!
=null){
sql+="andwork='"+work+"'";
}
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next())
{
zone.setNumber(rs.getString("number"));
zone.setAddress(rs.getString("address"));
zone.setSize(rs.getString("size"));
zone.setStatus(rs.getString("status"));
zone.setWork(rs.getString("work"));
}
}finally{
/*ConnectionFactory.close(rs,pstmt,conn);*/
}
}catch(Exceptione){
e.printStackTrace();
}
returnzone;
}
//修改
publicvoidupdate(Zonezone){
try{
Connectionconn=null;
PreparedStatementpstmt=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="updatezoneset"
+"number=?
size=?
address=?
status=?
work=?
"
+"wherenumber=?
";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,zone.getNumber());
pstmt.setString(2,zone.getSize());
pstmt.setString(3,zone.getAddress());
pstmt.setString(4,zone.getStatus());
pstmt.setString(5,zone.getWork());
pstmt.setString(6,zone.getNumber());
intnum=pstmt.executeUpdate();
System.out.println("修改了"+num+"条数据");
}finally{
/*ConnectionFactory.close(null,pstmt,conn);*/
}
}catch(Exceptione){
e.printStackTrace();
}
}
//排序
publicList
List
try{
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="select*fromzoneORDERBYaddressASC";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next())
{
Stringnumber=rs.getString("number");
Stringsize=rs.getString("size");
Stringaddress=rs.getString("address");
Stringstatus=rs.getString("status");
Stringwork=rs.getString("work");
Zonezone=newZone(number,size,address,status,work);
list.add(zone);
}
}finally{
}
}catch(Exceptione){
e.printStackTrace();
}
returnlist;
}
}
视图层:
packageview;
importjava.util.List;
importjava.util.Scanner;
importbean.Zone;
importdao.ZoneDao;
publicclassZoneview{
publicstaticvoidmain(String[]args){
System.out.println("欢迎进入动态分区:
");
System.out.println("1.首次适应算法");
System.out.println("2.最佳适应算法");
Scannerin=newScanner(System.in);
Stringone=in.nextLine();
if(one.equals("1")){
ZoneDaodao=newZoneDao();
List
for(Zonezone:
list){
System.out.println(zone);
}
System.out.println("1.分配");
System.out.println("2.回收");
Stringtwo=in.nextLine();
if(two.equals("1")){
System.out.println("请输入作业号:
");
Stringwork=in.nextLine();
booleanflag=false;
for(intj=0;j { Zonefzone=list.get(j); if(fzone.getWork().equals(work)){ flag=true; } } if(flag) { System.out.println("该作业号已经存在"); }else { System.out.println("请输入作业大小: "); Stringsize=in.nextLine(); Stringaddress=null; Stringstatus=null; Stringnumber=work; Stringsize2=null;//修改分配的表 Zonezone1=newZone(); booleanf=false; for(inti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 分区 分配 方式 模拟