图书管理系统(C语言实现)

设计并实现一个简单的图书管理系统

本次实训内容主要在于训练学生的C语言的基本编程能力,通过C语言输入输出、循环语句、子函数设计、数组、结构体等知识点,完成一个简单图书管理系统的设计开发。实现录入图书、删除指定图书、修改指定图书和查询指定图书的基本信息等主要功能。

1.创建图书节点

#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
struct Book{
	char id[101];// ISBN 
	char name[101];// 书名
	double price;//价格 
}; 

2.构建顺序表

typedef struct{
	Book *elem;//顺序表首地址
	int len;//表长 
}Sqlist; 

3.图书信息的展示

void display(Sqlist L){ //不需要修改里面的信息 
	//展示表L中所有的图书信息
	int maxIndex = L.len;
	for(int i=1;i<=maxIndex;i++){
		printf("%s\t%s\t%lf\n",L.elem[i].id , L.elem[i].name , L.elem[i].price);//\n换行 \tTab			
	}
} 

4.图书信息的查找

int findBook(Sqlist L,char id[]){
	//在表L 中查找 是否有 ISBN码为id的图书
	//遍历 表 L,如果出现了L中 图书的id  ==   id 
	int index = 0;//假设不存在
	int len = L.len;
	for(int i=1;i<=len;i++){
		if(strcmp(L.elem[i].id,id) == 0){//strcmp() 
			index = i;//修正假设   (假设修正法)
			break;
		}
	}
	return index;
}

5.图书信息的插入

void insertBook(Sqlist &L,Book t,int x){
	//判断x 是否合法
	int len = L.len;//1--len
	if(x<1 || x>len){
		printf("位置不合法!\n");
	}else{
		//将len 至 x位置的图书全部向后移动一个位置 
		for(int i=len;i>=x;i--){
			L.elem[i+1] = L.elem[i]; 
		}
		
		//将图书 t 加入 L的x位置
		L.elem[x] = t;
		L.len++;
		printf("图书插入成功!\n");
	}
}

6.图书信息的删除

void deleteBook(Sqlist &L,int indexT){
	int len = L.len;//1--len
	
	for(int i=indexT;i<len;i++){
		L.elem[i] = L.elem[i+1]; 
	}
	L.len--; //长度-1 
	
}

7.图书信息总览

