千家信息网

C语言如何实现图书管理系统

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、
千家信息网最后更新 2025年11月10日C语言如何实现图书管理系统

这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

主要内容

开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:

(1)图书信息录入功能(图书信息用文件保存)--输入

(2)图书信息浏览功能--输出

(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):

①按书名查询

②按作者名查询 按照价钱排序 按出版时间排序等等

(4)图书信息的删除与修改

扩展功能:可以按照自己的程度进行扩展。比如

(1)简单的权限处理

(2)报表打印功能

(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。

(4)模糊查询

(5)综合查询

(6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等。

概要设计

1 图书录入可以录入图书名,作者,出版社,出版日期,价格!录入图书编号时函数就会判断此 编 号是否存在,若存在不能成功录入!

2 图书浏览可以浏览全部图书!

3 图书查询提供按图书编号模糊查询,按图书名关键字查询,按图书编号精确查询,按图书名精确 查询!模糊查询和关键字查询事通过比价字符串的相似度而实现的!

4 修改删除图书可以通过图书查询来查询操作的图书编号,通过编号操作!函数会提示用户是否调 用图书查询来找到自己想要操作的图书的编号。如果某一本图书已经被借阅那么用户就不能删 除 该图书!

5 借阅图书通过学号和图书编号进行借阅!如果该学号是第一次借阅那么会提示用户输入自己的姓 名,并存入student.txt,方便以后借阅与归还!

6 归还图书先提供学号,然后程序会输出该学号借阅的所有图书,然后再通过编号归还!

7 借阅查询可查询某个学生已借但未归还的图书!

项目源码

结构体

先建立结构体,定义结构体成员

typedef struct book/*图书结构体*/{char num[10];  /*书号*/char name[10];  /*书名*/char auth[10]; /*作者*/int count;int sum;}Book;typedef struct borrow/*借书结构体*/{char id[20];char user[20];char book[20];char bookid[20];struct borrow *next;}BBnode,*BBlink;struct user { char num[10];/* 学号 */ char pass[15];char name[15]; char sex[10];  };  typedef struct unode { struct user data; struct unode *next; }Unode,*Ulink; Unode *os;

登录界面函数

int login(Ulink l){  /*****************登陆窗口初始化****************************/while(!flag){char User_id[10],password[10],tmp;int i=0;User_id[0]='\0';password[0]='\0';textbackground(179);clrscr();gotoxy(33,23);textcolor(YELLOW);cputs("ESC = EXIT");textcolor(WHITE);textbackground(179);box(1,1,80,24);h_line(2,3,78);gotoxy(15,2);cputs("Login now please input the User__ID  and Password");bar_(30,10,23,5,5);/******************账号过滤*********************/while(User_id[0]=='\0'){gotoxy(31,11);textcolor(YELLOW);textbackground(5);cputs("User__ID:");gotoxy(31,13);cputs("Password:");textbackground(179);textcolor(WHITE);gotoxy(28,7);cputs("please input the User__ID!");textbackground(179);textcolor(YELLOW);gotoxy(27,11);putch(272);gotoxy(27,13);putch(' ');gotoxy(40,11);tmp=getch();if(tmp==27){flg=27;return 0;}while(tmp!='\r'&&i<=9&&(tmp>=64&&tmp<=90)||(tmp>=97&&tmp<=122||(tmp>=48&&tmp<=57))){textcolor(YELLOW);textbackground(5);        putch(tmp);        User_id[i]=tmp;        i++;        tmp=getch();        if(tmp==27)        {flg=27;return 0;}}User_id[i]='\0';}/**********************密码过滤****************************/while(password[0]=='\0'){gotoxy(28,7);textbackground(179);textcolor(WHITE);cputs("  input the password now  ");textbackground(179);textcolor(YELLOW);gotoxy(27,13);putch(272);gotoxy(27,11);putch(' ');gotoxy(40,13);i=0;tmp=getch();if(tmp==27){flg=27;return 0;}while(tmp!='\r'&&i<=10&&(tmp>=64&&tmp<=90)||(tmp>=97&&tmp<=122||(tmp>=48&&tmp<=57))){        textbackground(5);        putch('*');         password[i]=tmp;        i++;        tmp=getch();        if(tmp==27)        {flg=27;return 0;}}password[i]='\0';}/*************把账号和密码进行对比验证**************/if(!strcmp(User_id,"admin")&&!strcmp(password,"admin"))        {                return 2;        }if(cmps(l,User_id,password)){                return 1;}}}

选择界面函数

void choose(){while(1){ textbackground(179);clrscr();gotoxy(33,2);textcolor(WHITE);cputs("Administrastor");textcolor(YELLOW);box(1,1,80,24);h_line(2,3,78);gotoxy(3,6);cputs(">>>-------------------------1.User Management----------------------------<<<");gotoxy(3,10);cputs(">>>-------------------------2.Book Management----------------------------<<<");        gotoxy(3,14);cputs(">>>-------------------------3.Borrow Books-------------------------------<<<");gotoxy(30,22);textcolor(RED);cputs("Please Select!!!");flg=getch();if(flg=='2')                    bookss();                                                                       if(flg=='1')        users();if(flg=='3')        borrow();if(flg==27){        flg=-1;        return;}       }               }void admin(){while(1){choose();       if(flg=='1')    bookss();if(flg=='2')users();if(flg=='3')borrow();if(flg==27){return;}}}

操作界面函数

void user(Ulink h){int flag;BBlink l,p,r;/* 连表 */ FILE *fp; /* 文件指针 */ int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) {         fp=fopen(bfile,"wb"); } while(!feof(fp)) {        p=(BBnode*)malloc(sizeof(BBnode));         if(fread(p,sizeof(BBnode),1,fp)) /* 将文件的内容放入接点中 */         {                 p->next=NULL;         r->next=p;         r=p; /* 将该接点挂入连中 */         count++;     } }         while(1) {               textbackground(179);        clrscr();        textcolor(YELLOW);        box(1,1,80,24);        h_line(2,3,78);        gotoxy(3,2);        textcolor(RED);        cputs("A.");        textcolor(BLUE);        cputs("my message  ");        textcolor(RED);        cputs("B.");        textcolor(BLUE);        cputs("modyfy my message  ");        textcolor(RED);        cputs("C.");        textcolor(BLUE);        cputs("my borrow  ");        textcolor(RED);        cputs("D.");        textcolor(BLUE);        cputs("search book");        textcolor(YELLOW);        gotoxy(50,50);        flag=getch();     switch(flag)                    {                  case 'a':                show(os);                                break; /*************添加用户**********/        case 'b':                Modify_user(h);                Save(h);                                break;/*************删除用户**********/        case 'c':                Myborrow();                break;        case 'd':                usersearch();                                 break;        case 27:                return;                        }  }  }

添加函数

图书的添加,包括用户添加以及管理员添加

void add(blink l){ Bnode *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL)         r=r->next; textcolor(RED);gotoxy(25,4);cputs("INPUT THE MESSAGE ABOUT BOOK");gotoxy(31,10);textcolor(YELLOW);cputs("Book ID:");scanf("%s",num); p=(Bnode *)malloc(sizeof(Bnode));  while(s) {         if(strcmp(s->data.num,num)==0)         {                 textcolor(WHITE);                gotoxy(25,15);                cputs("This ID:");                printf("'%s'",num);                 cputs("is exist!");                    gotoxy(25,22);                cputs("please Press any key to continue...");                  gotoxy(255,252);                getch();                                    return;         }         s=s->next; } strcpy(p->data.num,num); gotoxy(31,12);textcolor(YELLOW);cputs("Input Book name:"); scanf("%s",p->data.name); gotoxy(31,14);cputs("input your Book auth:"); scanf("%s",p->data.auth); gotoxy(31,16);cputs("input your Book count:"); scanf("%d",&p->data.count); bookcount=p->data.count+bookcount;p->data.sum=0;p->next=NULL; r->next=p; r=p; gotoxy(30,22);textcolor(RED);cputs("Add Book Success !!!");getch();textcolor(YELLOW);}   /*******管理员添加用户*******/void Add(Ulink l){ Unode *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL)         r=r->next; textcolor(RED);gotoxy(25,4);cputs("INPUT THE MESSAGE ABOUT BOOK");gotoxy(31,10);textcolor(YELLOW);cputs("User ID:");scanf("%s",num); p=(Unode *)malloc(sizeof(Unode));  while(s) {         if(strcmp(s->data.num,num)==0)         {                 gotoxy(25,15);                cputs("This ID:");                printf("'%s'",num);                 cputs("is exist!");                    gotoxy(25,22);                textcolor(RED);                cputs("please Press any key to continue...");                  gotoxy(255,252);                getch();                                    return;         }         s=s->next; } strcpy(p->data.num,num); gotoxy(31,12);textcolor(YELLOW);cputs("Input Password:"); scanf("%s",p->data.pass); gotoxy(31,14);cputs("input your name:"); scanf("%s",p->data.name); gotoxy(31,16);cputs("input the sex:"); scanf("%s",p->data.sex); p->next=NULL; r->next=p; r=p; gotoxy(30,22);cputs("Add User Success !!!");usercount++;getch();textcolor(YELLOW);}

