婷婷人人超碰五月天_久久综合segui_97色色超级碰碰_福利姬国产AV网站

歡迎來(lái)到中博奧技術(shù)有限公司官網(wǎng)

c++圖書(shū)館管理系統(tǒng)

時(shí)間:2023-02-01 作者:老師 來(lái)源:網(wǎng)絡(luò) 點(diǎn)擊量:

c++圖書(shū)館管理系統(tǒng)

以前做的,可以參考一下

//***********************
//圖書(shū)館管理系統(tǒng)
//***********************
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define null 0
#define max 65536
static int n;
//*********************
// 圖書(shū)結(jié)構(gòu)體
//*********************
typedef struct
{
char num[10]; //書(shū)號(hào)
char name[9]; //書(shū)名
char addr[31]; //作者
int Nowcounter; //現(xiàn)存量
int Allcounter; //總庫(kù)存量
}datatype;
datatype *x[max]; //定義兩個(gè)指針數(shù)組
datatype *p;

//*****************************
//圖書(shū)功能函數(shù)列表
//*****************************
void redo(); //主遞歸函數(shù)
void creatlist(datatype *x[]); //圖書(shū)建立函數(shù)
int menu_select(); //功能菜單函數(shù)
void find(datatype *x[],int n); //查找函數(shù)
void delnode(datatype *x[]); //插入函數(shù)
void printlist(datatype *x[]); //顯示函數(shù)
void jieyue(datatype *x[],int n); //借閱函數(shù)
void guihuan(datatype *x[],int n); //歸還函數(shù)
//*****************************
//主遞歸函數(shù)程序
//*****************************
void redo()
{
int i=0,j,n1,k=0,flage;
for( ; ;)
{
switch( menu_select())
{
case 1: //選項(xiàng)1的實(shí)現(xiàn)
printf("***********************\n");
printf("* 圖書(shū)的建立 *\n");
printf("***********************\n");
creatlist(x);
break;
case 2: //選項(xiàng)2的實(shí)現(xiàn)
printf("***********************\n");
printf("* 新圖書(shū)信息的添加 *\n");
printf("***********************\n");
printf(" 插入的個(gè)數(shù):");
scanf("%d",&n1); //輸入插入新圖書(shū)的個(gè)數(shù)
for(i=0;i<n1;i++)
{
flage=0;
p=(datatype *)malloc(sizeof(datatype)); //分配一個(gè)節(jié)點(diǎn)空間
printf(" 書(shū)名: ");
scanf("%s",p->name); //輸入插入書(shū)的書(shū)名
if(flage==0)
{
for(j=0;j<n;j++)
{
if(strcmp(x[j]->name,p->name) == 0 )//調(diào)用比較函數(shù)查看書(shū)名是否已知
{
x[j]->Allcounter++;
x[j]->Nowcounter++;
flage=1;
}

}

if(flage==0)
{
n++;
printf(" 第 %d 個(gè)圖書(shū)數(shù)據(jù):\n",n); //插入新的圖書(shū)
p=(datatype *)malloc(sizeof(datatype));
x[n-1]=p;
printf(" 書(shū)名:");
scanf("%s",x[n-1]->name); //輸入書(shū)名
printf(" 編號(hào):");
scanf(" %s",x[n-1]->num); //輸入書(shū)號(hào)
printf(" 作者:");
scanf(" %s",x[n-1]->addr); // 輸入作者名
printf(" 總庫(kù)存量: ");
scanf("%d",&x[n-1]->Allcounter); //輸入總庫(kù)存量
x[n-1]->Nowcounter=x[n-1]->Allcounter;
}
}
}
break;
case 3:
printf("***********************\n");
printf("* 圖書(shū)信息的查詢 *\n");
printf("***********************\n");
find(x,n);
break;
case 4:
printf("************************\n");
printf("* 圖書(shū)信息的刪除 *\n");
printf("************************\n");
delnode(x);
break;
case 5:
printf("************************\n");
printf("* 圖書(shū)信息的顯示 *\n");
printf("************************\n");
printlist(x);
break;
case 6:
printf("************************\n");
printf(" 圖書(shū)的借閱\n");
printf("************************\n");
jieyue(x,n);
break;
case 7:
printf("************************\n");
printf(" 圖書(shū)的歸還\n");
printf("************************\n");
guihuan(x,n);
break;
case 0:
printf("\t 謝謝使用,再見(jiàn)! \n");
return;
}
}
}
//*************************
//主函數(shù)程序
//*************************
void main ()
{
redo(); //調(diào)用主遞歸函數(shù)
}
//*************************
//功能菜單函數(shù)
//*************************
int menu_select()
{
int i;
printf(" 歡迎進(jìn)入圖書(shū)管理系統(tǒng)!\n");
printf("===========================\n");
printf(" 1. 圖書(shū)信息的采集\n");
printf(" 2. 新圖書(shū)的插入\n");
printf(" 3. 圖書(shū)信息的查詢\n");
printf(" 4. 圖書(shū)的刪除\n");
printf(" 5. 圖書(shū)的顯示\n");
printf(" 6. 圖書(shū)的借閱\n");
printf(" 7. 圖書(shū)的歸還\n");
printf(" 0. 退出管理系統(tǒng)\n");
printf("===========================\n");
printf(" 請(qǐng)選擇0-7: ");
scanf("%d",&i);
while(i<0||i>7)
{
printf("\n\t輸入出錯(cuò),重選0-7: ");
scanf("%d",&i);
}
return i;
}
//********************************
// 建立鏈表圖書(shū)建造函數(shù)
//********************************
void creatlist(datatype *x[])
{
int i;
printf(" 請(qǐng)輸入要建立圖書(shū)的個(gè)數(shù):");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf(" 第 %d 個(gè)圖書(shū)數(shù)據(jù):\n",i+1);
p=(datatype *)malloc(sizeof(datatype)); //分配一個(gè)節(jié)點(diǎn)空間
x[i]=p;
printf(" 書(shū)名:"); //輸入圖書(shū)各項(xiàng)內(nèi)容
scanf("%s",x[i]->name);
printf(" 編號(hào):");
scanf(" %s",x[i]->num);
printf(" 作者:");
scanf(" %s",x[i]->addr);
printf(" 總庫(kù)存量: ");
scanf("%d",&x[i]->Allcounter);
x[i]->Nowcounter=x[i]->Allcounter;
}
}

