点击电脑的开始。
首先点击电脑的开始,找到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++图书类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)