带鱼~~ 2020-07-02 20:03 采纳率: 0%
浏览 200

c语言 图书管理系统 大佬们能不能看一下~

图片说明
c语言大作业,救救孩子吧
参考了https://blog.csdn.net/HeZhiYing_/article/details/80627622
_ 写到了前台管理员身份,卡住了。

跪求大佬们帮帮我啊,卑微小王求求你们了~

#include <stdio.h>
#include<string.h>
#include <stdlib.h>
int user_count=0;
int book_count=0;
int borrower_count=0;

struct account{
    char ID[20];
    char password[20];
}user[100];

struct detailbook{
    char book_name[20];
    char book_code[20];
    char book_sort[20];
    char book_number[20];
}book[1000];

struct detailborrow{
    char brw_name[20];
    char brw_id[20];
    char brw_level[3];
    char brw_number[3];
}borrower[100];

void load_user(void);
void load_book(void);
void save_book(void);
void backlogin(void);
void backadmin(void);
void bookinput(void);
void brwinput(void);
void load_borrower(void);
void save_borrower(void);
void frontlogin(void);
void frontadmin(void);
void lend(void);
void save_history(void);


void main(){
    load_user();
    load_book();
    load_borrower();
    user_menu();
}


void user_menu(void)
{
    int choose;
    system("cls");
    printf("\n\n\t\t*****************************************");
    printf("\n\t\t*\t\t\t\t\t*");
    printf("\n\t\t*\t\t\t\t\t*");
    printf("\n\t\t*\t 欢迎来到图书管理系统\t*");
    printf("\n\t\t*\t\t\t\t\t*");
    printf("\n\t\t*\t      登录后台请按1\t\t*");
    printf("\n\t\t*\t\t\t\t\t*");
    printf("\n\t\t*\t      登录前台请按2\t\t*");
    printf("\n\t\t*\t\t\t\t\t*");
    printf("\n\t\t*\t      注册账号请按3\t\t*");
    printf("\n\t\t*\t\t\t\t\t*");
    printf("\n\t\t*\t      退出系统请按0\t\t*");
    printf("\n\t\t*\t\t\t\t\t*");
    printf("\n\t\t*****************************************");
    printf("\n\t\t\t\t");
    printf("\n\t\t\t       请输入选项:\n\t\t\t\t   ");
    scanf("%d",&choose);
    switch(choose){
        case 1:
            backlogin();
        case 2:
            frontlogin();
        case 3:
            add_user(); break;
        case 0:
            return;
        default:
            printf("\n\t\t\t   输入错误,请重新输入\n\n\t\t\t    ");
            system("PAUSE");
            system("cls");
            user_menu();
    }
}

void add_user(void)//注册账号
{
    FILE *fp;
    int i;
    char str[101];
    system("cls");
    printf("\n");
    printf("\t\t\t请输入账号:\n\n\t\t\t   ");
    scanf("%s",str);
    if(strlen(str)>16)
    {
        printf("\t\t账号长度大于16位,请重新输入\n");
        system("PAUSE");
        system("cls");
        printf("\n");
        add_user();
        return;
    }
    for(i=0;i<user_count;i++)
        if(strcmp(user[i].ID,str)==0)
        {
            printf("\t\t该账号已被注册,请重新注册\n\n\t\t\t   ");
            system("PAUSE");//按任意键继续
            add_user();
        }
    strcpy(user[i].ID,str);
    printf("\t\t\t请输入密码:\n\n\t\t\t   ");
    scanf("%s",str);
    while(strlen(str)>16)
    {
        system("cls");
        printf("\n");
        printf("\t\t密码长度大于16位,请重新输入\n\n");
        printf("\t\t\t请输入密码:\n\n\t\t\t   ");
        scanf("%s",str);
    }
    strcpy(user[i].password,str);
    save_user();//将账号写入磁盘
    printf("\t\t\t账号申请成功\n\n\t\t\t");
    user_count++;
    system("PAUSE");
    user_menu();
}



void save_user(void)//将账号写入磁盘
{
    int i;
    FILE *fp;
    fp=fopen("账号.txt","w");
    for(i=0;i<=user_count;i++)
    {
        fprintf(fp,"%s\n",user[i].ID);
        fprintf(fp,"%s\n",user[i].password);
    }
    fclose(fp);
}


