图书管理系统 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();
    }
}

 

  • 12
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C语言写的课程设计: 图书管理系统 系统功能主要是管理图书的库存信息、图书的借阅信息以及借阅者的借书信息。每一种图书的库存信息包括编号、书名、作者、出版社、出版日期、金额、类别、总入库数量、当前库存量、已借出本数等。每一本被借阅的书都包括如下信息:编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。每一个人的借书信息包括借书证号、姓名、班级、学号等。 系统详细功能如下: 1)借阅资料管理 要求把书籍、期刊、报刊分类管理,并可以随时对其相关资料进行添加、删除、修改、查询等操作。 2)借阅管理:借出操作、还书操作、续借处理 以上处理需要互相配合以及赔、罚款金额的编辑等操作完成图书借还业务的各种登记。例如:读者还书时不仅更新图书的库存信息,还应该自动计算该书应罚款金额。并显示该读者所有至当日内到期未还书信息。 3)读者管理 读者等级:对借阅读者进行分类处理,例如可分为教师和学生两类。并定义每类读者的可借书数量和相关的借阅时间等信息。 读者管理:对读者信息可以录入,并且可对读者进行挂失或注销、查询等服务的作业。 4)统计分析 随时可以进行统计分析,以便及时了解当前的借阅情况和相关的资料状态,统计分析包括借阅排行榜、资料状态统计和借阅统计、显示所有至当日内到期未还书信息等功能分析。 5)系统参数设置:可以设置相关的罚款金额,最多借阅天数等系统服务器参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值