//**********************************
// 查找函數(shù)程序
//*********************************
void find(datatype *x[],int n)
{

char num[10];
char name[9];
int t,i;
printf("=================\n"); //輸出查找方式
printf(" 1.按編號(hào)查詢 \n");
printf(" 2.按書(shū)名查詢 \n");
printf("=================\n");
printf(" 請(qǐng)選擇 : ");
scanf("%d",&t); //輸入選擇信息
if(t==1)
{
printf(" 請(qǐng)輸入要查找者的編號(hào): ");
scanf("%s",num); //輸入書(shū)號(hào)
for(i=0;i<n;i++)
{
if(strcmp(x[i]->num,num)==0) //調(diào)用strcmp函數(shù)
{
printf(" 編號(hào) 書(shū)名 作者 現(xiàn)庫(kù)存量 總庫(kù)存量\n"); //輸出要查詢書(shū)的信息
printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
}
else
continue;
}
}
else
{
printf(" 請(qǐng)輸入要查詢的書(shū)名: ");
scanf("%s",name); // 輸入書(shū)名
for(i=0;i<n;i++)
{
if(strcmp(x[i]->name,name)==0)
{
printf("編號(hào) 書(shū)名 作者 現(xiàn)庫(kù)存量 總庫(kù)存量\n"); //輸出要查詢書(shū)的信息
printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
}
else
continue;
}
}
}
//******************************
//刪除函數(shù)程序
//******************************
void delnode(datatype *x[])
{
char num1[10],name1[10]; //定義兩個(gè)字符數(shù)組
int i,j,m=1,p;
printf(" 1.按編號(hào)刪除\n"); //輸出選擇方式
printf(" 2.按書(shū)名刪除\n");
printf(" 3.返回\n");
printf(" 請(qǐng)選擇:\n");
scanf("%d",&p); //輸入選擇信息
if(p>3||p<1)
{
printf(" 您的輸入有誤,請(qǐng)重新輸入!\n");
scanf("%d",&p); //重新輸入選擇信息
}
switch(p) //實(shí)現(xiàn)刪除程序
{
case 1:
printf(" 輸入要?jiǎng)h除書(shū)的編號(hào):\n");
scanf(" %s",num1);
for(i=0;i<n;i++)
{
if(strcmp(x[i]->num,num1)==0) //調(diào)用strcmp函數(shù)
{
m=0;
n--;
for(j=i;j<n;j++)
x[j]=x[j+1]; //將該書(shū)信息刪除
printf(" 該書(shū)已刪除!\n");
}
}
if(m==1)
printf(" 沒(méi)有這樣的的圖書(shū)\n");
break;
case 2:
printf(" 輸入要?jiǎng)h除書(shū)的名字:\n");
scanf("%s",&name1);
for(i=0;i<n;i++)
{
if(strcmp(x[i]->name,name1)==0) //調(diào)用strcmp函數(shù)
{
m=0;
n--;
for(j=i;j<n;j++) //將該書(shū)信息刪除
x[j]=x[j+1];
printf(" 該書(shū)已刪除!\n");
}
}
if(m==1)
printf(" 沒(méi)有這樣的的圖書(shū)\n");
break;
case 3:
break;

}
}
//////////////////////////
////借閱函數(shù)程序
/////////////////////////
void jieyue(datatype *x[],int n)
{
int i,m=1,p;
char name1[10],num1[10]; //定義兩個(gè)字符數(shù)組
printf(" 1.按名字借閱\n"); //輸出選擇方式
printf(" 2.按編號(hào)借閱\n");
printf(" 3.返回\n");
printf(" 請(qǐng)選擇\n");
scanf("%d",&p); //輸入選擇信息
if(p>3||p<1)
{
printf(" 您的輸入有誤!\n");
scanf("%d",&p); //重新輸入選擇信息
}
switch(p) //實(shí)現(xiàn)查詢程序
{
case 1:
printf(" 請(qǐng)輸入你要的書(shū)的名字!\n");
scanf("%s",&name1); // 輸入書(shū)名
for(i=0;i<n;i++)
{
if(strcmp(x[i]->name,name1)==0) //調(diào)用strcmp函數(shù)
{
m=0;
if(x[i]->Nowcounter!=0)
x[i]->Nowcounter--;
printf(" 借書(shū)成功!\n");
if(x[i]->Nowcounter==0)
printf(" 這本書(shū)已經(jīng)沒(méi)有了 \n");
}
}
if(m==1)
printf(" 您要的書(shū)不存在!\n");
break;
case 2:
printf(" 請(qǐng)輸入你要的書(shū)的編號(hào)!\n");
scanf("%s",&num1); // 輸入書(shū)號(hào)
for(i=0;i<n;i++)
{
if(strcmp(x[i]->num,num1)==0) //調(diào)用strcmp函數(shù)
{
m=0;
if(x[i]->Nowcounter!=0)
x[i]->Nowcounter--; //現(xiàn)存書(shū)數(shù)量減1
printf(" 借書(shū)成功!\n");
if(x[i]->Nowcounter==0)
printf(" 這本書(shū)已經(jīng)沒(méi)有了 \n");
}
}
if(m==1)
printf(" 您要的書(shū)不存在!\n");
break;
case 3:
break;
}
}
///////////////////////
/////歸還程序
//////////////////////
void guihuan(datatype *x[],int n)
{
int i,q,m=1;
char name1[10],num1[10]; //定義兩個(gè)字符數(shù)組
printf(" 1.按書(shū)名歸還\n"); //輸出可選擇方式
printf(" 2.按書(shū)號(hào)歸還\n");
printf(" 3.返回\n");
printf(" 請(qǐng)選擇\n");
scanf("%d",&q); //輸入選擇信息
if(q>3||q<1)
{
printf(" 您的輸入有誤!\n");
scanf("%d",&q); //重新輸入選擇信息
}
switch(q) //實(shí)現(xiàn)歸還程序
{
case 1:
printf(" 輸入歸還書(shū)的書(shū)名: ");
scanf("%s",&name1); // 輸入書(shū)名
for(i=0;i<n;i++)
{
if(strcmp(x[i]->name,name1)==0)
{
m=0;
x[i]->Nowcounter++;
printf("此書(shū)歸還成功!\n");
printf("此書(shū)的存儲(chǔ)情況\n");
printf("編號(hào) 書(shū)名 作者 現(xiàn)存量 總存量\n");
printf("===============================================\n");
printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
printf("===============================================\n");
}
if(strcmp(x[i]->name,name1)==0)
continue;
}
if(m==1)
printf("此書(shū)不是圖書(shū)館的!\n");
break;
case 2:
printf("輸入歸還書(shū)的書(shū)號(hào)\n");
scanf("%s",&num1); // 輸入書(shū)號(hào)
for(i=0;i<n;i++)
{
if(strcmp(x[i]->num,num1)==0)
{
m=0;
x[i]->Nowcounter++; //顯存書(shū)增加1
printf("此書(shū)歸還成功!\n");
printf("此書(shū)的存儲(chǔ)情況\n");
printf("編號(hào) 書(shū)名 作者 現(xiàn)存量 總存量\n");
printf("==============================================\n");
printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
printf("==============================================\n");
}
if(strcmp(x[i]->num,num1)==0) //調(diào)用strcmp函數(shù)
continue;
}
if(m==1)
printf("此書(shū)不是圖書(shū)館的!\n");
break;
case 3:
break;
}
}
//**************************************
// 輸出程序
//**************************************
void printlist(datatype *x[])
{
int i;
printf("編號(hào) 書(shū)名 作者 現(xiàn)存量 總存量\n"); //輸出圖書(shū)各項(xiàng)信息
for(i=0;i<n;i++)
{
printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);
}
printf("===============================================\n");
}
求采納為滿意回答。