查找函数

用户查找以及管理员查找

/*******管理员查找图书*******/void qur(blink l){ int sel; char findmess[20]; Bnode *p;  if(!l->next) { gotoxy(30,4);textcolor(WHITE);     cputs("Not Find Bookdata!!!");          getch();    return; } textcolor(RED);gotoxy(25,4);cputs("Please Select Search  Type !");gotoxy(10,8);textcolor(WHITE);cputs("1.Search by ID");gotoxy(10,10);cputs("2.Search by Name");gotoxy(10,12);cputs("Please Select 1 or 2:");scanf("%d",&sel); if(sel==1) {        gotoxy(36,8);        textcolor(YELLOW);        cputs("Input the search ID:");         scanf("%s",findmess);         p=locate(l,findmess,"num");         if(p)         {                 gotoxy(36,12);                textcolor(WHITE);                cputs("Book ID:");                printf("%s",p->data.num);                gotoxy(36,14);                textcolor(WHITE);                cputs("Book Name:");                printf("%s",p->data.name);                gotoxy(36,16);                textcolor(WHITE);                cputs("Book author:");                printf("%s",p->data.auth);                gotoxy(36,18);                textcolor(WHITE);                cputs("Book count:");                printf("%d",p->data.count);                getch();                textcolor(YELLOW);                gotoxy(30,21);                cputs("Search Success !!");        }        else         {                gotoxy(30,22);                textcolor(RED);                cputs("Not finde !!!");                 getch();        }}       else if(sel==2) /* 姓名 */{         gotoxy(36,8);        textcolor(YELLOW);        cputs("Input the search name:");        scanf("%s",findmess);         p=locate(l,findmess,"name");                     if(p)         {                 gotoxy(36,12);                textcolor(WHITE);                cputs("Book ID:");                printf("%s",p->data.num);                gotoxy(36,14);                textcolor(WHITE);                cputs("Book Name:");                printf("%s",p->data.name);                gotoxy(36,16);                textcolor(WHITE);                cputs("Book author:");                printf("%s",p->data.auth);                gotoxy(36,18);                textcolor(WHITE);                cputs("Book count:");                printf("%d",p->data.count);                getch();                textcolor(YELLOW);        }         else         {                textcolor(RED);                gotoxy(30,22);                cputs("Not finde !!!");         }} else {        textcolor(RED);        gotoxy(30,22);         cputs("Error !!");         getch();}}  /*******用户查找图书*******/void usersearch(){ int sel; char findmess[20]; Bnode *p; blink l;/* 连表 */ FILE *fp; /* 文件指针 */ int count=0; Bnode *P,*r;l=(Bnode*)malloc(sizeof(Bnode)); l->next=NULL; r=l; fp=fopen(file,"rb"); if(fp==NULL) {         fp=fopen(file,"wb");  } while(!feof(fp)) {     P=(Bnode*)malloc(sizeof(Bnode));     if(fread(P,sizeof(Bnode),1,fp)) /* 将文件的内容放入接点中 */     {         P->next=NULL;                 bookcount=bookcount+P->data.count;                booksum=booksum+P->data.sum;        r->next=P;         r=P; /* 将该接点挂入连中 */         count++;     }} fclose(fp); /* 关闭文件 */   if(!l->next) { gotoxy(30,4);textcolor(WHITE);     cputs("Not Find Bookdata!!!");         getch();    return; } textcolor(RED);gotoxy(25,4);cputs("Please Select Delete  Type !");gotoxy(10,8);textcolor(WHITE);cputs("1.Search by ID");gotoxy(10,10);cputs("2.Search by Name");gotoxy(10,12);cputs("Please Select 1 or 2:");scanf("%d",&sel); if(sel==1) {        gotoxy(36,8);        textcolor(YELLOW);        cputs("Input the search ID:");         scanf("%s",findmess);         p=locate(l,findmess,"num");         if(p)         {                 gotoxy(36,12);                textcolor(WHITE);                cputs("Book ID:");                printf("%s",p->data.num);                gotoxy(36,14);                textcolor(WHITE);                cputs("Book Name:");                printf("%s",p->data.name);                gotoxy(36,16);                textcolor(WHITE);                cputs("Book author:");                printf("%s",p->data.auth);                gotoxy(36,18);                textcolor(WHITE);                cputs("Book count:");                printf("%d",p->data.count-p->data.sum);                getch();                textcolor(YELLOW);        }        else         {                gotoxy(30,22);                textcolor(RED);                cputs("Not finde !!!");                 getch();        }}       else if(sel==2){         gotoxy(36,8);        textcolor(YELLOW);        cputs("Input the search name:");        scanf("%s",findmess);         p=locate(l,findmess,"name");                     if(p)         {                 gotoxy(36,12);                textcolor(WHITE);                cputs("Book ID:");                printf("%s",p->data.num);                gotoxy(36,14);                textcolor(WHITE);                cputs("Book Name:");                printf("%s",p->data.name);                gotoxy(36,16);                textcolor(WHITE);                cputs("Book author:");                printf("%s",p->data.auth);                gotoxy(36,18);                textcolor(WHITE);                cputs("Book count:");                printf("%d",(p->data.count-p->data.sum));                getch();                textcolor(YELLOW);        }         else         {                textcolor(RED);                gotoxy(30,22);                cputs("Not finde !!!");         }} else {        textcolor(RED);        gotoxy(30,22);         cputs("Error !!");         getch();}}  /*******图书查找*******/int cmpbook(blink l,char id[],char na[]){ char findm[20];Bnode *p; if(!l->next) {         gotoxy(25,4);        textcolor(RED);     cputs("Not Find Book!!!");          getch();    return 0; } strcpy(findm,id);        p=locate(l,findm,"num");         if(p)         {                 strcpy(findm,na);                p=locate(l,findm,"name");                                if(p)                 {                         return 1;                  }                 else                 {                        textcolor(RED);                        gotoxy(30,22);                        cputs("Book name is NULL !!!");                         getch();                        return 0;                }        }        else         {                gotoxy(30,22);                textcolor(RED);                cputs("Book id is NULL !!!");                 getch();                return 0;        }                           }

