图书管理系统

 
#include "iostream.h"
#include "string.h"
#include "stdlib.h"
#include "iomanip.h"
#include  "stdio.h"
#include "process.h"


typedef struct library
{
 int num;
 char name[20];
 char author[10];
 char kind[10];
 char pubunit[30];
 char pubtime[20];
 int price;
 struct library *next;
}LRY;


LRY *createlib()
{
 LRY *p,*headlib,*tail;
 int num,price;
 char name[20],kind[10],author[10];
 char pubunit[30],pubtime[20];
 int size=sizeof(LRY);
 
 headlib=tail=NULL;
 cout<<"输入图书信息:"<
 cin>>num>>name>>author>>kind>>pubunit>>pubtime>>price;
 while(num)
 {
  p=(LRY *)malloc(size);
  p->num=num;
  strcpy(p->name,name);
  strcpy(p->author,author);
  strcpy(p->kind,kind);
  strcpy(p->pubunit,pubunit);
  strcpy(p->pubtime,pubtime);
  p->price=price;
  if(headlib==NULL)
   headlib=p;
  else
   tail->next=p;
  tail=p;
  cin>>num>>name>>author>>kind>>pubunit>>pubtime>>price;
 }
 tail->next=NULL;
 return headlib;
}


void savefilelib(LRY *headlib)
{
 LRY *p;
 FILE *fp;
 if((fp=fopen("e:\\library.txt","w"))==NULL){
  cout<<"open fail!"<
  exit(0);
 }
 fprintf(fp,"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格\n");
 for(p=headlib;p;p=p->next)
  fprintf(fp,"%4d%15s%10s%11s%18s%12s%6d\n",p->num,p->name,p->author,p->kind,p->pubunit,p->pubtime,p->price);
 if(fclose(fp)){
  cout<<"close fail!"<
   exit(0);
 }
 cout<<"创建后的信息已放入E盘根目录的“library.txt”文件中"<
}


void savefilelibnew(LRY *headlib)
{
 LRY *p;
 FILE *fp;
 if((fp=fopen("e:\\librarynew.txt","w"))==NULL){
  cout<<"open fail!"<
  exit(0);
 }
 fprintf(fp,"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格\n");
 for(p=headlib;p;p=p->next)
  fprintf(fp,"%4d%15s%10s%11s%18s%12s%6d\n",p->num,p->name,p->author,p->kind,p->pubunit,p->pubtime,p->price);
 if(fclose(fp)){
  cout<<"close fail!"<
   exit(0);
 }
 cout<<"修改后的信息已放入E盘根目录的“librarynew.txt”文件中"<
}

 

 


void prinlib(LRY *headlib)
{
 LRY *p=headlib;
 if(p==NULL){
  cout<<"无信息"<
  return;
 }
 cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
 for(p=headlib;p;p=p->next){
    cout<<<P->num<<<P->name<<<P->author;
    cout<<<P->kind<<<P->pubunit<<<P->pubtime;
    cout<<<P->price<
    }
}

 


void searchlib(LRY *headlib)
{
    char c='a';
    int a,t=1;
    char name[20],author[10];
    LRY *p=headlib;


    while(c!=' ')
    {
      cout<<"按书名查找请输入1,按作者查找输入2:"<
      cin>>a;
      switch(a)
      {
        case 1: cout<<"输入要查找的书名:"<
        cin>>name;
        cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
        for(p=headlib;p;p=p->next)
            if(strcmp(name,p->name)==0){
                cout<<<P->num<<<P->name<<<P->author;
             cout<<<P->kind<<<P->pubunit<<<P->pubtime;
                cout<<<P->price<
                t=0;
            }
            if(t) cout<<"未找到!"<
            t=1;
            break;

        case 2:cout<<"输入要查找图书的作者名:"<
        cin>>author;
        cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
        for(p=headlib;p;p=p->next)
            if(strcmp(author,p->author)==0){
                cout<<<P->num<<<P->name<<<P->author;
             cout<<<P->kind<<<P->pubunit<<<P->pubtime;
                cout<<<P->price<
                t=0;
            }
            if(t) cout<<"未找到!"<
            t=1;
    }
    cout<<"继续查找请按回车,结束请按空格"<
    cin.get();                                 //接收case中最后输入的回车键
 c=cin.get();
    }
}


LRY *insertlib(LRY *headlib)
{
 LRY *ptr,*ptr2,*lib;
 int size=sizeof(LRY);
 char ch='a';
 while(ch!=' '){
      lib=(LRY *)malloc(size);
      ptr=lib;
      cout<<"输入要插入的课程信息:"<
      cin>>lib->num>>lib->name>>lib->author>>lib->kind>>lib->pubunit>>lib->pubtime>>lib->price;
       if(headlib==NULL){
         headlib=ptr;
         headlib->next=NULL;
    }
       else{
          for(ptr2=headlib;ptr2;ptr2=ptr2->next)
             if(ptr2->next==NULL){
             ptr2->next=lib;
             lib->next=NULL;
             break;
       }
    }
    cout<<"继续插入请按回车,结束请按空格:"<
    cin.get();                       //接收上面最后输入的回车
    ch=cin.get();
    }
 return headlib;
}

 

