HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    圖書管理系統(tǒng)c語言課程設(shè)計(jì)

    發(fā)布時(shí)間:2023-04-01 09:37:21     稿源: 創(chuàng)意嶺    閱讀: 1179        當(dāng)前文章關(guān)鍵詞排名出租

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于圖書管理系統(tǒng)c語言課程設(shè)計(jì)的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀企業(yè),服務(wù)客戶遍布全國,相關(guān)業(yè)務(wù)請(qǐng)撥打175-8598-2043,或微信:1454722008

    本文目錄:

    圖書管理系統(tǒng)c語言課程設(shè)計(jì)

    一、圖書管理系統(tǒng)C語言設(shè)計(jì)(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;/*光標(biāo)坐標(biāo),x行,y列*/

    struct menustruct/*菜單用的結(jié)構(gòu)體*/

    {

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

    char str[10][20];/*選項(xiàng)*/

    int n;/*選項(xiàng)數(shù)*/

    }ml[3];/*使用了3個(gè),可根據(jù)需要增刪*/

    typedef struct BookList/*書的結(jié)構(gòu)體*/

    {

    char num[20];/*圖書編號(hào)*/

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

    int price;/*書的價(jià)格*/

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

    int yes;/*判斷書是否存在或者已經(jīng)借出,1存在,0借出*/

    struct BookList *next;

    }Book;

    typedef struct MemberList/*會(huì)員的結(jié)構(gòu)體*/

    {

    char name[20];/*會(huì)員的姓名*/

    char sex[2];/*會(huì)員的性別*/

    int age;/*會(huì)員的年齡*/

    struct MemberList *next;

    }Member;

    char save[4096];/*保存文本區(qū)域空間*/

    /*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);/*菜單選項(xiàng)的控制*/

    void Enter(int m,int n);/*菜單選項(xiàng)的具體功能*/

    void BookAdd();/*添加圖書*/

    void BookConsult();/*圖書查詢*/

    void BookDel();/*刪除圖書資料*/

    void BookBorrow();/*借書*/

    void BookReturn(); /*還書*/

    void MemberAdd(); /*增加會(huì)員*/

    void MemberConsult();/*查詢會(huì)員*/

    void MemberDel(); /*刪除會(huì)員*/

    void MemberBook(); /*查詢會(huì)員借書信息*/

    void Help(); /*幫助*/

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

    void ClrScr();/*自定義清屏函數(shù)*/

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

    /***主函數(shù)****/

    void main(void)

    {

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

    Run();

    /*具體操作過程*/

    }

    /*初始化界面*/

    void Menu()

    {

    system("cls"); /*調(diào)用系統(tǒng)的清屏命令*/

    textbackground(BLUE);/*將背景設(shè)置為藍(lán)色*/

    window(1,1,25,80);

    clrscr();

    textx=3;/*光標(biāo)初始化位置*/

    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); /*設(shè)置灰色*/

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

    cprintf("%c",219);/*用符號(hào)實(shí)現(xiàn)畫主菜單的灰色背景區(qū)*/

    Selectitem(); /*調(diào)用選項(xiàng)函數(shù)*/

    DrawSelectitem(); /*畫選項(xiàng)*/

    gettext(2,3,78,23,c); /*保存當(dāng)前文本區(qū)域*/

    }

    /*定義菜單*/

    void Selectitem()

    {

    strcpy(ml[0].name,"Book");/*下面的具體選項(xiàng)補(bǔ)空格是為了各菜單黑色背景相同*/

    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 ");/*退出系統(tǒng)*/

    ml[0].n=6; /*保存菜單的項(xiàng)數(shù)*/

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

    strcpy(ml[1].str[0],"Register ");/*添加新會(huì)員*/

    strcpy(ml[1].str[1],"Find ");/*查詢會(huì)員資料*/

    strcpy(ml[1].str[2],"Delete ");/*刪除會(huì)員資料*/

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

    ml[1].n=4;

    strcpy(ml[2].name,"Help");/*系統(tǒng)幫助*/

    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); /*設(shè)置背景顏色為淺灰色*/

    gotoxy(3+x*20,y);

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

    {

    if(j==0)

    textcolor(RED);/*第一個(gè)字母顯示紅色*/

    else

    textcolor(BLACK); /*設(shè)置黑色*/

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

    }

    }

    /*顯示選中菜單*/

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

    {

    textbackground(0); /*設(shè)置背景顏色為黑色*/

    textcolor(15); /*設(shè)置文本顏色為白色*/

    gotoxy(3+20*x,y);/*定位坐標(biāo)*/

    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: /*上光標(biāo)鍵的操作控制*/

    {

    if(textx==3)

    textx=23;

    textx--;

    gotoxy(texty,textx);

    }break;

    case DOWN: /*下光標(biāo)鍵的操作控制*/

    {

    if(textx==23)

    textx=3;

    textx++;

    gotoxy(texty,textx);

    }break;

    case LEFT: /*左光標(biāo)鍵的操作控制*/

    {

    if(texty==2)

    texty=79;

    texty--;

    gotoxy(texty,textx);

    }break;

    case Backspace: /*擦除鍵的設(shè)置*/

    {

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

    continue;

    else

    {

    if(texty!=2)

    texty--; /*擦除鍵的細(xì)節(jié)問題,先擦去東西,然后光標(biāo)還要往后退一格*/

    else

    if(texty==2)

    {

    texty=78;

    textx--;

    }

    gotoxy(texty,textx);

    printf(" ");

    gotoxy(texty,textx);

    }

    }break;/*end case 0xe08*/

    case RIGHT: /*右光標(biāo)鍵的操作控制*/

    {

    if(texty==79)

    texty=2;

    texty++;

    gotoxy(texty,textx);

    }break;

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

    {

    if(texty==79)

    continue;

    else

    {

    gotoxy(texty,textx); /*空格的細(xì)節(jié)操作*/

    printf(" ");

    texty++;

    gotoxy(texty,textx);

    }

    }break;

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

    {

    if(textx==23)

    continue;

    textx++;

    texty=2;

    gotoxy(texty,textx);

    }break;

    default : /*非控制鍵的結(jié)果*/

    {

    if(texty==79&&textx==23)/*到達(dá)最后就不再輸出*/

    continue;

    else

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

    {

    textx++;

    texty=2;

    }

    gotoxy(texty,textx);/*輸出結(jié)果*/

    printf("%c",key);

    if(texty==79) /*如果texty==79就不執(zhí)行*/

    continue;

    else /*如果沒到行尾就繼續(xù)執(zhí)行,使光標(biāo)向前移動(dòng)一位*/

    texty++;

    }

    }

    }/*大循環(huán)的大括號(hào)*/

    }

    /*畫邊框函數(shù)*/

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

    {

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

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

    for(i=l;i<=r;i++) /*輸出背景區(qū)域*/

    {

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

    {

    gotoxy(i,j);

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

    }

    }

    textcolor(tcolor);/*邊框顏色*/

    for(i=u+1;i<d;i++) /*在背景區(qū)域內(nè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);*//*保存邊框內(nèi)區(qū)域*/

    }

    /*顯示具體下拉選擇項(xiàng)目*/

    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++)/*輸出所選菜單各選項(xiàng)*/

    {

    if(i==3)

    BlackText(n,i,ml[n].str[i-3]);/*默認(rèn)選中第一項(xiàng)*/

    else

    RedText(n,i,ml[n].str[i-3]);/*其余各項(xiàng)首字符紅色顯示*/

    }

    gotoxy(79,1);

    MoveMl(n,3);/*菜單選項(xiàng)的控制*/

    }

    /*菜單選項(xiàng)的控制,n決定水平項(xiàng),x決定下拉的選項(xiàng)*/

    void MoveMl(int n,int x)

    {

    int flag=1;

    while(flag)

    {

    gotoxy(79,1);

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

    gotoxy(79,1);

    switch(key)

    {

    case ESC:/*退出循環(huán)*/

    puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子*/

    flag=0;

    break;

    case LEFT:/*移到左邊的選項(xiàng)*/

    puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子*/

    if(n==0)/*往左移動(dòng)越界的話移到最后一個(gè)選項(xiàng)*/

    DrawMl(2);

    else

    DrawMl(n-1);

    flag=0;

    break;

    case RIGHT:/*移動(dòng)右邊的選項(xiàng)*/

    puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子*/

    if(n==2)/*往右移動(dòng)越界的話移到第一個(gè)選項(xiàng)*/

    DrawMl(0);

    else

    DrawMl(n+1);

    flag=0;

    break;

    case UP:/*具體選項(xiàng)往上移動(dòng)*/

    RedText(n,x,ml[n].str[x-3]);/*輸出紅色字體*/

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

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

    else

    x--;/*移動(dòng)到新的要顯示的內(nèi)容*/

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

    flag=1;

    break;

    case DOWN:/*具體選項(xiàng)往下移動(dòng)*/

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

    if(x==(3+ml[n].n-1))/*移動(dòng)到最底下再按下鍵就移到最上面*/

    x=3;

    else

    x++;/*移動(dòng)到新的要顯示的內(nèi)容*/

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

    flag=1;

    break;

    case ENTER:

    puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子*/

    Enter(n,x-3);/*菜單選項(xiàng)的具體功能*/

    flag=0;

    break;

    }

    gotoxy(79,1);

    }

    }

    /*菜單選項(xiàng)的具體功能*/

    void Enter(int m,int n)

    {

    switch(m)

    {

    case 0:switch(n) /*選擇了圖書菜單選項(xiàng)*/

    {

    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;/*退出系統(tǒng)*/

    case 1: switch(n) /*選擇了會(huì)員菜單選項(xiàng)*/

    {

    case 0: MemberAdd();break;/*添加會(huì)員*/

    case 1: MemberConsult();break;/*會(huì)員查詢*/

    case 2:MemberDel();break;/*刪除一個(gè)會(huì)員資料*/

    case 3:MemberBook();/*查詢某個(gè)會(huì)員所借圖書情況*/

    }break;

    case 2:switch(n) /*選擇了幫助菜單選項(xiàng)*/

    {

    case 0:Help();break;

    case 1:Ver();

    }

    }/*結(jié)束外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: ");/*逐個(gè)輸入新圖書的資料*/

    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); /*關(guān)閉文件*/

    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; /*查找數(shù)據(jù)標(biāo)志*/

    }

    }

    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));/*將文件內(nèi)容放入鏈表*/

    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;/*最后一個(gè)結(jié)點(diǎn)的后繼為空*/

    fclose(fp);

    ClrScr();

    printf("Input the book name: ");

    gets(bookname); /*輸入圖書名*/

    p=head;

    while(p!=NULL)/*按名字查找要?jiǎng)h除的圖書*/

    {

    if(strcmp(p->name,bookname)==0)/*找到要?jiǎng)h除的圖書*/

    {

    if(p==head) /*如果是第一個(gè)結(jié)點(diǎn)*/

    head=head->next;

    else

    q->next=p->next;/*不是第一個(gè)結(jié)點(diǎn)*/

    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); /*輸入會(huì)員名*/

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

    {

    gotoxy(2,3);

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

    return;

    }

    else

    while(!feof(fp))/*查詢會(huì)員資料*/

    {

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

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

    {

    mflag=1; /*是會(huì)員標(biāo)志*/

    break;

    }

    }

    fclose(fp);

    if(mflag==0)

    {

    gotoxy(2,4);

    printf("You are not a member now,pleas register first!");/*不是會(huì)員不能借書*/

    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)/*圖書已經(jīng)借出的判斷*/

    {

    gotoxy(2,3);

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

    break;

    }

    else

    {

    consultbook.yes=0; /*作借出標(biāo)志*/

    strcpy(consultbook.person,membername);/*登記借書會(huì)員*/

    fseek(fp,-1L*sizeof(Book),1);/*從當(dāng)前位置前移一條記錄指針*/

    fwrite(&consultbook,sizeof(Book),1,fp);/*寫記錄*/

    gotoxy(2,3);

    printf("Borrowed success!\n");

    flag=1;/*借出書標(biāo)志*/

    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)/*圖書已經(jīng)借出的判斷*/

    {

    consultbook.yes=1;/*作圖書未借書標(biāo)志,表示已還書*/

    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);/*剛開始已經(jīng)用gettext把藍(lán)色的一塊地方保存下來,現(xiàn)在再還原*/

    gotoxy(2,3);

    }

    /*會(huì)員注冊(cè)*/

    void MemberAdd()

    {

    FILE *fp;

    Member consultmember;

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

    if(fp==NULL)/*如果沒會(huì)員就新建*/

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

    else/*如果有會(huì)員就添加*/

    {

    fclose(fp);

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

    }

    ClrScr();

    gotoxy(2,3);

    printf("Please intput new member's name: ");/*逐個(gè)輸入會(huì)員的資料*/

    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();

    }

    /*查詢會(huì)員*/

    void MemberConsult()

    {

    FILE *fp;

    Member consultmember;

    char membername[20];

    int flag=0;

    ClrScr();

    gotoxy(2,3);

    printf("Please input the member's name: ");/*輸入要查詢的會(huì)員名*/

    gets(membername);

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

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

    {

    ClrScr();

    gotoxy(2,3);

    printf("Error!\n");

    fclose(fp);

    return;

    }

    while(!feof(fp))/*查詢會(huì)員資料*/

    {

    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);

    }

    /*刪除會(huì)員資料*/

    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));/*將文件內(nèi)容放入鏈表*/

    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: ");/*輸入會(huì)員名*/

    gets(membername);

    p=head;

    while(p!=NULL)/*按名字查找要?jiǎng)h除的書*/

    {

    if(strcmp(p->name,membername)==0)/*查找會(huì)員*/

    {

    if(p==head)

    head=head->next;/*如果是第一條記錄*/

    else

    q->next=p->next;/*不是第一條記錄*/

    break;

    }

    q=p; /*沒找到,則指針后移繼續(xù)找*/

    p=p->next;

    }

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

    while(head!=NULL)

    {

    fwrite(head,sizeof(Member),1,fp);/*塊寫*/

    head=head->next;

    }

    fclose(fp);

    ClrScr();

    }

    字?jǐn)?shù)超了。。。。留個(gè)郵箱吧

    二、c語言 圖書信息管理系統(tǒng)設(shè)計(jì)

    通過測(cè)試!

    #include<stdio.h>

    #include<string.h>

    #include<stdlib.h>

    #include<conio.h>

    #define MAX 100

    struct Student

    {

    int num;/*登錄號(hào)*/

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

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

    char fn[100];/*分類號(hào)*/

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

    char day[100];/*出版時(shí)間*/

    float money;/*價(jià)格*/

    }stu[MAX];

    main()/*主函數(shù)*/

    {

    void Input();/*輸入*/

    void Display();/*輸出*/

    void Find();/*查找*/

    void Modify();/*刪除*/

    void Change();/*修改*/

    int n;

    for(;;)

    {

    printf("\n");

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

    printf("※ ※\n");

    printf("※ 歡迎來到圖書信息管理系統(tǒng) ※\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.退出系統(tǒng) ▲ ※\n");

    printf("※ ※\n");

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

    printf("請(qǐng)輸入選擇項(xiàng)(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("※ 輸入錯(cuò)誤! ※\n");

    printf("※ 請(qǐng)退出! ※\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("返回主菜單(其他數(shù)字)\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("登錄號(hào) 書名 作者名 分類號(hào) 出版單位 出版時(shí)間 價(jià)格\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 輸入序號(hào)n(當(dāng)輸入n=-1時(shí),返回),n=",n++);

    scanf("%d",&n);

    if(n==-1)

    {

    fclose(fp);

    return;

    }

    else

    {

    printf("請(qǐng)輸入登錄號(hào) 書名 作者名 分類號(hào) 出版單位 出版時(shí)間 價(jià)格\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("登錄號(hào) 書名 作者名 分類號(hào) 出版單位 出版時(shí)間 價(jià)格\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("輸入待刪除圖書號(hào):\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("沒有此號(hào)\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("登錄號(hào) 書名 作者名 分類號(hào) 出版單位 出版時(shí)間 價(jià)格\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("請(qǐng)輸入要修改的圖書號(hào):");

    scanf("%d",&num);

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

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

    {

    printf(" 圖書列表\n");

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

    printf("登錄號(hào) 書名 作者名 分類號(hào) 出版單位 出版時(shí)間 價(jià)格\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(" 輸入錯(cuò)誤!\n");

    printf(" 請(qǐng)返回!\n");

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

    return;

    }

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

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

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

    printf("登錄號(hào) 書名 作者名 分類號(hào) 出版單位 出版時(shí)間 價(jià)格\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("登錄號(hào) 書名 作者名 分類號(hào) 出版單位 出版時(shí)間 價(jià)格\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語言編寫一個(gè)簡單的圖書管理小程序

    源代碼如下:

    #include<iostream>

    #include<iomanip>

    #include<string>

    #include<fstream>

    #include<stdio.h>

    using namespace std;

    const   int   maxb=10000;   //最多的圖書

    class   book//圖書類

    {

    int   tag;   //刪除標(biāo)記1:已刪0:未刪

    int   number;   //isbn書號(hào)

    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;

    }  

    擴(kuò)展資料

    1、源程序中,很多符號(hào)都是成對(duì)匹配出現(xiàn)的,為避免遺漏必須配對(duì)使用的符號(hào)。

    2、用花括號(hào)括起來的部分,但從程序結(jié)構(gòu)清晰,便于閱讀、理解、維護(hù)的角度出發(fā),建議在書寫程序時(shí)應(yīng)遵循以下規(guī)則,以養(yǎng)成良好的編程習(xí)慣。

    3、一個(gè)說明或一條語句占一行,與該結(jié)構(gòu)開始處的左花括號(hào)對(duì)齊。

    四、C語言圖書管理信息系統(tǒng)

    借書的限制:教師180天,借15本;學(xué)生120天,借10本

    圖書的信息:      書的編號(hào)號(hào),書名,作者,書的種類,書的總量以及書的剩余量

    學(xué)生/教師信息:   學(xué)號(hào)/工號(hào)(4位數(shù)字字符),姓名,借書日期,還書日期(以此判定是否超出有效期)

    (一)、查詢:(無條件或有條件指按所有字段查詢)

    一、單鏈表上實(shí)現(xiàn)圖書信息管理

    利用鏈表結(jié)構(gòu)實(shí)現(xiàn)圖書存儲(chǔ)

    二 、二叉排序樹或平衡樹上實(shí)現(xiàn)圖書信息管理

    利用二叉排序樹或平衡樹實(shí)現(xiàn)圖書的存儲(chǔ)

    三、B_樹的操作(手工題)

    插入、刪除操作:

    從空的3階B_樹開始,依次插入20,30,50,52,60,68,70,10,80,90,40,75。畫出建樹過程,然后分別畫出刪除50,60,10,75,20的B_樹狀態(tài)。

    1.課程設(shè)計(jì)的題目內(nèi)容要求

    2.數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)思想和任務(wù)的總體結(jié)構(gòu)

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

    提取碼:1234

    以上就是關(guān)于圖書管理系統(tǒng)c語言課程設(shè)計(jì)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    圖書館信息系統(tǒng)設(shè)計(jì)方案

    豆瓣圖書排行榜(豆瓣圖書排行榜2019)

    圖書角景觀設(shè)計(jì)方案

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

    對(duì)公賬戶收款二維碼怎么弄(對(duì)公賬戶收款二維碼怎么弄出來)