![C語言課程設(shè)計圖書館書目采編系統(tǒng)報告_第1頁](http://file4.renrendoc.com/view/cb77446f4c68f42a5e55853628ac39b0/cb77446f4c68f42a5e55853628ac39b01.gif)
![C語言課程設(shè)計圖書館書目采編系統(tǒng)報告_第2頁](http://file4.renrendoc.com/view/cb77446f4c68f42a5e55853628ac39b0/cb77446f4c68f42a5e55853628ac39b02.gif)
![C語言課程設(shè)計圖書館書目采編系統(tǒng)報告_第3頁](http://file4.renrendoc.com/view/cb77446f4c68f42a5e55853628ac39b0/cb77446f4c68f42a5e55853628ac39b03.gif)
![C語言課程設(shè)計圖書館書目采編系統(tǒng)報告_第4頁](http://file4.renrendoc.com/view/cb77446f4c68f42a5e55853628ac39b0/cb77446f4c68f42a5e55853628ac39b04.gif)
![C語言課程設(shè)計圖書館書目采編系統(tǒng)報告_第5頁](http://file4.renrendoc.com/view/cb77446f4c68f42a5e55853628ac39b0/cb77446f4c68f42a5e55853628ac39b05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言課程設(shè)計課題名:圖書書目采編系統(tǒng)班級:計科0801學號:081202127姓名:徐永成指導老師:鄒姝稚成績:圖書書目采編系統(tǒng)徐永成※課程設(shè)計目的1.通過課程設(shè)計,訓練根本編程能力,加深對結(jié)構(gòu)化程序設(shè)計思想的理解,能進行一個系統(tǒng)功能需求分析,并設(shè)計合理的模塊化結(jié)構(gòu)。2.通過課程設(shè)計,進一步掌握C語言中有關(guān)重要的數(shù)據(jù)結(jié)構(gòu),諸如:循環(huán)、數(shù)組、結(jié)構(gòu)數(shù)組、鏈表、文件…等在程序開發(fā)中的運用。3.通過課程設(shè)計,提高程序開發(fā)能力,能運用合理的控制流編寫清晰高效的程序。4.通過課程設(shè)計,培養(yǎng)綜合運用所學C語言知識研發(fā)中大型程序的能力?!O(shè)計內(nèi)容一、系統(tǒng)設(shè)計目的為提高圖書書目采編處理效率及正確性,本系統(tǒng)利用計算機對圖書書目采編進行統(tǒng)一管理,包括添加、瀏覽、排序、查找、統(tǒng)計書目等功能,實現(xiàn)圖書書目采編的系統(tǒng)化和標準化,進一步減輕工作人員的工作負擔,而設(shè)計了圖書書目采編系統(tǒng)。二、系統(tǒng)設(shè)計內(nèi)容使用結(jié)構(gòu)數(shù)組或數(shù)據(jù)文件技術(shù)開發(fā)一個圖書書目的采編系統(tǒng),通過該系統(tǒng)的運行能實現(xiàn)在編圖書的采編、查找、與統(tǒng)計等功能。具體要求:〔1〕系統(tǒng)以菜單方式工作,界面應清晰直觀,便于用戶操作;〔2〕書目信息錄入:對新進圖書書目加以錄入,每本書包括書號〔不重復〕、書名、作者、價格、出版社、出版日期、進館時間等;〔3〕定時采編:將所有的圖書信息按書名排序,形成采編結(jié)果,并將采編結(jié)果顯示出來〔可以一頁一頁動態(tài)詳細顯示〕;〔4〕查找:對按書名采編后的圖書書目,指定書名用二分查找法查找其信息,并顯示其信息〔可另外擴展查找〕;〔5〕統(tǒng)計:統(tǒng)計指定圖書的庫存量、統(tǒng)計指定時間段所進的書目和出版的書目。三、功能描述采編圖書書目信息模塊:采編記錄模塊主要完成將數(shù)據(jù)存入數(shù)組中的工作。在此系統(tǒng)中,圖書書目信息可以從以文本形式存儲的數(shù)據(jù)文件中讀入,也可以從鍵盤逐個輸入記錄。當從文件中讀入記錄時,它就是在以記錄為單位存儲的數(shù)據(jù)文件中,講記錄逐條復制到結(jié)構(gòu)體類型的數(shù)組元素中,瀏覽圖書書目信息模塊:瀏覽圖書書目信息模塊主要完成兩個任務(wù)。第一,判斷對剛采編的圖書書目是否存儲,假設(shè)是:它將實現(xiàn)對記錄的存盤操作,即將數(shù)組中各元素中存儲的記錄信息寫入數(shù)據(jù)文件中;第二,它將實現(xiàn)對講數(shù)組中存儲的記錄信息以表格形式在屏幕上顯示出來。排序圖書書目信息模塊:排序圖書書目信息模塊主要是把圖書先按書號排序,然后按書名排序,將它排序后的記錄進行存儲到文件中,為下面的模塊做準備,并把存儲的記錄以表格形式在屏幕上顯示出來。查找圖書書目信息模塊:查找圖書書目信息模塊主要有兩種選擇查找,一個是指定書名,另一個是指定作者,都采用二分法查找,并將查找到的圖書書目信息記錄以表格的形式顯示出來。統(tǒng)計圖書書目信息模塊:統(tǒng)計圖書書目信息模塊主要是統(tǒng)計三種:一是指定圖書書名,二是約定一段時間出版社出版的數(shù)目,三是約定一段時間圖書館所進的圖書書目,以表格形式打印出來。增加圖書書目模塊增加圖書書目模塊瀏覽圖書書目模塊排序圖書書目模塊查找圖書書目模塊統(tǒng)計圖書書目模塊圖書書目采編系統(tǒng)從磁盤讀入按出版時間按進館時間從從鍵盤讀入圖書書目顯示動態(tài)翻頁顯示按書名排序按書號排序按書名查找按作者查找按書名統(tǒng)計四、總體設(shè)計〔一〕功能模塊設(shè)計1.主控函數(shù)main〔〕函數(shù)執(zhí)行流程系統(tǒng)首先以可讀寫的方式翻開文本類型的數(shù)據(jù)文件,此文件默認為“book〞,假設(shè)該文件不存在,那么新建此數(shù)據(jù)文件。當翻開文件操作成功后。從文件中一次讀出一條記錄,添加到新建的數(shù)組中,然后執(zhí)行顯示主菜單和進入主循環(huán)操作,進行按鍵判斷。在判斷鍵值時,有效的輸入為0—7之間的任意數(shù)值,其他輸入都被視為錯誤按鍵。假設(shè)輸入為0,〔即變量select=0〕,那么會繼續(xù)判斷是否在對紀錄進行了更新操作之后進行存盤操作,假設(shè)未存盤,那么全局變量saveflag=1,系統(tǒng)會提示用戶是否需要進行數(shù)據(jù)存盤操作,用戶輸入y或Y,系統(tǒng)會進行存盤操作,最后,系統(tǒng)執(zhí)行退出圖書書目采編系統(tǒng)的操作。假設(shè)選擇1.那么調(diào)用add〔〕函數(shù),先提醒翻開文件是否成功,再提醒用戶是否增加圖書書目記錄;假設(shè)選擇2,那么調(diào)用disp〔〕函數(shù),執(zhí)行將圖書書目記錄以表格形式顯示在屏幕上并能進行以一頁一頁地瀏覽圖書書目信息的操作;假設(shè)選擇3,那么調(diào)用sort〔〕函數(shù),執(zhí)行對圖書書目信息進行排序并以表格形式在屏幕上顯示的操作,并提醒是否將排序后的結(jié)果存入文件中覆蓋原有文件;假設(shè)選擇4,那么調(diào)用search〔〕函數(shù),執(zhí)行對圖書書目信息進行查找相關(guān)的圖書信息的操作;假設(shè)選擇5,那么調(diào)用tongji〔〕函數(shù),執(zhí)行對圖書書目信息指定要求進行相關(guān)的統(tǒng)計并把結(jié)果顯示到屏幕上;假設(shè)選擇6,那么調(diào)用save函數(shù),執(zhí)行講記錄存入磁盤的數(shù)據(jù)文件的操作;假設(shè)輸入為0···6以外的值,那么調(diào)用wrong〔〕函數(shù),給出按鍵錯誤的提示。退出循環(huán)以讀寫的方式翻開一個數(shù)據(jù)文件將此文件的內(nèi)容讀出并存入一個新的結(jié)構(gòu)體數(shù)組中退出循環(huán)以讀寫的方式翻開一個數(shù)據(jù)文件將此文件的內(nèi)容讀出并存入一個新的結(jié)構(gòu)體數(shù)組中調(diào)用menu()菜單函數(shù)進入while(1)主函數(shù)輸入0—6之間的數(shù)值進行相應的操作是否判斷鍵值進行調(diào)用相應函數(shù)完成相應功能是否對已修改數(shù)據(jù)進行存盤是否調(diào)用save函數(shù) 輸入是否為0輸入是否為0 2.增加圖書書目記錄模塊增加圖書書目記錄主要是實現(xiàn)將數(shù)據(jù)存入數(shù)組中。當從數(shù)據(jù)文件中讀出記錄時,它調(diào)用fread〔&book【count】,sizeof〔BOOKLIST〕,1,fp〕文件讀取函數(shù)。執(zhí)行一次從文件中讀取一條圖書書目記錄存入數(shù)組元素中的操作,并且這個操作在main〔〕函數(shù)中調(diào)用執(zhí)行,即在圖書書目采編系統(tǒng)進入顯示菜單界面時,該操作已經(jīng)執(zhí)行,但成功與否,是在增加圖書書目函數(shù)中給出提醒,通過全程變量openfile,假設(shè)openfile=1,那么顯示openfilesuccess!假設(shè)該文件中沒有數(shù)據(jù),系統(tǒng)會提醒文件為空,沒有任何記錄可操作,此時用戶可以進入增加圖書書目中,進行記錄的輸入,即完成在數(shù)組中添加元素的操作。值得注意的是,因為圖書書目采編書號不能重復,假設(shè)當輸入書號重復時,那么提醒出錯并可以選擇是否繼續(xù)增加圖書書目記錄,這樣符合現(xiàn)實化特點。盒圖如下:翻開文件是否成功提醒翻開文件是否成功提醒歡送進入圖書書目信息增加模塊進入while〔1〕循環(huán)否是否否是否回到輸入子菜單是是否繼續(xù)是判斷書號是否已存在繼續(xù)輸入該本書目的相關(guān)信息顯示剛輸入的書目信息退出該循環(huán)返回到主菜單返回主菜單回到子菜單輸入書號num是否等于0返回到主菜單3.瀏覽圖書書目記錄模塊瀏覽圖書書目記錄主要是實現(xiàn)將數(shù)據(jù)顯示到屏幕上以便工作人員核對確認。當數(shù)據(jù)從文件中讀出時并存入結(jié)構(gòu)體數(shù)組中時,可對結(jié)構(gòu)體數(shù)組中信息加以選擇的輸出并以表格的形式顯示在屏幕上,還要以一頁一頁動態(tài)地顯示出來,調(diào)用系統(tǒng)停留函數(shù)system〔“pause〞〕和系統(tǒng)清屏函數(shù)system〔“cls〞〕,這樣就能到達目的〔但每頁下方有錯誤提醒的瑕疵〕。最后顯示圖書書目的總數(shù),以便用戶仔細瀏覽圖書書目的情況。盒圖如下否是歡送進入瀏覽圖書書目否是歡送進入瀏覽圖書書目n是否為0輸出表格頭部信息退出該模塊返回主菜單調(diào)用系統(tǒng)函數(shù)system〔“pause〞〕和system〔“cls〞〕把圖書書目信息以一頁一頁地動態(tài)顯示返回主菜單4.排序圖書書目記錄模塊選擇排序法也屬于內(nèi)部排序法中的一種,它是運用字段值比擬后,從欲排序的數(shù)組元素中,按指定規(guī)那么選出其字段最小的元素,并依原那么交換數(shù)組元素位置后,更新欲排序的數(shù)組元素,以到達排序的目的。這里我采用選擇排序法來實現(xiàn)按照圖書書目記錄編號或圖書書目書名字段的值〔ASCII碼的大小〕從低到高對記錄進行升序排序。選擇法排序的方法為:從欲排序的n個數(shù)組元素中,以線性查找的方式找出最小的元素和第一個元素交換,再從剩下的〔n-1〕個數(shù)組元素中,找出最小的元素和第二個元素交換,以此類推,直到所有元素均已排序完成。一種排序完成后,將以表格形式在屏幕上顯示,然后繼續(xù)提醒用戶是否想使用另一種排序法進行排序,通過輸入字符y或Y表示是判斷用戶的意圖。假設(shè)是那么回到子菜單繼續(xù)進行排序;否那么繼續(xù)執(zhí)行下面命令。當上面的都執(zhí)行后,系統(tǒng)會提醒用戶是否幫排序后的數(shù)據(jù)存入磁盤文件中,假設(shè)是,那么現(xiàn)有數(shù)組元素數(shù)據(jù)將覆蓋原有的數(shù)組的元素;假設(shè)不想,那么回到主菜單;盒圖如下:歡送進入查找圖書圖書模塊歡送進入查找圖書圖書模塊n是否為0是否用選擇法對圖書書目按書名排序是按書名排序調(diào)用disp〔〕函數(shù)顯示排序后的結(jié)果判斷是否回到子菜單返回主菜單按書號排序同右,否那么調(diào)用wrong〔〕函數(shù)提醒記錄為空返回主菜單否否5.查找圖書書目記錄模塊查找圖書書目信息模塊主要是實現(xiàn)在數(shù)組中按圖書書目信息中的書名或作者查找滿足條件的記錄。在查找圖書書目函數(shù)search〔〕中,為了遵循模塊化編程的原那么,我在對數(shù)組的記錄定位設(shè)計了一個單獨的函數(shù)intlocate(BOOKLISTtemp[],intm,intn,charsearchtitle[])來查找指定書名的位置,先通過排序圖書書目記錄模塊對圖書書目按對書名排序后,采用二分查找法查找,假設(shè)找到指定的書名,那么返回該圖書書目的數(shù)組下標位置值給變量p;否那么返回一個-1值給p。假設(shè)p不等于-1,那么通過循環(huán)把相應的圖書書目信息通過調(diào)用disp〔〕函數(shù)以表格的形式顯示到屏幕上。執(zhí)行完一種查找方法后,系統(tǒng)將提醒用戶是否想繼續(xù)查找,可以通過輸入y或Y繼續(xù)進行查找功能。歡送進入圖書書目查找模塊歡送進入圖書書目查找模塊否n是否為0否n是否為0是是是否選擇按鍵值是否正確是否選擇按鍵值是否正確是否返回查找子菜單是否返回查找子菜單是--那么返回子菜單否--返回主菜單提醒記錄為空退出改模塊是否按書名查找是否按書名查找否是否是循環(huán)查找指定作者的書目查找之后詢問是否繼續(xù):一回子菜單;二回主菜單循環(huán)查找指定作者的書目查找之后詢問是否繼續(xù):一回子菜單;二回主菜單調(diào)用locate〔〕函數(shù)用二分法查找查找之后詢問是否繼續(xù):一回子菜單;二回主菜單返回主菜單6.統(tǒng)計圖書書目記錄模塊統(tǒng)計圖書書目信息模塊主要實現(xiàn)在數(shù)組中按指定的書名統(tǒng)計庫存量、統(tǒng)計指定一段時間出版社出版的圖書量或統(tǒng)計指定一段時間進館的圖書量,并把相應的圖書書目信息以表格形式顯示出來。統(tǒng)計書名時可以調(diào)用前面已經(jīng)使用過的函數(shù)intlocate(BOOKLISTtemp[],intm,intn,charsearchtitle[]),查找到一個指定書名的位置,再通過循環(huán)統(tǒng)計庫存量并顯示符合要求的數(shù)組元素信息。統(tǒng)計一段時間的圖書書目只要通過循環(huán)把在符合這段時間要求的圖書書目信息通過調(diào)用disp〔〕函數(shù)以表格顯示出來。其余統(tǒng)計類似。當統(tǒng)計完一種后,系統(tǒng)會提醒用戶是否還想進行另外的統(tǒng)計,通過輸入y或Y,假設(shè)是那么回到統(tǒng)計選擇的類型的子菜單,否那么程序繼續(xù)執(zhí)行,將回到主菜單。盒圖如下:歡送進入統(tǒng)計圖書書目模塊歡送進入統(tǒng)計圖書書目模塊n是否為0是是是是否否否是否按書名統(tǒng)計是否按出版時間統(tǒng)計是否按進館時間統(tǒng)計返回主菜單調(diào)用locate〔〕函數(shù)進行統(tǒng)計統(tǒng)計后判斷是回子還是主菜單循環(huán)統(tǒng)計指定時間段圖書書目統(tǒng)計后判斷是回子還是主菜單和按出版時間統(tǒng)計方法一樣Wrong〔〕函數(shù)判斷是否會子菜單否否〔二〕數(shù)據(jù)結(jié)構(gòu)設(shè)計本程序定義了結(jié)構(gòu)體Booklist,用于存放圖書書目的根本信息。typedefstructdate{intyear;intmonth;}DATA;typedefstructbooklist{intnum;chartitle[20];charauthor[20];charprice[10];charpcompany[20];DATAtimeofp;DATAtimeofs;}BOOKLIST;其各字段的值的含義如下:intnum;保存圖書書目記錄的編號。title[20];保存圖書書目記錄的書名。author[20];保存圖書書目記錄的作者。charprice[10];保存圖書書目記錄的價格。charpcompany[20];保存圖書書目記錄的出版社。DATAtimeofp;保存圖書書目記錄的出版時間。DATAtimeofs;保存圖書書目記錄的進館時間?!踩澈瘮?shù)功能描述1)printheader()函數(shù)原型:voidprintheader〔〕printheader〔〕函數(shù)用于在以表格形式顯示圖書書目記錄時,打印輸出表頭信息。2〕printdata〔〕函數(shù)原型:voidprintdata〔BOOKLISTpp〕printdata〔〕函數(shù)用于以表格顯示的方式,打印輸出單個數(shù)組元素pp中的圖書書目記錄信息。3〕disp〔〕函數(shù)原型:voiddisp〔BOOKLISTtemp[],intn)disp()函數(shù)用于顯示temp數(shù)組中存儲的n條記錄,內(nèi)容為booklist結(jié)構(gòu)體定義的內(nèi)容。4〕stringinput〔〕函數(shù)原型:voidstringinput〔char*t,intlens,char*searchtitle〕stringinput〔〕函數(shù)用于輸入字符串,并進行字符串長度驗證〔長度<lens〕,t用于保存輸入的字符串,因為是以指針形式傳遞的,所以t相當于該函數(shù)的返回值。notice用于保存printf〔〕中輸出的提示信息。5〕locate〔〕函數(shù)原型:intlocate〔BOOKLISTtemp[],intm,intn,charsearchtitle[])locate()函數(shù)用于定位函數(shù)中符合要求的元素的位置。6〕add〔〕函數(shù)原型:intadd〔BOOKLISTtemp[],intn)add〔〕函數(shù)用于在數(shù)組temp中增加圖書書目記錄,并返回數(shù)組中的當前記錄數(shù)。7〕search〔〕函數(shù)原型:voidsearch〔BOOKLISTtemp[],intn〕search〔〕函數(shù)用于在數(shù)組temp中按書名或作者查找滿足條件的記錄,并顯示出來。8〕sort〔〕函數(shù)原型:voidsort〔BOOKLISTtemp[],intn)sort〔〕函數(shù)用于在數(shù)組temp中按編號或書名排序,并顯示出來。9〕統(tǒng)計〔〕函數(shù)原型:voidtongji〔BOOKLISTtemp[],intn)tongji()函數(shù)用于在數(shù)組temp中統(tǒng)計指定書名的庫存量、指定一段時間出版社出版的圖書量和進館的圖書量。10〕save〔〕函數(shù)原型:voidsave〔BOOKLISTtemp[],intn〕save〔〕函數(shù)用于將保存圖書書目信息的數(shù)組temp中的n個元素,并寫入磁盤的數(shù)據(jù)文件中,覆蓋原有的圖書書目信息。11〕main〔〕main〔〕是整個圖書書目采編系統(tǒng)控制局部。五、調(diào)試與測試〔一〕、程序調(diào)試1.在調(diào)試程序中遇到第一個難題是:怎樣翻開并讀出文件中結(jié)構(gòu)體的圖書書目信息并使用這些數(shù)據(jù)。先采用單獨設(shè)立一個初始化函數(shù),但不怎么好使,不穩(wěn)定。因此我經(jīng)過幾次修改后直接將初始化文件的翻開與建立放在了主函數(shù)中,并在增加圖書書目模塊提醒翻開文件是否成功,經(jīng)過幾次調(diào)試修
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球蒸汽甲烷重整藍氫行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國寵物蔓越莓補充劑行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球可調(diào)節(jié)軌道燈行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國核電用金屬管行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球可見光波段高光譜成像(HSI)設(shè)備行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球玻璃煙斗行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國魚雷泵行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球I型陽極氧化服務(wù)行業(yè)調(diào)研及趨勢分析報告
- 2025農(nóng)村買房子合同范本
- 工程汽車租賃合同范本
- 2025年N1叉車司機考試試題(附答案)
- 《醫(yī)院財務(wù)分析報告》課件
- 2024年考研政治試題及答案
- 2024-2025學年人教版數(shù)學六年級上冊 期末綜合卷(含答案)
- 2025年初級社會工作者綜合能力全國考試題庫(含答案)
- 2024年濰坊護理職業(yè)學院單招職業(yè)適應性測試題庫附答案
- 《鉗工基本知識》課件
- DB63T 2357-2024 ?;烦簝薨踩芾硪?guī)范
- 2022-2023學年五年級數(shù)學春季開學摸底考(四)蘇教版
- 【螞蟻?!?024中國商業(yè)醫(yī)療險發(fā)展研究藍皮書
- 授信審批部工作計劃及思路
評論
0/150
提交評論