`
rgbaflf
  • 浏览: 4254 次
  • 性别: 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();
    }
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics