圖書信息管理系統(tǒng)_第1頁
圖書信息管理系統(tǒng)_第2頁
圖書信息管理系統(tǒng)_第3頁
圖書信息管理系統(tǒng)_第4頁
圖書信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 報 告課 程 名 稱: 程序設計實踐 專 業(yè) 班 級 : 學 生 姓 名 : 學 號 : 任 課 教 師 : 學 期 : 題 目圖書信息管理系統(tǒng)主要內容開發(fā)一個圖書信息管理系統(tǒng),圖書信息包括:圖書編號、書名、作者、出版社、類別、出版時間、價格等基本信息(也可以根據自己情況進行擴充,比如是否借出、庫存量等)。使之能提供以下基本功能:(1)圖書信息錄入功能(圖書信息用文件保存)輸入v(2)圖書信息瀏覽功能輸出(3)查詢功能(至少一種查詢方式)、排序功能(至少一種排序方式): l按書名查詢 按作者名查詢 按照價錢排序 按出版時間排序等等(4)圖書信息的刪除與修改擴展功能:可以按照自己的程度進

2、行擴展。比如(1)簡單的權限處理 (2)報表打印功能(3)甚至根據自己情況,可以加上學生信息和借閱信息的管理,并擴充為圖書借閱系統(tǒng)。(4)模糊查詢 (5)綜合查詢 (6)統(tǒng)計功能 比如統(tǒng)計處某一類別的圖書信息 或 篩選出小于指定數量庫存的圖書信息等等,總之,可以根據自己需求進行分析功能。任務要求一、提交材料應包括:(1)系統(tǒng)源代碼 (2)課程報告二、整個設計過程具體要求(1)需求分析 要求學生對案例系統(tǒng)進行分析,設計出需要完成的功能,完善各個模塊的調用關系;(2)設計過程 要求學生進一步明確各模塊調用關系,進一步完善模塊函數細節(jié)(函數名、參數、返回值等)(3)實現過程 要求學生養(yǎng)成良好的編碼習

3、慣、完成各個模塊并進行測試,最終完成系統(tǒng)整體測試;(4)總結階段 按照要求完成系統(tǒng)設計和實現報告,并進行總結、答辯。成績評定報告撰寫情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)總分內容20分規(guī)范程度5分程序測試5分基本功能20分擴展功能10分自述情況10分答辯情況30分成績評定教師:目錄一 需求分析4二 概要設計42.1 數據結構42.2 模塊劃分4三 詳細設計83.1 自定義頭文件。83.2 MAIN函數103.3 主菜單界面113.4 管理人員界面163.5 圖書鍵入193.6 圖書分類223.7 密碼隱藏和管理人員、普通用戶登錄界面243.8返回主菜單功能283.9 圖書瀏覽3

4、0四 調試分析32五 課程心得總結33一 需求分析隨著科學技術的不斷發(fā)展,社會不斷在進步,人類開始更加重視文化生活和精神上的享受政府也在公共產業(yè)的建設上投入大量資金。圖書館的建設更是遍布各地,無論是學校、企業(yè)、社會的公共圖書館等,都需要一個電子的管理系統(tǒng)對其進行管理,對數據進行保存。管理作為計算機應用的一個分支,有著手工管理無法比擬的優(yōu)點,如檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高圖書管理的效率。因此,開發(fā)一套能夠為用戶提供充足的信息和快捷的查詢手段的圖書管理系統(tǒng),將是非常必要的,也是十分及時的。圖書管理系統(tǒng)需要滿足來自圖書館工作人員、普通用戶