删除函数

图书的删除

void del(blink l) {         int sel;         Bnode *p,*r;         char findmess[20];         if(!l->next)         {                 gotoxy(25,4);                textcolor(RED);                cputs("=====>not thing could delete!\n");                 getch();                return;         }         textcolor(RED);        gotoxy(25,4);        puts("Please Select Delete  Type !");        gotoxy(10,8);                textcolor(WHITE);        cputs("1.Delete by Book ID");        gotoxy(10,10);        cputs("2.Delete by Book Name");        gotoxy(10,12);        cputs("Please Select 1 or 2:");        scanf("%d",&sel);         if(sel==1)             {                 gotoxy(36,8);                textcolor(YELLOW);                cputs("Input the delete ID:");                 scanf("%s",findmess);                 p=locate(l,findmess,"num");                 if(p)                 {                         bookcount=bookcount-p->data.count;                        r=l;                         while(r->next!=p)                                 r=r->next;                         r->next=p->next;                         free(p);                         gotoxy(30,22);                        textcolor(RED);                        cputs("Delete success!\n");                             textcolor(YELLOW);                  }                 else                 {        textcolor(RED);        gotoxy(30,22);         cputs("Error !!");                 }        }         else if(sel==2)         {                 gotoxy(36,8);                textcolor(YELLOW);                cputs("Input the delete name:");                 scanf("%s",findmess);                 p=locate(l,findmess,"name");                 if(p)                 {                         r=l;                         while(r->next!=p)                                 r=r->next;                         r->next=p->next;                         free(p);                         gotoxy(30,22);                        textcolor(RED);                        cputs("Delete success!\n");                         bookcount--;                        textcolor(YELLOW);                  }                 else                {                        gotoxy(25,18);                        cputs("Not find!!");                 }        }         else        {        textcolor(RED);        gotoxy(30,22);         cputs("Error !!");          }        getch();        textcolor(YELLOW);}

