已有141人关注
图书馆管理系统
发表在C#答疑区 2019-07-05
是否精华
版块置顶:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include "book.h"
#include "file.h"
char *filename ="book.data";
Book *BookRecord;
void saveToFile(BookList BookRecord)
{
 FILE *fp;
 Book *b=BookRecord->next;
 if((fp=fopen("book.data","wb"))==NULL)
  {
      return;
  }
  else
  {
      while(b!=NULL)
   {
       fwrite(b,sizeof(Book),1,fp);
       b=b->next;
   }
      fclose(fp);
  } 
}
void readFromFile(BookList BookRecord)
{
 FILE *f;
 Book *b;
     if ((f=fopen("book.dat","r"))!=NULL)
  {
            b = BookRecord;
      while(!feof(f))
   {
       Book *newNode=(Book *)malloc(sizeof(Book));
       memset(newNode,0,sizeof(newNode));
       fread(newNode,sizeof(Book),1,f);
       if(feof(f))
    {
        b->next = NULL;
        break;
    }
       b->next = newNode;
       b=newNode;
       b->next = NULL;
   }
      fclose(f);  
  }
}
void initlist()
{
 BookList BookRecord=(Book *)malloc(sizeof(Book));
 BookRecord->next=NULL;
}
void bookmanager(BookList BookRecord)
{
 int n;
 while(n!=6)
 {
  system("cls");
  printf("--------简易的图书管理系统---------\n");
     printf("----------1.添加图书--------\n");
     printf("----------2.查询图书--------\n");
     printf("----------3.编辑图书--------\n");
     printf("----------4.删除图书--------\n");
     printf("----------5.显示图书--------\n");
        printf("----------6.退出系统---------\n");
  printf("输入选项代码:");
  scanf("%d",&n);
  if(n<1 || n>6)
  {
   printf("您的输入有误!,请重新输入:\n");
   system("pause");
  }
  else
  {
   switch(n)
   {
            case 1:
       addbook(BookRecord);
          break;
      case 2:
       searchbook(BookRecord);
          break;
      case 3:
       editbook(BookRecord);
       break;
      case 4:
                removebook(BookRecord);
       break;
      case 5:
                Print_BookRecord(BookRecord);
       break;
      case 6:
       break;
      default:
       break;  
   }
  }
 }
}
void addbook(BookList BookRecord)
{
 Book * p;
 p=(Book*)malloc(sizeof(Book));
 printf("请输入需要添加的书号:");
 scanf("%d",&p->bookNO);
 printf("请输入需要添加的书名:");
 scanf("%s",p->bookName);
 printf("请输入书籍的出版社:");
 scanf("%s",p->publishingHouse);
    printf("请输入书籍的作者:");
 scanf("%s",p->wName);
 p->next=BookRecord->next;
 BookRecord->next=p;
}
void Print_BookRecord(BookList BookRecord)
{
    Book * p;
 int i=1;
 printf("图书记录输出:");
 printf("\n-----------------------------------------------------------------------------\n");
 printf("记录号\t\t书号\t\t书名\t\t出版社\\t作者\n");
 p=BookRecord->next;
 while(p)
 {
  printf("%d\t\t%d\t\t%s\t\t%s\\t%s\n",i,p->bookNO,p->bookName,p->publishingHouse,p->wName);
  p=p->next;
  i++;
 }
}
void searchbook(BookList BookRecord)
{
    char bookName[50];
 Book * p=BookRecord->next;
 printf("\n请输入要查找的书名:");
 fflush(stdin);
 scanf("%s",bookName);
 while(p!=NULL && strcmp(p->bookName,bookName)!=0)
 {
  p=p->next;
 }
 if(p!=NULL)
 {
  printf("找到图书!\n");
  printf("书号\t\t书名\t\t出版社\\t作者\n");
     printf("%d\t\t%s\t\t%s\\t%s\n",p->bookNO,p->bookName,p->publishingHouse,p->wName); 
 }
 else
 {
  printf("找不到该图书!\n");
 }
}
Book * getbook(int bookNO,BookList BookRecord)
{
 Book * p=BookRecord->next;
    while(p!=NULL && p->bookNO!=bookNO )
 {
  p=p->next;
 }
 return p;
}
void editbook(BookList BookRecord)
{
 int bookNO;
 char a,b;
 Book * p;
 printf("请输入需要编辑的书号:");
 scanf("%d",&bookNO);
 p=getbook(bookNO,BookRecord);
 if(p)
 {
  printf("书名是否需要编辑?(y/n):");
        scanf("%s",&a);
  if(a=='y'||a=='Y')
  {

   printf("请输入编辑后的书名:");
      scanf("%s",p->bookName);
  }
  if(p)
  {
   printf("书名是否需要编辑?(y/n):");
            scanf("%s",&b);
   if(b=='y'||b=='Y')
   {
       printf("请输入编辑后的出版社:");
          scanf("%s",p->publishingHouse);
   }
  }

  printf("编辑成功!\n");
 }
 else
 {
  printf("找不到图书!");
 }
}
void removebook(BookList BookRecord)
{
 int bookNO;
 Book * s;
 Book *p=BookRecord;
 printf("请输入需要删除的书号:");
 scanf("%d",&bookNO);
 while(p->next!=0 && p->next->bookNO!=bookNO)
 {
  p=p->next;
 }
 if(p->next!=0)
 {
  s=p->next;
  p->next=s->next;
  free(s);
  printf("删除成功!\n");
 }
 else
 {
  printf("找不到该图书!\n");
 }
}
int main()
{   int n;
 BookList BookRecord=(Book *)malloc(sizeof(Book));
 BookRecord->next=NULL;
    readFromFile(BookRecord);
 while(n!=6)
 {
  system("cls");
  printf("--------欢迎来到图书管理---------\n");
     printf("--------1·图书管理--------\n");
     printf("--------2·退出系统--------\n"); 
  scanf("%d",&n);
  if(n<1 || n>3)
  {
   printf("您的输入有误!请重新输入:\n");
   system("pause");
  }
  else
  {
   switch(n)
   {
   case 1:bookmanager(BookRecord);break;
         case 2:printf("\n-----谢谢使用------\n");break;
   default:break;   
   }
  }
  
 }
 saveToFile(BookRecord);
 return 0;
 
}

分享到:
精彩评论 1
小禾斗
学分:7318 LV13
TA的每日心情
奋斗
2017-04-21 14:00:25
2019-07-12
沙发

?这是什么?发错区了吧

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照