5、和借閱者三方面人員的需求。圖書館工作人員對圖書借閱者的借閱及還書要求進行操作,同時還可通過圖書編號等查詢相應的借閱情況;普通用戶的需求是查詢圖書館所存的圖書的相關情況;圖書借閱者的需求是查看自己的相關信息及查詢自己的借閱情況。本圖書管理系統(tǒng)可以對圖書進行分類管理,管理人員可以錄入圖書,查詢圖書等相關操作。普通用戶可以瀏覽、借閱、查詢圖書。此系統(tǒng)還支持游客進入,你不需要注冊用戶和登錄用戶便能輕松的進入圖書管理系統(tǒng)進行查看圖書的相關信息。這正符合圖書館的開放性和便民性。如若用戶有任何建議,可以通過管理系統(tǒng)了解開發(fā)者的聯系方式,給開發(fā)者提出建議,方便開發(fā)人員對圖書管理系統(tǒng)進行更新和修復漏洞,是圖書管

6、理系統(tǒng)更加貼近用戶,豐富用戶感受。二 概要設計2.1 數據結構該程序設計采用鏈表這種線性數據結構,用于實現對圖書信息的存儲,修改,查詢及排序等功能。大量使用結構體,對數據進行封裝,結構更加清晰。2.2 模塊劃分開始輸入界面模塊,管理人員賬戶模塊,學生登錄賬戶密碼模塊,圖書類型名稱模塊,圖書鍵入模塊,樓層分類模塊,圖書鍵入信息分類模塊,圖書瀏覽模塊,學生賬戶注冊模塊,圖書查詢模塊,返回菜單模塊。void system_enter(); /開始輸入界面void administrator(); /管理人員賬戶void consumer(); /學生登錄賬戶密碼void floor_style();

7、 /圖書類型名稱void enter_book_floor(); /圖書鍵入void switch_into_book(); /樓層分類圖書鍵入等信息分類void print_book(); /圖書瀏覽void registered_account(); /學生賬戶注冊void search_book(); /圖書查詢void turn_back(); /返回菜單2.3 程序總體框架用戶意見反饋圖書管理系統(tǒng)主菜單管理人員登錄入口普通用戶入口(學生入口)游客登錄入口圖 1 圖書管理系統(tǒng)主菜單流程圖普通用戶模塊(學生進入)圖書概要瀏覽圖書查詢(序號查詢)(模糊查詢)(作者查詢)圖書借閱歸還圖書借閱

8、信息查詢(借閱數量、期限)返回主菜單圖 3圖書管理系統(tǒng)普通用戶模塊系統(tǒng)流程圖游客進入圖書概要瀏覽圖書查詢返回主菜單圖 4 圖書管理系統(tǒng)游客模塊流程圖三 詳細設計3.1 自定義頭文件。包含所有的系統(tǒng)頭文件、宏定義、結構體和全局變量頭文件名稱為”all_thing.h”,意思是所有在函數中需要的預處理命令都可以在這里完成,不需要每個文件都在反復多次的預處理,可以加快程序速度。代碼格式清楚,在每個函數中都有簡單的功能性注釋,便于理解。#include #include #include #define administrator_account 123456#define administrator

9、_password 123321123#define consumer_account 123#define consumer_password 123321123void system_enter(); /開始輸入界面void administrator(); /管理人員賬戶void consumer(); /學生登錄賬戶密碼void floor_style(); /圖書類型名稱void enter_book_floor(); /圖書鍵入void switch_into_book(); /樓層分類 圖書鍵入等信息分類void print_book(); /圖書瀏覽void registere

10、d_account(); /學生賬戶注冊void search_book(); /圖書查詢void turn_back(); /返回菜單int bc;FILE *BOOK;FILE *ST;typedef struct student_account char std_num10; char std_password20;STACC;typedef struct Floor int storey10; char storey_name10100;FR;typedef struct BOOK /圖書館書籍統(tǒng)計 int book_number; char book_name50; char boo

11、k_auther20; char book_address20; char book_date10; int book_amount;BK;BK book_floor11000;STACC STU_PASS100;3.2 MAIN函數 簡化MAIN函數,使界面簡單易懂,其他每個函數在不同的C文件中,代碼格式嚴謹。#include all_thing.hint main()system_enter(); /開始輸入界面 turn_back(); /返回主界面 getch(); return 0;3.3 主菜單界面菜單界面,利用手動輸出“*”來完成簡單的界面分割,使用system函數來調整界面顏色

