⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 每种书的登记内容至少包括书号
💻 TXT
📖 第 1 页 / 共 2 页
字号:
	     a=0;
             do
             { a=a+1;
	     }
	     while (!word[a]);
	     p=head;
	     if (!head)
	     do
	      {for (j=1;!p->bookname[j];j++)
		{if (p->bookname[j]==word[1])
                   m=1;
                  do
                   { m++;
                   }
		  while (m<=a && p->bookname[j+m]==word[1+m]);
                  i=1;
	       printf ("该书的书号为:%d\n",p->booknumber);
	       printf ("该书的书名为:%s\n",p->bookname[20]);
	       printf ("该书出版单位为:%s\n",p->press[50]);
	       printf ("该书作者为:%s\n",p->auther[20]);
	       printf ("该书页数为:%d\n",p->pagenumber);
	       printf ("该书定价为:%d\n",p->price);
               printf ("该书当前册数为:%d\n",p->nownumber);
                   if (p->nownumber!=0)
		    printf ("本书已被借出,借书者证号为:%d",p->borrowernum);
		    else printf ("本书未被借出.\n");
		}
	      p=p->next;
	     }while (!p);
       printf ("对不起,没有您要查找的图书.");
      printf("是否继续进行查找操作?1、是,2、否\n");
        scanf("%d",&e);
       }while(e==1);}
search()
{ int b,j;
 do
 { printf ("请选择你要查找的方式:\n 1,按书名查找;\n 2,按作者查找;\n 3,按出版单位查找;\n 4,按借阅者查找;\n 5,自定意查找.\n 6,退出\n");
   scanf("%d",&j);
    if (j==1)
       look_for_name ();
       else if (j==2)
            look_for_writer ();
	     else if (j==3)
                 look_for_press ();
                 else if (j==4)
                      look_for_borrower ();
		      else if (j==5)
                           look_for_word ();
                           else if (j==6)
			       end:;
  printf("是否继续进行查找操作?1、是,2、否\n");
  scanf("%d",&b);
 }while(b==1);
}
/************************************************************************************/
lendbook()
{int i;
 int number;
 char ch;
 struct borrowertype *br_node,borrower;        /*指向借书者的指针*/
 struct booktype *bo_node,book;        /*指向图书的指针*/
 br_node=g_borrower_list;
 do{
   printf("请输入借书证号");
   scanf("%d",number);
   if(0!=strcmp(br_node->cardnumber,number))
    /*return br_node;*/
    br_node=br_node->next;
   /*br_node=find_borrowernode(number);*/
   if(!br_node)
   {
    puts("系统中不存在该借书者");
    goto lab_failed;
    }
  if(br_node->lendnumber>=1)
   {
    printf("该借书者已借有图书");
    goto lab_failed;
   }
  printf("请输入要借图书书号");
  scanf("%d",&number);
  /*bo_node=find_booknode(number);*/
  if(!bo_node)               /*指针已指向书库末尾*/
   {
    puts("系统中不存在该图书");
    goto lab_failed;
   }
  if(bo_node->nownumber==0)
   {
   printf("该书已被借给%s\n",bo_node->borrowernum);
   goto lab_failed;
   }
 strcpy(br_node->booknumber,br_node->booknumber);
 strcpy(bo_node->borrowernum,br_node->cardnumber);
 br_node->lendnumber++;
 bo_node->nownumber--;
 bo_node->borrowtime=time(NULL);
 puts("出借图书成功!");
 lab_failed:
  puts("\n出借图书失败");
 puts("是否继续借书操作? (1.是//2.否)");
 scanf("%d",&i);

 } while(i==1);
if(1==2)
  exit(0);
}                            /*借书函数结束*/
/************************************************************************************/
returnbook()             /*归还图书函数*/
/* {    */
{int number;
  char ch;
  int i=0,j=0;
  struct borrowertype *br_node;
  struct booktype   *bo_node;
 do
 {printf("请输入还书者借书证号:");
  scanf("%d",&number);

 if(0!=strcmp(br_node->cardnumber,number))
/*return br_node;*/
    br_node=br_node->next;
/*br_node=find_borrowernode(cardnumber);*/
  if(!br_node)
   {
    puts("该借书证号不存在!");
    goto lab_failed;
   }
  if(br_node->lendnumber==0)
    {
     puts("该人未借书");
     goto lab_failed;
    }
 printf("请输入要还图书的书号:");
 gets(number);
/* bo_node=find_booknode(number);  */
 if(!bo_node)
 {
 puts("系统中并不存在该图书");
 goto lab_failed;
 }
 if(bo_node->nownumber!=0)
   {
    puts("该图书并未出借");
    goto lab_failed;
   }
/* if(0==strcmp(br_node->booknumber,number))
   break;*/
 if(br_node->lendnumber==1)
   {
    printf("该图书并不是被%s所借,而是被%s所借!",br_node->cardnumber,bo_node->borrowernum);
    goto lab_failed;
   }
bo_node->returntime=time(NULL);
if(((int)difftime(bo_node->returntime,bo_node->borrowtime)/3600/24)>7)
   {
    printf("对不起,您超时了,请交纳5元罚款");
   }
br_node->lendnumber--;
br_node->booknumber=0;
bo_node->borrowernum='\0';
puts("\n归还图书成功!");
lab_failed:
  puts("归还图书失败!");
printf("是否继续进行还书操作? (1.是//2.否)");
scanf("%d",&j);
}while(j==1);
if(1==2)
  exit(0);
  }                             /*还书操作结束*/
