C语言图书管理系统控制台程序

程序示例精选
C语言图书管理系统控制台程序
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《C语言图书管理系统控制台程序》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. VS2022
       2. C++

二、使用步骤

代码如下(示例):
typedef struct
{
    char no[20];     // 书号
    char name[20];    // 书名
    char author[20];  // 作者
    float price;      // 价格 
    int count;      //数量 

}book;

book bk[MAXNUM];

int cnt = 0; //图书总数量 

void readFile() //读文件 
{
    FILE* fo;
    fo = fopen("bookdata.txt", "r");
    fscanf(fo, "%d", &cnt);
    int i;
    for (i = 1; i <= cnt; i++)
    {
        fscanf(fo, "%s", bk[i].no);
        fscanf(fo, "%s", bk[i].name);
        fscanf(fo, "%s", bk[i].author);
        fscanf(fo, "%f", &bk[i].price);
        fscanf(fo, "%d", &bk[i].count);

    }
    fclose(fo);
}

void saveFile() //写文件 
{
    FILE* fp;
    fp = fopen("bookdata.txt", "w");
    int i;
    fprintf(fp, "%d\n", cnt);
    for (i = 1; i <= cnt; i++)
    {
        fprintf(fp, "%5s", bk[i].no);
        fprintf(fp, "%10s", bk[i].name);
        fprintf(fp, "%13s", bk[i].author);
        fprintf(fp, "%13f", bk[i].price);
        fprintf(fp, "%13d\n", bk[i].count);
    }
    fclose(fp);
}

void swap(char* src, char* des) //字符串交换
{
    char t[100];
    strcpy(t, src);
    strcpy(src, des);
    strcpy(des, t);
}

void addbook() //新增图书
{
    system("cls");

    char a[20];
    system("cls");
    printf("  ********** 增加图书 **********\n");
    cnt++; //图书的数量+1 

    printf("请输入图书书号: ");
    scanf("%s", a);
    if (search_no(a) != 0) {

        printf("该书已存在,您可以返回主菜单选择修改信息\n");
        cnt--;
        return;
    }
    swap(a, bk[cnt].no);

    printf("请输入图书书名: ");
    scanf("%s", bk[cnt].name);

    printf("请输入图书作者: ");
    scanf("%s", bk[cnt].author);

    printf("请输入图书价格: ");
    scanf("%f", &bk[cnt].price);

    printf("请输入图书数量: ");
    scanf("%d", &bk[cnt].count);

    printf("新增成功!");
}

void sort_menu() // 排序图书菜单 
{
    system("cls");
    printf("请选择排序方式:\n");
    printf("1 书号  ");
    printf("2 书名  ");
    printf("0 退出\n");
    printf("请选择:");
}

void del_menu() //删除图书菜单 
{
    system("cls");
    printf(" ********** 删除图书 **********\n");
    printf(" 请选择删除方式:\n");
    printf(" 1 书号  ");
    printf(" 2 书名  ");
    printf(" 0 退出\n");
    printf("请选择:");
}

void search_menu() // 查找图书菜单 
{
    system("cls");
    printf("  ********** 查找图书 **********\n");
    printf(" 请选择查找方式:\n");
    printf(" 1 书号  ");
    printf(" 2 书名  ");
    printf(" 3 作者  ");
    printf(" 0 退出\n");
    printf("请选择:");
}

void change_menu() //修改图书菜单 
{
    system("cls");
    printf(" ********** 修改图书 **********\n");
    printf(" 请选择修改方式:\n");
    printf(" 1 书号  ");
    printf(" 2 书名  ");
    printf(" 0 退出\n");
    printf(" 请选择:");

}

void print_menu()  // 输出菜单 
{
    system("cls");
    printf("\n********** 图书管理系统 **********\n\n");
    printf("\t1 增加图书\n");
    printf("\t2 修改图书\n");
    printf("\t3 删除图书\n");
    printf("\t4 查找图书\n");
    printf("\t5 图书排序\n");
    printf("\t6 图书显示\n");
    printf("\t7 图书销售\n");
    printf("\t0 退出系统\n\n");
    printf("\t请选择要执行的操作: ");
}

void print_head()  // 打印说明文字 
{
    char id[5] = "序号";
    char no[5] = "书号";
    char name[5] = "书名";
    char author[9] = "作者";
    char price[11] = "价格";
    char count[11] = "数量";
    printf("% 5s", id);
    printf("%10s", no);
    printf("%13s", name);
    printf("%13s", author);
    printf("%13s", price);
    printf("%13s", count);
    printf("\n");
}

void output(int i)  //输出 cnt 为 i 的图书信息 
{
    printf("%10s", bk[i].no);
    printf("%13s", bk[i].name);
    printf("%13s", bk[i].author);
    printf("%15.2f", bk[i].price);
    printf("%15d\n", bk[i].count);
}



int main()
{
    int i, j;
    while (1)
    {
        readFile();
        print_menu();
        int n;
        scanf("%d", &n);
        printf("\n");
        if (n == 0) {
            printf("\t谢谢您的使用!");
            break;
        }
        switch (n)
        {
        case 1: //增加图书 
            addbook();
            break;

        case 2://修改图书 
            change_menu();
            int p;
            scanf("%d", &p);
            if (p == 0)
                break;
            switch (p)
            {
            case 1:
                printf(" 请输入要修改书的书号:");
                char no[20];
                scanf("%s", no);
                j = search_no(no);
                if (j == 0)
                    printf(" 未查找到该书!\n\t");
                else {
                    change(j);
                    printf("修改成功!");
                }

                break;
            case 2:
                printf(" 请输入要修改书的书名:");
                char name[20];
                scanf("%s", name);
                i = search_name(name);
                if (i == 0)
                    printf(" 未查找到该书!\n\t");
                else {
                    change(i);
                    printf("修改成功!");
                }

                break;
            default:
                printf(" 输入错误!\n\t");
            }
            break;

        case 3://删除图书 
            del_menu();
            int p1;
            scanf("%d", &p1);
            if (p1 == 0)
                break;
            switch (p1)
            {
            case 1:
                printf("请输入要删除书的书号:");
                char num[20];
                scanf("%s", num);
                j = search_no(num);
                if (j == 0)
                    printf("未查找到该书!\n");
                else {
                    del(j);
                    printf("删除成功!");
                }

                break;
            case 2:
                printf("请输入要删除书的书名:");
                char name[20];
                scanf("%s", name);
                i = search_name(name);
                if (i == 0)
                    printf("未查找到该书!");
                else {
                    del(i);
                    printf("删除成功!");
                }

                break;
            default:
                printf("输入错误!\n");
            }
            break;

        

        default:
            printf("输入有误,请重新选择:\n\n");
        }
        saveFile();//保存 
        pause();
    }
    system("pause");
    return 0;
}




运行结果

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445
Python+Yolov5道路障碍物识别:https://blog.csdn.net/alicema1111/article/details/129589741
Python+Yolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别:https://blog.csdn.net/alicema1111/article/details/129272048

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荷塘月色2

您的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值