java图书馆系统怎么看代码看数据库的信息

java图书馆系统怎么看代码看数据库的信息,第1张

点击电脑的开始。

首先点击电脑的开始,找到QLServer配置管理器,将SQLServer网络配置中的SQLEXPRESS的协议如下图中的三个服务改为启用,然后点击TCPIP协议,修改动态端口为1433,重启服务器才能生效,首先建立一个java项目,命名为TestDB然后右键点击TestDB选择buildpath然后找到AddExternalJARs,找到下载的sqljdbc的包,打开即可,然后项目的referencedlibraries目录下能看到导入的包,新建一个包database包中再建立TestConect执行以下代码,代码执行结果和数据库中查询的结果一样。

#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:

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; }//设置删除标记 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)//借书 *** 作

{

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:

RDatabase() //构造函数,将readertxt读到read[]中

{

Reader s;

top=-1;

fstream file("readertxt",ios::in);//打开一个输入文件

while (1)

{

fileread((char )&s,sizeof(s));

if (!file)break;

top++;

read[top]=s;

}

fileclose(); //关闭 readertxt

}

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[]写到readertxt文件中

{

fstream file("readertxt",ios::out);

for (int i=0;i<=top;i++)

if (read[i]gettag()==0)

filewrite((char )&read[i],sizeof(read[i]));

fileclose();

}

};

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:

int tag;//删除标记 1:已删 0:未删

int no;//图书编号

char name[20];//书名

int onshelf;//是否再架 1:再架 2:已借

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:

BDatabase()//构造函数,将booktxt读到book[]中

{

Book b;

top=-1;

fstream file("booktxt",ios::in);

while (1)

{

fileread((char )&b,sizeof(b));

if (!file) break;

top++;

book[top]=b;

}

fileclose();

}

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();

}

~BDatabase()//析构函数,将book[]写到booktxt文件中

{

fstream file("booktxt",ios::out);

for (int i=0;i<=top;i++)

if (book[i]gettag()==0)

filewrite((char )&book[i],sizeof(book[i]));

fileclose();

}

};

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() 函数的实现,程序的主界面的引导

void 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=ReaderDBquery(readerid);//按编号查找

if (NULL==r)

{

cout <<" 不存在该读者,不能借书"<< endl;

break;

}

b=BookDBquery(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=ReaderDBquery(readerid);

if (r==NULL)

{

cout <<" 不存在该读者,不能还书" << endl;

break;

}

b=BookDBquery(bookid);

if (b==NULL)

{

cout <<" 不存在该图书,不能还书" <<endl;

break;

}

b->retbook();

r->retbook(b->getno());

break;

case '3':

BookDBbookdata();

break;

case '4':

ReaderDBreaderdata();

break;

default:cout<<"输入错误,请从新输入:";

}

}

}

#include<stringh>

#include<iostream>

using namespace std;

class Book

{

private:

char title[20]; //书名

char author1[20]; //作者1

char author2[20]; //作者2

char author3[20]; //作者3

char author4[20]; //作者4

char press[20]; //出版社

char isbn[20]; //国际编号

float price; //价格

int stock; //库存

int author_num; //作者人数

public:

void show_title() //显示书名

{

cout << "<" << title << ">" << endl;

}

void set_title(char new_title[20]) //设置书名

{

strcpy(title,new_title);

}

bool check_title(char search[20]) //比较书名是否相同

{

if( strcmp(title,search) == 0)

return true;

else

return false;

}

void show_stock() //显示库存

{

cout<<stock<<endl;

}

void set_stock(int new_stock) //设置库存

{

stock = new_stock;

}

void set_isbn(char new_isbn[20])

{

strcpy(isbn,new_isbn);

}

bool check_isbn(char search[20])

{

if(strcmp(isbn,search)==0)

return true;

else

return false;

}

void show_isbn()

{

cout << isbn <<endl;

}

};

int main()