/************************************************************************************/
int create_borrower ()
{
   struct borrowertype * p =alloc_borrowernode( );
   char ch;
   puts("\n\t《注策借书者》\n");
   printf("输入姓名:");
   gets(p ->name);
   if(find_borrowernode(p ->name))
   {
/*是否有同名的存在 */
puts("系统中有同名的借书者存在");
goto lab_failed;
   }
printf("输入性别:");
gets(p->sex);
printf("输入工作单位:");
gets(p->unit);
printf("确定注册该借书者吗?(Y/N)");
ch=getch();
if(ch=='n'||ch=='N')
  goto lab_failed;
if(g_borrower_list)
{
  g_borrower_list->prev->next=p;
  p->prev= g_borrower_list->prev;
  g_borrower_list->prev=p;
}
else
{
g_borrower_list=p;
g_borrower_list->prev=g_borrower_list;
}
puts("\n注册借书者成功!");
getch();
return 0;
lab_failed:
        free_borrowertype(p);
    puts("注册借书者失败!");
    getch();
    return-1;
}
int remove_borrow()
{
   char name[20];
  char ch;
  struct borrowertype *p;
  puts("\n\t<注销借书者>\n");
  printf("输入姓名:");
  gets(name);
  p=find_borrownode(name);
if(!p)
{
  puts("系统中不存在借书者");
  goto lab_failed;
}
  printf("确定该借书者吗?(Y/N)");
  ch=getch();
  if(ch=='n'||ch=='N')
goto lab_failed;
  if(g_borrower_list==p)
{
  g_borrower_list=g_borrower_list->next;
  if(g_borrower_list)
g_borrower_list->prev=p->prev;
}
else
{
 p->prev->next=p->next;
   if(p->next)
       p->next->prev=p->prev;
}
free_borrownode(p);
puts("\n注销该借书者成功!");
getch();
return 0;
lab_failed:
   puts("\n注销该借书者成功!");
   getch();
   return-1;
}
/************************************************************************************/
main()
{static struct booktype *g_book_list;                           /*定义图书链表*/
 static struct borrowertype *g_borrower_list;                       /*定义借书者链表*/
 int num;
 do
 {
 num=face();
 start();
   if(num==1){lendbook();}
	    else if(num==2) {returnbook();}
		   else if(num==3)
			    {search();}
			   else if(num==4)
				   { kucaozuo();}
 }while(num!=0);
}



/*界面设计——Geoffrey.C*/
#include   <time.h>
#include   <process.h>
#include   <stdlib.h>
#include   <stdio.h>
#include   <dos.h>
#include   <conio.h>
#include   <graphics.h>
/*#define   Key_DOWN   80
  #define   Key_UP     72
  #define   Key_ESC    1
  #define   Key_ALT_X  45
  #define   Key_ENTER  28  */
