freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-圖書(shū)管理-wenkub

2022-09-19 02:31:47 本頁(yè)面
 

【正文】 書(shū)庫(kù)單元模塊 B 樹(shù)單元模塊 三、 詳細(xì)設(shè)計(jì) 1. 主程序中需要的全程量 define OK 1 define ERROR 0 define TRUE 1 define FALSE 0 define OVERFLOW 1 define MAX_NAME_LEN 20 //姓名最大長(zhǎng)度 3681bd1c2b9ef87aa40ba80437378615 第 4 頁(yè) 共 31 頁(yè) define MAX_BKNAME_LEN 30 //書(shū)名最大長(zhǎng)度 define MAX_BOOKS 100 //書(shū)庫(kù)中一個(gè)著者最多著作數(shù) define OUT_DATE_PRICE //借書(shū)逾期一天的費(fèi)用 define KEEP_DAYS 90 //圖書(shū)出借的期限 define logfile //系統(tǒng)日志文件 define bookinfomationfile D:\\ //圖書(shū)信息文件 define borrowerfile D:\\ //借閱者名單文件 define bespeakerfile D:\\ //預(yù)約者名單文件 char *books[MAX_BOOKS]。 PrintAllBooks(L )。 初始條件:書(shū)庫(kù) L 存在, author 和 L 的數(shù)據(jù)元素的某一元素有相同類(lèi)型 操作結(jié)果:列出書(shū)庫(kù)中著者 author 的所有著作名。B ,R)。B ,R)。B ,R)。L ,amp。L ,B ,result)。 }ADT BTree 2. 抽象數(shù)據(jù)類(lèi) 型書(shū)庫(kù)的定義如下: ADT Library{ 數(shù)據(jù)對(duì)象: D={ai | ai∈ BookType, i=1, 2, 3,?? n, n=0,其中 每個(gè)數(shù)據(jù)元素 ai含有類(lèi)型相同,可惟一標(biāo)識(shí)數(shù)據(jù)元素的關(guān)鍵字 } 數(shù)據(jù)關(guān)系:數(shù)據(jù)元素同屬一個(gè)集合 基本操作: InitLibrary(amp。 初始條件: B 樹(shù) T 存在, key 為和關(guān)鍵字類(lèi)型相同的給定值。 初始條件: B 樹(shù) T 存在, e 為待插入的數(shù)據(jù)元素。 初始條件: B 樹(shù) T 存在, key 為和關(guān)鍵字類(lèi)型相同的給定值。 3. 程序所能達(dá)到的功能 ? 圖書(shū)采編入庫(kù) (用 B 樹(shù)對(duì)書(shū)號(hào)建立索引 ) ? 清除庫(kù)存 ? 圖書(shū) 借閱 ? 圖書(shū) 歸還 ? 圖書(shū)預(yù)約 ? 列出某著者全部著作 名 ? 列出某種書(shū)的狀態(tài) (包括圖書(shū)基本信息和該書(shū)借閱者名單、預(yù)約者名單) ? 每次插入或刪除一個(gè)關(guān)鍵字后以 凹入表顯示 B 樹(shù) 的狀態(tài) ? 把一次會(huì)話(huà)過(guò)程中的全部人機(jī)對(duì)話(huà)記錄入一個(gè)日志文件中 ? 在程序主界面顯示當(dāng)前系統(tǒng)時(shí)間 4. 測(cè)試數(shù)據(jù) 入庫(kù)書(shū)號(hào): 35, 16, 18, 70, 5, 50, 22, 60, 13, 17, 12, 45, 25, 42, 15, 90, 30, 7 然后清除: 45, 90, 50, 22, 42 圖書(shū)的其他信息見(jiàn)附錄。 圖書(shū)入庫(kù)時(shí)輸入圖書(shū)的書(shū)號(hào)、書(shū)名、著者、總量等完整信息,清除庫(kù)存時(shí)輸入圖書(shū)書(shū)號(hào) , 借閱和歸還時(shí)輸入書(shū)號(hào)和借閱者 證號(hào),姓名等信息 ,并記錄 系統(tǒng)時(shí)間為 借書(shū)日期。 2. 借書(shū)和歸還時(shí)顯示圖書(shū)的信息。 二、 概要設(shè)計(jì) 1. 抽象數(shù)據(jù)類(lèi)型 B 樹(shù)定義如下: ADT BTree{ 數(shù)據(jù)對(duì)象: D 是具有相同 特性的數(shù)據(jù)元素的集合。 操作結(jié)果:若 T 中存在關(guān)鍵字等于 key的數(shù)據(jù)元素,則返回該元素的值或在表中的位置,否則返回“空”。 操作結(jié)果:若 T 中 步存在關(guān)鍵字等于 的數(shù)據(jù)元素,則插入 e 到 T 中。 操作結(jié)果:若 T 中存在其關(guān)鍵字等于 key 的數(shù)據(jù)元素,則刪除之 BTreeTraverse(BTree T,Visit) 初始條件: B 樹(shù) T 存在, Visit 是對(duì) T 結(jié)點(diǎn)的函數(shù) 操作結(jié)果:遍歷 B 樹(shù) T,對(duì)每個(gè)結(jié)點(diǎn)調(diào)用 Visit 函數(shù) ShowBTree( T )。L )。 初始條件:書(shū)庫(kù) L 已存在, B 為與 L 的數(shù)據(jù)元素類(lèi)型相同的給定值, result 包含 B 書(shū)在書(shū)庫(kù)中的 位置或應(yīng)該插入的 位置 。B)。 初始條件:書(shū)庫(kù) L 存在, B 書(shū)是書(shū)庫(kù)中的書(shū)并且可被讀者 R 借閱。 初始條件:書(shū)庫(kù) L 存在。 初始條件:書(shū)庫(kù) L 存在, B 書(shū)是書(shū)庫(kù)中的書(shū), R 為借閱者。 ShowBookinfo(L ,B )。 初始條件:書(shū)庫(kù) L 存在 。 //某位著者著作名數(shù)組 char author[MAX_NAME_LEN]。 //借閱證號(hào) char rname[MAX_NAME_LEN]。 //下一個(gè)借閱者指針 }。 }。 //書(shū)名 char writer[MAX_NAME_LEN]。 //定價(jià) ReaderType reader。L ) 3681bd1c2b9ef87aa40ba80437378615 第 5 頁(yè) 共 31 頁(yè) //初始化書(shū)庫(kù) L 為空書(shū)庫(kù)。L ,BookType B) //如果書(shū)庫(kù)中存在 B 書(shū),則從書(shū)庫(kù)中刪除 B 書(shū)的信息,并返回 OK,否則返回 ERROR void BorrowBook(Library L ,BookType B ,ReaderType R) //書(shū)庫(kù) L 存在, B 書(shū)是書(shū)庫(kù)中的書(shū)并 且可被讀者 R 借閱(已通過(guò) CanBorrow()判斷) //借出一本 B 書(shū),登記借閱者 R 的信息,改變現(xiàn)存量,記錄借書(shū)日期,最遲應(yīng)還日期等信息。 //如果找到該 author 的著作,則返回 TRUE,否則返回 ERROR Status BespeakBook(BookType B ,ReaderType R) //為讀者 R 預(yù)約 B 書(shū)。 } void InsertBook(Library amp。 bcurrent = bcurrent + Btotal。 //如果刪除成功,返回 OK else return ERROR。 //當(dāng)前日期加 90 天為最遲還書(shū)日期 if(!Breader) Breader = R。 rnextr = R。R) //b 為還書(shū)書(shū)號(hào), r 為還書(shū)者借閱證號(hào), //若書(shū) 庫(kù)中不存在書(shū)號(hào)為 b 的書(shū),則返回 1 //若有 r 借閱 b 書(shū)的記錄,則注銷(xiāo)該記錄,并用 B 和 R 返回圖書(shū)信息和借閱者信息并返回 1, //若沒(méi)有 r 借閱 b 書(shū)的記錄,則用 B 返回圖書(shū)信息,并返回 0 { res = SearchBTree(L, b)。 for( 。 Bcurrent++。 BTreeTraverse(L, ListBookName)。 //如果找到該 author 的著作,則返回 TRUE,否則返回 ERROR { if(Bcurrent 0) return ERROR。 r 。 } Status ShowBookinfo(Library L ,int booknum) //顯示 書(shū)號(hào)為 booknum 的書(shū) 的狀態(tài) { res = SearchBTree(L,booknum)。 //對(duì)借閱者鏈表按日期遲到早排序 SortBespeaker(B)。 //顯示預(yù)約名單 return OK。 //打印圖書(shū)信息 } void PrintAllBooks(Library L) //打印書(shū)庫(kù)中的所有圖書(shū)基本信息 { BTreeTraverse(L, PrintAll)。 //關(guān)鍵字類(lèi)型為整型 typedef struct BTNode //B 樹(shù)結(jié)點(diǎn) { int keynum。 //子數(shù)指針 Record *rec[m+1]。 //關(guān)鍵字序號(hào) int tag。 Status InsertBTree(BTree amp。 { p = T, q = NULL。 !found) { i = Search(p, k)。 else{ //未找到,則查找下一層 q = p。 //查找不成功,返回 k 的插入位置信息 } Status InsertBTree(BTree amp。 //T 是空樹(shù),生成僅含關(guān)鍵字 K 的根結(jié)點(diǎn) *T else{ while (!finished) { Insert(q, i, k, ap,rec)。 rec = qrec[(m+1)/2]。 //根節(jié)點(diǎn)已分裂為 *q 和 *ap 兩個(gè)結(jié)點(diǎn) } } if (finished == OVERFLOW) //根結(jié)點(diǎn)已分裂為結(jié)點(diǎn) *q 和 *ap NewRoot(T, q, k, ap,rec)。 finished = FALSE,i = 1。 //q 指向待刪結(jié)點(diǎn) i = 。 //刪除完成 if(qkeynum == 0 ) T = NULL。 //檢查雙親 if(q == T amp。 free(q)。 } void BTreeTraverse(BTree T,void ( *Visit)(BTree p)) //遍歷 B 樹(shù) T,對(duì)每個(gè)結(jié)點(diǎn)調(diào)用 Visit 函數(shù) { if(!T) return 。 i++) //遞歸遍歷子樹(shù)結(jié)點(diǎn) if(Tptr[i]) BTreeTraverse(Tptr[i],Visit)。i++) putchar(39。i = Tkeynum。i++) //遞歸顯示子樹(shù)結(jié)點(diǎn)關(guān)鍵字 ShowBTree(Tptr[i],x+7)。 switch(cmd) { case 1: scanf(amp。Bcurrent,amp。 InsertBook(L, B, res)。 記錄日志; case 3: scanf(amp。 //讀入借閱者信息 if(CanBorrow()) BorrowBook(L,B,R)。//讀入還書(shū)書(shū)號(hào)和還書(shū)者證號(hào) 判斷是否 逾期,給出提示信息 R
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1