void load_user(void)//将账号读入内存
{
    FILE *fp;
    fp=fopen("账号.txt","r");
    while(fscanf(fp,"%s",user[user_count].ID)!=EOF)
    {
        fscanf(fp,"%s",user[user_count].password);
        user_count++;
    }
    fclose(fp);
}


void backlogin(void)//后台人员登录
{
    int i,flag=0;
    char str[20];
    system("cls");
    printf("\n");
    printf("\t\t\t请输入账号:\n\n\t\t\t   ");
    scanf("%s",str);
    for(i=0;i<user_count;i++)
        if(strcmp(user[i].ID,str)==0)
        {
            flag=1;
            break;
        }
    if(flag==0)
    {
        printf("\t\t该账号不存在,请重新登录\n\n\t\t\t");
        system("PAUSE");
        system("cls");
        printf("\n");
        backlogin();
        return;
    }
    printf("\t\t\t请输入密码:\n\n\t\t\t   ");
    scanf("%s",str);
    while(strcmp(user[i].password,str)!=0)
    {
        system("cls");
        printf("\n");
        printf("\t\t\t密码错误,请重新输入\n\n\t\t\t\t");
        scanf("%s",str);
    }
    printf("\t\t\t登录成功\n\n\t\t\t");
    backadmin();
}







void backadmin(void)//后台人员操作选项
{
    int choose;
    while(1){
        system("cls");
        printf("\n\n\t\t*****************************************");
        printf("\n\t\t*\t\t\t\t\t*");
        printf("\n\t\t*\t      书籍录入请输入1\t\t*");
        printf("\n\t\t*\t      书籍增加请输入2\t\t*");
        printf("\n\t\t*\t      借阅人信息录入请输入3\t\t*");
        printf("\n\t\t*\t      借阅人信息增加请输入4\t\t*");
        printf("\n\t\t*\t      返回到上一层请按0\t\t*");
        printf("\n\t\t*\t\t\t\t\t*");
        printf("\n\t\t*****************************************");
        printf("\n\t\t\t       请输入选项:\n\t\t\t\t   ");
        scanf("%d",&choose);
        switch(choose){
            case 0:
                user_menu();return;
            case 1:
                bookinput();

            case 3:
                brwinput();
        }
    }
}


void bookinput(void)//图书录入功能
{
    int i;
    system("cls");
    printf("\n\t\t\t   请输入要录入的图书数\n\t\t\t\t");
    scanf("%d",&book_count);
    for(i=0;i<book_count;i++){
         system("cls");
         printf("\n\t\t\t   这是第%d本书的录入\n\t\t\t\t",i+1);
         printf("\n\t\t\t   请输入书名\n\t\t\t\t");
         scanf("%s",book[i].book_name);
         printf("\n\t\t\t   请输入书的序号\n\t\t\t\t");
         scanf("%s",book[i].book_code);
         printf("\n\t\t\t   请输入书的类别\n\t\t\t\t");
         scanf("%s",book[i].book_sort);
         printf("\n\t\t\t   请输入书的数量\n\t\t\t\t");
         scanf("%s",book[i].book_number);
    }
    save_book();
    printf("按任意键结束");
    system("PAUSE");
}

void load_book(void)//将图书读入内存
{
    FILE *fp;
    fp=fopen("图书.txt","r");
    while(fscanf(fp,"%s",book[book_count].book_name)!=EOF)
    {
        fscanf(fp,"%s",book[book_count].book_name);
        fscanf(fp,"%s",book[book_count].book_code);
        fscanf(fp,"%s",book[book_count].book_sort);
        fscanf(fp,"%s",book[book_count].book_number);
        book_count++;
    }
    fclose(fp);
}


void save_book(void)//将图书写入磁盘
{
    int i;
    FILE *fp;
    fp=fopen("图书.txt","w");
    for(i=0;i<=book_count;i++)
    {
        fprintf(fp,"%s\n",book[i].book_name);
        fprintf(fp,"%s\n",book[i].book_code);
        fprintf(fp,"%s\n",book[i].book_sort);
        fprintf(fp,"%s\n",book[i].book_number);
    }
    fclose(fp);
}