{

Book book[10];

book[0]set_title("书名0"); book[0]set_isbn("isbn0");

book[1]set_title("书名1"); book[1]set_isbn("isbn1");

book[2]set_title("数据库"); book[2]set_isbn("123456");

book[3]set_title("书名3"); book[3]set_isbn("isbn3");

book[4]set_title("书名4"); book[4]set_isbn("isbn4");

book[5]set_title("书名5"); book[5]set_isbn("isbn5");

book[6]set_title("书名6"); book[6]set_isbn("isbn6");

book[7]set_title("书名7"); book[7]set_isbn("isbn7");

book[8]set_title("书名8"); book[8]set_isbn("isbn8");

book[9]set_title("计算机网络"); book[9]set_isbn("654321");

int i;

for(i=0;i<10;i++)//通过书名检索,名为数据库的书,输出其编号

{

if(book[i]check_title("数据库"))

{

cout << "书名为<数据库>的书,ISBN号为";

book[i]show_isbn();

}

}

for(i=0;i<10;i++)//通过ISBN检索,ISBN为654321的书,输出其书名,并更新库存为99

{

if(book[i]check_isbn("654321"))

{

cout << "ISBN号为654321的书,书名为";

book[i]show_title();

book[i]set_stock(99);//更新库存

}

}

return 0;

}

/

更新,main:

/

int main()

{

Book book[10];

book[0]set_title("书名0"); book[0]set_isbn("isbn0");

book[1]set_title("书名1"); book[1]set_isbn("isbn1");

book[2]set_title("数据库"); book[2]set_isbn("123456");

book[3]set_title("书名3"); book[3]set_isbn("isbn3");

book[4]set_title("书名4"); book[4]set_isbn("isbn4");

book[5]set_title("书名5"); book[5]set_isbn("isbn5");

book[6]set_title("书名6"); book[6]set_isbn("isbn6");

book[7]set_title("书名7"); book[7]set_isbn("isbn7");

book[8]set_title("书名8"); book[8]set_isbn("isbn8");

book[9]set_title("计算机网络"); book[9]set_isbn("654321");

int i;

char search[20];

cout << "输入书名检索:";

cin >> search;

Book p = NULL;

bool flag = 0;

p = book;

for(i=0;i<10;i++)//通过书名检索

{

if(p->check_title(search))

{

cout << "书名为<" << search << ">的书,ISBN号为";

p->show_isbn();

flag = 1;

break;

}

p++;

}

if(!flag)

cout << "书名为<" << search << ">的书未找到" << endl;

cout << "输入ISBN检索:";

cin >> search;

flag = 0;

p = book;

for(i=0;i<10;i++)//通过ISBN检索

{

if(p->check_isbn(search))

{

cout << "ISBN号为" << search <<"的书,书名为";

p->show_title();

p->set_stock(99);//更新库存

flag = 1;

break;

}

p++;

}

if(!flag)

cout << "ISBN号为" << search <<"的书未找到" << endl;

return 0;

}

<运行结果:>

输入书名检索:数据库

书名为<数据库>的书,ISBN号为123456

输入ISBN检索:654321

ISBN号为654321的书,书名为<计算机网络>

数据库代码类型的书开发了,数据库代码类型的书应该是存在的,而且在数据库领域中是非常重要的一类书籍。这类书籍主要介绍关系数据库的设计、SQL语言的使用、SQL优化、存储过程、触发器等数据库编程相关的内容,特别是针对数据库开发者。针对不同的数据库类型(如Oracle、MySQL、SQL Server、PostgreSQL等),可能需要阅读不同版本的相关书籍。

常见的数据库编程书籍包括:

1 《Learning SQL: Master SQL Fundamentals》:是一本适合初学者的SQL语言入门书,介绍了SQL基础知识和语句的使用。

2 《SQL Cookbook: Query Solutions and Techniques for Database Developers》:适合有一定SQL语言使用经验的数据库开发人员,主要讲解SQL使用技巧和优化方法,提高查询效率。

3 《Head First SQL: Your Brain on SQL — A Learner's Guide》:适合想要以有趣、生动的方式学习SQL语言的读者,通过“Brain Puzzlers”等方式,学习SQL的语法和逻辑。