借书管理函数

void borrow(){while(1){int flag;BBlink l,p,r;/* 连表 */ FILE *fp; /* 文件指针 */ int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) {         fp=fopen(bfile,"wb"); } while(!feof(fp)) {        p=(BBnode*)malloc(sizeof(BBnode));         if(fread(p,sizeof(BBnode),1,fp)) /* 将文件的内容放入接点中 */         {                 p->next=NULL;         r->next=p;         r=p; /* 将该接点挂入连中 */         count++;     }         borrowcount=count;} while(1) {               textbackground(179);        clrscr();        textcolor(YELLOW);        box(1,1,80,24);        h_line(2,3,78);        gotoxy(3,2);        textcolor(RED);        cputs("B");        textcolor(BLUE);        cputs("orrow book  ");        textcolor(RED);        cputs("R");        textcolor(BLUE);        cputs("eturn book  ");        textcolor(RED);        cputs("S");        textcolor(BLUE);        cputs("earch borrow  ");        textcolor(YELLOW);        printf("count: (borrow=%d)",borrowcount);        textcolor(RED);        gotoxy(50,50);        flag=getch();     switch(flag)                    {                  case 'b':                Add_borrow(l);                                break; /*************添加用户**********/        case 'r':                Del_borrow(l);                Save_borrow(l);                break;        case 's':                Qur_borrow(l);                break;        case 27:                return;                        }      }       }}

