太原工业学院计算机工程系优质文档.docx
《太原工业学院计算机工程系优质文档.docx》由会员分享,可在线阅读,更多相关《太原工业学院计算机工程系优质文档.docx(23页珍藏版)》请在冰豆网上搜索。
![太原工业学院计算机工程系优质文档.docx](https://file1.bdocx.com/fileroot1/2023-5/24/6a9cd685-282a-4a4a-b07c-925b1f0b7614/6a9cd685-282a-4a4a-b07c-925b1f0b76141.gif)
太原工业学院计算机工程系优质文档
太原工业学院计算机工程系
操作系统实验报告()
实验名称
动态分区分配方式的模拟
实验日期
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("com.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();
}
}
//查询
publicListFindAll(){
Listlist=newArrayList();
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();
}
}
//排序
publicListasc(){
Listlist=newArrayList<>();
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();
Listlist=dao.FindAll();
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;