動態分區分配方式地模擬_第1頁
動態分區分配方式地模擬_第2頁
動態分區分配方式地模擬_第3頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、工業學院計算機工程系實 驗 目 的操作系統實驗報告()實 驗 名 稱動態分區分配方 式的模擬實驗日期2016/12/3成績姓名班級學號了解動態分區分配方式中使用的數據結構和分配算法,進一步加深對動態分區存儲管理方式及其實現過程的理解Eclipse, SQL Server實 驗 環 境1.在數據庫中創建分區表;2.實 驗 步 驟Name'Type|y numbervarJ'jnWAX)mvarcharjWAX)addrHSvarchir(MAX)農tu弓vfifchwi.WAX)vrarkvarchjn MAX)實驗代碼:連庫類:package com mon;import ja

2、va.sql.C onnection;數據庫的創建:import java.sql.DriverMa nager;Length ScabAllow NullJAVA實現采用首次適應算法和最佳適應算法的動態分區分配過程和回收過程。3.設置初始狀態,每次分配和回收后顯示出空閑存分區表的情況。public class ConnectionF actory / Create a variable for the conn ecti on stri ng.privatestaticfinalStringconnectionUrl"jdbc:sqlserver:/localhost:1433;&

3、quot; +"DatabaseName=czxt;"/ Declare the JDBC objects. user=sa;password=wz951107private static Connection conn = n ull;static try / Establish the conn ecti on.DriverMa nager.getCo nn ectio n(co nn ectio nU rl,"sa","wz951107");/* if(co nn!=n ull)(”連接成功");*/ Han dle

4、any errors that may have occurred.catch (Excepti on e) e.pri ntStackTrace();/關閉連接pstmt,C onn ecti onpublic static void close(ResultSetrs,PreparedStatementconn) throws Excepti on/釋放資源if(rs!=null)rs.close();if(pstmt!=null)pstmt.close();if(conn!=nu ll)conn .close();/獲取連接public static Connection getC on