信息储存函数

图书信息的储存

*******借书信息保存*******/void Save_borrow(BBlink l) {  FILE* fp;  BBnode *p;  int flag=1,count=0;  fp=fopen(bfile,"wb");  if(fp==NULL)  { gotoxy(35,12);        textcolor(RED);      cputs("open error!");       exit(1);  }  p=l->next;  while(p)  {       if(fwrite(p,sizeof(BBnode),1,fp)==1)       {           p=p->next;           count++;       }       else       {           flag=0;           break;       } } if(flag) { textcolor(RED);gotoxy(30,24); /*** printf("save success.(saved%d.)",count);**调试的时候用的*/}fclose(fp); }

还书函数

/* 还书的操作 */ void Del_borrow(BBlink l) {                 int sel;         BBnode *p,*r;         Bnode *L;        char findmess[20];        FILE *fp; /* 文件指针 */Bnode *P,*R,*Q;L=(Bnode*)malloc(sizeof(Bnode)); L->next=NULL; R=L; fp=fopen(file,"rb"); if(fp==NULL) {         fp=fopen(file,"wb"); }while(!feof(fp)){    P=(Bnode*)malloc(sizeof(Bnode));    if(fread(P,sizeof(Bnode),1,fp)) /* 将文件的内容放入接点中 */    {        P->next=NULL;        R->next=P;        R=P; /* 将该接点挂入连中 */    }}fclose(fp); /* 关闭文件 */         if(!l->next)        {                gotoxy(30,4);                textcolor(RED);                cputs("not Book could Return!\n");                getch();                return;        }        textcolor(RED);        gotoxy(25,4);        puts("Please Select Return  Type !");        gotoxy(10,8);         textcolor(WHITE);        cputs("1.Return by Borrow ID");        gotoxy(10,10);        cputs("2.Return by book name");        gotoxy(10,12);        cputs("Please Select 1 or 2:");        scanf("%d",&sel);        if(sel==1)        {                gotoxy(36,8);                textcolor(YELLOW);                cputs("Input the Borrow ID:");                scanf("%s",findmess);                p=Locate_borrow(l,findmess,"num");                if(p)                {                                 Q=locate(L,findmess,"num");                                if(Q)                                 {                                         Q->data.sum=Q->data.sum-1;                                                save(L);                                }                         r=l;                         while(r->next!=p)                                 r=r->next;                         r->next=p->next;                         free(p);                         gotoxy(30,22);                        textcolor(RED);                        cputs("Return success!\n");                         borrowcount--;                        getch();                        textcolor(YELLOW);                  }                 else                 {                        gotoxy(30,22);                        textcolor(RED);                        cputs("Note find !!");                         getch();                                        }        }         else if(sel==2)         {                 gotoxy(36,8);                textcolor(YELLOW);                cputs("Input the Book name:");                 scanf("%s",findmess);                 p=Locate_borrow(l,findmess,"book");                if(p)                 {                                                         Q=locate(L,findmess,"name");                                 if(Q)                                 {                                         Q->data.sum=Q->data.sum-1;                                                save(L);                                }                                                 r=l;                         while(r->next!=p)                                 r=r->next;                         r->next=p->next;                         free(p);                         gotoxy(30,22);                        textcolor(RED);                        cputs("Borrow success!\n");                         borrowcount--;                        getch();                        textcolor(YELLOW);                  }                 else                {                        gotoxy(30,18);                        textcolor(RED);                        cputs("Not find!!");                         getch();                }        }                         else        {                gotoxy(30,22);                textcolor(RED);                cputs("Not finde !!");                 getch();        }        textcolor(YELLOW);}

