课程设计报告书
1需求分析
1.1功能需求分析
随着科学技术的不断提高,计算机科学日渐成熟,传统的图书管理方式必然被计算机为基础的信息管理系统所取代。因为作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着手工管理所无法比拟的优点:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。因此,如何设计一个管理系统来辅助协调和管理图书已经成了一个急需解决的问题。
面对大量繁杂的图书管理、分类、查询与借还工作,迫切需要通过计算机来帮助解决,减少图书馆管理人员的工作量。随着办公自动化的深入及普及和网络技术的不断发展,图书管理系统能够随时通过增加网络设备及模块来扩展、升级整个系统,达到和办公自动化网络的连接,实现远程管理、异地续借等功能。 系统应实现的操作及功能包括:
图书维护:增加图书,删除图书,查找图书,输出所有 读者维护:增加读者,删除读者,查找读者,输出读者 读者:借书,还书,查找书,输出所有
1.2设计平台
Visual C++ 6.0 , Windows 2000或以上平台
2概要设计
此课程设计中,涉及到知识点主要有:数据结构、类、链表、函数调用、选择结构中的条件语句、循环结构中的while语句、if 循环语句、控制语句中的break语句、字符串函数,及文件的读取等等。
2.1 基础知识概述
虚基类:在虚继承体系中的通过virtual继承而来的基类
构造函数:构造函数是一种特殊的方法,主要用来在创建对象时初始化对象 即为对象成员变量赋初始值。总与new运算符一起使用在创建对象的语句 中。
一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 。
继承: 在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。
链表: 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
图书管理管理系统一般包括图书结点信息的增加、查询、删除、更新的输出等功能。通过链表把图书和读者的信息。
成员函数:它是属于一个类的成员,出现在类体中,它可以被指定为private(私有的)、public (公用的)或protected(受保护的)。在使用类函数时,要注意调用它的权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数)。
switch(表达式) {
case常量表达式1: 语句1; case常量表达式2: 语句2;…
case常量表达式n: 语句n; default : 语句n+1; }
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
2.2方法及原理
图书管理系统是实现对图书的管理与查询,具体包括对图书的增加,删除,查找,以及库存量的查询,还可以对以上信息进行更新,修改,删除和添加。
Class books ///虚基类
{ 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.3 设计的思想原则
随着新世纪的到来,科学技术的突飞猛进,知识经济的日益发展,许多图书管理系统已经慢慢走向了老化。本系统正是针对这一现象设计了适应学校管理的图书管理系统。
1.方便学生借书、还书、查找、统计等操作。
2.可以自定义图书类别,读者类别,方便添加图书、管理图书、添加读者、
管理读者。
3.提供完善的借书和还书操作。
4.数据查询为您提供:借阅情况,书库查询,读者查询。
3详细设计和实现
3.1 功能模块
借书
reader::delet_book() { if(personnel->reader_borrow_numnext; char borrowed[15]; cout>borrowed; while(node) { if((strcmp(node->book_name,borrowed)==0))break; else node=node->next; } if(node&&(node->total_num-node->borrow_num)>0) { strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_books_name,node->book_name); strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num++].borrow_books_no,node->book_num); node->borrow_num++; savebooks(); }
else cout
reader::print_me() {
coutreader_namereader_noreader_borrow_numreader_borrow_num;i++) { printf("书名:%s,书的编号:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_borrow_book[i].borrow_books_no); } }
还书
reader::add_book() { books_node*node; node=new books_node; node=broot->next; char returned[15]; cout>returned;
for(int i=0;ireader_borrow_num;i++) { if((strcmp(returned,personnel->reader_borrow_book[i].borrow_books_name))==0)break; } if(i==personnel->reader_borrow_num+1) { printf("不好意思,你没有此书");system("pause"); } else{ while(node) { if((strcmp(node->book_name,returned)==0))break; else node=node->next;
} if(node)
}
}
personnel->reader_borrow_num--; node->borrow_num--; savebooks(); }
else cout
查找书
books::search_book() { char searchedbook[15]; cout>searchedbook; books_node *r; r=new books_node; r=broot->next; while(r) { if((strcmp(searchedbook,r->book_name))==0) { coutbook_nametotal_numborrow_numbook_numnext; } if(r==NULL)cout
输出所有
books::print_books() { books_node *r; r=new books_node; r=broot->next; while(r)
{ coutbook_nametotal_numborrow_num book_num
r=r->next; } delete r; }
自身信息
reader::print_me() {
coutreader_namereader_noreader_borrow_numreader_borrow_num;i++) { printf("书名:%s,书的编号:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_borrow_book[i].borrow_books_no); } }
3.2系统流程图
图3.2.1
图3.2.2
4调试与操作说明
管理员身份登录:
图书维护 :增加图书,删除图书,查找图书,输出所有 读者维护:增加读者,删除读者,查找读者,输出所有 这两项由其他组员完成
读者身份登录:
图4.1
用户登录
图4.2
借书模块
图4.3
还书模块
图4.4
查找书
图4.5
输出所有
图4.6
自身信息
图4.7
总 结
这次课程设计使我对做系统的认识深刻了许多。虽然在整个设计过程中遇到很多问题不会解决,但在自己的努力以及同学老师的帮助下,最终和同组伙伴一起完成了该系统。当看到自己做的程序能运行时,心中充满了成就感。在克服困难的过程中,对自己所学知识的掌握程度也有了比较清楚的了解。综合起来,主要体现在以下几个方面:
首先,对数据结构,C++,C#的掌握还不够。虽然完成了程序,但是只用到了基本的结点以及链表,在数据结构的选择上避重就轻,覆盖面较小,不能很好的体现各种数据结构的掌握度,同时也缺少了适当的锻炼,在这方面还需要自己主动去提高。
其次,在程序整体的设计上还不够完善,各模块可以适当增加内容,界面还可以更加的人性化些,同时可考虑从面向对象方面入手,这样整个程序才具有更强的美观性与实用性。
最后,我觉得该程序还有很大的改进空间,譬如可以用多文件做,这样功能更强大,也便于以后更好地改进和完善程序;而在程序的内容方面,还能增加更多功能,以满足不同需要的各种要求。
但是,值得欣慰的是,该程序基本完成里设计要求,并能顺利运行,界面清晰易理解,且具备各项基本功能,易于操作;而且代码部分有注释,简单易懂。
总而言之,这次课程设计给了我很大启发,我明白了,不管遇到什么问题,只要抓住根源,不气馁,从不同方面去攻破它,终究会成功,生活也是如此。这次课程设计是我真正的去做的一个系统,肯定会有很多不足,但是我很欣慰。
致 谢
本次课程设计中,我有通过自己的努力,但也得到了很多来自他方的帮助,在这里我要谢谢所有帮助过我的老师同学。
首先,我要谢谢淮阴工学院计算机工程系给我提供了这次难得的实践机会,以及实验室人员提供的方便舒适的实验环境!其次,我要谢谢这次课程设计的辅导老师夏森老师和江波老师给予我的帮助和辛勤指导,以及和我一起合作的同学的共同互助。在设计过程中,我遇到了诸多的困难与麻烦,如果没有他们的悉心指导与共同研讨,我也不能这么顺利的完成本次的课程设计,在这里衷心得对他们表示深深的谢意,谢谢!最后,我要谢谢我的其他同学,多谢他们给我所提的建议以及他们给予我的帮助。
当然,在本次课程设计的完成过程中,我也参考了很多资料参考书,以及浏览了很多网站。所以我也要谢谢这些书籍的著作者,及各网站提供信息的作者们。在这里还要特别谢谢www.baidu.com网站给我的指导和帮助。同时谢谢淮阴工学院图书馆,给我提供了丰富的书籍资料!
参考文献
1 殷人昆主编.数据结构(用面向对象方法与C++语言描述).第2版.北京:清华大学出版社,2007
2 宁正元,易金聪.数据结构习题解析与上机实验指导.北京:中国水利水电出版社,2000
3 吴乃陵,况迎辉.C++程序设计.第2版.北京:高等教育出版社,2006 4 揣锦华.面向对象程序设计与VC++实践.西安:西安电子科技大学出版社,2005
5 苏仕华.数据结构课程设计.机械工业出版社,2005
6 李春葆,金晶.数据结构教程.清华大学出版社,2006
7揣锦华.面向对象程序设计与VC++实践.西安电子科技大学出版社,2006 8王晓东.数据结构与算法设计.电子工业出版社,2002
9 陈慧南.数据结构-使用C++语言描述.东南大学出版社,2001
10谭浩强.C++程序设计.清华大学出版社,2004