#include
#include
#include
struct BOOK
{
int id,usr[10],total,store,days[10];
char name[30],author[20];
}books[100];
/*结构体,存放书籍及借书信息。*/
void page_title(char *menu_item)
{
printf(">>> 以下是图 书 管 理 系 统--请 按 要 求 操 作 <<<\n\n- %s -\n\n",menu_item);
}
/*页头函数,可以通过参数menu_item,显示当前状态。*/
void return_confirm(void)
{
printf("\n任意键返回……\n");
getch();
}
/*返回前请求确认函数,方便返回前观察结果*/
int search_book(void)
{
int n,i;
printf("请输入图书序号:");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("书名:%s\n",books[n].name);
printf("作者:%s\n",books[n].author);
printf("存数:%d\n",books[n].store);
printf("总数:%d\n",books[n].total);
return n;
}
}
printf("\n输入有错或图书序号不存在.\n");
return -1;
}
/*上面是在数组中找到图书号匹配的记录,显示其信息并返
回数组下标,如果找不到相应记录则提示错误并返回-1。*/
void book_out(void)
{
int n,s,l,d;
page_title("借书");
if((n=search_book())!=-1&&books[n].store>0)
{
printf("请输入借书证序号:");
scanf("%d",&s);
printf("请输入可借天数:");
scanf("%d",&d);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!=-1&&books[n].store==0) printf("此书已经全部借出.\n");
return_confirm();
}
/*借书的函数,首先调用找书函数*/
void book_in(void)
{
int n,s,l;
page_title("还书");
if((n=search_book())!=-1&&books[n].store
printf("借阅者图书证列表:\n");
for(l=0;l<10;l++)
if (books[n].usr[l]!=0)
printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]);
printf("请输入借书证序号:");
scanf("%d",&s);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!=-1&&books[n].store==books[n].total)
printf("全部入藏.\n");
return_confirm();
}
void book_add(void)
{
int n;
page_title("注册书");
for(n=0;n<100;n++)
if(books[n].id==0) break;
printf("序号:");
scanf("%d",&books[n].id);
printf("书名:");
scanf("%s",&books[n].name);
printf("作者:");
scanf("%s",&books[n].author);
printf("数量:");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
void book_del(void)
{
int n;
page_title("注销书");
if((n=search_book())!=-1) books[n].id=0;
printf("该书已注销.\n");
return_confirm();
}
void main(void)
{
menu: page_title("操作选择单子");
printf("请按以上要求选择操作\n\n");
printf("1 借书\n2 还书\n\n");
printf("3 注册书\n4 注销书\n\n");
printf("\n0 退出\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
这种问题最低是200分起
那是要钱的哥们。
#include
#include
#include
using namespace std;
class Library{
private:
class Book{
public:
Book():next(0){}
string id;
string title;
string author;
float price;
string publisher;
Book *next;
};
Book *books;
public:
Library():books(0){};
~Library();
void add();
void search();
void display();
void del();
};
Library::~Library(){
Book *b;
b=books;
while(b!=0){
b=books->next;
delete books;
books=b;
}
}
void Library::add(){
Book *b=new Book;
cout<<"输入书号:";
cin>>(b->id);
cout<<"输入书名:";
cin>>(b->title);
cout<<"输入作者:";
cin>>(b->author);
cout<<"输入价格:";
cin>>(b->price);
cout<<"输入出版社:";
cin>>(b->publisher);
if(books==0) books=b;
else{
if((b->id)<(books->id)){
b->next=books;
books=b;
return;
}
Book *p,*q;
p=books;
while(p!=0){
if((p->id)==(b->id)){
cout<<"此书号已存在"<
return;
}
else if((p->id)>(b->id))break;
else{
q=p;
p=p->next;
}
}
b->next=p;
q->next=b;
}
}
void Library::search(){
string id;
cout<<"输入书号:";
cin>>id;
Book *b;
b=books;
while(b!=0){
if((b->id)==id) break;
else b=b->next;
}
if(b==0)cout<<"查无此书"<
cout<<"书号 书名 作者 价格 出版社"<
}
void Library::display(){
Book *b;
b=books;
cout<<"书号 书名 作者 价格 出版社"<
cout<<(b->id)<<" "<<(b->title)<<" "<<(b->author)<<" "<
}
}
void Library::del(){
string id;
cout<<"输入书号:";
cin>>id;
Book *p,*q;
if((books->id)==id){
p=books;
books=books->next;
delete p;
}
else{
p=books;
while(p!=0){
if((p->id)==id) break;
else {
q=p;
p=p->next;
}
}
if(p==0) cout<<"查无此书"<
q->next=p->next;
delete p;
}
}
}
int main(){
int c;
Library l;
do{
cout<<"1.添加图书信息 2.查询图书信息 3.显示图书信息 4.删除图书信息 5.退出"<
cin>>c;
if(c==1) l.add();
else if(c==2) l.search();
else if(c==3) l.display();
else if(c==4) l.del();
else if(c==5) break;
else cout<<""<
return 0;
}