修改函数

也分为用户和管理员两种情况

/* ****用于管理员修改用户资料 ***/void Modify(Ulink l) {         Unode *p;         char findmess[20];         if(!l->next)         {                gotoxy(30,4);                textcolor(RED);                cputs("not thing could modify!");                 getch();                return;         }         gotoxy(30,4);        textcolor(RED);        cputs("Modify User Message");        gotoxy(25,8);        textcolor(YELLOW);        cputs("input the User Id:");        scanf("%s",findmess);         p=Locate(l,findmess,"num");         if(p)         {                 textcolor(YELLOW);                gotoxy(25,10);                printf("Inpute The New ID(old:%s):",p->data.num);                 scanf("%s",p->data.num);                 gotoxy(25,12);                printf("Input The New Password(old:%s):",p->data.pass);                 scanf("%s",p->data.pass);                 gotoxy(25,14);                printf("Input The New Name(old:%s):",p->data.name);                 scanf("%s",p->data.name);                 gotoxy(25,16);                printf("Input The New Sex(old:%s):",p->data.sex);                 scanf("%s",p->data.sex);                 gotoxy(30,20);                textcolor(RED);                cputs("Modify Success !!!");                 getch();                textcolor(YELLOW);        }         else         {                       gotoxy(30,16);                textcolor(RED);                cputs("Not Finde !!!");                 getch();        }}    /****供用户修改用户自己资料 */void Modify_user(Ulink l){         Unode *p;         char findmess[20];         if(!l->next)         {                gotoxy(30,4);                textcolor(RED);                cputs("not thing could modify!");                 getch();                return;         }         gotoxy(30,4);        textcolor(RED);        cputs("Modify User Message");        gotoxy(33,8);        textcolor(YELLOW);        strcpy(findmess,os->data.num);        printf("your id:%s",findmess);        p=Locate(l,findmess,"num");         if(p)         {                 textcolor(YELLOW);                gotoxy(24,10);                printf("Input The New Password(old:%s):",p->data.pass);                 scanf("%s",p->data.pass);                 gotoxy(24,12);                printf("Input The New Name(old:%s):",p->data.name);                 scanf("%s",p->data.name);                 gotoxy(24,14);                printf("Input The New Sex(old:%s):",p->data.sex);                 scanf("%s",p->data.sex);                 gotoxy(31,18);                textcolor(RED);                cputs("Modify Success !!!");                 getch();                textcolor(YELLOW);        }         else         {                       gotoxy(30,16);                textcolor(RED);                cputs("Not Finde !!!");                 getch();        }}