4 《数据仓库实战》:透过大量的实例剖析,展示如何使用Oracle、MySQL、SQL Server等主流数据库平台建立数据仓库。

总之,针对不同的应用场景、业务领域和数据库平台,需要阅读不同类型的数据库编程书籍,以提升自己的编程技能和开发水平。

//

#include <iostream>

#include <iomanip>

#include <cstring>

#include <fstream>//输入/输出文件流类

using namespace std;

const int Maxr=100;//最多的读者

const int Maxb=100;//最多的图书

const int Maxbor=5;//每位读者最多借五本书

//读者类,实现对读者的信息的描述

class Reader

{

private:

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; }//设置删除标记 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)//借书 *** 作

{

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:

RDatabase() //构造函数,将readertxt读到read[]中

{

Reader s;

top=-1;

fstream file("readertxt",ios::in);//打开一个输入文件

while (1)

{

fileread((char )&s,sizeof(s));

if (!file)break;

top++;

read[top]=s;

}

fileclose(); //关闭 readertxt

}

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[]写到readertxt文件中

{

fstream file("readertxt",ios::out);

for (int i=0;i<=top;i++)

if (read[i]gettag()==0)

filewrite((char )&read[i],sizeof(read[i]));

fileclose();

}

};

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:

int tag;//删除标记 1:已删 0:未删

int no;//图书编号

char name[20];//书名

int onshelf;//是否再架 1:再架 2:已借

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:

BDatabase()//构造函数,将booktxt读到book[]中

{

Book b;

top=-1;

fstream file("booktxt",ios::in);

while (1)

{

fileread((char )&b,sizeof(b));

if (!file) break;

top++;

book[top]=b;

}

fileclose();

}

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();

}

~BDatabase()//析构函数,将book[]写到booktxt文件中

{

fstream file("booktxt",ios::out);

for (int i=0;i<=top;i++)

if (book[i]gettag()==0)

filewrite((char )&book[i],sizeof(book[i]));

fileclose();

}

};

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(void)

{

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=ReaderDBquery(readerid);//按编号查找

if (NULL==r)

{

cout <<" 不存在该读者,不能借书"<< endl;

break;

}

b=BookDBquery(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=ReaderDBquery(readerid);

if (r==NULL)

{

cout <<" 不存在该读者,不能还书" << endl;

break;

}

b=BookDBquery(bookid);

if (b==NULL)

{

cout <<" 不存在该图书,不能还书" <<endl;

break;

}

b->retbook();

r->retbook(b->getno());

break;

case '3':

BookDBbookdata();

break;

case '4':

ReaderDBreaderdata();

break;

default:cout<<"输入错误,请从新输入:";

}

}

return 0;

}

希望能解决您的问题。

#include<stdioh>

#include <stringh>

#include <stdlibh>

#include<conioh>

#define Max 2

typedef struct book //书的信息

{

char book_num[10];//书号

char book_name[20];//书名

char book_writer[10];//作者

int book_xy;//书的剩余数量

int book_kc;//书的总数量

struct book next;

}BK;

typedef struct borrow //被借书的信息

{

char borrow_book_num[10];//借书书号

char limit_date[8];//借书归还日期

}BO;

typedef struct reader //读者信息

{

char reader_num[10];//读者号

char reader_name[10];//读者姓名

int right;//已借数量

BO borrow[Max];//已借书信息

struct reader next;

}RD;

BK h_book;

RD h_reader;

void Login();

int Menu();

void Init();

void Init_book();

void Menu_select();

void Insert_New_Book();

void Find_Book();

void add_reader();

void Print_reader();

void Print_book();

void Borrow_Book();

void Return_Book();

void Save();

void Save_Book();

void Save_Reader();

void Load();

void Load_Reader();

void Load_Book();

void Login()

{

system("cls");

printf("\n\n\n\t\t\t欢迎使用图书管理系统\n");

printf("\n\n\t\t本程序分析者 秦义 学号:200907014122\n\n\n\n\n\n\n");//以前是设计者 xxxx

printf("\n\n\n\t\t 按 任 意 键 进 入 系 统 ");

getch(); system("cls");

}