12、和文字信息,使得界面美觀大方,可以選擇不同功能。此函數運用基礎的printf和scanf函數進行輸出界面語句和輸入選擇序號,之后switch語句對入口模式進行選擇,并且在輸入錯誤時有語言提示,做了必要的容錯處理,能夠較好的完成功能。用戶體驗是程序員必須考慮的一部分,一個程序的完善需要用戶不斷的發(fā)現問題并反饋問題,在這個主界面中專門添加了對于用戶反饋BUG以及其他意見的方式,使得程序員能夠更好的了解程序在實際運行中產生的問題。能夠更好的改善用戶的使用感受,升級系統(tǒng)。我看其他同學都有進入和退出系統(tǒng)的選項,我認為這是不必要的。因為在打開此系統(tǒng)時便是進入系統(tǒng),圖書館的系統(tǒng)是一直開放給用戶使用的,如需退

13、出,只需要關閉即可。(一般不經行關閉,一個用戶使用完畢后,下一個用戶也需要繼續(xù)使用。)#include all_thing.hvoid system_enter()/開始輸入界面 system (cls); int switch_into = 0; system(color A6); printf(nnnn *n 歡迎進入SKYCROSS圖書管理系統(tǒng) n *nnnnnnn); printf( =n); printf( * 1.圖書管理人員入口 *n); printf( * 2.學生入口 *n); printf( * 3.游客入口 *n); printf( * 4.意見反饋 *n); print

14、f( =n); printf( 請輸入 1 4 選擇入口:); while(switch_into != 1 & switch_into != 2 & switch_into != 3) scanf(%d,&switch_into); system(cls); switch(switch_into) case 1: system(color 4F); printf(nnnnnnn =n); printf( 1.圖書管理人員入口:n); printf( =n); administrator(); /管理人員賬戶 switch_into_book(); /樓層分類 圖書鍵入等信息分類 system

15、(cls); break; /管理人員賬戶 case 2: system(color 4F); printf(nnnnnnn =n); printf( 2.學生入口:n); printf( =n); consumer(); /學生登錄賬戶密碼 print_book(); /圖書瀏覽 system(cls); break; case 3: system(color 4F); printf(nnnnnnn =n); printf( 3.游客入口:n); printf( =n); print_book(); /圖書瀏覽 break; case 4: system(color 6F); printf(

16、nnnnnnn =n); printf( 4.意見反饋n); printf( =nnn); printf(tt謝謝使用圖書管理系統(tǒng),若有BUG或其他意見,n ttt請發(fā)送至郵箱:123456n ttt或聯系電話:10086n); getch(); system_enter();/開始輸入界面 break; default: printf(您的輸入有誤,請輸入 1 4:); continue; 3.4 管理人員界面管理人員進行功能選擇,對圖書進行管理。我曾多次嘗試各種功能,增減圖書,圖書搜索等,也查找了許多代碼、資料,可是用到我的程序中出現了很多問題,程序崩毀,內存溢出等問題。參考了網上許多函數

17、、代碼、在移植時出現多個BUG,影響了其他功能的運行,并沒有完善此部分功能。#include all_thing.hvoid switch_into_book() /樓層分類 圖書鍵入等信息分類 int getinto; / start2: system(cls); system(color 3F); printf(n =n); printf( * 1.樓層圖書分類 *n); printf( * 2.圖書鍵入 *n); printf( * 3.圖書瀏覽 *n); printf( =n); printf( *返回上一層請按ESC*n); printf( 請輸入 入口編號 選擇入口:); geti