C++編寫(xiě)個(gè)圖書(shū)管理系統(tǒng)程序

enumState{Borrowed,Available};//Borrowed表示被借出,Available表示書(shū)籍可用。

classBook{

public:

//定義類型別名以實(shí)現(xiàn)抽象

typedefmultisetdata_t;

//不允許書(shū)籍默認(rèn)構(gòu)造。只允許通過(guò)傳入書(shū)名構(gòu)造。將書(shū)籍狀態(tài)設(shè)為“可用”

Book()=delete;

Book(constname_t&name):name(name),state(Available){}

~Book()=default;

//使用書(shū)名比較書(shū)籍間的相互關(guān)系

booloperator<(constBook&other)const{returnname

booloperator==(constBook&other)const{returnname==other.name;}

//一些訪問(wèn)和修改的函數(shù)

//關(guān)于書(shū)籍名字和書(shū)籍狀態(tài)(“可用”,“已借”)

StateGetState()const{returnstate;}

name_tGetName()const{returnname;

voidSetName(constname_t&_name){name=_name;}

voidSetState(StatenewState){state=newState;}

private:

c++圖書(shū)館管理系統(tǒng)

name_tname;

Statestate;

};

classLibrary{

public:

//定義一系列類型類型別名實(shí)現(xiàn)抽象

typedefmultisetdata_t;

typedeftypenameBook::name_tname_t;

typedeftypenamedata_t::iteratorIterator;

typedefvectorInfo_t;

typedefstringfile_name_t;

//只允許該類默認(rèn)構(gòu)造,不允許復(fù)制

Library()=default;

Library(constLibrary&)=delete;

Library&operator=(constLibrary&)=delete;

//分別為增加,刪除,借閱,歸還書(shū)籍。

voidInsert(constBook&book){libraryData.insert(book);}

boolRemove(constname_t&name);

boolBorrow(constname_t&name);

boolGiveBack(constname_t&name);

//返回該類中書(shū)籍的相關(guān)信息

c++圖書(shū)館管理系統(tǒng)

vectorGetBookInfo(constname_t&name)const;

vectorGetAllBookInfo()const;

//返回該類中書(shū)籍的數(shù)目

size_tCount(constname_t&name)const{returnlibraryData.count(Book(name));}

size_tNumOfBook()const{returnlibraryData.size();}

//保存信息到文件,從文件讀取信息

//接受文件名為參數(shù)

voidSaveToFile(conststring&fileName)const;

boolLoadFromFile(conststring&fileName);

private:

//儲(chǔ)存書(shū)籍的容器

data_tlibraryData;

//內(nèi)部輔助函數(shù)。輸入書(shū)籍的名字,返回一對(duì)迭代器(std::pair)指向一個(gè)區(qū)間范圍。該范圍內(nèi)的書(shū)籍都有相同名字name

inlineauto_find(constname_t&name)const->constpair

{

returnlibraryData.equal_range(Book(name));

}

};

//打印“>>>”用以實(shí)現(xiàn)交互界面

inlinevoidPrintPromt(ostream&os);

//打印指導(dǎo)信息。每次運(yùn)行該系統(tǒng)都會(huì)輸出該內(nèi)容

voidPrintInstroduction(ostream&os);

//打印幫助信息。在系統(tǒng)中輸入help會(huì)調(diào)用該函數(shù)輸出幫助

voidPrintHelp(ostream&os);

//打印錯(cuò)誤信息。該函數(shù)會(huì)將參數(shù)s直接打印出來(lái)(加上換行符)

inlinevoidPrintError(ostream&os,conststring&s);

//將系統(tǒng)中的全部書(shū)籍以表格形式輸出。接受library類。通過(guò)調(diào)用PrintTitle(打印表格)和PrintAllBook(打印所有書(shū)籍)執(zhí)行打印

inlinevoidPrintTable(ostream&os,constLibrary&lib);

//打印表格的題頭。執(zhí)行實(shí)際的打印行為

inlinevoidPrintTitle(ostream&os);

//打印系統(tǒng)中的全部書(shū)籍。通過(guò)調(diào)用PrintBookInOneLine打印書(shū)籍

voidPrintAllBook(ostream&os,constLibrary&lib);

//實(shí)際執(zhí)行打印行為的函數(shù)。每次只打印一行。接受Book的對(duì)象為參數(shù)

inlinevoidPrintBookInOneLine(ostream&os,constBook&book);

擴(kuò)展資料

C++編寫(xiě)程序注意事項(xiàng)

1、算:計(jì)算利潤(rùn),計(jì)算一元二次方程的根,計(jì)算一個(gè)數(shù)列的和等。

2、找:找最大的值,找最短的一條路徑,找一個(gè)字符串的位置等。

3、實(shí)現(xiàn)功能:實(shí)現(xiàn)撤銷,重做的功能實(shí)現(xiàn)某種操作的功能等。

4、字符串查找,在記事本里有一個(gè)查找的功能,輸入要查找的關(guān)鍵字,能夠快速找到它所在位置,如果沒(méi)找到并給出提示,現(xiàn)在要求在一個(gè)字符串里找到一個(gè)子串,和記事本的查找功能一樣。

求圖書(shū)館管理系統(tǒng)C++源代碼

#include<iostream>
#include<fstream>
#include<windows.h>
#include<stdlib.h>
using namespace std;
void mainmenu();
void Manage_Book();
void input_Book();
void input_Reader();
void New_Book();
void Seek_Book();
void Borrow_Manage();
void Borrow_Book();
void Return_Book();
void Output_Message();
void Exit_System();
int u,v=3,k=0;
struct Book
{
char name[20];
int booknumber;
int num_present;
int num_all;
}book[1000];
struct Reader
{
char name[20];
int readernumber;
int card;
}reader[3];
void mainmenu()
{
int Num_Choice1,flag=1;
system("color E");
for(;k<=0;k++)
{
input_Book();
input_Reader();
}
while(flag==1)
{
system("cls");
cout<<"\t\t\t◆◆◆◆◆主菜單◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.圖書(shū)管理 ☆"<<endl
<<"\t\t\t☆ 2.借閱管理 ☆"<<endl
<<"\t\t\t☆ 3.輸出信息 ☆"<<endl
<<"\t\t\t☆ 4.退出系統(tǒng) ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"請(qǐng)輸入所需要的服務(wù)編碼"<<endl;
cin>>Num_Choice1;
switch(Num_Choice1)
{
case 1:
Manage_Book();
break;
case 2:
Borrow_Manage();
break;
case 3:
Output_Message();
break;
case 4:
Exit_System();
flag=0;
break;
default:
flag=0;
cout<<"輸入有誤!!"<<endl;
}
}
}
void Manage_Book()
{
int flag1=1,Num_Choice2;
system("cls"); while(flag1==1)
{
cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.新書(shū)入庫(kù) ☆"<<endl
<<"\t\t\t☆ 2.圖書(shū)查詢 ☆"<<endl
<<"\t\t\t☆ 3.返回主菜單 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cin>>Num_Choice2;
switch(Num_Choice2)
{
case 1:
flag1=2;
New_Book();
break;
case 2:
flag1=2;
Seek_Book();
break;
case 3:
mainmenu();
default:
flag1=1;
cout<<"輸入有誤!"<<endl;
system("pause");
system("cls");
}
}}
void input_Book()
{
cout<<"請(qǐng)依照提示輸入現(xiàn)有的三本圖書(shū)的信息:"<<endl;
for(int i=0;i<3;i++)
{
cout<<"書(shū)名:"<<endl;
cin>>book[i].name;
cout<<"書(shū)號(hào):"<<endl;
cin>>book[i].booknumber;
cout<<"庫(kù)存量:"<<endl;
cin>>book[i].num_all;
cout<<"現(xiàn)存量:"<<endl;
cin>>book[i].num_present;
}
}
void New_Book()
{
system("cls");
int j;
char newbook_name[20];
cout<<"請(qǐng)輸入新書(shū)書(shū)名:"<<endl;
cin>>newbook_name;
for(j=0;j<1000;j++)
{
if(strcmp(newbook_name,book[j].name)==0)
{
book[j].num_all++;
book[j].num_present++;
break;
}
}
if(j==1000)
{
cout<<"請(qǐng)為此新書(shū)編號(hào):"<<endl;
v++;
cin>>book[v].booknumber;
strcpy(book[v].name,newbook_name);
book[v].num_all=1;
book[v].num_present=1;
}
else cout<<"已有此書(shū),庫(kù)存量加一"<<endl;
system("pause");
}
void Seek_Book()
{
system("cls");
int k,booknumber;
cout<<"請(qǐng)輸入所要查詢的書(shū)號(hào):"<<endl;
cin>>booknumber;
for(k=0;k<1000;k++)
{
if(book[k].booknumber==booknumber)
{
cout<<"書(shū)號(hào):"<<booknumber<<endl;
cout<<"書(shū)名:"<<book[k].name<<endl;
cout<<"庫(kù)存量:"<<book[k].num_all<<endl;
cout<<"現(xiàn)存量:"<<book[k].num_present<<endl;
system("pause");
break;
}
}
if(k==1000)
{
cout<<"未找到此書(shū)??!"<<endl;
system("pause");
}
}
void Borrow_Manage()
{
int flag=1;
system("cls");
int Num_Choice3;
while(flag==1)
{
cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.借書(shū)登記 ☆"<<endl
<<"\t\t\t☆ 2.還書(shū)管理 ☆"<<endl
<<"\t\t\t☆ 3.返回主菜單 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cin>>Num_Choice3;
switch(Num_Choice3)
{
case 1:
flag=2;
Borrow_Book();
break;
case 2:
flag=2;
Return_Book();
break;
case 3:
mainmenu();
default:
flag=1;
cout<<"輸入有誤!!"<<endl;
system("pause");
}
system("cls");
}
}
void input_Reader()
{
system("cls");
cout<<"請(qǐng)依照提示輸入現(xiàn)有的三位讀者的信息:"<<endl;
for(int m=0;m<3;m++)
{
cout<<"姓名:"<<endl;
cin>>reader[m].name;
cout<<"編號(hào):"<<endl;
cin>>reader[m].readernumber;
reader[m].card=0;
}
}
void Borrow_Book()
{
system("cls");
char reader_name[20];
int n,book_number;
cout<<"請(qǐng)輸入讀者姓名:"<<endl;
cin>>reader_name;
for(n=0;n<3;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
{
if(reader[n].card!=0)
{
cout<<"已借書(shū),不能再借,請(qǐng)按任意鍵返回"<<endl;
system("pause");
mainmenu();
}
else
break;
}
}
if(n==3)
{
cout<<"無(wú)此讀者!輸入有誤??!按任意鍵返回主菜單"<<endl;
system("pause");
mainmenu();
}
cout<<"請(qǐng)輸入所借圖書(shū)書(shū)號(hào):"<<endl;
cin>>book_number;
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=book_number;
}
for(n=0;n<v;n++)
{
if(book[n].booknumber==book_number)
{
if(book[n].num_present==0)
{
cout<<"該書(shū)已經(jīng)被借完,請(qǐng)按任意鍵返回"<<endl;
system("pause");
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=0;
}
mainmenu();
}
else
{
book[n].num_present--;
cout<<"借書(shū)成功,請(qǐng)按任意鍵返回"<<endl;
system("pause");
break;
}
}
}
if(n==v)
{
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=0;
}
cout<<"所輸入的書(shū)號(hào)不存在,請(qǐng)按任意鍵返回主菜單"<<endl;
system("pause");
mainmenu();
}
}void Return_Book()
{
system("cls");
int j;
char reader_name[20];
int book_number;
cout<<"請(qǐng)輸入讀者姓名:"<<endl;
cin>>reader_name;
for(j=0;j<3;j++)
{
if(strcmp(reader_name,reader[j].name)==0)
break;
}
if(j==3)
{
cout<<"無(wú)此讀者!輸入有誤!!按任意鍵返回主菜單"<<endl;
system("pause");
mainmenu();
}
cout<<"請(qǐng)輸入所還圖書(shū)書(shū)號(hào):"<<endl;
cin>>book_number;

for(j=0;j<3;j++)
{
if(strcmp(reader_name,reader[j].name)==0)
{
if(book_number==reader[j].card)
{
reader[j].card=0;
for(j=0;j<v;j++)
{
if(book[j].booknumber==book_number)
{
book[j].num_present++;
cout<<"還書(shū)成功,請(qǐng)按任意鍵返回"<<endl;
system("pause");
break;
}
}
}
else
{
cout<<"該讀者未借此書(shū)"<<endl;
system("pause");
}
}
if(j==v)
cout<<"所輸入的書(shū)號(hào)不存在:"<<endl;
}
}
void Output_Message()
{
system("cls");
int q;
cout<<"以下是圖書(shū)信息"<<endl<<endl;
for(q=0;q<v;q++)
{
cout<<"書(shū)號(hào):"<<book[q].booknumber<<'\t';
cout<<"書(shū)名:"<<book[q].name<<'\t';
cout<<"庫(kù)存量:"<<book[q].num_all<<'\t';
cout<<"現(xiàn)存量:"<<book[q].num_present<<endl;
}
cout<<"以下是讀者信息"<<endl<<endl;
for(q=0;q<3;q++)
{
cout<<"姓名:"<<reader[q].name<<'\t'
<<"編號(hào):"<<reader[q].readernumber<<'\t'
<<"所借書(shū)號(hào):"<<reader[q].card<<endl;
}
system("pause");
}
void Exit_System()
{
system("cls");
cout<<"歡迎下次使用,謝謝"<<endl;
system("pause");
}
void main()
{
mainmenu();
}

