千家信息网

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

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、
千家信息网最后更新 2025年01月19日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语言如何实现图书管理系统"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

图书 文件 接点 查询 函数 用户 信息 管理 内容 指针 连中 功能 借阅 管理员 学号 结构 出版 系统 作者 排序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何保护linux服务器安全 工业控制网络技术项目报告 新疆网络安全管理招聘 学校电脑哪个是服务器 疫情下的网络安全变化 西南大学数据库技术大作业 新罗区坚广辛网络技术工作室 超算服务器维修需要多长时间 堵疏结合治理网络安全问题 连云港大容量服务器高性价比 常见的图形数据库包括什么 斯蒂芬库里数据库 吐鲁番文书数据库建设 杭州游卡网络技术公司怎么样 网络安全创客汇 国家网络安全手抄报4k 网络技术挑战赛的目标与任务 山东省网络安全技术 中国地图小软件开发 内蒙古通信软件开发创意 中国网络安全厂家排名前十 贴片机上位软件开发 一般网络安全事件处置流程 互联网协会金融科技 2003服务器权限设置 服务器主板没有电池吗 svn服务器目录结构 网络运营者按照网络安全等 网络安全工程师零基础好考吗 广州新华互联网科技学校招聘
0