添加借书函数

/*******添加借书*******/void Add_borrow(BBlink l) { Ulink H;/* 连表 */ FILE *Fp; /* 文件指针 */ Unode *Q,*T;blink L;/* 连表 */ FILE *FP; /* 文件指针 */ int ttl; Bnode *P,*R;char bookid[20];char bookname[20];char userid[20];BBnode *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL)         r=r->next; L=(Bnode*)malloc(sizeof(Bnode)); L->next=NULL; R=L; FP=fopen(file,"rb"); if(FP==NULL) {         FP=fopen(file,"wb");  } while(!feof(FP)) {     P=(Bnode*)malloc(sizeof(Bnode));     if(fread(P,sizeof(Bnode),1,FP)) /* 将文件的内容放入接点中 */     {         P->next=NULL;                 bookcount=bookcount+P->data.count;        R->next=P;         R=P; /* 将该接点挂入连中 */      } } fclose(FP); /* 关闭文件 */   H=(Unode*)malloc(sizeof(Unode)); H->next=NULL; T=H;Fp=fopen(ufile,"rb"); if(Fp==NULL) {         Fp=fopen(ufile,"wb");  } while(!feof(Fp)) {     Q=(Unode*)malloc(sizeof(Unode));    if(fread(Q,sizeof(Unode),1,Fp)) /* 将文件的内容放入接点中 */     {         Q->next=NULL;         T->next=Q;         T=Q; /* 将该接点挂入连中 */     } } fclose(Fp); textcolor(RED);gotoxy(25,4);cputs("Please input thease message");gotoxy(30,10);textcolor(YELLOW);cputs("Input Borrow ID:");scanf("%d",&ttl);itoa(ttl,num,10) ;p=(BBnode *)malloc(sizeof(BBnode));while(s) {         if(strcmp(s->id,num)==0)         {                 gotoxy(30,15);                cputs("Borrow ID:");                printf("'%s'",num);                 cputs("is exist!");                    gotoxy(26,22);                textcolor(RED);                cputs("please Press any key to continue...");                  gotoxy(255,252);                getch();                                    return;         }         s=s->next; } strcpy(p->id,num);gotoxy(31,12);textcolor(YELLOW);cputs("Input book id:"); scanf("%s",bookid);gotoxy(31,14);textcolor(YELLOW);cputs("Input book name:"); scanf("%s",bookname);/***************************************图书判断在否***************************************/ if(cmpbook(L,bookid,bookname)){        strcpy(p->bookid,bookid);        strcpy(p->book,bookname);        gotoxy(31,16);cputs("input your ID:"); scanf("%s",userid); /**************************************用户判断在否********************************/if(cmpuser(H,userid)){        strcpy(p->user,userid);        p->next=NULL; r->next=p; r=p; if(changeb(L,bookid)){gotoxy(30,22);cputs("Borrow Success !!!");Save_borrow(l);borrowcount++; getch();}} } textcolor(YELLOW);}