C++圖書(shū)館系統(tǒng)檢索問(wèn)題



這個(gè)鏈接可能對(duì)你有幫助

急用C++圖書(shū)管理系統(tǒng)

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>//輸入/輸出文件流類
using namespace std;
const int Maxr=100;//最多的讀者
const int Maxb=100;//最多的圖書(shū)
const int Maxbor=5;//每位讀者最多借五本書(shū)
//讀者類,實(shí)現(xiàn)對(duì)讀者的信息的描述

class Reader
{
private:
int tag; //刪除標(biāo)記 1:已刪 0:未刪
int no; //讀者編號(hào)
char name[10]; //讀者姓名
int borbook[Maxbor];//所借圖書(shū)
public:
Reader() {}
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)記 1:已刪 0:未刪
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)//借書(shū)操作
{
for(int i=0;i<Maxbor;i++)
{
if (borbook[i]==0)
{
borbook[i]=bookid;
return;

}
}

}
int retbook(int bookid)//還書(shū)操作
{
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<<"借書(shū)編號(hào):[";
for(int i=0;i<Maxbor;i++)
if(borbook[i]!=0)
cout << borbook[i] << "|";
cout << "]"<<endl;

}
};

//讀者類庫(kù),實(shí)現(xiàn)建立讀者的個(gè)人資料
class RDatabase
{
private:
int top; //讀者記錄指針
Reader read[Maxr];//讀者記錄
public:
RDatabase() //構(gòu)造函數(shù),將reader.txt讀到read[]中
{
Reader s;
top=-1;
fstream file("reader.txt",ios::in);//打開(kāi)一個(gè)輸入文件
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file)break;
top++;
read[top]=s;
}
file.close(); //關(guān)閉 reader.txt
}
void clear()//刪除所有讀者信息
{
top=-1;
}
int addreader(int n,char *na)//添加讀者時(shí)先查找是否存在
{
Reader *p=query(n);
if (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();
}
void 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()
{

char choice;
char rname[20];
int readerid;
Reader *r;
while (choice!='0')
{
cout <<"\n\n\t\t\t讀 者 維 護(hù)\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 << "輸入讀者編號(hào):";
cin >> readerid;
cout << "輸入讀者姓名:";
cin >> rname;
addreader (readerid,rname);
break;
case '2':
cout << "輸入讀者編號(hào):";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout << " 該讀者不存在 "<<endl;
break;
}
cout << "輸入新的姓名:";
cin >> rname;
r->setname(rname);
break;
case '3':
cout << " 輸入讀者編號(hào):";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<" 該讀者不存在" << endl;
break;
}
r->delbook();
break;
case '4':
cout << "讀入讀者編號(hào):";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<"該讀者不存在"<< endl;
break;
}
r->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";break;
}
}
}