void brwinput(void)//录入借书者
{
    int i;
    system("cls");
    printf("\n\t\t\t   请输入要录入的借书者数\n\t\t\t\t");
    scanf("%d",&borrower_count);
    for(i=0;i<borrower_count;i++){
         system("cls");
         printf("\n\t\t\t   这是第%d个借书者的录入\n\t\t\t\t",i+1);
         printf("\n\t\t\t   请输入借书者姓名\n\t\t\t\t");
         scanf("%s",borrower[i].brw_name);
         printf("\n\t\t\t   请输入借书者id\n\t\t\t\t");
         scanf("%s",borrower[i].brw_id);
         printf("\n\t\t\t   请输入借书者等级\n\t\t\t\t");
         scanf("%s",borrower[i].brw_level);
         printf("\n\t\t\t   请输入借书者已借数量\n\t\t\t\t");
         scanf("%s",borrower[i].brw_number);
    }
    save_borrower();
    printf("按任意键结束");
    system("PAUSE");
}



void load_borrower(void)//将借书者读入内存
{
    FILE *fp;
    fp=fopen("借书者.txt","r");
    while(fscanf(fp,"%s",borrower[borrower_count].brw_name)!=EOF)
    {
        fscanf(fp,"%s",borrower[borrower_count].brw_name);
        fscanf(fp,"%s",borrower[borrower_count].brw_id);
        fscanf(fp,"%s",borrower[borrower_count].brw_level);
        fscanf(fp,"%s",borrower[borrower_count].brw_number);
        borrower_count++;
    }
    fclose(fp);
}


void save_borrower(void)//将借书者写入磁盘
{
    int i;
    FILE *fp;
    fp=fopen("借书者.txt","w");
    for(i=0;i<=borrower_count;i++)
    {
        fprintf(fp,"%s\n",borrower[i].brw_name);
        fprintf(fp,"%s\n",borrower[i].brw_id);
        fprintf(fp,"%s\n",borrower[i].brw_level);
        fprintf(fp,"%s\n",borrower[i].brw_number);
    }
    fclose(fp);
}


void frontlogin(void)//前台人员登录
{
    int i,flag=0;
    char str[20];
    system("cls");
    printf("\n");
    printf("\t\t\t请输入账号:\n\n\t\t\t   ");
    scanf("%s",str);
    for(i=0;i<user_count;i++)
        if(strcmp(user[i].ID,str)==0)
        {
            flag=1;
            break;
        }
    if(flag==0)
    {
        printf("\t\t该账号不存在,请重新登录\n\n\t\t\t");
        system("PAUSE");
        system("cls");
        printf("\n");
        frontlogin();
        return;
    }
    printf("\t\t\t请输入密码:\n\n\t\t\t   ");
    scanf("%s",str);
    while(strcmp(user[i].password,str)!=0)
    {
        system("cls");
        printf("\n");
        printf("\t\t\t密码错误,请重新输入\n\n\t\t\t\t");
        scanf("%s",str);
    }
    printf("\t\t\t登录成功\n\n\t\t\t");
    frontadmin();
}


void frontadmin(void)//前台人员操作选项
{
    int choose;
    while(1){
        system("cls");
        printf("\n\n\t\t*****************************************");
        printf("\n\t\t*\t\t\t\t\t*");
        printf("\n\t\t*\t      日常记录被借书籍请输入1\t\t*");
        printf("\n\t\t*\t      日常记录被还书籍2\t\t*");
        printf("\n\t\t*\t      查询到期未还的书输入3\t\t*");

        printf("\n\t\t*\t\t\t\t\t*");
        printf("\n\t\t*****************************************");
        printf("\n\t\t\t       请输入选项:\n\t\t\t\t   ");
        scanf("%d",&choose);
        switch(choose){
            case 1:
                lend();

            case 3:
                ;
        }
    }
}




void lend(void){
    char str1[20],str2[20];
    int i,t,u;
    printf("请输入借阅者id:");
    scanf("%s",str1);
    printf("请输入书的序号:");
    scanf("%s",str2);
    for(i=0;i<borrower_count;i++){
        if(strcmp(str1,borrower[i].brw_id)==0){
            t=i;
            break;
        }
    }
    for(i=0;i<book_count;i++){
        if(strcmp(str2,book[i].book_name)==0){
            u=i;
            break;
        }
    }
    load_book();
    load_borrower();
    FILE *fp;
    fp=fopen("历史记录.txt","w");
    fprintf(fp,"%s\n",book[u].book_name);
    fprintf(fp,"%s\n",book[u].book_code);
    fprintf(fp,"%s\n",book[u].book_sort);
    fprintf(fp,"%s\n",borrower[t].brw_id);
    fclose(fp);
}


  • 写回答

2条回答 默认 最新

  • javkhuang 2020-07-02 23:04
    关注

    有没有错误提示?看下哪里出错

    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题