18、nto = getch(); if(getinto = 27) system_enter();/開始輸入界面 switch(getinto) case 49: printf(n *歡迎進入圖書分類*n); floor_style(); /各個樓層圖書類型名稱 / reback_ad(); /管理員返回功能(返回一級菜單) break; case 50: printf(n *歡迎使用圖書鍵入*nnn *請按要求進行圖書鍵入*n); enter_book_floor(); /圖書鍵入 / reback_ad(); /管理員返回功能(返回一級菜單) break; case 51: printf(n

19、*歡迎進入圖書瀏覽*nnn); print_book(); /圖書瀏覽 / reback_ad(); /管理員返回功能(返回一級菜單) break; 3.5 圖書鍵入圖書鍵入是先用結構體數組定義了一個能存儲一定量文字的內存。并使用文件操作創(chuàng)建一個TEXT文件,將數據寫入到文件中并對齊??梢员4嫦嚓P數據,避免每次關閉系統(tǒng)時,圖書數據的流失。我所運用的思想是:將圖書信息賦值給結構體,然后使用循環(huán)將結構體打印到文件當中。我還使用了用戶經常用打的ESC鍵,可以退出圖書的鍵入。#include all_thing.hvoid enter_book_floor() /圖書鍵入 int i = 0; int

20、 ii; int t; BOOK = fopen(F:王睿澤201416010306book_save.txt,w+); fseek(BOOK,0,SEEK_SET); for(ii = 0; ii 1000;ii+) book_floor1ii.book_number = 0; if(BOOK = NULL) printf(文件打開失敗); fprintf(BOOK,圖書編號t書名t作者t出版日期t圖書位置t庫存 n); do printf(圖書編號:); scanf(%d,&book_floor1i.book_number); printf(書名:); scanf(%s,book_floo

21、r1i.book_name); printf(作者:); scanf(%s,book_floor1i.book_auther); printf(出版日期:); scanf(%s,book_floor1i.book_date); printf(圖書位置:); scanf(%s,book_floor1i.book_address); printf(庫存:); scanf(%d,&book_floor1i.book_amount); fprintf(BOOK, %dt%st%st%st%st%dn, book_floor1i.book_number, book_floor1i.book_name,

22、book_floor1i.book_auther, book_floor1i.book_date, book_floor1i.book_address, book_floor1i.book_amount); fprintf(BOOK,n); printf(n退出鍵入圖書信息請按ESCn nnn任意輸入則繼續(xù)鍵入圖書n); t = getch(); i+; while( t != 27); fclose(BOOK);3.6 圖書分類對于圖書經行分類操作,方便圖書的查找瀏覽等,該函數將圖書類型保存在文件中,無論是用戶還是管理人員都能清楚的明白自己所需要的圖書在什么位置。#include all_t

23、hing.hvoid floor_style() /各個樓層圖書類型名稱 FR library; int i = 0; int t; ST = fopen(F:王睿澤201416010306book_style.txt,w+); fseek(ST,0,SEEK_SET); if(BOOK = NULL) printf(文件打開失敗); printf(請設置各個樓層圖書類型分類:n); printf(若退出(暫停)取名請輸入0); do printf(n請輸入第%d層圖書類型:,i+1); scanf(%s,*library.storey_name); printf(n退出圖書分類請按ESCn

24、nn任意輸入則繼續(xù)鍵入圖書類型n); t = getch(); fprintf(ST,%sn,*library.storey_name); i+; while( t != 27); fclose(ST);3.7 密碼隱藏和管理人員、普通用戶登錄界面對屏幕顯示的密碼進行加密,顯示*,避免密碼被竊取。防止用戶在輸入密碼時密碼被人竊取。該函數是用”* ”代替所輸入的字符。在寫代碼時,出現了按退格鍵無法將*刪除,原因是”退格鍵”也會占用一個字符,退格一個字符的同時也會將退格鍵讀入。因此,每次按退格鍵時,刪除兩個字符就可以剛好向后退一格。還有一個問題:過度的退格同時會將屏幕上的提示語句刪除,產生“可笑”

