精品資料(2021-2022年收藏)課程設計報告媒體庫管理系統(tǒng)周晗_第1頁
精品資料(2021-2022年收藏)課程設計報告媒體庫管理系統(tǒng)周晗_第2頁
精品資料(2021-2022年收藏)課程設計報告媒體庫管理系統(tǒng)周晗_第3頁
精品資料(2021-2022年收藏)課程設計報告媒體庫管理系統(tǒng)周晗_第4頁
精品資料(2021-2022年收藏)課程設計報告媒體庫管理系統(tǒng)周晗_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+面向對象程序設計課 程 設 計 報 告課程名稱 C+面向對象程序設計 課題名稱 媒體庫管理系統(tǒng) 專 業(yè) 計算機科學與技術 班 級 1120542 學 號 38 姓 名 周 晗 指導教師 韓燕麗 2012年 12 月 28 日(一)、課程設計題目:媒體庫管理系統(tǒng)(二)、目的與要求: 1、目的: (1)要求學生達到熟練掌握C+語言的基本知識和技能; (2)基本掌握面向對象程序設計的基本思路和方法; (3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。 2、基本要求: (1)要求利用面向對象的方法以及C+的編程思想來完成系統(tǒng)的設計; (2)要求在設計的過程中,建立清晰的類層次;

2、(3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法; (4)在系統(tǒng)的設計中,至少要用到面向對象的一種機制。 3、創(chuàng)新要求: 在基本要求達到后,可進行創(chuàng)新設計,如根據(jù)查找結果進行修改的功能。 (三)、設計方法和基本原理: 功能要求:1) 添加物品程序主要完成圖書館三類物品信息的添加,要求編號唯一。如果添加了重復編號的物品時,則提示用戶數(shù)據(jù)添加重復并取消添加;如果物品庫已滿,則提示不能再添加新的物品。2) 查詢物品可按照三種方式進行物品的查詢。·按標題查詢:·按編號查詢:·按類別查詢:如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。3) 顯示

3、物品庫可顯示當前物品庫中所有的物品信息。4) 修改物品可根據(jù)查詢結果對相應的記錄進行修改,修改時注意編號的唯一性。5)刪除物品對已添加的物品信息進行刪除。如果當前物品庫為空,則提示“物品庫為空!”并返回操作;否則輸入要刪除的編號,根據(jù)編號刪除該物品信息,如果沒有找到該物品信息,則提示“該編號不存在”。6)統(tǒng)計功能輸出當前物品庫中總物品數(shù),以及按物品類別,統(tǒng)計出當前物品中各類別的物品數(shù)并顯示。7) 保存物品將當前系統(tǒng)中物品信息存入文件中。8) 讀取物品 將保存在文件中的物品信息讀入到當前系統(tǒng)中,以供用戶使用。在完成以上基本功能的基礎上,可自行進行擴展或完善。目 錄1.系統(tǒng)需求分析12.總體設計3

4、3.詳細設計及實現(xiàn)53.1 Base類(抽象類)的實現(xiàn)53.2 圖書類的實現(xiàn)53.3 視頻類的實現(xiàn)73.4圖畫類的實現(xiàn)103.5main.cpp134.系統(tǒng)調試205.結論216.心得體會217.參考書目221. 系統(tǒng)需求分析 1.1系統(tǒng)設計的目的與意義: 圖書館中的資料很多,如果能分類對其資料流通進行管理,將會帶來很多方便,因此需要有一個媒體庫管理系統(tǒng)。1.2 系統(tǒng)功能需求:圖書館共有三大類物品資料:圖書、視頻光盤、圖畫。1)添加物品程序主要完成圖書館三類物品信息的添加,要求編號唯一。如果添加了重復編號的物品時,則提示用戶數(shù)據(jù)添加重復并取消添加;如果物品庫已滿,則提示不能再添加新的物品。2)

