




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《C++程序設計》課程設計說明書題目圖書信息管理系統學號姓名指導教師日期內蒙古科技大學課程設計任務書課程名稱面向對象程序設計A課程設計設計題目圖書信息管理系統指導教師時間一、教學要求1.穩固和加深學生對C語言課程的根本知識的理解和掌握
2.掌握C語言編程和程序調試的根本技能
3.利用C語言進行根本的軟件設計
4.掌握書寫程序設計說明文檔的能力
5.提高運用C語言解決實際問題的能力二、設計資料及參數每個學生在教師提供的課程設計題目中任意選擇一題,獨立完成,題目選定后不可更換。圖書信息管理系統圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等。試設計一圖書信息管理系統,使之能提供以下功能:圖書信息錄入功能(圖書信息用文件保存)--輸入圖書信息瀏覽功能--輸出查詢或排序功能:(至少兩種種查詢方式)--算法●按書名查詢●按作者名查詢圖書信息的刪除與修改圖書的借出與歸還三、設計要求及成果1.分析課程設計題目的功能需求〔可選用數組或鏈表實現,可多人〔最多3人〕協作完成一個題目〕
2.寫出詳細設計說明〔至少包括功能實現分析和模塊流程圖〕
3.編寫程序代碼,調試程序使其能正確運行〔代碼書寫要標準,標示符要見名知意,要有必要的注釋,每人至少3個函數,每人至少200行代碼,不包括注釋和花括號〕
4.設計完成的軟件要便于操作和使用
5.設計完成后提交課程設計報告〔請嚴格按照模板進行排版〕四、進度安排第一天
選擇課程設計題目,分析課題的要求
第二天
編程
第三天
編程及調試
第四天
寫課程設計報告
第五天
提交課程設計報告〔打印稿及電子稿〕五、評分標準1.根據平時上機考勤、表現和進度,教師將每天點名和檢查2.根據課程設計完成情況,必須有可運行的軟件。
3.根據課程設計報告的質量,如有雷同,那么所有雷同的所有人均判為不及格。六、建議參考資料1.《C語言程序設計》,譚浩強,清華大學出版社2.《C語言程序設計課程設計》,劉振安,機械工業出版社目錄內蒙古科技大學課程設計任務書I第1章需求分析1第2章總體設計1第3章類的設計23.1date類的設計〔第一個類〕23.2book類的設計〔第二個類〕33.3library類的設計〔第三個類〕4第4章詳細設計54.1工程視圖54.2類圖視圖54.3主程序流程圖74.4主要算法的流程圖8第5章測試12第6章總結17附錄:程序代碼17需求分析用C++設計一個圖書信息管理系統圖書信息管理系統圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等。試設計一圖書信息管理系統,使之能提供以下功能:圖書信息錄入功能(圖書信息用文件保存)--輸入圖書信息瀏覽功能--輸出查詢或排序功能:(至少兩種種查詢方式)--算法●按書名查詢●按作者名查詢圖書信息的刪除與修改圖書的借出與歸還總體設計1.用結構框圖表示各個功能之間的關系。圖2.12.將框圖中系統的各個功能用文字詳細的描述。圖書信息管理系統功能:圖書信息添加功能:向圖書信息管理系統內添加圖書信息,圖書信息包括圖書登錄名、圖書書名、圖書作者名、圖書類別、圖書出版單位、圖書出版時間、圖書價格、圖書數量等信息。圖書信息瀏覽功能:將圖書管理系統的圖書全部顯示出來。圖書信息查詢功能:分為兩個功能。第一個為書名查詢功能,通過輸入要查詢圖書書名來對圖書信息庫進行搜索查詢,如果有該書那么顯示該書的信息,如果沒有該書那么顯示“沒有找到該書〞。第二個為作者查詢,通過輸入要查詢圖書作那么名來對圖書信息庫進行搜索查詢,如果有該書那么顯示該書的信息,如果沒有該書那么顯示“沒有找到該書〞。圖書信息刪除功能:通過輸入的圖書登錄號對圖書信息庫的該書進行刪除操作,該書的信息將會在圖書信息庫中刪除,以后無法找到。圖書信息修改功能:通過輸入圖書登錄號來查找該書,如果圖書信息庫中有該書,那么通過輸入圖書的每一項信息來修改圖書的信息,如果圖書信息庫中沒有該書那么顯示“沒有該圖書信息〞。圖書借出功能:通過輸入圖書登錄號來查找該書,如果圖書信息庫中沒有該書,那么顯示“沒有該書〞,如果有該書那么顯示“借閱成功〞,并且該書的數量減1,如果該書的數量為0,那么顯示“該書全部借出〞,借閱不成功。圖書歸還功能:通過輸入圖書登錄號來查找該書,如果圖書信息庫中沒有該書,那么顯示“沒有該書〞,如果有該書那么顯示“歸還成功〞,如果該書的數量為圖書信息庫中原始數量,那么顯示“該書沒有借出〞。退出圖書信息管理系統功能:退出圖書信息管理系統程序。類的設計date類的設計〔第一個類〕畫出類圖表3.1dateintyearintmonthdate(inty=2000,intm=1)~date()voidset(inty=2000,intm=1)intgety()intgetm()2.對類的函數成員的說明date(inty=2000,intm=1)說明:輸入參數時間年和參數時間月。 構造函數,對時間進行構造,方便數據的錄入。 將用戶輸入的數據進行錄入并賦值給類的數據成員。~date()說明:析構函數,對構造函數申請的內存空間進行釋放。voidset(inty=2000,intm=1)說明:輸入數據時間年和數據時間月。成員函數,對時間年月的輸入進行賦值。intgety()說明:返回數據時間年。intget()說明:返回數據時間月。book類的設計〔第二個類〕畫出類圖表3.2bookcharid[20]charbookname[20]charauthor[20]charclassnum[20]charpublisher[20]doublepriceintnumintnum1datetimebook()~book()voidset()voidprintout()friendclasslibrary()2.對類的函數成員的說明book(char*i="100000",char*b="noname",char*a="noname",char*c="noname",char*p="noname",doublemoney=0.0,inty=2000,intm=1,intnumber=0):date(y,m)說明:輸入參數登錄名,書名,作者名,類別,出版單位,出版時間,價格,數量。構造函數,對登錄名等圖書信息進行構造,方便數據的錄入。將用戶輸入的數據進行錄入并賦值給類的數據成員。~book()說明:析構函數,對構造函數申請的內存空間進行釋放。voidset(char*i="100000",char*b="noname",char*a="noname",char*c="noname",char*p="noname",doublemoney=0.0,inty=2000,intm=1,intnumber=0)說明:輸入數據登錄名,書名,作者名,類別,出版單位,出版時間,價格,數量。成員函數,對圖書信息登錄名,書名,作者名,類別,出版單位,出版時間,價格,數量進行賦值。voidprintout()說明:對圖書信息數據登錄名,書名,作者名,類別,出版單位,出版時間,價格,數量進行輸出。成員函數,對圖書信息進行輸出的函數。friendclasslibrary說明:將類library聲明為類book的友元類。library類的設計〔第三個類〕畫出類圖表3.3librarybook*book1library()~library()intidSeek()voidNameSeek()voidAuthor()voidjudge()voidjudge1()voiddelee1()2.對類的函數成員的說明library()說明:申請分配動態內存空間,申請book1[N]數組。構造函數,申請分配動態內存空間。~library()說明:動態內存分配空間的撤銷,將book1[N]占有的空間撤銷。析構函數,動態內存分配空間的撤銷。intidSeek(char*i)說明:查找函數,將形參傳給該函數并對圖書信息庫進行查詢,如果查到返回數組的序號值,沒有查到那么顯示“沒有該書〞。成員函數,對傳遞的形參值進行查詢。voidNameSeek()說明:書名查找函數,輸入待查詢值,通過與圖書信息庫進行比照,如果有該書那么輸出圖書信息,否那么顯示“沒有該書〞。成員函數,輸入書名進行查詢。voidAuthorSeek()說明:作者名查找函數,輸入待查詢值,通過與圖書信息庫進行比照,如果有該書那么輸出圖書信息,否那么顯示“沒有該書〞。voidjudge(inta)說明:判斷圖書借閱是否成功函數,通過形參傳入借閱圖書的數組序號值,如果該書的庫存數量大于0,那么能夠借閱,并顯示“該書借閱成功〞,否那么顯示“該書已經全部借出〞。成員函數,判斷借閱的圖書是否借閱成功。voidjudge1(inta)說明:判斷圖書歸還是否成功函數,通過形參傳入歸還圖書的數組序號值,如果該書的庫存量小于該書信息錄入時的庫存量,那么顯示該書歸還成功,否那么顯示“該書沒有借出〞。voiddelete1(inta)說明:圖書信息刪除函數,確定刪除圖書的數組序號值,并將數組序號值+1的值賦值給數組序號值來進行刪除的操作。成員函數,對給定的圖書信息進行刪除。詳細設計工程視圖圖4.1類圖視圖圖圖主程序流程圖是是輸出結果添加借出輸入功能建立文件錄入數據輸入文件名存在?否瀏覽查找歸還修改刪除結束開始圖4.3主要算法的流程圖添加算法輸入數據輸入數據輸入數據添加繼續?是結束否圖查找算法〔1〕書名查詢輸入書名輸入書名輸出數據書名查找存在是結束否圖〔2〕作者查詢輸入作者輸入作者輸出數據作者查找存在是結束否圖4.4.2-2瀏覽功能顯示數據顯示數據瀏覽結束刪除功能刪除數據刪除數據刪除結束圖修改功能輸入登錄號輸入登錄號輸入修改數據修改存在是結束否借出功能借書失敗借書失敗輸入登錄號借書成功借出存在結束歸還功能歸還成功歸還成功輸入登錄號歸還失敗歸還>存儲量?結束測試5.1信息錄入圖5.15.2功能界面圖5.25.3添加功能圖5.35.4瀏覽功能圖5.45.5查找功能圖書名查找5.5.2作者查找5.6刪除功能圖5.65.7修改功能5.8借出功能5.9歸還功能5.10退出系統圖5.10總結總結:老師很早就把題目公布了,很早就做C++的課程設計了,時間非常的充足。總共算起來大概花了20多天的時間進行構思和編寫代碼,在編寫代碼的過程中曾經遇到過各種各樣的問題,例如:C++中主函數如何定義對象并且使輸入的數據怎樣通過類中的函數進行增刪改查等一系列的操作。還有就是如何將輸入的數據寫入到文件中,在一開始都覺得有些難,不知道如何下手,自己在圖書館里借了又關這方面的書進行閱讀,在網上搜索相關的程序代碼進行閱讀,并且去理解消化,模仿著寫出自己的程序代碼,在問題沒有解決之前是各種苦惱,心情是各種煩躁,但是當問題解決了之后心情是非常的愉悅,經過自己的不斷努力去尋找解決的方法并且最終解決了問題。特別有成就感,雖然這個過程是痛苦的,但成功的愉悅是多么的快樂。在整個課程設計的過程中還是很感謝身邊的一群同學,當遇到困難時,他們給予幫助,給予靈感,才讓這次課程設計能夠順利的完成。也很感謝老師課堂的教育,大學課堂里老師的教就是為了不教,老師教給我們的是根底知識,是以后向更深領域學習的根底,是墊腳石。老師教給我們的是一種態度一種學習方法,讓我們以后能夠自主的去學習。當一個人去完成一項課程設計時,里面會遇到各種各樣的事情,老師在課堂上講解的一些情況我們會遇到,只要我們上課聽講了,就能解決,但是一些老師沒有提及的問題就要靠我們自己去解決。我們該如何去解決呢?有很多種途徑,去圖書館查找相關的資料,在網上進行搜索,都會找到相關的資料,這時我們就得運用老師教給我們的方法去理解并且消化。最先開始可能只是進行模仿,模仿多了之后才會有我們自己的創造。所以學習都是這樣的一個過程,在大學里的學習是人生很重要的一門課。感謝所有教授我知識和方法的老師,謝謝你們的辛勤的勞動。附錄:程序代碼#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN10#defineFNAMELEN40charstuf[FNAMELEN];classdate{public: intyear; intmonth;public: date(inty=2000,intm=1) { year=y; month=m; } ~date() { } voidset(inty=200,intm=1) { year=y; month=m; } intgety() { returnyear; } intgetm() { returnmonth; }};classbook:publicdate{private: charid[20]; charbookname[20]; charauthor[20]; charclassnum[20]; charpublisher[30]; doubleprice; intnum; intnum1; datetime;public: book(char*i="100000",char*b="noname",char*a="noname",char*c="noname",char*p="noname",doublemoney=0.0,inty=2000,intm=1,intnumber=0):time(y,m) { strcpy(id,i); strcpy(bookname,b); strcpy(author,a); strcpy(classnum,c); strcpy(publisher,p); price=money; num=number; num1=number; } ~book() { }voidset(char*i="100000",char*b="noname",char*a="noname",char*c="noname",char*p="noname",doublemoney=0.0,inty=2000,intm=1,intnumber=0) { date::set(y,m); strcpy(id,i); strcpy(bookname,b); strcpy(author,a); strcpy(classnum,c); strcpy(publisher,p); price=money; num=number; num1=number; } voidprintout() { cout<<"登錄號:"<<id<<endl; cout<<"書名:"<<bookname<<endl; cout<<"作者名:"<<author<<endl; cout<<"類別:"<<classnum<<endl; cout<<"出版單位:"<<publisher<<endl; cout<<"出版時間:"<<time.gety()<<"年"<<time.getm()<<"月"<<endl; cout<<"價格:"<<price<<endl; cout<<"數量:"<<num<<endl; }friendclasslibary;};classlibary{public:book*book1;public: libary() { book1=newbook[N]; } ~libary() { delete[]book1; } intidSeek(char*i) { intj,flag=1; for(j=0;j<N;j++) { if(strcmp(book1[j].id,i)==0) { flag=0; returnj; } } if(flag) { cout<<"沒有該書!"; returnflag; } } voidNameSeek() { chari[20]; cout<<"輸入搜尋的書名:"; cin>>i; intj,flag=1; for(j=0;j<N;j++) { if(strcmp(book1[j].bookname,i)==0) { flag=0; book1[j].printout(); } } if(flag) { cout<<"沒有該書!"; } getchar(); } voidAuthorSeek() { chari[20]; cout<<"輸入搜尋圖書作者名:"; cin>>i; intj,flag=1; for(j=0;j<N;j++) { if(strcmp(book1[j].author,i)==0) { flag=0; book1[j].printout(); } } if(flag) { cout<<"沒有該書!"; } getchar(); } voidjudge(inta) { if(book1[a].num>0) { cout<<"該書借閱成功!"; book1[a].num--; } else { cout<<"該書已全部借出!"; } } voidjudge1(inta) { if(book1[a].num<book1[a].num1) { cout<<"該書歸還成功!"; book1[a].num++; } else { cout<<"該書沒有借出!"; } } voiddelete1(inta) { //book1[a].set(book1[a+1].id,book1[a+1].bookname,book1[a+1].author,book1[a+1].classnum,book1[a+1].publisher,book1[a+1].price,book1[a+1].year,book1[a+1].month,book1[a+1].num); strcpy(book1[a].id,book1[a+1].id);strcpy(book1[a].bookname,book1[a+1].bookname); strcpy(book1[a].author,book1[a+1].author); strcpy(book1[a].classnum,book1[a+1].classnum); strcpy(book1[a].publisher,book1[a+1].publisher); book1[a].price=book1[a+1].price; book1[a].year=book1[a+1].year; book1[a].month=book1[a+1].month; book1[a].num=book1[a+1].num; }};voidmain(){ charid[20]; charbookname[20]; charauthor[20]; charclassnum[20]; charpublisher[30]; charc; doubleprice; intnum,year,month,n,m,j,i=0; libaryl1;FILE*fp; charcn; system("cls"); cout<<"請輸入圖書信息庫名:"; cin>>stuf; if((fp=fopen(stuf,"r"))==NULL) { cout<<"該文件"<<stuf<<"不存在,你想要新建一個嗎?(Y/N)"; cin>>cn; if(cn=='Y'||cn=='y') { fp=fopen(stuf,"w");do{ cout<<"輸入登錄號:"; cin>>id; cout<<"輸入書名:"; cin>>bookname; cout<<"輸入作者名:"; cin>>author; cout<<"輸入書類別:"; cin>>classnum; cout<<"輸入出版社名:"; cin>>publisher; cout<<"輸入價格:"; cin>>price; cout<<"輸入該書數量:"; cin>>num; cout<<"輸入該書出版日期:"; cin>>year>>month; l1.book1[i].set(id,bookname,author,classnum,publisher,price,year,month,num); i++; n=i; m=i; fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%6.2f\t%d\t%d\t%d\n",id,bookname,author,classnum,publisher,price,year,month,num); cout<<"是否繼續輸入(Y/N):";cin>>c; }while(c=='y'||c=='Y'); cout<<endl; } } fclose(fp); inta; do{ system("cls"); cout<<"\n\n\n\n\n\t\t\t\t圖書管理系統\t\t\t\t\n"; cout<<"\t\t*****************************************\n"; cout<<"\t\t\t1圖書信息添加\n"; cout<<"\t\t\t2圖書信息瀏覽\n"; cout<<"\t\t\t3圖書信息查詢\n"; cout<<"\t\t\t4圖書信息刪除\n"; cout<<"\t\t\t5圖書信息修改\n"; cout<<"\t\t\t6圖書借出\n"; cout<<"\t\t\t7圖書歸還\n"; cout<<"\t\t\t0退出影碟信息系統\n"; cout<<"\t\t*****************************************\n"; cout<<"\t\t請輸入選擇:"; fflush(stdin); cin>>a; switch(a) { case1: system("cls"); fp=fopen(stuf,"w"); do{ cout<<"輸入登錄號:"; cin>>id; cout<<"輸入書名:"; cin>>bookname; cout<<"輸入作者名:"; cin>>author; cout<<"輸入書類別:"; cin>>classnum; cout<<"輸入出版社名:"; cin>>publisher; cout<<"輸入價格:"; cin>>price; cout<<"輸入該書數量:"; cin>>num; cout<<"輸入該書出版日期:"; cin>>year>>month; l1.book1[m].set(id,bookname,author,classnum,publisher,price,year,month,num); m++; fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%6.2f\t%d\t%d\t%d\n",id,bookname,author,classnum,publisher,price,year,month,num); cout<<"是否繼續輸入(Y/N):";cin>>c; }while(c=='y'||c=='Y'); getchar(); break; case2: system("cls"); for(j=0;j<m;j++) { l1.book1[j].printout(); cout<<endl; } fflush(stdin); getchar(); break; case3: inta; system("cls"); cout<<"\t\t*******************************"<<endl; cout<<"\t\t開始查詢"<<endl; cout<<"\t\t\t1按圖書名搜索"<<endl; cout<<"\t\t\t2按作者名搜索"<<endl; cout<<"\t\t\t0退出"<<endl; cout<<"\t\t*******************************"<<endl; cout<<"\t\t請選擇你想要的查詢方式:"; cin>>a; switch(a) { case1: l1.NameSeek(); break; case2: l1.AuthorSeek(); break; case0: return; default: cout<<"非法輸入!"; } break; case4: system("cls"); intflag;cout<<"請輸入要刪除圖書的登錄號:"; cin>>id; flag=l1.idSeek(id); if(flag==1) {
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目風險評估中的定量與定性方法試題及答案
- 2025年初期大學英語四六級考試試題
- 沈陽中考生地試題及答案
- 華三java面試題及答案
- 御泥坊java面試題及答案
- 逐步深入的網絡題庫試題及答案
- 軟考網絡工程師優勢特長試題及答案
- 深入了解信息系統項目管理試題
- 變革2025年西方政治制度試題及答案
- 政治身份與社會結構的互動研究試題及答案
- 理論聯系實際談一談如何維護政治安全?參考答案1
- 2025屆安徽省合肥市A10聯盟高三下學期最后一卷歷史試題(B卷)
- 2024吉林省農村信用社聯合社招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 2024-2025學年度部編版一年級語文下學期期末試卷(含答案)
- DB13(J)-T 8496-2022 城市污水處理廠提標改造技術標準
- 2025至2030中國鋰電池粘結劑市場競爭狀況及融資并購研究報告
- 聾校語文課程標準解讀
- 河南省百師聯盟2024-2025學年高二下學期4月聯考數學試題(原卷版+解析版)
- 2025-2030中國IDC行業發展趨勢與前景展望戰略研究報告
- 合伙人商業保密協議書9篇
- 工程保修的管理措施和承諾
評論
0/150
提交評論