制作一个简易图书管理系统(需要读取记事本的数据) 用c语言 把功能注释好

img

采用c语言 需要使用记事本读取数据,可只做出查询,排序,添加功能,每行进行相应的注释,感谢

给你个参考吧,类似的,如有问题可以问。


#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>

#define EMPTY     -1        // 初始标志
#define DEL_EMPTY  0        // 删除标志
#define _MAX       200      //库存最大数量

typedef struct BookInfo {
    int _count;
    int _price;
    char _id[10];
    char _author[20];
    char _name[50];
    char _introduction[100];
}BookData;

BookData books_house[_MAX] = { -1, 0,"","", "", "", };

// 书仓信息
void books_house_info()
{
    printf("--------------------书籍信息--------------------\n");
    printf("ID\t书名\t作者\t价格\t数量\t简介\n");
    for (int i = 0; i < _MAX; ++i) {
        if (books_house[i]._count == EMPTY)
            break;
        else if (books_house[i]._count == DEL_EMPTY)
            continue;
        printf("%s\t", books_house[i]._id);
        printf("%s\t", books_house[i]._name);
        printf("%s\t", books_house[i]._author);
        printf("%d\t", books_house[i]._price);
        printf("%d\t", books_house[i]._count);
        printf("%s\t", books_house[i]._introduction);
        printf("\n");
    }
    printf("------------------------------------------------\n");
}

// 增添书
bool books_house_add(BookData info)
{
    for (int i = 0; i < _MAX; ++i) {
        if (books_house[i]._count == EMPTY ||
            books_house[i]._count == DEL_EMPTY) {
            for (int j = 0; j < _MAX; ++j) {
                if (strcmp(books_house[j]._id, info._id) == 0 ||
                    strcmp(books_house[j]._name, info._name) == 0) {
                    return false;
                }
            }
            books_house[i] = info; break;
        }
    }
    books_house_info();
    return true;
}

// 删除书
void books_house_del(BookData info)
{
    for (int i = 0; i < _MAX; ++i) {
        if (strcmp(books_house[i]._name, info._name) == 0) {
            books_house[i]._count = DEL_EMPTY;
            break;
        }
    }
    books_house_info();
}

// 价格排序(升序)
void books_house_sort()
{
    for (int i = 0; i < _MAX - 1; ++i) {
        if (books_house[i]._count == EMPTY) break;
        else if (books_house[i]._count == DEL_EMPTY) continue;
        for (int j = 0; j < _MAX - i - 1; ++j) {
            if (books_house[j]._price > books_house[j + 1]._price) {
                BookData tmp = books_house[j];
                books_house[j] = books_house[j + 1];
                books_house[j + 1] = tmp;
            }
        }
    }

    books_house_info();
}

// 修改书籍信息
void books_house_modify(BookData info)
{
    for (int i = 0; i < _MAX; ++i) {
        if (strcmp(books_house[i]._name, info._name) == 0) {
            books_house[i] = info; break;
        }
    }
    books_house_info();
}

// 根据书ID查找
bool books_house_search(BookData info)
{
    printf("\n--------------------查询结果--------------------\n");
    printf("ID\t书名\t作者\t价格\t数量\t简介\n");
    for (int i = 0; i < _MAX; ++i) {
        if (strcmp(books_house[i]._id, info._id) == 0) {
            printf("%s\t", books_house[i]._id);
            printf("%s\t", books_house[i]._name);
            printf("%s\t", books_house[i]._author);
            printf("%d\t", books_house[i]._price);
            printf("%d\t", books_house[i]._count);
            printf("%s\t", books_house[i]._introduction);
            printf("\n");
            return true;
            break;
        }
    }
    return false;
}

// 书籍信息
void set_book_info(BookData *book)
{
    printf("输入ID:");
    scanf_s("%s", book->_id, sizeof(book->_id));

    printf("输入书名:");
    scanf_s("%s", book->_name, sizeof(book->_name));

    printf("输入作者:");
    scanf_s("%s", book->_author, sizeof(book->_author));

    printf("输入简介:");
    scanf_s("%s", book->_introduction, sizeof(book->_introduction));

    printf("输入数量:");
    scanf_s("%d", &book->_count);

    printf("输入价格:");
    scanf_s("%d", &book->_price);
}

