① 實現一個小型圖書館管理系統,要求實現對圖書信息的管理;實現對圖書的借閱、歸還等功能;界面布局合理,
#include <iostream>
#include <iomanip>
#include <string>
//輸入/輸出文件流類
#include <fstream>
using namespace std;
//最多的讀者
const int Maxr=100;
//最多的圖書
const int Maxb=100;
//每位讀者最多借五本書
const int Maxbor=5;
//讀者類,實現對讀者的信息的描述
class Reader
{
private:
//刪除標記 1:已刪 0:未刪
int tag;
//讀者編號
int no;
//讀者姓名
char name[10];
//所借圖書
int borbook[Maxbor];
public:
Reader()
{
;
}
//獲取姓名
char *getname()
{
return name;
}
//獲取刪除標記
int gettag()
{
return tag;
}
//獲取讀者編號
int getno()
{
return no;
}
//設置姓名
void setname(char na[])
{
strcpy(name,na);
}
//設置刪除標記 1:已刪 0:未刪
void delbook()
{
tag=1;
}
//增加讀者
void addreader(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i<Maxbor;i++)
borbook[i]=0;
}
//借書操作
void borrowbook(int bookid)
{
for(int i=0;i<Maxbor;i++)
{
if (borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
}
//還書操作
int retbook(int bookid)
{
for(int i=0;i<Maxbor;i++)
{
if(borbook[i]==bookid)
{
borbook[i]=0;
return 1;
}
}
return 0;
}
//讀出讀者信息
void disp()
{
cout << setw(5) << no <<setw(10) << name<<"借書編號:[";
for(int i=0;i<Maxbor;i++)
if(borbook[i]!=0)
cout << borbook[i] << "|";
cout << "]"<<endl;
}
};
//讀者類庫,實現建立讀者的個人資料
class RDatabase
{
private:
//讀者記錄指針
int top;
//讀者記錄
Reader read[Maxr];
public:
//構造函數,將reader.txt讀到read[]中
RDatabase()
{
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;
}
//關閉 reader.txt
file.close();
}
//刪除所有讀者信息
void clear()
{
top=-1;
}
//添加讀者時先查找是否存在
int addreader(int n,char *na)
{
Reader *p=query(n);
if (p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;
}
//按編號查找
Reader *query(int readerid)
{
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();
}
//讀者庫維護
void readerdata();
//析構函數,將read[]寫到reader.txt文件中
~RDatabase()
{
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()
{
char choice;
char rname[20];
int readerid;
Reader *r;
while (choice!='0')
{
cout <<"\n\n\t\t\t讀 者 維 護\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 刪 除\n\n\t\t 4 查 找\n\n\t\t 5 顯 示\n\n\t\t 6 全 刪\n\n\t\t 0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "輸入讀者編號:";
cin >> readerid;
cout << "輸入讀者姓名:";
cin >> rname;
addreader (readerid,rname);
break;
case '2':
cout << "輸入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout << " 該讀者不存在 "<<endl;
break;
}
cout << "輸入新的姓名:";
cin >> rname;
r->setname(rname);
break;
case '3':
cout << " 輸入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<" 該讀者不存在" << endl;
break;
}
r->delbook();
break;
case '4':
cout << "讀入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<"該讀者不存在"<< endl;
break;
}
r->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯誤,請從新輸入:";break;
}
}
}
//圖書類,實現對圖書的描述,圖書的編號,書名,借出,還入等
class Book
{
private:
//刪除標記 1:已刪 0:未刪
int tag;
//圖書編號
int no;
//書名
char name[20];
//是否再架 1:再架 2:已借
int onshelf;
public:
Book(){}
//獲取姓名
char *getname() { return name; }
//獲取圖書編號
int getno(){ return no; }
//獲取刪除標記
int gettag(){ return tag; }
//設置書名
void setname(char na[])
{
strcpy(name,na);
}
//刪除圖書
void delbook(){ tag=1;}
//增加圖書
void addbook(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
//借書操作
int borrowbook()
{
if (onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
//還書操作
void retbook()
{
onshelf=1;
}
//輸出圖書
void disp()
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "在架":"已借") <<endl;
}
};
//圖書庫類,實現對圖書的維護,查找,刪除等
class BDatabase
{
private:
//圖書記錄指針
int top;
//圖書記錄
Book book[Maxb];
public:
//構造函數,將book.txt讀到book[]中
BDatabase()
{
Book b;
top=-1;
fstream 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)
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
//查找圖書
Book *query(int bookid)
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
//圖書庫維護
void bookdata();
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
//析構函數,將book[]寫到book.txt文件中
~BDatabase()
{
fstream 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()
{
char choice;
char bname[40];
int bookid;
Book *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t圖 書 維 護 "<<endl<<endl;
cout<<"\t\t1 新 增\n \t\t2 更 改\n\t\t3 刪 除\n\t\t4 查 找\n\t\t5 顯 示\n\t\t6 全 刪\n\t\t0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "輸入圖書編號:"<<endl;
cin >> bookid;
cout << "輸入圖書書名:"<<endl;
cin >> bname;
addbook(bookid,bname);
break;
case '2':
cout << "輸入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout << " 該圖書不存在 "<<endl;
break;
}
cout << "輸入新的書名:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 讀入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書不存在" << endl;
break;
}
b->delbook();
break;
case '4':
cout << " 讀入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯誤,請從新輸入:";
}
}
}
//main() 函數的實現,程序的主界面的引導
int main()
{
char choice;
int bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout <<endl<<endl<<"\t\t\t 圖 書 管 理 系 統\n\n\n";
cout <<"\t\t\t1 借 書\n\n\t\t\t2 還 書 \n\n\t\t\t3 圖 書 維 護\n\n\t\t\t4 讀 者 維 護\n\n\t\t\t0 離 開"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout <<" 借書 讀者編號:";
cin >>readerid;
cout <<" 圖書編號: ";
cin >>bookid;
//按編號查找
r=ReaderDB.query(readerid);
if (NULL==r)
{
cout <<" 不存在該讀者,不能借書"<< endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書,不能借書"<< endl;
break;
}
if (b->borrowbook()==0)
{
cout << " 該圖書已借出,不能借書"<< endl;
break;
}
r->borrowbook(b->getno());
break;
case '2':
cout<<"還書\n 讀者編號:";
cin >>readerid;
cout << " 圖書編號:";
cin >>bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout <<" 不存在該讀者,不能還書" << endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書,不能還書" <<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
case '3':
BookDB.bookdata();
break;
case '4':
ReaderDB.readerdata();
break;
default:cout<<"輸入錯誤,請從新輸入:";
}
}
}
② 小型圖書館管理系統的開發 軟體工程
圖書館自動化管理系統
一、系統簡介:
圖書館管理系統包含了目前圖書館管理業務的每個環節,符合教育部最新頒布的《教育管理信息化標准》規范、我國圖書館界通用的CNMARC格式標准、目前通用的《中圖法四》標准,支持Z39.50檢索協議( 無需編目費用,只輸入ISBN號碼即自動編目 ),能同時管理圖書和期刊,能列印條碼、書標,並製作借書證,最大藏書量在300萬冊以上,系統採用CNMARC標准及中圖法第四版分類,具有Web檢索與發布功能,條碼掃描,支持一卡通,支持觸摸屏。
系統包括系統管理、讀者管理、編目、流通、統計、查詢等功能。能夠在一個界面下實現圖書、音像、期刊的管理,設置假期、設置暫離鎖(提高安全性)、暫停某些讀者的借閱權、導入導出讀者、交換MARC數據、升級輔助編目庫等。
二、系統特點:
1、順應時代發展要求
本系統遵守教育部2002年12月頒布的《教育管理信息化標准》規范中的「圖書管理系統子集」,採用《中國圖書館分類法》最新的第四版,能適應教育部對未來學校教學手段現代化及實行校校通工程的要求,可作為一個獨立的圖書館管理系統運行,也可接進校園網中,是學校教學手段現代化的必然選擇。
2、技術先進
以Win2000或NT4為伺服器平台,後台為大型資料庫SQL Server7.0或2000,採用了先進可靠的C/S+B/S結構,穩定性及安全性好,運行速度快,維護簡單。系統核心採用目前最先進的前端開發工具Delphi開發,所有軟體部件全部為本地代碼,不採用任何其他外部構件,從而保證了穩定性和可靠性。
3、功能強大
其功能包含了目前圖書館管理業務的每個環節,系統共分成系統管理、讀者管理、編目、流通、統計、查詢等功能。各種細致的功能如編目在C/S模式下實現,一些一般功能同時開放在WEB上通過B/S模式實現。
除具有一般圖書館管理系統提供的讀者管理、采編、流通、預約及管理、統計、查詢、設置借閱規則等功能外,我們還提供了設置假期(適應學校放假需要)、設置暫離鎖(提高安全性)、監視當前使用的客戶機及操作員、導入導出讀者等,另外還可方便地將外來MARC數據導入到本館或輔助編目庫中,可以自行升級編目庫,可以暫停某些讀者的借閱權等等。
4、高度靈活性
我們的各個版本及版本間升級的程序集成在一張光碟上,在學習版、標准網路版和增強網路版之間可以任意自行轉換,不影響您的數據。
5、高度安全性
由管理員分配各操作員可使用的功能並設置其密碼,各操作員可以更換自己的登錄密碼。系統對各操作員的登錄、退出及重要操作均記錄在操作日誌中,管理員可隨時查看,一些重要功能如數據恢復等被限制在伺服器端執行。結合NT Server環境下的圖書館管理系統數據全自動按計劃備份服務可最大限度地保障您的數據安全。
6、WEB服務
本系統採用客戶機/伺服器(Client/Server) + 瀏覽器/伺服器(Browser/Server)模式,在伺服器上安裝本部件後各客戶機就可以通過IE瀏覽器讓讀者使用借閱資料查詢、更換密碼、預約、資料檢索等功能。
所有信息均存放在資料庫伺服器上,各客戶機通過網路與資料庫伺服器通訊,WEB 服務通過ADO 模型訪問資料庫伺服器。
7、讀者自助服務
系統內部支持公眾用戶,我們可以開放一些客戶機從而讓讀者自行管理密碼、查詢自己的借閱史、預約資料及進行管理、檢索資料等,所有這些功能都必須輸入讀者相應的密碼才能執行。
8、簡單易用
盡管系統提供了強大而完善的功能,但系統內部實現嚴謹,從而保證了操作員可以進行傻瓜式的操作而不易出錯。例如有在借資料的讀者是不能被刪除的,有以下情況的讀者是不能借閱的:某類書的借閱數已達到最大值、有超期資料、有未繳罰款、被暫停借閱,其他許多規則均在系統中得到了細致而具體的實現,所有這些規則由系統強制維護。日常工作中操作員只需使用手持式條碼閱讀器掃入借書證號、資料編號、圖書音像的ISBN號、期刊的ISSN號的條碼,就可以完成絕大部分工作。
9、智能化的編目方案提供了標準的輔助編目庫,擁有超過260萬條以上的編目數據。
10、與同類系統相比所具有的優點
(1).我們的系統支持條碼閱讀器掃入借書證號、圖書音像編號、圖書音像的ISBN號、期刊的ISSN號。支持一卡通,支持觸摸屏。
(2).所有功能均由本地代碼實現,而有些系統使用了許多外部構件,容易導致系統崩潰及性能下降。
(3).主程序具有自我檢查功能,任何改變包括病毒感染都會報警,許多系統程序龐大而且感染病毒後不能報警。
(4).功能全,結構嚴謹,布局清析。
(5).維護方便。系統提供了完善的備份及恢復功能,在用戶超過一段時間沒有備份時會自動警告。
(6).適應性強。操作系統可以是Win98、Win ME、Win NT4、Windows 2000及Windows XP,後台資料庫支持從SQL Server7.0、2000到未來版本,而有些系統只能在特定的某一版本運行。支持千萬甚至億級館藏量
③ c#小型圖書管理系統
裡面// // 里的全都是注釋
#include <iostream>
#include <iomanip>
#include <string>
//輸入/輸出文件流類
#include <fstream>
using namespace std;
//最多的讀者
const int Maxr=100;
//最多的圖書
const int Maxb=100;
//每位讀者最多借五本書
const int Maxbor=5;
//讀者類,實現對讀者的信息的描述
class Reader
{
private:
//刪除標記 1:已刪 0:未刪
int tag;
//讀者編號
int no;
//讀者姓名
char name[10];
//所借圖書
int borbook[Maxbor];
public:
Reader()
{
;
}
//獲取姓名
char *getname()
{
return name;
}
//獲取刪除標記
int gettag()
{
return tag;
}
//獲取讀者編號
int getno()
{
return no;
}
//設置姓名
void setname(char na[])
{
strcpy(name,na);
}
//設置刪除標記 1:已刪 0:未刪
void delbook()
{
tag=1;
}
//增加讀者
void addreader(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i<Maxbor;i++)
borbook[i]=0;
}
//借書操作
void borrowbook(int bookid)
{
for(int i=0;i<Maxbor;i++)
{
if (borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
}
//還書操作
int retbook(int bookid)
{
for(int i=0;i<Maxbor;i++)
{
if(borbook[i]==bookid)
{
borbook[i]=0;
return 1;
}
}
return 0;
}
//讀出讀者信息
void disp()
{
cout << setw(5) << no <<setw(10) << name<<"借書編號:[";
for(int i=0;i<Maxbor;i++)
if(borbook[i]!=0)
cout << borbook[i] << "|";
cout << "]"<<endl;
}
};
//讀者類庫,實現建立讀者的個人資料
class RDatabase
{
private:
//讀者記錄指針
int top;
//讀者記錄
Reader read[Maxr];
public:
//構造函數,將reader.txt讀到read[]中
RDatabase()
{
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;
}
//關閉 reader.txt
file.close();
}
//刪除所有讀者信息
void clear()
{
top=-1;
}
//添加讀者時先查找是否存在
int addreader(int n,char *na)
{
Reader *p=query(n);
if (p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;
}
//按編號查找
Reader *query(int readerid)
{
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();
}
//讀者庫維護
void readerdata();
//析構函數,將read[]寫到reader.txt文件中
~RDatabase()
{
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()
{
char choice;
char rname[20];
int readerid;
Reader *r;
while (choice!='0')
{
cout <<"\n\n\t\t\t讀 者 維 護\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 刪 除\n\n\t\t 4 查 找\n\n\t\t 5 顯 示\n\n\t\t 6 全 刪\n\n\t\t 0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "輸入讀者編號:";
cin >> readerid;
cout << "輸入讀者姓名:";
cin >> rname;
addreader (readerid,rname);
break;
case '2':
cout << "輸入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout << " 該讀者不存在 "<<endl;
break;
}
cout << "輸入新的姓名:";
cin >> rname;
r->setname(rname);
break;
case '3':
cout << " 輸入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<" 該讀者不存在" << endl;
break;
}
r->delbook();
break;
case '4':
cout << "讀入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<"該讀者不存在"<< endl;
break;
}
r->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯誤,請從新輸入:";break;
}
}
}
//圖書類,實現對圖書的描述,圖書的編號,書名,借出,還入等
class Book
{
private:
//刪除標記 1:已刪 0:未刪
int tag;
//圖書編號
int no;
//書名
char name[20];
//是否再架 1:再架 2:已借
int onshelf;
public:
Book(){}
//獲取姓名
char *getname() { return name; }
//獲取圖書編號
int getno(){ return no; }
//獲取刪除標記
int gettag(){ return tag; }
//設置書名
void setname(char na[])
{
strcpy(name,na);
}
//刪除圖書
void delbook(){ tag=1;}
//增加圖書
void addbook(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
//借書操作
int borrowbook()
{
if (onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
//還書操作
void retbook()
{
onshelf=1;
}
//輸出圖書
void disp()
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "在架":"已借") <<endl;
}
};
//圖書庫類,實現對圖書的維護,查找,刪除等
class BDatabase
{
private:
//圖書記錄指針
int top;
//圖書記錄
Book book[Maxb];
public:
//構造函數,將book.txt讀到book[]中
BDatabase()
{
Book b;
top=-1;
fstream 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)
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
//查找圖書
Book *query(int bookid)
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
//圖書庫維護
void bookdata();
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
//析構函數,將book[]寫到book.txt文件中
~BDatabase()
{
fstream 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()
{
char choice;
char bname[40];
int bookid;
Book *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t圖 書 維 護 "<<endl<<endl;
cout<<"\t\t1 新 增\n \t\t2 更 改\n\t\t3 刪 除\n\t\t4 查 找\n\t\t5 顯 示\n\t\t6 全 刪\n\t\t0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "輸入圖書編號:"<<endl;
cin >> bookid;
cout << "輸入圖書書名:"<<endl;
cin >> bname;
addbook(bookid,bname);
break;
case '2':
cout << "輸入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout << " 該圖書不存在 "<<endl;
break;
}
cout << "輸入新的書名:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 讀入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書不存在" << endl;
break;
}
b->delbook();
break;
case '4':
cout << " 讀入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯誤,請從新輸入:";
}
}
}
//main() 函數的實現,程序的主界面的引導
int main()
{
char choice;
int bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout <<endl<<endl<<"\t\t\t 圖 書 管 理 系 統\n\n\n";
cout <<"\t\t\t1 借 書\n\n\t\t\t2 還 書 \n\n\t\t\t3 圖 書 維 護\n\n\t\t\t4 讀 者 維 護\n\n\t\t\t0 離 開"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout <<" 借書 讀者編號:";
cin >>readerid;
cout <<" 圖書編號: ";
cin >>bookid;
//按編號查找
r=ReaderDB.query(readerid);
if (NULL==r)
{
cout <<" 不存在該讀者,不能借書"<< endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書,不能借書"<< endl;
break;
}
if (b->borrowbook()==0)
{
cout << " 該圖書已借出,不能借書"<< endl;
break;
}
r->borrowbook(b->getno());
break;
case '2':
cout<<"還書\n 讀者編號:";
cin >>readerid;
cout << " 圖書編號:";
cin >>bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout <<" 不存在該讀者,不能還書" << endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書,不能還書" <<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
case '3':
BookDB.bookdata();
break;
case '4':
ReaderDB.readerdata();
break;
default:cout<<"輸入錯誤,請從新輸入:";
}
}
}
其中main函數是int型的,是因為在devcpp下編程造成的,其他程序報錯請改為void型。
④ 圖書館自助借書機怎麼借書
自助圖書館
操作指南
一、自助辦證:
點擊室外「24小時自助辦證機」顯示屏上的「辦證」字樣→在左下角「身份證感應區」刷第二代身份證→輸入手機號碼→點擊「中文借書證」→在入鈔口放入50元押金(辦新證時僅接受50元面額的紙幣),點擊確認→取卡、列印憑條→完成。
二、借書:
刷讀者證進入室內→從書架上取書→點擊「24小時自助借還書機」上的「借書」字樣→將讀者證放在左下角讀者證感應區感應→將文獻(圖書)放在顯示屏下方的感應區感應→核對文獻數量→選擇是否列印憑據→完成。
「自助借還書機」利用了無線射頻識別技術,借書或還書時可多本一起操作(每張讀者證同時「保有」的圖書限10本)。
三、還書:
1、室內:步驟同上。
2、室外:點擊「24小時自助還書機」顯示屏上的「還書」字樣→還書門打開,在還書口放入圖書,還書門關閉→核對還書信息→重復上一步動作,直至圖書全部還掉→點「退出」→選擇是否列印憑條→完成。
⑤ 建個小型的圖書館需要什麼設備
伺服器,計算機,交換機,復印機,列印機,條碼列印機(可以直接買打好的條碼,那樣列印機可以不買),書車,平板車,桌椅板凳,文件櫃、更衣櫃、大工作台(可用閱覽桌代替),條碼採集器,門禁,充消磁機,公共查詢用計算機,存包櫃,書架、期刊架,閱覽桌,矮凳或者小梯子,空調,滅火器。。。
⑥ 做一個小型圖書館管理系統採用什麼框架
小型,怎麼小呢?是自己開發著玩呢?還是一個小公司里讓做的一個東西呢?
如果你是學生,就可以簡單一點。用jsp+servlet就可以了。當然你有精力的話,也可以做的更好一點,用一下Struts ,spring hiberate ,
如果你是一個小公司的職工,那你就要正式一點了。至少用一個框架,如Struts。
good luck to you!
⑦ 什麼是智能共享圖書櫃有什麼作用
智能共享圖書櫃可以看作是一種可全天候為讀者提供借還書籍功能的微型圖書館。
智能共享圖書櫃
智能共享圖書櫃不僅有借書、還書功能,還有預約取書功能。
讀者可以在圖書館流通系統上預約想要借閱的圖書,收到借閱請求後,物流將投遞書籍到櫃,讀者自動收到取書簡訊和密碼通知,就可以在智能櫃上輸入密碼取書。圖書智能借閱櫃的取書功能非常適合應用於社區或學校之間的通借通還工作。
*圖片出自於速易寶,使用請標明出處。
⑧ 未來的學習工具會是怎樣的
功能奇異的未來筆
學習寫字離不開筆,未來的筆式樣新穎,功能多樣,使用更方便。
液體鉛筆。未來學生的書寫工具中,使用最多的將是圓珠筆。這種圓珠筆同現在的不同,用它書寫出的字跡在二三小時內能用橡皮很省力地擦掉,但過了這段時間就擦不掉,成為永久性的筆跡。這種圓珠筆也叫「液體鉛筆」,它的結構與普通圓珠筆相同,只是用的油墨不一樣。這種油墨是由一種磨碎的橡膠,加入一種低沸點、能在100分鍾內全部揮發的有機溶劑製成的。
測光圓珠筆。工作學習時,光線不適當會影響視力。測光圓珠筆可告訴你選擇的照明是不是合適。它的外形與電子表筆差不多,只是在筆桿上部開的小窗內並排裝了三隻小燈,並在筆夾上設置一個撳鍵。一按撳鍵,小燈便會發出亮光。發紅光表示照明度不夠,綠燈表示照明度適當,黃光表示照明太亮。
能計算的圓珠筆。在做算術或數字統計時,往往既要用計算器又要用筆記,能計算的圓珠筆能將兩種功能結合起來。它的外形比普通圓珠筆略粗一點,筆的後部裝有微型電子計算器,功能鍵和液晶顯示器就在筆桿上。它可以進行加、減、乘、除混合運算,乘方、分數、負數、倒數及本利計算等運算。這種筆可供銀行財會人員、統計人員作各種業務上的運算,也可以滿足一般工程設計的運算。
手寫體打字機
聽課記筆記或寫信時,採用打字機列印,既快又清晰;如果列印出的字體同自己手寫的字體一樣,那就更感到方便和親切了。科學家正在研製這種手寫體打字機。
手寫體打字機很像現在的個人電腦打字機,它除鍵盤和印字裝置外,還設有微電腦和微型存貯器。打字機內,預先儲存有各種基本字的手寫體和偏旁。打字時,按下鍵盤的字鍵,就能列印出自己書寫的字體,或者由各種偏旁組合成的書寫體。如果遇到一些冷僻字,只要用鋼筆或鉛筆寫出來,臨時儲存進去,一按撳鍵,就能列印出來。
這種手寫體打字機還有一些特殊的功能。如果你感到自己的手寫體不好看,可以通過電子計算機的處理,使存放在打字機內的字體產生變形效果,就像將你的字體藝術化一樣,同時又不會失去原來字體的個性。
這種打字機在日本已研製成功,它貯存有日文假名和漢字的手寫體。通過電腦控制,列印速度比手寫來得快,因此,這種手寫體打字機既有打字機的文字編輯、記錄功能,又能再現寫字者的個性,提高打字速度,成了未來「速記」的好幫手。
新文具「娃娃」電腦
未來學生最時髦和常用的文具是計算機。它不僅是所有學生掌握知識的好幫手,而且是開發智力、提高能力的好老師。兒童用的是娃娃電腦,這是一種取名為「娃娃」的家用小計算機。它的體積只有三本小學課本那麼大,只要將它的插頭插入家中電視機的天線插座里,就可以使用。娃娃電腦採用游戲的方式教幼兒識字、算術、繪畫、音樂等。它的教學態度極好,從不急躁,也不大聲呵斥,而是以美麗的圖畫、娓娓動聽的話語循序漸進地進行輔導。
進入中學,計算機更是學生片刻也不可離開的文具。將來學生不僅要接受計算機操作訓練,掌握基礎的計算機語言,利用它來書寫、做作業,而且能夠獨立編制計算機軟體。
在各科課堂教學中,計算機都會成為有效的教學輔助手段。比如文學課的教學,先由「經典名著」的程序講解劇本或故事,同時伴有暫停。這時熒光屏上就顯示出多種選擇答題,測試學生對內容理解是不是正確。選擇正確,故事才繼續講下去,否則便出現蜂音,要求重新解答。對於一些需要花費較長時間的化學反應實驗,一些比較難理解的原理、概念,以及一些難於觀察到的自然現象,都可以通過計算機模擬,以更短的時間和直觀的形式展示出來。訓練學生實驗能力,計算機更是好幫手。它可以和多種儀表配套,迅速、准確地進行數據處理,幫助學生完成實驗,得出正確的結論。
放學回到家裡,家用電腦「電視學習機」會指導學生復習功課。這種機器可以根據老師自編的程序進行工作。只要把軟磁碟插入機器,它就會根據今天上課時老師所講的內容提出問題來考學生。如果學生答對了,學習機就會自動提出第二個問題;如果答錯了,它就會重新提問,或再一次講解所學過的內容,直到學生理解為止。
為了擴大計算機的教育作用,還可以把學校、家庭的計算機與教學中心的計算機連接起來,形成全國性的計算機教學網路,進行各種文化課的講授、輔導以及教學咨詢等。到那時,學生坐在家中就可以學到各種知識。
無師自教的電子黑板
未來,在教師請假或缺少教師時,電子黑板可以充當通訊員,「傳遞」老師的講課,指導學生完成學習任務。
電子黑板外貌與普通黑板相當,但它是用特殊的壓敏材料製成的。當老師用粉筆在電子黑板上書寫教學內容時,黑板除了向課堂上的學生顯示字跡外,同時能將粉筆的筆跡轉換成電信號,然後通過電話線傳送出去。所以人們也叫它「壓敏電子黑板」。
藉助電子黑板,一個老師可以同時給幾個班的學生講課,甚至另外學校的學生也可以聽到這位老師的講課。電子黑板可以將主講教師在黑板上寫出的粉筆筆跡,通過圖像收發機轉變成數字元號,再送到其他教室或另一所學校的電視屏幕上。老師的聲音則可以通過機內的話筒,由電話機傳遞過去。如果是閉路電視,還可以顯示老師的身影。這樣一來,如果有老師缺席,就不用擔心無人上課了。
電子黑板還有其他的優點。人們可以在遙控站接收黑板「傳遞」過來的數字元號,轉換成圖像,作為教學交流或評定教學效果用。另外,還可以在接收端接上一台拷貝機,把電視屏幕上的圖像和話筒里的聲音復錄下來,作為學生復習和家長家庭輔導使用。
會說話的聲像書刊
不久的將來,一種繪聲繪色的圖書和報刊將會普及,人們稱它為聲像書刊或電子書刊。
聲像書刊主要由兩個部分組成。一是存貯信息的裝置,通常是磁碟或光碟,它存貯有書刊的全部文字、插圖和聲音等信息,內容非常多,而體積很小;二是比普通雜志還小的電子閱讀器,它操縱、顯示和傳播文字圖像和聲音。電子閱讀器的前端,有一個書頁大小的平面屏幕,它的後面有照明,屏幕左右有喇叭,下端有按鍵,按下不同的鍵,可以挑選書刊的內容,並在閱讀器上顯示和朗讀出來。
聲像書刊內容多少取決於光碟的容量。一張碟子大小的光碟,可存貯十年的《人民日報》內容。隨著電子技術的發展,聲像書刊可存貯一部大網路全書的文字圖像和聲音,而且人們還可以通過更換記錄的卡片或碟片來換書刊的內容。另外還有一種可能,人們只要在書刊上附加一隻合適的裝置,就可以與遠處的朋友聯系,借閱電子書刊,在你的閱讀器上收聽或閱讀。
1984年初,美國一家出版公司研製出第一部會說話的《美國社會科學網路全書》,讀者讀有關貝多芬生平介紹時,能聽到他的交響樂;看著馬丁·路德·金的照片,能聽到他的慷慨演說。這種電子書刊也為盲人讀者提供便利,只要熟悉閱讀器上的按鍵,就能欣賞一本他所看不見的書刊的精彩內容。
聲像書刊具有比印刷書刊更准確、更形象、更深刻地傳播知識的特點,但不可能完全取代印刷書刊。因為它不能像印刷書刊那樣隨身攜帶,也不可能帶到火車、汽車上觀看,而且,長久地閱讀熒光屏上的文字圖像,也會使人感到吃力。
衣兜里的圖書館
將來的一天,北京圖書館收藏的全部圖書資料都可以記錄到一塊1厘米見方的膠片上。這樣,你可以將世界上幾個最大的「圖書館」放在衣袋裡帶來帶去。
裝有偌大圖書館的膠片,是全息膠片。全息膠片是通過一種新穎的全息攝影技術拍攝的。它通過一套特殊的裝置,用激光束把一頁135膠片大小的資料內容聚焦成一點,通過光的干涉拍攝到全息膠片上。因此,在拍攝好的干版上微小的一個光斑,就包含一頁16開大小的資料。這份資料可以顯示1500個漢字。我國目前研製的全息大容量存貯器,每個光斑的直徑為1毫米,一張書頁大小的干版可記錄1.6萬多個光斑,相當於存貯有300頁的圖書100多冊,實現了圖書資料的縮微。
這種縮微的圖書閱讀起來也十分簡單。只要用一束與貯存時相同的激光,准確地射向要顯示的某一面資料的光斑上,由全息圖點衍射出來的光波,便能准確地在毛玻璃做的光屏上重現出資料內容。如果需要縮小或放大畫面,只要移動毛玻璃的前後距離就能達到。
實際使用中,有一種電子閱讀器,它插有多塊全息干版,收藏的資料多達數百萬頁。閱讀時,只要按下顯示屏下方的索引地址按鍵,集成控制電路就能很快地選取某一干版,取出要查找的光斑,供你翻閱。如果需要詳盡地了解某篇論文或一本書的內容,可以按下控制鈕,復制裝置便會把所顯示的一頁復印下來。
將來,這個微型「圖書館」會做得比鈕扣還小,可以把它裝在微型計算機里供隨身攜帶,或者組成計算機圖書網路。人們只要隨身帶一隻終端裝置,就可以閱讀到網路上任何一個圖書館的資料,非常方便。
⑨ 什麼是自助圖書借閱櫃它的價格是多少呢
1、自助圖書借閱櫃是可放置於室內或者室外的移動圖書流通設備,打破時間的界限,自助借還上櫃,實現真正無人值守的圖書館,從而提升圖書館的服務性,更大程度發揮圖書館作用。
2、自助圖書借閱櫃一般是由主櫃和副櫃組合使用的,使用副櫃主要是為增加儲存書本數量,由主櫃統一管理,用戶在主櫃上操作使用,所以一般價格是由主副櫃的數量來定,這個具體你可以去問問相關廠家,比如下面的這種就是一個主櫃和一個副櫃組合的。
⑩ 誰知道圖書館自動借還書機是怎麼工作的把書往托盤上一放就有顯示出書名,好像沒看到哪裡有掃描呢
一般在書的第一頁 (書名頁)有你所借閱的圖書館的內部條碼 查詢時務必選條形碼查詢 另外你選書名的第一字的拼音查詢也是可以的