版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄1 課程設(shè)計目的與要求12 問題描述23總體設(shè)計33.1 功能分析33.2 系統(tǒng)使用的主要函數(shù)33.3 系統(tǒng)使用的主要數(shù)據(jù)結(jié)構(gòu)44 詳細(xì)設(shè)計54.1 程序總體結(jié)構(gòu)圖54.2 程序流程圖75 功能測試105.1 系統(tǒng)主界面105.2 系統(tǒng)輸入信息的界面115.3 系統(tǒng)信息查詢的界面125.4 系統(tǒng)信息按作者名查詢的界面135.5 系統(tǒng)信息按作者名排序146 程序設(shè)計調(diào)試情況分析157 課程設(shè)計小結(jié)16參考文獻(xiàn)17附錄 系統(tǒng)源程序18圖書信息管理系統(tǒng)1 課程設(shè)計目的與要求圖書信息存放在文件中,提供文件的輸入、輸出等操作;要實現(xiàn)瀏覽功能;查詢和排序功能要求實現(xiàn)查找操作(至少兩種依據(jù));還應(yīng)該提
2、供圖書信息刪除和修改的功能;另外還應(yīng)該提供鍵盤式選擇菜單以實現(xiàn)功能選擇。 圖書管理系統(tǒng),其中包括:圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等。功能包括:1) 系統(tǒng)以菜單方式工作;2) 圖書信息錄入功能(圖書信息用文件保存);3) 圖書信息瀏覽功能;4) 查詢和排序功能;5)圖書信息的刪除與修改功能2 問題描述1.設(shè)計一個圖書管理系統(tǒng),其中包括:圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等。功能包括:1) 系統(tǒng)以菜單方式工作;2) 圖書信息錄入功能(圖書信息用文件保存);3) 圖書信息瀏覽功能;4) 查詢和排序功能;5)圖書信息的刪除與修改功
3、能2.需求分析:圖書信息存放在文件中,提供文件的輸入、輸出等操作;要實現(xiàn)瀏覽功能;查詢和排序功能要求實現(xiàn)查找操作(至少兩種依據(jù));還應(yīng)該提供圖書信息刪除和修改的功能;另外還應(yīng)該提供鍵盤式選擇菜單以實現(xiàn)功能選擇。顯示模塊通過設(shè)計一個模塊,來實現(xiàn)圖書信息的顯示,以便于瀏覽圖書的信息。查詢模塊通過設(shè)計一個模塊,這個模塊可以按圖書的書名、作者來查詢圖書所有的信息,以便查詢者閱讀。刪除模塊通過設(shè)計一個模塊,當(dāng)輸入一個圖書的登入號或者書名的時候,可以通過這個模塊,將輸入登入號或者書名的書籍的所有信息從數(shù)據(jù)庫中刪除出去。以后,這本圖書的信息不再出現(xiàn)在數(shù)據(jù)庫中。修改模塊通過設(shè)計一個模塊,當(dāng)某本圖書的信息發(fā)生變
4、化的時候,可以通過修改模塊來進(jìn)行修改。修改模塊時一具有多級子菜單的模塊。排序模塊通過設(shè)計一個模塊,來實現(xiàn)數(shù)據(jù)庫的信息按某項成員名的升序或者降序排列,這個模塊提供了按書名,作者名,分類號三種方式來實現(xiàn)排序。3總體設(shè)計 3.1 功能分析(系統(tǒng)提供主界面,各種功能操作以獨(dú)立的函數(shù)為基礎(chǔ),運(yùn)用對鏈表操作的技術(shù)來實現(xiàn)通訊錄的管理,同時對操作結(jié)果在計算機(jī)中做永久保存。) 整個系統(tǒng)可以分為信息錄入、信息瀏覽、信息查詢、信息排序、信息刪除和信息修改的功能。系統(tǒng)提供主界面,各種功能操作以獨(dú)立的函數(shù)為基礎(chǔ),運(yùn)用對鏈表操作的技術(shù)來實現(xiàn)圖書信息的管理,同時對操作結(jié)果在計算機(jī)中做永久保存。 3.2 系統(tǒng)使用的主要函數(shù)
5、void menu();int bookluru(struct book*p,int n); (錄入圖書信息) void bookliulan(struct book*p,int n); (圖書信息瀏覽) void bookchaxun(struct book*p,int n);(圖書信息查詢)void bookxiugai(struct book*p,int n); (圖書信息修改) int bookzengjia(struct book*p,int n); (圖書信息增加)int bookshanchu(struct book*p,int n); (圖書信息刪除) void bookpai
6、xu(struct book*p,int n); (圖書信息排序) void DLsearch(struct book*p,int n); (按登入號查詢)void AUsearch(struct book*p,int n); (按作者名查詢)int bookzairu(struct book*p,int n); (圖書信息文件儲存 )void goout(); (退出程序) int bookbaocun(struct book*p,int n); (圖書信息保存) void main() 3.3 系統(tǒng)使用的主要數(shù)據(jù)結(jié)構(gòu) struct book /定義一個book類結(jié)構(gòu)體。char noL;c
7、har nameL;char authorL;char fenleiL;char puttimeL;char putfromL;char priceL;4 詳細(xì)設(shè)計4.1 程序總體結(jié)構(gòu)圖 N Y 圖4.1 程序總體結(jié)構(gòu)圖 0 1 2 3 4 5 6 7 圖4.2 程序?qū)哟螆D 4.2 程序流程圖 圖4.3信息登入功能流程圖 圖4.4 查詢功能流程圖 圖4.5 修改功能流程圖5 功能測試5.1 系統(tǒng)主界面圖5.1 系統(tǒng)主界面5.2 系統(tǒng)輸入信息的界面圖 5.2 輸入信息界面5.3 系統(tǒng)信息查詢的界面 圖5.3信息查詢界面5.4 系統(tǒng)信息按作者名查詢的界面 圖5.4 按作者名查詢5.5 系統(tǒng)信息按作
8、者名排序 圖5.5 信息排序界面6 程序設(shè)計調(diào)試情況分析1)問題:在信息查詢完成后,無法跳出該界面,無法回到主界面。圖6.1 查詢后無法回到主界面解決方法:在信息查詢那個版塊的程序中,把原先用scanf輸入字符改成gets(no),排除由于回車鍵出現(xiàn)的問題。2)問題:“登錄號書名作者。”之間無空格號解決方法:改為printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格); 拉寬長度。7 課程設(shè)計小結(jié)通過一周的課程設(shè)計,第一次我們試著用所學(xué)的C語言知識去編制生活中常用的程序。我們是小組選擇編輯圖書信息管理系統(tǒng)程序。由于分工合作,我負(fù)責(zé)
9、的是查詢和排除模塊。起初對知識掌握的不夠全面,在整個設(shè)計過程中遇到很多問題。比如,編譯出現(xiàn)錯誤,對于格式的掌握還不夠透徹;在分界面運(yùn)行完后,回不到系統(tǒng)的主界面,出現(xiàn)了死循環(huán);在刪除信息的板塊中,刪除了要保留的;運(yùn)行時,屏幕顯示的字之間無空格。后來,通過小組互相幫組討論,查閱書籍,改善了程序。首先把原程序中的運(yùn)用scanf()輸入字符,改為getchar(),排除了接受回車鍵所出現(xiàn)的問題,能夠順利的返回主界面。其次,printf()中字符串控制的長度拉寬。最后還是能如期的完成此次實訓(xùn)。當(dāng)然,由于初次接觸圖書管理系統(tǒng)的設(shè)計,程序還是存在缺陷。比如操作起來不夠簡便、連貫,同時也沒考慮到實際問題。如圖
10、書的價格要取大于等于零的數(shù)等??傊舜蔚恼n程設(shè)計還是對我們的專業(yè)很有幫助。既鞏固了我們的C語言知識,讓我們對一部分函數(shù)的功能有了更加深刻的理解,把所學(xué)運(yùn)用到實際,也使我們在系統(tǒng)設(shè)計領(lǐng)域有了新的拓展,開發(fā)我們的思維。參考文獻(xiàn)1 吉順如. C程序設(shè)計教程與實驗. 北京 :清華大學(xué)出版社. 2011. 48-103附錄 系統(tǒng)源程序#include /頭文件#include#include#define L 30 /宏定義#define Q 200struct book /定義一個book類結(jié)構(gòu)體。char noL;char nameL;char authorL;char fenleiL;char
11、puttimeL;char putfromL;char priceL;/函數(shù)聲明 /函數(shù)聲明void menu();int bookluru(struct book*p,int n); void bookliulan(struct book*p,int n); void bookchaxun(struct book*p,int n); void bookxiugai(struct book*p,int n); int bookzhengjia(struct book*p,int n);int bookshanchu(struct book*p,int n); void bookpaixu(st
12、ruct book*p,int n); void DLsearch(struct book*p,int n); void AUsearch(struct book*p,int n);int bookzairu(struct book*p,int n);void goout();int bookbaocun(struct book*p,int n); void main() /主函數(shù)char slect,yn;struct book recordQ; /定義book類結(jié)構(gòu)體變量存放圖書信息共200條int total=0,flag;total=bookzairu(record,Q); /從文件讀
13、取圖書信息,不超過200條domenu(); /顯示菜單printf(請服務(wù)項編號:);slect=getchar();getchar();switch(slect) case0: goout();break;case1: total=bookluru(record,total);break; /函數(shù)調(diào)用case2: bookliulan(record,total);break;case3: bookchaxun(record,total);break;case4: bookxiugai(record,total);break;case5: total=bookzhengjia(record,
14、total);break;case6: total=bookshanchu(record,total);break;case7: bookpaixu(record,total);break;case8: flag=bookbaocun(record,total);if(flag=1) printf(圖書信息保存成功!n);elseprintf(圖書信息保存失敗!n);break;default:continue;if(slect=0) break;printf(n還要繼續(xù)選擇嗎?(Y/N)); /提示是否結(jié)束doyn=getchar();getchar();if (yn=Y|yn=y)brea
15、k;else if (yn=N|yn=n)break;else printf(非法選項!n還要繼續(xù)選擇嗎?(Y/N));while(1);while(yn!=N&yn!=n);/圖書管理系統(tǒng)主菜單.void menu()system(cls); printf(nn); printf(請選擇服務(wù)項目編號(0-8)n); printf(*n); printf(*歡迎使用圖書信息管理系統(tǒng)*n); printf(*n); printf( n); printf( n); printf( n); printf( * 1 . 圖書信息錄入. n); printf( * 2 . 圖書信息瀏覽. n); pri
16、ntf( * 3 . 圖書信息查尋. n); printf( * 4 . 圖書信息修改. n); printf( * 5 . 圖書信息增加. n); printf( * 6 . 圖書信息刪除. n); printf( * 7 . 圖書信息排序. n); printf( * 8 . 圖書信息保存. n); printf( * 0 . 退出圖書管理系統(tǒng). n); printf( n); printf( n); printf( n); printf(*n; printf(n);int bookluru(struct book *p,int n)/錄入圖書信息.int i=0;int m;printf
17、(n添加前的圖書信息記錄共有%d個:n,n); /顯示原有的圖書信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格);i=0;while(ino,)!=0) /輸入的登錄號不為空時,輸出圖書信息printf(%9s%9s%9s%9s%9s%9s%9sn,p-no,p-name,p-author,p-fenlei,p-puttime,p-putfrom,p-price);/信息輸出i+;p+;printf(n請輸入要錄入的圖書數(shù)目X(0X%d): ,200-n); /設(shè)置圖書信息存儲最大值scanf(%d,&m);i=0;w
18、hile(ino); /輸入登錄號,再輸入其他信息while(strcmp(p-no,)=0);printf(書名為:); gets(p-name); printf(作者名為:); gets(p-author); printf(分類號為:); gets(p-fenlei); printf(出版時間為:); gets(p-puttime); printf(出版單位為:); gets(p-putfrom); printf(價格為:); gets(p-price);p+;i+;return m+n;void bookliulan(struct book*p,int n)/圖書信息瀏覽.int i=0
19、;printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格);while(ino,p-name,p-author,p-fenlei,p-puttime,p-putfrom,p-price);p+;i+;void bookchaxun(struct book*p,int n)/圖書信息查尋.char c;bookliulan(p ,n);doprintf(n請問按登錄號查詢(D),還是按作者名查詢(A)?); /選擇查詢方式c=getchar();getchar();if(c=D|c=d)DLsearch(p,n);break;els
20、e if(c=A|c=a)AUsearch(p,n);break;elseprintf(n輸入的為非法字符!n);continue;while(c!=D|c!=d|c!=A|c!=a);void DLsearch(struct book*p,int n)/按登錄號查詢.int i,x=0;char DLL;printf(n請輸入要查詢圖書的登錄號:);gets(DL);for(i=0;in;i+)if(strcmp(DL,pi.no)=0) /輸入登錄號,如果在系統(tǒng)中找到則輸出圖書信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時
21、間,價格);printf(n%10s%10s%10s%10s%10s%10s%10sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);x=1;break;if(x=0)printf(n對不起,圖書系統(tǒng)中沒有包含此書的信息!n);void AUsearch(struct book*p,int n)/按作者名查詢.int i,x=0;char AU20;printf(n請輸入要查詢圖書的作者姓名:);gets(AU);for(i=0;in;i+) if(strcmp(AU,pi.author)=0) /輸入作者姓
22、名,如果在系統(tǒng)中找到則輸出圖書信息 printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格);printf(n%10s%10s%10s%10s%10s%10s%10sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);x=1;if(x=0)printf(n對不起,圖書系統(tǒng)中沒有包含此書的信息!n); /提示信息void bookxiugai(struct book*p,int n)/圖書信息修改.int i,k=0;char noL;bookliu
23、lan(p,n);printf(n請輸入要修改圖書的登錄號:);gets(no);for(i=0;ino)!=0) continue; /輸入的登錄號不匹配,結(jié)束本次循環(huán)elseprintf(n請輸入正確的圖書登錄號:);gets(p-no);printf(n請輸入正確的圖書書名:); gets(p-name); printf(n請輸入正確的圖書作者名:); gets(p-author); printf(n請輸入正確的圖書分類號:); gets(p-fenlei); printf(n請輸入正確的圖書出版時間:); gets(p-puttime); printf(n請輸入正確的圖書出版單位:);
24、 gets(p-putfrom); printf(n請輸入正確的圖書價格:); gets(p-price);printf(n修改圖書圖書信息完成!);k=1;if(k=0)printf(n對不起,圖書系統(tǒng)中沒有包含此書的信息!n);int bookzhengjia(struct book *p,int n)/圖書信息增加.int i=0;char c;struct book t,*q;printf(n添加前圖書信息的記錄為:n); bookliulan(p ,n);/顯示添加前圖書信息的記錄doprintf(請輸入新圖書信息的登錄號:);gets(t.no); printf(n請輸入新圖書信息
25、的書名為:); gets(); printf(n請輸入新圖書信息的作者名為:); gets(t.author); printf(n請輸入新圖書信息的分類號為:); gets(t.fenlei); printf(n請輸入新圖書信息的出版時間為:); gets(t.puttime); printf(n請輸入新圖書信息的出版單位為:); gets(t.putfrom); printf(n請輸入新圖書信息的價格為:); gets(t.price);for(i=0;ino)=0|strcmp(t.author,(p+i)-author)=0|strcmp(t.fenlei,(p+i)-fen
26、lei)=0)printf(登錄號、作者名和分類號重復(fù),要重新輸入嗎(Y/N)?);c=getchar();putchar(n);break;if(i=n)*(p+i)=t; printf(n添加后圖書的信息記錄為:n); /顯示添加后圖書的信息記錄printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格);for(i=0;in+1;i+)printf(n%9s%9s%9s%9s%9s%9s%9sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);b
27、reak;while(c=y|c=Y);return n+1;int bookshanchu(struct book *p,int n)/圖書信息刪除.int i,x,y=0;char c,name20,no20;printf(n刪除前圖書的信息記錄為:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格); /顯示刪除前圖書的信息記錄for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);printf(n
28、請輸入要刪除圖書的登陸號:);gets(no);for(x=0;xn;x+)if(strcmp(no,px.no)!=0) /輸入的登錄號不匹配,結(jié)束本次循環(huán)continue;if(xn)for(i=x;in;i+) /后一個圖書信息對前一個圖書信息覆蓋刪除 strcpy(pi.no,pi+1.no); strcpy(pi.author,pi+1.author); strcpy(,pi+1.name); strcpy(pi.fenlei,pi+1.fenlei); strcpy(pi.price,pi+1.price); strcpy(pi.putfrom,pi+1.putfro
29、m); strcpy(pi.puttime,pi+1.puttime);printf(圖書信息刪除后的記錄:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格); /顯示圖書信息刪除后的記錄for(i=0;in-1;i+)printf(n%9s%9s%9s%9s%9s%9s%9sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);y=1;elseprintf(n對不起,圖書系統(tǒng)中沒有包含此書的信息!n);return n-y;/對圖書信息
30、排序.void bookpaixu(struct book*p,int n)int j,i,k;char c1,c2;struct book temp;printf(n排序前圖書的信息記錄為:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格);for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);printf(n按登錄號排序(D),還是按作者名排序(A)?); /選擇排序的方式c1=getchar()
31、;getchar();if(c1=d|c1=D) /選擇登錄號由小到大排序for(i=0;in-1;i+) k=i;for(j=i+1;j0) /使用選擇法進(jìn)行排序k=j;if(k!=i) /如果最小熟不熟默認(rèn)的pi,再交換,temp=pk;pk=pi;pi=temp;printf(n排序后圖書的信息記錄為:n); /輸出排序后圖書的信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登錄號,書名,作者名,分類號,出版單位,出版時間,價格);for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);else if(c1=a|c1=A) /選擇作者名由小到大排序for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i) /使用選擇法進(jìn)行排序temp=pk;pk=pi;pi=temp;printf(n排序后圖書的信息記錄為:n);printf(n %9s%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CT與MRI導(dǎo)航在脊柱手術(shù)的選擇策略
- 2026年德陽市中江縣綜合行政執(zhí)法局面向社會公開招聘臨聘人員10人備考題庫及參考答案詳解一套
- 燒傷創(chuàng)面更換敷料的技巧
- 2026年博思睿人力招聘(派遣至海寧市袁花鎮(zhèn)百溪工業(yè)社區(qū))備考題庫及參考答案詳解1套
- AD認(rèn)知量表的智能化可視化報告系統(tǒng)
- 2026年江西航空職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬試題帶答案解析
- 2026年中國移動通信嵊泗分公司招聘備考題庫及1套參考答案詳解
- 2026年中國科學(xué)院聲學(xué)研究所南海研究站招聘備考題庫及參考答案詳解
- 2026年中國科學(xué)院高能物理研究所軟件工程師崗位招聘備考題庫及一套答案詳解
- 2025年灌陽縣公安局警務(wù)輔助人員招聘備考題庫及答案詳解一套
- 工程春節(jié)停復(fù)工方案(3篇)
- 秀場內(nèi)外-走進(jìn)服裝表演藝術(shù)知到智慧樹期末考試答案題庫2025年武漢紡織大學(xué)
- 【高等數(shù)學(xué)練習(xí)題】蘭州職業(yè)技術(shù)學(xué)院專升本自考真題匯總(附答案解析)
- 學(xué)術(shù)道德學(xué)術(shù)規(guī)范(答案)
- 學(xué)習(xí)《政府采購貨物和服務(wù)招標(biāo)投標(biāo)管理辦法》(財政部令第87號)
- 醬牛肉制品加工工藝流程圖
- 高分子材料完整版課件
- 能源科學(xué)導(dǎo)論論文
- 高考作文與閱讀-朱以撒:挺拔之姿(附精彩點評與文章珠璣)
- 船舶航次安全風(fēng)險評估管理須知制度
- 焊接工藝評定報告下向焊
評論
0/150
提交評論