void books_house_manage_menu()
{
    system("cls");
    printf("                图书管理系统    \n\n");
    printf("            |    1.查看库存    |\n");
    printf("                2.录入书籍     \n");
    printf("            |    3.删除书籍    |\n");
    printf("                4.查询书籍     \n");
    printf("            |    5.价格排序    |\n");
    printf("                6.修改信息     \n");
    printf("            |    7.退出        |\n");
    printf("\n-----\n");
    printf("请问你想操作什么: ");
}

int main(int argc, char **argv)
{
    do {
        int select;
        books_house_manage_menu();
        scanf_s("%d", &select);
        switch (select)
        {
        case 1: {
            books_house_info();
            break;
        }
        case 2: {
            BookData book;
            set_book_info(&book);
            books_house_add(book) ? NULL : printf("**该书籍已存在!请勿重复输入!\n");
            break;
        }
        case 3: {
            BookData book;
            printf("输入需要删除的书名:");
            scanf_s("%s", book._name, sizeof(book._name));
            books_house_del(book);
            break;
        }
        case 4: {
            BookData book;
            printf("输入需要查询的ID号:");
            scanf_s("%s", book._id, sizeof(book._id));
            books_house_search(book);
            break;
        }
        case 5: {
            books_house_sort();
            break;
        }
        case 6: {
            BookData book;
            printf("输入需要修改书籍的ID:");
            scanf_s("%s", book._id, sizeof(book._id));
            if (books_house_search(book)) {
                printf("请输入以下提示的修改信息\n");
                set_book_info(&book);
                books_house_modify(book);
            }
            break;
        }
        case 7: {
            return 0;
        }
        default:
            break;
        }
        printf("\n");
        system("pause");
    } while (true);

    return 0;
}