5、 查詢物品可按照三種方式進行物品的查詢。·按標題查詢:·按編號查詢:·按類別查詢:如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。3) 顯示物品庫可顯示當前物品庫中所有的物品信息。4) 修改物品可根據(jù)查詢結果對相應的記錄進行修改,修改時注意編號的唯一性。5)刪除物品對已添加的物品信息進行刪除。如果當前物品庫為空,則提示“物品庫為空!”并返回操作;否則輸入要刪除的編號,根據(jù)編號刪除該物品信息,如果沒有找到該物品信息,則提示“該編號不存在”。6)統(tǒng)計功能輸出當前物品庫中總物品數(shù),以及按物品類別,統(tǒng)計出當前物品中各類別的物品數(shù)并顯示。7) 保存物品將當前

6、系統(tǒng)中物品信息存入文件中。8) 讀取物品 將保存在文件中的物品信息讀入到當前系統(tǒng)中,以供用戶使用。在完成以上基本功能的基礎上,可自行進行擴展或完善。2. 總體設計2.1 系統(tǒng)功能分析:系統(tǒng)通過調用函數(shù)來實現(xiàn)信息錄入、信息修改、信息刪除、信息查詢以及數(shù)據(jù)保存文件等功能。add()函數(shù)用于錄入信息;modify()函數(shù)用來修改信息;del()函數(shù)用來修改信息;searchStu()及searchScore()函數(shù)用來查詢某班級中所有學生信息及查詢某學生所有課程的成績信息;read()函數(shù)用于將文件中的數(shù)據(jù)讀取到內存中;save()函數(shù)用于將內存中的信息存入文件內;主函數(shù)main()用于調用這些函數(shù)

7、。 2.2系統(tǒng)功能模塊劃分與設計:系統(tǒng)定義了Class類、Student類、Course類、Score類這四個類,定義了add()、modify()、del()、read()及save()等函數(shù)來實現(xiàn)系統(tǒng)所需功能。媒體庫管理系統(tǒng)2.3 系統(tǒng)功能模塊圖: 圖畫信息管理視頻信息管理圖書信息管理圖書信息讀取圖書信息添加圖書信息修改圖書信息刪除圖書信息保存圖畫信息修改視頻信息讀取視頻信息讀取視頻信息讀取視頻信息讀取視頻信息讀取圖畫信息保存圖畫信息刪除圖畫信息添加圖畫信息讀取 2.4 類的設計(1)Base類(抽象類)的設計:Basevirtual void read()=0;virtual void

8、add()=0; virtual void modify(int)=0;virtual void del(int)=0;virtual void save()=0;char number20; /編號char title11; /標題char writer8; /作者char grade 20; /評級圖 3.1 Base類(2)圖書類的設計:Bookint ISBNno; /ISBN號char press9; /出版社int page; /頁數(shù)void read();void add(); void modify(int);void del(int);void save(); 圖 3.2圖書

9、類(3)視頻類的設計:Videochar name; /出品人姓名char time; /出品年份int duration; /視頻時長void read();void add();void modify(int);void del(int);void save(); 圖 3.3視頻類(4)圖畫類的設計:Paintingchar nationality20; /國籍char size20; /作品大小 void read();void add(); void modify(int);void del(int);void save(); 圖 3.4 圖畫類3. 詳細設計及實現(xiàn)3.1 Base類(

10、抽象類)的實現(xiàn)class Basepublic: char number20; /編號 char title11; /標題 char writer8; /作者 char grade 20; /評級virtual void read()=0;virtual void add()=0;virtual void modify(int)=0;virtual void del(int)=0;virtual void save()=0;3.2 圖書類的實現(xiàn)Book.hclass Book:public Basepublic:char number20; /編號 char title11; /標題 char

11、 writer8; /作者 char grade 20; /評級int ISBNno; /ISBN號 char press9; /出版社int page; /頁數(shù) void read();void add(); void modify(int);void del(int);void save();Book.cppvoid Book:read() fstream bookfile("圖書類信息.dat",ios:in|ios:out); bookfile>>b1count_Book.number>>b1count_Book.title>>b

