1樓:匿名使用者
一 程式設計說明書
【設計題目】 圖書館借閱管理
【問題描述】圖書館,適合用c++物件導向的功能來描述。圖書館管理系統分為借書、還書、圖書管理和讀者服務等四個部分。設計一個讀者類reader,記錄每個讀者基本資訊;讀者庫類rdatabase,記錄所有讀者資訊;圖書類book, 記錄每本書的基本資訊;圖書庫類bdatabase, 記錄所有圖書資訊。
【基本要求】
1讀者庫類rdatabase中,其建構函式中,將read.txt檔案中所有讀入讀者記錄rede中。處理完畢,在解構函式中將read中的所有未刪記錄寫入到read.txt中。
2圖書庫類bdatabase中,其建構函式中,將book.txt檔案中所有讀入圖書記錄book中。處理完畢,在解構函式中將book中的所有未刪記錄寫入到book.txt中。
3 利用建構函式完成讀者和圖書資料初始化,完成記憶體分配。程式結束前,解構函式完成所申請的堆記憶體空間。
4 編寫主函式,對所編寫的矩陣類進行全面測試。要求使用者介面採用選單方式。測試中需要讀者和圖書資料通過i/o流從磁碟檔案讀入,同時顯示在螢幕上。
得到的資料通過i/o流寫入磁碟檔案儲存,同時顯示在螢幕上。
5 源程式中要有充分的註釋,報告中要有詳細的流程圖和文字材料。
【類的設計】
該程式包含了四個類,如下:
1.reader類,有讀者的基本管理功能,具有以下私有資料:
int tag;//刪除標記 1:已刪;0:未刪
int no;//讀者編號
char name[10];//讀者姓名
int borbook[maxbor];//所借圖書
2.讀者庫類rdatabase, 具有以下私有資料:
int top;//讀者記錄指標
reader read[maxr];//讀者記錄
3.圖書庫類book,有一本圖書的基本功能,有以下私有資料:
int tag;//刪除標記 1:已刪;0:未刪
int no;//圖書編號
char name[20];//書名
int onshelf;//是否在架 1在架 0已借
4.圖書庫類bdatabase,有以下私有資料:
int top;//圖書記錄指標
book book[maxb];//圖書記錄
【特殊函式的設計說明】
建構函式
1.reader類中建構函式reader(),初始化函式;
2.讀者庫類rdatabase中,其建構函式rdatabase(),將read.txt檔案中所有讀入讀者記錄rede中。
3.book類中建構函式book(),初始化函式;
4.圖書庫類bdatabase中,其建構函式中,將book.txt檔案中所有讀入圖書記錄book中。
拷貝建構函式
reader類中的拷貝建構函式將getname()的返回值讀者姓名拷貝到setname()中,book類中的拷貝建構函式將getname()函式的返回值圖書名拷貝到圖書名設定函式setname()中。
解構函式
1.讀者庫類rdatabase中,其解構函式~rdatabase(),將read中的所有未刪記錄寫入到read.txt中;
2.圖書庫類bdatabase中,其解構函式~bdatabase(),將book中的所有未刪記錄寫入到book.txt中。
運算子過載
過載了「=」,當比較讀者編號和圖書編號時,過載;過載位運算子「〈〈」和「〉〉」等。
【主要函式演算法流程圖】
【程式的使用方法】
1.進入操作頁面,按提示操作;
2.首先,新增圖書和讀者資訊,之後就可以對以存在的資訊進行操作;
3.操作當中,可以隨時增加,更改和刪除圖書或讀者資訊;
4.當選擇退出時,進行清屏。
二 程式上機除錯報告
【語法錯誤及其排除】
1.在敲程式時,有很多拼寫錯誤,例好多處把readdata()誤打readdate();結束的分號,在不同的輸入法狀態下輸入,這些小錯誤剛開始很難發現,不過有了經驗,就很容易了。
2.建立新的建構函式時,使用出現了錯誤。過載建構函式要注意函式的訪問許可權,結果就不會出現錯誤。
【演算法錯誤及其排除】
1.讀者類中借書操作函式中,採用迴圈語句時判斷讀者已借圖書量時for(int i=0;i
2.指標使用錯誤,指標b和r混淆,導致編譯錯誤得到「error c2660: 'retbook' :
function does not take 1 parameters」錯誤報告。
2樓:朱衛傑劉琳琳
這個東西,最好還是你自己來做,要別人幫你做,你還是不能得到提高。我是學物件導向程式設計的,不過你這個問題也很好解決。先建立好結構體,然後建立幾個實際的資料。
比如:book1,book2。其他的什麼查詢啦,狀態啦都可以用if語句搞定。
3樓:top_小伍
要別人做,你可要花錢的哦
c語言圖書管理系統程式
4樓:北寒南暖
^#include
#include
#include
#include
#include
struct book;
void search_book();
void borrow_book();
void return_book();
void add_book();
void delete_book();
void modify_book();
void scan_book();
int main()
if(c1==1)}}
if(c1==2)}}
}/*查詢圖書*/
void search_book()
}if(l==0)
else
printf("是否繼續查詢圖書 ? [是(y)/否(n)] ? \n\n");
dowhile(x!='n'&&x!='y');
if(x=='n')
break;
}fclose(fp);
system("cls");
}//新增
void add_book()
}}while(l);
fwrite(&n,sizeof(n),1,fp);
printf("\n");
printf("是否繼續輸入新的圖書資訊[y/n] \n\n");
dowhile(x!='n'&&x!='y');
}while(x=='y');
fclose(fp);
system("cls");
}//刪除圖書
void delete_book()
}if(l==0)
else
while(z!='n'&&z!='y');
if(z=='n')
break;
else
fclose(fp);
fclose(fp1);
fp=fopen("f:\\課程設計\\圖書管理系統.txt","wb");
fp1=fopen("f:\\課程設計\\圖書管理系統new.txt","rb");
while(1)
fclose(fp);
fclose(fp1);}}
printf("\n");
printf("是否繼續刪除圖書資訊? [是(y)/否(n)] \n");
dowhile(x!='n'&&x!='y');
if(x=='n')
break;
}fclose(fp);
system("cls");
}//修改圖書資訊
void modify_book()
}if(l==0)
else
printf("\n");
printf(" 是否繼續修改使用者資訊[y/n]? \n\n");
dowhile(x!='n'&&x!='y');
if(x=='n')
break;
}fclose(fp);
system("cls");
}//借書
void borrow_book()
}if(l==0)
else
printf("\n");
printf(" 是否繼續借書? [是(y)/否(n)] \n\n");
dowhile(x!='n'&&x!='y');
if(x=='n')
break;
}fclose(fp);
system("cls");
}//還書
void return_book()
}if(l==0)
else
printf("\n");
printf("是否繼續還書? [是(y)/否(n)] \n");
dowhile(x!='n'&&x!='y');
if(x=='n')
break;
}fclose(fp);
system("cls");
}//瀏覽
void scan_book()
}printf("\n");
printf("回到主選單請按回車");
dowhile(x!='\r');
if(x=='\r')}
c語言課程設計:圖書管理系統設計的基本思路是什麼?
5樓:珏代風華
圖書管理系統主要要求可以錄入書籍,新增書目,查詢書本資訊,刪除或修改資訊,有的還要求顯示是否被借閱等。
一般採用結構體陣列,連結串列,檔案操作和自定義函式。主要是需要對基礎知識掌握牢固。
先定義結構體,然後對結構體的成員進行定義,選擇陣列儲存書本各種資訊。錄入資訊可以用for和do while迴圈等來做。
存放資訊需要檔案操作函式,比如fopen,fwrite等。
刪除和新增可以刪除節點或者增加節點。
查詢之類的可以用字串操作的各種函式實現。
#include
#include
#include
#include
#define books "f:\\books.txt"
#define booksbak "f:\\booksbak.txt"
struct bookinfo
;struct book
;struct book *searchbook ( struct book *listptr,char isbn)
void mainsearchbook(struct book *firstptr)
else
printf("sorry,not found!!!\n");
}int addbook(struct book *listptr,struct bookinfo note)
void mainadd(struct book *listptr,file *fp)
else
printf("新增圖書失敗!!!\n");
}int removebook(struct book *listptr,char isbn)
else
listptr=listptr->next;
}return -1;
}void mainremove(struct book *listptr,file *fp)
/* 刪除書籍函式,通過isbn刪除連結串列節點,同時刪除檔案中對應資訊 */
/* 刪除檔案中一行,用的是笨方法,把需要的資訊寫到新檔案,刪除舊檔案,重新命名..*/
}fclose(fp);
fclose(fpbak);
if (remove(books)) //刪除失敗返回非0
else
if (rename(booksbak,books)) //重新命名失敗返回非0值
printf("刪除成功!!!\n");
}else
printf("查無此書!!!");
}int choice(void)
int addentry(file *fp,struct book *firstptr)
/* 主要用來載入檔案中存放的圖書資訊 */
return 0;
}int main(int argc,char *argv)
system("pause");
}return 0;}
c小型圖書管理系統,用C 編寫一個圖書管理系統
大哥你真帥。100分買個圖書館管理系統。雖然原理簡單,但是你這比請苦工開得還少啊。大哥你太有才了,現在做個系統只要50知道幣了。你要我們以後這些程式設計師都吃些什麼呀。你什麼時候要,我幫你做個看看.sql資料庫可以不?winform行不?加我msn wanliang2000 163.com 我有做過...
C語言程式設計,c語言程式設計。
判斷 字串 s是否和 相等 strcmp s,表示s字元陣列是否是等於號加上字串結束符,其實單單比較是否為等於號 改為 c語言程式設計 int mian 應該是int main 你要輸入一個數才行,建議你加一個提示輸入的語句 c語言程式設計。else 非字母 switch read buf brea...
c語言問題程式設計,C語言程式設計問題
程式修改輸出加個 元 後面執行結果可看到 編譯執行結果 如果輸入50 如果輸入90 如果輸入100 如果輸入110 include int main if x 50 y 80 x printf f n y return 0 c語言程式設計問題 解題思bai路 完全跟百錢買百雞的問題是du一樣的 設大...