查找借书函数

查找自己借了哪些书

void Myborrow(){int i; BBlink l,p,r;/* 连表 */ FILE *fp; /* 文件指针 */ int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) {         fp=fopen(bfile,"wb"); } i=6;while(!feof(fp)) {                  p=(BBnode*)malloc(sizeof(BBnode));         if(fread(p,sizeof(BBnode),1,fp)) /* 将文件的内容放入接点中 */         {                 textcolor(WHITE);                gotoxy(30,4);                cputs("Your borrow book");                                if(strcmp(p->user,os->data.num)==0)                {                        textcolor(YELLOW);                         gotoxy(20,i);                        printf("Borrow ID:%s\tBook id:%s\tBook name:%s",p->id,p->bookid,p->book);                        i++;                         p->next=NULL;                         r->next=p;                         r=p; /* 将该接点挂入连中 */                         count++;                 }    }         myborrow=count;        if(myborrow==0)        {                textcolor(YELLOW);                gotoxy(30,13);                cputs("You  no borrow !!");          }   }fclose(fp);textcolor(YELLOW);        gotoxy(65,2);        printf("(borrow=%d)",myborrow);                        getch(); }

借书管理函数

void borrow(){while(1){int flag;BBlink l,p,r;/* 连表 */ FILE *fp; /* 文件指针 */ int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) {         fp=fopen(bfile,"wb"); } while(!feof(fp)) {        p=(BBnode*)malloc(sizeof(BBnode));         if(fread(p,sizeof(BBnode),1,fp)) /* 将文件的内容放入接点中 */         {                 p->next=NULL;         r->next=p;         r=p; /* 将该接点挂入连中 */         count++;     }         borrowcount=count;} while(1) {               textbackground(179);        clrscr();        textcolor(YELLOW);        box(1,1,80,24);        h_line(2,3,78);        gotoxy(3,2);        textcolor(RED);        cputs("B");        textcolor(BLUE);        cputs("orrow book  ");        textcolor(RED);        cputs("R");        textcolor(BLUE);        cputs("eturn book  ");        textcolor(RED);        cputs("S");        textcolor(BLUE);        cputs("earch borrow  ");        textcolor(YELLOW);        printf("count: (borrow=%d)",borrowcount);        textcolor(RED);        gotoxy(50,50);        flag=getch();     switch(flag)                    {                  case 'b':                Add_borrow(l);                                break; /*************添加用户**********/        case 'r':                Del_borrow(l);                Save_borrow(l);                break;        case 's':                Qur_borrow(l);                break;        case 27:                return;                        }  }   }  }

主函数

main(){ Ulink h,os;/* 连表 */ FILE *fp; /* 文件指针 */ Unode *p,*r;h=(Unode*)malloc(sizeof(Unode)); h->next=NULL; r=h; fp=fopen(ufile,"rb"); if(fp==NULL) {         fp=fopen(ufile,"wb");  } while(!feof(fp)) {     p=(Unode*)malloc(sizeof(Unode));     if(fread(p,sizeof(Unode),1,fp)) /* 将文件的内容放入接点中 */    {        p->next=NULL;        r->next=p;        r=p; /* 将该接点挂入连中 */     }}fclose(fp);system("wellcome");        if(flg==27)        {                flg=-1;                return;        }                while(1)                {                        flag=login(h);                        if(flg==27)                                {                                        flg=-1;                                        break;                                }                                 if(flag==2)                                {                                        choose();                                        flag=0;                                }                                if(flag==1)                                {                                        user(h);                                        flag=0;                                }                 } }

关于"C语言如何实现图书管理系统"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0