图书管理系统开发实例 41页.pptVIP

  • 6
  • 0
  • 约7.4千字
  • 约 41页
  • 2018-05-08 发布于河北
  • 举报
图书管理系统开发实例 41页

需求分析 对于图书管理系统而言,其最重要的功能是管理图书,包括增加书籍、删除书籍和查询书籍。其中,删除书籍和查询书籍的功能又可以细化为很多功能,比如删除某一个时间段内增加的书籍、删除某个作者的书籍、显示某个作者的所有书籍、显示书名带某个关键字的书籍等等。其次,需要提供一个友好的交互界面,这是用户接触到的最直接的东西,其设计必须人性化;然后还需要一些辅助功能,比如日志功能,它可以将所有的操作都记录在案。实际上,一个完整的图书系统还需要包括另外两个重要的功能:用户管理和数据库系统。由于篇幅有限,本系统将不考虑这两个功能。 需求分析 整理以上的需求分析,可以得出本图书管理系统需要实现的功能主要包括以下三点: 提供友好的用户交互界面; 提供书籍的增加、删除、查询、批量创建等操作; 提供历史日志以记录操作信息。 系统设计 系统设计阶段可以理解为程序的概要设计,需要完成对系统结构的分析和设计,以及设计系统需要的主要数据结构。本小节将基于需求分析的结果,依次讨论了图书管理系统的系统架构和数据类型。 .1 系统架构 根据需求分析的结果,本系统至少要分为以下几个模块:main函数模块、用户界面管理模块、数据管理模块和历史日志模块。其中: main函数模块的主要功能为提供程序入口、前期环境设置、调用主要的执行函数和程序结束前的数据处理。 用户界面管理模块主要提供用户交互界面,并在用户选择命令后触发相应模块。 .1 系统架构 数据管理模块的功能为本系统的核心模块,提供所有对书籍数据的操作请求的处理,包括增加书籍、删除书籍、搜索书籍、批量删除书籍、高级搜索书籍等等。 历史日志模块主要提供用户行为记录、系统信息记录、异常信息记录等功能。 辅助模块:全局配置模块。在这个模块中,会包含一些全局使用的信息,比如全局变量的定义,const变量、具名常量、枚举常量的定义等。 .1 系统架构 根据以上功能模块的划分,本系统的软件结构设计如下图所示。 .2 数据结构 本图书管理系统的核心数据对象是书籍。书籍信息中包含很多信息,包括:书名、作者、出版社、出版日期、入库日期、入库编号和页数等。因此,处理书籍信息的数据类型必须为结构体,将其命名为BookInfor。其中,书名、作者和出版社的数据类型为字符数组;入库编号和页数选择使用整型;而出版日期和入库日期由于包含年、月、日信息,因此需要使用另一个结构体,将其命名为TimeInfor。 .2 数据结构 因此,书籍信息类型可以声明如下: 01 typedef struct { 02 char name[LEN_BOOK_NAME]; /* 书名*/ 03 char author[LEN_AUTHER_NAME]; /* 作者*/ 04 char publisher[LEN_PUBLISHER_NAME]; /* 出版社*/ 05 int serial; /* 编号*/ 06 int page; /* 页数*/ 07 TimeInfor time_pub; /* 出版日期*/ 08 TimeInfor time_in; /* 入库日期*/ 09 } BookInfor; /* 书籍信息类型 */ .2 数据结构 年份的值可以处理为4位整数,可以存储在16位二进制数中;月份和日子都可以处理为2位整数,都可以存储在8位二进制数中:因此,可以将时间数据类型TimeInfor处理为位域类型,声明如下: 01 typedef struct { 02 unsigned year : 16; /* 年*/ 03 unsigned month : 8; /* 月*/ 04 unsigned day : 8; /* 日*/ 05 } TimeInfor; /* 时间信息类型*/ .2 数据结构 本系统中的书籍数据是大批量数据,因此需要选择使用数组或者链表保存书籍数据。考虑到图书管理系统会很频繁地访问书籍信息,而增加和删除的操作相对较少,因此选择使用数组来保存。而又由于书籍数目是不可预期的,因此最好使用动态数组来处理数据。 注意:数据结构要考虑时间复杂度和空间复杂度,同时还要考虑实现的复杂度。 main模块 main模块包含在main.c文件中,其主题有三个函数:main函数、configure函数和clean函数。main函数即为读者早已熟悉的程序入口函数,其负责调用系统执行时的各个主要函数。而configure函数的功能为在程序开始时初始化或配置各种必须的变量和环境。 main模块 clean函数的作用与configure函数相对应,其负责程

文档评论(0)

1亿VIP精品文档

相关文档