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
#include
//console
#include
#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
#include
#include
#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|******************************************