图书管理系统设计说明书--熊犇

更新时间:2023-05-23 03:11:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

长 沙 学 院

课程设计说明书

题目 图书预订系统 系

(

)

机算计科学与技术系

专业(班级) 软件工程B班

姓名 熊犇 学号

2010022B27

指导教师 杨凤年

课程设计任务书

课程名称:C++程序设计基础

设计题目:1、图书预定系统

设计要求:

问题的描述:

张晨是一位很爱学习的同学,但是他总是为在图书馆借阅不到自己想看的书而烦恼。终于有一天他在图书馆做勤工俭学时突发奇想:“要是有一个包含图书预定的图书借阅系统就好了”。你能够帮助他完成这个系统的编写吗? 系统的大致要求如下:

1. 系统记录图书的主要信息:书名、作者、书号(ISBN)、出版社、版次、出版时间、馆藏编

号。 2. 系统应该记录读者的信息:姓名、借书证号、所在系部、分类(学生?老师?)、已借书籍、

超期书籍、预定书籍。每本书都应记录其借出日期和应归还日期。 3. 借书的规则如下,学生读者可以借5本图书,教师可以借6本,借期都是一个月。一旦超期,

就不可以再借书或预定(原预定的图书取消)。为了简化系统,本题不考虑续借的问题。 4. 预定规则如下:每个学生可以以预定两本,老师可以预定三本图书。被预定的书本一旦重新

入库,则通知第三个预定者,先到的人先借。 5. 如果被预定的图书超过一定人数图书比(比如说某本书被5个人预定,这本书的预定比为5:

1),则将本书加入到下一次的采购清单。

技术要求:

1、菜单:用户需要通过菜单来选择功能。例如,菜单可以设计为下面的样子(菜单和功能可以自己设计,以下界面仅供参考):

########################################

欢迎来到长沙学院图书馆

请按键选择功能

########################################

1、登陆 2注销 2、借书

3、还书

4、图书预定

5、图书检索

7、退出系统

#########################################

2、设计合理的检索功能,要求实现 按名称检索图书

按书号检索图书 按出版社检索图书

按馆藏编号检索图书

3、设计合理的排序功能,要求实现所借书籍: 按还期排序 按书号排序 按馆藏编号排序

4、巧妙灵活的运用文件知识,将多个信息写入文件,如读者信息、图书信息等 5、馆藏书目和读者信息事先已经存放在各自的文件中,程序只需读取和处理即可

6、无需设计全面的图书的管理功能和读者的管理功能,这样可以控制程序规模和复杂度

技术提示:

1、分析和设计很重要,设计清楚再动手

2、使用面向对象的方法可以减轻复杂问题的分析难度 3、使用模板可以减少函数的数量

4、文件不要用太多,要注意文件之间(文件中信息之间)的关系

设计题目:2、课程设计的安排

设计要求:

问题的描述:

计算机系的课程设计通常是由系教务的段卉老师负责安排的。但随着服务外包专业方向的招生,班级和学生人数越来越多。实验室的安排就成了问题。于是,段老师将课程设计的安排交给了各门课程的主讲教师。但是主讲教师不熟悉课程安排,安排的课程设计时间非常不合理。老师和学生都有些意见。这里要求你编写一个程序,帮助安排本学期的课程设计。 系统的大致要求如下:

1. 课程设计在15、16两周举行。

2. 每位老师带一个班的课程设计,总学时数为40学时,每个班要在两周内上机若干个(这个数字没

有规定,可根据题目的难度安排10~30学时,比如说26学时)学时,其他时间为老师答疑和任务布置。 3. 服务外包一共有14个班(只有3班和7班的人数超过了40人),上机的教室一共有7个分别是1401、

1402、1403、1404、1408、1409、1413。 4. 一般而言,任何一个没课的教室都可以容纳任何一个班,但是由于3班和7班的人数超过40人,因

此只能安排到1409和1413。 5. 教室里面已经安排了课,负责安排实验室的黄娟老师给了你一张有课的课表(文本文件),格式

如下: 1401 15 NYYYY NNYYY ……

(该文件表示:1401实验室第15周星期一和星期二的占用情况,第二行开始,每行为一天,字母N表示不能排课,而字母Y表示可以安排)

6. 另外的一些条件也会影响课程的安排,我们必须把它考虑进去:

a) 2010级的同学在两个周五的上午安排有考试、不能安排上机。

b) 15周星期一是端午节假期,不能安排任何教学活动。 c) 任何班不允许在同一天上机超过6个学时(3大节课) d) 一些老师会在某各时段不能上课,这个时段在安排时是未知的,当某位老师输入了需要回避

