C语言小项目----图书馆管理系统

C语言项目练习,实现一个简陋的图书馆管理系统。

功能分析:这个项目可以分为三个模块,图书管理模块、读者管理模块和借还书登记模块。

 图书管理模块主要实现图书的增删改查和显示功能,读者管理模块实现的是读者的增删改查和显示功能,借还书登记模块将实现读者对图书的借书和还书信息的记录。

 首先我们要做的是定义图书的结构体和读者的结构体

typedef struct Book
{
	int iNum; //图书编号
	char acName[15];//图书名称
	char acAuthor[15];//图书作者
	char acPress[15]; //图书出版社
	int iAmount; //图书库存量
}Book;

typedef struct Reader
{
	int iNum; //读者编号
	char acName[15]; //读者姓名
	char acSex[4];  //读者性别
	int iMax; //读者最大可借阅量
	int iAmount; //读者当前可借阅量
	int BookId[10]; //读者已经借阅图书列表
}Reader;

接着我们采取全局结构体数组的方式来记录所有的图书信息和读者信息

Book astBook[BOOK_NUM];
Reader astReader[READER_NUM];

最后一一实现上述的功能,并把产生的数据保存到文件中。

代码实现如下:

 Book_Management_System.h

#pragma once

#include<stdio.h>
#include <windows.h>
//console
#include<conio.h>

#define BOOK_NUM  200
#define READER_NUM  100


#define BOOK_DATA  astBook[i].iNum,astBook[i].acName,astBook[i].acAuthor,astBook[i].acPress,astBook[i].iAmount
#define LEN_BOOK  sizeof(struct Book)

#define LEN_READER sizeof(struct Reader)
#define READER_DATA astReader[i].iNum,astReader[i].acName,astReader[i].acSex,astReader[i].iMax,astReader[i].iAmount
//两个结构体封装图书和读者的基本信息
typedef struct Book
{
	int iNum; //图书编号
	char acName[15];//图书名称
	char acAuthor[15];//图书作者
	char acPress[15]; //图书出版社
	int iAmount; //图书库存量
}Book;
typedef struct Reader
{
	int iNum; //读者编号
	char acName[15]; //读者姓名
	char acSex[4];  //读者性别
	int iMax; //读者最大可借阅量
	int iAmount; //读者当前可借阅量
	int BookId[10]; //读者已经借阅图书列表
}Reader;


//功能函数声明

//显示主菜单
void ShowMainMeun();
//显示书籍管理的子菜单
void ShowBookMenu();
//读取图书信息到文件里面
int ReadBookFile(const char* pcMode);
//显示图书信息
void ShowBook();
//添加图书信息
void AddBook();
//查询    通过图书编号查找
int SearchBook();
//删除图书信息
void DeleteBook();
//显示修改图书信息选项的子菜单
void ShowModifyBookMenu();
//保存图书信息到文件
void SaveBookFile(int iBookId);
 //修改图书信息
void ModifyBook();
//书籍管理
void MangaeBook();
//显示读者管理的子菜单
void ShowReaderMenu();
//从文件里面读取读者信息
int ReadReaderFile(const char* fopenMode);
//显示读者信息
void ShowReader();
//新增读者信息
void AddReader();
//查找读者信息
int SearchReader();
//删除读者信息
void DeleteReader();
//显示读者信息可以修改的选项
void ShowModifyReaderMenu();
//保存读者信息到文件里面
void SaveReaderFile(int iReaderId);
//修改读者信息
void ModifyReader();
//读者管理模块
void  MangaeReader();
//显示借还功能菜单
void ShowBorrowReturnMenu();
//借书
void BorrowBook();
//还书
void ReturnBook();
//借还书模块
void BorrowReturnManger();

 Book_Management_System.cpp 


#include<stdio.h>
#include <windows.h>
#include<stdio.h>
#include"Book_Management_System.h"


//定义两个全局结构体数组来记录所有的图书信息和所有的读者信息
Book astBook[BOOK_NUM];
Reader astReader[READER_NUM];
//显示主菜单
void ShowMainMeun()
{
	//清屏函数
	system("cls");
	printf("\n\n\n\n\n");
	printf("\t***********************************欢迎进入*******************************\n");
	printf("\t********************************图书馆管理系统****************************\n");
	printf("\t************************************主菜单********************************\n");
	printf("\t*********************************1.图书管理*******************************\n");
	printf("\t*********************************2.读者管理********************************\n");
	printf("\t*********************************3.借还书登记******************************\n");
	printf("\t*********************************0.退出系统********************************\n");
	printf("\n");
	printf("\t\t请选择(0-3)");
}

//显示书籍管理的子菜单
void ShowBookMenu()
{
	system("cls");
	printf("\n\n\n\n");
	printf("\t|******************************欢迎进入***************************|\n");
	printf("\t|******************************图书馆管理系统********************|\n");
	printf("\t|*********************************子菜单**************************|\n");
	printf("\t|******************************1.显示图书信息*********************|\n");
	printf("\t|******************************2.新增图书信息*********************|\n");
	printf("\t|******************************3.查询图书信息*********************|\n");
	printf("\t|******************************4.删除图书信息*********************|\n");
	printf("\t|******************************5.修改图书信息*********************|\n");
	printf("\t|******************************0.返回主菜单***********************|\n");
	printf("\n");
	printf("\t\t请选择(0-5):");
}

int ReadBookFile(const char* pcMode)
{
	int iBookRecord = 0;
	FILE* pfBook; //文件指针
	pfBook = fopen("book.txt", pcMode);
	if (pfBook == NULL)
	{
		return -1;
	}
	while (!feof(pfBook))
	{
		if (fread(&astBook[iBookRecord], LEN_BOOK, 1, pfBook))
		{
			iBookRecord++;
		}	
	}
	fclose(pfBook);
	return iBookRecord;
}

void ShowBook()
{
	int i, iBookRecord;  //记录条数
	system("cls");
	iBookRecord = ReadBookFile("rb");  //只读
	if (iBookRecord == -1)
	{
		printf("该文件打开失败,请先新增图书信息!\n");
	}
	if (iBookRecord == 0)
	{
		printf("文件中没有图书信息!\n");
	}
	else
	{
		printf("\t|******************************************
  • 53
    点赞
  • 490
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值