圖書借閱管理課程設計
㈠ 數據結構課程設計 圖書借閱管理系統 C語言版 順序存儲
圖書借閱管理要是明天給你還行
㈡ C語言課程設計 圖書借閱管理系統
首先要設計一個結構體存放借閱系統中包含的信息名,如書目,類型,數量等,然後設計主函數以制定系統的主界面或菜單界面,最後設計各種函數以實現你所設想的各種功能(函數名需要在編譯預處理階段設定,否則無法執行)。具體的例子我給不了,太長了,最少800多行呢!
㈢ 求人幫忙用C語言編寫課程設計 圖書借閱管理
給我個郵箱 發給你
㈣ 圖書借閱管理課程設計
圖書借閱管理系統具有以下功能:
圖書資料管理
圖書資料管理主要完成圖書資料的新增、修改和報廢,並生成圖書資料庫的功能。按采購員的要求,供書商提供需要的書籍。進行分類新增修改處理。並對已報廢圖書進行處理。
讀者資料管理
讀者資料管理主要完成讀者資料的新增、修改和撤消,並生成讀者資料庫。按讀者要求進行讀者資料的新增、修改和撤消。
借書操作
借書操作主要完成讀者的借書、續借及預訂處理,並生成讀者借閱庫。首先進行讀者資格的審核,符合要求後查閱書庫是否有書,如有則修改圖書資料庫,書庫取書書交讀者。書庫無書則進行預訂處理。用戶續借則修改還書日期。並將借書信息匯總後交統計員。
還書操作
還書操作主要完成讀者的還書及罰款處理,並修改讀者借閱庫。首先進行讀者資格的審核,符合要求後則修改圖書資料庫,讀者還書書還書庫。書籍逾期或遺失則進行罰款處理。並將還書信息匯總後交統計員。
查詢處理
查詢處理主要完成讀者對書是否逾期、書是否未借、書籍排行榜的查詢處理。並及時地把查詢結果反饋給讀者,並將查詢信息匯總給統計員。
系統維護
包括許可權管理、數據恢復和數據備份。數據恢復和數據備份是對數據的有效保護。許可權管理是對系統使用者規定相關的許可權,以免系統數據被非法訪問和使用。
(訪問時需要密碼,密碼錯誤要有提示重輸,登陸分為管理員登陸和用戶登陸兩項,用戶只能進行查詢操作,而管理員能進行所有操作)
#include <string.h>
#include <iostream.h>
class Book{ // 書籍基類
protected:
char Title[40]; // 書名
long Code; // 條碼
int Type; // 0表示書,1表示雜志
public:
Book();
Book(char *title,long code);
void SetCode(long code)
void SetTitle(char* tl)
void SetType(bool type)
int GetType()
long GetCode()
virtual void Show(); // 顯示書的信息
friend ostream& operator<<(ostream& , Book&); // 重載插入運算符
friend istream& operator>>(istream& is, Book&); // 重載提取運算符
Book *Next; // 為創建每個讀者所借書鏈表而定義指針
};
class Item :public Book{ //書的款目
// char Title[40]; // 書名
char Author[20]; // 著者名
char IndexCode[10]; // 分類號
// long Code; // 條碼
public:
Item();
Item(char *author,char *title,char *index,int code);
Item(Item &);
void SetAuthor(char*);
void SetIndexCode(char*);
virtual void Show(); // 顯示書的信息
friend ostream& operator<<(ostream& os, Item&); // 重載插入運算符
friend istream& operator>>(istream& is, Item&); // 重載提取運算符
public:
};
class Magazine:public Book { //雜志類
int Volume;
enum LANG Lang; // 枚舉變數,確定語言類別
public:
Magazine():Book()
Magazine(char *title,int vol,LANG lang,int code);
Magazine(Magazine&);
void SetVolume(int vol)
void SetLang(int lang)
virtual void Show(); // 顯示雜志的信息
friend ostream& operator<<(ostream& os, Magazine&); // 重載插入運算符
friend istream& operator>>(istream& is, Magazine&); // 重載提取運算符
};
class Reader{ // 讀者信息類
char Name[20]; // 姓名
char Position[20]; // 職務
int Age; // 年齡
long Code; // 借書證號
Book* items; // 所借書鏈表
public:
Reader();
Reader(char *name,char *posi,int age,int code);
// Reader(Reader&);
~Reader();
long GetCode()
void SetName(char*);
void SetPosition(char*);
void SetAge(int);
void SetCode(long);
void AddBook(Item); // 添加所借書
void AddBook(Magazine); // 添加所借雜志
void DelBook(Book it); // 還書後減少所借書
void ShowBooks(); // 顯示所借書
void Show(); // 顯示讀者信息
friend ostream& operator<<(ostream& os, Reader&); // 重載插入運算符
friend istream& operator>>(istream& is, Reader&); // 重載提取運算符
public:
int Counter; //計數器,統計所借書數目
};
class Manager{ // 管理員類
char Name[20]; // 姓名
int Age; // 年齡
int Code; // 工號
friend class Library; // 將圖書館類聲明為友元
public:
Manager(){}
Manager(char*,int,int);
long GetCode()
void Show();
friend ostream& operator<<(ostream& os, Manager&); // 重載插入運算符
friend istream& operator>>(istream& is, Manager&); // 重載提取運算符
};
class Loan { // 借閱信息類
int Type; // 0表示書,1表示雜志
Item item; // 借閱書
Magazine mag; // 借閱雜志
Reader reader; // 借閱者
Manager manager; // 借書操作員
int Code;
friend class Library; // 將圖書館類聲明為友元
public:
Loan()
Loan(Loan & l);
int GetCode()
void Show();
friend ostream& operator<<(ostream& os, Loan&); // 重載插入運算符
friend istream& operator>>(istream& is, Loan&); // 重載提取運算符
};
、、、、、、、、、、、、、、、、、、、、、、、
#include<iostream.h>
#include<string.h>
class Reader;
template<typename T> class DblList;
template<typename T> class DblNode{
public:
T Info;//數據域
DblNode<T> *llink,*rlink; //前驅(左鏈)、後繼(右鏈)指針
public:
DblNode(T data);//一般結點
DblNode();//頭結點
T GetInfo();
friend class DblList<T>;
friend class Library;
};
template<typename T>class DblList{
DblNode<T> *head,*current;
public:
DblList();
~DblList();
void Insert(const T& data);
DblNode<T>* Remove(DblNode<T>* p);
void Print();
int Length();//計算鏈表長度
DblNode<T> *Find(T data);//搜索數據與定值相同的結點
DblNode<T>* Find(int data);//按某個關鍵字查找
void MakeEmpty(); //清空鏈表
void ShowList(); //顯示鏈表各結點
friend istream& operator>>(istream&, DblList<typename T>&); // 重載輸入流運算符
friend ostream& operator<<(ostream& os, DblList<typename T>& dlist); // 重載輸出流運算符
friend class Library;
//其它操作
};
template<typename T> DblNode<T>::DblNode(){
llink=rlink=NULL;
}
template<typename T> DblNode<T>::DblNode(T data){
info=data;
llink=NULL;
rlink=NULL;
}
template<typename T> DblList<T>::DblList(){//建立表頭結點
head=new DblNode<T>();
head->rlink=head->llink=head;
current=NULL;
}
template<typename T> DblList<T>::~DblList(){
MakeEmpty();//清空鏈表
delete head;
}
template<typename T> void DblList<T>::MakeEmpty(){
DblNode<T> *tempP;
while(head->rlink!=head){
tempP=head->rlink;
head->rlink=tempP->rlink;//把頭結點後的第一個節點從鏈中脫離
tempP->rlink->llink=head;//處理左指針
delete tempP; //刪除(釋放)脫離下來的結點
}
current=NULL; //current指針恢復
}
template<typename T> void DblList<T>::Insert(const T & data){//新節點在鏈尾
current=new DblNode<T>;
current->Info=data;
current->rlink=head;//注意次序
current->llink=head->llink;
head->llink->rlink=current;
head->llink=current;//最後做
}
template<typename T> DblNode<T>* DblList<T>::Remove(DblNode<T>* p){ // 刪除結點
current=head->rlink;
while(current!=head&¤t!=p) current=current->rlink;
if(current==head) current=NULL;
else{//結點摘下
p->llink->rlink=p->rlink;
p->rlink->llink=p->llink;
p->rlink=p->llink=NULL;
}
return current;
}
template<typename T> DblNode<T>* DblList<T>::Find(T data){ // 按結點查找
current=head->rlink;
while(current!=head&¤t->Info!=data) current=current->rlink;
if(current==head) current=NULL;
return current;
}
template<typename T> DblNode<T>* DblList<T>::Find(int data){ // 按數據值查找結點
current=head->rlink;
int temp =current->Info.GetCode();
while(current!=head&&temp!=data){
current=current->rlink;
temp = current->Info.GetCode();
}
if(current==head) current=NULL;
return current;
}
template<typename T> void DblList<T>::Print(){ // 輸出鏈表
current=head->rlink;
while(current!=head){
cout<<current->Info<<'\t';
current=current->rlink;
}
cout<<endl;
}
template<typename T> int DblList<T>::Length(){ // 取得鏈表長度
int count=0;
current=head->rlink;
while(current!=head){
count++;
current=current->rlink;
}
return count;
}
template<typename T> void DblList<T>::ShowList(){ // 輸出鏈表各結點
int count=0;
current=head->rlink;
while(current!=head){
current->GetInfo().Show();
current=current->rlink;
}
return ;
}
template<typename T>
istream& operator>>(istream& is, DblList<typename T> &dlist){
int len;
T tt; // 定義局部變數讀入一個結點
is>>len;
for(int i= 0 ;i<len; i++){ // 循環讀入鏈表各結點
is>>tt;
dlist.Insert(tt);
}
return is;
}
template<typename T>
ostream& operator<<(ostream& os, DblList<typename T> &dlist){
DblNode<T> *tempP;
int len = dlist.Length();
os<<len<<' ';
tempP=dlist.head->rlink;
while(tempP!=dlist.head){ // 循環輸出鏈表各結點
os<<tempP->Info;
tempP = tempP->rlink;
}
return os;
}
#include "class.h"
#include "dblist.h"
#include <fstream.h>
class Library{ // 封裝圖書館流通業務的類
DblList<Item> item; // 在館圖書鏈表
DblList<Magazine> mag; // 在館雜志鏈表
DblList<Reader> reader; // 讀者鏈表
DblList<Loan> loan; // 借閱信息鏈表
DblList<Manager> manager; // 管理員信息鏈表
int itemNum; // 記錄在館圖書數目
int magNum; // 記錄在館雜志數目
int readerNum; // 記錄讀者數目
int loanNum; // 記錄借閱信息數目
int managerNum; // 記錄管理員數目
ofstream itemFileOut; // 文件流對象,保存圖書館書籍數據
ifstream itemFileIn; // 文件流對象,讀入圖書館書籍數據
ofstream magFileOut; // 文件流對象,保存圖書館雜志數據
ifstream magFileIn; // 文件流對象,讀入圖書館雜志數據
ofstream readerFileOut; // 文件流對象,保存圖書館讀者數據
ifstream readerFileIn; // 文件流對象,讀入圖書館讀者數據
ofstream loanFileOut; // 文件流對象,保存圖書館借閱信息數據
ifstream loanFileIn; // 文件流對象,讀入圖書館借閱信息
ofstream managerFileOut; // 文件流對象,保存圖書館管理員數據
ifstream managerFileIn; // 文件流對象,讀入圖書館管理員數據
public:
Library(); // 構造函數
~Library(); //析構函數
void Run(); // 圖書館類的運行函數
void CreateBibliotheca(); // 創建書目
void CreateReader(); // 創建讀者庫
void CreateManager(); // 創建管理員信息
int ShowMainMenu(); // 顯示主菜單函數
void Borrow(); // 借書操作
void Return(); // 還書操作
void Require(); // 查詢操作
void SaveInfo(); // 保存圖書館信息
void OpenInfo(); // 讀入圖書館信息
};
多給點分吧
另外,虛機團上產品團購,超級便宜
㈤ 《資料庫原理及應用》課程設計:圖書借閱管理系統 VC源程序 謝謝
可以通過Bai Hi提示我
有時間可能完成你所面臨的任務
相關的要求也可能提示我
ES:\\
交易提醒:預付定金是詐騙
㈥ 急求圖書管理系統課程設計報告一份。。
可行性分析報告
我們小組的信息系統開發課程設計題目是:圖書管理系統開發。系統開發的總的設計目標是實現圖書管理的系統化、規范化和自動化,實現對圖書資料的集中統一的管理。
本系統主要實現對圖書館信息的管理,主要功能為管理有關讀者,書籍,借閱和管理者的信息等。本系統結構分為讀者信息管理模塊,書籍信息管理模塊,借閱信息管理模塊,管理者信息管理模塊。讀者信息管理部分有兩方面的功能,可以瀏覽讀者的信息,可以對讀者信息進行維護。書籍信息管理可以瀏覽書籍的信息,可以對書籍信息進行維護。借閱信息管理可以顯示當前資料庫中書籍借閱情況,可以對借閱信息進行維護。管理者信息管理可以顯示資料庫中管理者的情況,可以對管理者信息進行維護。可見,本系統並不復雜,主要解決的問題是利用關鍵字對資料庫進行查詢。
背景
近年來,隨著圖書館規模的不斷擴大,圖書數量也相應的增加,有關圖書的各種信息量也成倍增加,面對著龐大的信息量,傳統的人工方式管理會導致圖書館管理上的混亂,人力與物力過多浪費,圖書館管理費用的增加,從而使圖書館的負擔過重,影響整個圖書館的運作和控制管理,因此,必須制定一套合理、有效,規范和實用的圖書管理系統,對圖書資料進行集中統一的管理。
另一方面,IT產業和Internet獲得了飛速發展,計算機應用已滲透到了各個領域,引起信息管理的革命,實現了信息的自動化處理,提高了處理的及時性和正確性。
圖書管理工作面對大量的可模塊化處理的信息,是當今信息革命的一個重要陣地。我們小組開發圖書管理信息系統就是採用現代化的信息管理方式代替手工管理方式,提高圖書管理工作效率,作到信息的規范管理,科學統計和快速查詢,讓圖書館更好的為學校,社會服務。
從以前的手工管理的記錄中我們可以發現這樣的問題:
1.檢索速度慢、效率低
因為圖書館的藏書種類多、數量多,將藏書准確地分門別類,快速檢索,手工進行非常困難往往是終於查到了書的信息,館中沒有此書或已被別人借走。圖書館的規模越大,這個問題越突出。
2.借書、還書工作量大
借書、還書頻率越大,說明圖書館的作用越大,然而隨之而來的大量的借書、 還書登記、實存圖書的更新以及借出圖書超期、遺失等的處理,其工作量之大,往 往是人工操作所難以勝任的。而且經常會出現這樣那樣的差錯。
3.圖書統計工作難、藏書更新不能及時完成。
圖書館的圖書應根據科學技術的發展和教學工作的需要及時添加和更新,然而由於藏書數量及圖書種類越來越多,加上自然損耗,人為破壞,使圖書的統計工作難以及時完成,藏書的更新也就很難有針對性地進行,藏書的知識結構得不到良好地控制。
系統開發的重點與難點
系統出現了一些技術難點大致如下:
1、建立合理的表結構,避免數據冗餘
各表通過特定欄位實現不同表的數據連接,避免數據冗餘,需要設計簡潔高效的表結構。
2、建立相當的系統安全性
登錄用戶身份的驗證機制的設計、操作頁面的許可權保護。
3、建立嚴密的數據表操作機制
同一表有可能在多個模塊中被修改,所以嚴密的數據表操作機制的建立十分比較困難的,但也是必須的。除了設計時必須有相當程度的考慮,在編制時更應加強程序邏輯的可靠性和程序調試的全面性。
可行性分析
1.技術可行性
此次信息系統開發是大學專業知識的一次綜合應用與提高,我們小組可以在主教5樓機房完成系統開發。該機房計算機配置肯定能滿足系統開發的要求。我們小組可以選定兩三台計算機,建立系統開發環境,主要是安裝資料庫工具(MS SQL SERVER 2000),應用程序開發工具( VISUL BASIC 6.0或DELPHI),Office程序組以及網路傳輸工具。
我們小組的部分成員有計算機,配置是Pentium4 1.5G,256M以上內存,80G以上硬碟,可連網。小組成員之間可以通過QQ或電話進行即時交流,協調開發工作,解決開發工作中出現的問題。
就技術力量來說,我們小組可以完成此次開發工作。開發過程中會出現許多問題,有我們預想之中的,也有一些沒有我們預想到,但,我們有信心克服一切困難。該學期,我們小組各成員已經學習了SQL SERVER,對網路技術和操作系統也有系統的了解,有些成員熟悉計算機原理,能解決常見的硬體故障和硬體選擇。目前,圖書管理信息系統已得到了大量應用,有許多可供參考的成功系統。而且,網上有許多關於VISUL BASIC編程的資料和SQL SERVER方面的資料。 從技術角度考慮,此信息系統開發可行。
2.經濟可行性
目標系統開發需求比較低,加上具有成熟的軟硬體環境,所以在軟硬體的支出上十分有限。而且,目標系統並不是十分的復雜,開發的周期較短,人員經濟支出有限。當系統開發完實際運行後,將很大程度上提高計算機的功能,在為使用者帶來便利的同時,也為系統的進一步推廣創造了條件。這帶來的經濟回報將遠超過支出,並且最重要的一點是該軟體的開發可以給我們對系統的開發有個全面的認識。從經濟角度考慮,此信息系統開發可行。
3. 法律上可行
整個系統由於是自行開發,自行使用,所以系統本身不存在法律上的版權爭議。在伺服器軟體方面,應該使用正版軟體,因為整個系統盡管是開發給內部使用,但它畢竟很多部分還是要依靠Internet的,一旦伺服器連接到Internet上,它的操作系統可能會被Microsoft跟蹤,如果不是正版軟體,將不得不面臨民事訴訟的風險。
結論:
根據以上的可行性研究,我們小組認為開發此系統的條件已經具備,可以開始進行開發。
㈦ 圖書館借閱管理系統,(數據結構課程設計)
網路搜索51aspx這個網站上搜索!
㈧ 求SQL server 2000課程設計之圖書借閱管理資料庫
跟我以前的設計題目一樣,不知符合你要求不?加我吧或者hi我也行,
㈨ 數據結構課程設計(圖書館借閱管理系統)
圖書借閱管理系統具有以下功能:
圖書資料管理
圖書資料管理主要完成圖書資料的新增、修改和報廢,並生成圖書資料庫的功能。按采購員的要求,供書商提供需要的書籍。進行分類新增修改處理。並對已報廢圖書進行處理。
讀者資料管理
讀者資料管理主要完成讀者資料的新增、修改和撤消,並生成讀者資料庫。按讀者要求進行讀者資料的新增、修改和撤消。
借書操作
借書操作主要完成讀者的借書、續借及預訂處理,並生成讀者借閱庫。首先進行讀者資格的審核,符合要求後查閱書庫是否有書,如有則修改圖書資料庫,書庫取書書交讀者。書庫無書則進行預訂處理。用戶續借則修改還書日期。並將借書信息匯總後交統計員。
還書操作
還書操作主要完成讀者的還書及罰款處理,並修改讀者借閱庫。首先進行讀者資格的審核,符合要求後則修改圖書資料庫,讀者還書書還書庫。書籍逾期或遺失則進行罰款處理。並將還書信息匯總後交統計員。
查詢處理
查詢處理主要完成讀者對書是否逾期、書是否未借、書籍排行榜的查詢處理。並及時地把查詢結果反饋給讀者,並將查詢信息匯總給統計員。
系統維護
包括許可權管理、數據恢復和數據備份。數據恢復和數據備份是對數據的有效保護。許可權管理是對系統使用者規定相關的許可權,以免系統數據被非法訪問和使用。
(訪問時需要密碼,密碼錯誤要有提示重輸,登陸分為管理員登陸和用戶登陸兩項,用戶只能進行查詢操作,而管理員能進行所有操作)
#include <string.h>
#include <iostream.h>
class Book{ // 書籍基類
protected:
char Title[40]; // 書名
long Code; // 條碼
int Type; // 0表示書,1表示雜志
public:
Book();
Book(char *title,long code);
void SetCode(long code){ Code = code; }
void SetTitle(char* tl){ strcpy(Title,tl); }
void SetType(bool type){Type = type; }
int GetType(){ return Type; }
long GetCode(){ return Code;}
virtual void Show(); // 顯示書的信息
friend ostream& operator<<(ostream& , Book&); // 重載插入運算符
friend istream& operator>>(istream& is, Book&); // 重載提取運算符
Book *Next; // 為創建每個讀者所借書鏈表而定義指針
};
class Item :public Book{ //書的款目
// char Title[40]; // 書名
char Author[20]; // 著者名
char IndexCode[10]; // 分類號
// long Code; // 條碼
public:
Item();
Item(char *author,char *title,char *index,int code);
Item(Item &);
void SetAuthor(char*);
void SetIndexCode(char*);
virtual void Show(); // 顯示書的信息
friend ostream& operator<<(ostream& os, Item&); // 重載插入運算符
friend istream& operator>>(istream& is, Item&); // 重載提取運算符
public:
};
class Magazine:public Book { //雜志類
int Volume;
enum LANG {CHINESE=1,ENGLISH} Lang; // 枚舉變數,確定語言類別
public:
Magazine():Book(){Volume = 0; Lang = CHINESE; Type = 1; }
Magazine(char *title,int vol,LANG lang,int code);
Magazine(Magazine&);
void SetVolume(int vol){Volume = vol;}
void SetLang(int lang){Lang = (LANG)lang;}
virtual void Show(); // 顯示雜志的信息
friend ostream& operator<<(ostream& os, Magazine&); // 重載插入運算符
friend istream& operator>>(istream& is, Magazine&); // 重載提取運算符
};
class Reader{ // 讀者信息類
char Name[20]; // 姓名
char Position[20]; // 職務
int Age; // 年齡
long Code; // 借書證號
Book* items; // 所借書鏈表
public:
Reader();
Reader(char *name,char *posi,int age,int code);
// Reader(Reader&);
~Reader();
long GetCode(){return Code;}
void SetName(char*);
void SetPosition(char*);
void SetAge(int);
void SetCode(long);
void AddBook(Item); // 添加所借書
void AddBook(Magazine); // 添加所借雜志
void DelBook(Book it); // 還書後減少所借書
void ShowBooks(); // 顯示所借書
void Show(); // 顯示讀者信息
friend ostream& operator<<(ostream& os, Reader&); // 重載插入運算符
friend istream& operator>>(istream& is, Reader&); // 重載提取運算符
public:
int Counter; //計數器,統計所借書數目
};
class Manager{ // 管理員類
char Name[20]; // 姓名
int Age; // 年齡
int Code; // 工號
friend class Library; // 將圖書館類聲明為友元
public:
Manager(){}
Manager(char*,int,int);
long GetCode(){ return Code;}
void Show();
friend ostream& operator<<(ostream& os, Manager&); // 重載插入運算符
friend istream& operator>>(istream& is, Manager&); // 重載提取運算符
};
class Loan { // 借閱信息類
int Type; // 0表示書,1表示雜志
Item item; // 借閱書
Magazine mag; // 借閱雜志
Reader reader; // 借閱者
Manager manager; // 借書操作員
int Code;
friend class Library; // 將圖書館類聲明為友元
public:
Loan(){ }
Loan(Loan & l);
int GetCode(){ return Code;}
void Show();
friend ostream& operator<<(ostream& os, Loan&); // 重載插入運算符
friend istream& operator>>(istream& is, Loan&); // 重載提取運算符
};
、、、、、、、、、、、、、、、、、、、、、、、
#include<iostream.h>
#include<string.h>
class Reader;
template<typename T> class DblList;
template<typename T> class DblNode{
public:
T Info;//數據域
DblNode<T> *llink,*rlink; //前驅(左鏈)、後繼(右鏈)指針
public:
DblNode(T data);//一般結點
DblNode();//頭結點
T GetInfo(){return Info;};
friend class DblList<T>;
friend class Library;
};
template<typename T>class DblList{
DblNode<T> *head,*current;
public:
DblList();
~DblList();
void Insert(const T& data);
DblNode<T>* Remove(DblNode<T>* p);
void Print();
int Length();//計算鏈表長度
DblNode<T> *Find(T data);//搜索數據與定值相同的結點
DblNode<T>* Find(int data);//按某個關鍵字查找
void MakeEmpty(); //清空鏈表
void ShowList(); //顯示鏈表各結點
friend istream& operator>>(istream&, DblList<typename T>&); // 重載輸入流運算符
friend ostream& operator<<(ostream& os, DblList<typename T>& dlist); // 重載輸出流運算符
friend class Library;
//其它操作
};
template<typename T> DblNode<T>::DblNode(){
llink=rlink=NULL;
}
template<typename T> DblNode<T>::DblNode(T data){
info=data;
llink=NULL;
rlink=NULL;
}
template<typename T> DblList<T>::DblList(){//建立表頭結點
head=new DblNode<T>();
head->rlink=head->llink=head;
current=NULL;
}
template<typename T> DblList<T>::~DblList(){
MakeEmpty();//清空鏈表
delete head;
}
template<typename T> void DblList<T>::MakeEmpty(){
DblNode<T> *tempP;
while(head->rlink!=head){
tempP=head->rlink;
head->rlink=tempP->rlink;//把頭結點後的第一個節點從鏈中脫離
tempP->rlink->llink=head;//處理左指針
delete tempP; //刪除(釋放)脫離下來的結點
}
current=NULL; //current指針恢復
}
template<typename T> void DblList<T>::Insert(const T & data){//新節點在鏈尾
current=new DblNode<T>;
current->Info=data;
current->rlink=head;//注意次序
current->llink=head->llink;
head->llink->rlink=current;
head->llink=current;//最後做
}
template<typename T> DblNode<T>* DblList<T>::Remove(DblNode<T>* p){ // 刪除結點
current=head->rlink;
while(current!=head&¤t!=p) current=current->rlink;
if(current==head) current=NULL;
else{//結點摘下
p->llink->rlink=p->rlink;
p->rlink->llink=p->llink;
p->rlink=p->llink=NULL;
}
return current;
}
template<typename T> DblNode<T>* DblList<T>::Find(T data){ // 按結點查找
current=head->rlink;
while(current!=head&¤t->Info!=data) current=current->rlink;
if(current==head) current=NULL;
return current;
}
template<typename T> DblNode<T>* DblList<T>::Find(int data){ // 按數據值查找結點
current=head->rlink;
int temp =current->Info.GetCode();
while(current!=head&&temp!=data){
current=current->rlink;
temp = current->Info.GetCode();
}
if(current==head) current=NULL;
return current;
}
template<typename T> void DblList<T>::Print(){ // 輸出鏈表
current=head->rlink;
while(current!=head){
cout<<current->Info<<'\t';
current=current->rlink;
}
cout<<endl;
}
template<typename T> int DblList<T>::Length(){ // 取得鏈表長度
int count=0;
current=head->rlink;
while(current!=head){
count++;
current=current->rlink;
}
return count;
}
template<typename T> void DblList<T>::ShowList(){ // 輸出鏈表各結點
int count=0;
current=head->rlink;
while(current!=head){
current->GetInfo().Show();
current=current->rlink;
}
return ;
}
template<typename T>
istream& operator>>(istream& is, DblList<typename T> &dlist){
int len;
T tt; // 定義局部變數讀入一個結點
is>>len;
for(int i= 0 ;i<len; i++){ // 循環讀入鏈表各結點
is>>tt;
dlist.Insert(tt);
}
return is;
}
template<typename T>
ostream& operator<<(ostream& os, DblList<typename T> &dlist){
DblNode<T> *tempP;
int len = dlist.Length();
os<<len<<' ';
tempP=dlist.head->rlink;
while(tempP!=dlist.head){ // 循環輸出鏈表各結點
os<<tempP->Info;
tempP = tempP->rlink;
}
return os;
}
#include "class.h"
#include "dblist.h"
#include <fstream.h>
class Library{ // 封裝圖書館流通業務的類
DblList<Item> item; // 在館圖書鏈表
DblList<Magazine> mag; // 在館雜志鏈表
DblList<Reader> reader; // 讀者鏈表
DblList<Loan> loan; // 借閱信息鏈表
DblList<Manager> manager; // 管理員信息鏈表
int itemNum; // 記錄在館圖書數目
int magNum; // 記錄在館雜志數目
int readerNum; // 記錄讀者數目
int loanNum; // 記錄借閱信息數目
int managerNum; // 記錄管理員數目
ofstream itemFileOut; // 文件流對象,保存圖書館書籍數據
ifstream itemFileIn; // 文件流對象,讀入圖書館書籍數據
ofstream magFileOut; // 文件流對象,保存圖書館雜志數據
ifstream magFileIn; // 文件流對象,讀入圖書館雜志數據
ofstream readerFileOut; // 文件流對象,保存圖書館讀者數據
ifstream readerFileIn; // 文件流對象,讀入圖書館讀者數據
ofstream loanFileOut; // 文件流對象,保存圖書館借閱信息數據
ifstream loanFileIn; // 文件流對象,讀入圖書館借閱信息
ofstream managerFileOut; // 文件流對象,保存圖書館管理員數據
ifstream managerFileIn; // 文件流對象,讀入圖書館管理員數據
public:
Library(); // 構造函數
~Library(); //析構函數
void Run(); // 圖書館類的運行函數
void CreateBibliotheca(); // 創建書目
void CreateReader(); // 創建讀者庫
void CreateManager(); // 創建管理員信息
int ShowMainMenu(); // 顯示主菜單函數
void Borrow(); // 借書操作
void Return(); // 還書操作
void Require(); // 查詢操作
void SaveInfo(); // 保存圖書館信息
void OpenInfo(); // 讀入圖書館信息
};
多給點分吧