12、1count_Book.writer>>b1count_Book.grade>>b1count_Book.ISBNno>>b1count_Book.press>>b1count_Book.page; while(!bookfile.eof() count_Book+;bookfile>>b1count_Book.number>>b1count_Book.title>>b1count_Book.writer>>b1count_Book.grade>>b1count_Book.ISBNno&

13、gt;>b1count_Book.press>>b1count_Book.page;bookfile.close();void Book:add() /存入對象數(shù)組中strcpy(b1count_Book.number,number);strcpy(b1count_Book.title,title);strcpy(b1count_Book.writer,writer);strcpy(b1count_Book.grade,grade);b1count_Book.ISBNno=ISBNno;strcpy(b1count_Book.press,press);b1count_Book

14、.page=page; count_Book+; void Book:modify(int index)strcpy(b1index-1.number,number);strcpy(b1index-1.title,title);strcpy(b1index-1.writer,writer);strcpy(b1index-1.grade,grade);b1index-1.ISBNno=ISBNno;strcpy(b1index-1.press,press);b1index-1.page=page;void Book:del(int index) /前移其后記錄for(int i=index;i&

15、lt;=count_Book-1;i+)strcpy(b1i-1.number,b1i.number);strcpy(b1i-1.title,b1i.title);strcpy(b1i-1.writer,b1i.writer);strcpy(b1i-1.grade,b1i.grade);b1i-1.ISBNno=b1i.ISBNno;strcpy(b1i-1.press,b1i.press);b1i-1.page=b1i.page;count_Book-; void Book:save() ofstream bookfile; bookfile.open("圖書類信息.dat&quo

16、t;);for(int i=0;i<=count_Book-1;i+)bookfile<<b1i.number<<" "<<b1i.title<<" "<<b1i.writer<<" "<<b1i.grade<<b1i.ISBNno<<" "<<b1i.press<<" "<<b1i.page<<endl; bookfile.close

17、(); 3.3 視頻類的實現(xiàn)Video.hclass Video:public Basepublic:char number20; /編號 char title11; /標題 char writer8; /作者 char grade 20; /評級 char name; /出品人姓名 char time; /出品年份int duration; /視頻時長 void read();void add(); void modify(int);void del(int);void save();Video.cppvoid Video:read() fstream videofile("班級信

18、息.dat",ios:in|ios:out); videofile>>v1count_Video.number>>v1count_Video.title>>v1count_Video.writer>>v1count_Video.grade>>v1count_V>>v1count_Video.time>>v1count_Video.duration; while(!videofile.eof() count_Video+;videofile>>v1count_Video.n

19、umber>>v1count_Video.title>>v1count_Video.writer>>v1count_Video.grade>>v1count_V>>v1count_Video.time>>v1count_Video.duration; videofile.close();void Video:add() /存入對象數(shù)組中strcpy(v1count_Video.number,number);strcpy(v1count_Video.title,title);strcpy(v1count_V

20、ideo.writer,writer);strcpy(v1count_Video.grade,grade);strcpy(v1count_V,name);strcpy(v1count_Video.time,time);v1count_Video.duration=duration; count_Video+; void Video:modify(int index) strcpy(v1index-1.number,number);strcpy(v1index-1.title,title);strcpy(v1index-1.writer,writer);strcpy(v1ind

21、ex-1.grade,grade); strcpy(,name);strcpy(v1index-1.time,time); v1index-1.duration=duration; void Video:del(int index) /前移其后記錄for(int i=index;i<=count_Video-1;i+)strcpy(v1i-1.number,v1i.number);strcpy(v1i-1.title,v1i.title);strcpy(v1i-1.writer,v1i.writer);strcpy(v1i-1.grade,v1i.grade)

22、;strcpy(,);strcpy(v1i-1.time,v1i.time); v1i-1.duration=v1i.duration;count_Video-; void Video:save() ofstream videofile; videofile.open("班級信息.dat");for(int i=0;i<=count_Video-1;i+) videofile<<c1i.classID<<" "<<c1i.stuNum<<endl; videofil

23、e.close(); 3.4圖畫類的實現(xiàn)Painting.hclass Painting:public Basepublic:char number20; /編號 char title11; /標題 char writer8; /作者 char grade 20; /評級 char nationality20; /出品國籍 char size20; /作品大小 void read();void add(); void modify(int);void del(int);void save();Painting.cppvoid Painting:read() fstream paitingfil

24、e("圖畫類信息.dat",ios:in|ios:out); paintingfile>>p1count_Painting.number>>p1count_Painting.title>>p1count_Painting.writer>>p1count_Painting.grade>>p1count_Painting.nationality>>p1count_Painting.size; while(!paintingfile.eof() count_Painting+;paintingfile>

25、>p1count_Painting.number>>p1count_Painting.title>>p1count_Painting.writer>>p1count_Painting.grade>>p1count_Painting.nationality>>p1count_Painting.size; paintingfile.close();void Painting:add() /存入對象數(shù)組中strcpy(p1count_Painting.number,number);strcpy(p1count_Painting.tit

26、le,title);strcpy(p1count_Painting.writer,writer);strcpy(p1count_Painting.grade,grade);strcpy(p1count_Painting.nationality,nationality);strcpy(p1count_Painting.size,size); count_Painting+; void Painting:modify(int index) strcpy(p1index-1.number,number);strcpy(p1index-1.title,title);strcpy(p1index-1.w

27、riter,writer);strcpy(p1index-1.grade,grade); strcpy(p1index-1.nationality,nationality);strcpy(p1index-1.size,size);void Painting:del(int index) /前移其后記錄for(int i=index;i<=count_Class-1;i+)strcpy(p1i-1.number,p1i.number);strcpy(p1i-1.title,p1i.title);strcpy(p1i-1.writer,p1i.writer);strcpy(p1i-1.gra

28、de,p1i.grade);strcpy(p1i-1.nationality,p1i.nationality);strcpy(p1i-1.size,p1i.size);count_Painting-; void Painting:save() ofstream Paintingfile; Paintingfile.open("班級信息.dat");for(int i=0;i<=count_Painting-1;i+) Paintingfile<<p1i.number<<" "<<p1i.title<<

29、" "<<p1i.writer<<" "<<p1i.grade<<p1i.nationality<<" "<<p1i.size<<endl; Paintingfile.close(); 3.5main.cpp#include <iostream.h>#include <fstream.h>#include <string.h>#include <stdlib.h>#include "Base.h

30、"#include "Book.h"#include "Painting.h"#include "Video.h"const int MAXBOOK=10;const int MAXPAINTING=200;const int MAXVIDEO=10;Book b1MAXBOOK;Painting p1MAXPAINTING;Video c2MAXVIDEO;int count_Book=0;int count_Painting=0;int count_Video=0;Base *p=NULL;char out;/圖書類管理

31、子菜單void book_manage() int choice,i=0; bool quit=false; while(1) system("cls"); cout<<"*圖書類管理子菜單*"<<endl; cout<<" 1.添加圖書信息"<<endl; cout<<" 2.修改圖書信息"<<endl; cout<<" 3.刪除圖書信息"<<endl; cout<<" 0.退

32、出"<<endl; cout<<"*"<<endl; cout<<"請輸入所要操作的編號:" cin>>choice; switch(choice) case 1: Book b2;p=&b2; cout<<"請輸入編號、標題、作者、評級、ISBN號、出版社和頁數(shù):n" cin>>>b2.number>>b2.title>>b2.writer>>b2.grade>>b2.ISBNn

33、o>> b2.press>>b2.page>>endl; cout<<"是否保存圖書信息?(y/n)n" cin>>out; if(out='y') p->add(); p->save(); break; case 2: Book b3;p=&b3; int index; for(int i=0;i<count_Book;i+) cout<<i+1<<"."<<b1i.number<<" &quo

34、t;<<b1i.title<<" "<<b1i.writer<<b1i.grade<<" "<<b1i.ISBNno<<" "<<b1i.press<<" "<<<<b1i.page<<endl; cout<<"請選擇圖書信息編號:n" cin>>index; cout<<"請輸入要修改的標題、作者、評級、I

35、SBN號、出版社和頁數(shù): " cin>>b3.title>>b3.writer>>b3.grade>>b3.ISBNno>>b3.press>>b3.page; cout<<"是否保存班級信息?(y/n)n" cin>>out; if(out='y') p->modify(index); p->save(); break; case 3:Class b4;p=&b4; int index; for(int i=0;i<count

36、_Book;i+) cout<<i+1<<"."<<b1i.number<<" "<<b1i.title<<" "<<b1i.writer<<b1i.grade<<" "<<b1i.ISBNno<<" "<<b1i.press<<" "<<b1i.page<<endl; cout<<&q

37、uot;請選擇要刪除的圖書編號:n" cin>>index;cout<<"是否保存圖書信息?(y/n)n" cin>>out; if(out='y') p->del(index); p->save(); break;case 0:quit=true;break; default:cout<<"請輸入03之間的數(shù)字!"<<endl; break; if(quit=true) break; system("cls"); return;/視頻類

38、管理子菜單void video_manage() int choice; bool quit=false; while(1) system("cls"); cout<<"*視頻類管理子菜單*"<<endl; cout<<" 1.添加視頻信息"<<endl; cout<<" 2.修改視頻信息"<<endl; cout<<" 3.刪除視頻信息"<<endl; cout<<" 0.退出

39、"<<endl; cout<<"*"<<endl; cout<<"請輸入所要操作的編號:" cin>>choice; switch(choice) case 1: Video v2;p=&v2; cout<<"請輸入編號、標題、作者、評級、出品人的姓名、出品年份和視頻時長:n" cin>>>v2.number>>v2.title>>v2.writer>>v2.grade>>v2.n

40、ame>>v2.time>>v2.duration>>endl; cout<<"是否保存視頻信息?(y/n)n" cin>>out; if(out='y')p->add(); p->save(); break; case 2: Video v3;p=&v3; int index; for(int i=0;i<count_Video;i+) cout<<i+1<<"."<<v3i.number<<"

41、 "<<v3i.title<<" "<<v3i.writer<<v3i.grade<<" "<<<<" "<<v3i.time<<" "<<<<v3i.duration<<endl; cout<<"請選擇要修改的學生信息序號:n" cin>>index; cout<<"請輸入要修改編

42、號、標題、作者、評級、出品人的姓名、出品年份 和視頻時長:n" cin>>s4.stuID>>>>s4.sex>>s4.major>>s4.college>>s4.c.classID; cout<<"是否保存視頻信息?(y/n)n" cin>>out; if(out='y')p->modify(index); p->save(); break; case 3: Video v4;p=&v4; int index; for

43、(int i=0;i<count_Video;i+) cout<<i+1<<"."<<v4i.number<<" "<<v4i.title<<" "<<v4i.writer<<v4i.grade<<" "<<<<" "<<v4i.time<<" "<<v4i.duration<<

44、;endl; cout<<"請選擇要刪除的視頻信息序號:n" cin>>index;cout<<"是否保存視頻信息?(y/n)n" cin>>out; if(out='y') p->del(index); p->save();break; case 0:quit=true;break; default:cout<<"請輸入03之間的數(shù)字!"<<endl;break; if(quit=true) break; system("c

45、ls"); return;/圖畫類管理子菜單void painting_manage() int choice; bool quit=false; while(1) system("cls"); cout<<"*圖畫類管理子菜單*"<<endl; cout<<" 1.添加圖畫信息"<<endl; cout<<" 2.修改圖畫信息"<<endl; cout<<" 3.刪除圖畫信息"<<endl

46、; cout<<" 0.退出"<<endl; cout<<"*"<<endl; cout<<"請輸入所要操作的編號:" cin>>choice; switch(choice) case 1: Painting p2;p=&p2; cout<<"請輸入編號、標題、作者、評級、國籍和大?。簄" cin>>>p2.number>>p2.title>>p2.writer>>p2.

47、grade>>p2.nationality>>p2.size>>endl; cout<<"是否保存圖畫信息?(y/n)n" cin>>out; if(out='y')p->add(); p->save(); break; case 2: Painting p3;p=&p3; int index; for(int i=0;i<count_Painting;i+) cout<<i+1<<"."<<p1i.number<

48、;<" "<<p1i.title<<" "<<p1i.writer<<" "<<p1i.grade<<p1i.nationality<<" "<<p1i.size<<endl; cout<<"請選擇要修改的圖畫信息序號:n" cin>>index; cout<<"請輸入要修改的標題、作者、評級、國籍和大?。?quot; cin>&g

49、t;>p3.number>>p3.title>>p3.writer>>p3.grade>>p3.nationality>>p3.size>>endl; cout<<"是否保存圖畫信息?(y/n)n" cin>>out; if(out='y')p->modify(index); p->save(); break; case 3: Painting p4;p=&p4;int index; for(int i=0;i<count_Pain

50、ting;i+) cout<<i+1<<"."<<p1i.number<<" "<<p1i.title<<" "<<p1i.writer<<" “<<p1i.grade<<p1i.nationality<<" "<<p1i.size<<endl; cout<<"請選擇要刪除的圖畫信息編號:n" cin>>in

51、dex; cout<<"是否保存圖畫信息?(y/n)n" cin>>out; if(out='y') p->del(index); p->save(); break; case 0:quit=true;break; default:cout<<"請輸入03之間的數(shù)字!"<<endl;break; if(quit=true) break; system("cls"); return;void main() /將各個文件中的數(shù)據(jù)依次讀入內存 Book b; b.r

52、ead(); video v; v.read(); painting p; p.read(); int choice=1; /顯示主菜單 while(1) cout<<"*主菜單*"<<endl; cout<<" 1.圖書類信息管理"<<endl; cout<<" 2.視頻類信息管理"<<endl; cout<<" 3.圖畫類信息管理"<<endl; cout<<" 0.退出"<&l

53、t;endl; cout<<"*"<<endl; cout<<"請輸入所要操作的編號:" cin>>choice; switch(choice) case 1: book_manage();break; case 2: video_manage();break; case 3: painting_manage();break; case 0: cout<<"謝謝您的使用!"<<endl; return;break; default:cout<<&quo

54、t;請輸入03之間的數(shù)字!"<<endl;break; 4. 系統(tǒng)調試4.1 在調試過程中,出現(xiàn)了下面一些錯誤:略4.2 具體調試過程:略5. 結論程序總共設計了四個類,滿足了課題對類的要求,在設計的過程中,建立了較為清晰的類層次,也利用了面向對象的方法以及C+的編程思想來完成系統(tǒng)的設計,做到了用文件存儲圖書館中資料信息、從文件中添加物品、查詢物品、顯示物品、修改物品等要求。而且界面簡潔,容易操作。但是程序太長,不夠簡練,導致出現(xiàn)錯誤很難發(fā)現(xiàn)和修改。6. 心得體會“課程設計是培養(yǎng)學生綜合運用所學知識、發(fā)現(xiàn)、提出、分析和解決實際問 題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程?!?在這次課程設計的過程中,我深深地體會到了理論與實踐結合的過程,當實踐成功時的成就感,從整個過程中我受益匪淺。 從確定了題目,一直到完成整個大作業(yè),在整整倆周的日子里,我學到很多的東西。不僅可以鞏固了以前所學過的知識,并且發(fā)掘了很多在已有的書本上所沒有的知識。在設計的過程中遇到問題很平常,從沒見過的,沒有任何頭緒解決的,

溫馨提示

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

評論

0/150

提交評論