`
rgbaflf
  • 浏览: 4298 次
  • 性别: Icon_minigender_1
  • 来自: 江西
文章分类
社区版块
存档分类
最新评论

图书管理系统 C 语言代码

阅读更多

图书管理系统 C 语言代码 , 很久以前写成,刚刚从硬盘里发现他,传上来了

下载地址:  http://download.csdn.net/source/1886795  

 

/*

图书管理系统: 

要求: 

1.图书信息基本输入(编号 名称 出版社 作者 价格) 

2.图书基本信息修改

3.图书删除

4.图书基本信息查询(编号  名称  出版社 作者) 

5.图书排序(按编号 名称)

*/

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

typedef struct  //图书结构体 
{
    char num[20];     // 编号
    char name[20];    // 名称
    char press[20];   // 出版社 
    char author[20];  // 作者
    float price;      // 价格  

}book;

book bk[1000];   
int cout=0; //图书的数量 

int login(char *ad,char *pa) // 登入到系统 
{
    char administrator[20],password[20];
    FILE *fl;
    fl=fopen("administrator.txt","r");
    fscanf(fl,"%s",administrator);
    fscanf(fl,"%s",password);
    if( strcmp(ad,administrator)==0 && strcmp(pa,password)==0 )
        return 1;
    else
        return 0;
}

void login_menu() //登陆界面
{
    printf("\n\n\n\n\t\t  ☆☆☆☆☆ 欢迎来到图书管理系统 ☆☆☆☆☆\n");
    printf("\t\t  ☆☆☆☆☆ 请输入用户名和密码: ☆☆☆☆☆\n\n");
} 

void login_wrong() //登入失败提示
{
    printf("\t\t 用户名或密码错误,请重新输入:\n");
    system("pause");
    system("cls");
} 

void read_file() //读文件 
{
    FILE *fo;
    fo=fopen("data.dat","r");
    fscanf(fo,"%d",&cout);
    int i;
    for(i=1;i<=cout;i++)
    {
        fscanf(fo,"%s",bk[i].num);
        fscanf(fo,"%s",bk[i].name);
        fscanf(fo,"%s",bk[i].press);
        fscanf(fo,"%s",bk[i].author);
        fscanf(fo,"%f",&bk[i].price);
        
    }
}

void write_file() //写文件 
{
    FILE *fp;
	  fp=fopen("data.dat","w");
	  int i;
    fprintf(fp,"%d\n",cout);
    for(i=1;i<=cout;i++)
 	  {
    	  fprintf(fp,"%5s",bk[i].num);
    	  fprintf(fp,"%10s",bk[i].name);
    	  fprintf(fp,"%13s",bk[i].press);
    	  fprintf(fp,"%13s",bk[i].author);
    	  fprintf(fp,"%13f\n",bk[i].price);
    }
}

void input() //图书信息基本输入
{
    system("cls");
    printf("\n\n\n\n\t\t  ☆☆☆☆☆ 增加图书 ☆☆☆☆☆\n\n");
    cout++; //图书的数量+1 
    
    printf("请输入图书的编号:   ");
    scanf("%s",bk[cout].num);
    
    printf("请输入图书的名称:   ");
    scanf("%s",bk[cout].name);
    
    printf("请输入图书的出版社: ");
    scanf("%s",bk[cout].press);
    
    printf("请输入图书的作者:   ");
    scanf("%s",bk[cout].author);
    
    printf("请输入图书的价格:   ");
    scanf("%f",&bk[cout].price);
}

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

void del_menu() //删除图书菜单 
{
     system("cls");
     printf("\n\n\n\n\t  ☆☆☆☆☆ 删除图书 ☆☆☆☆☆\n\n");
     printf(" 请选择是要通过书的编号还是书的名称来删除图书:\n");
     printf(" 1——编号\n");
     printf(" 2——名称\n");
     printf(" 0——退出删除\n");
     printf("请选择:");
}

void search_menu() // 查找图书菜单 
{
     system("cls");           
     printf("\n\n\n\n\t  ☆☆☆☆☆ 查找图书 ☆☆☆☆☆\n\n");
     printf(" 请选择通过什么方法来查找图书:\n");
     printf(" 1——编号\n");
     printf(" 2——名称\n");
     printf(" 3——出版社\n");
     printf(" 4——作者\n");
     printf(" 0——退出查询\n");
     printf("请选择:"); 
}

void change_menu() //修改图书菜单 
{
     system("cls");
     printf("\n\n\n\n\t  ☆☆☆☆☆ 修改图书 ☆☆☆☆☆\n\n");
     printf(" 请选择是要通过书的编号还是书的名称来修改图书:\n");
     printf(" 1——编号\n");
     printf(" 2——名称\n");
     printf(" 0——退出修改\n");
     printf(" 请选择:");
}

void print_menu()  // 输出菜单 
{
    system("cls");
    printf("\n  ☆☆☆☆☆ 现在总共有 %d 本图书 ☆☆☆☆☆\n\n",cout);
    printf("\t请选择要执行的操作:\n");
    printf("\t1——增加图书:\n");
    printf("\t2——修改图书:\n");
    printf("\t3——删除图书:\n");
    printf("\t4——查找图书:\n");
    printf("\t5——排序图书:\n");
    printf("\t6——显示全部图书:\n");
    printf("\t0——退出:\n");
    printf("\t请选择: ");
}

void print_head()  // 输出头 
{
    char id[5]="序号";
    char num[5]="编号";
    char name[5]="名称";
    char press[9]="出版社";
    char author[9]="作者";
    char price[11]="价格";
    printf("% 5s",id);
    printf("%10s",num);
    printf("%13s",name); 
    printf("%13s",press);
    printf("%13s",author);
    printf("%13s",price);
    printf("\n");
}


void output(int i)  //输出 cout 为 i 的图书信息 
{
    printf("%10s",bk[i].num);
    printf("%13s",bk[i].name);
    printf("%13s",bk[i].press);
    printf("%13s",bk[i].author);
    printf("%15f",bk[i].price);
}

void del(int number)  //删除 cout 为 number 的书
{
    int i;
    for(i=number;i<cout;i++)
    {
        strcpy(bk[i].num,bk[i+1].num);
        strcpy(bk[i].name,bk[i+1].name);
        strcpy(bk[i].press,bk[i+1].press);
        strcpy(bk[i].author,bk[i+1].author);
        bk[i].price=bk[i+1].price;
    }
    cout--; //书的总数 -1 
} 


void change(int b_cout) //修改 cout 为 b_cout 的书的信息 
{
    printf("所要修改的图书为:\n");
    output(b_cout);
    while(1)
    {
        printf("请选择所要修改图书的哪一项:\n");
        printf("1——编号\n");
        printf("2——名称\n");
        printf("3——出版社\n");
        printf("4——作者\n");
        printf("5——价格\n");
        printf("0——退出\n");
        int point;
        scanf("%d",&point);
        if(point==0)
            break;
        switch(point)
        {
            case 1:
                 printf("请输入新的编号:\n");
                 scanf("%s",bk[b_cout].num);
                 break;
                 
            case 2:
                 printf("请输入新的名称:\n");
                 scanf("%s",bk[b_cout].name);
                 break;
                 
            case 3:
                 printf("请输入新的出版社:\n");
                 scanf("%s",bk[b_cout].press);
                 break;
                 
            case 4:
                 printf("请输入新的作者:\n");
                 scanf("%s",bk[b_cout].author);
                 break;
                 
            case 5:
                 printf("请输入新的价格:\n");
                 scanf("%f",&bk[b_cout].price);
                 break;
            default:
                 printf("输入有误,请重新选择:\n\n");
        }
    }
}

int search_num(char b_num[]) //通过编号查找书,返回书的cout 
{
    int i;
    for(i=1;i<=cout;i++)
        if(strcmp(b_num,bk[i].num)==0)
            break;
    if(i==cout+1)
        return 0;
    else
        return i;
}

int search_name(char b_name[]) //通过名称查找书,返回书的cout 
{
    int i;
    for(i=1;i<=cout;i++)
        if(strcmp(b_name,bk[i].name)==0)
            break;
    if(i==cout+1)
        return 0;
    else 
        return i;
}



void output_all()//显示全部图书
{
    system("cls");
    printf("\n\n\n\n\t\t  ☆☆☆☆☆ 现在总共有 %d 本图书 ☆☆☆☆☆\n\n",cout);
    int i; 
    print_head();
    for(i=1;i<=cout;i++)
    {
        printf("%5d",i);
        output(i);
        printf("\n");
    }
} 

void pause() // 暂停函数
{
    printf("\n请按任意键键继续\n");
    getch();
} 

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


void sort_num() //按编号排序 
{
    int i,j;
    float t;
    for(i=1;i<=cout;i++)
    {
        for(j=1;j<=i;j++)
        {
            if(strcmp(bk[i].num,bk[j].num)<0)
            {
                swap(bk[i].num,bk[j].num);
                swap(bk[i].name,bk[j].name);
                swap(bk[i].press,bk[j].press);
                swap(bk[i].author,bk[j].author);
                t=bk[i].price;
                bk[i].price=bk[j].price;
                bk[j].price=t;
            }
        }
    }
}




void sort_name() //按书名排序
{
    int i,j;
    float t;
    for(i=1;i<=cout;i++)
    {
        for(j=1;j<=i;j++)
        {
            if(strcmp(bk[i].name,bk[j].name)<0)
            {
                swap(bk[i].num,bk[j].num);
                swap(bk[i].name,bk[j].name);
                swap(bk[i].press,bk[j].press);
                swap(bk[i].author,bk[j].author);
                t=bk[i].price;
                bk[i].price=bk[j].price;
                bk[j].price=t;
            }
        }
    }
} 


int main()
{
    int i,j;
    while(1)
    {
        login_menu();
        char ad[20];
        char pa[20];
        printf("\t\t  请输入用户名:");
        scanf("%s",ad); 
        printf("\t\t  请输入密码:  ");
        scanf("%s",pa);
        if( !login(ad,pa) )
            login_wrong();
        else 
            break;
    }   

    while(1)
    {
        read_file();
        print_menu();
        int n;
        scanf("%d",&n);
        printf("\n");
        if(n==0)
            break;
        switch(n)
        {
            case 1: //增加图书 
                 input();
                 break;
            
            case 2://修改图书 
                 change_menu();
                 int p;
                 scanf("%d",&p);
                 if(p==0)
                     break;
                 switch(p)
                 {
                     case 1:
                          printf(" 请输入要修改书的编号:");
                          char num[20];
                          scanf("%s",num);
                          j=search_num(num);
                          if(j==0)
                              printf(" 没有这本书!\n\t");
                          else
                              change(j);
                          break;
                     case 2:
                          printf(" 请输入要修改书的名称:");
                          char name[20];
                          scanf("%s",name);
                          i=search_name(name);
                          if(i==0)
                              printf(" 没有这本书!\n\t");
                          else
                              change(i);
                          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_num(num);
                          if(j==0)
                              printf("没有这本书!\n");
                          else
                              del(j);
                          break;
                     case 2:
                          printf("请输入要删除书的名称:");
                          char name[20];
                          scanf("%s",name);
                          i=search_name(name);
                          if(i==0)
                              printf("没有这本书!");
                          else
                              del(i);
                          break;
                     default:
                          printf("输入错误!\n");
                 }
                 break;


            case 4://查找图书 
                 search_menu();
                 int p2;
                 scanf("%d",&p2);
                 printf("\n");
                 if(p2==0)
                     break;
                 switch(p2)
                 {
                     case 1:
                          printf(" 请输入要查找书的编号:");
                          char num[20];
                          scanf("%s",num);
                          printf("\n");
                          j=search_num(num);
                          if(j==0)
                              printf(" 没有这本书!\n");
                          else
                          {
                              printf(" 要查找的书有:\n");
                              output(j);
                          }
                          break;
                     case 2:
                          printf(" 请输入要查找书的名称:");
                          char name[20];
                          scanf("%s",name);
                          printf("\n");
                          i=search_name(name);
                          if(i==0)
                              printf(" 没有这本书!\n");
                          else
                          {
                              printf(" 要查找的书有:\n");
                              output(i);
                          }
                          break;
                     case 3:
                          printf(" 请输入要查找书的出版社:");
                          char press[20];
                          scanf("%s",press);
                          printf("\n");
                          printf(" 要查找的书有:\n");
                          
                          for(i=1;i<=cout;i++)
                          {
                              if(strcmp(press,bk[i].press)==0)
                              {
                                  printf(" 找到第 %d 本书:\n",i);
                                  output(i);
                                  printf("\n");
                              }
                          }
                          break;
                     case 4:
                          printf(" 请输入要查找书的作者:");
                          char author[20];
                          scanf("%s",author);
                          printf("\n");
                          printf(" 要查找的书有:\n");
                          
                          for(j=1;j<=cout;j++)
                          {
                              if(strcmp(author,bk[j].author)==0)
                              {
                                  printf(" 找到第 %d 本书:\n",j);
                                  output(j);
                                  printf("\n");
                              }
                          }
                          break;
                     default:
                          printf(" 输入错误!\n");
                 }
                 break;
            case 5://排序图书
                 sort_menu();
                 int p3;
                 scanf("%d",&p3);
                 printf("\n");
                 if(p3==0)
                     break;
                 switch(p3)
                 {
                     case 1://按编号排序 
                          sort_num();
                          output_all();
                          break;
                     case 2://按书名排序 
                          sort_name();
                          output_all();
                          break;
                     default:
                          printf("输入错误!\n");
                 }
                 break;
            
            case 6://显示全部图书 
                 output_all();
                 break;
                                         
            default:
                 printf("输入有误,请重新选择:\n\n");
        }
        write_file();
        pause();
    }
}

 

分享到:
评论

相关推荐

    图书管理系统c语言源代码

    C语言实现的图书管理系统可能包含以下几个核心模块: 1. **数据结构**:图书信息通常存储在数据结构中,如链表或数组。链表允许动态添加和删除图书,而数组则提供快速访问。可能使用结构体来封装图书的属性,如书名...

    图书管理系统 C 语言 代码

    【图书管理系统 C 语言 代码】是一个典型的计算机编程实践项目,使用了经典的C语言作为实现工具。C语言是一种结构化编程语言,以其高效、简洁和灵活性而被广泛应用于系统编程、嵌入式开发以及各种软件工程。在这个...

    图书管理系统c语言程序+代码

    本项目是一个基于C语言编写的图书管理系统,对于初学者来说,它是理解和掌握C语言编程以及结构化程序设计的良好实践案例。 C语言是一种基础且强大的编程语言,适用于系统级编程和嵌入式系统。在这个图书管理系统中...

    c语言图书管理系统源码 c语言图书管理系统源码

    9. **课程设计与文档编写**:C语言图书管理系统课程设计可能是大学计算机科学课程的一个项目,学生需要完成源代码编写并提交文档,如提供的"C语言图书管理系统课程设计.doc",其中可能包含系统设计、实现细节、测试...

    图书管理系统 数据结构 c++ 课程设计 完整代码

    《图书管理系统》是一款基于数据结构和C++编程语言的课程设计项目,旨在帮助学生实践和理解数据管理在实际应用中的运用。在这个系统中,开发者利用了C++的强大功能,结合数据结构理论,创建了一个功能完善的图书借阅...

    图书管理系统(含源代码)c语言 数据结构课程设计报告.docx

    《图书管理系统》是一款基于C语言的数据结构课程设计项目,旨在训练学生掌握软件开发流程,包括分析、设计、编码、调试和测试。系统采用文件操作来存储和管理图书信息,主要功能包括图书的添加、显示所有图书、查询...

    图书管理系统(C语言)(csdn)————程序.pdf

    这是一份使用 C 语言编写的图书管理系统的源代码,实现了图书管理的基本功能,包括添加图书、删除图书、修改图书信息等。下面是对该源代码的详细解释和知识点总结: login 函数 login 函数用于用户登录图书管理...

    图书管理系统 C语言源代码文件

    《图书管理系统——C语言源代码解析》 在IT领域,编程是实现计算机功能的重要手段,而C语言作为经典且基础的编程语言,被广泛应用于系统级编程和软件开发。本篇将深入探讨一个使用C语言编写的图书管理系统的源代码...

    图书管理系统(C语言课程设计报告+代码)

    内容:主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:图书入库,按书名、出版社、价格、作者进行查询和分类统计。操作界面要符合用户的一般习惯,图形或文本界面都可以。 要求:...

    c语言编写的图书管理系统源代码

    【图书管理系统】是一种常见的课程设计项目,用于帮助学生掌握编程语言的基本应用,特别是C语言。这个系统通常包含一系列功能,如图书的添加、删除、查询、借阅与归还等,旨在模拟实际图书馆的运作流程。通过这个...

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

    首先,C语言作为基础的编程语言,其简洁的语法和强大的底层控制能力使得它成为实现图书管理系统的理想选择。在C语言中,我们可以直接操作内存,进行高效的数据处理,同时通过标准输入输出以及文件操作,实现数据的...

    贪吃蛇,人事管理系统,学生信息管理系统,图书借阅管理系统(c语言源代码,带注释,已调试好)

    人事管理系统,图书借阅管理系统,学生信息管理系统,贪吃蛇游戏(c语言源代码,带注释,已调试好了)

    图文代理系统.rar_C语言源代码_c语言 图书管理系统_图书管理_图书管理系统 C语言

    实际的图书管理系统源代码文件没有列出,但在实际项目中,这通常会包含一系列的`.c`和`.h`文件,分别对应不同的功能模块和头文件。 总的来说,通过这个C语言编写的图书管理系统,我们可以学习到如何利用C语言的特性...

    c语言图书管理系统

    《C语言图书管理系统详解》 在信息技术领域,C语言因其高效、灵活的特性,被广泛应用于各种系统开发,包括图书管理系统的实现。本系统“C语言图书管理系统”旨在为学生提供一个基础的图书管理平台,便于理解和学习...

    图书管理系统 c语言 可直接运行

    《图书管理系统 C语言实现详解》 图书管理系统是计算机科学领域中的一个典型应用,它主要用于图书馆的日常运营,如书籍的借阅、归还、查询等操作。本系统采用C语言编写,C语言作为基础的编程语言,具有高效、灵活的...

    图书管理系统源代码和论文

    《高校图书管理系统的设计与实现——源代码解析》 在当今信息化社会,高校图书管理系统的建设已经成为教育领域不可或缺的一部分。随着互联网技术的飞速发展,传统的图书管理方式已无法适应现代教育对信息处理效率和...

    C语言-- 图书管理系统.zip

    【标题】"C语言-- 图书管理系统.zip" 是一个基于C语言实现的图书管理系统的源代码包。这个项目旨在提供一个简单的平台,用于图书馆或个人书籍的管理,包括书籍的添加、删除、查询和借阅等功能。通过学习和分析这个...

    C语言简单的图书管理系统

    在本项目中,我们讨论的是一个使用C语言编写的简单图书管理系统。这个系统提供了基本的图书管理和用户管理功能,如书籍的添加、删除、修改和查询,以及用户的注册、注销和信息修改。此外,它还支持图书的借阅与归还...

    图书管理系统(C语言)源代码

    语言:C语言 基本应用:数据结构中图论知识(我是用临接表做的) 主要功能: 1.管理员: 1)记录查询(用图表的方式浏览图书借阅情况) 2)读者管理(浏览\增加、删除借阅者信息) 3)图书管理(浏览\增加\删除书目) 2....

Global site tag (gtag.js) - Google Analytics