int Menu() /主菜单/

{ int dm;

printf("\n\t\t图书管理系统主菜单\n");

printf("=================================================\n");

printf("☆\t0----退出系统 ☆\n");

printf("☆\t1----采编入库 ☆\n");

printf("☆\t2----登记读者 ☆\n");

printf("☆\t3----借阅登记 ☆\n");

printf("☆\t4---还书管理 ☆\n");

printf("☆\t5---查询图书信息 ☆\n");

printf("☆\t6----查询读者信息 ☆\n");

printf("=================================================\n");

printf("请选择相应的代码:");

for(;;)

{ scanf("%d",&dm);

if(dm<0||dm>6)

printf("\n错误!请重新输入:");

else break;

}

return dm;

}

void Menu_select()/主菜单选择函数/

{

for(;;)

{

switch(Menu()) /功能选择/

{ case 0:

system("cls");

Save();

printf("\n\n\t文件保存成功!\n");

printf("\n\n\t欢迎下次使用本系统!\n");

getch();

exit(0);

case 1:Insert_New_Book();break;

case 2:add_reader();break;

case 3:Borrow_Book();break;

case 4:Return_Book();break;

case 5:Print_book();break;

case 6:Print_reader();break;

default:printf("\n错误!");

exit(0);}

}

}

void Init() /初始化/

{

Init_book();

}

void Init_book() /初始化图书信息/

{

BK p0;

printf("\n图书初始化开始,请输入图书信息\n包括编号书名数量\n");

p0=(BK)malloc(sizeof(BK));

h_book=p0;

printf("\n请输入图书信息:\n");

printf("图书编号:"); /输入图书编号(唯一)/

scanf("%s",p0->book_num);

printf("图书名称:"); /输入图书名称/

scanf("%s",p0->book_name);

printf("图书作者:"); /输入图书作者/

scanf("%s",p0->book_writer);

printf("图书数量:"); /输入图书数量/

scanf("%d",&p0->book_kc);

p0->book_xy=p0->book_kc; /开始时图书现有量和库存量相等/

p0->next=NULL;

printf("\n图书信息初始化完毕!按任意键继续下一步 *** 作\n");

getch();

system("cls");

}

void Insert_New_Book()/新书入库/

{

BK p,p0,p1;

p=p1=h_book;

printf("\n新书入库模块\n");

printf("\n请输入新书信息\n包括书号书名数量\n");

p0=(BK )malloc(sizeof(BK));

printf("图书编号:");

scanf("%s",p0->book_num);

while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)

p1=p1->next;

if(strcmp(p0->book_num,p1->book_num)==0) /此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量/

{

printf("\n此编号图书已存在!!直接入库!\n");

printf("图书数量:");

scanf("%d",&p0->book_kc);

p1->book_kc+=p0->book_kc;

p1->book_xy+=p0->book_kc;

}

else/若不存在,则需要输入其他的信息 ,然后在进行插入 *** 作/

{

printf("图书名称:");

scanf("%s",p0->book_name);

printf("图书作者:");

scanf("%s",p0->book_writer);

printf("图书数量:");

scanf("%d",&p0->book_kc);

while(p->next)

{ p=p->next; }

if(h_book==NULL) h_book=p0; /此处分两种情况,链表中没有数据,head直接指向p0处/

else p->next=p0; /此处分两种情况,链表中有数据,链表中最后元素的next指向p0处/

p0->next=NULL;

p0->book_xy=p0->book_kc;

}

printf("\n新书入库完毕!按任意键继续下一步 *** 作\n");

getch();

system("cls");

}

void add_reader()/添加读者/

{ RD p0;

int i;

printf("\n读者初始化开始,请输入读者信息\n包括书证号姓名\n");

p0=(RD)malloc(sizeof(RD)); /申请新结点存储空间/

h_reader=p0;

printf("\n请输入读者的信息:\n");

printf("读者书证号:");

scanf("%s",p0->reader_num);

printf("读者姓名:");

scanf("%s",p0->reader_name);

p0->right=0;

for(i=0;i<Max;i++)

{

strcpy(p0->borrow[i]borrow_book_num,"0"); /所借图书直接置为0(即没有借书)/

strcpy(p0->borrow[i]limit_date,"0");

}

p0->next=NULL;

printf("\n读者信息初始化完毕!按任意键继续下一步 *** 作\n");

getch();

system("cls");

}