25、的BUG。但是這段代碼成功的解決了這個問題。#include all_thing.hchar mc1=123321123;char a112;void mima1() printf(輸入密碼: ); int i=0; while(1) a1i=getch(); if(a1i=b) i-; if(i0) i=0; else printf(b b); continue; else if(a1i=r) a1i=0;break; else printf(*); i+; void administrator()/管理人員賬戶 int ad; printf(n用戶名:); scanf(%d,&ad); w

26、hile( ad != administrator_account) printf(用戶不存在,請重新輸入n用戶名:); scanf(%d,&ad); mima1(); while( strcmp(a1,mc1) != 0) printf(密碼錯誤,請重新輸入n); mima1(); void consumer() /學生登錄賬戶密碼 int cs; printf(n用戶名:); scanf(%d,&cs); while( cs != consumer_account) printf(用戶不存在,請重新輸入n用戶名:); scanf(%d,&cs); mima(); while( strcmp

27、(a,mc) != 0) printf(密碼錯誤,請重新輸入n); mima(); 3.8返回主菜單功能圖書管理系統(tǒng)應該是一個可以不斷循環(huán)反復幫助一個又一個用戶解決問題的系統(tǒng),它應該能夠在一個用戶使用完畢后返回到主菜單,等待下一個用戶進行使用,無需反復開關。此段函數可以使用戶在使用完一個功能后返回主菜單繼續(xù)使用,方便用戶操作。此函數利用函數的遞歸,在使用完上一級功能后給出操作提示,然后用戶進行選擇,當用戶使用ESC鍵時,“turn_back”函數可以直接調用“system_enter”函數。#include all_thing.hvoid turn_back() /返回菜單 int tough

28、; system(cls); printf(=n); printf( * 返回主菜單請按ESC *n); printf( * 按其余任意鍵結束 *n); printf(=n); tough = getch(); switch(tough) case 27: system_enter(); /開始輸入界面 break; default: break; 3.9 圖書瀏覽此函數利用讀取文件(鍵入讀書時創(chuàng)建的文件),并將它顯示在屏幕上來完成。顯示所有圖書的情況。老師說的圖書太多可以翻頁瀏覽的功能并沒有實現,但是在我看來,該功能可以用if語句經行清屏操作,然后繼續(xù)打印圖書,再用ASCII碼經行左右鍵經行

29、換頁。#include all_thing.hvoid print_book() /圖書瀏覽 char book_printf; BOOK = fopen(F:王睿澤201416010306book_save.txt,r); if(BOOK = NULL) printf(文件打開失敗); book_printf = getc(BOOK); while( (book_printf)!= -1 ) book_printf = getc(BOOK); putchar(book_printf); fclose(BOOK); printf(nnn n); printf( 謝謝使用圖書瀏覽n); prin

30、tf( =n); getch();四 調試分析(1) 在設置密碼隱藏時,退格一次不行,無法完成回刪功能,原因是退格鍵也占取一個字符,會讀取一個退格鍵后再刪除,相當于沒有動。解決方法:用兩個退格符號完成回刪功能。(2) 密碼隱藏式時出現BUG,回刪的時候回將提示語言刪除。(3) 圖書查詢時,讀取文件錯誤。在更換文件夾時,文件操作一定要切換路徑,可以制作代碼進行路徑自動讀取和切換,但是我暫時無法做到這一點。(4) 寫程序時,必須養(yǎng)成好的括號匹配問題,否者將會對整個程序的運行產生不可預測的影響。(5) 在設置查詢圖書時,文件路徑無法找到,文件內容無法讀取,之后我將文件內容讀取到一個結構體數組中,然后查找字符進行操作。(6) 要有好的模塊化思想,使得程序具有較好的理解性,修改性,可移植性。(7) 代碼的思想是非常重要的,代碼變量名稱一定要讓人一眼就看懂。(8) 在進行文件操作時,我使用數組名+【20】來寫入信息,總是會發(fā)生內存溢出,是因為數組名+【20】表示這

溫馨提示

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

評論

0/150

提交評論