图书管理系统C语言

C语言简单编写图书管理系统(两种方法)

链表
线性表

主要内容

开发一个图书管理系统,基本信息包括图书的书名,作者,ISBN号。
基本实现:
输出,输入,删除,查询,插入的基本功能。

代码如下:(运行结果省略——链表)


#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#include <math.h>
#define maxsize 10000
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
typedef struct booknode{
   
   
	char name[50];
	char writer[20];
	int number;
}Book;

typedef struct sqnode{
   
   
	Book date;
	struct sqnode *next;
}linklist;

linklist *L;
int n;//保存图书的本数  
linklist* Initlist(linklist *L){
   
   
 	L=(linklist *)malloc(sizeof(linklist));
 	L->next=NULL;
 	return L;
 }
 //输入 
 //尾插法建立链表 
 void InputNumber(linklist *L){
   
   
 	linklist *p,*r;
 	r=L;
 	printf("请输入链表中元素的个数:");
 	scanf("%d",&n);
 	int i;
 	printf("请输入%d个元素:",n);
 	for(i=0;i<n;i++){
   
   
 	   p=(linklist *)malloc(sizeof(linklist)); 
 	   scanf("%s%s%d",p->date.name,p->date.writer,&p->date.number);
 	   p->next=r->next;
 	   r->next=p;
 	   r=p;
     }
 } 
 //头插法建立链表
 /* 
 void InputNumber(linklist *L){
 	linklist *p,*r;
 	r=L;
 	printf("请输入链表中元素的个数:");
 	scanf("%d",&n);
 	int i;
 	printf("请输入%d个元素:",n);
 	for(i=0;i<n;i++){
 	   p=(linklist *L)malloc(sizeof(linklist)); 
 	   scanf("%s%s%d",p->date.name,p->date.writer,&p->date.number);
 	   p->next=r->next;
 	   r->next=p;
 	   r=p;
     }
 } 
 */
 //输出 
 void outputlist(linklist *L){
   
      
 	linklist *p;
 	p=L->next;
 	printf("\t书名\t作者\t书号\n");
 	while(p!=NULL){
   
   
 	   printf("\t%s\t%s\t%d\n",p->date.name,p->date.writer,p->date.number);
 	   p=p->next;
 }
  printf("\n");
}
 //查找
void searchforname(linklist *L,char *name){
   
     //按书名查询 
  	int i;
  	linklist *p;
 	p=L->next;
  	for(i=0;i<n;i++){
   
    
  	    if(strcmp(p->date.name,name )==0)
  	        break;
    }
    if(i<n){
   
   
        printf("你要查找的书名为%s的书号是:%d,作者是:%s\n",name,p->date.number,p->date.writer);
		p=p->next;}	
    else
        printf("所查找的书籍不在列表内!\n");
}
void searchforwriter(linklist *L,char *writer){
   
     //按作者查询 
  	int i;
	linklist *p;
 	p=L->next; 
  	for(i=0;i<n;i++){
   
    
  	    if(strcmp(p->date.writer,writer)==0)
  	        break;
    }
    if(i<n){
   
   
        printf("你要查找的作者为%s的书号是:%d,书名是:%s\n",writer,p->date.number,p->date.name); 
        p=p->next;}	
    else
        printf("所查找的书籍不在列表内!");
}
void searchfornumber(linklist *L,int number){
   
   
	int i;
	linklist *p;
 	p=L->next; 
  	for(i=0;i<n;i++){
   
    
  	    if((p->date.number)==number)
  	        break;
    }
    if(i<n){
   
   
         printf("你要查找的书号为%d的作者是:%s,书名是:%s\n",p->date.number,p->date.writer,p->date.name); 
        p=p->next;}	
    else
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃冰粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值