永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-04-01 04:04
求图书馆管理系统程序(c语言)
最佳答案

#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("输入错误,请重新选择!"); 


}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
cf爱拍陈子豪解说经典台词
一百克葡萄干能产生多少热量
已知简谐振动 的振幅为 ,图象上相邻最高
大家,我家猫咪便便软的,怎么办
磷酸氢钙存放时间长了磷含量会有变化吗?
修路要成立什么公司?需要什么资质?
唐太宗时期以直言著称 失去一面镜子的是谁
分析五行
什么是工程暖气片,工程暖气片和采暖散热器一
求问大家光驱不能放dvd光盘怎么办
养鸡场养了40只公鸡,母鸡的只数是公鸡的4倍.
18×35等于,等于几?简便计算
养殖泥鳅一亩田成本大慨要多少 ?
当前任去世了,你会是什么感受
求助求助,I5加GTX760带的动GTA5吗
推荐资讯
JS正则问题,竟然不好使,请大神指点。
形容女生声音美的句子
西游记里大唐境内为什么没有妖怪?
如何成为一名白帽子黑客
连连的近义词是什么
秋天纳米汗蒸有什么好处
气接头1分的换算公制的是不是应该是25.4/
上海大学新任校长,我不希望是周哲玮!
北京现代全新途胜加装360全景影像需要多少钱
猜成语一个尖字是什么成语
防腐剂经过加热后会分解吗?
dnf瞎子6+3安图恩第二阶段会被淘汰吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?