void Borrow_Book() /借书模块/

{

BK p0; RD p1;

char bo_num[10],rea_num[10],lim_date[8];

int i;

p0=h_book; p1=h_reader;

printf("\n借书模块\n");

printf("\n请输入借书的读者书证号:");

scanf("%s",rea_num);

while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0) //查找读者号

{p1=p1->next;}

if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0)

{

printf("\n此读者编号不存在!按任意键返回\n");

goto END;

}

printf("\n请输入你要借的书的编号:");

scanf("%s",bo_num);

while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL) //查找书号

{p0=p0->next;}

if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0)

{

printf("\n此图书编号不存在!按任意键返回\n");

}

else if(p0->book_xy<=0)

{

printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回");

}

else if(p1->right>=Max)

{

printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回");

}

else if(strcmp(p1->borrow[0]borrow_book_num,"0")!=0)

{

for(i=0;i<Max;i++)

{

if(strcmp(p1->borrow[i]borrow_book_num,bo_num)==0)

{

printf("\n抱歉!同一个读者不能同借两本相同的书!\n");

}

else if(strcmp(p1->borrow[i]borrow_book_num,"0")==0)

{

printf("\n请输入你要归还图书的日期:");

scanf("%s",lim_date);

strcpy(p1->borrow[p1->right++]borrow_book_num,bo_num);

strcpy(p1->borrow[p1->right-1]limit_date,lim_date);

p0->book_xy--;

printf("\n读者编号%s借书完毕!按任意键继续下步 *** 作",p1->reader_num);

}

}

}

else

{

printf("\n请输入你要归还图书的日期:");

scanf("%s",lim_date);

strcpy(p1->borrow[p1->right++]borrow_book_num,bo_num);

strcpy(p1->borrow[p1->right-1]limit_date ,lim_date );

p0->book_xy--;

printf("\n读者编号%s借书完毕!按任意键继续下步 *** 作",p1->reader_num);

}

END:getch(); system("cls");

}

void Return_Book() /还书模块/

{

BK p; RD q;

int i,j,find=0;

char return_book_num[10],return_reader_num[10];

p=h_book; q=h_reader;

printf("\n还书模块\n");

printf("\n请输入要还书的读者编号:");

scanf("%s",return_reader_num);

while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0)

q=q->next;

if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0)

{

find=2;

printf("\n此读者编号不存在!按任意键返回\n");

goto end;

}

printf("\n请输入读者还书的编号:");

scanf("%s",return_book_num);

while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)

p=p->next;

if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0)

{

find=2;

printf("\n错误!此图书编号不存在!按任意键返回\n");

goto end;

}

for(i=0;i<Max;i++)

if(strcmp(return_book_num,q->borrow[i]borrow_book_num)==0) /如果此读者借了此书/

{

find=1;

for(j=i;j<Max-1;j++)

{

strcpy(q->borrow[j]borrow_book_num,q->borrow[j+1]borrow_book_num);

strcpy(q->borrow[j]limit_date,q->borrow[j+1]limit_date);

}

strcpy(q->borrow[Max-1]borrow_book_num,"0");

strcpy(q->borrow[Max-1]limit_date,"0");

p->book_xy++;

q->right--;

printf("\n编号%s的读者还书完毕!按任意键继续下步 *** 作",return_reader_num);

}

if(find==0)

printf("\n错误!此读者未借此书!按任意键返回\n");

end: getch(); system("cls");

}

void Print_book() /查询图书信息/

{

BK p;

p=h_book;

printf("\n图书信息如下:\n\n");

printf("图书编号\t图书名称\t图书作者\t现有\t\t库存\n");

while(p!=NULL)

{

printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);

p=p->next;

}