#include<stdio.h>
#include<stdlib.h>
#include<string.h>    
FILE *fp,*fpj,*fps;
int i,xuan;
typedef struct book{
    char name[10];
    char num[10];
    char writer[10];
    int date;
    char press[10];
    float price;
    char leibie[10];
    int kucun;
    int jiechu;
}bo;
typedef struct student{
    char name[10];
    char num[10];
    int jie;
}st;
typedef struct jieyue{
    char snum[10];
    char bnum[10];
}ji;
void menu()//菜单
{
    printf("\n\n");
    for(i=0;i<80;i++)
        printf("#");
    printf("\n\n");    
    printf("\t\t1-----图书录入\t\t\t");
    printf("2-----图书浏览\n\n");
    printf("\t\t3-----图书查询\t\t\t");
    printf("4-----修改删除图书\n\n");
    printf("\t\t5-----借阅图书\t\t\t");
    printf("6-----归还图书\n\n");
    printf("\t\t7-----借阅查询\t\t\t\n");
    printf("\n\t\t\t\t输入其他任意键退出\n");
    printf("\n\n");
    for(i=0;i<80;i++)
        printf("#");
    printf("\n\n");
}
void end()//录入图书
{
    bo boo,booq;
    printf("请输入图书名(最多十个字符):");
    scanf("%s",boo.name);
    do{
        i=1;
        printf("请输入图书编号(最多十个字符):");
        scanf("%s",boo.num);
        fread(&booq,sizeof(bo),1,fp);
        while(!feof(fp)){
            if(strcmp(booq.num,boo.num)==0){
                printf("\n该编号已存在请重新输入\n\n");
                i=0;
                break;
            }
            fread(&booq,sizeof(bo),1,fp);
        }
        rewind(fp);
    }while(i==0);
    printf("请输入图书作者(最多十个字符):");
    scanf("%s",boo.writer);
    printf("请输入图书出版日期(例如2001年5月3日出版则输入20010503):");
    scanf("%d",&boo.date);
    printf("请输入图书价格:");
    scanf("%f",&boo.price);
    printf("请输入图书出版社(最多十个字符):");
    scanf("%s",boo.press);
    printf("请输入图书类别(最多十个字符):");
    scanf("%s",boo.leibie);
    printf("请输入图书入库数:");
    scanf("%d",&boo.kucun);
    boo.jiechu=0;
    getchar();
    fseek(fp,0,2);
    fwrite(&boo,sizeof(bo),1,fp);
    printf("\n录入成功!回到主菜单");
    system("pause");
}
void print()//浏览图书
{
    bo boo;
    printf("书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
    fread(&boo,sizeof(bo),1,fp);
    while(feof(fp)==0){
        printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
        fread(&boo,sizeof(bo),1,fp);
        }
    printf("\n浏览图书完毕!回到主菜单");
    system("pause");
}
int dui(char *p,char *p1)//对比两个字符串的相关度(用于精确搜索)
{
    int bao=0,fan=1;
    for(i=0;i<(int)strlen(p1);i++){
        if(p[0]==p1[i]){
            bao=i;
            break;
        }
    }
    if((int)strlen(p)>(int)strlen(p1)-bao+1)
        return 0;
    else
        for(i=0;i<(int)strlen(p);i++){
            if(p[i]!=p1[bao+i])
                fan=0;
        }
        return fan;
}
void find()//查询图书
{
    char hao[10];
    int fan=1;
    int bian=1;
    bo boo;
    printf("请选择查询类型:\n\n\t\t1-按图书编号模糊查询     2-按图书名关键字查询\n");
    printf("                \n\t\t3-按图书编号精确查询     4-按图书名精确查询\n\n代码:");
    scanf("%d",&xuan);
    if(xuan==1){
        printf("请输入编号(最多十个字符):");
        scanf("%s",hao);
        printf("序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
        fread(&boo,sizeof(bo),1,fp);
        while(!feof(fp)){
            fan=dui(hao,boo.num);
            if(fan==1){
                printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
                bian++;}
            fread(&boo,sizeof(bo),1,fp);
        }
    }
    else if(xuan==2){
        printf("请输入图书名关键字(最多十个字符):");
        scanf("%s",hao);
        printf("序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
        fread(&boo,sizeof(bo),1,fp);
        while(!feof(fp)){
            fan=dui(hao,boo.name);
            if(fan==1)
                printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
            fread(&boo,sizeof(bo),1,fp);
        }
    }
    else if(xuan==4){
        printf("请输入图书名(最多十个字符):");
        scanf("%s",hao);
        printf("序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
        while(!feof(fp)){
            if(strcmp(hao,boo.name)==0)
                printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
            fread(&boo,sizeof(bo),1,fp);
        }
 
    }
    else if(xuan==3){
        printf("请输入图书编号(最多十个字符):");
        scanf("%s",hao);
        printf("序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
        while(!feof(fp)){
            if(strcmp(hao,boo.num)==0)
                printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
            fread(&boo,sizeof(bo),1,fp);
        }
 
    }
    else{
        printf("输入错误,正在退出!");
        system("pause");
        return;
    }
    printf("\n查询图书完毕! ");
    system("pause");
}
void del()//修改删除图书
{
    FILE *p;
    ji jie;
    int j=0;
    char num[10];
    bo boo,booq;
    int xu;
    char oper;
    char cha[10];
    printf("\n删除修改图书只能通过图书编号来完成!\n是否调用图书查询来查询你要操作的图书编号(Y/N)\n");
    getchar();
    scanf("%c",&oper);
    if(oper=='Y'||oper=='y'){
        find();
        rewind(fp);}
    printf("\n请输入你要操作的图书的编号(如果输入错误的编号,将不做任何操作):");
    scanf("%s",cha);
    fread(&jie,sizeof(ji),1,fpj);
    while(!feof(fpj)){
        if(strcmp(jie.bnum,cha)==0){
            printf("\n这本书已有人借阅,不能操作!\n正在退出 ");
            system("pause");
            return;
        }
        fread(&jie,sizeof(ji),1,fpj);
    }
    printf("\n\n1-删除图书   2-修改图书\n\n");
    printf("请选择操作类型:");
    scanf("%d",&xuan);
    fread(&boo,sizeof(bo),1,fp);
    p=fopen("c:\\books1.txt","wb+");
    while(!feof(fp)){
        j++;
        if(strcmp(boo.num,cha)==0){    
            if(xuan==2){            
                printf("\n\n1-书名    2-编号    3-作者    4-价格    5-出版社   6-类别    7-库存\n\n");
                printf("请选择要修改的项目:");
                scanf("%d",&xu);
                if(xu==1){
                    printf("你要把%s改为:",boo.name);
                    scanf("%s",boo.name);}
                else if(xu==2){
                    do{
                        i=1;
                        printf("你要把%s改为:",boo.num);
                        scanf("%s",num);
                        rewind(fp);
                        fread(&booq,sizeof(bo),1,fp);
                        while(!feof(fp)){
                            if(strcmp(booq.num,num)==0){
                                printf("\n该编号已存在请重新输入\n\n");
                                i=0;
                                break;
                            }
                            fread(&booq,sizeof(bo),1,fp);
                        }
                    }while(i==0);
                        rewind(fp);
                    for(i=0;i<j;i++){
                        fread(&boo,sizeof(bo),1,fp);
                        strcpy(boo.num,num);
                    }
                }
                else if(xu==3){
                    printf("你要把%s改为:",boo.writer);
                    scanf("%s",boo.writer);}
                else if(xu==4){
                    printf("你要把%.2f改为:",boo.price);
                    scanf("%f",&boo.price);}
                else if(xu==5){
                    printf("你要把%s改为:",boo.press);
                    scanf("%s",boo.press);}
                else if(xu==6){
                    printf("你要把%s改为:",boo.leibie);
                    scanf("%s",boo.leibie);}
                else if(xu==7){
                    printf("你要把%d改为:",&boo.kucun);
                    scanf("%d",&boo.kucun);}
                fwrite(&boo,sizeof(bo),1,p);
            }
        }
        else
            fwrite(&boo,sizeof(bo),1,p);
        fread(&boo,sizeof(bo),1,fp);
    }
    fclose(p);
    p=fopen("c:\\books1.txt","rb+");
    fclose(fp);
    fp=fopen("c:\\book.txt","wb+");
    fread(&boo,sizeof(bo),1,p);
    while(!feof(p)){
        fwrite(&boo,sizeof(bo),1,fp);
        fread(&boo,sizeof(bo),1,p);    
    }
    fclose(fp);
    printf("操作成功   回到主菜单");
    system("pause");
}
void lend()//借阅图书
{
    bo boo;
    FILE *p;
    st stu;
    ji jie;
    int j=0;
    char oper,num[10],xnum[10];
    printf("\n借阅图书只能通过图书编号完成!\n是否调用图书查询来查询你要操作的图书编号(Y/N)\n");
    getchar();
    scanf("%c",&oper);
    if(oper=='Y'||oper=='y')
        find();
    printf("\n请输入你要借阅的图书的编号:");
    scanf("%s",num);
    fread(&boo,sizeof(bo),1,fp);
    while(!feof(fp)){
        if(strcmp(num,boo.num)==0){
            j=1;
            break;        
        }
        fread(&boo,sizeof(bo),1,fp);
    }
    if(j==0){
        printf("\n书库没有该图书 正在退出\n");
        system("pause");
        return;
    }
    printf("\n你需要借阅的图书是:\n");
    printf("书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
    printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
    if(boo.kucun==boo.jiechu){
        printf("\n该册图书已全部借出!正在退出\n");
        system("pause");
        return;
    }
    printf("\n请输入你的学号:");
    scanf("%s",xnum);
    j=0;
    fread(&jie,sizeof(ji),1,fpj);
    while(!feof(fpj)){
        if((strcmp(jie.bnum,num)==0)&&(strcmp(jie.snum,xnum)==0)){
            j=1;
            break;        
        }
        fread(&jie,sizeof(ji),1,fpj);
    }
    if(j==1){
        printf("\n你已经借阅过该书  正在退出\n");
        system("pause");
        return;
    }
    fread(&stu,sizeof(st),1,fps);
    j=0;
    while(!feof(fps)){
        if(strcmp(xnum,stu.num)==0){
            j=1;
            break;
        }
        fread(&stu,sizeof(st),1,fps);
    }
    if(j==0){
        printf("\n你是第一次借阅图书,为了方便管理请输入你的姓名:");
        scanf("%s",stu.name);
        strcpy(stu.num,xnum);
        stu.jie=1;
        fseek(fps,0,2);
        fwrite(&stu,sizeof(st),1,fps);
    }
    else{
        if(stu.jie==5){//这里可以控制每个学生最多借几本书
            printf("\n你已经借了5本书,不能再借\n");
            system("pause");
            return;}
        p=fopen("c:\\jie.txt","wb+");
        rewind(fps);
        fread(&stu,sizeof(st),1,fps);
        while(!feof(fps)){
            if(strcmp(xnum,stu.num)==0)
                stu.jie++;
        fwrite(&stu,sizeof(st),1,p);
        fread(&stu,sizeof(st),1,fps);
        }
        fclose(p);
        fclose(fps);    
        p=fopen("c:\\jie.txt","rb+");
        fps=fopen("c:\\student.txt","wb+");
        fread(&stu,sizeof(st),1,p);
        while(!feof(p)){
            fwrite(&stu,sizeof(st),1,fps);
            fread(&stu,sizeof(st),1,p);    
        }
    }
    strcpy(jie.bnum,num);
    strcpy(jie.snum,xnum);
    fseek(fpj,0,2);
    fwrite(&jie,sizeof(ji),1,fpj);
    rewind(fp);
    p=fopen("c:\\jie.txt","wb+");
    fread(&boo,sizeof(bo),1,fp);
    while(!feof(fp)){
        if(strcmp(num,boo.num)==0)
            boo.jiechu++;
        fwrite(&boo,sizeof(bo),1,p);
        fread(&boo,sizeof(bo),1,fp);
    }
    fclose(p);
    p=fopen("c:\\jie.txt","rb+");
    fclose(fp);
    fp=fopen("c:\\book.txt","wb+");
    fread(&boo,sizeof(bo),1,p);
    while(!feof(p)){
        fwrite(&boo,sizeof(bo),1,fp);
        fread(&boo,sizeof(bo),1,p);    
    }
    printf("\n借阅成功!回到主菜单");
    system("pause");
}
 
void huan(){//归还图书
    FILE *p;
    bo boo;
    ji jie;
    st stu;
    int j=0;
    char snum[10],bnum[10];
    i=0;
    printf("\n请输入你的学号:");
    scanf("%s",snum);
    printf("\n你借阅了以下图书\n");
    fread(&jie,sizeof(ji),1,fpj);
    printf("书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
    while(!feof(fpj)){
        if(strcmp(jie.snum,snum)==0){
            fread(&boo,sizeof(bo),1,fp);
            while(!feof(fp)){
                if(strcmp(jie.bnum,boo.num)==0){
                    printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
                    j=1;
                }
                fread(&boo,sizeof(bo),1,fp);
            }
        }
        fread(&jie,sizeof(ji),1,fpj);
    }
    if(j==0){
        printf("\n你没有借阅任何图书!\n\n正在退出");
        system("pause");
        return;
    }
    rewind(fp);
    rewind(fpj);
    printf("\n请输入你归还的图书的编号:");
    scanf("%s",bnum);
    fread(&jie,sizeof(jie),1,fpj);//改变jieyue.txt里的数据
    p=fopen("c:\\jie.txt","wb+");
    while(!feof(fpj)){
        if((strcmp(jie.bnum,bnum)==0)&&(strcmp(jie.snum,snum)==0))
            i=1;
        else 
            fwrite(&jie,sizeof(jie),1,p);
        fread(&jie,sizeof(jie),1,fpj);
    }
    if(i==0){
        printf("\n你没有借过该图书\n正在退出");
        system("pause");
        return;
    }
    fclose(p);
    fclose(fpj);    
    p=fopen("c:\\jie.txt","rb+");
    fpj=fopen("c:\\jieyue.txt","wb+");
    fread(&jie,sizeof(ji),1,p);
    while(!feof(p)){
        fwrite(&jie,sizeof(ji),1,fpj);
        fread(&jie,sizeof(ji),1,p);    
    }
    fclose(p);//改变book.txt里的数据
    p=fopen("c:\\jie.txt","wb+");
    fread(&boo,sizeof(bo),1,fp);
    while(!feof(fp)){
        if(strcmp(bnum,boo.num)==0)
            boo.jiechu--;
        fwrite(&boo,sizeof(bo),1,p);
        fread(&boo,sizeof(bo),1,fp);
    }
    fclose(p);
    p=fopen("c:\\jie.txt","rb+");
    fclose(fp);
    fp=fopen("c:\\book.txt","wb+");
    fread(&boo,sizeof(bo),1,p);
    while(!feof(p)){
        fwrite(&boo,sizeof(bo),1,fp);
        fread(&boo,sizeof(bo),1,p);    
    }
    fclose(p);//改变student.txt里的数据
    p=fopen("c:\\jie.txt","wb+");
    rewind(fps);
    fread(&stu,sizeof(st),1,fps);
    while(!feof(fps)){
        if(strcmp(snum,stu.num)==0)
            stu.jie--;
        fwrite(&stu,sizeof(st),1,p);
        fread(&stu,sizeof(st),1,fps);
    }
    fclose(p);
    fclose(fps);    
    p=fopen("c:\\jie.txt","rb+");
    fps=fopen("c:\\student.txt","wb+");
    fread(&stu,sizeof(st),1,p);
    while(!feof(p)){
        fwrite(&stu,sizeof(st),1,fps);
        fread(&stu,sizeof(st),1,p);    
    }
    printf("\n归还成功!回到主菜单");
    system("pause");
}
void cha(){//借阅查询
    char num[10];
    bo boo;
    ji jie;
    printf("\n请输入你的学号:");
    scanf("%s",num);
    fread(&jie,sizeof(ji),1,fpj);
    printf("书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
    while(!feof(fpj)){
        if(strcmp(jie.snum,num)==0){
            fread(&boo,sizeof(bo),1,fp);
            while(!feof(fp)){
                if(strcmp(jie.bnum,boo.num)==0)
                    printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);
                fread(&boo,sizeof(bo),1,fp);
            }
        }
        fread(&jie,sizeof(ji),1,fpj);
    }
    printf("\n查询完毕!回到主菜单");
    system("pause");
}
main(){
    if((fp=fopen("c:\\book.txt","rb+"))==NULL){
        printf("在c盘根目录下没有找到储存图书信息的book.txt文件\n请选择  1--手动导入!  2--创建此文件\n");
        scanf("%d",&xuan);
        switch(xuan){
        case 2:if((fp=fopen("c:\\book.txt","wb+"))!=NULL)
                   printf("创建成功\n\n");
            break;
        case 1:printf("请把名为book.txt的文件复制到c盘根目录下\n\n");
        }
    }
    if((fpj=fopen("c:\\jieyue.txt","rb+"))==NULL){
        printf("在c盘根目录下没有找到储存借阅信息的jieyue.txt文件\n请选择  1--手动导入!  2--创建此文件\n");
        scanf("%d",&xuan);
        switch(xuan){
        case 2:if((fpj=fopen("c:\\jieyue.txt","wb+"))!=NULL)
                   printf("创建成功\n\n");
            break;
        case 1:printf("请把名为jieyue.txt的文件复制到c盘根目录下\n\n");
        }
    }
    if((fps=fopen("c:\\student.txt","rb+"))==NULL){
        printf("在c盘根目录下没有找到储存学生信息的student.txt文件\n请选择  1--手动导入!  2--创建此文件\n");
        scanf("%d",&xuan);
        switch(xuan){
        case 2:if((fps=fopen("c:\\student.txt","wb+"))!=NULL)
                   printf("创建成功\n\n");
            break;
        case 1:printf("请把名为student.txt的文件复制到c盘根目录下\n\n");
        }
    }
    menu();
    printf("\n  代码:");
    scanf("%d",&xuan);        
    while(xuan==1||xuan==2||xuan==3||xuan==4||xuan==5||xuan==6||xuan==7){
        fp=fopen("c:\\book.txt","rb+");
        fps=fopen("c:\\student.txt","rb+");
        fpj=fopen("c:\\jieyue.txt","rb+");
        switch(xuan){
        case 0:break;
        case 1:end();break;
        case 2:print();break;
        case 3:find();break;
        case 4:del();break;
        case 5:lend();break;
        case 6:huan();break;
        case 7:cha();break;
        }
        fclose(fp);
        fclose(fpj);
        fclose(fps);
        menu();
    printf("\n  代码:");
    scanf("%d",&xuan);
    }
 
}

img

#include<stdio.h> 
#include<math.h> 
#include<string.h> 
#include<stdlib.h> 
 
 
struct books_list 
{ 
 
 char author[20]; /*作者名*/ 
 char bookname[20]; /*书名*/ 
 char publisher[20]; /*出版单位*/ 
 char pbtime[15]; /*出版时间*/ 
 char loginnum[10]; /*登陆号*/ 
 float price;  /*价格*/ 
 char classfy[10]; /*分类号*/ 
 struct books_list * next; /*链表的指针域*/ 
}; 
 
struct books_list * Create_Books_Doc(); /*新建链表*/ 
void InsertDoc(struct books_list * head); /*插入*/ 
void DeleteDoc(struct books_list * head , int num);/*删除*/ 
void Print_Book_Doc(struct books_list * head);/*浏览*/ 
void search_book(struct books_list * head); /*查询*/ 
void save(struct books_list * head);/*保存数据至文件*/ 
 
/*新建链表头节点*/ 
struct books_list * Create_Books_Doc() 
{ 
 struct books_list * head; 
 head=(struct books_list *)malloc(sizeof(struct books_list)); /*分配头节点空间*/ 
 head->next=NULL; /*头节点指针域初始化,定为空*/ 
 return head; 
} 
 
/*保存数据至文件*/ 
void save(struct books_list * head) 
{ 
 struct books_list *p; 
 FILE *fp; 
 p=head; 
 fp=fopen("data.txt","w+"); /*以写方式新建并打开 data.txt文件*/ 
 fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n"); /*向文件输出表格*/ 
 fprintf(fp,"┃登录号┃ 书 名 ┃ 作 者┃ 出版单位 ┃ 出版时间 ┃分类号┃ 价格 ┃\n"); 
 fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n"); 
 /*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price); 
 } 
 fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n"); 
 fclose(fp); 
 printf("  已将图书数据保存到 data.txt 文件\n"); 
} 
 
/*插入*/ 
void InsertDoc(struct books_list *head) 
{ 
 /*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/ 
 struct books_list *s, *p; 
 char flag='Y'; /*定义flag,方便用户选择重复输入*/ 
 p=head; 
 /*遍历到尾结点,p指向尾结点*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 } 
 /*开辟新空间,存入数据,添加进链表*/ 
 while(flag=='Y'||flag=='y') 
 { 
 s=(struct books_list *)malloc(sizeof(struct books_list)); 
 printf("\n  请输入图书登陆号:"); 
 fflush(stdin); 
 scanf("%s",s->loginnum); 
 printf("\n  请输入图书书名:"); 
 fflush(stdin); 
 scanf("%s",s->bookname); 
 printf("\n  请输入图书作者名:"); 
 fflush(stdin); 
 scanf("%s",s->author); 
 printf("\n  请输入图书出版社:"); 
 fflush(stdin); 
 scanf("%s",s->publisher); 
 printf("\n  请输入图书出版时间:"); 
 fflush(stdin); 
 scanf("%s",s->pbtime); 
 printf("\n  请输入图书分类号:"); 
 fflush(stdin); 
 scanf("%s",s->classfy); 
 printf("\n  请输入图书价格:"); 
 fflush(stdin); 
 scanf("%f",&s->price); 
 printf("\n"); 
 p->next=s; /*将新增加的节点添加进链表*/ 
 p=s; /*p指向尾节点,向后移*/ 
 s->next=NULL; 
 printf("  ━━━━ 添加成功!━━━━"); 
 printf("\n  继续添加?(Y/N):"); 
 fflush(stdin); 
 scanf("%c",&flag); 
 printf("\n"); 
 if(flag=='N'||flag=='n') 
 {break;} 
 else if(flag=='Y'||flag=='y') 
 {continue;} 
 } 
 save(head); /*保存数据至文件*/ 
 return; 
} 
 
/*查询操作*/ 
 
void search_book(struct books_list *head) 
{ 
 struct books_list * p; 
 char temp[20]; 
 p=head; 
 if(head==NULL || head->next==NULL) /*判断数据库是否为空*/ 
 { 
 printf(" ━━━━ 图书库为空!━━━━\n"); 
 } 
 else 
 { 
 printf("请输入您要查找的书名: "); 
 fflush(stdin); 
 scanf("%s",temp); 
 /*指针从头节点开始移动,遍历至尾结点,查找书目信息*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 if(strcmp(p->bookname,temp)==0) 
 { 
 printf("\n图书已找到!\n"); 
 printf("\n"); 
 printf("登录号: %s\t\n",p->loginnum); 
 printf("书名: %s\t\n",p->bookname); 
 printf("作者名: %s\t\n",p->author); 
 printf("出版单位: %s\t\n",p->publisher); 
 printf("出版时间: %s\t\n",p->pbtime); 
 printf("分类号: %s\t\n",p->classfy); 
 printf("价格: %.2f\t\n",p->price); 
 } 
 if(p->next==NULL) 
 { 
 printf("\n查询完毕!\n"); 
 } 
 } 
 } 
 return; 
} 
 
 /*浏览操作*/ 
 
void Print_Book_Doc(struct books_list * head) 
{ 
 struct books_list * p; 
 if(head==NULL || head->next==NULL) /*判断数据库是否为空*/ 
 { 
 printf("\n  ━━━━ 没有图书记录! ━━━━\n\n"); 
 return; 
 } 
 p=head; 
 printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n"); 
 printf("┃登录号┃ 书 名 ┃ 作 者┃ 出版单位 ┃ 出版时间 ┃分类号┃ 价格 ┃\n"); 
 printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n"); 
 /*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price); /*循环输出表格*/ 
 } 
 printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n"); 
 printf("\n"); 
} 
 
/*删除操作*/ 
void DeleteDoc(struct books_list * head) 
{ 
 struct books_list *s,*p; /*s为中间变量,p为遍历时使用的指针*/ 
 char temp[20]; 
 int panduan; /*此变量用于判断是否找到了书目*/ 
 panduan=0; 
 p=s=head; 
 printf("  [请输入您要删除的书名]:"); 
 scanf("%s",temp); 
 /*遍历到尾结点*/ 
 while(p!= NULL) 
 { 
 if(strcmp(p->bookname,temp)==0) 
 { 
 panduan++; 
 break; 
 } 
 p=p->next; 
 } 
 if(panduan==1) 
 { 
 for(;s->next!=p;) /*找到所需删除卡号结点的上一个结点*/ 
 { 
 s=s->next; 
 } 
 s->next=p->next; /*将后一节点地址赋值给前一节点的指针域*/ 
 free(p); 
 printf("\n  ━━━━ 删除成功! ━━━━\n"); 
 } 
 else /*未找到相应书目*/ 
 { 
 printf("  您输入的书目不存在,请确认后输入!\n"); 
 } 
 return; 
} 
 
int main() 
{ 
 struct books_list * head; 
 char choice; 
 head=NULL; 
 for(;;) /*实现反复输入选择*/ 
 { 
 printf(" ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); 
 printf(" ┃ ┃ tony 图书馆管理系统 ┃ ┃\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(" ┃   ┃\n"); 
 printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); 
 printf("  请选择:"); 
 fflush(stdin); 
 scanf("%c",&choice); 
 if(choice=='1') 
 { 
 if(head==NULL) 
 { 
 head=Create_Books_Doc(); 
 } 
 InsertDoc(head); 
 
 } 
 else if(choice=='2') 
 { 
 Print_Book_Doc(head); 
 } 
 else if(choice=='3') 
 { 
 search_book(head); 
 } 
 else if(choice=='4') 
 { 
 DeleteDoc(head); 
 } 
 
 else if(choice=='5') 
 { 
 printf("\n"); 
 printf(" ━━━━━━━━ 感谢使用图书管理系统 ━━━━━━━━\n"); 
 break; 
 } 
 else 
 { 
 printf("  ━━━━ 输入错误,请重新输入!━━━━\n"); 
 
 } 
 } 
 
 return 0; 
}