HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    图书管理系统c语言课程设计

    发布时间:2023-04-01 09:37:21     稿源: 创意岭    阅读: 1179        当前文章关键词排名出租

    大家好!今天让创意岭的小编来大家介绍下关于图书管理系统c语言课程设计的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    创意岭作为行业内优秀企业,服务客户遍布全国,相关业务请拨打175-8598-2043,或微信:1454722008

    本文目录:

    图书管理系统c语言课程设计

    一、图书管理系统C语言设计(c#免入)

    #include <dos.h>

    #include <bios.h>

    #include <conio.h>

    #include <stdio.h>

    #include <stdlib.h>

    #include <math.h>

    #include <string.h>

    #define LEFT 0x4b00 /*左*/

    #define RIGHT 0x4d00 /*右*/

    #define DOWN 0x5000 /*下*/

    #define UP 0x4800 /*上*/

    #define SPACE 0x3920 /*空格*/

    #define ESC 0x011b /* ESC键*/

    #define ENTER 0x1c0d /*回车键*/

    #define Backspace 0xe08 /*擦除键*/

    #define ALT_B 12288 /*组合键ALT_B */

    #define ALT_M 12800/*组合键ALT_M */

    #define ALT_H 8960/*组合键ALT_H */

    int key;/*按键变量*/

    int textx,texty;/*光标坐标,x行,y列*/

    struct menustruct/*菜单用的结构体*/

    {

    char name[10];/*主菜单名*/

    char str[10][20];/*选项*/

    int n;/*选项数*/

    }ml[3];/*使用了3个,可根据需要增删*/

    typedef struct BookList/*书的结构体*/

    {

    char num[20];/*图书编号*/

    char name[20];/*书名*/

    int price;/*书的价格*/

    char person[20];/*借阅人*/

    int yes;/*判断书是否存在或者已经借出,1存在,0借出*/

    struct BookList *next;

    }Book;

    typedef struct MemberList/*会员的结构体*/

    {

    char name[20];/*会员的姓名*/

    char sex[2];/*会员的性别*/

    int age;/*会员的年龄*/

    struct MemberList *next;

    }Member;

    char save[4096];/*保存文本区域空间*/

    /*char sav1[4096];*/

    char c[4096];/*清屏专用空间*/

    int i,j;/*常用变量*/

    void Menu();/*初始化界面*/

    void Selectitem();/*定义菜单*/

    void DrawSelectitem();/*显示主菜单*/

    void BlackText(int x,int y,char *z);/*选中菜单*/

    void RedText(int x,int y,char *z);/*正常菜单*/

    void Run();/*具体操作过程*/

    void DrawMl(int n);/*显示下拉菜单*/

    void MoveMl(int n,int x);/*菜单选项的控制*/

    void Enter(int m,int n);/*菜单选项的具体功能*/

    void BookAdd();/*添加图书*/

    void BookConsult();/*图书查询*/

    void BookDel();/*删除图书资料*/

    void BookBorrow();/*借书*/

    void BookReturn(); /*还书*/

    void MemberAdd(); /*增加会员*/

    void MemberConsult();/*查询会员*/

    void MemberDel(); /*删除会员*/

    void MemberBook(); /*查询会员借书信息*/

    void Help(); /*帮助*/

    void Ver(); /*版本信息*/

    void ClrScr();/*自定义清屏函数*/

    void DrawFrame(int left,int up,int right,int down,int textcolor,int backgroundcolor);/*画边框*/

    /***主函数****/

    void main(void)

    {

    Menu();/*初始化界面*/

    Run();

    /*具体操作过程*/

    }

    /*初始化界面*/

    void Menu()

    {

    system("cls"); /*调用系统的清屏命令*/

    textbackground(BLUE);/*将背景设置为蓝色*/

    window(1,1,25,80);

    clrscr();

    textx=3;/*光标初始化位置*/

    texty=2;

    gotoxy(1,2);

    printf("%c",218);/*画左上角*/

    for(i=0;i<78;i++)

    printf("%c",196); /*画水平直线*/

    printf("%c",191);/*画右上角*/

    for(i=3;i<=23;i++)

    {

    gotoxy(1,i);

    printf("%c",179); /*画垂直线*/

    gotoxy(80,i);

    printf("%c",179);

    }

    printf("%c",192); /*画左下角*/

    for(i=0;i<78;i++)

    printf("%c",196);

    printf("%c",217); /*画右下角*/

    gotoxy(1,1);

    textcolor(7); /*设置灰色*/

    for(i=0;i<80;i++)

    cprintf("%c",219);/*用符号实现画主菜单的灰色背景区*/

    Selectitem(); /*调用选项函数*/

    DrawSelectitem(); /*画选项*/

    gettext(2,3,78,23,c); /*保存当前文本区域*/

    }

    /*定义菜单*/

    void Selectitem()

    {

    strcpy(ml[0].name,"Book");/*下面的具体选项补空格是为了各菜单黑色背景相同*/

    strcpy(ml[0].str[0],"Add ");/*添加图书*/

    strcpy(ml[0].str[1],"Find ");/*查询图书*/

    strcpy(ml[0].str[2],"Delete ");/*删除图书资料*/

    strcpy(ml[0].str[3],"Borrow ");/*借书*/

    strcpy(ml[0].str[4],"Return ");/*还书*/

    strcpy(ml[0].str[5],"Exit ");/*退出系统*/

    ml[0].n=6; /*保存菜单的项数*/

    strcpy(ml[1].name,"Member");

    strcpy(ml[1].str[0],"Register ");/*添加新会员*/

    strcpy(ml[1].str[1],"Find ");/*查询会员资料*/

    strcpy(ml[1].str[2],"Delete ");/*删除会员资料*/

    strcpy(ml[1].str[3],"Member&book ");

    ml[1].n=4;

    strcpy(ml[2].name,"Help");/*系统帮助*/

    strcpy(ml[2].str[0],"This System ");

    strcpy(ml[2].str[1],"Ver ");

    ml[2].n=2;

    }

    /*显示主单名*/

    void DrawSelectitem()

    {

    for(i=0;i<3;i++)

    RedText(i,1,ml[i].name); /*显示主菜单名,且首字母为红色*/

    }

    /*正常显示菜单*/

    void RedText(int x,int y,char *z)

    {

    textbackground(7); /*设置背景颜色为浅灰色*/

    gotoxy(3+x*20,y);

    for(j=0;z[j];j++)

    {

    if(j==0)

    textcolor(RED);/*第一个字母显示红色*/

    else

    textcolor(BLACK); /*设置黑色*/

    cprintf("%c",z[j]); /*输出菜单名*/

    }

    }

    /*显示选中菜单*/

    void BlackText(int x,int y,char *z)

    {

    textbackground(0); /*设置背景颜色为黑色*/

    textcolor(15); /*设置文本颜色为白色*/

    gotoxy(3+20*x,y);/*定位坐标*/

    cputs(z); /*输出菜单名字符串*/

    }

    /*按键操作过程*/

    void Run()

    {

    while(1)

    {

    gotoxy(texty,textx);

    key=bioskey(0);/*接收按键*/

    switch(key)

    {

    case ALT_B:

    case ESC: DrawMl(0);break; /*显示下拉菜单1*/

    case ALT_M: DrawMl(1);break;/*显示下拉菜单2*/

    case ALT_H: DrawMl(2);/*显示下拉菜单3*/

    case UP: /*上光标键的操作控制*/

    {

    if(textx==3)

    textx=23;

    textx--;

    gotoxy(texty,textx);

    }break;

    case DOWN: /*下光标键的操作控制*/

    {

    if(textx==23)

    textx=3;

    textx++;

    gotoxy(texty,textx);

    }break;

    case LEFT: /*左光标键的操作控制*/

    {

    if(texty==2)

    texty=79;

    texty--;

    gotoxy(texty,textx);

    }break;

    case Backspace: /*擦除键的设置*/

    {

    if(texty==2&&textx==3)

    continue;

    else

    {

    if(texty!=2)

    texty--; /*擦除键的细节问题,先擦去东西,然后光标还要往后退一格*/

    else

    if(texty==2)

    {

    texty=78;

    textx--;

    }

    gotoxy(texty,textx);

    printf(" ");

    gotoxy(texty,textx);

    }

    }break;/*end case 0xe08*/

    case RIGHT: /*右光标键的操作控制*/

    {

    if(texty==79)

    texty=2;

    texty++;

    gotoxy(texty,textx);

    }break;

    case SPACE: /*空格键的操作*/

    {

    if(texty==79)

    continue;

    else

    {

    gotoxy(texty,textx); /*空格的细节操作*/

    printf(" ");

    texty++;

    gotoxy(texty,textx);

    }

    }break;

    case ENTER: /*回车的控制操作*/

    {

    if(textx==23)

    continue;

    textx++;

    texty=2;

    gotoxy(texty,textx);

    }break;

    default : /*非控制键的结果*/

    {

    if(texty==79&&textx==23)/*到达最后就不再输出*/

    continue;

    else

    if(texty==79&&textx!=23) /*到行的最后*/

    {

    textx++;

    texty=2;

    }

    gotoxy(texty,textx);/*输出结果*/

    printf("%c",key);

    if(texty==79) /*如果texty==79就不执行*/

    continue;

    else /*如果没到行尾就继续执行,使光标向前移动一位*/

    texty++;

    }

    }

    }/*大循环的大括号*/

    }

    /*画边框函数*/

    void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor)

    {

    textbackground(bcolor); /*背景颜色*/

    textcolor(bcolor); /*文本颜色*/

    for(i=l;i<=r;i++) /*输出背景区域*/

    {

    for(j=u;j<=d;j++)

    {

    gotoxy(i,j);

    printf("%c",219); /*输出背景字符*/

    }

    }

    textcolor(tcolor);/*边框颜色*/

    for(i=u+1;i<d;i++) /*在背景区域内输出边框线*/

    {

    gotoxy(l,i);

    cprintf("%c",179); /*垂直线*/

    gotoxy(r,i);

    cprintf("%c",179);

    }

    for(i=l+1;i<r;i++)

    {

    gotoxy(i,u);

    cprintf("%c",196); /*水平线*/

    gotoxy(i,d);

    cprintf("%c",196);

    }

    gotoxy(l,u);

    cprintf("%c",218);/*左上角*/

    gotoxy(r,u);

    cprintf("%c",191);/*右上角*/

    gotoxy(l,d);

    cprintf("%c",192);/*左下角*/

    gotoxy(r,d);

    cprintf("%c",217); /*右下角*/

    /* gettext(l+1,u+1,r-1,d-1,save1);*//*保存边框内区域*/

    }

    /*显示具体下拉选择项目*/

    void DrawMl(int n)

    {

    gettext(1,1,80,25,save);/*保存被掩盖的地方*/

    BlackText(n,1,ml[n].name);/*反选显示主菜单*/

    DrawFrame(3+20*n-1,2,3+20*n+19,3+ml[n].n,0,7);/*下拉菜单的边框*/

    for(i=3;i<3+ml[n].n;i++)/*输出所选菜单各选项*/

    {

    if(i==3)

    BlackText(n,i,ml[n].str[i-3]);/*默认选中第一项*/

    else

    RedText(n,i,ml[n].str[i-3]);/*其余各项首字符红色显示*/

    }

    gotoxy(79,1);

    MoveMl(n,3);/*菜单选项的控制*/

    }

    /*菜单选项的控制,n决定水平项,x决定下拉的选项*/

    void MoveMl(int n,int x)

    {

    int flag=1;

    while(flag)

    {

    gotoxy(79,1);

    key=bioskey(0);/*接收按键*/

    gotoxy(79,1);

    switch(key)

    {

    case ESC:/*退出循环*/

    puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/

    flag=0;

    break;

    case LEFT:/*移到左边的选项*/

    puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/

    if(n==0)/*往左移动越界的话移到最后一个选项*/

    DrawMl(2);

    else

    DrawMl(n-1);

    flag=0;

    break;

    case RIGHT:/*移动右边的选项*/

    puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/

    if(n==2)/*往右移动越界的话移到第一个选项*/

    DrawMl(0);

    else

    DrawMl(n+1);

    flag=0;

    break;

    case UP:/*具体选项往上移动*/

    RedText(n,x,ml[n].str[x-3]);/*输出红色字体*/

    if(x==3)/*移到最上面再按上键,就移到最下面*/

    x=3+ml[n].n-1;

    else

    x--;/*移动到新的要显示的内容*/

    BlackText(n,x,ml[n].str[x-3]);/*输出黑色字体*/

    flag=1;

    break;

    case DOWN:/*具体选项往下移动*/

    RedText(n,x,ml[n].str[x-3]);

    if(x==(3+ml[n].n-1))/*移动到最底下再按下键就移到最上面*/

    x=3;

    else

    x++;/*移动到新的要显示的内容*/

    BlackText(n,x,ml[n].str[x-3]);

    flag=1;

    break;

    case ENTER:

    puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/

    Enter(n,x-3);/*菜单选项的具体功能*/

    flag=0;

    break;

    }

    gotoxy(79,1);

    }

    }

    /*菜单选项的具体功能*/

    void Enter(int m,int n)

    {

    switch(m)

    {

    case 0:switch(n) /*选择了图书菜单选项*/

    {

    case 0:BookAdd();break;/*添加图书*/

    case 1:BookConsult();break;/*图书查询*/

    case 2:BookDel();break;/*删除一本图书资料*/

    case 3:BookBorrow();break;/*借书*/

    case 4:BookReturn();break;/*还书*/

    case 5:exit(0);break;

    } break;/*退出系统*/

    case 1: switch(n) /*选择了会员菜单选项*/

    {

    case 0: MemberAdd();break;/*添加会员*/

    case 1: MemberConsult();break;/*会员查询*/

    case 2:MemberDel();break;/*删除一个会员资料*/

    case 3:MemberBook();/*查询某个会员所借图书情况*/

    }break;

    case 2:switch(n) /*选择了帮助菜单选项*/

    {

    case 0:Help();break;

    case 1:Ver();

    }

    }/*结束外switch*/

    }void BookAdd()

    {

    FILE *fp;

    Book consultbook;

    fp=fopen("book.txt","rb");/*读方式打开文件*/

    if(fp==NULL)

    fp=fopen("book.txt","wb"); /*写方式打开文件*/

    else/*如果有书就添加*/

    {

    fclose(fp);

    fp=fopen("book.txt","ab");/*追加方式打开文件*/

    }

    ClrScr();/*清屏*/

    printf("Please intput a new book num: ");/*逐个输入新图书的资料*/

    gets(consultbook.num);

    gotoxy(2,4);

    printf("Please input the new book name: ");

    gets(consultbook.name);

    gotoxy(2,5);

    printf("Please input the new book's price: ");

    scanf("%d%*c",&consultbook.price);

    strcpy(consultbook.person,"");

    consultbook.yes=1;/*表示书存在未借出*/

    consultbook.next=NULL;

    fwrite(&consultbook,sizeof(Book),1,fp);/*块写*/

    fclose(fp); /*关闭文件*/

    ClrScr();

    }

    /*图书查询*/

    void BookConsult()

    {

    FILE *fp;

    Book consultbook;

    char bookname[20]; /*书名*/

    int flag=0,i=0;

    ClrScr();

    gotoxy(2,3);

    printf("Please input the book name: ");

    gets(bookname); /*输入要查询的图书名*/

    fp=fopen("book.txt","rb");

    if(fp==NULL)/*没找到文件*/

    {

    ClrScr();

    gotoxy(2,3);

    printf("Error!");

    fclose(fp);

    return;

    }

    else

    while(!feof(fp))/*查询图书资料*/

    {

    fread(&consultbook,sizeof(Book),1,fp);

    if(strcmp(consultbook.name,bookname)==0)/*如果查找到*/

    {

    ClrScr();

    gotoxy(2,3+i*5);

    printf("This book %s information as follow:",consultbook.name);

    gotoxy(2,4+i*5);

    printf("This book num is %s.",consultbook.num);

    gotoxy(2,5+i*5);

    printf("This book's price is %d.",consultbook.price);

    gotoxy(2,6+i*5);

    printf("This book is browwed by %s.",consultbook.person);

    gotoxy(2,7+i*5);

    printf("This book's state is %d.",consultbook.yes);

    i++;

    flag=1; /*查找数据标志*/

    }

    }

    if(flag==0)

    {

    ClrScr();

    gotoxy(2,3);

    printf("Sorry, %s doesn't exist in the library!",bookname);

    }

    fclose(fp);

    }

    /*删除图书资料*/

    void BookDel()

    {

    FILE *fp;

    Book *head,*p,*q;

    char bookname[20];

    fp=fopen("book.txt","rb");/*读方式打开文件*/

    if(fp==NULL)/*没找到文件*/

    {

    gotoxy(2,3);

    printf("Error!");

    fclose(fp);

    return;

    }

    head=p=q=(Book*)malloc(sizeof(Book));/*将文件内容放入链表*/

    fread(p,sizeof(Book),1,fp); /*读第一条记录*/

    while(!feof(fp))

    {

    q=p;

    p=(Book*)malloc(sizeof(Book));

    fread(p,sizeof(Book),1,fp); /*读记录*/

    q->next=p;/*新记录插入到链表的尾*/

    }

    p->next=NULL;/*最后一个结点的后继为空*/

    fclose(fp);

    ClrScr();

    printf("Input the book name: ");

    gets(bookname); /*输入图书名*/

    p=head;

    while(p!=NULL)/*按名字查找要删除的图书*/

    {

    if(strcmp(p->name,bookname)==0)/*找到要删除的图书*/

    {

    if(p==head) /*如果是第一个结点*/

    head=head->next;

    else

    q->next=p->next;/*不是第一个结点*/

    break;

    }

    q=p; /*指针后移*/

    p=p->next;

    }

    fp=fopen("book.txt","wb");/*删除后从链表的头开始重新保存*/

    while(head!=NULL)

    {

    fwrite(head,sizeof(Book),1,fp);/*块写*/

    head=head->next;

    }

    fclose(fp);

    ClrScr();

    }

    /*借书*/

    void BookBorrow()

    {

    FILE *fp;

    Book consultbook;

    Member consultmember;

    char bookname[20],membername[20];

    int flag=0,mflag=0;

    ClrScr();

    gotoxy(2,3);

    printf("Please input the mermber name: ");

    gets(membername); /*输入会员名*/

    if((fp=fopen("member.txt","rb"))==NULL)/*没找到文件*/

    {

    gotoxy(2,3);

    printf("Cannot open file!\n");

    return;

    }

    else

    while(!feof(fp))/*查询会员资料*/

    {

    fread(&consultmember,sizeof(Member),1,fp);

    if(strcmp(consultmember.name,membername)==0)

    {

    mflag=1; /*是会员标志*/

    break;

    }

    }

    fclose(fp);

    if(mflag==0)

    {

    gotoxy(2,4);

    printf("You are not a member now,pleas register first!");/*不是会员不能借书*/

    return;

    }

    gotoxy(3,5);

    printf("Please input the book name: ");

    gets(bookname); /*输入图书名*/

    ClrScr();

    if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/

    {

    gotoxy(2,3);

    printf("Cannot open file!\n");

    return;

    }

    while(!feof(fp))/*查询图书资料*/

    {

    fread(&consultbook,sizeof(Book),1,fp);

    if(strcmp(consultbook.name,bookname)==0)

    {

    if(consultbook.yes==0)/*图书已经借出的判断*/

    {

    gotoxy(2,3);

    printf("This book has borrowed!\n");

    break;

    }

    else

    {

    consultbook.yes=0; /*作借出标志*/

    strcpy(consultbook.person,membername);/*登记借书会员*/

    fseek(fp,-1L*sizeof(Book),1);/*从当前位置前移一条记录指针*/

    fwrite(&consultbook,sizeof(Book),1,fp);/*写记录*/

    gotoxy(2,3);

    printf("Borrowed success!\n");

    flag=1;/*借出书标志*/

    break;

    }

    }

    }

    if(flag!=1)

    {

    ClrScr();

    gotoxy(2,3);

    printf("Borrowed fail!\n");/*借书失败*/

    }

    fclose(fp);

    }

    /*还书*/

    void BookReturn()

    {

    FILE *fp;

    Book consultbook;

    char bookname[20];

    int flag=0;

    ClrScr();

    if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/

    {

    gotoxy(2,3);

    printf("Can't open file!\n");

    return;

    }

    printf("Please input the book name: ");

    gets(bookname); /*输入图书名*/

    ClrScr();

    while(!feof(fp))/*查询图书资料*/

    {

    fread(&consultbook,sizeof(Book),1,fp);

    if(strcmp(consultbook.name,bookname)==0)

    {

    if(consultbook.yes==0)/*图书已经借出的判断*/

    {

    consultbook.yes=1;/*作图书未借书标志,表示已还书*/

    strcpy(consultbook.person,"");

    fseek(fp,-1L*sizeof(Book),1);

    fwrite(&consultbook,sizeof(Book),1,fp);

    gotoxy(2,3);

    printf("Return book success!\n");

    flag=1;

    break;

    }

    }

    }

    if(flag!=1)

    printf("Return fail!\n");

    fclose(fp);

    }

    /*清除屏幕*/

    void ClrScr()

    {

    int i,j;

    puttext(2,3,78,23,c);/*刚开始已经用gettext把蓝色的一块地方保存下来,现在再还原*/

    gotoxy(2,3);

    }

    /*会员注册*/

    void MemberAdd()

    {

    FILE *fp;

    Member consultmember;

    fp=fopen("member.txt","rb");

    if(fp==NULL)/*如果没会员就新建*/

    fp=fopen("member.txt","wb");

    else/*如果有会员就添加*/

    {

    fclose(fp);

    fp=fopen("member.txt","ab");/*追加方式打开*/

    }

    ClrScr();

    gotoxy(2,3);

    printf("Please intput new member's name: ");/*逐个输入会员的资料*/

    gets(consultmember.name);

    gotoxy(2,4);

    printf("Please input new member's sex: ");

    gets(consultmember.sex);

    gotoxy(2,5);

    printf("Please input new member's age: ");

    scanf("%d%*c",&consultmember.age);

    fwrite(&consultmember,sizeof(Member),1,fp);/*写入记录*/

    fclose(fp);

    ClrScr();

    }

    /*查询会员*/

    void MemberConsult()

    {

    FILE *fp;

    Member consultmember;

    char membername[20];

    int flag=0;

    ClrScr();

    gotoxy(2,3);

    printf("Please input the member's name: ");/*输入要查询的会员名*/

    gets(membername);

    fp=fopen("member.txt","rb");

    if(fp==NULL)/*没找到文件*/

    {

    ClrScr();

    gotoxy(2,3);

    printf("Error!\n");

    fclose(fp);

    return;

    }

    while(!feof(fp))/*查询会员资料*/

    {

    fread(&consultmember,sizeof(Member),1,fp);

    if(strcmp(consultmember.name,membername)==0)/*比较*/

    {

    ClrScr();

    gotoxy(2,3);

    printf("The member %s 's information as follow:",consultmember.name);

    gotoxy(2,4);

    printf("This member'sex is %s.",consultmember.sex);

    gotoxy(2,5);

    printf("This member 's age is %d.",consultmember.age);

    flag=1;

    break;

    }

    }

    if(flag==0)

    {

    ClrScr();

    gotoxy(2,3);

    printf("The member %s doesn't exist in the library!",membername);

    }

    fclose(fp);

    }

    /*删除会员资料*/

    void MemberDel()

    {

    FILE *fp;

    Member *head,*p,*q;

    char membername[20];

    fp=fopen("member.txt","rb");

    if(fp==NULL)/*没找到文件*/

    {

    gotoxy(2,3);

    printf("Error!");

    fclose(fp);

    return;

    }

    head=p=q=(Member*)malloc(sizeof(Member));/*将文件内容放入链表*/

    fread(p,sizeof(Member),1,fp);

    while(!feof(fp))

    {

    q=p;

    p=(Member*)malloc(sizeof(Member));

    fread(p,sizeof(Member),1,fp);/*读记录*/

    q->next=p;/*链入到链表的尾部*/

    }

    p->next=NULL;

    fclose(fp);

    ClrScr();

    printf("Please input the member's name: ");/*输入会员名*/

    gets(membername);

    p=head;

    while(p!=NULL)/*按名字查找要删除的书*/

    {

    if(strcmp(p->name,membername)==0)/*查找会员*/

    {

    if(p==head)

    head=head->next;/*如果是第一条记录*/

    else

    q->next=p->next;/*不是第一条记录*/

    break;

    }

    q=p; /*没找到,则指针后移继续找*/

    p=p->next;

    }

    fp=fopen("member.txt","wb");/*删除后重新保存*/

    while(head!=NULL)

    {

    fwrite(head,sizeof(Member),1,fp);/*块写*/

    head=head->next;

    }

    fclose(fp);

    ClrScr();

    }

    字数超了。。。。留个邮箱吧

    二、c语言 图书信息管理系统设计

    通过测试!

    #include<stdio.h>

    #include<string.h>

    #include<stdlib.h>

    #include<conio.h>

    #define MAX 100

    struct Student

    {

    int num;/*登录号*/

    char name[100];/*书名*/

    char author[100];/*作者名*/

    char fn[100];/*分类号*/

    char place[100];/*出版单位*/

    char day[100];/*出版时间*/

    float money;/*价格*/

    }stu[MAX];

    main()/*主函数*/

    {

    void Input();/*输入*/

    void Display();/*输出*/

    void Find();/*查找*/

    void Modify();/*删除*/

    void Change();/*修改*/

    int n;

    for(;;)

    {

    printf("\n");

    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

    printf("※ ※\n");

    printf("※ 欢迎来到图书信息管理系统 ※\n");

    printf("※ ※\n");

    printf("※ ※\n");

    printf("※ 主菜单 ※\n");

    printf("※ ※\n");

    printf("※ ▲1.图书信息录入 ▲ ※\n");

    printf("※ ※\n");

    printf("※ ▲2.图书信息浏览 ▲ ※\n");

    printf("※ ※\n");

    printf("※ ▲3.图书信息查询 ▲ ※\n");

    printf("※ ※\n");

    printf("※ ▲4.图书信息删除 ▲ ※\n");

    printf("※ ※\n");

    printf("※ ▲5.图书信息修改 ▲ ※\n");

    printf("※ ※\n");

    printf("※ ▲6.退出系统 ▲ ※\n");

    printf("※ ※\n");

    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");

    printf("请输入选择项(1-6):");

    scanf("%d",&n);

    printf("\n\n\n\n");

    if(n>0&&n<7)

    {

    switch(n)

    {

    case 1:Input();break;

    case 2:Display();break;

    case 3:Find();break;

    case 4:Modify();break;

    case 5:Change();break;

    case 6:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");

    printf("※ ※\n");

    printf("※ 谢谢使用! ※\n");

    printf("※ 再见! ※\n");

    printf("※ ※\n");

    printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");

    exit(0);

    }

    }

    else

    {

    printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");

    printf("※ ※\n");

    printf("※ 输入错误! ※\n");

    printf("※ 请退出! ※\n");

    printf("※ ※\n");

    printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");

    break;

    }

    }

    }

    void Find()/*查找*/

    {

    FILE *fp;

    int i;

    int choose,t;

    char ans[100];

    do

    {

    printf("1.按书名查找\n");

    printf("2.按作者名查找\n");

    printf("返回主菜单(其他数字)\n");

    scanf("%d",&choose);

    if(choose==1)

    {

    printf("输入所查书名:\n");

    scanf("%s",ans);

    t=-1;

    if(choose==1)

    {

    for(i=0;i<MAX;i++) if(strcmp(ans,stu[i].name)==0)

    {

    t=i;

    fp=fopen("student","rb");

    for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)

    printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money);

    }

    }

    if(t==-1) printf("不存在该信息\n");

    }

    else if(choose==2)

    {

    printf("输入所查作者名:\n");

    scanf("%s",ans);

    t=-1;

    if(choose==2)

    {

    for(i=0;i<MAX;i++)

    if(strcmp(ans,stu[i].author)==0)

    { t=i;

    fp=fopen("student","rb");

    for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)

    printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money);

    }

    }

    if(t==-1) printf("不存在该信息\n");

    }

    else return;

    }while(1);

    }

    void Display()/*输出*/

    {

    FILE *fp;

    int i;

    fp=fopen("student","rb");

    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

    printf(" 图书列表\n");

    printf("-----------------------------------------------------------\n");

    printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");

    printf("-----------------------------------------------------------\n");

    for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)

    {

    printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);

    }

    fclose(fp);

    }

    void Input()/*输入*/

    {

    FILE *fp;

    int n;

    fp=fopen("student","wb");

    for(n=0;n<MAX;n++)

    {

    printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);

    scanf("%d",&n);

    if(n==-1)

    {

    fclose(fp);

    return;

    }

    else

    {

    printf("请输入登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");

    scanf("%d%s%s%s%s%s%f",&stu[n].num,stu[n].name,stu[n].author,stu[n].fn,stu[n].place,stu[n].day,&stu[n].money);

    fwrite(&stu[n],sizeof(struct Student),1,fp);

    }

    }

    fclose(fp);

    }

    void Modify()/*删除*/

    {

    FILE *fp;

    int i,flag,n,s,j;

    fp=fopen("student","rb+");

    rewind(fp);

    printf(" 图书列表\n");

    printf("-----------------------------------------------------------\n");

    printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");

    printf("-----------------------------------------------------------\n");

    for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)

    {

    printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);

    printf("\n");

    }

    n=i;

    printf("输入待删除图书号:\n");

    scanf("%d",&s);

    for(i=0,flag=1;flag&&i<n;i++)

    {

    if(s==stu[i].num)

    {

    for(j=i;j<n-1;j++)

    {

    stu[j].num=stu[j+1].num;

    strcpy(stu[j].name,stu[j+1].name);

    strcpy(stu[j].author,stu[j+1].author);

    strcpy(stu[j].fn,stu[j+1].fn);

    strcpy(stu[j].place,stu[j+1].place);

    strcpy(stu[j].day,stu[j+1].day);

    stu[j].money=stu[j+1].money;

    }

    flag=0;

    }

    }

    if(!flag)

    n=n-1;

    else

    printf("没有此号\n");

    fp=fopen("student","wb");

    for(i=0;i<n;i++)

    fwrite(&stu[i],sizeof(struct Student),1,fp);

    fclose(fp);

    fp=fopen("student","r");

    printf(" 图书列表\n");

    printf("-----------------------------------------------------------\n");

    printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");

    printf("-----------------------------------------------------------\n");

    for(i=0;i<n;i++)

    {

    fread(&stu[i],sizeof(struct Student),1,fp);

    printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);

    printf("\n");

    }

    fclose(fp);

    }

    void Change()/*修改*/

    {

    FILE *fp;

    int i,num,n;

    int flag=0;

    printf("请输入要修改的图书号:");

    scanf("%d",&num);

    for(i=0;i<=MAX;i++)

    if(stu[i].num==num)

    {

    printf(" 图书列表\n");

    printf("-----------------------------------------------------------\n");

    printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");

    printf("-----------------------------------------------------------\n");

    printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);

    printf("-----------------------------------------------------------\n\n");

    n=i;

    flag=1;

    break;

    }

    if(flag==0)

    {

    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

    printf(" 输入错误!\n");

    printf(" 请返回!\n");

    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

    return;

    }

    printf("\n\n\n");

    fp=fopen("student","rb+");

    fseek(fp,n*sizeof(struct Student),0);

    printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");

    scanf("%d%s%s%s%s%s%f",&stu[n].num,stu[n].name,stu[n].author,stu[n].fn,stu[n].place,stu[n].day,&stu[n].money);

    fwrite(&stu[i],sizeof(struct Student),1,fp);

    fclose(fp);

    fp=fopen("student","rb");

    printf(" 图书列表\n");

    printf("-----------------------------------------------------------\n");

    printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");

    printf("-----------------------------------------------------------\n");

    for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)

    {

    printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);;

    }

    printf("-----------------------------------------------------------\n\n");

    fclose(fp);

    }

    三、用C语言编写一个简单的图书管理小程序

    源代码如下:

    #include<iostream>

    #include<iomanip>

    #include<string>

    #include<fstream>

    #include<stdio.h>

    using namespace std;

    const   int   maxb=10000;   //最多的图书

    class   book//图书类

    {

    int   tag;   //删除标记1:已删0:未删

    int   number;   //isbn书号

    char   name[20];   //书名

    char author[10]; //主编

    char number2[10];//版次

    char position[20];//出版社

    char time[20];//出版年

    void   addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr)   //增加图书  

    {

    tag=0;

    number=n;

    price=pr;

    strcpy(name,na);

    strcpy(author,au);

    strcpy(number2,n2);

    strcpy(position,da);

    strcpy(time,ti);

    onshelf=1;

    }  

    扩展资料

    1、源程序中,很多符号都是成对匹配出现的,为避免遗漏必须配对使用的符号。

    2、用花括号括起来的部分,但从程序结构清晰,便于阅读、理解、维护的角度出发,建议在书写程序时应遵循以下规则,以养成良好的编程习惯。

    3、一个说明或一条语句占一行,与该结构开始处的左花括号对齐。

    四、C语言图书管理信息系统

    借书的限制:教师180天,借15本;学生120天,借10本

    图书的信息:      书的编号号,书名,作者,书的种类,书的总量以及书的剩余量

    学生/教师信息:   学号/工号(4位数字字符),姓名,借书日期,还书日期(以此判定是否超出有效期)

    (一)、查询:(无条件或有条件指按所有字段查询)

    一、单链表上实现图书信息管理

    利用链表结构实现图书存储

    二 、二叉排序树或平衡树上实现图书信息管理

    利用二叉排序树或平衡树实现图书的存储

    三、B_树的操作(手工题)

    插入、删除操作:

    从空的3阶B_树开始,依次插入20,30,50,52,60,68,70,10,80,90,40,75。画出建树过程,然后分别画出删除50,60,10,75,20的B_树状态。

    1.课程设计的题目内容要求

    2.数据结构的设计思想和任务的总体结构

    链接: https://pan.baidu.com/s/11BBC4ec7x3l62u83lJeGpw

    提取码:1234

    以上就是关于图书管理系统c语言课程设计相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    图书馆信息系统设计方案

    豆瓣图书排行榜(豆瓣图书排行榜2019)

    图书角景观设计方案

    起名大师排行榜(起名大师排行榜最新)

    对公账户收款二维码怎么弄(对公账户收款二维码怎么弄出来)