《圖書(shū)管理系統(tǒng)》word版
《《圖書(shū)管理系統(tǒng)》word版》由會(huì)員分享,可在線閱讀,更多相關(guān)《《圖書(shū)管理系統(tǒng)》word版(14頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1、問(wèn)題描述: 對(duì)一個(gè)有N本書(shū)籍的圖書(shū)館進(jìn)行計(jì)算機(jī)管理,通過(guò)該系統(tǒng)實(shí)現(xiàn)對(duì)該圖書(shū)圖的基本功能的管理,包括:增加新書(shū)、借書(shū)、還書(shū)、查詢(xún)書(shū)籍等操作。 2、功能要求: 1)本系統(tǒng)采用一個(gè)包含N個(gè)數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個(gè)數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:書(shū)號(hào)、書(shū)名、作者姓名、借書(shū)證號(hào)、借還標(biāo)志、借還書(shū)日期等。 2)本系統(tǒng)顯示這樣的菜單: 請(qǐng)選擇系統(tǒng)功能項(xiàng): a. 增加新書(shū) b. 書(shū)籍查詢(xún) (1) 按書(shū)號(hào)查詢(xún) (2) 按書(shū)名查詢(xún) (3) 按作者查詢(xún) c. 借還書(shū) (1)借書(shū) (2)還書(shū) d. 退出系統(tǒng) 3)執(zhí)行一個(gè)具體的功能之后,程序?qū)⒅匦嘛@示菜單。也可以通過(guò)判斷“借書(shū)日期”的內(nèi)容是
2、否為’\0’來(lái)確定該書(shū)是否借出。 3、算法提示: 1、 數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類(lèi)型數(shù)組 2、 數(shù)據(jù)庫(kù)結(jié)構(gòu):該系統(tǒng)的基本數(shù)據(jù)庫(kù)如下: 書(shū)號(hào) 書(shū)名 作者姓名 借書(shū)證號(hào) 借書(shū)日期 Char char char Char char 4、測(cè)試數(shù)據(jù): 圖書(shū)數(shù)N=5 高級(jí)語(yǔ)言程序設(shè)計(jì)(2)課程設(shè)計(jì) ??? 一 程序設(shè)計(jì)說(shuō)明書(shū) 【設(shè)計(jì)題目】 圖書(shū)館借閱管理 【問(wèn)題描述】圖書(shū)館,適合用C++面向?qū)ο蟮墓δ軄?lái)描述。圖書(shū)館管理系統(tǒng)分為借書(shū)、還書(shū)、圖書(shū)管理和讀者服務(wù)等四個(gè)部分。設(shè)計(jì)一個(gè)讀者類(lèi)Reader,記錄每個(gè)讀者基本信息;讀者庫(kù)類(lèi)Rdatabase,記錄所有讀者信息;圖書(shū)類(lèi)Book
3、, 記錄每本書(shū)的基本信息;圖書(shū)庫(kù)類(lèi)Bdatabase, 記錄所有圖書(shū)信息。 【基本要求】 1讀者庫(kù)類(lèi)RDatabase中,其構(gòu)造函數(shù)中,將read.txt文件中所有讀入讀者記錄rede[]中。處理完畢,在析構(gòu)函數(shù)中將read[]中的所有未刪記錄寫(xiě)入到read.txt中。 2圖書(shū)庫(kù)類(lèi)BDatabase中,其構(gòu)造函數(shù)中,將book.txt文件中所有讀入圖書(shū)記錄book[]中。處理完畢,在析構(gòu)函數(shù)中將book[]中的所有未刪記錄寫(xiě)入到book.txt中。 3 利用構(gòu)造函數(shù)完成讀者和圖書(shū)數(shù)據(jù)初始化,完成內(nèi)存分配。程序結(jié)束前,析構(gòu)函數(shù)完成所申請(qǐng)的堆內(nèi)存空間。 4 編寫(xiě)主函數(shù),對(duì)所編寫(xiě)的矩陣類(lèi)進(jìn)
4、行全面測(cè)試。要求用戶界面采用菜單方式。測(cè)試中需要讀者和圖書(shū)數(shù)據(jù)通過(guò)I/O流從磁盤(pán)文件讀入,同時(shí)顯示在屏幕上。得到的數(shù)據(jù)通過(guò)I/O流寫(xiě)入磁盤(pán)文件保存,同時(shí)顯示在屏幕上。 5 源程序中要有充分的注釋?zhuān)瑘?bào)告中要有詳細(xì)的流程圖和文字材料。 【類(lèi)的設(shè)計(jì)】 該程序包含了四個(gè)類(lèi),如下: 1. Reader類(lèi),有讀者的基本管理功能,具有以下私有數(shù)據(jù): int tag;//刪除標(biāo)記 1:已刪;0:未刪 int no;//讀者編號(hào) char name[10];//讀者姓名 int borbook[Maxbor];//所借圖書(shū) 2. 讀者庫(kù)類(lèi)Rdatabase, 具有以下私有數(shù)據(jù): int to
5、p;//讀者記錄指針 Reader read[Maxr];//讀者記錄 3. 圖書(shū)庫(kù)類(lèi)Book,有一本圖書(shū)的基本功能,有以下私有數(shù)據(jù): int tag;//刪除標(biāo)記 1:已刪;0:未刪 int no;//圖書(shū)編號(hào) char name[20];//書(shū)名 int onshelf;//是否在架 1在架 0已借 4. 圖書(shū)庫(kù)類(lèi)BDatabase,有以下私有數(shù)據(jù): int top;//圖書(shū)記錄指針 Book book[Maxb];//圖書(shū)記錄 【特殊函數(shù)的設(shè)計(jì)說(shuō)明】 構(gòu)造函數(shù) 1. Reader類(lèi)中構(gòu)造函數(shù)Reader(),初始化函數(shù); 2. 讀者庫(kù)類(lèi)RDatabase中,其構(gòu)
6、造函數(shù)Rdatabase(),將read.txt文件中所有讀入讀者記錄rede[]中。 3. Book類(lèi)中構(gòu)造函數(shù)Book(),初始化函數(shù); 4. 圖書(shū)庫(kù)類(lèi)BDatabase中,其構(gòu)造函數(shù)中,將book.txt文件中所有讀入圖書(shū)記錄book[]中。 ? 拷貝構(gòu)造函數(shù) Reader類(lèi)中的拷貝構(gòu)造函數(shù)將getname()的返回值讀者姓名拷貝到setname()中,Book類(lèi)中的拷貝構(gòu)造函數(shù)將getname()函數(shù)的返回值圖書(shū)名拷貝到圖書(shū)名設(shè)置函數(shù)setname()中。 ? 析構(gòu)函數(shù) 1. 讀者庫(kù)類(lèi)RDatabase中,其析構(gòu)函數(shù)~Rdatabase(),將read[]中的所有未刪記
7、錄寫(xiě)入到read.txt中; 2. 圖書(shū)庫(kù)類(lèi)BDatabase中,其析構(gòu)函數(shù)~Bdatabase(),將book[]中的所有未刪記錄寫(xiě)入到book.txt中。 ? 運(yùn)算符重載 重載了“=”,當(dāng)比較讀者編號(hào)和圖書(shū)編號(hào)時(shí),重載;重載位運(yùn)算符“〈〈”和“〉〉”等。 ? 【主要函數(shù)算法流程圖】 ? 【程序的使用方法】 1. 進(jìn)入操作頁(yè)面,按提示操作; 2. 首先,新增圖書(shū)和讀者信息,之后就可以對(duì)以存在的信息進(jìn)行操作; 3. 操作當(dāng)中,可以隨時(shí)增加,更改和刪除圖書(shū)或讀者信息; 4. 當(dāng)選擇退出時(shí),進(jìn)行清屏。 ? 二 程序上機(jī)調(diào)試報(bào)告 【語(yǔ)法錯(cuò)誤及其排除】 1.在敲程序時(shí),
8、有很多拼寫(xiě)錯(cuò)誤,例好多處把Readdata()誤打Readdate();結(jié)束的分號(hào),在不同的輸入法狀態(tài)下輸入,這些小錯(cuò)誤剛開(kāi)始很難發(fā)現(xiàn),不過(guò)有了經(jīng)驗(yàn),就很容易了。
2.創(chuàng)建新的構(gòu)造函數(shù)時(shí),使用出現(xiàn)了錯(cuò)誤。重載構(gòu)造函數(shù)要注意函數(shù)的訪問(wèn)權(quán)限,結(jié)果就不會(huì)出現(xiàn)錯(cuò)誤。
【算法錯(cuò)誤及其排除】
1. 讀者類(lèi)中借書(shū)操作函數(shù)中,采用循環(huán)語(yǔ)句時(shí)判斷讀者已借圖書(shū)量時(shí)for(int i=0;i 9、 does not take 1 parameters”錯(cuò)誤報(bào)告。
三 程序測(cè)試結(jié)果
【收獲及體會(huì)】
除了課堂外,課程設(shè)計(jì)是最能學(xué)到東西的,最考驗(yàn)人的。在做課程設(shè)計(jì)這段時(shí)間,時(shí)刻都感覺(jué)自己有好多不懂,要學(xué)的太多了!經(jīng)過(guò)這次課程設(shè)計(jì),讓我對(duì)C++這門(mén)語(yǔ)言有了更深的認(rèn)識(shí),操作能力有了提高。要想得到敲的代碼運(yùn)行出來(lái)后的滿足感,需要耐心細(xì)心,毅力以及充沛的體力。只有經(jīng)過(guò)多次編輯,多次編譯,再多次運(yùn)行,才能編寫(xiě)出更好的程序,有時(shí)候需要多次的更正才達(dá)到所要的運(yùn)行結(jié)果。學(xué)習(xí)編程,需要多揣摩,實(shí)踐,實(shí)踐,再實(shí)踐,編程技能才能更上一層樓,此外還得多向高手請(qǐng)教!
【源程序代碼】
//********** 10、**********
//圖書(shū)館借閱管理
//班級(jí):
//學(xué)號(hào):
//姓名:
//********************
#include 11、讀者編號(hào)
char name[10];//讀者姓名
int borbook[Maxbor];//所借圖書(shū)
public :
Reader(){}//構(gòu)造函數(shù)
char *getname(){return name;}//獲取讀者姓名
int gettag(){return tag;}//獲取刪除標(biāo)記
int getno(){return no;}//獲取讀者編號(hào)
void setname(char na[])//設(shè)置讀者姓名
{
strcpy(name,na);
}
void delbook(){tag=1;}//設(shè)置刪除標(biāo)記
void addreader(int n 12、,char *na)//增加讀者
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i 13、okid)
{
borbook[i]=0;
return 1;
}
}
return 0;
}
void disp()//輸出讀者信息
{
cout< 14、函數(shù),將reader.txt讀到read[]中
{
Reader s;
top=-1;
fstream file("reader.txt",ios::in);
while(1)
{
file.read((char*)&s,sizeof(s));
if(!file)break;
top++;
read[top]=s;
}
file.close();
}
void clear()//刪除所有讀者信息
{
top=-1;
}
int addreader(int n,char *na)//添加讀者,檢查是否已存在
{
Reader *p=query(n);
i 15、f(p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;
}
Reader*query(int readerid)//按編號(hào)查找
{
for(int i=0;i<=top;i++)
if(read[i].getno()==readerid&&read[i].gettag==0)
return &read[i];
return NULL;
}
void disp()//刪除讀者所有信息
{
for(int i=0;i<=top;i++)
read[i].disp();
}
vo 16、id readerdata();//讀者庫(kù)維護(hù)
~RDatabase()//析構(gòu)函數(shù),將read[]寫(xiě)入reader.txt文件中
{
fstream file("reader.txt",ios::out);
for(int i=0;i<=top;i++)
if(read[i].gettag()==0)
file.write((char*)&read[i],sizeof(read[i]));
file.close();
}
};
void RDatabase::readerdata()
{
int choice=1;
char rname[20];
int read 17、erid;
Reader*r;
while(choice!=0)
{
cout<<"讀者服務(wù) 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出"< 18、==NULL)
{
cout<<"讀者不存在"< 19、id);
if(r==NULL)
{
cout<<"該讀者編號(hào)不存在"< 20、{return no;}//獲取圖書(shū)編號(hào)
int gettag(){return tag;}//獲取刪除標(biāo)記
void setname(char na[])//設(shè)置書(shū)名
{
strcpy(name,na);
}
void delbook(){tag=1;}//刪除圖書(shū)
void addbook(int n,char*na)//增加圖書(shū)
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
int borrowbook()//借書(shū)操作
{
if(onshelf==1)
{
onshelf=0;
return 1;
}
21、return 0;
}
void retbook()//還書(shū)操作
{
onshelf=1;
}
void disp()//輸出圖書(shū)
{
cout< 22、tream file("book.txt",ios::in);
while(1)
{
file.read((char*)&b,sizeof(b));
if(!file)break;
top++;
book[top]=b;
}
file.close();
}
void clear()//全刪
{
top=-1;
}
int addbook(int n,char*na)//增加圖書(shū)
{
Book*p=query(n);
if(p==NULL)
{
top++;
book[top].addbook(n,na);
return 1;
}
cout<<"新增 23、成功!"< 24、eam file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if(book[i].gettag()==0)
file.write((char*)&book[i],sizeof(book[i]));
file.close();
}
};
void BDatabase::bookdata()
{
int choice;
char bname[40];
int bookid;
Book *b;
while(choice!=0)
{
cout<<"圖書(shū)管理 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出"< 25、dl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"輸入圖書(shū)編號(hào):";
cin>>bookid;
cout<<"輸入圖書(shū)書(shū)名:";
cin>>bname;
addbook(bookid,bname);
break;
case 2:
cout<<"輸入圖書(shū)編號(hào):";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"該圖書(shū)不存在"< 26、
cout<<"更名成功!"< 27、:
disp();
break;
case 6:
clear();
break;
}
}
}
?
void main()
{
int choice=1,bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!=0)
{
cout<<" 1借書(shū)????? "< 28、 0離開(kāi)????? "< 29、0)
{
cout<<"該書(shū)已借"< 30、ak;
cout<<"還書(shū)成功!"< 31、新增 2更該 3刪除 4查找 5顯示 6全刪 0退出
0
1借書(shū)
2還書(shū)
3圖書(shū)管理
4讀者服務(wù)
0退出
4
讀者服務(wù) 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出
1
請(qǐng)輸入讀者編號(hào):001
讀入讀者姓名:周強(qiáng)
讀者服務(wù) 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出
0
1借書(shū)
2還書(shū)
3圖書(shū)管理
4讀者服務(wù)
0退出
1
借書(shū),請(qǐng)輸入讀者編號(hào):001
圖書(shū)編號(hào):1111
哈哈,借書(shū)成功! 1借書(shū)
2還書(shū)
3圖書(shū)管理
4讀者服務(wù)
0退出
2
還書(shū),請(qǐng)輸入讀者編號(hào):001
請(qǐng)輸入圖書(shū)編號(hào);1111
還書(shū)成功!
1借書(shū)
2還書(shū)
3圖書(shū)管理
4讀者服務(wù)
0退出
3
圖書(shū)管理 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出
2
輸入圖書(shū)編號(hào):2222
輸入新書(shū)名:金庸全集
更名成功!
Press any key to continue
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 火力發(fā)電廠各設(shè)備的主要作用大全
- 3.高壓電工考試判斷練習(xí)題含答案
- 企業(yè)電氣防爆知識(shí)
- 13 低壓電工電工作業(yè)模擬考試題庫(kù)試卷含答案
- 電氣設(shè)備維修的十項(xiàng)原則
- 2.電氣電纜與直流模擬考試復(fù)習(xí)題含答案
- 電氣節(jié)能措施總結(jié)
- 2.電氣電機(jī)(一)模擬考試復(fù)習(xí)題含答案
- 接地電阻測(cè)量原理與測(cè)量方法
- 3.高壓電工作業(yè)模擬考試題庫(kù)試卷含答案
- 礦山維修電工安全技術(shù)操作規(guī)程
- 電工基礎(chǔ)口訣總結(jié)
- 3.某電廠值長(zhǎng)面試題含答案解析
- 電工基礎(chǔ)知識(shí)順口溜
- 配電系統(tǒng)詳解