5、nection() retur n conn;public static void main(String args)if(c onn!=nu II)(” 連接成功");實體類:package bean;public class Zone privateStri ngn umberprivateStri ngsize ;privateStri ngaddressprivateStri ngstatusprivateStri ngwork ;publicStri ng getWork() return work ;public void setWork(Stringwork ) thi

6、s . work = work ;publicZon e() super ();statuspublicZone(Stringnumber, Stringsize , String address , StringStringwork ) super ();this . number = number ;this . size = size ;this . address = address ;this . status = status ;this . work = work ;publicStri ng getNumber() return number ;public void setN

7、umber(String number) this . number = number ;public Stri ng getSize() return size ;public void setSize(Stringsize ) this . size = size ;public String getAddress() return address ;public void setAddress(Stringaddress ) this . address = address ;public String getStatus() return status ;public void set

8、Status(Str ingstatus ) this . status = status ;OverridepublicStri ng toStri ng() return"Zone n umber="+ n umber + ", size="address + ", status="+ status+ ", work="+ work + ""+ size + ", address="Dao層類(對數據庫的操作):package dao;import bea n.Zone;

9、import com mon.ConnectionF actory;public class Zon eDao II插入public void save(Z one zon e)try Connection conn = n ull;PreparedStateme nt pstmt = nu II;try /連接conn = ConnectionF actory.getC onnection();/預處理sqlStri ng sql = " in sert into zone values(?,?,?,?,?)" pstmt = conn. prepareStateme n

10、t(sql);pstmt.setStri ng(1,z on e.getNumber(); pstmt.setStri ng(2, zon e.getSize();pstmt.setStri ng(3, zon e.getAddress(); pstmt.setStri ng(4, zon e.getStatus();pstmt.setStri ng(5, zon e.getWork();II執行sqlint num = pstmt.executeUpdate();System.out.println("Zone插入一條數據”); fin ally /*ConnectionF act

11、ory.close (n ull, pstmt, conn );*/ catch (Excepti on e) e.pri ntStackTrace();II刪除public void deleteByWork(Stri ng work)try Connection conn = n ull;PreparedStateme nt pstmt = nu II;try conn = ConnectionF actory.getC onnection();String sql = " delete from zone where work = ?"pstmt = conn. pr

12、epareStateme nt(sql);pstmt.setStri ng(1, work);int num = pstmt.executeUpdate();System.out.println("刪除"+num+"條數據"); fin ally /*ConnectionF actory.close (n ull, pstmt, conn );*/ catch (Excepti on e) e.pri ntStackTrace();/刪除public void deleteByNumber(Stri ng nu mber)try Connection c

13、onn = n ull;PreparedStateme nt pstmt = n ull;try conn = ConnectionF actory.getC onn ecti on();String sql = " delete from zone where number = ?" pstmt = conn .prepareStateme nt(sql);pstmt.setStri ng(1, nu mber);int num = pstmt.executeUpdate();System.out.println(”刪除"+num+"條數據"

14、); fin ally /*Conn ecti onF actory.close( nu II, pstmt, conn );*/ catch (Excepti on e) e.pri ntStackTrace();/查詢public List<Zone> FindAII()List<Z one> list = new ArrayList<Z on e>();try Connection conn = n ull;PreparedStateme nt pstmt = nu II;ResultSet rs = null;try /連接conn = Connec

15、tionF actory.getC onnection();/預處理sqlString sql = " select * from zone ORDER BY number"pstmt = conn. prepareStateme nt(sql);II執行sqlrs = pstmt.executeQuery();while(rs. next()String nu mber = rs.getStri ng(” nu mber");String size = rs.getStri ng("size");String address = rs.get

16、Stri ng("address");String status = rs.getStri ng("status");Stri ng work = rs.getStri ng("work");Zone zone = new Zone(nu mber, size, address, status,work); list.add(z on e); fin ally /*ConnectionF actory.close(rs, pstmt, conn );*/ catch (Excepti on e) e.pri ntStackTrace(

17、);return list;/單個查詢public Zone queryByNumber(Stri ng nu mber,Stri ng size,Stri ng address,Stri ng status,Stri ng work)Zone zone = new Zon e();try Connection conn = n ull;PreparedStateme nt pstmt = nu II;ResultSet rs = null;try conn = ConnectionF actory.getC onnection();Stri ng sql = " select *f

18、rom zone Where1 = 1"if(nu mber != nu ll)sql += " and nu mber = '"+number+""'if(size != n ull)sql += " and size = '"+size+""'if(address != nu ll)sql += " and address = '"+address+""'if(status != n ull)sql += &quo

19、t; and status = '"+status+""'if(work != n ull)sql += " and work = '"+work+""'pstmt = conn. prepareStateme nt(sql);rs = pstmt.executeQuery();while(rs. next()zon e.setNumber(rs.getStri ng(” nu mber");zon e.setAddress(rs.getStri ng("address&q

20、uot;);zon e.setSize(rs.getStri ng("size");zon e.setStatus(rs.getStri ng("status");zo ne.setWork(rs.getStri ng("work"); fin ally /*ConnectionF actory.close(rs, pstmt, conn );*/ catch (Excepti on e) e.pri ntStackTrace();retur n zone;/修改public void update(Z one zon e)try C

21、onnection conn = n ull;PreparedStateme nt pstmt = nu II;try conn = ConnectionF actory.getC onnection();String sql = " update zone set"+" nu mber = ?,size = ?,address = ?,status = ?,work = ?"+" where nu mber = ?"pstmt = conn. prepareStateme nt(sql);pstmt.setStri ng(1,z o

22、n e.getNumber();pstmt.setStri ng(2, zon e.getSize();pstmt.setStri ng(3, zon e.getAddress();pstmt.setStri ng(4, zon e.getStatus();pstmt.setStri ng(5, zon e.getWork();pstmt.setStri ng(6,z on e.getNumber();int num = pstmt.executeUpdate();System.out.println(”修改了 "+num+"條數據"); fin ally /*C

23、onnectionF actory.close (n ull, pstmt, conn );*/ catch (Excepti on e) e.pri ntStackTrace();/排序public List<Z one> asc()List<Z one> list = new ArrayList<>();try Connection conn = n ull;PreparedStateme nt pstmt = nu II;ResultSet rs = null;try conn = ConnectionF actory.getC onnection()

24、;String sql =" select * from zone ORDER BY address ASC"pstmt = conn. prepareStateme nt(sql);rs = pstmt.executeQuery();while(rs. next()String nu mber = rs.getStri ng(” nu mber");String size = rs.getStri ng("size");String address = rs.getStri ng("address");String sta

25、tus = rs.getStri ng("status");Stri ng work = rs.getStri ng("work");Zone zone = new Zone(nu mber, size, address, status,work); list.add(z on e); fin ally catch (Excepti on e) e.pri ntStackTrace();return list;視圖層:package view;import java.util.List;import java.util.Sca nner;import b

26、ea n.Zone;import dao.Z on eDao;public class Zon eview public static void main(String args) System.out.pri ntln(”歡迎進入動態分區:”);System.out.println("1.首次適應算法");System.out.println("2.最佳適應算法");Scanner in = new Sca nn er(System.i n);Stri ng one = in.n extLi ne();if(o ne.equals("1&qu

27、ot;)Zon eDao dao = new Zon eDao();List<Z on e> list = dao.Fi ndAII();for(Z one zone : list)System.out.pri ntln(zon e);System.out.println("1.分配");System.out.println("2.回收”);String two = in.nextLine();if(two.equals("1")System.out.println(”請輸入作業號:");Stri ng work = in

28、.n extLi ne();boolea n flag = false;for(i nt j = O;j<list.size();j+)Zone fzone = list.get(j);if(fzon e.getWork().equals(work)flag = true;if(flag)System.out.pri ntln(”該作業號已經存在”);elseSystem.out.println(”請輸入作業大小:”);String size = in.n extL in e();String address = nu II;String status = n ull;String nu

29、 mber = work;Stri ng size2 = n ull;/修改分配的表Zone zone1 = new Zon e();boolea n f = false;for(i nt i = 0;i<list.size();i+)Zone zone = list.get(1);zone1 = zone;if(zone.getStatus().equals(”空閑")if(l nteger.valueOf(z on e.getSize()>=I nteger.valueOf(size)address = zon e.getAddress(); status =&quo

30、t; 占用"size2=Stri ng.valueOf(l nteger.valueOf(z on e.getSize().i ntValue()-l nteger.valueOf(size).i ntValue();zon e1.setSize(Stri ng.valueOf(size2);address,zon e1.setAddress(Stri ng.valueOf(I nteger.valueOf(z on e1.getAddress().i ntVa lue()+I nteger.valueOf(size).i ntValue();Zone zone2 = new Zon

31、e(number, size, status,work);dao.save(z on e2);dao.update(z on e1);f = true;break; if(!f)Zone mzone = list.get(0);zone1 = mzone;if(mzo ne.getStatus().equals(”空閑")if(I nteger.valueOf(mz on e.getSize()>=l nteger.valueOf(size)address = mzon e.getAddress();status =" 占用"size2=Stri ng.va

32、lueOf(l nteger.valueOf(mz on e.getSize().i ntValue()-l nteger.valueOf(size).i ntValue();zon e1.setSize(Stri ng.valueOf(size2);zon e1.setAddress(Stri ng.valueOf(I nteger.valueOf(z on e1.getAddress().i ntValue()+I nteger.valueOf(size).i ntValue();Zone zone2 = new Zone(number,size,address, status,work)

33、;dao.save(z on e2);dao.update(z on e1);f = true;break;elseSystem.out.pri ntl n("請輸入回收的作業號:”);Stri ng work = in.n extLi ne();int i = 0;for(Z one zone : list)if(zon e.getWork().equals(work)zo ne.setStatus(”空閑");zone.setWork(”空間");for(;i<list.size();)if(i!=0)空閑")空閑")if(list.

34、get(i-1).getStatus().equals(”zon e.setSize(Stri ng.valueOf(l nteger.valueOf(z on e.getSize()+l nteger.value Of(list.get(i-1).getSize();dao.deleteByNumber(list.get(i-1).getNumber();i=i-1;if(i+1<list.size() if(list.get(i+1).getStatus().equals("zon e.setSize(Stri ng.valueOf(I nteger.valueOf(z o

35、n e.getSize()+I nteger.value Of(list.get(i+1).getSize();elsebreak;dao.update(z on e);break;i+;else分配");回收");String two = in.nextLine();Zon eDao dao = new Zon eDao();List<Z on e> list = dao.Fi ndAII();if(two.equals("1")System.out.println(”請輸入作業號:");Stri ng work = in.n e

36、xtLi ne();boolea n flag = false;for(i nt j = O;j<list.size();j+)Zone fzone = list.get(j);if(fzon e.getWork().equals(work)flag = true;if(flag)System.out.pri ntln(”該作業號已經存在”);elseSystem.out.println(”請輸入作業大小:”);String size = in.n extL in e();String address = nu II;String status = n ull;String nu mbe

37、r = work;Stri ng size2 = n ull;/修改分配的表int temp; /記錄臨時中間值int listsize = list.size(); /數組大小/*for (int a = 0; a < listsize - 1; a+) for (int b = a + 1; b < listsize; b+) if (list.ge ti < numbersj) /交換兩數的位置temp = nu mbersi;nu mbersi = nu mbersj;nu mbersj = temp; */Zone zonel = new Zon e();for(i nt i = O;i<list.size();i+)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論