图书管理c语音求组大佬们
本帖最后由 dai15234791133 于 2020-1-5 19:20 编辑大佬们帮忙看看,图书管理这个我就剩下个删除了,但是删除一本书后然后还显示俩行但序号是继承的下本书的,书名作者那些都不变。
题目四:图书借阅管理内容:1、使用结构体数组定义图书基本信息(图书编号、图书借阅人、借阅天数、图书总量、图书库存、书名、图书作者)。2、实现图书基本信息(图书编号、图书借阅人、借阅天数、图书总量、图书库存、书名、图书作者)的录入。3、实现对图书的借阅管理。4、实现对图书的删除(根据图书编号)、查询(根据图书编号)和图书信息修改的操作。 5、输出显示功能选择提示。 6、每个功能以一个单独的函数实现。
网上
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//图书结构体
struct Book//图书的结构体
{
int id; //书的编号
char name; //书的名字
char Author; //书的作者
char borrower; //借阅人
int store;
int total;
int user;
int days; //图书是否被借出
}
books;
int count; //当前图书的数量
//显示菜单,并返回选择的菜单号
int ShowMenu()
{
int num;
system("cls");
printf("**********欢迎使用图书馆管理系统******************\n");
printf("\t\t1.添加图书\n");
printf("\t\t2.查看图书\n");
printf("\t\t3.借阅图书\n");
printf("\t\t4.归还图书\n");
printf("\t\t5.修改图书信息\n");
printf("\t\t6.删除图书\n");
printf("\t\t7.查找图书\n");
printf("\t\t0.退出系统\n");
printf("--------------------请选择-----------------------\n");
while(scanf("%d", &num) != 1 || num < 0 || num > 7)
{
printf("你选择的菜单错误!按任意键重新选择。\n");
system("pause");
fflush(stdin);//清空输入缓冲区
}
return num;
}
//添加图书
void AddBook()
{
int i;
system("cls"); //清屏
for(i=0;i<2;i++)
{
printf("序号:");
scanf("%d",&books.id);
printf("书名:");
scanf("%s",&books.name);
printf("作者:");
scanf("%s",&books.Author);
printf("数量:");
scanf("%d",&books.total);
books.store=books.total;
printf("\n");
}
printf("图书添加成功!\n");
}
//////////////////////////////////////////////////////////////////////////
//查看图书
int ShowBooks()
{
int i,flag=0;
system("cls");
for(i=0;i<100;i++)
{
if(strlen(books.Author)!=0)
{
printf("序号:%d\t",books.id);
printf("书名:%s\t",books.name);
printf("作者:%s\t",books.Author);
printf("存数:%d\t",books.store);
printf("总数:%d\n\n",books.total);
flag=1;
}
}
if(flag==0)
{
printf("没有找到相关书籍\n");
}
//ShowMenu();
return i;
}
/////////////////////////////////////////////////////
//查找图书
int book_search()
{
int n,i,flag=0;
char nam;
system("cls");
printf("请输入书名:");
scanf("%s",&nam);
for(i=0;i<100;i++)
{
if(strcmp(books.name,nam)==0)
{
printf("序号:%d\t",books.id);
printf("书名:%s\t",books.name);
printf("作者:%s\t",books.Author);
printf("存数:%d\t",books.store);
printf("总数:%d\n",books.total);
n=i;
flag=1;
break;
}
}
if(flag==0)
{
printf("\n没有找到相关书籍\n");
return -1;
}
return n;
}
/////////////////////////////////////////////////////////////////////////
//借阅图书
void borrowbook()
{
int n,s,i,d;
system("cls");
n=book_search();
if(n!=-1&&books.store>0)
{
//赋初值,全为零
for(i=0;i<10;i++)
{
books.user=0;
books.days=0;
}
printf("借书证序号:");
scanf("%d",&s);
printf("借书人:");
scanf("%s",&books.borrower);
printf("输入可借天数:");
scanf("%d",&d);
books.user=s;
books.days=d;
books.store--;
}
else if(n!=-1&&books.store==0)
{
printf("此书已经完全借完\n\n");
// ShowMenu();
}
else;
printf("\n请按任意键返回……\n");
}
////////////////////////////////////////////////////////////////////////
//修改图书
int book_edit()
{
int i,id_change;
system("cls");
printf("输入要修改的图书id:");
scanf("%d",&id_change);
for(i=0;i<100;i++)
{
if(books.id==id_change)
{
printf("修改书名:");
scanf("%s",&books.name);
printf("修改作者:");
scanf("%s",&books.Author);
printf("修改数量:");
scanf("%d",&books.total);
printf("修改图书信息成功\n");
books.store=books.total;
return i;
}
}
}
/////////////////////////////////////////////////////////////////
//删除图书
int book_del()
{
int i,num,j;
system("cls");
printf("输入所要删除的书的id:");
scanf("%d",&num);
for(i=0;i<100;i++)
{
if(books.id==num)
{
for(j=i;j<100;j++)
{
books.id=books.id;
strcpy(books.name,books.name);
strcpy(books.borrower,books.borrower);
printf("该书已经删除了!!!\n");
//ShowMenu();
return i;
}
}
}
printf("未找到相关记录\n");
return -1;
}
////////////////////////////////////////////////////////////////////////
//归还图书
void book_in()
{
int n,s,i;
n=book_search();
printf("%d",n);
if(n!=-1&&books.store<books.total)
{
printf("借阅图书证列表\n");
for(i=0;i<10;i++)
{
if(books.user!=0)
{
printf("[%d]--%d天\n",books.user,books.days);
}
printf("输入借书证号:");
scanf("%d",&s);
for(i=0;i<10;i++)
{
if(books.user==s)
{
books.store++;
}
}
}
}
if(n!=-1&&books.store==books.total)
{
printf("全部归还\n");
}
else if(n!=-1&&books.store<books.total)
{
printf("归还成功\n");
}
}
int main()
{
int quit = 0;
while(quit == 0)
{
switch(ShowMenu())
{
case 0:
quit = 1;
break;
case 1:
// printf("添加图书!\n");
AddBook();
break;
case 2:
// printf("查看图书!\n");
ShowBooks();
break;
case 3:
// printf("借阅图书!\n");
borrowbook();
break;
case 4:
// printf("归还图书!\n");
book_in();
break;
case 5:
// printf("修改图书信息!\n");
book_edit();
break;
case 6:
// printf("删除图书!\n");
book_del();
break;
case 7:
// printf("查找图书!\n");
book_search();
break;
}
system("pause");
}
return 0;
}
不太明白楼主你的意思,你这边删除的操作是要找到这本书(i),然后把后面的每一本书都往前挪吗?
如果是的话,问题应该在这段里
for(j=i;j<100;j++)
{
books.id=books.id;
strcpy(books.name,books.name);
strcpy(books.borrower,books.borrower);
printf("该书已经删除了!!!\n");
//ShowMenu();
return i;
}
这个循环中,j执行了一次后就return了。。。。。这样子只能将i后面的那本书移到i这个位置来。
如果你是要后面的每本都往前挪的话,那至少return i; 这一句要提到这个循环之外,放到i的那个循环中。
页:
[1]