的时间段后,系统应该立即调整课表的安排,并重新生成新的课表。(例如:某位老师输入6.16 5 6表示该老师在6月16日5~6小节有其他安排,那么这个时间点不能排课)

7. 编排好的实验安排必须在屏幕上输出,当用户确认(无需调整后)以文件的形式保存

技术要求:

1、该系统应该设计菜单和用户交互,菜单应该包含输入老师要求回避的时间段,屏幕输出每个老师/班级的上机时间等功能。 2、要求4中的实验室的课表已经以硬盘文件的形式存在,可以预先编写好,程序读取即可

3、最后生成的课表应该以文件方式保存,格式可以自定

技术提示:

1、分析和设计很重要,设计清楚再动手

2、使用面向对象的方法可以减轻复杂问题的分析难度 3、使用模板可以减少函数的数量

4、文件不要用太多,要注意文件之间(文件中信息之间)的关系

2. 报告要求:

1) 课程设计报告要求严格按照长沙大学实验报告的相关规定执行 2) 清晰描述开发设计过程与思路 3) 清晰的绘出UML类图描述类的关系

4) 代码要求有清晰的注释(包括类的功能注释,函数的功能注释,循环和结构的

功能注释)

5) 包含运行时主要界面的截图

3. 技术要求:

要求利用C++课程上学习的基础编程技巧来完成程序的设计;在设计的过程中,要建立清晰的类的结构并正确使用相应的数据类型;

在系统设计中要分析类与类之间的关系,将查找和排序的算法独立出来形成为单独的函数。并正确使用函数和类的模板。

正确使用继承、重载和多态等编程技巧。

设计工作量:40课时

工作计划:

(1) 2010软件工程(服务外包)1~14班

2课时:课程设计相关知识介绍。多媒体教室。

26课时:上机、调试。计算机系机房。 10课时:答疑。办公室。 2课时:答辩。计算机系机房。

指导教师签名:

教研室主任签名:

系主任签名:

日期: 日期: 日期:

长沙学院课程设计鉴定表

摘要

图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。采用C++作为开发工具,通过对C++进行深入的学习和应用,主要完成利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时是学习完《C++面向对象程序设计》课程后进行的一次全面的综合练习。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。

关键字:图书管理系统 C++ 信息管理系统

目录

1设计内容与要求 ............................................................................................................................................... 9 2.设计说明 ......................................................................................................................................................... 10

2.1 系统功能分析: ................................................................................................................................. 10 2.2系统功能模块划分与设计 .................................................................................................................. 10 2.3 系统功能模块图: ............................................................................................................................ 10 3.详细设计 ........................................................................................................................................................ 11

3.1 读者类的设计 .................................................................................................................................... 11 3.2 读者库类类的设计 ............................................................................................................................. 12 3.3 图书类的设计 .................................................................................................................................... 13 3.4 图书库类的设计 ................................................................................................................................. 13 4、函数定义 ...................................................................................................................................................... 14

4.1数据成员 .............................................................................................................................................. 14 4.2函数成员 .............................................................................................................................................. 14 4.3函数的设计: ...................................................................................................................................... 14 5.结果分析 ......................................................................................................................................................... 15 6.总结 ................................................................................................................................................................. 15 6测试 ................................................................................................................................................................. 16 7、附录 .............................................................................................................................................................. 22

7.1 源程序清单: ..................................................................................................................................... 22 参考文献 ............................................................................................................................................................ 39

1设计内容与要求

张晨是一位很爱学习的同学,但是他总是为在图书馆借阅不到自己想看的书而烦恼。终于有一天他在图书馆做勤工俭学时突发奇想:“要是有一个包含图书预定的图书借阅系统就好了”。你能够帮助他完成这个系统的编写吗? 系统的大致要求如下:

6. 系统记录图书的主要信息:书名、作者、书号(ISBN)、出版社、版次、出版时间、馆藏编

号。 7. 系统应该记录读者的信息:姓名、借书证号、所在系部、分类(学生?老师?)、已借书籍、

超期书籍、预定书籍。每本书都应记录其借出日期和应归还日期。 8. 借书的规则如下,学生读者可以借5本图书,教师可以借6本,借期都是一个月。一旦超期,

就不可以再借书或预定(原预定的图书取消)。为了简化系统,本题不考虑续借的问题。 9. 预定规则如下:每个学生可以以预定两本,老师可以预定三本图书。被预定的书本一旦重新

入库,则通知第三个预定者,先到的人先借。 10. 如果被预定的图书超过一定人数图书比(比如说某本书被5个人预定,这本书的预定比为5:

1),则将本书加入到下一次的采购清单。

