C/C++实现简易的“图书管理系统”(多文件) 您所在的位置:网站首页 借书卡的制作方法简单 C/C++实现简易的“图书管理系统”(多文件)

C/C++实现简易的“图书管理系统”(多文件)

2024-07-16 07:25| 来源: 网络整理| 查看: 265

最近老师布置了一个任务,要求用C++多文件变成实现“图书管理系统”,包含增加书籍、增加同学、借阅书籍、归还书籍等模块。 我尝试实现了一下。感觉部分功能效率不是很高(尤其是Library的input_borrow与back模块)。

图书管理系统 需求分析程序结构类定义StudentBookBorrowLibrary 测试 结果演示总结

需求分析

为实现功能,我们需要有基本类Student,Books,Borrow分别储存学生信息、书籍信息和借阅记录。由于我们要用到上述类建立多个对象,所以需要定义另一个类Library储存上述类的数组:

Library Student Books Borrow 程序结构 Sources Student.cppBook.cppBorrow.cppLibrary.cppmain.cpp Headers

Student.h

Book.h

Borrow.h

Library.h

下面为节省篇幅,将类的定义和函数实现写在的一块(其实是分别写在"class.h"和"class.cpp"中),另外,所有核心的解释我都补充在注释中了。 类定义 Student 储存学生信息 // Student.h ================================================ #ifndef STUDENT_H #define STUDENT_H class Student { private: //借个书而已,简单地信息就够了,什么生日、专业啥的都无关(其实是懒) long id; string name; int books; //储存已借书的数目(一般图书馆都要限制每人借书数量,咱也整一个) public: Student(){books=0;} //初始化,每名同学最初借书量均为0 void input(); //键入学生信息 void setid(long n){id=n;} //设置id void setname(string s){name=s;} //设置姓名,这两项主要用于添加初始值 long getid(){return id;} //获取id string getname(){return name;} //获取姓名 int getbooks(){return books;} //获取已借书数量 void show(); //显示学生信息 void borrow(){books+=1;} //借书 void back(){books-=1;} //还书 }; #endif //Student.cpp =========================================== #include #include using namespace std; #include"Student.h" void Student::input() { coutid; coutname; } void Student::show() { coutid=n;} void setamount(int n){amount=n;} void setname(string s){name=s;} void setauthor(string s){author=s;} void setpublic(string s){publication=s;} /* ** 获取各项信息 */ long getid(){return id;} string getname(){return name;} int getamount(){return amount;} void show(); //显示所有信息 /* ** 借还 */ void lendout(){amount-=1;} void back(){amount+=1;} }; #endif //Book.cpp =============================================== #include #include using namespace std; #include"Book.h" void Book::show(){ cout private: long id_student; long id_book; public: void setstu(Student stu); //设置借阅者 void setbook(Book book); //设置被借书籍 long getbook(); long getstu(); }; #endif //Borrow.cpp=============================================== #include #include using namespace std; #include"Student.h" //用到了另外两个类 #include"Book.h" #include"Borrow.h" void Borrow::setstu(Student stu){id_student=stu.getid();} //设置借阅者 void Borrow::setbook(Book book){id_book=book.getid();} //设置被借书籍 long Borrow::getbook(){return id_book;} long Borrow::getstu(){return id_student;} 这里没有设置show函数来显示所有信息。因为如果要显示更多信息,要么添加更多属性(占用空间较大),要么编写查询函数(后面也会用到,有些冗杂)。所以干脆在下面的Library中定义。 Library 图书管理系统核心,主要用来整合上述类。 //Library.h=============================================== #ifndef LIBRARY_H #define LIBRARY_H class Library { private: /* ** 容量 */ Student students[1000]; //1000名学生 Book books[5000]; //5000本书 Borrow borrows[1000]; //1000条记录 int n_student,n_book,n_borrow; //目前储存的学生数、书数、借阅记录数 int limit; //一个人最多大借书数量 public: /* ** 添加信息 */ void input_students(); //添加学生 void input_books(); //添加书籍 /* ** 查找操作 */ int find_book(long id); //通过id查找学生,返回学生序号(0~999) int find_student(long id); //通过id查找书籍,返回书籍序号(0~4999) /* ** 借阅操作 */ void input_borrow(); //输入借阅信息 void back(); //归还书籍 /* ** 展示 */ void showallbooks(); //打印所有书籍 void showallborrow(); //打印所有借阅记录 void showallstu(); //显示所有学生信息 Library(); }; #endif //Library.cpp======================================== #include #include using namespace std; #include"Student.h" #include"Book.h" #include"Borrow.h" #include"Library.h" void Library::input_students(){ //添加学生 if (n_student>=999){ cout cout //查找学生 int i; for(i=0;i cout if(books[ibook].getamount() //学生是否存在 cout //慢着,还得看看他借了多少 cout count++; //找到书后,计数器跳动,并及时打破循环 break; } if(count==0){ //计数器未跳动,即未找到 cout cout books[i].show(); cout cout students[i].show(); cout cout print_menu(); command=getco(); switch(command){ case 1: lib.input_students(); break; case 2: lib.input_books(); break; case 3: lib.input_borrow(); break; case 4: lib.back(); break; case 5: lib.showallbooks(); break; case 6: lib.showallborrow(); break; case 7: lib.showallstu(); break; } } return 0; } 结果演示

在这里插入图片描述 menu 在这里插入图片描述 所有书籍

借阅借阅记录 借阅失败

总结 借阅归还部分搜索次太多,效率不高。多文件编程不规范。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有