图书管理系统(C语言)

这是一个用C语言编写的图书管理系统,包括添加、修改、查询、删除书籍信息,以及图书借阅和归还功能。系统提供了菜单式交互,支持按书本编号或书名进行操作。代码中包含了对文件的读取,可以保存和加载数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图书管理系统(C语言)

大一的一个C语言课设,做的不是很好,不过没有思路的时候作为参考还是可以滴。每个功能也可以分文件写,不影响。欢迎大家前来批评指正!

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int Bsum;
int Psum;
struct Book
{ 
int BookNumber;//书本编号
char Name[20];//书本名
char authorName[20];//作者名
float price;//价格
float Discount;//折扣 
float Disprice;//折后价
int  Bsum;//本书书库剩余量;
} Book[100];

struct People
{ 
   int ID;
   char Name[20];//书本名  
   char date[20];
} People[100];

void menu()
{
  printf("                欢迎进入优快云大学图书管理系统\n");
  printf("******************************菜单*************************\n");
  printf("*                                                       *\n");
  printf("*           1:书本信息添加      2:书本信息修改          *\n");
  printf("*                                                       *\n");
  printf("*           3:书库信息浏览      4:书本信息查询          *\n");
  printf("*                                                       *\n");
  printf("*           5:书本信息删除      6:图书排序             *\n");
  printf("*                                                       *\n");
  printf("*           7:图书借阅          8:退出             *\n");
  printf("*                                                       *\n");  
  printf ( "*********************************************************\n");
  printf("Welcome to the library management system of Guangxi Normal University\n");
}

void modificationmenu()
{
  printf("请选择修改项:\n");
  printf("1:书本编号\n");  
  printf("2:书本名\n");
  printf("3:作者名\n");
  printf("4:价格\n");
  printf("5:折扣 :\n");
  printf("6:书库剩余量\n"); 
  printf("\n");             
}

void Add()
{
	int i,j,flag=0,s;
	printf("请输入添加图书的编号:\n");	
	cin>>j;
	for(i=1;i<=Bsum;i++){
		if(Book[i].BookNumber==j){
			flag=1;j=i;break;
		}//if 	
	 } //for	
	if(flag==1){
		printf("请输入添加图书的数量:\n");
		cin>>s;
		Book[j].Bsum+=s;
		return ;
	}//库存已有此书 
	
	if(flag==0){
	i=Bsum+1;
	printf("请输入此书本的编号\n");		
	cin>>Book[i].BookNumber;
	printf("请输入添加书本的书名\n");	
	cin>>Book[i].Name;
	printf("请输入添加书本的作者名\n");	
	cin>>Book[i].authorName;	
	printf("请输入此书本的原价\n");		
	cin>>Book[i].price;
	printf("请输入此书本的折扣\n");		
	cin>>Book[i].Discount;
	printf("请输入此书本的数量\n");		
	cin>>Book[i].Bsum;
	Bsum++;	
	}	//书库无此书 
 } /**/

void modification()
{
	int m,i,j,flag=0;
	char s[20];
	while(1)
	{
		printf("请输入确定修改图书信息的方式:\n1:图书编号\n2:图书书名\n3:退出修改\n");
	    cin>>i;
	    if(i==1||i==2)
	    break;
	    else if(i==3)
	    return ;
	    else
	    printf("输入错误,请重新输入:\n");
	}
	if(i==1)
	{
		printf("请输入修改图书信息的图书编号\n");		
		cin>>j;
		for(i=1;i<=Bsum;i++){
			if(Book[i].BookNumber==j){
            modificationmenu(); 
            cin>>m;
            switch(m)
            {
            case 1:	printf("请输入此书本的编号\n");	cin>>Book[i].BookNumber;break;
            case 2: printf("请输入添加书本的书名\n");cin>>Book[i].Name;break;	
            case 3:	printf("请输入添加书本的作者名\n");cin>>Book[i].authorName;break;
            case 4: printf("请输入此书本的原价\n");	cin>>Book[i].price;break;
            case 5: printf("请输入此书本的折扣\n");	cin>>Book[i].Discount;break;
			case 6:	printf("请输入此书本的数量\n");	cin>>Book[i].Bsum;break;
			}
			flag=1;break; 
			}//if search successful 			
		}//for 
		    if(flag==0)
			printf("查无此书\n");
		}//search book by booknumber		
	if(i==2){
		printf("请输入修改图书信息的书名\n");		
		cin>>s;
		for(i=1;i<=Bsum;i++){
			if(strcmp(s,Book[i].Name)==0){
			modificationmenu(); 
            cin>>m;
            switch(m)
            {
            case 1:	printf("请输入此书本的编号\n");	cin>>Book[i].BookNumber;break;
            case 2: printf("请输入添加书本的书名\n");cin>>Book[i].Name;break;	
            case 3:	printf("请输入添加书本的作者名\n");cin>>Book[i].authorName;break;
            case 4: printf("请输入此书本的原价\n");	cin>>Book[i].price;break;
            case 5: printf("请输入此书本的折扣\n");	cin>>Book[i].Discount;break;
			case 6:	printf("请输入此书本的数量\n");	cin>>Book[i].Bsum;break;
			}
			flag=1;break;
			}//if search successful 
		}//for 
	        if(flag==0)
			printf("查无此书\n");
		}//search book by bookname
		fflush(stdin); 
}


