求图书馆管理系统程序(c语言)
- 提问者网友:無理詩人
- 2021-03-31 22:20
- 五星知识达人网友:千夜
- 2021-03-31 23:53
#include
#include
#include
#include
#include
#define len sizeof(Book)
typedef struct Book{
char no[8]; //8位书号
char name[20]; //书名
char price[8]; //定价
struct Book *next;
}Book;
Book *L;
int b1,n1;
void CreateList(){
int i,n;
Book *p,*q;
if(!b1){
L=(Book*)malloc(len);
L->next=NULL; //生成只包含头结点的空链表
b1=1;
n1=0;
p=L;
printf("要输入的图书数为:");
scanf("%d",&n);
for(i=1;i<=n;i++){ //通过n控制输入图书数
q=(Book*)malloc(len);
printf("请输入第%d个图书信息:
",i);
printf("书号:");
scanf("%s",q->no);
printf("书名:");
scanf("%s",q->name);
printf("定价:");
scanf("%s",q->price);
q->next=L->next;L->next=q;
n1=n1+1;
}
}else
{printf("已输入完毕,请插入信息!"); //每次执行程序只能生成一次链表,之后只能进行插入、删除操作
getch();}
}
void FindBook(){
char ch[20];
int s2=0;
Book *p;
p=L->next;
printf("请输入图书名:");
scanf("%s",ch);
while(p){
if(strcmp(p->name,ch)==0) //判断和查询图书名是否相等
{printf("图书名:%-12.9s 书号:%-12.10s 定价:%s",p->name,p->no,p->price); //控制字符串输出的长度、格式
s2=1;
getch();}
p=p->next;
}
if(!s2)
{ printf("没有该图书信息!");
getch();}
}
void Getlocation(){
Book *p ;
int i,j;
p=L->next; //初始化,p指向第一个结点
j=1;// j为计数器
printf("请输入位置:");
scanf("%d",&i);
while(p && jnext; ++j; }
if(!p||j>i) printf("ERROR"); //i大于表长或小于1
printf("图书名:%-12.9s 书号:%-12.10s 定价:%s",p->name,p->no,p->price);
getch();
}
void ListInsert(){
int j,i;
Book *p,*s;
p=L;j=0;
printf("请输入位置:");
scanf("%d",&i);
while (p&&j
if(!p||j>i-1) printf("error");
s=(Book*)malloc(len); //生成新结点
printf("请输入新的图书信息:
");
printf("书号:");
scanf("%s",s->no);
printf("书名:");
scanf("%s",s->name);
printf("定价:");
scanf("%d",s->price);
s->next=p->next; p->next=s;
printf("插入成功!");
getch();
}
void ListDelete(){
int i,n;
Book *p,*q;
p=L;
printf("请输入删除图书位置");
scanf("%d",&n);
if(n>n1||n<=0){
printf("输入错误!"); //容错处理
getch();
}
else{
for(i=1;i
q=p->next; p->next=q->next;
free(q); //删除指定位置的学生信息
n1--;
printf("已将原表中第%d个 图书信息删除!",n);
getch();
}
}
void ListLength(){
Book *p;
int i;
p=L->next;
i=0;
while(p){i++;
p=p->next ;}
printf("图书个数为:%d",i);
getch();
}
void main(){
char c;
while(1){
system("cls");
printf("**************************** 欢迎使用图书信息查询系统!*************************
");//菜单选项
printf("
");
printf("(1)输入图书信息;
");
printf("(2)根据图书名进行查找;
");
printf("(3)根据指定位置进行查找;
");
printf("(4)插入图书信息到指定位置;
");
printf("(5)删除指定位置的图书记录;
");
printf("(6)统计表中图书数;
");
printf("
");
c=getch();
switch(c){
case '1':CreateList();break;
case '2':if(b1)FindBook(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
{printf("请先输入图书信息!");
getch();};break;
case '3':if(b1)Getlocation(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
{printf("请先输入图书信息!");
getch();};break;
case'4':if(b1)ListInsert(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
{printf("请先输入图书信息!");
getch();};break;
case '5':if(b1)ListDelete(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
{printf("请先输入图书信息!");
getch();};break;
case '6':if(b1)ListLength(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
{printf("请先输入图书信息!");
getch();};break;
default :printf("输入错误,请重新选择!");
}
}
}