数据结构9

详细设计

该程序设计用 displayMenu()函数显示菜单, addBook()函数添加书籍,showBooks()函数显示所有书籍信息, queryBook()函数查找图书, alterBook()函数修改图书信息,deleteBook()函数删除图书信息,void borrowBooks()函数借阅图书, revertBook()函数归还图书,viewAllBook()函数显示所有借阅记录。

 

4.1  重要程序段1

void displayMenu()

{

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

    printf("*\t  欢迎使用图书借阅系统  \t\t*\n");

    printf("*\t\t请选择功能\t\t\t*\n");

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

    printf("*\t1.录入图书信息\t2.显示所有图书\t\t*\n");

    printf("*\t3.查找图书信息\t4.修改图书信息\t\t*\n");

    printf("*\t5.删除图书信息\t6.借阅图书\t\t*\n");

    printf("*\t7.归还图书\t8.查看借阅信息\t\t*\n");

    printf("*\t0.退出系统\t\t\t\t*\n");

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

}

4.2 重要程序段2

void addBook()

{

    FILE *pf = fopen("Book.bin", "rb+");

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

Book *node = head;

    Book *pb;

    Book book;

    int success=0;

    int fail = 0;

    int count = 0;

    char ch;

 

    if (pf == NULL) {

        printf("打开book.bin文件失败啦!!\n");

        exit(1);

    }

    printf("录入图书信息(y/n):");

    getchar();

    scanf("%c",&ch);

    while(ch == 'y' || ch == 'Y')

    {

        getchar();

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

        pb->state = 1;

        printf("图书编号:");

        scanf("%s",pb->bno);

        printf("图书名称:");

        scanf("%s",pb->name);

        printf("图书作者:");

        scanf("%s",pb->author);

        printf("出版日期(yyyy-mm-dd):");

        scanf("%s",pb->pubDate);

        printf("图书价格:");

        scanf("%f",&pb->price);

        printf("图书数量:");

        scanf("%d",&pb->quantity);

        pb->next = NULL;

        node->next = pb;

        node = node->next;

        printf("是否继续录入(y/n[a-z]):");

        getchar();

        scanf("%c",&ch);

    }

    fseek(pf, 0, SEEK_END);

    //遍历链表

    for (head=head->next; head; head=head->next) {

        count = 0;

        fseek(pf, 0, SEEK_SET);

        while(fread(&book, sizeof(Book),1, pf) == 1){

            if (strcmp(book.bno, head->bno) == 0 && book.state == 1) {

                count = 1;

                fail++;

                break;

            }

        }

        if(count != 1){

            fseek(pf, 0, SEEK_END);

            fwrite(head, sizeof(Book), 1, pf);

            success++;

        }

    }

    printf("一共录入:%d本书  成功录入:%d 本  失败(已存在):%d 本\n",success+fail,success,fail);

fclose(pf);

}

posted @ 2022-07-14 22:50  清梦韶华  阅读(45)  评论(0编辑  收藏  举报