LRY *dellib(LRY *headlib)
{
 LRY *p1,*p2;
 char ch='a';
 int num;
 while(ch!=' '){
  cout<<"输入想要删除的图书登陆号:"<
     cin>>num;;
     if(headlib->num==num){
      p2=headlib;
      headlib=headlib->next;
      free(p2);
  }
     if(headlib==NULL)
      return NULL;
     p1=headlib;
     p2=headlib->next;
     while(p2){
    if(p2->num==num){
       p1->next=p2->next;
       free(p2);
    }
     else p1=p2;
     p2=p1->next;
  }
  printf("继续删除请按回车,结束请按空格:\n");
  cin.get();                              // 接收回车
  ch=cin.get();
 }

 return headlib;
}

LRY *correctlib(LRY *headlib)
{
 LRY *p;
 int num,t=1;
 char c='a';
 while(c!=' ')
 {
  cout<<"输入想要修改的图书登陆号:"<
  cin>>num;
  for(p=headlib;p;p=p->next)
   if(p->num==num){
    cout<<"您要修改的图书的信息为:"<
    cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
    cout<<<P->num<<<P->name<<<P->author;
             cout<<<P->kind<<<P->pubunit<<<P->pubtime;
                cout<<<P->price<
    cout<<"请输入新信息:"<
    cin>>p->num>>p->name>>p->author>>p->kind>>p->pubunit>>p->pubtime>>p->price;
    t=0;
    break;
   }
   if(t) cout<<"不存在该图书!"<
   cout<<"继续修改请按回车,结束请按空格"<
   cin.get();
   c=cin.get();
 }
 return headlib;
}


void readfilelib()                    //将文件重新读出
{
 char c;
    int num,price;
    char name[20];
 char author[10];
 char kind[10];
 char pubunit[30];
 char pubtime[20];
    FILE *fp=fopen("e:\\library.txt","r");
    while(!feof(fp))
    {
        if((c=fgetc(fp))=='\n')
        break;
    }
    cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
    while(!feof(fp))
    {
        fscanf(fp,"%d%s%s%s%s%s%d\n",&num,name,author,kind,pubunit,pubtime,&price);
        cout<<<NUM<<SETW(15)<<NAME<<SETW(10)<<AUTHOR;
     cout<<<KIND<<SETW(18)<<PUBUNIT<<SETW(12)<<PUBTIME;
     cout<<<PRICE<<ENDL;
    }
    fclose(fp);
}


void readfilelibnew()                    //将文件重新读出
{
 char c;
    int num,price;
    char name[20];
 char author[10];
 char kind[10];
 char pubunit[30];
 char pubtime[20];
    FILE *fp=fopen("e:\\librarynew.txt","r");
    while(!feof(fp))
    {
        if((c=fgetc(fp))=='\n')
        break;
    }
    cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
    while(!feof(fp))
    {
        fscanf(fp,"%d%s%s%s%s%s%d\n",&num,name,author,kind,pubunit,pubtime,&price);
        cout<<<NUM<<SETW(15)<<NAME<<SETW(10)<<AUTHOR;
     cout<<<KIND<<SETW(18)<<PUBUNIT<<SETW(12)<<PUBTIME;
     cout<<<PRICE<<ENDL;
    }
    fclose(fp);
}

 

void main()
{
    int i;
 char clib,clibnew;
    LRY *headlib;

    cout<
    for(i=0;i<34;i++)
    cout<<"*";
    cout<<"图书信息输入";
    for(i=0;i<34;i++)
    cout<<"*";
    cout<
   
 headlib=createlib();
 savefilelib(headlib);

    cout<
    for(i=0;i<34;i++)
    cout<<"*";
    cout<<"图书信息输出";
    for(i=0;i<34;i++)
    cout<<"*";
    cout<
    prinlib(headlib);
   
    cout<
    for(i=0;i<34;i++)
    cout<<"*";
    cout<<"图书信息查找";
    for(i=0;i<34;i++)
    cout<<"*";
    cout<
    searchlib(headlib);

 cout<
    for(i=0;i<34;i++)
    cout<<"*";
    cout<<"图书信息插入";
    for(i=0;i<34;i++)
    cout<<"*";
    cout<
    headlib=insertlib(headlib);
 cout<<"修改后的信息为:"<
 prinlib(headlib);

 cout<
    for(i=0;i<34;i++)
    cout<<"*";
    cout<<"图书信息删除";
    for(i=0;i<34;i++)
    cout<<"*";
    cout<
    headlib=dellib(headlib);
 cout<<"修改后的信息为:"<
 prinlib(headlib);

 cout<
    for(i=0;i<34;i++)
    cout<<"*";
    cout<<"图书信息修改";
    for(i=0;i<34;i++)
    cout<<"*";
    cout<
    headlib=correctlib(headlib);
 cout<<"修改后的信息为:"<
 prinlib(headlib);
 savefilelibnew(headlib);

 cout<<"是否再次显示文件“library.txt”的内容(Y/N)?"<
 cin.get();                      //接收回车
 clib=cin.get();
 if(clib=='y'||clib=='Y'){
  cout<
  cout<<"“library.txt”文件的信息为:"<
  readfilelib();
 }
 

 cout<<"是否再次显示文件“librarynew.txt”的内容(Y/N)?"<
 cin.get();                      //接收回车
 clibnew=cin.get();
 if(clibnew=='y'||clibnew=='Y'){
  cout<
  cout<<"“librarynew.txt”文件的信息为:"<
  readfilelibnew();
 }
 else cout<<"程序结束!"<< P>


   
}
 
 
 
 
 
 
 
 
 
 
 

 

 

你可能感兴趣的:(struct,File,null,library,FP,出版)