现在的位置: 首页 > 综合 > 正文

课程设计—图书登记管理系统

2013年10月02日 ⁄ 综合 ⁄ 共 7916字 ⁄ 字号 评论关闭

图书登记管理系统应该具有下列功能:
(1)、 通过键盘输入某本图书的信息;
(2) 、给定图书编号,显示该本图书的信息;
(3) 、给定作者姓名,显示所有该作者编写的图书信息;
(4) 、给定出版社,显示该出版社的所有图书信息;
(5) 、给定图书编号,删除该本图书的信息;
(6) 、提供一些统计各类信息的功能。

程序完整的实现代码如下:

  1. #include "stdio.h"
      
  2. #include "stdlib.h"
      
  3. #include "string.h"
      
  4. typedef struct book  
  5. {  
  6.     int book_id;          //图书编号
      
  7.     char book_name[20];   //图书名字
      
  8.     char name[20];        //作者姓名
      
  9.     char press[20];       //出版社
      
  10.     struct book *next;  
  11. }book;  
  12. book *head=NULL;  
  13. int length;   //链表的长度
      
  14.   
  15. void create()  
  16. {  
  17.     book *p1,*p2;  
  18.     length=0;  
  19.     p1=(book *)malloc(sizeof(book));  
  20.     p1->book_id=-1;  
  21.     if(head==NULL)  
  22.         head=p1;  
  23.     printf("请输入图书的编号、名字、作者姓名、出版社信息:\n");  
  24.     while(1)  //图书编号为0的时候退出
      
  25.     {  
  26.         p2=(book *)malloc(sizeof(book));  
  27.         scanf("%d %s %s %s",&p2->book_id,p2->book_name,p2->name,p2->press); //输入图书信息
      
  28.         if(p2->book_id==0)  
  29.         {  
  30.             printf("图书信息输入完成!\n");  
  31.             break;  
  32.         }  
  33.         length++; //链表的长度
      
  34.         p1->next=p2;  
  35.         p2->next=NULL;  
  36.         p1=p1->next;  
  37.     }  
  38.     return ;  
  39. }  
  40.   
  41. void display()  
  42. {  
  43.     book *p=head->next;  
  44.     printf("链表中所有的图书信息如下:\n");  
  45.     while(p!=NULL)  
  46.     {  
  47.         printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);  
  48.         p=p->next;  
  49.     }  
  50.     return ;  
  51. }  
  52. void search()  
  53. {  
  54.     int num,x,flag1=0,flag2=0;  
  55.     char name[20],press[20];  
  56.     book *p=head->next;  
  57.     printf("1、根据图书编号进行查找\n");  
  58.     printf("2、根据作者姓名进行查找\n");  
  59.     printf("3、根据出版社进行查找\n");  
  60.     printf("请选择功能:");  
  61.     scanf("%d",&x);  
  62.     if(x==1)  
  63.     {  
  64.         printf("需要查找的图书编号为:");  
  65.         scanf("%d",&num);  
  66.   
  67.         while(p!=NULL)  
  68.         {  
  69.   
  70.             if(p->book_id==num)  
  71.             {  
  72.                 printf("图书编号为%d的图书的信息如下:\n",num);  
  73.                 printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);  
  74.                 return;  
  75.             }     
  76.             p=p->next;  
  77.         }  
  78.         if(p==NULL)  
  79.             printf("无此记录!\n");  
  80.     }  
  81.     else if(x==2)  
  82.     {  
  83.         printf("需要查找的作者姓名为:");  
  84.         scanf("%s",name);  
  85.         while(p!=NULL)  
  86.         {  
  87.             if(strcmp(p->name,name)==0)  
  88.             {  
  89.                 if(flag1==0)  
  90.                     printf("作者%s编写的图书信息如下:\n",name);  
  91.                 flag1=1;  
  92.                 printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);  
  93.             }  
  94.             p=p->next;  
  95.         }  
  96.         if(flag1==0)  
  97.             printf("图书馆没有作者%s编写的图书!\n",name);  
  98.     }  
  99.     else if(x==3)  
  100.     {  
  101.         printf("需要查找的出版社为:");  
  102.         scanf("%s",press);  
  103.         while(p!=NULL)  
  104.         {  
  105.             if(strcmp(p->press,press)==0)  
  106.             {  
  107.                 if(flag2==0)  
  108.                     printf("出版社为%s编写的图书信息如下:\n",press);  
  109.                 flag2=1;  
  110.                 printf("%d %s %s %s\n",p->book_id,p->book_name,p->name,p->press);  
  111.             }  
  112.             p=p->next;  
  113.         }  
  114.         if(flag2==0)  
  115.             printf("图书馆没有出版社%s编写的图书!\n",press);  
  116.     }  
  117.     return ;  
  118. }  
  119.   
  120. void Delete()  
  121. {  
  122.     int num;  
  123.     book *p,*q;  
  124.     q=head,p=head->next;  
  125.     printf("请输入要删除的图书编号:\n");  
  126.     scanf("%d",&num);  
  127.   
  128.     while(p!=NULL)  
  129.     {  
  130.         if(p->book_id==num)  
  131.         {  
  132.             q->next=p->next;  
  133.             free(p);  
  134.             length--;  
  135.             printf("删除成功!\n");  
  136.             return ;  
  137.         }  
  138.         p=p->next;  
  139.         q=q->next;  
  140.     }  
  141.     if(p==NULL)  
  142.     {  
  143.         printf("找不到要删除的图书编号!\n");  
  144.         return ;  
  145.     }  
  146. }  
  147. void menu()  
  148. {  
  149.     printf("________________________________________________________________\n");  
  150.     printf("|               图书登记管理系统                               |\n");  
  151.     printf("|               0、 退出系统                                   |\n");  
  152.     printf("|               1、 输入图书信息                               |\n");  
  153.     printf("|               2、 显示图书信息                               |\n");  
  154.     printf("|               3、 查询图书信息                               |\n");  
  155.     printf("|               4、 删除图书信息                               |\n");  
  156.     printf("________________________________________________________________\n");  
  157.     return ;  
  158. }  
  159. int main(void)  
  160. {  
  161.     int a;  
  162.     menu();  
  163.     while(1)  
  164.     {  
  165.         printf("请选择相应的功能:");  
  166.         scanf("%d",&a);  
  167.         switch(a)  
  168.         {  
  169.         case 0:  
  170.             return 0;  
  171.         case 1:  
  172.             create();  
  173.             menu();  
  174.             break;  
  175.         case 2:  
  176.             if(head)  
  177.             {  
  178.                 display();  
  179.                 menu();  
  180.             }  
  181.             else  
  182.             {  
  183.                 printf("图书信息为空,请先输入图书信息!\n");  
  184.                 menu();  
  185.             }  
  186.             break;  
  187.         case 3:  
  188.             if(head)  
  189.             {  
  190.                 search();  
  191.                 menu();  
  192.             }  
  193.             else  
  194.             {  
  195.                 printf("图书信息为空,请先输入图书信息!\n");  
  196.                 menu();  
  197.             }  
  198.             break;  
  199.         case 4:  
  200.             if(head)  
  201.             {  
  202.                 Delete();  
  203.                 menu();  
  204.             }  
  205.             else  
  206.             {  
  207.                 printf("图书信息为空,请先输入图书信息!\n");  
  208.                 menu();  
  209.             }  
  210.             break;  
  211.         default:  
  212.             break;  
  213.         }  
  214.     }  
  215.     system("pause");  
  216.     return 0;  
  217. }  

 

抱歉!评论已关闭.