int main(){
	int n;
	//顺序存储结构
	Sqlist L;
	L.elem =(Book *)malloc(sizeof(Book)*100); 
	L.len=0;
	printf("-------------图书录入------------\n");
	printf("请输入图书的数目:\n");
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		printf("请输入第 %d 本图书的ISBN码:\n",i);
		scanf("%s",L.elem[i].id);
		getchar();
		printf("请输入第 %d 本图书的书名:\n",i);
		scanf("%s",L.elem[i].name);
		getchar();
		printf("请输入第 %d 本图书的价格:\n",i);
		scanf("%lf",&L.elem[i].price);
		L.len++; 
	}
	
	//展示所有的图书
	printf("\n-------------图书展示------------\n");
	display(L);	
	
	//图书查找功能
	printf("\n-------------图书查找------------\n"); 
	printf("请输入要查询图书的ISBN码:\n");
	char name[101];
	scanf("%s",name);
	//图书查找函数:返回值如果是0 则表示系统中无此图书,返回值非0  则表示系统中有次图书,返回值代表下标
	//参数:L  name
	int index = findBook(L,name);
	if(index==0){
		printf("ISBN码为:%s的图书不存在!",name);
	}else{//图书存在 
		printf("图书存在,要查找的图书信息如下:\n");
		printf("%s\t%s\t%lf\n",L.elem[index].id, L.elem[index].name, L.elem[index].price);
		
	}
	 
	//图书插入
	//提示用户输入图书信息
	Book t;
	int x; 
	printf("\n-------------图书插入------------\n");
	printf("请输入要插入图书的ISBN码:\n");
	scanf("%s",t.id);
	printf("请输入要插入图书的名称:\n");
	scanf("%s",t.name);
	printf("请输入要插入图书的价格:\n");
	scanf("%lf",&t.price);
	printf("请输入要插入图书的位置(下标1--98):\n");
	scanf("%d", &x);
	//图书信息 整合 到了 t
	insertBook(L,t,x);
	 
	
	//展示所有的图书
	printf("\n-------------图书展示------------\n");
	display(L);	
	
	
	//图书删除
	int indexT;
	char idT[101];
	printf("\n-------------图书删除------------\n"); 
	printf("请输入要删除图书的编码:\n");
	scanf("%s",idT);
	//用户要删除 ISBN码为 idT 的图书
	indexT = findBook(L,idT);//如果 0 则idT不存在,如果非0则返回的是下标 
	if(indexT!=0){//图书存在 
		printf("图书存在,确定删除请按1\n");
		int d;
		scanf("%d",&d);
		if(d==1){
			//从表L 中删除 下标indexT
			deleteBook(L,indexT); 	
			printf("图书删除成功!\n");
		}
		
	}else{//==0
		printf("图书不存在!\n");
	}
	
	
	printf("\n-------------图书展示------------\n");
	display(L);	

	return 0;
}

  • 20
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 图书管理系统可以使用C语言实现,可以将图书信息保存在文件中。具体实现步骤如下: 1. 定义图书信息的结构体,包括图书编号、书名、作者、出版社、出版日期、价格等信息。 2. 定义文件操作函数,包括打开文件、读取文件、写入文件、关闭文件等操作。 3. 实现图书信息的录入、查询、修改、删除等功能,可以使用菜单方式进行选择。 4. 在程序启动时,先读取文件中的图书信息,保存到内存中,程序结束时再将内存中的图书信息写入文件中。 5. 可以添加一些其他功能,如图书借阅、归还等。 总之,使用C语言实现图书管理系统,可以方便地管理图书信息,提高图书管理效率。 ### 回答2: 图书管理系统是一个涉及到多个功能模块的程序,其中一个非常重要的模块就是图书信息的管理。而对于一个拥有大量图书的机构来说,如何对这些图书信息进行高效的管理就显得尤为关键。而图书管理系统c语言实现图书信息用文件保存,则是一个非常常见且实用的方法。 首先,c语言作为一种高效、灵活的编程语言,其文件操作功能非常强大,可以轻松地实现对图书信息的读取、修改、保存等操作。其一般的文件操作流程如下: 1. 打开文件 打开文件是文件操作的第一步。使用fopen函数可以打开一个文件,并指定打开方式(读、写、附加等)。例如: FILE *fp; // 定义文件指针 fp = fopen("books.dat", "r"); // 打开books.dat文件,以只读方式 2. 读取文件 读取文件是指从文件中读取数据。使用fread函数可以从文件中读取指定大小的数据,例如: fread(&book, sizeof(Book), 1, fp); // 从文件fp中读取1个大小为Book的数据到book结构体中 3. 写入文件 写入文件是指向文件中写入数据。使用fwrite函数可以将指定大小的数据写入到文件中,例如: fwrite(&book, sizeof(Book), 1, fp); // 将book结构体中的数据写入到文件fp中 4. 关闭文件 关闭文件是文件操作的最后一步。使用fclose函数可以关闭文件,例如: fclose(fp); // 关闭文件fp 通过以上四个步骤,我们可以轻松地实现对图书信息的读取、修改、保存等操作,从而完成图书管理系统的所有功能。同时,将图书信息保存在文件中,也可以方便多台设备之间共享数据,实现分布式管理。 总之,用c语言实现图书管理系统,将图书信息用文件保存是非常实用的方法,不仅可以方便管理图书信息,还可以实现多设备的数据共享。 ### 回答3: 图书管理系统是一个非常常用的信息管理系统。在现代社会中,它被广泛应用于图书馆、学校以及其他各种机构。借助它,我们可以有效地管理图书信息,方便读者查询、借阅图书。而C语言是一个非常流行的编程语言,在实现图书管理系统方面也有很大的优势。 在图书管理系统中,我们需要用文件保存图书信息。C语言中可以使用文件操作来实现。我们可以先定义一个结构体,用于存储图书的各种信息。结构体可以包括图书的编号、名称、作者、出版社、ISBN码、价格等。 然后我们可以使用文件操作函数来将这些信息写入文件中。例如,我们可以使用fopen()函数来打开一个文件,使用fprintf()函数向文件中写入数据,使用fclose()函数关闭文件。 在读取文件中的图书信息时,我们可以使用fscanf()函数来读取文件中的数据,并将其存入结构体变量中。读取文件中所有的数据后,我们可以使用单链表来存储图书信息。每当需要添加、删除、修改某本图书时,我们只需要操作链表即可。操作链表的过程中,还可以调用文件操作来实现对文件中图书信息的增删改查。 需要注意的是,在文件操作时,应该先检查文件是否存在。如果文件不存在,就需要创建一个文件,否则会导致程序崩溃。 总之,C语言实现图书管理系统需要先定义好数据结构,在文件操作时要注意对文件的读写权限和错误处理。掌握了这些基本的知识,就可以着手开始实现了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Meteor.792

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

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

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

打赏作者

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

抵扣说明:

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

余额充值