本人大一,正在学习c与c++程序设计,教员布置了这个作业,所以通过查资料和不断尝试,最终完成了这几个操作。
1:添加图书
2:删除图书
3:打印所有图书
4:打印未被借走的图书
5:打印已经借走的图书
6:添加读者
7:删除读者
8:打印所有读者信息
9:借书
10:还书
11:显示借书列表
12:结束操作
运用的知识也很简单,主要是类与结构体。所以,只要入门了就读的懂(毕竟,我也刚刚学,现在老师还在前面讲c++呢)话不多说,上代码!
头文件!!!!!!主要定义类。
#pragma once
#ifndef BOOKMANAGE_H
#define BOOKMANAGE_H
struct books
{
char name[100];
bool state; //state为0表示未被借出,state为1表示已被借出
};
struct readers
{
char name[50];
};
class Book_manage
{
private:
books* book;//图书信息
readers* reader;//读者信息
int b_size;
int b_total;
int r_size;
int r_total;
public:
Book_manage(int size_b,int size_r);//书本最大容量
//Book_manage(const Book_manage& t);
~Book_manage();
//添加图书
void Add_book(books b);
//删除图书
void Delete_book();
//打印所有图书
void Printf_books();
//打印未被借走的图书
void Printf_books_0();
//打印已经借走的图书
void Printf_books_1();
//添加读者
void Add_reader();
//删除读者
void Delete_reader();
//打印所有读者信息
void Printf_readers();
//借书
void Borrow_book();
//还书
void Return_book();
//显示借书列表
void Printf_books_00();
};
#endif
定义类里的函数!!!!太长了。呜呜┭┮﹏┭┮
#include"Book_manage.h"
#include<iostream>
#include <cstring>
using namespace std;
Book_manage::Book_manage(int size_b, int size_r)
{
book = new books[size_b];//图书信息
reader = new readers[size_r];//读者信息
b_size = size_b;
r_size = size_r;
b_total = 0;
r_total = 0;
}
Book_manage::~Book_manage()
{
delete[] book;
delete[] reader;
}
//添加图书
void Book_manage::Add_book(books b)
{
if (b_total < b_size)
{
book[b_total] = b;
b_total++;
cout << "添加图书成功!" << endl;
}
else
{
cout << "抱歉,书库已满,无法添加新书。" << endl;
}
}
//删除图书
void Book_manage::Delete_book()
{
if (b_total > 0) {
for (int i = 0; i < b_total; i++) {
cout << i + 1 << ":" << book[i].name << endl;
}
cout << "请输入要删除的书籍编号:";
int num;
cin >> num;
if (num >= 1 && num <= b_total) {
for (int i = num - 1; i < b_total - 1; i++) {
book[i] = book[i + 1];
}
b_total--;
cout << "删除书籍成功!" << endl;
}
else {
cout << "输入的书籍编号无效。" << endl;
}
}
else {
cout << "当前书库里没有书籍。" << endl;
}
}
//打印所有图书
void Book_manage::Printf_books()
{
if (b_total > 0)
{
cout << "---书库里的所有书籍---" << endl;
for (int i = 0; i < b_total; i++)
{
cout << i + 1 << ":" << book[i].name;
if (book[i].state == 0)
{
cout << "(未借出)" << endl;
}
else
{
cout << "(已借出)" << endl;
}
}
}
else
{
cout << "书库里没有书籍。" << endl;
}
}
//打印未被借走的图书
void Book_manage::Printf_books_0()
{
bool empty = true;
for (int i = 0; i < b_total; i++) {
if (book[i].state == 0) {
cout << i + 1 << ":" << book[i].name << endl;
empty = false;
}
}
if (empty) {
cout << "书库里没有未借出的书籍。" << endl;
}
}
//打印已经借走的图书
void Book_manage::Printf_books_1()
{
bool empty = true;
for (int i = 0; i < b_total; i++) {
if (book[i].state == 1) {
cout << i + 1 << ":" << book[i].name << endl;
empty = false;
}
}
if (empty) {
cout << "书库里没有已借出的书籍。" << endl;
}
}
//添加读者
void Book_manage::Add_reader()
{
if (r_total < r_size) {
cout << "请输入读者姓名:";
cin >> reader[r_total].name;
r_total++;
cout << "添加读者信息成功!" << endl;
}
else {
cout << "抱歉,读者信息库已满,无法添加新的读者信息。" << endl;
}
}
//删除读者
void Book_manage::Delete_reader()
{
if (r_total > 0) {
for (int i = 0; i < r_total; i++) {
cout << i + 1 << ":" << reader[i].name << endl;
}
cout << "请输入要删除的读者编号:";
int num;
cin >> num;
if (num >= 1 && num <= r_total)
{
for (int i = num - 1; i < r_total - 1; i++)
{
reader[i] = reader[i + 1];
}
r_total--;
cout << "删除读者信息成功!" << endl;
}
else
{
cout << "输入的读者编号无效。" << endl;
}
}
else {
cout << "当前没有读者信息。" << endl;
}
}
//打印所有读者信息
void Book_manage::Printf_readers()
{
if (r_total > 0) {
cout << "---所有读者信息---" << endl;
for (int i = 0; i < r_total; i++) {
cout << i + 1 << ":" << reader[i].name << endl;
}
}
else {
cout << "暂无读者信息。" << endl;
}
}
//借书
void Book_manage::Borrow_book()
{
if (b_total > 0 && r_total > 0) {
for (int i = 0; i < b_total; i++) {
cout << i + 1 << ":" << book[i].name << endl;
}
cout << "请输入您要借阅的书籍编号:";
int num;
cin >> num;
if (num >= 1 && num <= b_total) {
if (book[num - 1].state == 0) {
for (int i = 0; i < r_total; i++) {
cout << i + 1 << ":" << reader[i].name << endl;
}
cout << "请输入您的编号:";
int reader_num;
cin >> reader_num;
if (reader_num >= 1 && reader_num <= r_total) {
book[num - 1].state = 1;
cout << "借阅成功!" << endl;
}
else {
cout << "输入的编号无效。" << endl;
}
}
else {
cout << "该书籍已经被借走了。" << endl;
}
}
else {
cout << "输入的书籍编号无效。" << endl;
}
}
else {
cout << "暂无书籍或读者信息,请先添加相关信息。" << endl;
}
}
//还书
void Book_manage::Return_book()
{
if (b_total > 0) {
for (int i = 0; i < b_total; i++) {
if (book[i].state == 1) {
cout << i + 1 << ":" << book[i].name << endl;
}
}
cout << "请输入您要归还的书籍编号:";
int num;
cin >> num;
if (num >= 1 && num <= b_total) {
if (book[num - 1].state == 1) {
book[num - 1].state = 0;
cout << "归还成功!" << endl;
}
else {
cout << "该书籍未被借走。" << endl;
}
}
else {
cout << "输入的书籍编号无效。" << endl;
}
}
else {
cout << "暂无书籍信息,请添加相关信息。" << endl;
}
}
//显示借书列表
void Book_manage::Printf_books_00()
{
bool empty = true;
for (int i = 0; i < b_total; i++)
{
if (book[i].state == 1)
{
cout << book[i].name << endl;
empty = false;
}
}
if (empty)
{
cout << "暂无借出的书籍。" << endl;
}
}
最后就是主函数啦!因为没时间很仔细的做这个作业,就没把好多东西封装成函数,所以导致代码还是有一点点乱,如果以后有时间的话,会再修改的,当然,如果你看到这个代码,可以任意修改啦!
#include"Book_manage.h"
#include<iostream>
#include <cstring>
#include<Windows.h>
using namespace std;
int main()
{
//操作列表
Book_manage t1(50,50);//书库容量 读者容量
while (1)
{
cout << "1:添加图书" << endl;
cout << "2:删除图书" << endl;
cout << "3:打印所有图书" << endl;
cout << "4:打印未被借走的图书" << endl;
cout << "5:打印已经借走的图书" << endl;
cout << "6:添加读者" << endl;
cout << "7:删除读者" << endl;
cout << "8:打印所有读者信息" << endl;
cout << "9:借书" << endl;
cout << "10:还书" << endl;
cout << "11:显示借书列表" << endl;
cout << "12:结束操作" << endl;
cout << "-------------------------------------------------------" << endl;
while (1)
{
cout << "请输入你的操作编号:";
int n;
cin >> n;
if (n == 12) break;
switch (n)
{
case 1:
books b;
cout << endl << "请输入书籍名称:";
cin >> b.name;
b.state = 0;
t1.Add_book(b);
break;
case 2:
t1.Delete_book();
break;
case 3:
t1.Printf_books();
break;
case 4:
t1.Printf_books_0();
break;
case 5:
t1.Printf_books_1();
break;
case 6:
t1.Add_reader();
break;
case 7:
t1.Delete_reader();
break;
case 8:
t1.Printf_readers();
break;
case 9:
t1.Borrow_book();
break;
case 10:
t1.Return_book();
break;
case 11:
t1.Printf_books_00();
break;
default:
break;
}
}
system("cls");
}
return 0;
}
欧克欧克,第一次很激动的分享代码,应该会有好多稚嫩的地方,而且其实好多因为是小菊若写,和最后老师教的代码很不一样,但是,还是十分自信的发出来了。耶耶耶!