//圖書(shū)類,實(shí)現(xiàn)對(duì)圖書(shū)的描述,圖書(shū)的編號(hào),書(shū)名,借出,還入等
class Book
{
private:
int tag;//刪除標(biāo)記 1:已刪 0:未刪
int no;//圖書(shū)編號(hào)
char name[20];//書(shū)名
int onshelf;//是否再架 1:再架 2:已借
public:
Book(){}
char *getname() { return name; }//獲取姓名
int getno(){ 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;
}
return 0;
}
void retbook()//還書(shū)操作
{
onshelf=1;
}
void disp()//輸出圖書(shū)
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "在架":"已借") <<endl;
}
};

//圖書(shū)庫(kù)類,實(shí)現(xiàn)對(duì)圖書(shū)的維護(hù),查找,刪除等
class BDatabase
{
private:
int top; //圖書(shū)記錄指針
Book book[Maxb]; //圖書(shū)記錄
public:
BDatabase()//構(gòu)造函數(shù),將book.txt讀到book[]中
{
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)//增加圖書(shū)
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
Book *query(int bookid)//查找圖書(shū)
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
void bookdata();//圖書(shū)庫(kù)維護(hù)
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
~BDatabase()//析構(gòu)函數(shù),將book[]寫(xiě)到book.txt文件中
{
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圖 書(shū) 維 護(hù) "<<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 << "輸入圖書(shū)編號(hào):"<<endl;
cin >> bookid;
cout << "輸入圖書(shū)書(shū)名:"<<endl;
cin >> bname;
addbook(bookid,bname);
break;
case '2':
cout << "輸入圖書(shū)編號(hào):"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout << " 該圖書(shū)不存在 "<<endl;
break;
}
cout << "輸入新的書(shū)名:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 讀入圖書(shū)編號(hào):"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書(shū)不存在" << endl;
break;
}
b->delbook();
break;
case '4':
cout << " 讀入圖書(shū)編號(hào):"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書(shū)不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";
}
}
}

