當前位置:首頁 » 網路管理 » 對撤銷圖書信息的刪除是什麼意思
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

對撤銷圖書信息的刪除是什麼意思

發布時間: 2022-11-21 08:03:48

❶ 蘋果手機撤銷刪除是什麼意思

就是說撤銷、刪除、恢復出廠設置的意思。
永遠刪除數據無法恢復。

❷ 「撤銷刪除」是什麼意思

【釋義】:

「撤銷」是指在操作過程中對於步驟的一個刪改。例如電腦畫圖過程中,這個步驟畫錯了,可以點擊「撤銷」就回到了上一步,然後在去操作。

「刪除」是指不可恢復的丟棄。例如電腦中有些垃圾文件占內存,就可以單擊滑鼠右鍵點擊刪除,那表示這個文件就在電腦中不存在了。

❸ 對撤銷圖書信息的刪除如何用c語言實現

是圖書館管理系統吧
可以使用結構體標記每一本圖書的狀態(是否被借出,如果被借出則標記借出人的信息)
這樣只需要使用一個鏈表就行了
如果在永久保存數據則可以通過將鏈表寫入文件中進行保存

至於注冊不知道具體又有哪些要求
如果需要進行借書學生認證的話那就需要另一個資料庫(文件或者另一個鏈表)
根據輸入的學生號或者名字等(按具體要求定義)查詢是否為注冊用戶(或者也可以有認證密碼,按具體要求定義)

如果自己不想寫這個代碼的話
支付寶60幫你搞定(如果沒有注冊認證的話可以便宜點,看認證的具體要求復雜度了)

❹ C語言 圖書管館理系統

#include<iostream>
#include<fstream>
#include<conio.h>
using namespace std;

class Librarian //圖書管理員類
{
public:
Librarian();
Librarian(int n,int j,char na[20],int w );
int getnumber();
int getjobage();
char *getname();
int getwages();
void resetjobage(int j);
void resetwages(int w);
void resetname(char na[20]);
private:
int number;
int jobage;
char name[20];
int wages;
};
Librarian::Librarian() //其函數的實現
{
number=0;
char b[20]="no one";
jobage=0;
strcpy(name,b);
}
Librarian::Librarian(int n,int j,char na[20],int w)
{
number=n;
jobage=j;
strcpy(name,na);
wages=w;
}
int Librarian::getjobage()
{return jobage;}
char *Librarian::getname()
{return name;}
int Librarian::getnumber()
{return number;}
int Librarian::getwages()
{return wages;}
void Librarian::resetjobage(int j)
{
jobage=j;
}
void Librarian::resetname(char na[20])
{
strcpy(name,na);

}
void Librarian::resetwages(int w)
{
wages=w;
}

class reader //讀者類
{
private:
int number;
int age;
char name[20];
char borrowbook[20];
public:
reader();
reader(int c,int a,char b[20],char e[20]);
int getnumber();
int getage();
char *getname();
char * getborrowbook();
void reworkborrowbook(char a[20]);
};
reader::reader() //其函數的實現
{
char a[20]="沒有人";
char c[20]="沒有借書";
number=0;
age=0;
}
reader::reader(int a,int c,char d[20],char e[20])
{
number=a;
age=c;
strcpy(name,d);

strcpy(borrowbook,e);
}
int reader::getnumber(){return number;}
int reader::getage(){return age;}
char *reader::getname(){return name;}
char * reader::getborrowbook(){return borrowbook;}
void reader::reworkborrowbook(char a[20]){strcpy(borrowbook,a);}

struct book //圖書的結構體
{
int num;

char name[20];
char writer[20];
};

void outbookinf() //輸出所有圖書信息
{
int i;
ifstream infile("allbook.txt",ios::in);
char line[50];
cout<<"書名"<<'\t'<<"書號"<<'\t'<<"作者"<<endl;
for(i=1;i<=10;i++)
{
infile.getline(line,50,'\n');
cout<<line<<endl;
}
infile.close();
}