void Display()
{
     for(int i=1;i<=Bsum;i++)
    {
  Book[i].Disprice=Book[i].Discount*Book[i].price;
  printf("记录编号: %d\n",i) ;
  printf("书本编号: %d\n",Book[i].BookNumber);
  printf("书本名: %s\n",Book[i].Name);
  printf("作者名: %s\n",Book[i].authorName); 
  printf("原价: %.2f'\n",Book[i].price);
  printf("折扣: %.2f'\n", Book[i].Discount);
  printf("折后价: %.2f'\n",Book[i].Disprice);
  printf("书库剩余: %d\n",Book[i].Bsum);
  cout<<endl;
  } //for
	printf("当前不同类型图本的数量:%d\n",Bsum);
	fflush(stdin); 		
}
   
void search()
{
    int i,j,flag=0;
	char s[20];
	while(1)
	{
		printf("请输入确定所要查询的图书信息的方式:\n1:图书编号\n2:图书书名\n3:退出查询\n");
	    cin>>i;
	    if(i==1||i==2)
	    break;
	    else if(i==3)
	    return ;
	    else
	    printf("输入错误,请重新输入:\n");
	}
	if(i==1)
	{
		printf("请输入所要查询的图书信息的图书编号\n");		
		cin>>j;
		for(i=1;i<=Bsum;i++){
			if(Book[i].BookNumber==j){
            printf("书本编号: %d\n",Book[i].BookNumber);
            printf("书本名: %s\n",Book[i].Name);
            printf("作者名: %s\n",Book[i].authorName); 
            printf("原价: %f'\n",Book[i].price);
            printf("折扣: %f'\n", Book[i].Discount);
            printf("折后价: %f'\n",Book[i].Disprice);
            printf("书库剩余: %d\n",Book[i].Bsum);			
			flag=1;break; 
			}//if search successful 			
		}//for 
		    if(flag==0)
			printf("查无此书\n");
		}//search book by booknumber		
	if(i==2){
		printf("请输入所要查询的图书信息的书名\n");		
		cin>>s;
		for(i=1;i<=Bsum;i++){
			if(strcmp(s,Book[i].Name)==0){
            printf("书本编号: %d\n",Book[i].BookNumber);
            printf("书本名: %s\n",Book[i].Name);
            printf("作者名: %s\n",Book[i].authorName); 
            printf("原价: %f'\n",Book[i].price);
            printf("折扣: %f'\n", Book[i].Discount);
            printf("折后价: %f'\n",Book[i].Disprice);
            printf("书库剩余: %d\n",Book[i].Bsum);		
			flag=1;break; 
			}//if search successful 
		}//for 
	        if(flag==0)
			printf("查无此书\n");
		}//search book by bookname	
}  
   