技术要求:

1、菜单:用户需要通过菜单来选择功能。例如,菜单可以设计为下面的样子(菜单和功能可以自己设计,以下界面仅供参考):

########################################

欢迎来到长沙学院图书馆

请按键选择功能

########################################

1、登陆 2注销 2、借书

3、还书

4、图书预定

5、图书检索

7、退出系统

#########################################

2、设计合理的检索功能,要求实现 按名称检索图书

按书号检索图书 按出版社检索图书 按馆藏编号检索图书

3、设计合理的排序功能,要求实现所借书籍: 按还期排序 按书号排序 按馆藏编号排序

4、巧妙灵活的运用文件知识,将多个信息写入文件,如读者信息、图书信息等 5、馆藏书目和读者信息事先已经存放在各自的文件中,程序只需读取和处理即可

6、无需设计全面的图书的管理功能和读者的管理功能,这样可以控制程序规模和复杂度

技术提示:

1、分析和设计很重要,设计清楚再动手

2、使用面向对象的方法可以减轻复杂问题的分析难度 3、使用模板可以减少函数的数量

4、文件不要用太多,要注意文件之间(文件中信息之间)的关系

2.设计说明

2.1 系统功能分析:

本系统有四个类,Book类,BDatebase类、Reader类、RDatebase类,存储借阅者的个人信息、借阅信息以及预定信息。持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定等功能。

系统通过调用函数来实现删除图书、读者信息,添加图书、读者信息等功能。delbook( )函数用于删除图书信息;addbook( )函数用于增加图书信息;borrowbook( )函数用于实现借书操作;returnbook( )函数用于实现还书操作等等;主函数用于掉用这些函数。

2.2系统功能模块划分与设计

本系统定义了Book类、BDatebase类、Reader类、RDatebase类这四个类,定义了addbook ( )、addreader( )、borrowbook ( )、setname( )等函数来实现系统所需功能。

2.3 系统功能模块图:

3.1 读者类的设计

该类定义了借书操作,还书操作,设置读者姓名等功能。

3.详细设计

图 3.1

3.2 读者库类类的设计

该类实现了建立读者的个人资料,删除读者信息,输出读者信息等功能。 图 3.2

3.3 图书类的设计

图书类,可以实现对图书的描述,图书的编号,书名,借出,还入等操作。

图 3.3

3.4 图书库类的设计

4、函数定义

4.1数据成员

char name[StrNum]; 用来存放书名。

char number[StrNum]; 用来存放图书的编号。 char kind[Type]; 用来存放图书的类型。 int tag; 定义删除标记。

int num; 定义图书编号为整形。 int add; 增加标记。

4.2函数成员

Book(){} 无参构造函数,用于为书名和作者姓名设置默认值。 char getkind() 用于获取图书类型。 char getname() 用于获取书名。

int getnum() 用于获取图书编号。 int gettag() 用于获取删除标记。

void setname(char na[]) 用于设置书名。 void setkind(char kin[]) 用于设置类型。 void delbook() 用于删除图书。

void addbook(int n,char *na,char *kin) 用于增加图书。 void disp() 用于输出图书。

4.3函数的设计:

class BDatabase{} 图书管理类的设置,实现对图书的添加,查找,删除等。 int top; 设置图书记录指针。

Book book[Maxb]; 设置图书记录(Maxb定义为最多可存储的图书数,定义为整形)。 void clear() 清空图书记录。

int addbook(int n,char *na,char *kin) 增加图书记录。 Book *query(int bookid) 查找图书记录。 void bookdata(); 定义图书库。 void disp() 输出。

~BDatabase() 设置析构函数,将book[]写到book.txt文件中

void BDatabase::bookdata() 由此函数开始对图书管理系统的主菜单进行调用与功能的实现。(界面参看执行界面部分)

最后用main() 函数的实现,程序的主界面的引导

5.结果分析

本程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C++的编程思想来完成系统的设计,做到了每个借阅者建立一个账户,账户中存储借阅者的个人信息、借阅信息等要求。而且界面美观,容易操作。但是程序太长,不够简练,导致出现错误很难发现和修改。

6.总结

6.1 感想和体会:

通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c++是多么的重要。

在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。

以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。

6测试

管理员登陆界面

读者登陆界面

显示全部读者信息

更改图书信息

删除读者信息

查看采购清单(书2的预订人数超过了5个)

删除读者并显示全部读者信息

增加读者

密码错误时无法登陆

借书并记录借书的时间

还书并且提示是否过期

预订图书

本文来源:https://www.bwwdw.com/article/goh4.html

Top