图书登记管理系统

 图书登记管理系统应该具有下列功能:
(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. }  
1.强化和巩固理论基础,掌握数据库编程的基本技巧; 2.要求用C/C++语言或其它语言及相应开发环境,实现一个小型完整程序的设计与开发; 3.巩固深化所学课程的知识,培养学生运用知识,分析和解决实际问题的能力。 系统概述: 1.图书管理: 每种图书都有书名、书号(ISBN)、一名或多名作者(译者)、出版社、定价和内容简介。图书信息登入、查询和维护。 2.借书证管理,包括申请、注销借书证,查询借书证持有人等。借书证记录有借阅者的姓名、所在单位、职业等。 3.凭借书证借书,每次最多能借8本书。借书期限最长为30天。 4.借还图书、资料的登记、超期处理,超期拒借等。 5.图书、资料查询,借、还图书和资料情况查询。 6.图书、资料借阅情况的统计分析,拒此作为图书图书、资料订够的依据之一。 设计要求: 1.进行需求分析,编写数据字典。 2.设计E-R图。 3.实现新进图书的数据录入。 4.实现对所有购进图书的分类查询和分类统计。 5.能够按书名、作者等分类查询现有图书的数量。 6.记录借阅者的个人资料和所借图书的书名、书号数据等。 2程序的主要功能 2.1添加功能 添加一本图书的基本信息,包括书名、书号(ISBN)、一名或多名作者(译者)、出版社、定价和内容简介。 添加图书证的基本信息,包括姓名、所在单位、职业。 添加图书借阅的基本信息,包括书号,借书证号,借书日期,应还书日期。 2.2删除功能 删除一本图书的基本信息,删除借书证的基本信息,删除图书借阅基本信息。 2.3显示功能 显示所有图书信息,包括图书代码,图书名称,作者,出版社和简介。 显示所有借阅信息,包括读者号,图书号,借书日期,应还书日期。 2.4查找功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值