void serchLaninf() //圖書管理員信息函數
{
int n,i;
ifstream file("serchLaninf.txt");
if(file) { file>>n; file.close();}
else {cout<<"沒有圖書管信息理員"; exit(0);}
ifstream is("controlloer.txt",ios_base::binary);
if(is)
{
Librarian *A=new Librarian[n];
for(i=0;i<n;i++)
{
is.read((char *)&A[i],sizeof(A[i]));
}
for(i=0;i<n;i++)
{
cout<<"編號"<<'\t'<<"工齡"<<'\t'<<"名字"<<'\t'<<"工資"<<endl;
cout<<A[i].getnumber()<<"\t"<<A[i].getjobage()<<"\t"<<A[i].getname()<<"\t"<<A[i].getwages()<<endl;
}
}
else
{
cout<<"txt文件打開出錯'"<<endl;
}
is.close();
}

void libary() //圖書館的總信息
{
system("cls");
system("color 2e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<"本校圖書館由本部圖書館及彭州校區圖書館組成,圖書館總面積達了****平方米";
cout<<" (本館現在有***類書籍***萬冊,****類書籍****萬冊,****類書籍****萬冊****類書籍****萬冊),";
cout<<"圖書館現有工作人員***名";
cout<<"圖書館現有的現代化設備價值超過****萬元………………"<<endl;
}

void storelibrarian() //存入新的管理員的信息
{
int age,n,num,wage;
char name[20];
ifstream file("serchLaninf.txt");
if(file) { file>>n; file.close();}
else { n=0;}
cout<<"已有的圖書管理員個數:";
cout<<n<<endl;
cout<<"請輸入新圖書管理員的編號和工齡,名字和工資:";
cin>>num>>age>>name>>wage;
Librarian A(num,age,name,wage);
cout<<"編號 工齡 名字 工資 "<<endl;
cout<<A.getnumber()<<" "<<A.getjobage()<<" "<<A.getname()<<" "<<A.getwages()<<endl;
ofstream outfile("controlloer.txt",ios_base::app );
outfile.write((char *)&A,sizeof(A));
outfile.close();
n++;
ofstream tfile("serchLaninf.txt");
tfile<<n;
tfile.close();
cout<<"保存成功!";
}

void reLaninf() //修改圖書管理員
{
int i,n,h,jobage,wage,j;
char name[20];
ifstream file("serchLaninf.txt");
if(file) { file>>n; file.close();}
else {cout<<"沒有圖書管信息理員";
exit(0);}
cout<<"已有的圖書管理員個數:";
cout<<n<<endl;
Librarian *A=new Librarian[n];
ifstream is("controlloer.txt",ios_base::binary);
if(is)
{
for(i=0;i<n;i++)
{
is.read((char *)&A[i],sizeof(A[i]));
}
for(i=0;i<n;i++)
{
cout<<"編號 工齡 名字 工資"<<endl;
cout<<A[i].getnumber()<<" "<<A[i].getjobage()<<" "<<A[i].getname()<<" "<<A[i].getwages()<<endl;
}
}
else
{
cout<<"打開文件出錯"<<endl;
}
is.close();
cout<<"請選擇你要修改的管理員編號:";
cin>>h;
cout<<"輸入新的工齡,名字,工資:";
cin>>jobage>>name>>wage;
A[h-1].resetjobage(jobage);
A[h-1].resetname(name);
A[h-1].resetwages(wage);
cout<<"該管理員修改後的名字是:"<<A[h-1].getname()<<" 工齡是:"<<A[h-1].getjobage()<<" 工資是:"<<A[h-1].getwages()<<endl;
ofstream tfile("controlloer.txt",ios_base::binary);
for(j=0;j<n;j++)
{
tfile.write((char *)&A[j],sizeof(A[j]));
}
tfile.close();
}

void aadbook() //新增圖書
{
int num;char name[12];char writer[10];int n;
a:
ofstream fout("allbook.txt",ios::app);
cout<<"請錄入圖書信息:"<<endl;
cout<<"書名"<<'\t'<<"書號"<<'\t'<<"作者"<<endl;
cin>>name;fout<<name<<'\t';
cin>>num;fout<<num<<'\t';
cin>>writer;fout<<writer<<'\n';
fout.close();
cout<<"是否繼續錄入?1.是2.否"<<endl;
cin>>n;
if(n==1)
goto a;
else
{void studentland();
studentland();}
}

void delate() //刪除函數
{ int m;
cout<<"選擇操作選項:"<<endl;
cout<<" 1.刪除全部信息"<<endl;
cout<<" 2.單個刪除"<<endl;
cin>>m;
if(m==1)
{ofstream file("allbook.txt",ios::trunc);
cout<<"全部刪除完畢,按任意鍵返回!"<<endl;
file.close();
getch();
system("cls");
void studentland();
studentland();
}
char str[10][80],buf[20];
a:
int i=0,flag=100,c=0;

ifstream fin("allbook.txt");
if(!fin){
cout<<"文件打開失敗!"<<endl;
getch();
system("cls");
void studentland();
studentland();
}
cout<<"請輸入你要刪除的書名:"<<endl;
cin>>buf;
strcat(buf,"\t");

while(fin.getline(str[i],80))
{
if(strncmp(str[i],buf,strlen(buf))==0)
{
flag=i;
}
i++;
}

fin.close();

if(flag==100)
{
cout<<"沒有你所要刪除的書籍!重新按1,否則0....."<<endl;
int b;
cin>>b;
if(b==1)goto a;
else c=1;
}
if(c==0){
ofstream fout("allbook.txt");
for(int j=0;j<i;j++){
if(j==flag)continue;
fout<<str[j]<<endl;
}
fout.close();
cout<<"你要刪除的書籍的信息已刪除,繼續按1,否則按0....."<<endl;
int b;
cin>>b;
if(b==1)goto a;
}
cout<<"操作已經結束,按任意鍵返回......"<<endl;
getch();
system("cls");
void studentland();
studentland();
}

void searchbook() // 查找書籍
{
a:
ifstream fin;
int flag=0,b,length;
char str[20];
char f[200];char g[200];
fin.open("allbook.txt");
if(!fin)
{
cout<<"Open f1.dat error....."<<endl;
exit(1);
}
while(1)
{
cout<<"請輸入書名:";
cin>>str;
strcat(str,"\t");
length=strlen(str);
cout<<"------------------------------------"<<endl;
while(fin.getline(f,199))
{
strcpy(g,f);
if(strncmp(str,f,length)==0)
{
flag=1;
break;
}
}
if(flag==1)
{
cout<<"所查詢的書已經找到:"<<'\n';
cout<<"--------------------------------"<<endl;
cout<<"書名"<<'\t'<<"書號"<<'\t'<<"作者"<<'\t'<<endl;
cout<<g<<endl;
cout<<"--------------------------------"<<endl;
flag=0;
cout<<"要繼續查詢按1,否則按0:"<<endl;
cin>>b;
if(b==0)break;
}
else
{
fin.close();
cout<<"沒有此書,繼續按1,否則按0..."<<endl;
cin>>b;
if(b==0)break;
goto a;
}
}
fin.close();
cout<<"查詢完畢,按任意鍵返回......"<<endl;
getch();
system("cls");
void studentland();
studentland();
}

void seachreader() // 查詢讀者信息
{
a:
ifstream fin;
int flag=0,b,length;
char str[20];
char f[200];char g[200];
fin.open("readernum.txt");
if(!fin)
{
cout<<"沒有此信息文件!"<<endl;
exit(1);
}
while(1)
{
cout<<"請輸入你要查找讀者的名字:";
cin>>str;
strcat(str,"\t");
length=strlen(str);
cout<<"------------------------------------"<<endl;
while(fin.getline(f,199))
{
strcpy(g,f);
if(strncmp(str,f,length)==0)
{
flag=1;
break;
}
}
if(flag==1)
{
cout<<"所查詢的讀者已經找到:"<<'\n';
cout<<"--------------------------------"<<endl;
cout<<"名字"<<'\t'<<"編號"<<'\t'<<"年齡"<<'\t'<<"借書次數"<<endl;
cout<<g<<endl;
cout<<"--------------------------------"<<endl;
flag=0;
cout<<"要繼續查詢按1,否則按0:"<<endl;
cin>>b;
if(b==0)break;
goto a;
}
else
{
fin.close();
cout<<"沒有此人,繼續按1,否則按0..."<<endl;
cin>>b;
if(b==0)break;
goto a;
}
}
fin.close();
cout<<"查詢完畢,按任意鍵返回......"<<endl;
getch();
system("cls");
void studentland();
studentland();
}

/*void seachreader() //查詢讀者的信息
{
int i,b,h=0;
char a[20];
ifstream file("readernum.txt");
if(file) { file>>b; file.close();}
else { cout<<"沒有文件";}
cout<<"已有的讀者個數:";
cout<<b<<endl;
reader *A=new reader[b];
ifstream is("reader.txt",ios_base::binary);
if(is)
{

for(i=0;i<b;i++)
{
is.read((char *)&A[i],sizeof(A[i]));
}
}
else
{
cout<<"txt文件打開出錯"<<endl;
}
is.close();
cout<<"請輸入你要查找讀者的名字:";
cin>>a;
for(i=0;i<b;i++)
{
if(strcmp(A[i].getname(),a)==0)
{
cout<<"編號 年齡 名字 借書情況 "<<endl;
cout<<A[i].getnumber()<<" "<<A[i].getage()<<" "<<A[i].getname()<<" "<<A[i].getborrowbook()<<endl;
h++;
}
}
if(h==0)cout<<"沒有這個讀者!";
}
*/

void Librarianland() //管理員登陸函數
{
int q,l=1,i,h;
system("cls");
system("color 2e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"現在進行身份確認,請輸入口令:";
cin>>i;
while(l)
{
if(i==00000)
{
system("cls");
system("color 3e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"|*******" <<"0,返回上一級菜單."<<" ******|"<<endl;
cout<<" "<<"|*******" <<"1,查詢圖書館管理員的信息"<<" ******|"<<endl;
cout<<" "<<"|*******" <<"2,存入新的管理員信息. "<<" ******|"<<endl;
cout<<" "<<"|*******" <<"3,修改圖書管理員的信息"<<" ******|"<<endl;
cout<<" "<<"|*******" <<"4,新增圖書"<<" ******|"<<endl;
cout<<" "<<"|*******" <<"5,刪除圖書"<<" ******|"<<endl;
cout<<"請選擇執行的操作:";
cin>>q;
if(q>=0&&q<6)
{
switch(q)
{
case 0:
l=0;
break;
case 1:serchLaninf();
system("pause");
break;
case 2:storelibrarian();
system("pause");
case 3:reLaninf();
system("pause");
break;
case 4:
void aadbook();
aadbook();
break;
case 5:
void delate();
delate();
break;
default:
break;
}
}
else
{
system("cls");
system("color 4e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"操作無效!"<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
system("pause");
}
}
else
{
system("cls");
system("color 2e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<" 身份確認失敗"<<endl;
cout<<" "<<" 是否重新確認!"<<endl;
cout<<" "<<"重新確認請按請按1,放棄請按0"<<endl;
cout<<" ";
cin>>h;
if(h==0) l=0;
if(h==1)
{
system("cls");
system("color 2e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"請再次輸入口令:";
cin>>i;
}
}

}
}

void studentland() //學生登陸函數
{
int h;
char l='y';
while(l=='y')
{
system("cls");
system("color 3e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"****** "<<"|輸出藏書信息,請按1 | "<<"******"<<endl;
cout<<" "<<"****** "<<"|查詢圖書館的總信息,請按2| "<<"******"<<endl;
cout<<" "<<"****** "<<"|按書名查找圖書,請按3 | "<<"******"<<endl;
cout<<" "<<"****** "<<"|查詢讀者的信息,請按4 | "<<"******"<<endl;
cout<<" "<<" ****** "<<"|返回上一級菜單,請按0 | "<<"******"<<endl;
cout<<"請選擇您將執行的操作:";
cin>>h;
if(h>=0&&h<5)
switch(h)
{
case 0:
l='n';
break;
case 1:outbookinf();
system("pause");
break;
case 2:libary();
system("pause");
break;
case 3:searchbook();
system("pause");
break;
case 4:seachreader();
system("pause");
break;
}
else
{
system("cls");
system("color 4e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"您的操作是無效的!!!!"<<endl;
system("pause");
}
}
}

void main() // 主函數
{
int h,l=1;
while(l)
{
system("cls");
system("color 7c");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"圖書管理系統"<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" ------------------"<<endl;
cout<<" "<<"||管理員登陸 請按1||"<<endl;
cout<<" "<<"||學生登陸 請按2 ||"<<endl;
cout<<" "<<"||退出系統 請按0 ||"<<endl;
cout<<" -------------------"<<endl;
cout<<""<<endl;
cout<<" 請您選擇登陸方式:";
cin>>h;
if(h>=0&&h<3)
{
switch(h)
{
case 0:
cout<<"謝謝光臨本圖書館!"<<endl;
exit(0);
case 1:
Librarianland();
system("pause");
break;
case 2:
studentland();
system("pause");
break;
}
}
else
{
system("cls");
system("color 4e");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<"您的操作是無效的!!!!"<<endl;
system("pause");
}
}
}

❺ 求C++程序 圖書管理系統

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;
const int Maxr=100; //讀者上限
const int Maxb=100; //圖書上限
const int Maxbor=5; //每個讀者最多借借5本
class Reader //讀者類
{
int tag; //刪除標記 1:已刪,0:未刪
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);
}

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 //讀者庫類
{
int top; //讀者記錄指針
Reader read[Maxr]; //讀者記錄
public:
RDatabase() //構造函數,將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);
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(); //讀者庫維護
~RDatabase() //析構函數,將read[]寫入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 readerid;
Reader *r;
while (choice!=0)
{
cout<<"讀者維護 1:新增 2:更改 3:刪除 4:查找 5:顯示 6:全刪 0:退出=>";
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;
}
}
}
class Book //圖書類
{
int tag; //刪除標記 1:已刪 0:未刪
int no; //圖書編號
char name[20]; //書名
int onshelf; //是否在架 1:在架 0:已借
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 //圖書庫類
{
int top; //圖書記錄指針
Book book[Maxb]; //圖書記錄
public:
BDatabase() //構造函數,將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) //增加圖書
{
Book *p=query(n);
if (p==NULL)
{
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();
}
~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()
{
int choice=1;
char bname[40];
int bookid;
Book *b;
while (choice!=0)
{
cout<<"圖書維護 1:新增 2:更改 3:刪除 4:查找 5:顯示 6:全刪 0:退出=>";
cin>>choice;
switch (choice)
{
case 1:
cout<<"輸入圖書編號:";
cin>>bookid;
cout<<"輸入圖書書名:";
cin>>bname;
addbook(bookid,bname);
break;
case 2:
cout<<"輸入圖書編號:";
cin>>bookid;
b=query(bookid);
if (b==NULL)
{
cout<<"該圖書不存在"<<endl;
break;
}
cout<<"輸入新的書名:";
cin>>bname;
b->setname(bname);
break;
case 3:
cout<<"輸入圖書編號:";
cin>>bookid;
b=query(bookid);
if (b==NULL)
{
cout<<"該圖書不存在"<<endl;
break;
}
b->delbook();
break;
case 4:
cout<<"輸入圖書編號:";
cin>>bookid;
b=query(bookid);
if (b==NULL)
{
cout<<"該圖書不存在"<<endl;
break;
}
b->disp();
break;
case 5:
disp();
break;
case 6:
clear();
break;
}
}
}
int main()
{
int choice=1,bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!=0)
{
cout<<"1:借書 2:還書 3:圖書維護 4:讀者維護 0:離開=>";
cin>>choice;
switch (choice)
{
case 1:
cout<<" 借書 讀者編號:";
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;
}
if (b->borrowbook()==0)
{
cout<<"該讀者不存在,不能借書"<<endl;
break;
}
r->borrowbook(b->getno());
break;
case 2:
cout<<"還書 讀者編號:";
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;
}
}
}

❻ c語言圖書管理系統

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

typedef int BOOL;

typedef struct bookinfo
{
char number[15];/*產品編號*/
char name[30];/*產品名稱*/
float price;/*單價*/
char auther[20];/*作者*/
BOOL isExit;/*存在狀態*/
char lendername[20];/*借書人姓名*/
char lendersex[2];/*借書人性別*/
char lendernum[15];/*借書人學號*/
}BOOKINFO;

void menu()
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t圖書管理系統\n");
printf("\t\t\t1:新進圖書基本信息的輸入\n");
printf("\t\t\t2:顯示全部記錄\n");
printf("\t\t\t3:根據圖書名稱查詢圖書基本信息\n");
printf("\t\t\t4:根據圖書名稱對撤銷的圖書信息進行刪除\n");
printf("\t\t\t5:按照圖書名稱從小大到排序\n");
printf("\t\t\t6:統計某價格以上的圖書數量\n");
printf("\t\t\t7:列出所有未借出去的圖書信息\n");
printf("\t\t\t8:退出\n");
}
void choice_1_input_new()/*輸入新進的圖書信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;

system("cls");
while(1)
{
printf("輸入圖書編號:");
gets(newbook.number);

printf("輸入圖書名稱:");
gets(newbook.name);

printf("輸入圖書單價:");
scanf("%f",&newbook.price);
while(getchar()!='\n');

printf("輸入圖書的作者:");
gets(newbook.auther);

printf("輸入借書人姓名:");
gets(newbook.lendername);

printf("輸入借書人性別:");
gets(newbook.lendersex);

printf("輸入借書人學號:");
gets(newbook.lendernum);

printf("是否保存該條書目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
newbook.isExit=1;/*將圖書狀態設置成1,表示沒有借出*/

p=fopen("c:\\bookinfo.data","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);

printf("\n該條書目已添加到c:\\bookinfo.data文件中!\n");
}
else
{
printf("\n本條書目未保存!\n");
}
printf("\n是否繼續添加書目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
void choice_2_display_all()/*顯示全部圖書信息*/
{
FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;

system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
/*booknumber--;使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("沒有任何圖書信息!\n\n");
}
else
{
n=0;
printf(" 圖書信息如下\n");
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;
}
}
printf("\n\n按任意鍵回到主菜單!\n");
getch();
}

void choice_3_search_according_name()/*根據圖書名稱顯示圖書的信息*/
{
char search[20]="";/*search用來存放要查詢的書名*/
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;

system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
while(1)
{
printf("輸入要查詢的書本名稱:");
gets(search);
if(booknumber==0)
{
printf("書庫中沒有任何信息!\n\n");
printf("按任意鍵回到主菜單!\n\n");
getch();
break;
}/*if結束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("該書的詳細信息如下:\n");
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;
}
if(n>=booknumber)
printf("沒有查找該書的任何信息!\n");
printf("\n\n是否繼續查詢?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else結束*/
}/*while(1)結束*/
}
void choice_4_delete_according_name()/*根據圖書名稱對圖書信息進行刪除*/
{
char search[20]="";/*search用來存放要刪除的書名*/
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;

system("cls");
while(1)
{
printf("輸入要刪除的書本名稱:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
if(booknumber==0)
{
printf("書庫中沒有任何信息!\n\n");
printf("按任意鍵回到主菜單!\n\n");
getch();
break;
}/*if結束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("沒有查找該書的任何信息!\n");
else
{
printf("是否確認需要刪除該條書目?(Y/N)");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;

p=fopen("c:\\bookinfo.data","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);

printf("刪除成功!\n");
}
else
printf("\n\n該條書目沒有被刪除!");
}
printf("\n\n是否繼續進行刪除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else結束*/
}/*while(1)結束*/
}
void choice_5_sort_according_name()/*根據圖書名稱排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[100];
int booknumber;

p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
if(booknumber==0)
{
printf("沒有任何圖書信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(strcmp(bookinfo[m].name,bookinfo[n].name)>0)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("c:\\bookinfo.data","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
}
printf("按任意鍵回到主菜單!\n");
getch();
}

void choice_6_display_high_price()/*根據價格列出圖書信息*/
{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;

system("cls");
printf("請輸入價格:");
scanf("%f",&price);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
if(booknumber==0)
{
printf("沒有任何圖書信息!\n\n");
}
else
{
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
count++;
}
if(count==0)
printf("書庫中沒有比%.1f$價格高的圖書!",price);
else
{
printf(" 價格高於%.1f$的圖書信息如下\n",price);
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n\n按任意鍵回到主菜單!\n");
getch();
}
void choice_7_display_according_exitflag()/*根據存在狀態列出圖書信息*/
{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;

system("cls");
booknumber=0;
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("書庫中沒有任何書目存在!\n");
}
else
{
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
count++;
if(count==0)
printf("書庫中的書籍全部借出!\n");
else
{
printf("書庫中未被借出的圖書信息如下:\n\n");
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n按任意鍵返回主菜單!\n");
getch();
}

void main()
{
char choice;
clock_t tm;
FILE *p;
if((p=fopen("c:\\bookinfo.data","rb"))==NULL)
{
p=fopen("c:\\bookinfo.data","wb");
fclose(p);
}
while(1)
{
system("cls");
menu();
choice=getch();
switch(choice)
{
case '1':choice_1_input_new();break;/*輸入新進的圖書信息*/
case '2':choice_2_display_all();break;/*顯示全部圖書信息*/
case '3':choice_3_search_according_name();break;/*根據圖書名稱顯示圖書的信息*/
case '4':choice_4_delete_according_name();break;/*根據圖書名稱對圖書信息進行刪除*/
case '5':choice_5_sort_according_name();break;/*根據圖書名稱排序*/
case '6':choice_6_display_high_price();break;/*根據價格列出圖書信息*/
case '7':choice_7_display_according_exitflag();break;/*根據存在狀態列出圖書信息*/
case '8':printf("\n\n\t\t\t謝謝使用,再見!\n\t\t\t按任意鍵退出!\n");getch();return;
default:
printf("\n\n\t\t\t請輸入菜單中的數字!(1~8)");
tm=clock();
while(clock()<tm+1800);
break;
}
}
}
寫的很趕,不知道行不行
程序很長,但是沒什麼復雜的東西。
要是寫的不好,樓主就將就吧。

❼ c語言圖書管理系統程序設計

一 程序設計說明書
【設計題目】 圖書館借閱管理
【問題描述】圖書館,適合用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<Maxbor;i++)誤寫為for(int i=1;i<Maxbor;i++),使循環發生錯誤。
2.指針使用錯誤,指針b和r混淆,導致編譯錯誤得到「error C2660: 'retbook' : function does not take 1 parameters」錯誤報告。

❽ 撤銷刪除和恢復刪除的區別

撤銷,刪除的意思就是不想刪除這個東西了。所以選擇撤銷就是不想殺那一次。恢復,刪除的意思就是已經刪除了的東西,你想再把它還原。

❾ 圖書管理系統設計

作業還是要自己做,不然你怎麼提高,以後還要靠這東西吃飯的

❿ 電腦里的撤銷和刪除有什麼區別

撤銷是取消前一步的操作,如前一步進行了重命名、移動、復制操作,撤銷會恢復重命名、移動、復制前的狀態。快捷鍵是CTRL+z。注意有些操作是無法撤銷的。
刪除是從硬碟中刪除文件或記錄,普通方法是無法恢復的。