/*获取键盘扫描码*/
int  getkey()
{
 union  REGS  rg;
 rg.h.ah=0;
 int86(0x16,&rg,&rg);
 return   rg.h.ah;
}
/*choosing函数实现了选中与未选中的字符颜色的改变*/
/*参数说明:this为当前选中的菜单条序号;last为刚刚离开的菜单条的序号*/
void choosing(int this,int last);
/*rect函数实现了画框的功能*/
/*x1、y1、x2、y2是所画框的左上角和右下角的坐标,以象素为单位,bordersize为框的宽度,color1,color2分别是所填充的颜色和线条的颜色,status是表示框凸起或是凹下的参数*/
void rect(int x1,int y1,int x2,int y2,int bordersize,int color1,int color2,int status);
char *m1[]={"   Borrow Book","   Return Book","   Search Book","  Manage of Book","Manage of Borrower","      Exit"};
/*本模块主函数*/
int face()
{time_t lt;
 int i,gdrive=DETECT,gmode;
 int current=1,past=0,key0,key1,m;
 char ch;
 initgraph(&gdrive,&gmode,"");
 setcolor(BLACK);                                
setbkcolor(LIGHTGRAY);
 rect(1,1,638,60,1,LIGHTGRAY,LIGHTGRAY,1);
 settextstyle(3,0,5);
 setcolor(BLUE);
 outtextxy(15,5,"Library Manage System");
 settextstyle(1,0,9);
 setcolor(YELLOW);
 outtextxy(200,100,"Welcome!");
 setcolor(RED);    
 settextstyle(0,0,1);
 outtextxy(370,400,"Press KEY_UP KEY_DOWN to choose");
 outtextxy(370,415,"Press ESC or ALT_X to exit system");
 setcolor(5);
 settextstyle(3,0,1);
 outtextxy(350,220,"System make by : JetLee");
 outtextxy(522,245,"Geoffrey.Z");
 outtextxy(522,270,"Sakura.G");
 outtextxy(522,295,"Angelo.S");
 outtextxy(522,320,"John.H");            
 settextstyle(0,0,1);
 for(i=0;i<=5;i++)             /*按顺序写入菜单条的文字*/
  {
   rect(10,80+i*60,170,120+i*60,1,7,7,1);
   outtextxy(20,95+i*60,m1[i]);
  }
 rect(1,430,638,460,1,BLUE,7,1);
 setcolor(15);
 lt=time(NULL);                         /*获取进入系统的当地时间*/
 outtextxy(25,440,"You enter the system at:");
 outtextxy(250,440,asctime(localtime(&lt)));
 while(1)
 {
  key0=0;
  key0=getkey();
  choosing(current,past);
  while(key0!=45&&key0!=28)    /*当获取的字符不是ALT_X和回车的时候进行循环*/
   {
    key1=getkey();
    if (key1==72||key1==80)
    {
     if(key1==45){return(0);}
     past=current;
     if(key1==72) current=(current==1)?6:current-1;     /*如果选中的菜单已经是第一个,但是还是输入了KEY_UP,就将选中的菜单变为最后一个*/
     if(key1==80) current=(current==6)?1:current+1;     /*如果选中的菜单已经是最后一个,但是还是输入了KEY_DOWN,就将选中的菜单变为第一个*/
     if(key1==45) {return(0);}
     choosing(current,past);
    }
    else {/*根据选项所选中的菜单,返回相应的值*/
	  if((key1==1)||(key1==45)||((current==6)&&key1==28)) return(0);    /*本程序共提供了三种退出方式:按ESC键、按ALT_X键和选中EXIT项,然后回车*/
	  if((current==1)&&key1==28) {return(1);}
	  if((current==2)&&key1==28) {return(2);}
	  if((current==3)&&key1==28) {return(3);}
          if((current==4)&&key1==28) {return(4);}
	  if((current==5)&&key1==28) {return(5);}
          }
	 }

 }
 closegraph();              /*关闭图形界面*/
}
void rect(int x1,int y1,int x2,int y2,int bordersize,int color1,int color2,int status)
{
 int i;
 setcolor(DARKGRAY);
 rectangle(x1,y1,x2,y2);
 setfillstyle(SOLID_FILL,color1);
 floodfill(x1+bordersize+1,y1+bordersize+1,DARKGRAY);
 rectangle(x1+bordersize,y1+bordersize,x2-bordersize,y2-bordersize);
 setfillstyle(SOLID_FILL,color2);
 floodfill(x1+1,y1+1,8);
 setcolor(WHITE);
 if (status==0)
   {
    line(x2-bordersize,y1+bordersize,x2-bordersize,y2-bordersize);
    line(x1+bordersize,y1+bordersize,x2-bordersize,y2-bordersize);
   }
 else
   {
    line(x1+bordersize,y1+bordersize,x2-bordersize,y1+bordersize);
    line(x1+bordersize,y1+bordersize,x1+bordersize,y2-bordersize);
   }
}
void choosing(int this,int last)
{
 setcolor(WHITE);
 outtextxy(20,95+(last-1)*60,m1[last-1]);
 setcolor(LIGHTBLUE);
 outtextxy(20,95+(this-1)*60,m1[this-1]);
}
/*start函数实现的是初始化文本界面的功能*/
void start()
{
 int gmode,num,gdrive=DETECT;
 registerbgidriver(DETECT);
 initgraph(&gdrive,&gmode,"");
 setbkcolor(BLUE);
 cleardevice();
 setbkcolor(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -