永发信息网

求图书馆管理系统程序(c语言)

答案:2  悬赏:0  手机版
解决时间 2021-04-01 04:04
  • 提问者网友:無理詩人
  • 2021-03-31 22:20
求图书馆管理系统程序(c语言)
最佳答案
  • 五星知识达人网友:千夜
  • 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&&jnext;++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 p=p->next ; 
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("输入错误,请重新选择!"); 


}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