C++图书信息管理系统课程设计全套资源包下载

发表时间: 2024-06-11 22:17

图书信息管理系统

——C++面向对象实训报告

  1. 需求分析

1. 基本功能和要求

  1. 系统必须是菜单操作方法,进入功能必须打开菜单,并且每个菜单都有相应的帮助,菜单之间能够灵活的切换。
    用户分三种权限:一般的读者用户,图书管理员,系统管理员。
  2. 根据登陆方式,选择相应的操作方式;
    如果是一般的读者用户,就只能按照各种方式查看数据,并且只能查看自己的信息和借阅情况,修改自己的信息等等功能;
    如果是图书管理员,除了可以查看数据外还能编辑图书数据以及修改图书数据等功能。
    如果是系统管理员,他可以拥有图书管理员的所有功能,并且可以创建用户,授权用户权限等功能。
    (3) 能够对图书基本信息、图书的借阅人信息进行统计,统计的结果能够以表格的形式来表示。
    (4) 图书基本信息 、图书的借阅人信息存储在相应的文件中。数据的组织形式要求必须使用链表或者二叉树来实现。
    (5) 登录的用户名和密码应该存储在单独的文件中,最好做一定的加密算法。
    (6) 系统要求界面友好,易操作。
    4.2 统计功能
    (1)统计馆藏书籍总数、已借出数据总数、在馆书籍数等。
    (2)统计馆藏书籍总金额、馆藏书籍的平均价格。
    4.3 查找功能
    1. 可以根据图书的作者查找。
    2. 可以根据图书的名称查找。
    3. 可以根据图书的出版社查找。
    4. 可以根据图书的单价查找。
    5. 可以根据图书的出版日期查找。
      4.4系统的操作
      1. 有文件的保存
      2. 有文件的打开和载入
      3. 系统在退出时,要有相应的提示



  1. 系统总体结构图
  2. 主要类说明
  • User类
    class User
    {
    public:
    User(const char* name,const char* password);
    virtual ~User();
    const char* GetName();//获得用户名
    const char* GetPassword();//获得密码
    void Exit();//退出系统
    void ChangePassword();//修改密码
    void FindBook();//查找图书
    void ShowFindBook(const char* str,int n);//显示查找结果
    void PrintBook(const BOOKINFO &book);//输出图书信息
    void CountBook();//统计图书信息
    void ShowBook();//显示全部图书信息
    void EditBook();//编辑图书信息
    void AddBook();//添加图书新
    void ModifyBook();//修改图书信息
    void DeleteBook();//删除图书信息
    virtual void ShowMenu();//显示菜单
    virtual bool IsExist();//判断是否存在改用户
    private:
    char m_name[20];//用户名
    char m_password[10];//密码
    };
  • Reader类
    class Reader:public User
    {
    public:
    Reader(const char* name,const char* password);
    ~Reader();
    void BorrowBook();//借阅图书
    virtual void ShowMenu();//显示菜单
    virtual bool IsExist();//判断是否存在该用户
    };
  • Librarian类
    class Librarian:public User
    {
    public:
    Librarian(const char* name,const char* password);
    ~Librarian();
    virtual void ShowMenu();//显示菜单
    virtual bool IsExist();//判断是否存在该用户
    };
  • Admin类

class Admin:public User

{

public:

Admin(const char* name,const char* password);

~Admin();

void AddLibrarian();//添加管理员

void AddReader();//添加读者

virtual void ShowMenu();//显示菜单

virtual bool IsExist();//判断是否存在该用户

};

  1. 主要数据结构
    typedef struct UserInfo
    {
    char name[20];//用户名称
    char password[10];//用户密码
    }USERINFO;
    typedef struct BookInfo
    {
    char id[10];//图书编号
    char name[20];//图书名称
    char author[20];//图书作者
    char press[20];//出版社
    char date[20];//出版日期
    int count;//借出次数
    double price;//图书单价
    }BOOKINFO;
  2. 全局变量和函数说明
    list<USERINFO> g_allReader;//读者数据
    list<USERINFO> g_allLibrarian; //图书管理员
    list<USERINFO> g_allAdmin;//系统管理员
    list<BOOKINFO> g_books;//图书数据
    bool LoadFiles();//加载数据文件
    void SaveFiles();//保存数据文件
    void ShowLoginMenu(char &ch);//显示登录菜单
    bool Login(char ch);//登录系统
  3. 重点函数分析
    Login函数是实习登录系统功能的主要函数,本函数利用了C++的多态特性,使用了虚函数的动态绑定技术,实现了统一的登录接口
    bool Login(char ch)
    {
    User *pUser=NULL;
    char name[20];
    char password[10];
    cout<<"输入用户名:";
    cin>>name;
    cout<<"输入密码:";
    cin>>password;
    switch(ch)
    {
    case 'a':
    case 'A':
    {
    pUser=new Reader(name,password);
    break;
    }
    case 'b':
    case 'B':
    {
    pUser=new Librarian(name,password);
    break;
    }
    case 'c':
    case 'C':
    {
    pUser=new Admin(name,password);
    break;
    }
    case 'e':
    case 'E':
    return true;
    default:
    return false;
    }
    if(pUser->IsExist())
    {
    pUser->ShowMenu();//动态绑定子类
    }
    else
    {
    cout<<"用户名或密码错误!"<<endl;
    system("pause");
    }
    delete pUser;
    return false;
    }
  4. 程序运行结果

(1)登录界面

(2)读者主界面

(3)图书管理员主界面

(4)系统管理员主界面

(5)显示图书信息