综合实践报告
1 设计任务
1.1 设计目的
运用所学知识,完成图书馆管理系统,通过实践加强对所学知识的理解和巩固
1.2 设计内容
建立图书馆管理系统,用户分为图书管理人员,读者。管理人员可以增加删除查看图书、读者。读者只
能查看自身信息,和借还书
1.3 设计指标或者要求
管理人员可以访问任意图书和读者,而读者只能借还图书馆存在的图书和查看自己的信息。
2 设计过程
分析:由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管
理员信息,而读者只能访问所有图书信息和自身的信息。所以他们的相同点:都能访问所有图书信息
不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了
三个类
程序包含三个类:图书类(books),管理员类(manager),读者类 reader,books 类为抽象类,manager,
和 reader 类为 books 类的派生类。为了能让管理员和读者访问所有图书信息,所有都继承了 books 类;而
为了分出两者的权限的不同,所以把所有读者的信息做为一个链表作为管理员的一个私有成员,而读者
却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。
2.1 程序功能
books
Class
{
///虚基类
-1-
综合实践报告
protected:
books_node *broot;
public:
books();//构造函数
savebooks();//保存修改的内容
search_book();//查找某一本书
print_books();//输出所有书的信息
virtual add_book()=0;//对于读者是还书,对于管理员添加书
virtual delet_book()=0;//对于读者是借书,对于管理员是去掉某一本书
//管理员类
};
Class manager:public books
{
protected:
readers_node *rroot;
public:
manager(readers_node*);
savereaders();
add_book();//添加图书信息
delet_book();//删除图书
search_reader();//查找读者信息
add_reader();//添加读者
delet_reader();//删除读者
print_readers();//输出所有读者
};
class reader:public books{//读者类
private:readers_node* personnel;//存放读者自身信息
public:
reader(readers_node*);
add_book();//还书
reader_borrow();
delet_book();
reader_return();//借书
print_me();//查看自己借书情况
save_readers(readers_node*);
};
2.2 程序流程图
-2-
综合实践报告
后退
开始菜单
管理员
读者
后退
管理员菜单
读者菜单
图书维护
读者维护
后
退
后
退
后
退
添 删
加 除
图 图
书 书
添 删
加 除
读 读
者 者
借
还
书
书
查
看
所
有
图
书
查
看
自
身
信
息
-3-
3 软件运行或者测试结果(1)管理员身份登录:
综合实践报告
-4-
综合实践报告
(2)读者身份登录:
-5-
综合实践报告
-6-
综合实践报告
-7-
4 软件设计过程中遇到的问题以及解决办法
综合实践报告
由于编写前期做了大量的设计工作,在编写过程中基本没有遇到难解决的问题提,倒是在设计
类时有些茫然,经过反复斟酌还是做了一些取舍,比如把读取读者文件放在了类的外面等。。
5 总结
通过本次课程设计学到了很多东西,对于 c++对象的含义有了进一步的认识,从而对类的封装和设计有了
一种新的认识,不只是停留在表面,为以后的学习积累了经验,设计不比编写容易,类设计好是整个程
序写好的前提,只有一个好的规划才能写出好的程序。不过也通过本次发现了自己的不足之处。总是:
本次课程设计受益匪浅,动手能力大大增强;
附录(程序源代码)
#include
#include
#include
#include
#include
#include
#define max 3
typedef struct Books{
total_num;
borrow_num;
char book_name[15];
int
int
char book_num[15];
Books *next;
}books_node;
typedef struct Readers{
char reader_name[15];
char reader_no[15];
int
struct Reader_borrow_books{
reader_borrow_num;
char borrow_books_name[15];
char borrow_books_no[15];
}reader_borrow_book[max];
Readers *next;
}readers_node;
class books
{
protected:
books_node *broot;
public:
-8-