void Delete()   
{
	int i,j,flag=0;
	char s[20];
	while(1)
	{
		printf("请输入确定删除图书信息的方式:\n1:图书编号\n2:图书书名\n3:退出删除\n");
	    cin>>i;
	    if(i==1||i==2)
	    break;
	    else if(i==3)
	    return ;
	    else
	    printf("输入错误,请重新输入:\n");
	}//while 
	if(i==1)
	{
		printf("请输入所要删除的图书信息的图书编号\n");		
		cin>>j;
		for(i=1;i<=Bsum;i++){
			if(Book[i].BookNumber==j){
			flag=1;j=i;break; }//if search successful 
		}//for 				
		    if(flag==1){		    	
		    for(j;j<Bsum;j++){
		    	Book[j]=Book[j+1];}	    	
			 Bsum--;		    
			} //if search successful 		    
		    if(flag==0)
			printf("查无此书\n");
		}//search book by booknumber		
	if(i==2){
		printf("请输入所要删除的图书信息的书名\n");		
		cin>>s;
		for(i=1;i<=Bsum;i++){
			if(strcmp(s,Book[i].Name)==0){		
			flag=1;j=i;break; 
			}//if search successful 
		}//for 
		if(flag==1){		    	
		    for(j;j<Bsum;j++){
		    	Book[j]=Book[j+1];	}	    				 
			 Bsum--;		    
			} //if search successful
	        if(flag==0)
			printf("查无此书\n");
		}//search book by bookname	
   }   
   
 void sort()
 {
 	int i,j;
 	cout<<"以书号按升序进行排序开始"<<endl<<"…… …… ……"<<endl; 
 	for(i=1;i<=Bsum-1;i++)
 	for(j=1;j<=Bsum-i-1;j++)
 	if(Book[j].BookNumber>Book[j+1].BookNumber){
 		Book[0]=Book[j];
 		Book[j]=Book[j+1];
 		Book[j+1]=Book[0];
	 }
	 cout<<"以书号按升序进行排序完毕"<<endl; 
}  
   
void Borrow ()
{
	int i,j,flag=0;
	char name[20];
	cout<<"请输入借阅的书名:"<<endl; 
	cin>>name;
		for(i=1;i<=Bsum;i++){
			if(strcmp(name,Book[i].Name)==0){		
			flag=1;j=i;break; 
			}//if search successful 
		}//for 
		if(flag==1&&Book[j].Bsum==0){
		cout<<"此书书库无剩余:"<<endl;
		return ; 
		}
	if(flag==1){
		i=Psum+1;
	strcpy(People[i].Name, Book[j].Name);	
	cout<<"请输入借阅人的书证号:"<<endl; 
	cin>>People[i].ID;	
	cout<<"请输入归还期限:"<<endl; 
	cin>>People[i].date;
	Psum++;	Book[j].Bsum--;
	}
	if(flag==0)
	printf("查无此书\n");	
  }  
  
void Return()
{
	int i,j,flag=0,n;
	char name[20];
	cout<<"请输入借阅人ID:"<<endl; 
	cin>>n;
		for(i=1;i<=Psum;i++){
			if(People[i].ID==n){		
			flag=1;j=i;break; 
			}//if search successful 
		}//for P 
	if(flag==0)
	printf("查无此人\n");
	if(flag==1){
		for(i=1;i<=Bsum;i++)
		if(strcmp(People[j].Name,Book[i].Name)==0){
			Book[i].Bsum++;
			Psum--;
		}
	}//search successful 
}  
	
	
int main () 
{
	 
	int i,ch,flag;
	FILE*fp;
	fp = fopen("Book.txt","r+");
	for(i=1;ch != EOF;i++){
		ch=fgetc(fp);
		fscanf(fp,"%d%s%s%f%f%d\n",&Book[i].BookNumber,&Book[i].Name,&Book[i].authorName,&Book[i].price,&Book[i].Discount,&Book[i].Bsum);		
	}
   Bsum=i-2;Psum=0;
   while(1)
   {
   	menu();
    printf("请选择你要进行的操作:\n");   	
   	scanf("%d",&ch);
   	system("cls") ;
    switch(ch)
    {
   	case 1:Add();Display();break;
   	case 2:modification();break;
   	case 3:Display();break;
	case 4:search();break;
	case 5:Delete();break;
	case 6:sort();break;
	case 7:Borrow();break;
	case 8: Return();break;
	case 9:printf("欢迎再次使用此系统\n");return 0;
    }
     printf("是否继续?  Y/N\n");
   	scanf("%d",&flag);
   	system("cls") ;
     if(flag=='N'){
     printf("欢迎再次使用此系统\n");break;} 
     fflush(stdin); 
   }//while 
   
return 0;
}
/* 
1:书本信息添加      2:书本信息修改          *\n");
3:书本信息统计      4:书本信息查询         *\n");
5:书本信息删除      6:图书排序        
7:图书借阅          8:归还 
9:退出 
   */
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芣苢的成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值