printf("\n图书信息打印完毕!按任意键继续下一步 *** 作");

getch();

system("cls");

}

void Print_reader() /查询读者信息/

{

RD p;

int i;

p=h_reader;

printf("\n读者信息如下:\n\n");

printf("读者书证号\t\t读者姓名\n");

printf("\n");

while(p!=NULL)

{

printf("\t%s\t\t%s",p->reader_num,p->reader_name);

for(i=0;i<Max;i++)

{

printf("\n");

printf("图书编号",i+1);

printf("\t还书日期",i+1);

printf("\n");

printf("\t%s",p->borrow[i]borrow_book_num);

printf("\t\t%s",p->borrow[i]limit_date);

}

printf("\n");

p=p->next;

}

printf("\n读者信息打印完毕!按任意键继续下一步 *** 作");

getch();

system("cls");

}

//文件模块

void Save() /保存信息/

{

Save_Reader();

Save_Book();

}

void Save_Reader() /保存读者信息/

{

FILE fp_reader;

RD p,p0;

p=h_reader;

if((fp_reader=fopen("Readertxt","wb"))==NULL) /创建文件,进行保存/

{

printf("\n文件保存失败!\n请重新启动本系统\n");

exit(0);

}

while(p!=NULL)

{

if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /将链表中的信息写入文件中/

printf("\n写入文件失败!\n请重新启动本系统!\n");

p0=p;

p=p->next;

free(p0); /释放所有结点/

}

h_reader=NULL;

fclose(fp_reader); /关闭文件/

}

void Save_Book() /保存图书信息/

{

FILE fp_book; /创建文件型指针/

BK p,p0;

p=h_book;

if((fp_book=fopen("Booktxt","wb"))==NULL) /创建文件,进行保存/

{

printf("\n文件保存失败!\n请重新启动本系统\n");

exit(0);

}

while(p!=NULL)

{

if(fwrite(p,sizeof(BK),1,fp_book)!=1) /将链表中的信息写入文件中/

printf("\n写入文件失败!\n请重新启动本系统!\n");

p0=p;

p=p->next;

free(p0);

}

h_book=NULL;

fclose(fp_book); /关闭文件/

}

void Load() /加载信息/

{

Load_Reader();

Load_Book();

}

void Load_Reader() /加载读者信息/

{

RD p1,p2,p3;

FILE fp; /创建文件型指针/

fp=fopen("booktxt","rb"); /打开文件/

p1=(RD )malloc(sizeof(RD));

fread(p1,sizeof(RD),1,fp);

h_reader=p3=p2=p1;

while(! feof(fp)) /读出信息,重新链入链表/

{ p1=(RD )malloc(sizeof(RD));

fread(p1,sizeof(RD),1,fp);

p2->next=p1;

p3=p2;

p2=p1;

}

p3->next=NULL;

free(p1);

fclose(fp); /关闭文件/

}

void Load_Book() /加载图书信息/

{

BK p1,p2,p3;

FILE fp; /创建文件型指针/

fp=fopen("Booktxt","rb"); /打开文件/

p1=(BK )malloc(sizeof(BK));

fread(p1,sizeof(BK),1,fp);

h_book=p3=p2=p1;

while(! feof(fp)) /读出信息,重新链入链表/

{ p1=(BK )malloc(sizeof(BK));

fread(p1,sizeof(BK),1,fp);

p2->next=p1;

p3=p2;

p2=p1;

}

p3->next=NULL;

free(p1);

fclose(fp); /关闭文件/

}

void main()

{

FILE fp_book,fp_reader; /创建文件型指针/

Login();

if((fp_book=fopen("Booktxt","rb"))==NULL||(fp_reader=fopen("Readertxt","rb"))==NULL)

{ Init(); }

else Load();

Menu_select(); /调用主菜单/

}

以上就是关于java图书馆系统怎么看代码看数据库的信息全部的内容,包括:java图书馆系统怎么看代码看数据库的信息、数据库课程设计 电子书架系统 SQL语句 具体的代码和数据流图等、c++图书类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10149952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存