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