找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4167|回复: 1
收起左侧

C语言图书信息管理系统的程序源码

[复制链接]
ID:421591 发表于 2018-11-6 11:19 | 显示全部楼层 |阅读模式
源码如下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #define M 1000

  6. void choice_1_input_new();                    /*输入新进的图书信息*/
  7. void choice_2_display_all();                  /*显示全部图书信息*/
  8. void choice_3_search_according_name();        /*根据图书名称显示图书的信息*/
  9. void choice_4_delete_according_name();        /*根据图书名称对图书信息进行删除*/
  10. void choice_9_sort_according_list();          /*根据图书库存排序*/
  11. void choice_5_sort_according_name();          /*根据图书价格排序*/
  12. void choice_6_display_high_price();           /*根据价格范围列出图书信息*/
  13. void choice_7_display_according_exitflag();   /*根据存在状态列出图书信息*/
  14. void choice_8_change_book();                  /*修改图书信息*/


  15. typedef struct bookinfo
  16. {
  17.         char number[15];   /*产品编号*/
  18.         char name[30];     /*产品名称*/
  19.         char auther[30];   /*作者*/
  20.         char list[20];     /*类别*/
  21.         float price;       /*单价*/
  22.         char boss[15];     /*出版社信息*/
  23.         char time[10];     /*出版时间*/
  24.         int isExit;        /*库存存在状态*/
  25. }BOOKINFO;


  26. void choice_1_input_new()       /*输入新进的图书信息*/
  27. {
  28.         char choice;
  29.     FILE *p;
  30.     BOOKINFO newbook;
  31.         system("cls") ;
  32.         while(1)
  33.         {
  34.                 printf("输入图书编号:");
  35.                 scanf("%s",&newbook.number);
  36.                 printf("输入图书名称:");
  37.                 scanf("%s",&newbook.name);
  38.                 printf("输入图书类别:");
  39.                 scanf("%s",&newbook.list);
  40.                 printf("输入图书单价:");
  41.                 scanf("%f",&newbook.price);
  42.                 printf("输入其出版社:");
  43.                 scanf("%s",&newbook.boss);
  44.                 printf("输入图书作者:");
  45.                 scanf("%s",&newbook.auther);
  46.                 printf("输入出版时间:");
  47.                 scanf("%s",&newbook.time);
  48.                 printf("输入需要添加的图书数目:");
  49.                 scanf("%d",&newbook.isExit);
  50.                 printf("是否保存该条数目?(Y/N):");
  51.                 choice=getchar();
  52.         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  53.         choice=getchar();
  54.         if(choice == 'Y'||choice == 'y')
  55.         {
  56.                 p=fopen("e:\\bookinfo.txt","ab");
  57.                         fwrite(&newbook,sizeof(BOOKINFO),1,p);
  58.             fclose(p);
  59.             printf("\n该条书目已添加到e:\\bookinfo.txt 文件中!\n");
  60.                 }
  61.                 else
  62.                 {
  63.                         printf("\n该条书目未保存!\n");
  64.                 }
  65.                 printf("\n是否继续添加书目?(Y/N):");
  66.                 choice=getchar();
  67.                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  68.                 choice=getchar();
  69.                 if(choice == 'Y'||choice == 'y')
  70.                     continue;
  71.                 else
  72.                     break;
  73.         }
  74. }

  75. void choice_2_display_all()             /*显示全部图书信息*/
  76. {
  77.         FILE *p;
  78.         int n;
  79.         BOOKINFO bookinfo[M];
  80.         int booknumber=0;
  81.         system("cls");
  82.         p=fopen("e:\\bookinfo.txt","rb");
  83.         while(!feof(p))
  84.         {
  85.                 fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  86.                 booknumber++;
  87.         }
  88.         fclose(p);
  89.         booknumber--;
  90.         if(booknumber==0)
  91.         {
  92.                 printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  93.         }
  94.         else
  95.         {
  96.                 n=0;
  97.                 printf("图书信息如下:\n\n\n");
  98.                 printf("\t\t\t\t   图书信息\n\n\n");
  99.                 printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  100.                 while(n<booknumber)
  101.                 {
  102.                         printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
  103.                         bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  104.                         n++;
  105.                 }
  106.         }
  107.         printf("\n\n\n\t\t\t      按任意键返回主菜单!");
  108.         getch();
  109. }


  110. void choice_3_search_according_name()             /*根据图书名称显示图书的信息*/
  111. {
  112.         char search[20];
  113.         int n;
  114.         FILE *p;
  115.         char choice;
  116.         BOOKINFO bookinfo[M];
  117.         int booknumber=0;
  118.         system("cls");
  119.         p=fopen("e:\\bookinfo.txt","rb");
  120.         while(!feof(p))
  121.         {
  122.                 fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  123.                 booknumber++;
  124.         }
  125.         booknumber--;
  126.         fclose(p);
  127.         while(1)
  128.         {
  129.                 printf("输入要查询的书本名称:");
  130.                 scanf("%s",&search);
  131.                 if(booknumber==0)
  132.                 {
  133.                         printf("\t\t\t      书库中没有任何信息!\n\n\n");
  134.                         printf("\t\t\t      按任意键返回主菜单!");
  135.                         getch();
  136.                         break;
  137.                 }
  138.                 else
  139.                 {
  140.                         for(n=0;n<booknumber;n++)
  141.                                 if(strcmp(bookinfo[n].name,search)==0)
  142.                                 {
  143.                                         printf("\n\n\t\t\t该书的详细信息如下:\n\n\n");
  144.                                         printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  145.                                        bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  146.                                 break;      
  147.                                 }
  148.                                 if(n>=booknumber)
  149.                                 printf("\n\n\t\t\t没有查到该书的任何信息!\n");
  150.                                 printf("\n\n是否继续查询?(Y/N):");
  151.                                 choice=getchar();
  152.                                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  153.                                 choice=getchar();
  154.                                 if(choice == 'Y'||choice == 'y')
  155.                                     continue;
  156.                                 else
  157.                                     break;
  158.                 }
  159.         }
  160. }


  161. void choice_4_delete_according_name()            /*根据图书名称对图书信息进行删除*/
  162. {
  163.         char search[20];
  164.         int n,i;
  165.         FILE *p;
  166.         char choice;
  167.         BOOKINFO bookinfo[M];
  168.         int booknumber;
  169.         system("cls");
  170.         while(1)
  171.         {
  172.                 printf("输入要删除的书本名称:");
  173.                 scanf("%s",&search);
  174.                 p=fopen("e:\\bookinfo.txt","rb");
  175.                 booknumber=0;
  176.                 while(!feof(p))
  177.                 {
  178.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  179.                         booknumber++;
  180.                 }
  181.                 booknumber--;
  182.                 fclose(p);
  183.                 if(booknumber==0)
  184.                 {
  185.                         printf("\t\t\t      书库中没有任何信息!\n\n\n");
  186.                         printf("\t\t\t      按任意键返回主菜单!");
  187.                         getch();
  188.                         break;
  189.                 }
  190.                 else
  191.                 {
  192.                         for(n=0;n<booknumber;n++)
  193.                                 if(strcmp(bookinfo[n].name,search)==0)
  194.                                 {
  195.                                 break;      
  196.                                 }
  197.                                 if(n>=booknumber)
  198.                                 printf("\t\t\t    没有查到该书的任何信息!\n\n");
  199.                                 else
  200.                                 {
  201.                                         printf("是否确认需要删除该条书目?(Y/N):");
  202.                                         choice=getchar();
  203.                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  204.                                         choice=getchar();
  205.                                         if(choice == 'Y'||choice == 'y')
  206.                                         {
  207.                                                 for(i=n;i<booknumber-1;i++)
  208.                                                         bookinfo[i]=bookinfo[i+1];
  209.                                                         booknumber--;
  210.                                                         p=fopen("e:\\bookinfo.txt","wb");
  211.                                                         for(n=0;n<booknumber;n++)
  212.                                                                 fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
  213.                                                                 fclose(p);
  214.                                                                 printf("\n\n\n\t\t\t\t       删除成功!\n");
  215.                                         }
  216.                                         else
  217.                                                 printf("\n\n该条书目没有被删除!");
  218.                                 }
  219.                                 printf("\n\n是否继续进行删除操作?(Y/N):");
  220.                                 choice=getchar();
  221.                                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  222.                                 choice=getchar();
  223.                                 if(choice == 'Y'||choice == 'y')
  224.                                     continue;
  225.                                 else
  226.                                     break;
  227.                 }
  228.     }
  229. }

  230. void choice_9_sort_according_list()                /*根据图书库存排序*/
  231. {
  232.         FILE *p;
  233.         int m,n;
  234.         BOOKINFO temp;
  235.         BOOKINFO bookinfo[M];
  236.         int booknumber;
  237.         p=fopen("e:\\bookinfo.txt","rb");
  238.         booknumber=0;
  239.         system("cls");
  240.         while(!feof(p))
  241.                 {
  242.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  243.                         booknumber++;
  244.                 }
  245.                 booknumber--;
  246.                 fclose(p);
  247.                 if(booknumber==0)
  248.                 {
  249.                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  250.                 }
  251.                 else
  252.                 {
  253.                         for(m=0;m<booknumber-1;m++)
  254.                                 for(n=m+1;n<booknumber;n++)
  255.                                         if(bookinfo[m].isExit<bookinfo[n].isExit)
  256.                                         {
  257.                                                 temp=bookinfo[m];
  258.                                                 bookinfo[m]=bookinfo[n];
  259.                                                 bookinfo[n]=temp;
  260.                                         }
  261.                                         p=fopen("e:\\bookinfo.txt","wb");
  262.                                         for(m=0;m<booknumber;m++)
  263.                                                 fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
  264.                                                 fclose(p);
  265.                                                 printf("\n\n完成排序!\n\n");
  266.                                                 if(booknumber==0)
  267.                                                 {
  268.                                                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  269.                                                 }
  270.                                                 else
  271.                                                 {
  272.                                                         n=0;
  273.                                                         printf("图书信息如下:\n\n");
  274.                                                         printf("\t\t\t\t   图书信息\n\n\n");
  275.                                                         printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  276.                                                         while(n<booknumber)
  277.                                                         {
  278.                                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  279.                                                                 bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  280.                                                                 n++;
  281.                                                         }
  282.                                                 }
  283.                 }
  284.                 fclose(p);
  285.                 printf("\n\t\t\t      按任意键返回主菜单!");
  286.                 getch();
  287. }


  288. void choice_5_sort_according_name()                /*根据图书价格排序*/
  289. {
  290.         FILE *p;
  291.         int m,n;
  292.         BOOKINFO temp;
  293.         BOOKINFO bookinfo[M];
  294.         int booknumber;
  295.         p=fopen("e:\\bookinfo.txt","rb");
  296.         booknumber=0;
  297.         system("cls");
  298.         while(!feof(p))
  299.                 {
  300.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  301.                         booknumber++;
  302.                 }
  303.                 booknumber--;
  304.                 fclose(p);
  305.                 if(booknumber==0)
  306.                 {
  307.                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  308.                 }
  309.                 else
  310.                 {
  311.                         for(m=0;m<booknumber-1;m++)
  312.                                 for(n=m+1;n<booknumber;n++)
  313.                                         if(bookinfo[m].price>bookinfo[n].price)
  314.                                         {
  315.                                                 temp=bookinfo[m];
  316.                                                 bookinfo[m]=bookinfo[n];
  317.                                                 bookinfo[n]=temp;
  318.                                         }
  319.                                         p=fopen("e:\\bookinfo.txt","wb");
  320.                                         for(m=0;m<booknumber;m++)
  321.                                                 fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
  322.                                                 fclose(p);
  323.                                                 printf("\n\n完成排序!\n\n");
  324.                                                 if(booknumber==0)
  325.                                                 {
  326.                                                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  327.                                                 }
  328.                                                 else
  329.                                                 {
  330.                                                         n=0;
  331.                                                         printf("图书信息如下:\n\n");
  332.                                                         printf("\t\t\t\t   图书信息\n\n\n");
  333.                                                         printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  334.                                                         while(n<booknumber)
  335.                                                         {
  336.                                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  337.                                                                 bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  338.                                                                 n++;
  339.                                                         }
  340.                                                 }
  341.                 }
  342.                 fclose(p);
  343.                 printf("\n\t\t\t      按任意键返回主菜单!");
  344.                 getch();
  345. }


  346. void choice_6_display_high_price()            /*根据价格范围列出图书信息*/
  347. {
  348.         float price;
  349.         FILE *p;
  350.         int n;
  351.         int count=0;
  352.         BOOKINFO bookinfo[M];
  353.         int booknumber;
  354.         system("cls");
  355.         printf("请输入价格:");
  356.         scanf("%f",&price);
  357.         p=fopen("e:\\bookinfo.txt","rb");
  358.         booknumber=0;
  359.         while(!feof(p))
  360.                 {
  361.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  362.                         booknumber++;
  363.                 }
  364.                 booknumber--;
  365.                 fclose(p);
  366.                 if(booknumber==0)
  367.                 {
  368.                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  369.                 }
  370.                 else
  371.                 {
  372.                                 for(n=0;n<booknumber;n++)
  373.                                 {
  374.                                         if(bookinfo[n].price>=price)
  375.                                         count++;
  376.                                 }
  377.                                 if(count==0)
  378.                                 printf("书库中没有比%.1f$价格高的图书!",price);
  379.                                 else
  380.                                 {
  381.                                         printf("价格高于¥%.1f的图书信息如下:\n\n",price);
  382.                                         printf("\t\t\t\t图书信息\n\n\n");
  383.                                         printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  384.                                         for(n=0;n<booknumber;n++)
  385.                                         {
  386.                                                 if(bookinfo[n].price>=price)
  387.                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  388.                                                                 bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  389.                                         }
  390.                                 }
  391.                 }
  392.                 printf("\n\t\t\t      按任意键返回主菜单!");
  393.                 getch();
  394. }


  395. void choice_7_display_according_exitflag()             /*根据存在状态列出图书信息*/
  396. {
  397.         FILE *p;
  398.         int n;
  399.         int count=0;
  400.         BOOKINFO bookinfo[M];
  401.         int booknumber;
  402.         system("cls");
  403.         booknumber=0;
  404.         p=fopen("e:\\bookinfo.txt","rb");
  405.         while(!feof(p))
  406.                 {
  407.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  408.                         booknumber++;
  409.                 }
  410.                 booknumber--;
  411.                 fclose(p);
  412.                 if(booknumber==0)
  413.                 {
  414.                         printf("\n\n\n\t\t\t      书库中没有任何书目存在!\n\n");
  415.                 }
  416.                 else
  417.                 {
  418.                                 for(n=0;n<booknumber;n++)
  419.                                         if(bookinfo[n].isExit!=0)
  420.                                         count++;
  421.                                         if(count==0)
  422.                                         printf("\n\n\n\t\t\t      书库中的书籍全部借出!\n\n");
  423.                                         else
  424.                                         {
  425.                                                 printf("书库中的图书信息如下:\n\n");
  426.                                                 printf("\t\t\t\t   图书信息\n\n\n");
  427.                                                 printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  428.                                                 for(n=0;n<booknumber;n++)
  429.                                                         if(bookinfo[n].isExit!=0)
  430.                                                         {
  431.                                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  432.                                                                         bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  433.                                                         }
  434.                                         }
  435.                 }
  436.                 printf("\n\t\t\t      按任意键返回主菜单!");
  437.                 getch();               
  438. }


  439. void choice_8_change_book()            /*修改图书信息*/
  440. {
  441.         char search[20];
  442.         int n,i;
  443.         FILE *p;
  444.         char choice;
  445.         BOOKINFO newbook;
  446.         BOOKINFO bookinfo[M];
  447.         int booknumber;
  448.         system("cls");
  449.         while(1)
  450.         {
  451.                 printf("注意!请谨慎修改,未完成修改的图书将被视为不合法操作!\a\n\n");
  452.                 printf("输入要修改的书本名称:");
  453.                 scanf("%s",&search);
  454.                 p=fopen("e:\\bookinfo.txt","rb");
  455.                 booknumber=0;
  456.                 while(!feof(p))
  457.                 {
  458.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  459.                         booknumber++;
  460.                 }
  461.                 booknumber--;
  462.                 fclose(p);
  463.                 if(booknumber==0)
  464.                 {
  465.                         printf("\t\t\t      书库中没有任何信息!\n\n");
  466.                         printf("\n\t\t\t      按任意键返回主菜单!");
  467.                         getch();   
  468.                         break;
  469.                 }
  470.                 else
  471.                 {
  472.                         for(n=0;n<booknumber;n++)
  473.                                 if(strcmp(bookinfo[n].name,search)==0)
  474.                                 {
  475.                                         break;
  476.                                 }
  477.                                 if(n>=booknumber)
  478.                                 printf("\n\n\n\t\t\t      没有查到该书的任何信息!\n");
  479.                                 else
  480.                                 {
  481.                                         printf("是否确认需要修改该条书目?(Y/N):");
  482.                                         choice=getch();
  483.                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  484.                                         choice=getch();
  485.                                         if(choice == 'Y'||choice == 'y')
  486.                                         {
  487.                                                 for(i=n;i<booknumber-1;i++)
  488.                                                         bookinfo[i]=bookinfo[i+1];
  489.                                                         booknumber--;
  490.                                                         p=fopen("e:\\bookinfo.txt","wb");
  491.                                                         for(n=0;n<booknumber;n++)
  492.                                                                 fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
  493.                                                                 fclose(p);
  494.                                                                 {
  495.                                                                         printf("\n");
  496.                                                                         printf("输入图书编号:");
  497.                                                                         scanf("%s",newbook.number);
  498.                                                                         printf("输入图书名称:");
  499.                                                                         scanf("%s",newbook.name);
  500.                                                                         printf("输入图书类别:");
  501.                                                                         scanf("%s",newbook.list);
  502.                                                                         printf("输入图书单价:");
  503.                                                                         scanf("%f",newbook.price);
  504.                                                                         printf("输入其出版社:");
  505.                                                                         scanf("%s",newbook.boss);
  506.                                                                         printf("输入图书作者:");
  507.                                                                         scanf("%s",newbook.auther);
  508.                                                                         printf("输入出版时间:");
  509.                                                                         scanf("%s",newbook.time);
  510.                                                                         printf("\n\n是否保存该条书目信息?(Y/N): ");
  511.                                                                         choice=getchar();
  512.                                                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  513.                                                                         choice=getchar();
  514.                                                                         if(choice == 'Y'||choice == 'y')
  515.                                                                         {
  516.                                                                                 p=fopen("e:\\bookinfo.txt","ab");
  517.                                                                                 fwrite(&newbook,sizeof(BOOKINFO),1,p);
  518.                                                                                 fclose(p);
  519.                                                                                 printf("\n\n该条书目已添加到 e:\\bookinfo.txt 文件中!\n\n");
  520.                                                                         }         
  521.                                                                         else
  522.                                                                     {
  523.                                                                             printf("\n该条书目未保存!\n");
  524.                                                                         }
  525.                                                                         printf("\n\n是否继续修改书目?(Y/N): ");
  526.                                                                         choice=getchar();
  527.                                                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  528.                                                                         choice=getchar();
  529.                                                                         if(choice == 'Y'||choice == 'y')
  530.                                                                                 continue;
  531.                                                                         else
  532.                                                                             break;
  533.                                                                 }
  534.                                         }
  535.                                         else
  536.                                                 printf("\n\n该条书目没有被修改!");
  537.                                 }
  538.                                 printf("\n\n是否继续进行修改操作?(Y/N): ");
  539.                                 choice=getchar();
  540.                                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  541.                                 choice=getchar();
  542.                                 if(choice == 'Y'||choice == 'y')
  543.                                         continue;
  544.                             else
  545.                                         break;
  546.                 }
  547.         }
  548. }


  549. void choice_()               /*排序*/
  550. {
  551.         int choice;
  552.         system("cls");
  553.         printf("1: 按价格排序              2:按图书库存排序\n");
  554.         printf("请输入您的选择:");
  555.         scanf("%d",&choice);
  556.         if(choice==1)
  557.         {
  558.                 choice_5_sort_according_name();                /*根据图书价格排序*/
  559.         }
  560.         else if(choice==2)
  561.         {
  562.                 choice_9_sort_according_list();                /*根据图书库存排序*/
  563.         }
  564.         else
  565.         {
  566.                 printf("您输入的命令错误!请核对后再输入!\n\a");
  567.         }
  568. }


  569. int main()
  570. {
  571.         system("color 3F");
  572.         system("title 许志强");
  573.         char choice;
  574.         int pass;
  575.         int i=3;
  576.         FILE *p;
  577.         if((p=fopen("e:\\bookinfo.txt","rb"))==NULL)
  578.         {
  579.                 p=fopen("e:\\bookinfo.txt","wb");
  580.                 fclose(p);
  581.         }
  582.         printf("\n\n\n\n\n");
  583.         printf("\t\t\t欢迎使用呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
  584.         printf("\t\t\t     请输入您的学号(0~9): ");
  585.         while(pass!=123456)
  586.         {
  587.                 scanf("%d",&pass);
  588.                 if(pass!=123456)
  589.                 printf("\t\t\t对不起!你输入的学号有误,您还有%d次机会......\n\a",--i);
  590.                 if(i==0)
  591.                 {
  592.                         printf("\n\n\n");
  593.                         printf("\t\t\t您的学号不存在!请联系图书馆管理员!\n\a");
  594.                         exit(0);
  595.                 }
  596.         }
  597.         if(pass==123456)
  598.         {
  599.                 printf("\n\n\n\n");
  600.                 printf("\t\t\t   学号输入正确,进入系统中......\n\n\n");
  601.                 Sleep(2600);
  602.         }
  603.         getchar();
  604.         system("cls");
  605.         printf("\n\n\n\n\n");
  606.         printf("\t\t\t欢迎进入呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
  607.         printf("\t\t\t\t  按Enter进入系统\n\n");
  608.         time_t tim;                //获取电脑时间
  609.         struct tm *at;  
  610.         char now[80];  
  611.         time(&tim);  
  612.         at=localtime(&tim);       //转为时间结构。
  613.         strftime(now,79,"\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t      星期%w\n\t\t\t\t\t\t\t\t    %H:%M:%S\n\t\t\t\t\t\t\t\t   %Y-%m-%d\n",at);  //输出格式
  614.         printf(now);
  615.         getchar();
  616.         system("cls");
  617.         while(1)
  618.         {
  619.                 system("cls");
  620.                 system("color 3f");
  621.                 printf("\n\n");
  622.                 printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
  623.             printf("\t※                                                          ※\n");
  624.             printf("\t※                    呼伦贝尔学院欢迎您\t\t    ※\n");
  625.             printf("\t※                                                          ※\n");
  626.             printf("\t※                     图书信息管理系统\t\t\t    ※\n");
  627.             printf("\t※                                                          ※\n");
  628.             printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
  629.                 printf("\t\t\t     * * * * * * * * * * *\n");        
  630.                 printf("\t\t\t     *  1 输入图书信息   *\n");
  631.                 printf("\t\t\t     *  2 显示全部信息   *\n");
  632.                 printf("\t\t\t     *  3 根据名称查询   *\n");
  633.                 printf("\t\t\t     *  4 根据名称删除   *\n");
  634.                 printf("\t\t\t     *  5 图书进行排序   *\n");
  635.                 printf("\t\t\t     *  6 统计图书数量   *\n");
  636.                 printf("\t\t\t     *  7 图书状态信息   *\n");
  637.                 printf("\t\t\t     *  8 修改图书信息   *\n");
  638.                 printf("\t\t\t     *  9 退出图书系统   *\n");
  639.                 printf("\t\t\t     * * * * * * * * * * *\n\n");
  640.                 printf("\t\t\t     请输入您的选择:");
  641.                 scanf("%d",&choice);
  642.                
  643.                 switch(choice)
  644.                 {
  645.                         case 1:        choice_1_input_new();                       break;       /*输入新进的图书信息*/        
  646.                         case 2:        choice_2_display_all();                break;       /*显示全部图书信息*/
  647.                         case 3:        choice_3_search_according_name();      break;       /*根据图书名称显示图书的信息*/               
  648.                         case 4: choice_4_delete_according_name();      break;       /*根据图书名称对图书信息进行删除*/            
  649.                         case 5: choice_();                             break;       /*排序*/            
  650.                         case 6: choice_6_display_high_price();         break;       /*根据价格范围列出图书信息*/               
  651.                         case 7: choice_7_display_according_exitflag(); break;       /*根据存在状态列出图书信息*/
  652.                         case 8: choice_8_change_book();                break;       /*修改图书信息*/
  653.                         case 9: system("cls");  printf("\n\t\t\t     * * * * * * * *\n");
  654.                                                                         printf("\t\t\t     *             *\n");
  655.                                                                         printf("\t\t\t     *  谢谢使用!  *\n");
  656.                                                                         printf("\t\t\t     *             *\n");
  657.                                                                         printf("\t\t\t     * * * * * * * *\n");
  658.                                                                         printf("\n\n\t\t\t      按任意键退出!\n");exit(0);                           
  659.                                                                                                                         break;       /*退出*/
  660.                         default : printf("输入错误\n"); break;            
  661.                 }
  662.         }
  663.         return 0;
  664. }
  665. #include <stdio.h>
  666. #include <stdlib.h>
  667. #include <string.h>
  668. #include <time.h>
  669. #define M 1000

  670. void choice_1_input_new();                    /*输入新进的图书信息*/
  671. void choice_2_display_all();                  /*显示全部图书信息*/
  672. void choice_3_search_according_name();        /*根据图书名称显示图书的信息*/
  673. void choice_4_delete_according_name();        /*根据图书名称对图书信息进行删除*/
  674. void choice_9_sort_according_list();          /*根据图书库存排序*/
  675. void choice_5_sort_according_name();          /*根据图书价格排序*/
  676. void choice_6_display_high_price();           /*根据价格范围列出图书信息*/
  677. void choice_7_display_according_exitflag();   /*根据存在状态列出图书信息*/
  678. void choice_8_change_book();                  /*修改图书信息*/


  679. typedef struct bookinfo
  680. {
  681.         char number[15];   /*产品编号*/
  682.         char name[30];     /*产品名称*/
  683.         char auther[30];   /*作者*/
  684.         char list[20];     /*类别*/
  685.         float price;       /*单价*/
  686.         char boss[15];     /*出版社信息*/
  687.         char time[10];     /*出版时间*/
  688.         int isExit;        /*库存存在状态*/
  689. }BOOKINFO;


  690. void choice_1_input_new()       /*输入新进的图书信息*/
  691. {
  692.         char choice;
  693.     FILE *p;
  694.     BOOKINFO newbook;
  695.         system("cls") ;
  696.         while(1)
  697.         {
  698.                 printf("输入图书编号:");
  699.                 scanf("%s",&newbook.number);
  700.                 printf("输入图书名称:");
  701.                 scanf("%s",&newbook.name);
  702.                 printf("输入图书类别:");
  703.                 scanf("%s",&newbook.list);
  704.                 printf("输入图书单价:");
  705.                 scanf("%f",&newbook.price);
  706.                 printf("输入其出版社:");
  707.                 scanf("%s",&newbook.boss);
  708.                 printf("输入图书作者:");
  709.                 scanf("%s",&newbook.auther);
  710.                 printf("输入出版时间:");
  711.                 scanf("%s",&newbook.time);
  712.                 printf("输入需要添加的图书数目:");
  713.                 scanf("%d",&newbook.isExit);
  714.                 printf("是否保存该条数目?(Y/N):");
  715.                 choice=getchar();
  716.         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  717.         choice=getchar();
  718.         if(choice == 'Y'||choice == 'y')
  719.         {
  720.                 p=fopen("e:\\bookinfo.txt","ab");
  721.                         fwrite(&newbook,sizeof(BOOKINFO),1,p);
  722.             fclose(p);
  723.             printf("\n该条书目已添加到e:\\bookinfo.txt 文件中!\n");
  724.                 }
  725.                 else
  726.                 {
  727.                         printf("\n该条书目未保存!\n");
  728.                 }
  729.                 printf("\n是否继续添加书目?(Y/N):");
  730.                 choice=getchar();
  731.                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  732.                 choice=getchar();
  733.                 if(choice == 'Y'||choice == 'y')
  734.                     continue;
  735.                 else
  736.                     break;
  737.         }
  738. }

  739. void choice_2_display_all()             /*显示全部图书信息*/
  740. {
  741.         FILE *p;
  742.         int n;
  743.         BOOKINFO bookinfo[M];
  744.         int booknumber=0;
  745.         system("cls");
  746.         p=fopen("e:\\bookinfo.txt","rb");
  747.         while(!feof(p))
  748.         {
  749.                 fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  750.                 booknumber++;
  751.         }
  752.         fclose(p);
  753.         booknumber--;
  754.         if(booknumber==0)
  755.         {
  756.                 printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  757.         }
  758.         else
  759.         {
  760.                 n=0;
  761.                 printf("图书信息如下:\n\n\n");
  762.                 printf("\t\t\t\t   图书信息\n\n\n");
  763.                 printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  764.                 while(n<booknumber)
  765.                 {
  766.                         printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
  767.                         bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  768.                         n++;
  769.                 }
  770.         }
  771.         printf("\n\n\n\t\t\t      按任意键返回主菜单!");
  772.         getch();
  773. }


  774. void choice_3_search_according_name()             /*根据图书名称显示图书的信息*/
  775. {
  776.         char search[20];
  777.         int n;
  778.         FILE *p;
  779.         char choice;
  780.         BOOKINFO bookinfo[M];
  781.         int booknumber=0;
  782.         system("cls");
  783.         p=fopen("e:\\bookinfo.txt","rb");
  784.         while(!feof(p))
  785.         {
  786.                 fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  787.                 booknumber++;
  788.         }
  789.         booknumber--;
  790.         fclose(p);
  791.         while(1)
  792.         {
  793.                 printf("输入要查询的书本名称:");
  794.                 scanf("%s",&search);
  795.                 if(booknumber==0)
  796.                 {
  797.                         printf("\t\t\t      书库中没有任何信息!\n\n\n");
  798.                         printf("\t\t\t      按任意键返回主菜单!");
  799.                         getch();
  800.                         break;
  801.                 }
  802.                 else
  803.                 {
  804.                         for(n=0;n<booknumber;n++)
  805.                                 if(strcmp(bookinfo[n].name,search)==0)
  806.                                 {
  807.                                         printf("\n\n\t\t\t该书的详细信息如下:\n\n\n");
  808.                                         printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  809.                                        bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  810.                                 break;      
  811.                                 }
  812.                                 if(n>=booknumber)
  813.                                 printf("\n\n\t\t\t没有查到该书的任何信息!\n");
  814.                                 printf("\n\n是否继续查询?(Y/N):");
  815.                                 choice=getchar();
  816.                                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  817.                                 choice=getchar();
  818.                                 if(choice == 'Y'||choice == 'y')
  819.                                     continue;
  820.                                 else
  821.                                     break;
  822.                 }
  823.         }
  824. }


  825. void choice_4_delete_according_name()            /*根据图书名称对图书信息进行删除*/
  826. {
  827.         char search[20];
  828.         int n,i;
  829.         FILE *p;
  830.         char choice;
  831.         BOOKINFO bookinfo[M];
  832.         int booknumber;
  833.         system("cls");
  834.         while(1)
  835.         {
  836.                 printf("输入要删除的书本名称:");
  837.                 scanf("%s",&search);
  838.                 p=fopen("e:\\bookinfo.txt","rb");
  839.                 booknumber=0;
  840.                 while(!feof(p))
  841.                 {
  842.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  843.                         booknumber++;
  844.                 }
  845.                 booknumber--;
  846.                 fclose(p);
  847.                 if(booknumber==0)
  848.                 {
  849.                         printf("\t\t\t      书库中没有任何信息!\n\n\n");
  850.                         printf("\t\t\t      按任意键返回主菜单!");
  851.                         getch();
  852.                         break;
  853.                 }
  854.                 else
  855.                 {
  856.                         for(n=0;n<booknumber;n++)
  857.                                 if(strcmp(bookinfo[n].name,search)==0)
  858.                                 {
  859.                                 break;      
  860.                                 }
  861.                                 if(n>=booknumber)
  862.                                 printf("\t\t\t    没有查到该书的任何信息!\n\n");
  863.                                 else
  864.                                 {
  865.                                         printf("是否确认需要删除该条书目?(Y/N):");
  866.                                         choice=getchar();
  867.                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  868.                                         choice=getchar();
  869.                                         if(choice == 'Y'||choice == 'y')
  870.                                         {
  871.                                                 for(i=n;i<booknumber-1;i++)
  872.                                                         bookinfo[i]=bookinfo[i+1];
  873.                                                         booknumber--;
  874.                                                         p=fopen("e:\\bookinfo.txt","wb");
  875.                                                         for(n=0;n<booknumber;n++)
  876.                                                                 fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
  877.                                                                 fclose(p);
  878.                                                                 printf("\n\n\n\t\t\t\t       删除成功!\n");
  879.                                         }
  880.                                         else
  881.                                                 printf("\n\n该条书目没有被删除!");
  882.                                 }
  883.                                 printf("\n\n是否继续进行删除操作?(Y/N):");
  884.                                 choice=getchar();
  885.                                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  886.                                 choice=getchar();
  887.                                 if(choice == 'Y'||choice == 'y')
  888.                                     continue;
  889.                                 else
  890.                                     break;
  891.                 }
  892.     }
  893. }

  894. void choice_9_sort_according_list()                /*根据图书库存排序*/
  895. {
  896.         FILE *p;
  897.         int m,n;
  898.         BOOKINFO temp;
  899.         BOOKINFO bookinfo[M];
  900.         int booknumber;
  901.         p=fopen("e:\\bookinfo.txt","rb");
  902.         booknumber=0;
  903.         system("cls");
  904.         while(!feof(p))
  905.                 {
  906.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  907.                         booknumber++;
  908.                 }
  909.                 booknumber--;
  910.                 fclose(p);
  911.                 if(booknumber==0)
  912.                 {
  913.                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  914.                 }
  915.                 else
  916.                 {
  917.                         for(m=0;m<booknumber-1;m++)
  918.                                 for(n=m+1;n<booknumber;n++)
  919.                                         if(bookinfo[m].isExit<bookinfo[n].isExit)
  920.                                         {
  921.                                                 temp=bookinfo[m];
  922.                                                 bookinfo[m]=bookinfo[n];
  923.                                                 bookinfo[n]=temp;
  924.                                         }
  925.                                         p=fopen("e:\\bookinfo.txt","wb");
  926.                                         for(m=0;m<booknumber;m++)
  927.                                                 fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
  928.                                                 fclose(p);
  929.                                                 printf("\n\n完成排序!\n\n");
  930.                                                 if(booknumber==0)
  931.                                                 {
  932.                                                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  933.                                                 }
  934.                                                 else
  935.                                                 {
  936.                                                         n=0;
  937.                                                         printf("图书信息如下:\n\n");
  938.                                                         printf("\t\t\t\t   图书信息\n\n\n");
  939.                                                         printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  940.                                                         while(n<booknumber)
  941.                                                         {
  942.                                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  943.                                                                 bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  944.                                                                 n++;
  945.                                                         }
  946.                                                 }
  947.                 }
  948.                 fclose(p);
  949.                 printf("\n\t\t\t      按任意键返回主菜单!");
  950.                 getch();
  951. }


  952. void choice_5_sort_according_name()                /*根据图书价格排序*/
  953. {
  954.         FILE *p;
  955.         int m,n;
  956.         BOOKINFO temp;
  957.         BOOKINFO bookinfo[M];
  958.         int booknumber;
  959.         p=fopen("e:\\bookinfo.txt","rb");
  960.         booknumber=0;
  961.         system("cls");
  962.         while(!feof(p))
  963.                 {
  964.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  965.                         booknumber++;
  966.                 }
  967.                 booknumber--;
  968.                 fclose(p);
  969.                 if(booknumber==0)
  970.                 {
  971.                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  972.                 }
  973.                 else
  974.                 {
  975.                         for(m=0;m<booknumber-1;m++)
  976.                                 for(n=m+1;n<booknumber;n++)
  977.                                         if(bookinfo[m].price>bookinfo[n].price)
  978.                                         {
  979.                                                 temp=bookinfo[m];
  980.                                                 bookinfo[m]=bookinfo[n];
  981.                                                 bookinfo[n]=temp;
  982.                                         }
  983.                                         p=fopen("e:\\bookinfo.txt","wb");
  984.                                         for(m=0;m<booknumber;m++)
  985.                                                 fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
  986.                                                 fclose(p);
  987.                                                 printf("\n\n完成排序!\n\n");
  988.                                                 if(booknumber==0)
  989.                                                 {
  990.                                                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  991.                                                 }
  992.                                                 else
  993.                                                 {
  994.                                                         n=0;
  995.                                                         printf("图书信息如下:\n\n");
  996.                                                         printf("\t\t\t\t   图书信息\n\n\n");
  997.                                                         printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  998.                                                         while(n<booknumber)
  999.                                                         {
  1000.                                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  1001.                                                                 bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  1002.                                                                 n++;
  1003.                                                         }
  1004.                                                 }
  1005.                 }
  1006.                 fclose(p);
  1007.                 printf("\n\t\t\t      按任意键返回主菜单!");
  1008.                 getch();
  1009. }


  1010. void choice_6_display_high_price()            /*根据价格范围列出图书信息*/
  1011. {
  1012.         float price;
  1013.         FILE *p;
  1014.         int n;
  1015.         int count=0;
  1016.         BOOKINFO bookinfo[M];
  1017.         int booknumber;
  1018.         system("cls");
  1019.         printf("请输入价格:");
  1020.         scanf("%f",&price);
  1021.         p=fopen("e:\\bookinfo.txt","rb");
  1022.         booknumber=0;
  1023.         while(!feof(p))
  1024.                 {
  1025.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  1026.                         booknumber++;
  1027.                 }
  1028.                 booknumber--;
  1029.                 fclose(p);
  1030.                 if(booknumber==0)
  1031.                 {
  1032.                         printf("\n\n\t\t\t       没有任何图书信息!\n\n");
  1033.                 }
  1034.                 else
  1035.                 {
  1036.                                 for(n=0;n<booknumber;n++)
  1037.                                 {
  1038.                                         if(bookinfo[n].price>=price)
  1039.                                         count++;
  1040.                                 }
  1041.                                 if(count==0)
  1042.                                 printf("书库中没有比%.1f$价格高的图书!",price);
  1043.                                 else
  1044.                                 {
  1045.                                         printf("价格高于¥%.1f的图书信息如下:\n\n",price);
  1046.                                         printf("\t\t\t\t图书信息\n\n\n");
  1047.                                         printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  1048.                                         for(n=0;n<booknumber;n++)
  1049.                                         {
  1050.                                                 if(bookinfo[n].price>=price)
  1051.                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  1052.                                                                 bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  1053.                                         }
  1054.                                 }
  1055.                 }
  1056.                 printf("\n\t\t\t      按任意键返回主菜单!");
  1057.                 getch();
  1058. }


  1059. void choice_7_display_according_exitflag()             /*根据存在状态列出图书信息*/
  1060. {
  1061.         FILE *p;
  1062.         int n;
  1063.         int count=0;
  1064.         BOOKINFO bookinfo[M];
  1065.         int booknumber;
  1066.         system("cls");
  1067.         booknumber=0;
  1068.         p=fopen("e:\\bookinfo.txt","rb");
  1069.         while(!feof(p))
  1070.                 {
  1071.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  1072.                         booknumber++;
  1073.                 }
  1074.                 booknumber--;
  1075.                 fclose(p);
  1076.                 if(booknumber==0)
  1077.                 {
  1078.                         printf("\n\n\n\t\t\t      书库中没有任何书目存在!\n\n");
  1079.                 }
  1080.                 else
  1081.                 {
  1082.                                 for(n=0;n<booknumber;n++)
  1083.                                         if(bookinfo[n].isExit!=0)
  1084.                                         count++;
  1085.                                         if(count==0)
  1086.                                         printf("\n\n\n\t\t\t      书库中的书籍全部借出!\n\n");
  1087.                                         else
  1088.                                         {
  1089.                                                 printf("书库中的图书信息如下:\n\n");
  1090.                                                 printf("\t\t\t\t   图书信息\n\n\n");
  1091.                                                 printf("编号    名称      单价     作者    图书库存    出版社    出版时间    图书类别\n\n");
  1092.                                                 for(n=0;n<booknumber;n++)
  1093.                                                         if(bookinfo[n].isExit!=0)
  1094.                                                         {
  1095.                                                                 printf("%-6s%-12s%-8.1f%s       %-2d    %s    %s        %s\n",bookinfo[n].number,bookinfo[n].name,
  1096.                                                                         bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
  1097.                                                         }
  1098.                                         }
  1099.                 }
  1100.                 printf("\n\t\t\t      按任意键返回主菜单!");
  1101.                 getch();               
  1102. }


  1103. void choice_8_change_book()            /*修改图书信息*/
  1104. {
  1105.         char search[20];
  1106.         int n,i;
  1107.         FILE *p;
  1108.         char choice;
  1109.         BOOKINFO newbook;
  1110.         BOOKINFO bookinfo[M];
  1111.         int booknumber;
  1112.         system("cls");
  1113.         while(1)
  1114.         {
  1115.                 printf("注意!请谨慎修改,未完成修改的图书将被视为不合法操作!\a\n\n");
  1116.                 printf("输入要修改的书本名称:");
  1117.                 scanf("%s",&search);
  1118.                 p=fopen("e:\\bookinfo.txt","rb");
  1119.                 booknumber=0;
  1120.                 while(!feof(p))
  1121.                 {
  1122.                         fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
  1123.                         booknumber++;
  1124.                 }
  1125.                 booknumber--;
  1126.                 fclose(p);
  1127.                 if(booknumber==0)
  1128.                 {
  1129.                         printf("\t\t\t      书库中没有任何信息!\n\n");
  1130.                         printf("\n\t\t\t      按任意键返回主菜单!");
  1131.                         getch();   
  1132.                         break;
  1133.                 }
  1134.                 else
  1135.                 {
  1136.                         for(n=0;n<booknumber;n++)
  1137.                                 if(strcmp(bookinfo[n].name,search)==0)
  1138.                                 {
  1139.                                         break;
  1140.                                 }
  1141.                                 if(n>=booknumber)
  1142.                                 printf("\n\n\n\t\t\t      没有查到该书的任何信息!\n");
  1143.                                 else
  1144.                                 {
  1145.                                         printf("是否确认需要修改该条书目?(Y/N):");
  1146.                                         choice=getch();
  1147.                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  1148.                                         choice=getch();
  1149.                                         if(choice == 'Y'||choice == 'y')
  1150.                                         {
  1151.                                                 for(i=n;i<booknumber-1;i++)
  1152.                                                         bookinfo[i]=bookinfo[i+1];
  1153.                                                         booknumber--;
  1154.                                                         p=fopen("e:\\bookinfo.txt","wb");
  1155.                                                         for(n=0;n<booknumber;n++)
  1156.                                                                 fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
  1157.                                                                 fclose(p);
  1158.                                                                 {
  1159.                                                                         printf("\n");
  1160.                                                                         printf("输入图书编号:");
  1161.                                                                         scanf("%s",newbook.number);
  1162.                                                                         printf("输入图书名称:");
  1163.                                                                         scanf("%s",newbook.name);
  1164.                                                                         printf("输入图书类别:");
  1165.                                                                         scanf("%s",newbook.list);
  1166.                                                                         printf("输入图书单价:");
  1167.                                                                         scanf("%f",newbook.price);
  1168.                                                                         printf("输入其出版社:");
  1169.                                                                         scanf("%s",newbook.boss);
  1170.                                                                         printf("输入图书作者:");
  1171.                                                                         scanf("%s",newbook.auther);
  1172.                                                                         printf("输入出版时间:");
  1173.                                                                         scanf("%s",newbook.time);
  1174.                                                                         printf("\n\n是否保存该条书目信息?(Y/N): ");
  1175.                                                                         choice=getchar();
  1176.                                                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  1177.                                                                         choice=getchar();
  1178.                                                                         if(choice == 'Y'||choice == 'y')
  1179.                                                                         {
  1180.                                                                                 p=fopen("e:\\bookinfo.txt","ab");
  1181.                                                                                 fwrite(&newbook,sizeof(BOOKINFO),1,p);
  1182.                                                                                 fclose(p);
  1183.                                                                                 printf("\n\n该条书目已添加到 e:\\bookinfo.txt 文件中!\n\n");
  1184.                                                                         }         
  1185.                                                                         else
  1186.                                                                     {
  1187.                                                                             printf("\n该条书目未保存!\n");
  1188.                                                                         }
  1189.                                                                         printf("\n\n是否继续修改书目?(Y/N): ");
  1190.                                                                         choice=getchar();
  1191.                                                                         while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  1192.                                                                         choice=getchar();
  1193.                                                                         if(choice == 'Y'||choice == 'y')
  1194.                                                                                 continue;
  1195.                                                                         else
  1196.                                                                             break;
  1197.                                                                 }
  1198.                                         }
  1199.                                         else
  1200.                                                 printf("\n\n该条书目没有被修改!");
  1201.                                 }
  1202.                                 printf("\n\n是否继续进行修改操作?(Y/N): ");
  1203.                                 choice=getchar();
  1204.                                 while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
  1205.                                 choice=getchar();
  1206.                                 if(choice == 'Y'||choice == 'y')
  1207.                                         continue;
  1208.                             else
  1209.                                         break;
  1210.                 }
  1211.         }
  1212. }


  1213. void choice_()               /*排序*/
  1214. {
  1215.         int choice;
  1216.         system("cls");
  1217.         printf("1: 按价格排序              2:按图书库存排序\n");
  1218.         printf("请输入您的选择:");
  1219.         scanf("%d",&choice);
  1220.         if(choice==1)
  1221.         {
  1222.                 choice_5_sort_according_name();                /*根据图书价格排序*/
  1223.         }
  1224.         else if(choice==2)
  1225.         {
  1226.                 choice_9_sort_according_list();                /*根据图书库存排序*/
  1227.         }
  1228.         else
  1229.         {
  1230.                 printf("您输入的命令错误!请核对后再输入!\n\a");
  1231.         }
  1232. }


  1233. int main()
  1234. {
  1235.         system("color 3F");
  1236.         system("title ***");
  1237.         char choice;
  1238.         int pass;
  1239.         int i=3;
  1240.         FILE *p;
  1241.         if((p=fopen("e:\\bookinfo.txt","rb"))==NULL)
  1242.         {
  1243.                 p=fopen("e:\\bookinfo.txt","wb");
  1244.                 fclose(p);
  1245.         }
  1246.         printf("\n\n\n\n\n");
  1247.         printf("\t\t\t欢迎使用呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
  1248.         printf("\t\t\t     请输入您的学号(0~9): ");
  1249.         while(pass!=123456)
  1250.         {
  1251.                 scanf("%d",&pass);
  1252.                 if(pass!=123456)
  1253.                 printf("\t\t\t对不起!你输入的学号有误,您还有%d次机会......\n\a",--i);
  1254.                 if(i==0)
  1255.                 {
  1256.                         printf("\n\n\n");
  1257.                         printf("\t\t\t您的学号不存在!请联系图书馆管理员!\n\a");
  1258.                         exit(0);
  1259.                 }
  1260.         }
  1261.         if(pass==123456)
  1262.         {
  1263.                 printf("\n\n\n\n");
  1264.                 printf("\t\t\t   学号输入正确,进入系统中......\n\n\n");
  1265.                 Sleep(2600);
  1266.         }
  1267.         getchar();
  1268.         system("cls");
  1269.         printf("\n\n\n\n\n");
  1270.         printf("\t\t\t欢迎进入呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
  1271.         printf("\t\t\t\t  按Enter进入系统\n\n");
  1272.         time_t tim;                //获取电脑时间
  1273.         struct tm *at;  
  1274.         char now[80];  
  1275.         time(&tim);  
  1276.         at=localtime(&tim);       //转为时间结构。
  1277.         strftime(now,79,"\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t      星期%w\n\t\t\t\t\t\t\t\t    %H:%M:%S\n\t\t\t\t\t\t\t\t   %Y-%m-%d\n",at);  //输出格式
  1278.         printf(now);
  1279.         getchar();
  1280.         system("cls");
  1281.         while(1)
  1282.         {
  1283.                 system("cls");
  1284.                 system("color 3f");
  1285.                 printf("\n\n");
  1286.                 printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
  1287.             printf("\t※                                                          ※\n");
  1288.             printf("\t※                    呼伦贝尔学院欢迎您\t\t    ※\n");
  1289.             printf("\t※                                                          ※\n");
  1290.             printf("\t※                     图书信息管理系统\t\t\t    ※\n");
  1291.             printf("\t※                                                          ※\n");
  1292.             printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
  1293.                 printf("\t\t\t     * * * * * * * * * * *\n");        
  1294.                 printf("\t\t\t     *  1 输入图书信息   *\n");
  1295.                 printf("\t\t\t     *  2 显示全部信息   *\n");
  1296.                 printf("\t\t\t     *  3 根据名称查询   *\n");
  1297.                 printf("\t\t\t     *  4 根据名称删除   *\n");
  1298.                 printf("\t\t\t     *  5 图书进行排序   *\n");
  1299.                 printf("\t\t\t     *  6 统计图书数量   *\n");
  1300.                 printf("\t\t\t     *  7 图书状态信息   *\n");
  1301.                 printf("\t\t\t     *  8 修改图书信息   *\n");
  1302.                 printf("\t\t\t     *  9 退出图书系统   *\n");
  1303.                 printf("\t\t\t     * * * * * * * * * * *\n\n");
  1304.                 printf("\t\t\t     请输入您的选择:");
  1305.                 scanf("%d",&choice);
  1306.                
  1307.                 switch(choice)
  1308.                 {
  1309.                         case 1:        choice_1_input_new();                       break;       /*输入新进的图书信息*/        
  1310.                         case 2:        choice_2_display_all();                break;       /*显示全部图书信息*/
  1311.                         case 3:        choice_3_search_according_name();      break;       /*根据图书名称显示图书的信息*/               
  1312.                         case 4: choice_4_delete_according_name();      break;       /*根据图书名称对图书信息进行删除*/            
  1313.                         case 5: choice_();                             break;       /*排序*/            
  1314.                         case 6: choice_6_display_high_price();         break;       /*根据价格范围列出图书信息*/               
  1315.                         case 7: choice_7_display_according_exitflag(); break;       /*根据存在状态列出图书信息*/
  1316.                         case 8: choice_8_change_book();                break;       /*修改图书信息*/
  1317.                         case 9: system("cls");  printf("\n\t\t\t     * * * * * * * *\n");
  1318.                                                                         printf("\t\t\t     *             *\n");
  1319.                                                                         printf("\t\t\t     *  谢谢使用!  *\n");
  1320.                                                                         printf("\t\t\t     *             *\n");
  1321.                                                                         printf("\t\t\t     * * * * * * * *\n");
  1322.                                                                         printf("\n\n\t\t\t      按任意键退出!\n");exit(0);                           
  1323.                                                                                                                         break;       /*退出*/
  1324.                         default : printf("输入错误\n"); break;            
  1325.                 }
  1326.         }
  1327.         return 0;
  1328. }
复制代码
回复

使用道具 举报

ID:229361 发表于 2019-1-21 13:54 | 显示全部楼层
谢谢楼主的分享,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表