一个简单c语言程序设计

题目2.图书信息管理系统
图书信息包括:图书编号、书名、作者名、出版社、出版时间、价格等。试设计一图书信息管理系统,实现以下菜单显示的功能:
1录入,录入每本图书的信息,按书号从小到大的顺序将图书信息存入文件中。
2添加,可以添加图书信息。若已有,可以修改该图书的信息,若没有。则插入该图书信息,插入后仍然保持按书号有序,再保存到原文件中。3查询,按书名查询图书的信息(列出所有书名相同的图书信息)
4修改,书号不可修改,按书号确定要修改的图书对象。
5删除,按书号删除图书信息。
6排序,按出版社排序,并显示。
7浏览,从文件中读取每本图书的信息并显示。0退出

给你一个CD租赁系统参考,改一下结构体名称,及中文说明就可以了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void add(void); //新片上架函数
int check(void); // 碟片查询函数
int rent(void); //碟片借阅函数
void useradd(void); //会员添加函数
void returnn (void);// 碟片归还函数
int user_number =1000; //定义会员数目
int cd_number =1000; //定义碟片数目
struct cd//碟片结构体
{
    char film_name[10]; //碟片名称
    char country[10]; //碟片国家
    char type[10]; //碟片类型
    int n; //借阅标记10无
};
struct rent//碟片借阅结构体
{
    char username[10]; //使用者名
    char film_name[10][10]; //碟片名称
    int rent_time; //借出时间
    int return_time; //归还时间
    int money; //租金
};
struct cd CD[1000]; //定义cd数目
struct rent RENT[1000]; //定义出租数目
//-----------------------主函数-------------------------------------
void main (void) //主函数
{
    char choice; //菜单
    system("color 3E");//桌面背景
    printf(" ***欢迎进入影片出租管理系统*** \n");
    printf("--------------------------------------------------\n");
    printf(" ★请输入你的选择★\n");
    printf(" ★A: 新片上架\n");
    printf(" ★B: 碟片查询\n");
    printf(" ★C: 碟片借阅(非会员不能借阅) \n");
    printf(" ★D: 碟片归还\n");
    printf(" ★E: 加入会员\n");
    printf(" ★F: 退出程序\n");
    printf("-------------------------------------------------\n");
    scanf("%c",&choice);
    switch(choice) //多条件选择判断
    {
        case 'A':
        add(); //碟片添加函数
        break;
    case 'B':
        check(); //碟片查询函数
        break;
    case 'C':
        rent(); //碟片借阅函数
        break;
    case 'D':
        returnn();//碟片归还函数
        break;
    case'E':
        useradd();//添加会员函数
        break;
    case'F':
         exit(0); //退出程序
    }
}
//----------------碟片添加函数-----------------------
void add(void)//新片上架
{
    FILE *a; //文件指针
    char s;//定义字符
    w: printf("请输入碟片名称:\n");
    scanf("%s",CD[cd_number].film_name);
    printf("请输入碟片国家:\n");
    scanf("%s",CD[cd_number].country);
    printf("请输入碟片类型:\n");
    scanf("%s",CD[cd_number].type);
    getchar();//取回车符
    CD[cd_number].n = 1; //修改借阅标记
    a = fopen("cd.txt","a");//追加方式打开
    fwrite(&CD[cd_number], sizeof(struct cd), 1, a);
    cd_number++;
    printf("是否继续添加?(Y/N)\n");
    scanf("%c",&s);
    getchar();
    switch(s) //多条件选择
    {
        case 'Y': goto w; //若借,返回w
        case 'N': goto v; //若不借,则退出
    }
    v: fclose(a);//关闭a文件
    system("cls");//清屏
    }
