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

本文介绍了一个使用C语言实现的图书信息管理系统,系统具备图书信息录入、浏览、查询、删除及修改等功能。通过文件操作实现数据持久化存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写个c语言课程设计玩
要求: 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:
系统以菜单方式工作

     1.职工信息录入功能(职工信息用文件保存)--输入  
     2.图书信息浏览功能————输出
     3.查询和排序功能:(至少一种查询方式)  --算法
       按工资查询 ,按学历查询等
     4职工信息删除、修改功能(任选项)

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
    char number[10];//登录号
    char name[20];//书名
    char author[20];//作者
    char sort[20];//分类号
    char publish[50];//出版社
    char time[20];//出版时间
    float price;//价格
} mbook;
typedef struct {
    int count;                                          //图书数
    mbook book[100];                                    //最大可录入的图书数
} mlibrary;
mlibrary library;
void save() {                                           //保存图书信息
    FILE *fp;
    if((fp=fopen("library.txt","w"))==NULL) {
        printf("保存图书失败\n");
        return;
    }
    fwrite(&library.count,sizeof(int),1,fp);
    fwrite(library.book,sizeof(library.book[0]),library.count,fp);
}
void putin() {                                          //图书录入
    system("cls");
    int t=1;
    library.count=0;
    while(t) {
        printf("请输入图书登录号:");
        scanf("%s",library.book[library.count].number);
        printf("\n请输入图书书名:");
        scanf("%s",library.book[library.count].name);
        printf("\n    请输入作者:");
        scanf("%s",library.book[library.count].author);
        printf("\n  请输入分类号:");
        scanf("%s",library.book[library.count].sort);
        printf("\n  请输入出版社:");
        scanf("%s",library.book[library.count].publish);
        printf("\n请输入出版时间:");
        scanf("%s",library.book[library.count].time);
        fflush(stdin);
        printf("\n请输入图书价格:");
        scanf("%f",&library.book[library.count].price);
        library.count++;//实际数比此数少1 
        printf("\n是否继续输入图书信息(1:是;0:否):");
        scanf("%d",&t);
    }
    save();
}
void scan() {                                            //图书浏览
    system("cls");
    printf("登录号\t书名\t作者\t分类号\t出版社\t出版时间\t价格\n");
    fflush(stdin);
    for(int l=0; l<library.count; l++) {
        printf("%s\t",library.book[l].number);
        printf("%s\t",library.book[l].name);
        printf("%s\t",library.book[l].author);
        printf("%s\t",library.book[l].sort);
        printf("%s\t",library.book[l].publish);
        printf("%s\t",library.book[l].time);
        printf("    %.2f\t\n",library.book[l].price);
    }
    getchar();
}
void search() {                                         //图书查询
    system("cls");
    fflush(stdin);
    int l;
    char c[20];
    printf("请输入要查找的书名-_-:\n");
    gets(c);
    for(l=0; l<library.count; l++) {
        if(strcmp(c,library.book[l].name)==0) {
            printf("登录号\t书名\t作者\t分类号\t出版社\t出版时间\t价格\n");
            printf("%s\t",library.book[l].number);
            printf("%s\t",library.book[l].name);
            printf("%s\t",library.book[l].author);
            printf("%s\t",library.book[l].sort);
            printf("%s\t",library.book[l].publish);
            printf("%s\t",library.book[l].time);
            printf("    %.2f\t",library.book[l].price);
            break;
        }
    }
    if(l==library.count)
        printf("没有此图书\n");
    fflush(stdin);
    getchar();
}
void del() {                                            //图书删除
    system("cls");
    fflush(stdin);
    int l;
    char c[10];
    printf("请输入要删除的书名-_-:\n");
    gets(c);
    for(l=0; l<library.count; l++) {
        if(strcmp(c,library.book[l].name)==0)
            break;
    }
    if(l==library.count)
        printf("没有此图书\n");
    else
        for(int j=l; j<library.count-1; j++) {
            strcpy(library.book[j].number,library.book[j+1].number);
            strcpy(library.book[j].name,library.book[j+1].name);
            strcpy(library.book[j].author,library.book[j+1].author);
            strcpy(library.book[j].sort,library.book[j+1].sort);
            strcpy(library.book[j].publish,library.book[j+1].publish);
            strcpy(library.book[j].time,library.book[j+1].time);
            library.book[j].price=library.book[j+1].price;
        } 
        library.count--;
        printf("\n再按一次回车"); 
    fflush(stdin);
    save();
    getchar();
}
void update() {                                 //图书修改
    system("cls");
    fflush(stdin);
    int l;
    char c[10];
    printf("请输入要修改的书名-_-:\n");
    gets(c);
    for(l=0; l<library.count; l++)
        if(strcmp(c,library.book[l].name)==0)
            break;
    if(l==library.count)
        printf("没有该图书\n");
    else {
        printf("请输入修改后的图书登录号:");
        scanf("%s",library.book[l].number);
        printf("\n请输入修改后的图书书名:");
        scanf("%s",library.book[l].name);
        printf("\n    请输入修改后的作者:");
        scanf("%s",library.book[l].author);
        printf("\n  请输入修改后的分类号:");
        scanf("%s",library.book[l].sort);
        printf("\n  请输入修改后的出版社:");
        scanf("%s",library.book[l].publish);
        printf("\n请输入修改后的出版时间:");
        scanf("%s",library.book[l].time);
        fflush(stdin);
        printf("\n请输入修改后的图书价格:");
        scanf("%f",&library.book[l].price);
    }
    fflush(stdin);
    save();
}
int main() {                                    //主函数 
    FILE *fp;
    if((fp=fopen("library.txt","r"))==NULL) {
        printf("不能打开文件信息库\n");
        fp=fopen("library.txt","w+");
        printf("创建文档,请关闭后重启\n");
        library.count=0;
        fwrite(&library.count,sizeof(int),1,fp);
        fclose(fp);
    }
    fread(&library.count,sizeof(int),1,fp);
    fread(library.book,sizeof(library.book[0]),library.count,fp);
    fclose(fp);
    int x;
    do {
        system("cls");//清屏
        printf("——————————图书信息管理系统设计——————————\n");
        printf("                    1.图书信息录入\n");
        printf("                    2.图书信息浏览\n");
        printf("                    3.图书信息查询\n");
        printf("                    4.图书信息删除\n");
        printf("                    5.图书信息修改\n");
        printf("                    6.退出\n");
        printf("************************************************************\n");
        printf("请输入数字以选择功能:");
        fflush(stdin);//清除输入缓存
        scanf("%d",&x);
        switch(x) {
            case 1:
                putin();//录入
                break;
            case 2:
                scan();//浏览
                break;
            case 3:
                search();//查询(按书名)
                break;
            case 4:
                del();//删除
                break;
            case 5:
                update();//修改
                break;
            case 6:
                printf("\n\n退出\n\n");
                break;
            default:
                printf("\n序号不对\n");
                break;
        }
    } while(x!=6);
    save();
    return 0;
}

完美运行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值