//main() 函數(shù)的實(shí)現(xiàn),程序的主界面的引導(dǎo)

void main()
{
char choice;
int bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout <<endl<<endl<<"\t\t\t 圖 書(shū) 管 理 系 統(tǒng)\n\n\n";

cout <<"\t\t\t1 借 書(shū)\n\n\t\t\t2 還 書(shū) \n\n\t\t\t3 圖 書(shū) 維 護(hù)\n\n\t\t\t4 讀 者 維 護(hù)\n\n\t\t\t0 離 開(kāi)"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout <<" 借書(shū) 讀者編號(hào):";
cin >>readerid;
cout <<" 圖書(shū)編號(hào): ";
cin >>bookid;
r=ReaderDB.query(readerid);//按編號(hào)查找
if (NULL==r)
{
cout <<" 不存在該讀者,不能借書(shū)"<< endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書(shū),不能借書(shū)"<< endl;
break;
}
if (b->borrowbook()==0)
{
cout << " 該圖書(shū)已借出,不能借書(shū)"<< endl;
break;
}
r->borrowbook(b->getno());
break;
case '2':
cout<<"還書(shū)\n 讀者編號(hào):";
cin >>readerid;
cout << " 圖書(shū)編號(hào):";
cin >>bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout <<" 不存在該讀者,不能還書(shū)" << endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書(shū),不能還書(shū)" <<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
case '3':
BookDB.bookdata();
break;
case '4':
ReaderDB.readerdata();
break;
default:cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";

}
}
}
我也還是學(xué)生,我也用VB和數(shù)據(jù)庫(kù)編寫(xiě)了 管理系統(tǒng)。

標(biāo)簽

相關(guān)資訊

我是中博奧客服:小奧
中博奧技術(shù)有限公司& 版權(quán)所有工信部備案號(hào):豫ICP備11015869號(hào)-8 Copyright ? 2023-2024

檔案整理檔案數(shù)字化

檔案掃描檔案管理軟件系統(tǒng)

TEL:18937133779

To Top