//--------------------碟片查询函数------------------------------
int check(void)//碟片查询
{
    FILE *a;//文件指针
    char cd_name[10];
    int i;
    system("cls");//清屏
    a=fopen("cd.txt","r"); //只读方式打开文件
    for(i = 0; i < cd_number; i++)
    {
        fread(&CD[i], sizeof(struct cd),1, a);//把a中一个cd结构体赋给CD[i] }
        printf("请输入碟片名:\n");
        scanf("%s",cd_name);
        getchar();//取回车符
        for(i = 0; i < cd_number; i++)
        {
            if((strcmp(CD[i].film_name, cd_name))==0) //若影片名相同
            {
                if(CD[i].n==1) //借阅标记为1
                {
                    printf("可借阅\n");
                    fclose(a);
                    return 1;
                }
                if(CD[i].n==0)//借阅标记为0
                {
                    printf("已借出\n");
                    fclose(a);
                    return 1;
                }
            }
        }
        for(i = 0; i < cd_number; i++)
        {
            if((strcmp(CD[i].film_name, cd_name))!=0) //若影片名不同
            {
                printf("无此片\n");
                fclose(a);
                return 1;
            }
        }
    }
    fclose(a);//关闭a文件
    return 0; //返回菜单
}
//------------会员添加函数---------------------------------
void useradd(void)//添加会员
{ 
    FILE *a; //文件指针
    system("cls");//清屏 
    printf("请输入姓名:\n");
    scanf("%s",RENT[user_number].username);
    getchar();
    a = fopen("rent.txt","ab");//追加方式打开
    fwrite(&RENT[user_number], sizeof(struct rent), 1, a);//把a中一个rent结构体赋给RENT[user_number]
    printf(" 添加成功\n");
    user_number++;
    fclose(a);
}
//-------------碟片借阅函数-----------------------------
int rent(void) //碟片借阅
{ 
    char user_name[10];
    char cd_name[10];
    int i,j;
    FILE *a;//文件指针
    FILE *b;//文件指针
    int k=0;
    char choice;
    system("cls");//清屏
    a = fopen("rent.txt","r");//只读方式打开
    b = fopen("cd.txt","r");//只读方式打开
    for (i = 0; i < cd_number; i++)
    {
        fread(&CD[i], sizeof(struct cd),1,b);//把b中一个cd结构体赋给CD[i] }
        for (i = 0; i < user_number; i++)
        {
            fread(&RENT[i],sizeof(struct rent),1,a);//把a中一个rent结构体赋给RENT[i] }
            printf("请输入借阅人:\n");
            scanf("%s",user_name);
            getchar();
            a: printf("请输入碟片名:\n");
            scanf("%s",cd_name);
            getchar();
            printf("请再次输入碟片名:\n");
            scanf("%s", RENT[i].film_name[k]);
            k++;
            getchar();
            printf("此人已借%d张\n",k);
            for(j = 0; j < cd_number; j++)
            {
                if((strcmp(CD[j].film_name, cd_name))==0)//如果两个名相同
                {
                    CD[j].n=0; //修改借阅标记
                }
            }
            printf("请输入借出日期:\n");
            scanf("%d",&RENT[i].rent_time);
            getchar();
            printf("A: 再接一张\n");
            printf("B: 退出\n");
            scanf("%c",&choice);
            getchar();
            switch(choice)//多条件选择判断
            {
                case 'A': goto a;
                break;
                case 'B': return 0;
            }
        }
    }
    fclose(a);
    fclose(b);
    return 0;
}
//--------------碟片归还函数----------------------------
void returnn (void) //碟片归还
{ 
    char user_name[10];
    char cd_name[10];
    FILE *a;
    FILE *b;
    int i;
    int j;
    int k = 0;
    char choice;
    system("cls");//清屏
    a = fopen("rent.txt","r");//只读方式打开
    b = fopen("cd.txt","r");//只读方式打开
    for (i = 0; i < cd_number; i++)
    {
        fread(&CD[i], sizeof(struct cd), 1, b);//把b中一个cd结构体赋给CD[i] }
        for (i = 0; i < user_number; i++)
        {
            fread(&RENT[i], sizeof(struct rent), 1, a); //把a中一个rent结构体赋给RENT[i] }
            printf("请输入借阅人:\n");
            scanf("%s",user_name);
            for (i = 0; i < user_number; i++)
            {
                if ((strcmp(user_name, RENT[i].username))==0)
                {
                    a: printf("请输入要归还的碟片名:\n");
                    scanf("%s",cd_name);
                    for (j = 0; j < cd_number; j++)
                    {
                        if((strcmp(CD[j].film_name, cd_name))==0)
                        {
                            CD[j].n = 1;
                            break;
                        }
                    }
                }
            }
            printf("借出日期:%d\n",RENT[i].rent_time);
            printf("请输入归还日期:\n");
            scanf("%d",&RENT[i].return_time);
            getchar();
            if (((RENT[i].return_time - RENT[i].rent_time) % 2)==0) //计算租金
            {
                //(每二天租金为1 不满两天以两天记)
                RENT[i].money = (RENT[i].return_time - RENT[i].rent_time) / 3;
            }
            else
            {
                RENT[i].money = (RENT[i].return_time - RENT[i].rent_time) / 3 + 1;
            }
            printf("租金:%d\n",RENT[i].money);
            printf("A: 再还一张\n");
            printf("B: 退出\n");
            scanf("%c",&choice);
            getchar();
            switch(choice)
            {
                case 'A': goto a;
                    break;
                case 'B': return;
            }
            fclose(a);
            fclose(b);
        }
    }
}

参考一下:https://blog.csdn.net/qq_43789285/article/details/90487852?utm_source=app&app_version=4.10.0
如有帮助,请采纳。